codika 3.0.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 (403) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +68 -0
  3. package/dist/cli/commands/completion.d.ts +15 -0
  4. package/dist/cli/commands/completion.d.ts.map +1 -0
  5. package/dist/cli/commands/completion.js +810 -0
  6. package/dist/cli/commands/completion.js.map +1 -0
  7. package/dist/cli/commands/config/clear.d.ts +12 -0
  8. package/dist/cli/commands/config/clear.d.ts.map +1 -0
  9. package/dist/cli/commands/config/clear.js +35 -0
  10. package/dist/cli/commands/config/clear.js.map +1 -0
  11. package/dist/cli/commands/config/index.d.ts +15 -0
  12. package/dist/cli/commands/config/index.d.ts.map +1 -0
  13. package/dist/cli/commands/config/index.js +21 -0
  14. package/dist/cli/commands/config/index.js.map +1 -0
  15. package/dist/cli/commands/config/set.d.ts +41 -0
  16. package/dist/cli/commands/config/set.d.ts.map +1 -0
  17. package/dist/cli/commands/config/set.js +185 -0
  18. package/dist/cli/commands/config/set.js.map +1 -0
  19. package/dist/cli/commands/config/show.d.ts +12 -0
  20. package/dist/cli/commands/config/show.d.ts.map +1 -0
  21. package/dist/cli/commands/config/show.js +45 -0
  22. package/dist/cli/commands/config/show.js.map +1 -0
  23. package/dist/cli/commands/deploy/documents.d.ts +12 -0
  24. package/dist/cli/commands/deploy/documents.d.ts.map +1 -0
  25. package/dist/cli/commands/deploy/documents.js +217 -0
  26. package/dist/cli/commands/deploy/documents.js.map +1 -0
  27. package/dist/cli/commands/deploy/index.d.ts +14 -0
  28. package/dist/cli/commands/deploy/index.d.ts.map +1 -0
  29. package/dist/cli/commands/deploy/index.js +21 -0
  30. package/dist/cli/commands/deploy/index.js.map +1 -0
  31. package/dist/cli/commands/deploy/process-data-ingestion.d.ts +13 -0
  32. package/dist/cli/commands/deploy/process-data-ingestion.d.ts.map +1 -0
  33. package/dist/cli/commands/deploy/process-data-ingestion.js +226 -0
  34. package/dist/cli/commands/deploy/process-data-ingestion.js.map +1 -0
  35. package/dist/cli/commands/deploy/use-case.d.ts +9 -0
  36. package/dist/cli/commands/deploy/use-case.d.ts.map +1 -0
  37. package/dist/cli/commands/deploy/use-case.js +212 -0
  38. package/dist/cli/commands/deploy/use-case.js.map +1 -0
  39. package/dist/cli/commands/get/execution.d.ts +9 -0
  40. package/dist/cli/commands/get/execution.d.ts.map +1 -0
  41. package/dist/cli/commands/get/execution.js +159 -0
  42. package/dist/cli/commands/get/execution.js.map +1 -0
  43. package/dist/cli/commands/get/index.d.ts +13 -0
  44. package/dist/cli/commands/get/index.d.ts.map +1 -0
  45. package/dist/cli/commands/get/index.js +20 -0
  46. package/dist/cli/commands/get/index.js.map +1 -0
  47. package/dist/cli/commands/get/skills.d.ts +15 -0
  48. package/dist/cli/commands/get/skills.d.ts.map +1 -0
  49. package/dist/cli/commands/get/skills.js +135 -0
  50. package/dist/cli/commands/get/skills.js.map +1 -0
  51. package/dist/cli/commands/get/use-case.d.ts +9 -0
  52. package/dist/cli/commands/get/use-case.d.ts.map +1 -0
  53. package/dist/cli/commands/get/use-case.js +186 -0
  54. package/dist/cli/commands/get/use-case.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +14 -0
  56. package/dist/cli/commands/init.d.ts.map +1 -0
  57. package/dist/cli/commands/init.js +347 -0
  58. package/dist/cli/commands/init.js.map +1 -0
  59. package/dist/cli/commands/integration/delete.d.ts +13 -0
  60. package/dist/cli/commands/integration/delete.d.ts.map +1 -0
  61. package/dist/cli/commands/integration/delete.js +140 -0
  62. package/dist/cli/commands/integration/delete.js.map +1 -0
  63. package/dist/cli/commands/integration/index.d.ts +13 -0
  64. package/dist/cli/commands/integration/index.d.ts.map +1 -0
  65. package/dist/cli/commands/integration/index.js +20 -0
  66. package/dist/cli/commands/integration/index.js.map +1 -0
  67. package/dist/cli/commands/integration/list.d.ts +13 -0
  68. package/dist/cli/commands/integration/list.d.ts.map +1 -0
  69. package/dist/cli/commands/integration/list.js +129 -0
  70. package/dist/cli/commands/integration/list.js.map +1 -0
  71. package/dist/cli/commands/integration/set.d.ts +13 -0
  72. package/dist/cli/commands/integration/set.d.ts.map +1 -0
  73. package/dist/cli/commands/integration/set.js +253 -0
  74. package/dist/cli/commands/integration/set.js.map +1 -0
  75. package/dist/cli/commands/list/executions.d.ts +12 -0
  76. package/dist/cli/commands/list/executions.d.ts.map +1 -0
  77. package/dist/cli/commands/list/executions.js +168 -0
  78. package/dist/cli/commands/list/executions.js.map +1 -0
  79. package/dist/cli/commands/list/index.d.ts +11 -0
  80. package/dist/cli/commands/list/index.d.ts.map +1 -0
  81. package/dist/cli/commands/list/index.js +14 -0
  82. package/dist/cli/commands/list/index.js.map +1 -0
  83. package/dist/cli/commands/logout.d.ts +12 -0
  84. package/dist/cli/commands/logout.d.ts.map +1 -0
  85. package/dist/cli/commands/logout.js +58 -0
  86. package/dist/cli/commands/logout.js.map +1 -0
  87. package/dist/cli/commands/project/create.d.ts +8 -0
  88. package/dist/cli/commands/project/create.d.ts.map +1 -0
  89. package/dist/cli/commands/project/create.js +109 -0
  90. package/dist/cli/commands/project/create.js.map +1 -0
  91. package/dist/cli/commands/project/index.d.ts +12 -0
  92. package/dist/cli/commands/project/index.d.ts.map +1 -0
  93. package/dist/cli/commands/project/index.js +15 -0
  94. package/dist/cli/commands/project/index.js.map +1 -0
  95. package/dist/cli/commands/publish.d.ts +12 -0
  96. package/dist/cli/commands/publish.d.ts.map +1 -0
  97. package/dist/cli/commands/publish.js +152 -0
  98. package/dist/cli/commands/publish.js.map +1 -0
  99. package/dist/cli/commands/redeploy.d.ts +11 -0
  100. package/dist/cli/commands/redeploy.d.ts.map +1 -0
  101. package/dist/cli/commands/redeploy.js +166 -0
  102. package/dist/cli/commands/redeploy.js.map +1 -0
  103. package/dist/cli/commands/status.d.ts +63 -0
  104. package/dist/cli/commands/status.d.ts.map +1 -0
  105. package/dist/cli/commands/status.js +290 -0
  106. package/dist/cli/commands/status.js.map +1 -0
  107. package/dist/cli/commands/trigger.d.ts +8 -0
  108. package/dist/cli/commands/trigger.d.ts.map +1 -0
  109. package/dist/cli/commands/trigger.js +247 -0
  110. package/dist/cli/commands/trigger.js.map +1 -0
  111. package/dist/cli/commands/use.d.ts +13 -0
  112. package/dist/cli/commands/use.d.ts.map +1 -0
  113. package/dist/cli/commands/use.js +92 -0
  114. package/dist/cli/commands/use.js.map +1 -0
  115. package/dist/cli/commands/verify/index.d.ts +13 -0
  116. package/dist/cli/commands/verify/index.d.ts.map +1 -0
  117. package/dist/cli/commands/verify/index.js +18 -0
  118. package/dist/cli/commands/verify/index.js.map +1 -0
  119. package/dist/cli/commands/verify/use-case.d.ts +23 -0
  120. package/dist/cli/commands/verify/use-case.d.ts.map +1 -0
  121. package/dist/cli/commands/verify/use-case.js +94 -0
  122. package/dist/cli/commands/verify/use-case.js.map +1 -0
  123. package/dist/cli/commands/verify/workflow.d.ts +22 -0
  124. package/dist/cli/commands/verify/workflow.d.ts.map +1 -0
  125. package/dist/cli/commands/verify/workflow.js +82 -0
  126. package/dist/cli/commands/verify/workflow.js.map +1 -0
  127. package/dist/cli/commands/whoami.d.ts +13 -0
  128. package/dist/cli/commands/whoami.d.ts.map +1 -0
  129. package/dist/cli/commands/whoami.js +126 -0
  130. package/dist/cli/commands/whoami.js.map +1 -0
  131. package/dist/cli/index.d.ts +24 -0
  132. package/dist/cli/index.d.ts.map +1 -0
  133. package/dist/cli/index.js +90 -0
  134. package/dist/cli/index.js.map +1 -0
  135. package/dist/cli/templates/claude-md-template.d.ts +12 -0
  136. package/dist/cli/templates/claude-md-template.d.ts.map +1 -0
  137. package/dist/cli/templates/claude-md-template.js +162 -0
  138. package/dist/cli/templates/claude-md-template.js.map +1 -0
  139. package/dist/cli/templates/config-template.d.ts +18 -0
  140. package/dist/cli/templates/config-template.d.ts.map +1 -0
  141. package/dist/cli/templates/config-template.js +350 -0
  142. package/dist/cli/templates/config-template.js.map +1 -0
  143. package/dist/cli/templates/skill-templates.d.ts +24 -0
  144. package/dist/cli/templates/skill-templates.d.ts.map +1 -0
  145. package/dist/cli/templates/skill-templates.js +117 -0
  146. package/dist/cli/templates/skill-templates.js.map +1 -0
  147. package/dist/cli/templates/slug.d.ts +9 -0
  148. package/dist/cli/templates/slug.d.ts.map +1 -0
  149. package/dist/cli/templates/slug.js +17 -0
  150. package/dist/cli/templates/slug.js.map +1 -0
  151. package/dist/cli/templates/workflow-templates.d.ts +693 -0
  152. package/dist/cli/templates/workflow-templates.d.ts.map +1 -0
  153. package/dist/cli/templates/workflow-templates.js +516 -0
  154. package/dist/cli/templates/workflow-templates.js.map +1 -0
  155. package/dist/cli/utils/output.d.ts +65 -0
  156. package/dist/cli/utils/output.d.ts.map +1 -0
  157. package/dist/cli/utils/output.js +188 -0
  158. package/dist/cli/utils/output.js.map +1 -0
  159. package/dist/cli/utils/validation-output.d.ts +21 -0
  160. package/dist/cli/utils/validation-output.d.ts.map +1 -0
  161. package/dist/cli/utils/validation-output.js +204 -0
  162. package/dist/cli/utils/validation-output.js.map +1 -0
  163. package/dist/data/integration-fields.d.ts +27 -0
  164. package/dist/data/integration-fields.d.ts.map +1 -0
  165. package/dist/data/integration-fields.js +361 -0
  166. package/dist/data/integration-fields.js.map +1 -0
  167. package/dist/index.d.ts +25 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +39 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/types/process-types.d.ts +740 -0
  172. package/dist/types/process-types.d.ts.map +1 -0
  173. package/dist/types/process-types.js +22 -0
  174. package/dist/types/process-types.js.map +1 -0
  175. package/dist/utils/config.d.ts +127 -0
  176. package/dist/utils/config.d.ts.map +1 -0
  177. package/dist/utils/config.js +315 -0
  178. package/dist/utils/config.js.map +1 -0
  179. package/dist/utils/data-ingestion-deploy-client.d.ts +53 -0
  180. package/dist/utils/data-ingestion-deploy-client.d.ts.map +1 -0
  181. package/dist/utils/data-ingestion-deploy-client.js +63 -0
  182. package/dist/utils/data-ingestion-deploy-client.js.map +1 -0
  183. package/dist/utils/data-ingestion-deployer.d.ts +78 -0
  184. package/dist/utils/data-ingestion-deployer.d.ts.map +1 -0
  185. package/dist/utils/data-ingestion-deployer.js +119 -0
  186. package/dist/utils/data-ingestion-deployer.js.map +1 -0
  187. package/dist/utils/deploy-client.d.ts +55 -0
  188. package/dist/utils/deploy-client.d.ts.map +1 -0
  189. package/dist/utils/deploy-client.js +73 -0
  190. package/dist/utils/deploy-client.js.map +1 -0
  191. package/dist/utils/deployment-archiver.d.ts +110 -0
  192. package/dist/utils/deployment-archiver.d.ts.map +1 -0
  193. package/dist/utils/deployment-archiver.js +158 -0
  194. package/dist/utils/deployment-archiver.js.map +1 -0
  195. package/dist/utils/document-deploy-client.d.ts +41 -0
  196. package/dist/utils/document-deploy-client.d.ts.map +1 -0
  197. package/dist/utils/document-deploy-client.js +46 -0
  198. package/dist/utils/document-deploy-client.js.map +1 -0
  199. package/dist/utils/encryption.d.ts +85 -0
  200. package/dist/utils/encryption.d.ts.map +1 -0
  201. package/dist/utils/encryption.js +162 -0
  202. package/dist/utils/encryption.js.map +1 -0
  203. package/dist/utils/execution-client.d.ts +71 -0
  204. package/dist/utils/execution-client.d.ts.map +1 -0
  205. package/dist/utils/execution-client.js +56 -0
  206. package/dist/utils/execution-client.js.map +1 -0
  207. package/dist/utils/integration-client.d.ts +134 -0
  208. package/dist/utils/integration-client.d.ts.map +1 -0
  209. package/dist/utils/integration-client.js +109 -0
  210. package/dist/utils/integration-client.js.map +1 -0
  211. package/dist/utils/list-executions-client.d.ts +47 -0
  212. package/dist/utils/list-executions-client.d.ts.map +1 -0
  213. package/dist/utils/list-executions-client.js +50 -0
  214. package/dist/utils/list-executions-client.js.map +1 -0
  215. package/dist/utils/metadata-client.d.ts +90 -0
  216. package/dist/utils/metadata-client.d.ts.map +1 -0
  217. package/dist/utils/metadata-client.js +66 -0
  218. package/dist/utils/metadata-client.js.map +1 -0
  219. package/dist/utils/project-client.d.ts +70 -0
  220. package/dist/utils/project-client.d.ts.map +1 -0
  221. package/dist/utils/project-client.js +63 -0
  222. package/dist/utils/project-client.js.map +1 -0
  223. package/dist/utils/project-json.d.ts +71 -0
  224. package/dist/utils/project-json.d.ts.map +1 -0
  225. package/dist/utils/project-json.js +129 -0
  226. package/dist/utils/project-json.js.map +1 -0
  227. package/dist/utils/publish-client.d.ts +53 -0
  228. package/dist/utils/publish-client.d.ts.map +1 -0
  229. package/dist/utils/publish-client.js +64 -0
  230. package/dist/utils/publish-client.js.map +1 -0
  231. package/dist/utils/redeploy-client.d.ts +39 -0
  232. package/dist/utils/redeploy-client.d.ts.map +1 -0
  233. package/dist/utils/redeploy-client.js +51 -0
  234. package/dist/utils/redeploy-client.js.map +1 -0
  235. package/dist/utils/skill-parser.d.ts +52 -0
  236. package/dist/utils/skill-parser.d.ts.map +1 -0
  237. package/dist/utils/skill-parser.js +127 -0
  238. package/dist/utils/skill-parser.js.map +1 -0
  239. package/dist/utils/skills-client.d.ts +39 -0
  240. package/dist/utils/skills-client.d.ts.map +1 -0
  241. package/dist/utils/skills-client.js +32 -0
  242. package/dist/utils/skills-client.js.map +1 -0
  243. package/dist/utils/trigger-client.d.ts +78 -0
  244. package/dist/utils/trigger-client.d.ts.map +1 -0
  245. package/dist/utils/trigger-client.js +81 -0
  246. package/dist/utils/trigger-client.js.map +1 -0
  247. package/dist/utils/use-case-deployer.d.ts +93 -0
  248. package/dist/utils/use-case-deployer.d.ts.map +1 -0
  249. package/dist/utils/use-case-deployer.js +270 -0
  250. package/dist/utils/use-case-deployer.js.map +1 -0
  251. package/dist/utils/version-manager.d.ts +63 -0
  252. package/dist/utils/version-manager.d.ts.map +1 -0
  253. package/dist/utils/version-manager.js +91 -0
  254. package/dist/utils/version-manager.js.map +1 -0
  255. package/dist/utils/workflow-encoding.d.ts +26 -0
  256. package/dist/utils/workflow-encoding.d.ts.map +1 -0
  257. package/dist/utils/workflow-encoding.js +41 -0
  258. package/dist/utils/workflow-encoding.js.map +1 -0
  259. package/dist/validation/fixer.d.ts +56 -0
  260. package/dist/validation/fixer.d.ts.map +1 -0
  261. package/dist/validation/fixer.js +168 -0
  262. package/dist/validation/fixer.js.map +1 -0
  263. package/dist/validation/rules/codika-init-required.d.ts +18 -0
  264. package/dist/validation/rules/codika-init-required.d.ts.map +1 -0
  265. package/dist/validation/rules/codika-init-required.js +70 -0
  266. package/dist/validation/rules/codika-init-required.js.map +1 -0
  267. package/dist/validation/rules/codika-submit-result.d.ts +22 -0
  268. package/dist/validation/rules/codika-submit-result.d.ts.map +1 -0
  269. package/dist/validation/rules/codika-submit-result.js +144 -0
  270. package/dist/validation/rules/codika-submit-result.js.map +1 -0
  271. package/dist/validation/rules/error-branch-required.d.ts +24 -0
  272. package/dist/validation/rules/error-branch-required.d.ts.map +1 -0
  273. package/dist/validation/rules/error-branch-required.js +103 -0
  274. package/dist/validation/rules/error-branch-required.js.map +1 -0
  275. package/dist/validation/rules/index.d.ts +18 -0
  276. package/dist/validation/rules/index.d.ts.map +1 -0
  277. package/dist/validation/rules/index.js +28 -0
  278. package/dist/validation/rules/index.js.map +1 -0
  279. package/dist/validation/rules/schedule-webhook-convergence.d.ts +24 -0
  280. package/dist/validation/rules/schedule-webhook-convergence.d.ts.map +1 -0
  281. package/dist/validation/rules/schedule-webhook-convergence.js +129 -0
  282. package/dist/validation/rules/schedule-webhook-convergence.js.map +1 -0
  283. package/dist/validation/rules/subworkflow-min-params.d.ts +21 -0
  284. package/dist/validation/rules/subworkflow-min-params.d.ts.map +1 -0
  285. package/dist/validation/rules/subworkflow-min-params.js +84 -0
  286. package/dist/validation/rules/subworkflow-min-params.js.map +1 -0
  287. package/dist/validation/runner.d.ts +43 -0
  288. package/dist/validation/runner.d.ts.map +1 -0
  289. package/dist/validation/runner.js +335 -0
  290. package/dist/validation/runner.js.map +1 -0
  291. package/dist/validation/types.d.ts +155 -0
  292. package/dist/validation/types.d.ts.map +1 -0
  293. package/dist/validation/types.js +8 -0
  294. package/dist/validation/types.js.map +1 -0
  295. package/dist/validation/use-case-scripts/calledby-consistency.d.ts +23 -0
  296. package/dist/validation/use-case-scripts/calledby-consistency.d.ts.map +1 -0
  297. package/dist/validation/use-case-scripts/calledby-consistency.js +236 -0
  298. package/dist/validation/use-case-scripts/calledby-consistency.js.map +1 -0
  299. package/dist/validation/use-case-scripts/config-exports.d.ts +17 -0
  300. package/dist/validation/use-case-scripts/config-exports.d.ts.map +1 -0
  301. package/dist/validation/use-case-scripts/config-exports.js +93 -0
  302. package/dist/validation/use-case-scripts/config-exports.js.map +1 -0
  303. package/dist/validation/use-case-scripts/custom-integration-schema.d.ts +21 -0
  304. package/dist/validation/use-case-scripts/custom-integration-schema.d.ts.map +1 -0
  305. package/dist/validation/use-case-scripts/custom-integration-schema.js +378 -0
  306. package/dist/validation/use-case-scripts/custom-integration-schema.js.map +1 -0
  307. package/dist/validation/use-case-scripts/index.d.ts +27 -0
  308. package/dist/validation/use-case-scripts/index.d.ts.map +1 -0
  309. package/dist/validation/use-case-scripts/index.js +52 -0
  310. package/dist/validation/use-case-scripts/index.js.map +1 -0
  311. package/dist/validation/use-case-scripts/integration-inheritance.d.ts +35 -0
  312. package/dist/validation/use-case-scripts/integration-inheritance.d.ts.map +1 -0
  313. package/dist/validation/use-case-scripts/integration-inheritance.js +348 -0
  314. package/dist/validation/use-case-scripts/integration-inheritance.js.map +1 -0
  315. package/dist/validation/use-case-scripts/schema-types.d.ts +21 -0
  316. package/dist/validation/use-case-scripts/schema-types.d.ts.map +1 -0
  317. package/dist/validation/use-case-scripts/schema-types.js +134 -0
  318. package/dist/validation/use-case-scripts/schema-types.js.map +1 -0
  319. package/dist/validation/use-case-scripts/skill-consistency.d.ts +21 -0
  320. package/dist/validation/use-case-scripts/skill-consistency.d.ts.map +1 -0
  321. package/dist/validation/use-case-scripts/skill-consistency.js +180 -0
  322. package/dist/validation/use-case-scripts/skill-consistency.js.map +1 -0
  323. package/dist/validation/use-case-scripts/subworkflow-references.d.ts +22 -0
  324. package/dist/validation/use-case-scripts/subworkflow-references.d.ts.map +1 -0
  325. package/dist/validation/use-case-scripts/subworkflow-references.js +139 -0
  326. package/dist/validation/use-case-scripts/subworkflow-references.js.map +1 -0
  327. package/dist/validation/use-case-scripts/trigger-type-consistency.d.ts +25 -0
  328. package/dist/validation/use-case-scripts/trigger-type-consistency.d.ts.map +1 -0
  329. package/dist/validation/use-case-scripts/trigger-type-consistency.js +265 -0
  330. package/dist/validation/use-case-scripts/trigger-type-consistency.js.map +1 -0
  331. package/dist/validation/use-case-scripts/trigger-types.d.ts +20 -0
  332. package/dist/validation/use-case-scripts/trigger-types.d.ts.map +1 -0
  333. package/dist/validation/use-case-scripts/trigger-types.js +177 -0
  334. package/dist/validation/use-case-scripts/trigger-types.js.map +1 -0
  335. package/dist/validation/use-case-scripts/triggers-required.d.ts +23 -0
  336. package/dist/validation/use-case-scripts/triggers-required.d.ts.map +1 -0
  337. package/dist/validation/use-case-scripts/triggers-required.js +111 -0
  338. package/dist/validation/use-case-scripts/triggers-required.js.map +1 -0
  339. package/dist/validation/use-case-scripts/webhook-path-consistency.d.ts +28 -0
  340. package/dist/validation/use-case-scripts/webhook-path-consistency.d.ts.map +1 -0
  341. package/dist/validation/use-case-scripts/webhook-path-consistency.js +288 -0
  342. package/dist/validation/use-case-scripts/webhook-path-consistency.js.map +1 -0
  343. package/dist/validation/use-case-scripts/workflow-imports.d.ts +16 -0
  344. package/dist/validation/use-case-scripts/workflow-imports.d.ts.map +1 -0
  345. package/dist/validation/use-case-scripts/workflow-imports.js +206 -0
  346. package/dist/validation/use-case-scripts/workflow-imports.js.map +1 -0
  347. package/dist/validation/workflow-scripts/credential-placeholders.d.ts +21 -0
  348. package/dist/validation/workflow-scripts/credential-placeholders.d.ts.map +1 -0
  349. package/dist/validation/workflow-scripts/credential-placeholders.js +278 -0
  350. package/dist/validation/workflow-scripts/credential-placeholders.js.map +1 -0
  351. package/dist/validation/workflow-scripts/db-always-output.d.ts +16 -0
  352. package/dist/validation/workflow-scripts/db-always-output.d.ts.map +1 -0
  353. package/dist/validation/workflow-scripts/db-always-output.js +95 -0
  354. package/dist/validation/workflow-scripts/db-always-output.js.map +1 -0
  355. package/dist/validation/workflow-scripts/exec-workflow-wait.d.ts +15 -0
  356. package/dist/validation/workflow-scripts/exec-workflow-wait.d.ts.map +1 -0
  357. package/dist/validation/workflow-scripts/exec-workflow-wait.js +85 -0
  358. package/dist/validation/workflow-scripts/exec-workflow-wait.js.map +1 -0
  359. package/dist/validation/workflow-scripts/index.d.ts +31 -0
  360. package/dist/validation/workflow-scripts/index.d.ts.map +1 -0
  361. package/dist/validation/workflow-scripts/index.js +58 -0
  362. package/dist/validation/workflow-scripts/index.js.map +1 -0
  363. package/dist/validation/workflow-scripts/instparm-quoting.d.ts +21 -0
  364. package/dist/validation/workflow-scripts/instparm-quoting.d.ts.map +1 -0
  365. package/dist/validation/workflow-scripts/instparm-quoting.js +59 -0
  366. package/dist/validation/workflow-scripts/instparm-quoting.js.map +1 -0
  367. package/dist/validation/workflow-scripts/llm-model-id.d.ts +17 -0
  368. package/dist/validation/workflow-scripts/llm-model-id.d.ts.map +1 -0
  369. package/dist/validation/workflow-scripts/llm-model-id.js +171 -0
  370. package/dist/validation/workflow-scripts/llm-model-id.js.map +1 -0
  371. package/dist/validation/workflow-scripts/llm-output-access.d.ts +23 -0
  372. package/dist/validation/workflow-scripts/llm-output-access.d.ts.map +1 -0
  373. package/dist/validation/workflow-scripts/llm-output-access.js +274 -0
  374. package/dist/validation/workflow-scripts/llm-output-access.js.map +1 -0
  375. package/dist/validation/workflow-scripts/merge-before-terminal.d.ts +20 -0
  376. package/dist/validation/workflow-scripts/merge-before-terminal.d.ts.map +1 -0
  377. package/dist/validation/workflow-scripts/merge-before-terminal.js +87 -0
  378. package/dist/validation/workflow-scripts/merge-before-terminal.js.map +1 -0
  379. package/dist/validation/workflow-scripts/placeholder-syntax.d.ts +29 -0
  380. package/dist/validation/workflow-scripts/placeholder-syntax.d.ts.map +1 -0
  381. package/dist/validation/workflow-scripts/placeholder-syntax.js +154 -0
  382. package/dist/validation/workflow-scripts/placeholder-syntax.js.map +1 -0
  383. package/dist/validation/workflow-scripts/retry-backoff.d.ts +16 -0
  384. package/dist/validation/workflow-scripts/retry-backoff.d.ts.map +1 -0
  385. package/dist/validation/workflow-scripts/retry-backoff.js +197 -0
  386. package/dist/validation/workflow-scripts/retry-backoff.js.map +1 -0
  387. package/dist/validation/workflow-scripts/webhook-id.d.ts +17 -0
  388. package/dist/validation/workflow-scripts/webhook-id.d.ts.map +1 -0
  389. package/dist/validation/workflow-scripts/webhook-id.js +79 -0
  390. package/dist/validation/workflow-scripts/webhook-id.js.map +1 -0
  391. package/dist/validation/workflow-scripts/workflow-format.d.ts +16 -0
  392. package/dist/validation/workflow-scripts/workflow-format.d.ts.map +1 -0
  393. package/dist/validation/workflow-scripts/workflow-format.js +51 -0
  394. package/dist/validation/workflow-scripts/workflow-format.js.map +1 -0
  395. package/dist/validation/workflow-scripts/workflow-sanitization.d.ts +21 -0
  396. package/dist/validation/workflow-scripts/workflow-sanitization.d.ts.map +1 -0
  397. package/dist/validation/workflow-scripts/workflow-sanitization.js +78 -0
  398. package/dist/validation/workflow-scripts/workflow-sanitization.js.map +1 -0
  399. package/dist/validation/workflow-scripts/workflow-settings.d.ts +19 -0
  400. package/dist/validation/workflow-scripts/workflow-settings.d.ts.map +1 -0
  401. package/dist/validation/workflow-scripts/workflow-settings.js +131 -0
  402. package/dist/validation/workflow-scripts/workflow-settings.js.map +1 -0
  403. package/package.json +64 -0
@@ -0,0 +1,348 @@
1
+ /**
2
+ * INTEGRATION-INHERITANCE Validation Script
3
+ *
4
+ * Validates that workflows declare all integration IDs they use in their integrationUids config.
5
+ *
6
+ * Two checks are performed:
7
+ * 1. Each workflow's integrationUids must include all integrations used directly in its JSON
8
+ * (detected via credential placeholders like FLEXCRED_ANTHROPIC_ID_DERCXELF)
9
+ * 2. Parent workflows must also include all integrations used by their subworkflows
10
+ *
11
+ * Credential placeholder pattern: {{TYPE_INTEGRATION_NAME_(ID|NAME)_SUFFIX}}
12
+ * - FLEXCRED_*_DERCXELF
13
+ * - USERCRED_*_DERCRESU
14
+ * - ORGCRED_*_DERCGRO
15
+ * - INSTCRED_*_DERCTSNI
16
+ *
17
+ * The INTEGRATION_NAME in CONSTANT_CASE becomes the integrationUid in snake_case.
18
+ * Example: FLEXCRED_GOOGLE_DRIVE_OAUTH_ID_DERCXELF -> google_drive_oauth
19
+ *
20
+ * @see .guides/specific/integrations.md - "Integration Declaration"
21
+ */
22
+ import { readFileSync, readdirSync, existsSync } from 'fs';
23
+ import { join, basename } from 'path';
24
+ export const RULE_ID = 'INTEGRATION-INHERITANCE';
25
+ export const metadata = {
26
+ id: RULE_ID,
27
+ name: 'integration_inheritance',
28
+ severity: 'should',
29
+ description: 'Workflows must declare all integrations they use (directly or via subworkflows)',
30
+ details: "Each workflow's integrationUids must include all integration IDs from its credential placeholders, plus all integrations from called subworkflows",
31
+ fixable: true,
32
+ category: 'references',
33
+ guideRef: {
34
+ path: 'specific/integrations.md',
35
+ section: 'Integration Declaration',
36
+ },
37
+ };
38
+ // Regex to find SUBWKFL placeholders
39
+ const SUBWKFL_PATTERN = /\{\{SUBWKFL_([a-zA-Z0-9_-]+)_LFKWBUS\}\}/g;
40
+ // Regex to find credential placeholders and extract integration name
41
+ // Matches: {{FLEXCRED_INTEGRATION_NAME_ID_DERCXELF}}, {{USERCRED_INTEGRATION_NAME_NAME_DERCRESU}}, etc.
42
+ const CREDENTIAL_PATTERN = /\{\{(FLEXCRED|USERCRED|ORGCRED|INSTCRED)_([A-Z0-9_]+)_(ID|NAME)_(DERCXELF|DERCRESU|DERCGRO|DERCTSNI)\}\}/g;
43
+ /**
44
+ * Converts CONSTANT_CASE to snake_case
45
+ * Example: GOOGLE_DRIVE_OAUTH -> google_drive_oauth
46
+ */
47
+ function toSnakeCase(constantCase) {
48
+ return constantCase.toLowerCase();
49
+ }
50
+ /**
51
+ * Extracts all SUBWKFL_ references from workflow content
52
+ */
53
+ function extractSubworkflowCalls(content) {
54
+ const references = [];
55
+ let match;
56
+ // Reset regex state
57
+ SUBWKFL_PATTERN.lastIndex = 0;
58
+ while ((match = SUBWKFL_PATTERN.exec(content)) !== null) {
59
+ if (!references.includes(match[1])) {
60
+ references.push(match[1]);
61
+ }
62
+ }
63
+ return references;
64
+ }
65
+ /**
66
+ * Extracts all integration IDs from credential placeholders in workflow content
67
+ * Returns snake_case integration IDs
68
+ */
69
+ function extractIntegrationIds(content) {
70
+ const integrations = [];
71
+ let match;
72
+ // Reset regex state
73
+ CREDENTIAL_PATTERN.lastIndex = 0;
74
+ while ((match = CREDENTIAL_PATTERN.exec(content)) !== null) {
75
+ const integrationName = match[2]; // e.g., "ANTHROPIC" or "GOOGLE_DRIVE_OAUTH"
76
+ const integrationId = toSnakeCase(integrationName);
77
+ if (!integrations.includes(integrationId)) {
78
+ integrations.push(integrationId);
79
+ }
80
+ }
81
+ return integrations;
82
+ }
83
+ /**
84
+ * Extracts integrationUids from config.ts for each workflow
85
+ * Returns a map of templateId -> integrationUids[]
86
+ */
87
+ function extractConfigIntegrations(configContent) {
88
+ const mappings = new Map();
89
+ // Find each workflowTemplateId
90
+ const templateIdPattern = /workflowTemplateId:\s*['"]([^'"]+)['"]/g;
91
+ let templateMatch;
92
+ while ((templateMatch = templateIdPattern.exec(configContent)) !== null) {
93
+ const templateId = templateMatch[1];
94
+ const templateIdEndPos = templateMatch.index + templateMatch[0].length;
95
+ // Look for the next workflow block or end of content
96
+ const nextTemplateMatch = /workflowTemplateId:/g;
97
+ nextTemplateMatch.lastIndex = templateIdEndPos;
98
+ const nextMatch = nextTemplateMatch.exec(configContent);
99
+ const blockEnd = nextMatch ? nextMatch.index : configContent.length;
100
+ // Extract the block for this workflow
101
+ const workflowBlock = configContent.slice(templateMatch.index, blockEnd);
102
+ // Extract integrationUids array
103
+ const integrationUidsMatch = workflowBlock.match(/integrationUids:\s*\[([^\]]*)\]/);
104
+ if (integrationUidsMatch) {
105
+ const integrationUidsContent = integrationUidsMatch[1];
106
+ const integrations = [];
107
+ // Match quoted strings in the array
108
+ const idPattern = /['"]([^'"]+)['"]/g;
109
+ let idMatch;
110
+ while ((idMatch = idPattern.exec(integrationUidsContent)) !== null) {
111
+ integrations.push(idMatch[1]);
112
+ }
113
+ mappings.set(templateId, integrations);
114
+ }
115
+ else {
116
+ // No integrationUids field - empty array
117
+ mappings.set(templateId, []);
118
+ }
119
+ }
120
+ return mappings;
121
+ }
122
+ /**
123
+ * Gets the workflow template ID from a workflow JSON filename
124
+ */
125
+ function getTemplateIdFromFilename(workflowFile) {
126
+ return basename(workflowFile, '.json');
127
+ }
128
+ /**
129
+ * Creates a fix function that adds missing integrations to a workflow's integrationUids array
130
+ */
131
+ function createFixFunction(workflowId, missingIntegrations, hasIntegrationUidsField) {
132
+ return (content) => {
133
+ // Find the workflow block for this workflow
134
+ const templateIdPattern = new RegExp(`(workflowTemplateId:\\s*['"]${workflowId}['"])`, 'g');
135
+ let match = templateIdPattern.exec(content);
136
+ if (!match) {
137
+ return content;
138
+ }
139
+ const templateIdEndPos = match.index + match[0].length;
140
+ // Find the end of this workflow block (next workflowTemplateId or end)
141
+ const nextTemplateMatch = /workflowTemplateId:/g;
142
+ nextTemplateMatch.lastIndex = templateIdEndPos;
143
+ const nextMatch = nextTemplateMatch.exec(content);
144
+ const blockEnd = nextMatch ? nextMatch.index : content.length;
145
+ const workflowBlock = content.slice(match.index, blockEnd);
146
+ if (hasIntegrationUidsField) {
147
+ // Add to existing integrationUids array
148
+ const integrationUidsPattern = /(integrationUids:\s*\[)([^\]]*)\]/;
149
+ const integrationUidsMatch = workflowBlock.match(integrationUidsPattern);
150
+ if (integrationUidsMatch) {
151
+ const existingContent = integrationUidsMatch[2].trim();
152
+ const newIntegrations = missingIntegrations.map(i => `'${i}'`).join(', ');
153
+ let newContent;
154
+ if (existingContent === '') {
155
+ newContent = newIntegrations;
156
+ }
157
+ else {
158
+ newContent = `${existingContent}, ${newIntegrations}`;
159
+ }
160
+ const updatedBlock = workflowBlock.replace(integrationUidsPattern, `$1${newContent}]`);
161
+ return content.slice(0, match.index) + updatedBlock + content.slice(blockEnd);
162
+ }
163
+ }
164
+ else {
165
+ // Add integrationUids field after workflowName or triggers
166
+ // Look for a good insertion point
167
+ const insertionPatterns = [
168
+ /(triggers:\s*\[[^\]]*\],?)/,
169
+ /(workflowName:\s*['"][^'"]*['"],?)/,
170
+ ];
171
+ for (const pattern of insertionPatterns) {
172
+ const insertMatch = workflowBlock.match(pattern);
173
+ if (insertMatch) {
174
+ const insertPos = insertMatch.index + insertMatch[0].length;
175
+ const newIntegrations = missingIntegrations.map(i => `'${i}'`).join(', ');
176
+ const needsComma = !insertMatch[0].trim().endsWith(',');
177
+ const updatedBlock = workflowBlock.slice(0, insertPos) +
178
+ (needsComma ? ',' : '') +
179
+ `\n integrationUids: [${newIntegrations}],` +
180
+ workflowBlock.slice(insertPos);
181
+ return content.slice(0, match.index) + updatedBlock + content.slice(blockEnd);
182
+ }
183
+ }
184
+ }
185
+ return content;
186
+ };
187
+ }
188
+ /**
189
+ * Checks if a workflow has an integrationUids field in config.ts
190
+ */
191
+ function hasIntegrationUidsInConfig(configContent, workflowId) {
192
+ const templateIdIndex = configContent.indexOf(`workflowTemplateId: '${workflowId}'`);
193
+ if (templateIdIndex === -1) {
194
+ // Try double quotes
195
+ const templateIdIndexDQ = configContent.indexOf(`workflowTemplateId: "${workflowId}"`);
196
+ if (templateIdIndexDQ === -1) {
197
+ return false;
198
+ }
199
+ const nextTemplateIndex = configContent.indexOf('workflowTemplateId:', templateIdIndexDQ + 1);
200
+ const blockEnd = nextTemplateIndex === -1 ? configContent.length : nextTemplateIndex;
201
+ const block = configContent.slice(templateIdIndexDQ, blockEnd);
202
+ return block.includes('integrationUids:');
203
+ }
204
+ const nextTemplateIndex = configContent.indexOf('workflowTemplateId:', templateIdIndex + 1);
205
+ const blockEnd = nextTemplateIndex === -1 ? configContent.length : nextTemplateIndex;
206
+ const block = configContent.slice(templateIdIndex, blockEnd);
207
+ return block.includes('integrationUids:');
208
+ }
209
+ /**
210
+ * Validates that workflows declare all integrations they use (directly or via subworkflows)
211
+ */
212
+ export async function checkIntegrationInheritance(useCasePath) {
213
+ const findings = [];
214
+ // Check if config.ts exists
215
+ const configPath = join(useCasePath, 'config.ts');
216
+ if (!existsSync(configPath)) {
217
+ // Cannot validate without config.ts - this is handled by other rules
218
+ return findings;
219
+ }
220
+ // Read config.ts
221
+ let configContent;
222
+ try {
223
+ configContent = readFileSync(configPath, 'utf-8');
224
+ }
225
+ catch {
226
+ // Cannot read config.ts - this is handled by other rules
227
+ return findings;
228
+ }
229
+ // Extract integrationUids from config for each workflow
230
+ const configIntegrations = extractConfigIntegrations(configContent);
231
+ // Check workflows folder
232
+ const workflowsPath = join(useCasePath, 'workflows');
233
+ if (!existsSync(workflowsPath)) {
234
+ // No workflows folder - nothing to validate
235
+ return findings;
236
+ }
237
+ // Get all workflow JSON files
238
+ let workflowFiles;
239
+ try {
240
+ workflowFiles = readdirSync(workflowsPath)
241
+ .filter(f => f.endsWith('.json'))
242
+ .map(f => join(workflowsPath, f));
243
+ }
244
+ catch {
245
+ // Cannot read workflows folder - this is handled by other rules
246
+ return findings;
247
+ }
248
+ // Build maps:
249
+ // 1. workflowId -> integrations it uses directly (from credential placeholders)
250
+ // 2. workflowId -> subworkflows it calls
251
+ const workflowIntegrations = new Map();
252
+ const workflowSubworkflowCalls = new Map();
253
+ for (const workflowFile of workflowFiles) {
254
+ let content;
255
+ try {
256
+ content = readFileSync(workflowFile, 'utf-8');
257
+ }
258
+ catch {
259
+ continue; // Skip unreadable files
260
+ }
261
+ const templateId = getTemplateIdFromFilename(workflowFile);
262
+ // Extract integrations from credential placeholders
263
+ const integrations = extractIntegrationIds(content);
264
+ workflowIntegrations.set(templateId, integrations);
265
+ // Extract subworkflow calls
266
+ const subworkflowCalls = extractSubworkflowCalls(content);
267
+ workflowSubworkflowCalls.set(templateId, subworkflowCalls);
268
+ }
269
+ // CHECK 1: Verify each workflow declares its own direct integrations
270
+ for (const [workflowId, directIntegrations] of workflowIntegrations) {
271
+ if (directIntegrations.length === 0) {
272
+ continue; // No integrations used directly
273
+ }
274
+ const declaredIntegrations = configIntegrations.get(workflowId) || [];
275
+ const hasField = hasIntegrationUidsInConfig(configContent, workflowId);
276
+ // Find missing direct integrations
277
+ const missingDirect = [];
278
+ for (const integration of directIntegrations) {
279
+ if (!declaredIntegrations.includes(integration)) {
280
+ missingDirect.push(integration);
281
+ }
282
+ }
283
+ if (missingDirect.length > 0) {
284
+ findings.push({
285
+ rule: RULE_ID,
286
+ severity: 'should',
287
+ path: configPath,
288
+ message: `Workflow "${workflowId}" uses integrations not declared in its integrationUids: ${missingDirect.join(', ')}`,
289
+ raw_details: `Add the following integrations to the integrationUids array for workflow '${workflowId}' in config.ts: ${missingDirect.map(i => `'${i}'`).join(', ')}. ` +
290
+ `These integrations are detected from credential placeholders in the workflow JSON.`,
291
+ guideRef: metadata.guideRef,
292
+ fixable: true,
293
+ fix: {
294
+ description: `Add missing integrations to '${workflowId}': ${missingDirect.join(', ')}`,
295
+ apply: createFixFunction(workflowId, missingDirect, hasField),
296
+ },
297
+ });
298
+ }
299
+ }
300
+ // CHECK 2: Verify parent workflows include all subworkflow integrations
301
+ for (const [parentId, subworkflowIds] of workflowSubworkflowCalls) {
302
+ if (subworkflowIds.length === 0) {
303
+ continue; // No subworkflow calls
304
+ }
305
+ // Collect all integrations from subworkflows
306
+ const subworkflowRequiredIntegrations = new Set();
307
+ for (const subworkflowId of subworkflowIds) {
308
+ const subIntegrations = workflowIntegrations.get(subworkflowId) || [];
309
+ for (const integration of subIntegrations) {
310
+ subworkflowRequiredIntegrations.add(integration);
311
+ }
312
+ }
313
+ if (subworkflowRequiredIntegrations.size === 0) {
314
+ continue; // No integrations required from subworkflows
315
+ }
316
+ // Get parent's declared integrations from config
317
+ const parentDeclaredIntegrations = configIntegrations.get(parentId) || [];
318
+ const hasField = hasIntegrationUidsInConfig(configContent, parentId);
319
+ // Find missing inherited integrations (exclude those already reported in CHECK 1)
320
+ const parentDirectIntegrations = workflowIntegrations.get(parentId) || [];
321
+ const missingInherited = [];
322
+ for (const required of subworkflowRequiredIntegrations) {
323
+ // Only report if not already declared AND not a direct integration (already reported)
324
+ if (!parentDeclaredIntegrations.includes(required) && !parentDirectIntegrations.includes(required)) {
325
+ missingInherited.push(required);
326
+ }
327
+ }
328
+ if (missingInherited.length > 0) {
329
+ findings.push({
330
+ rule: RULE_ID,
331
+ severity: 'should',
332
+ path: configPath,
333
+ message: `Workflow "${parentId}" calls subworkflows that use integrations not declared in its integrationUids: ${missingInherited.join(', ')}`,
334
+ raw_details: `Add the following integrations to the integrationUids array for workflow '${parentId}' in config.ts: ${missingInherited.map(i => `'${i}'`).join(', ')}. ` +
335
+ `These integrations are used by called subworkflows: ${subworkflowIds.join(', ')}`,
336
+ guideRef: metadata.guideRef,
337
+ fixable: true,
338
+ fix: {
339
+ description: `Add inherited integrations to '${parentId}': ${missingInherited.join(', ')}`,
340
+ apply: createFixFunction(parentId, missingInherited, hasField),
341
+ },
342
+ });
343
+ }
344
+ }
345
+ return findings;
346
+ }
347
+ export default checkIntegrationInheritance;
348
+ //# sourceMappingURL=integration-inheritance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-inheritance.js","sourceRoot":"","sources":["../../../src/validation/use-case-scripts/integration-inheritance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Script: SCHEMA-TYPES
3
+ *
4
+ * Validates that field types inside input/output schema definitions are valid.
5
+ * Only checks `type:` values within schema contexts (inputSchema, outputSchema,
6
+ * DeploymentInputSchema, FormInputSchema, FormOutputSchema functions).
7
+ *
8
+ * Valid field types:
9
+ * - string, text, number, boolean, date
10
+ * - select, multiselect, radio
11
+ * - file, array, object, objectArray
12
+ * - section (for grouping)
13
+ */
14
+ import type { Finding } from '../types.js';
15
+ import type { RuleMetadata } from '../types.js';
16
+ export declare const metadata: RuleMetadata;
17
+ /**
18
+ * Check schema field types in config.ts
19
+ */
20
+ export declare function checkSchemaTypes(useCasePath: string): Promise<Finding[]>;
21
+ //# sourceMappingURL=schema-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../../src/validation/use-case-scripts/schema-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,QAAQ,EAAE,YAOtB,CAAC;AAyEF;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAkD9E"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Script: SCHEMA-TYPES
3
+ *
4
+ * Validates that field types inside input/output schema definitions are valid.
5
+ * Only checks `type:` values within schema contexts (inputSchema, outputSchema,
6
+ * DeploymentInputSchema, FormInputSchema, FormOutputSchema functions).
7
+ *
8
+ * Valid field types:
9
+ * - string, text, number, boolean, date
10
+ * - select, multiselect, radio
11
+ * - file, array, object, objectArray
12
+ * - section (for grouping)
13
+ */
14
+ import { existsSync, readFileSync } from 'fs';
15
+ import { join } from 'path';
16
+ export const metadata = {
17
+ id: 'SCHEMA-TYPES',
18
+ name: 'schema_types',
19
+ severity: 'must',
20
+ description: 'Schema field types must be valid',
21
+ details: 'Use only supported field types in input and output schemas',
22
+ category: 'schema',
23
+ };
24
+ // Valid field types for schemas
25
+ const VALID_FIELD_TYPES = new Set([
26
+ 'string',
27
+ 'text',
28
+ 'number',
29
+ 'boolean',
30
+ 'date',
31
+ 'select',
32
+ 'multiselect',
33
+ 'radio',
34
+ 'file',
35
+ 'array',
36
+ 'object',
37
+ 'objectArray',
38
+ 'section',
39
+ ]);
40
+ /**
41
+ * Find schema function/block ranges in the config content.
42
+ * Returns line ranges (1-based) where schema definitions occur.
43
+ */
44
+ function findSchemaRanges(content) {
45
+ const ranges = [];
46
+ const lines = content.split('\n');
47
+ // Patterns that indicate a schema context
48
+ const schemaStartPatterns = [
49
+ /function\s+get\w*(?:Input|Output|Deployment)Schema/,
50
+ /(?:input|output)Schema\s*:\s*\[/,
51
+ /(?:Input|Output|Deployment)Schema\s*(?:=|:)\s*\[/,
52
+ ];
53
+ for (let i = 0; i < lines.length; i++) {
54
+ const line = lines[i];
55
+ const isSchemaStart = schemaStartPatterns.some(p => p.test(line));
56
+ if (isSchemaStart) {
57
+ // Find the end of this schema block by tracking bracket depth
58
+ let depth = 0;
59
+ let foundOpen = false;
60
+ let end = i;
61
+ for (let j = i; j < lines.length; j++) {
62
+ for (const ch of lines[j]) {
63
+ if (ch === '[' || ch === '{') {
64
+ depth++;
65
+ foundOpen = true;
66
+ }
67
+ else if (ch === ']' || ch === '}') {
68
+ depth--;
69
+ }
70
+ }
71
+ if (foundOpen && depth <= 0) {
72
+ end = j;
73
+ break;
74
+ }
75
+ }
76
+ ranges.push({ start: i + 1, end: end + 1 }); // 1-based
77
+ }
78
+ }
79
+ return ranges;
80
+ }
81
+ /**
82
+ * Check if a line number falls within any schema range
83
+ */
84
+ function isInSchemaContext(line, ranges) {
85
+ return ranges.some(r => line >= r.start && line <= r.end);
86
+ }
87
+ /**
88
+ * Check schema field types in config.ts
89
+ */
90
+ export async function checkSchemaTypes(useCasePath) {
91
+ const findings = [];
92
+ const configPath = join(useCasePath, 'config.ts');
93
+ if (!existsSync(configPath)) {
94
+ return findings;
95
+ }
96
+ let content;
97
+ try {
98
+ content = readFileSync(configPath, 'utf-8');
99
+ }
100
+ catch {
101
+ return findings;
102
+ }
103
+ const schemaRanges = findSchemaRanges(content);
104
+ if (schemaRanges.length === 0) {
105
+ return findings;
106
+ }
107
+ const lines = content.split('\n');
108
+ for (let i = 0; i < lines.length; i++) {
109
+ const lineNum = i + 1;
110
+ const line = lines[i];
111
+ // Only check type: references inside schema contexts
112
+ if (!isInSchemaContext(lineNum, schemaRanges))
113
+ continue;
114
+ const typeMatch = line.match(/type\s*:\s*['"]([^'"]+)['"]/);
115
+ if (!typeMatch)
116
+ continue;
117
+ const typeValue = typeMatch[1];
118
+ // Skip TypeScript 'as const' assertions
119
+ if (typeValue === 'const')
120
+ continue;
121
+ if (!VALID_FIELD_TYPES.has(typeValue)) {
122
+ findings.push({
123
+ rule: metadata.id,
124
+ severity: 'must',
125
+ path: configPath,
126
+ message: `Unknown schema field type: "${typeValue}" (line ${lineNum})`,
127
+ raw_details: `Valid types are: ${Array.from(VALID_FIELD_TYPES).join(', ')}`,
128
+ line: lineNum,
129
+ });
130
+ }
131
+ }
132
+ return findings;
133
+ }
134
+ //# sourceMappingURL=schema-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.js","sourceRoot":"","sources":["../../../src/validation/use-case-scripts/schema-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Script: SKILL-CONSISTENCY
3
+ *
4
+ * Validates skill files in the skills/ directory follow the Claude Agent Skills format:
5
+ * - Each subdirectory must contain a SKILL.md file
6
+ * - SKILL.md must have valid YAML frontmatter (name, description, workflowTemplateId)
7
+ * - name must follow Claude spec: max 64 chars, lowercase+numbers+hyphens, no reserved words
8
+ * - description must be non-empty, max 1024 chars
9
+ * - workflowTemplateId must reference an existing workflow
10
+ * - No duplicate names or workflowTemplateIds
11
+ *
12
+ * Skills folder is optional — no error if missing.
13
+ */
14
+ import type { Finding } from '../types.js';
15
+ import type { RuleMetadata } from '../types.js';
16
+ export declare const metadata: RuleMetadata;
17
+ /**
18
+ * Check skill consistency across the use case
19
+ */
20
+ export declare function checkSkillConsistency(useCasePath: string): Promise<Finding[]>;
21
+ //# sourceMappingURL=skill-consistency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-consistency.d.ts","sourceRoot":"","sources":["../../../src/validation/use-case-scripts/skill-consistency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE,YAOtB,CAAC;AAOF;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA2JnF"}