@syrin/cli 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 (438) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +302 -0
  3. package/dist/cli/commands/analyse.d.ts +16 -0
  4. package/dist/cli/commands/analyse.js +61 -0
  5. package/dist/cli/commands/dev.d.ts +23 -0
  6. package/dist/cli/commands/dev.js +419 -0
  7. package/dist/cli/commands/doctor.d.ts +10 -0
  8. package/dist/cli/commands/doctor.js +195 -0
  9. package/dist/cli/commands/index.d.ts +12 -0
  10. package/dist/cli/commands/index.js +12 -0
  11. package/dist/cli/commands/init.d.ts +16 -0
  12. package/dist/cli/commands/init.js +90 -0
  13. package/dist/cli/commands/list.d.ts +15 -0
  14. package/dist/cli/commands/list.js +50 -0
  15. package/dist/cli/commands/rollback.d.ts +12 -0
  16. package/dist/cli/commands/rollback.js +101 -0
  17. package/dist/cli/commands/test.d.ts +31 -0
  18. package/dist/cli/commands/test.js +88 -0
  19. package/dist/cli/commands/update.d.ts +9 -0
  20. package/dist/cli/commands/update.js +76 -0
  21. package/dist/cli/index.d.ts +13 -0
  22. package/dist/cli/index.js +342 -0
  23. package/dist/cli/prompts/index.d.ts +5 -0
  24. package/dist/cli/prompts/index.js +5 -0
  25. package/dist/cli/prompts/init-prompt.d.ts +17 -0
  26. package/dist/cli/prompts/init-prompt.js +263 -0
  27. package/dist/cli/utils/command-error-handler.d.ts +14 -0
  28. package/dist/cli/utils/command-error-handler.js +35 -0
  29. package/dist/cli/utils/common-types.d.ts +24 -0
  30. package/dist/cli/utils/common-types.js +6 -0
  31. package/dist/cli/utils/connection-handler.d.ts +37 -0
  32. package/dist/cli/utils/connection-handler.js +90 -0
  33. package/dist/cli/utils/index.d.ts +11 -0
  34. package/dist/cli/utils/index.js +11 -0
  35. package/dist/cli/utils/option-parsers.d.ts +41 -0
  36. package/dist/cli/utils/option-parsers.js +92 -0
  37. package/dist/cli/utils/output-utils.d.ts +12 -0
  38. package/dist/cli/utils/output-utils.js +21 -0
  39. package/dist/cli/utils/transport-resolver.d.ts +33 -0
  40. package/dist/cli/utils/transport-resolver.js +82 -0
  41. package/dist/cli/utils/version-banner.d.ts +10 -0
  42. package/dist/cli/utils/version-banner.js +26 -0
  43. package/dist/config/env-checker.d.ts +37 -0
  44. package/dist/config/env-checker.js +136 -0
  45. package/dist/config/generator.d.ts +19 -0
  46. package/dist/config/generator.js +196 -0
  47. package/dist/config/index.d.ts +9 -0
  48. package/dist/config/index.js +9 -0
  49. package/dist/config/loader.d.ts +19 -0
  50. package/dist/config/loader.js +57 -0
  51. package/dist/config/schema.d.ts +42 -0
  52. package/dist/config/schema.js +181 -0
  53. package/dist/config/syrin.template.yaml +127 -0
  54. package/dist/config/types.d.ts +87 -0
  55. package/dist/config/types.js +6 -0
  56. package/dist/constants/app.d.ts +9 -0
  57. package/dist/constants/app.js +9 -0
  58. package/dist/constants/commands.d.ts +43 -0
  59. package/dist/constants/commands.js +43 -0
  60. package/dist/constants/defaults.d.ts +18 -0
  61. package/dist/constants/defaults.js +18 -0
  62. package/dist/constants/env-vars.d.ts +11 -0
  63. package/dist/constants/env-vars.js +11 -0
  64. package/dist/constants/icons.d.ts +23 -0
  65. package/dist/constants/icons.js +23 -0
  66. package/dist/constants/index.d.ts +17 -0
  67. package/dist/constants/index.js +17 -0
  68. package/dist/constants/labels.d.ts +38 -0
  69. package/dist/constants/labels.js +42 -0
  70. package/dist/constants/links.d.ts +10 -0
  71. package/dist/constants/links.js +11 -0
  72. package/dist/constants/list.d.ts +10 -0
  73. package/dist/constants/list.js +9 -0
  74. package/dist/constants/llm.d.ts +26 -0
  75. package/dist/constants/llm.js +25 -0
  76. package/dist/constants/messages.d.ts +107 -0
  77. package/dist/constants/messages.js +138 -0
  78. package/dist/constants/paths.d.ts +29 -0
  79. package/dist/constants/paths.js +29 -0
  80. package/dist/constants/transport.d.ts +9 -0
  81. package/dist/constants/transport.js +8 -0
  82. package/dist/events/emitter.d.ts +64 -0
  83. package/dist/events/emitter.js +142 -0
  84. package/dist/events/event-type.d.ts +66 -0
  85. package/dist/events/event-type.js +81 -0
  86. package/dist/events/payloads/diagnostics.d.ts +24 -0
  87. package/dist/events/payloads/diagnostics.js +5 -0
  88. package/dist/events/payloads/index.d.ts +15 -0
  89. package/dist/events/payloads/index.js +6 -0
  90. package/dist/events/payloads/llm.d.ts +58 -0
  91. package/dist/events/payloads/llm.js +6 -0
  92. package/dist/events/payloads/registry.d.ts +28 -0
  93. package/dist/events/payloads/registry.js +5 -0
  94. package/dist/events/payloads/session.d.ts +32 -0
  95. package/dist/events/payloads/session.js +5 -0
  96. package/dist/events/payloads/testing.d.ts +17 -0
  97. package/dist/events/payloads/testing.js +5 -0
  98. package/dist/events/payloads/tool.d.ts +29 -0
  99. package/dist/events/payloads/tool.js +5 -0
  100. package/dist/events/payloads/transport.d.ts +30 -0
  101. package/dist/events/payloads/transport.js +5 -0
  102. package/dist/events/payloads/validation.d.ts +37 -0
  103. package/dist/events/payloads/validation.js +5 -0
  104. package/dist/events/payloads/workflow.d.ts +45 -0
  105. package/dist/events/payloads/workflow.js +5 -0
  106. package/dist/events/store/file-store.d.ts +37 -0
  107. package/dist/events/store/file-store.js +113 -0
  108. package/dist/events/store/index.d.ts +7 -0
  109. package/dist/events/store/index.js +6 -0
  110. package/dist/events/store/memory-store.d.ts +26 -0
  111. package/dist/events/store/memory-store.js +39 -0
  112. package/dist/events/store.d.ts +11 -0
  113. package/dist/events/store.js +2 -0
  114. package/dist/events/types.d.ts +14 -0
  115. package/dist/events/types.js +2 -0
  116. package/dist/index.d.ts +8 -0
  117. package/dist/index.js +30 -0
  118. package/dist/presentation/analysis-ui.d.ts +24 -0
  119. package/dist/presentation/analysis-ui.js +158 -0
  120. package/dist/presentation/dev/chat-ui-types.d.ts +68 -0
  121. package/dist/presentation/dev/chat-ui-types.js +5 -0
  122. package/dist/presentation/dev/chat-ui.d.ts +61 -0
  123. package/dist/presentation/dev/chat-ui.js +714 -0
  124. package/dist/presentation/dev/components/assistant-message.d.ts +19 -0
  125. package/dist/presentation/dev/components/assistant-message.js +36 -0
  126. package/dist/presentation/dev/components/header.d.ts +16 -0
  127. package/dist/presentation/dev/components/header.js +22 -0
  128. package/dist/presentation/dev/components/index.d.ts +13 -0
  129. package/dist/presentation/dev/components/index.js +13 -0
  130. package/dist/presentation/dev/components/input-panel.d.ts +22 -0
  131. package/dist/presentation/dev/components/input-panel.js +43 -0
  132. package/dist/presentation/dev/components/message-component.d.ts +16 -0
  133. package/dist/presentation/dev/components/message-component.js +51 -0
  134. package/dist/presentation/dev/components/messages-list.d.ts +24 -0
  135. package/dist/presentation/dev/components/messages-list.js +48 -0
  136. package/dist/presentation/dev/components/system-message.d.ts +16 -0
  137. package/dist/presentation/dev/components/system-message.js +26 -0
  138. package/dist/presentation/dev/components/user-message.d.ts +21 -0
  139. package/dist/presentation/dev/components/user-message.js +35 -0
  140. package/dist/presentation/dev/components/welcome-banner.d.ts +24 -0
  141. package/dist/presentation/dev/components/welcome-banner.js +146 -0
  142. package/dist/presentation/dev/goodbye-messages.d.ts +31 -0
  143. package/dist/presentation/dev/goodbye-messages.js +100 -0
  144. package/dist/presentation/dev/index.d.ts +5 -0
  145. package/dist/presentation/dev/index.js +5 -0
  146. package/dist/presentation/dev/text-wrapper.d.ts +30 -0
  147. package/dist/presentation/dev/text-wrapper.js +74 -0
  148. package/dist/presentation/dev-ui.d.ts +33 -0
  149. package/dist/presentation/dev-ui.js +246 -0
  150. package/dist/presentation/doctor-ui.d.ts +40 -0
  151. package/dist/presentation/doctor-ui.js +157 -0
  152. package/dist/presentation/init-ui.d.ts +14 -0
  153. package/dist/presentation/init-ui.js +41 -0
  154. package/dist/presentation/list-ui.d.ts +44 -0
  155. package/dist/presentation/list-ui.js +139 -0
  156. package/dist/presentation/test-ui.d.ts +49 -0
  157. package/dist/presentation/test-ui.js +358 -0
  158. package/dist/runtime/analysis/analyser.d.ts +14 -0
  159. package/dist/runtime/analysis/analyser.js +88 -0
  160. package/dist/runtime/analysis/dependencies.d.ts +10 -0
  161. package/dist/runtime/analysis/dependencies.js +140 -0
  162. package/dist/runtime/analysis/index.d.ts +10 -0
  163. package/dist/runtime/analysis/index.js +10 -0
  164. package/dist/runtime/analysis/indexer.d.ts +10 -0
  165. package/dist/runtime/analysis/indexer.js +62 -0
  166. package/dist/runtime/analysis/loader.d.ts +15 -0
  167. package/dist/runtime/analysis/loader.js +47 -0
  168. package/dist/runtime/analysis/normalizer.d.ts +14 -0
  169. package/dist/runtime/analysis/normalizer.js +184 -0
  170. package/dist/runtime/analysis/rules/__test-helpers__.d.ts +18 -0
  171. package/dist/runtime/analysis/rules/__test-helpers__.js +40 -0
  172. package/dist/runtime/analysis/rules/base.d.ts +38 -0
  173. package/dist/runtime/analysis/rules/base.js +23 -0
  174. package/dist/runtime/analysis/rules/error-codes.d.ts +64 -0
  175. package/dist/runtime/analysis/rules/error-codes.js +73 -0
  176. package/dist/runtime/analysis/rules/errors/e000-tool-not-found.d.ts +35 -0
  177. package/dist/runtime/analysis/rules/errors/e000-tool-not-found.js +32 -0
  178. package/dist/runtime/analysis/rules/errors/e001-missing-output-schema.d.ts +22 -0
  179. package/dist/runtime/analysis/rules/errors/e001-missing-output-schema.js +30 -0
  180. package/dist/runtime/analysis/rules/errors/e002-underspecified-input.d.ts +24 -0
  181. package/dist/runtime/analysis/rules/errors/e002-underspecified-input.js +52 -0
  182. package/dist/runtime/analysis/rules/errors/e003-type-mismatch.d.ts +23 -0
  183. package/dist/runtime/analysis/rules/errors/e003-type-mismatch.js +73 -0
  184. package/dist/runtime/analysis/rules/errors/e004-free-text-propagation.d.ts +23 -0
  185. package/dist/runtime/analysis/rules/errors/e004-free-text-propagation.js +47 -0
  186. package/dist/runtime/analysis/rules/errors/e005-tool-ambiguity.d.ts +25 -0
  187. package/dist/runtime/analysis/rules/errors/e005-tool-ambiguity.js +73 -0
  188. package/dist/runtime/analysis/rules/errors/e006-param-not-in-description.d.ts +22 -0
  189. package/dist/runtime/analysis/rules/errors/e006-param-not-in-description.js +57 -0
  190. package/dist/runtime/analysis/rules/errors/e007-output-not-guaranteed.d.ts +23 -0
  191. package/dist/runtime/analysis/rules/errors/e007-output-not-guaranteed.js +56 -0
  192. package/dist/runtime/analysis/rules/errors/e008-circular-dependency.d.ts +22 -0
  193. package/dist/runtime/analysis/rules/errors/e008-circular-dependency.js +84 -0
  194. package/dist/runtime/analysis/rules/errors/e009-implicit-user-input.d.ts +23 -0
  195. package/dist/runtime/analysis/rules/errors/e009-implicit-user-input.js +89 -0
  196. package/dist/runtime/analysis/rules/errors/e010-non-serializable.d.ts +25 -0
  197. package/dist/runtime/analysis/rules/errors/e010-non-serializable.js +46 -0
  198. package/dist/runtime/analysis/rules/errors/e011-missing-tool-description.d.ts +24 -0
  199. package/dist/runtime/analysis/rules/errors/e011-missing-tool-description.js +33 -0
  200. package/dist/runtime/analysis/rules/errors/e012-side-effect-detected.d.ts +39 -0
  201. package/dist/runtime/analysis/rules/errors/e012-side-effect-detected.js +40 -0
  202. package/dist/runtime/analysis/rules/errors/e013-non-deterministic-output.d.ts +37 -0
  203. package/dist/runtime/analysis/rules/errors/e013-non-deterministic-output.js +34 -0
  204. package/dist/runtime/analysis/rules/errors/e013-output-explosion.d.ts +39 -0
  205. package/dist/runtime/analysis/rules/errors/e013-output-explosion.js +36 -0
  206. package/dist/runtime/analysis/rules/errors/e014-hidden-dependency.d.ts +42 -0
  207. package/dist/runtime/analysis/rules/errors/e014-hidden-dependency.js +46 -0
  208. package/dist/runtime/analysis/rules/errors/e014-output-explosion.d.ts +39 -0
  209. package/dist/runtime/analysis/rules/errors/e014-output-explosion.js +36 -0
  210. package/dist/runtime/analysis/rules/errors/e015-hidden-dependency.d.ts +42 -0
  211. package/dist/runtime/analysis/rules/errors/e015-hidden-dependency.js +46 -0
  212. package/dist/runtime/analysis/rules/errors/e015-unbounded-execution.d.ts +44 -0
  213. package/dist/runtime/analysis/rules/errors/e015-unbounded-execution.js +66 -0
  214. package/dist/runtime/analysis/rules/errors/e016-output-validation-failed.d.ts +43 -0
  215. package/dist/runtime/analysis/rules/errors/e016-output-validation-failed.js +42 -0
  216. package/dist/runtime/analysis/rules/errors/e016-unbounded-execution.d.ts +44 -0
  217. package/dist/runtime/analysis/rules/errors/e016-unbounded-execution.js +66 -0
  218. package/dist/runtime/analysis/rules/errors/e017-input-validation-failed.d.ts +57 -0
  219. package/dist/runtime/analysis/rules/errors/e017-input-validation-failed.js +80 -0
  220. package/dist/runtime/analysis/rules/errors/e017-output-validation-failed.d.ts +43 -0
  221. package/dist/runtime/analysis/rules/errors/e017-output-validation-failed.js +42 -0
  222. package/dist/runtime/analysis/rules/errors/e018-input-validation-failed.d.ts +57 -0
  223. package/dist/runtime/analysis/rules/errors/e018-input-validation-failed.js +80 -0
  224. package/dist/runtime/analysis/rules/errors/e018-tool-execution-failed.d.ts +38 -0
  225. package/dist/runtime/analysis/rules/errors/e018-tool-execution-failed.js +37 -0
  226. package/dist/runtime/analysis/rules/errors/e019-tool-execution-failed.d.ts +38 -0
  227. package/dist/runtime/analysis/rules/errors/e019-tool-execution-failed.js +37 -0
  228. package/dist/runtime/analysis/rules/errors/e019-unexpected-test-result.d.ts +65 -0
  229. package/dist/runtime/analysis/rules/errors/e019-unexpected-test-result.js +109 -0
  230. package/dist/runtime/analysis/rules/errors/e020-unexpected-test-result.d.ts +65 -0
  231. package/dist/runtime/analysis/rules/errors/e020-unexpected-test-result.js +109 -0
  232. package/dist/runtime/analysis/rules/errors/e100-missing-output-schema.d.ts +22 -0
  233. package/dist/runtime/analysis/rules/errors/e100-missing-output-schema.js +30 -0
  234. package/dist/runtime/analysis/rules/errors/e101-missing-tool-description.d.ts +24 -0
  235. package/dist/runtime/analysis/rules/errors/e101-missing-tool-description.js +33 -0
  236. package/dist/runtime/analysis/rules/errors/e102-underspecified-input.d.ts +24 -0
  237. package/dist/runtime/analysis/rules/errors/e102-underspecified-input.js +52 -0
  238. package/dist/runtime/analysis/rules/errors/e103-type-mismatch.d.ts +23 -0
  239. package/dist/runtime/analysis/rules/errors/e103-type-mismatch.js +72 -0
  240. package/dist/runtime/analysis/rules/errors/e104-param-not-in-description.d.ts +22 -0
  241. package/dist/runtime/analysis/rules/errors/e104-param-not-in-description.js +57 -0
  242. package/dist/runtime/analysis/rules/errors/e105-free-text-propagation.d.ts +23 -0
  243. package/dist/runtime/analysis/rules/errors/e105-free-text-propagation.js +47 -0
  244. package/dist/runtime/analysis/rules/errors/e106-output-not-guaranteed.d.ts +23 -0
  245. package/dist/runtime/analysis/rules/errors/e106-output-not-guaranteed.js +58 -0
  246. package/dist/runtime/analysis/rules/errors/e107-circular-dependency.d.ts +22 -0
  247. package/dist/runtime/analysis/rules/errors/e107-circular-dependency.js +84 -0
  248. package/dist/runtime/analysis/rules/errors/e108-implicit-user-input.d.ts +23 -0
  249. package/dist/runtime/analysis/rules/errors/e108-implicit-user-input.js +94 -0
  250. package/dist/runtime/analysis/rules/errors/e109-non-serializable.d.ts +25 -0
  251. package/dist/runtime/analysis/rules/errors/e109-non-serializable.js +44 -0
  252. package/dist/runtime/analysis/rules/errors/e110-tool-ambiguity.d.ts +25 -0
  253. package/dist/runtime/analysis/rules/errors/e110-tool-ambiguity.js +73 -0
  254. package/dist/runtime/analysis/rules/errors/e200-input-validation-failed.d.ts +57 -0
  255. package/dist/runtime/analysis/rules/errors/e200-input-validation-failed.js +71 -0
  256. package/dist/runtime/analysis/rules/errors/e300-output-validation-failed.d.ts +43 -0
  257. package/dist/runtime/analysis/rules/errors/e300-output-validation-failed.js +44 -0
  258. package/dist/runtime/analysis/rules/errors/e301-output-explosion.d.ts +39 -0
  259. package/dist/runtime/analysis/rules/errors/e301-output-explosion.js +36 -0
  260. package/dist/runtime/analysis/rules/errors/e400-tool-execution-failed.d.ts +38 -0
  261. package/dist/runtime/analysis/rules/errors/e400-tool-execution-failed.js +37 -0
  262. package/dist/runtime/analysis/rules/errors/e403-unbounded-execution.d.ts +44 -0
  263. package/dist/runtime/analysis/rules/errors/e403-unbounded-execution.js +66 -0
  264. package/dist/runtime/analysis/rules/errors/e500-side-effect-detected.d.ts +39 -0
  265. package/dist/runtime/analysis/rules/errors/e500-side-effect-detected.js +40 -0
  266. package/dist/runtime/analysis/rules/errors/e501-hidden-dependency.d.ts +47 -0
  267. package/dist/runtime/analysis/rules/errors/e501-hidden-dependency.js +46 -0
  268. package/dist/runtime/analysis/rules/errors/e600-unexpected-test-result.d.ts +65 -0
  269. package/dist/runtime/analysis/rules/errors/e600-unexpected-test-result.js +109 -0
  270. package/dist/runtime/analysis/rules/index.d.ts +18 -0
  271. package/dist/runtime/analysis/rules/index.js +94 -0
  272. package/dist/runtime/analysis/rules/warnings/w001-implicit-dependency.d.ts +22 -0
  273. package/dist/runtime/analysis/rules/warnings/w001-implicit-dependency.js +39 -0
  274. package/dist/runtime/analysis/rules/warnings/w002-free-text-without-normalization.d.ts +24 -0
  275. package/dist/runtime/analysis/rules/warnings/w002-free-text-without-normalization.js +40 -0
  276. package/dist/runtime/analysis/rules/warnings/w003-missing-examples.d.ts +22 -0
  277. package/dist/runtime/analysis/rules/warnings/w003-missing-examples.js +84 -0
  278. package/dist/runtime/analysis/rules/warnings/w004-overloaded-responsibility.d.ts +23 -0
  279. package/dist/runtime/analysis/rules/warnings/w004-overloaded-responsibility.js +96 -0
  280. package/dist/runtime/analysis/rules/warnings/w005-generic-description.d.ts +53 -0
  281. package/dist/runtime/analysis/rules/warnings/w005-generic-description.js +108 -0
  282. package/dist/runtime/analysis/rules/warnings/w006-optional-as-required.d.ts +22 -0
  283. package/dist/runtime/analysis/rules/warnings/w006-optional-as-required.js +44 -0
  284. package/dist/runtime/analysis/rules/warnings/w007-broad-output-schema.d.ts +23 -0
  285. package/dist/runtime/analysis/rules/warnings/w007-broad-output-schema.js +37 -0
  286. package/dist/runtime/analysis/rules/warnings/w008-multiple-entry-points.d.ts +22 -0
  287. package/dist/runtime/analysis/rules/warnings/w008-multiple-entry-points.js +97 -0
  288. package/dist/runtime/analysis/rules/warnings/w009-hidden-side-effects.d.ts +23 -0
  289. package/dist/runtime/analysis/rules/warnings/w009-hidden-side-effects.js +88 -0
  290. package/dist/runtime/analysis/rules/warnings/w010-output-not-reusable.d.ts +22 -0
  291. package/dist/runtime/analysis/rules/warnings/w010-output-not-reusable.js +81 -0
  292. package/dist/runtime/analysis/rules/warnings/w021-weak-schema.d.ts +40 -0
  293. package/dist/runtime/analysis/rules/warnings/w021-weak-schema.js +32 -0
  294. package/dist/runtime/analysis/rules/warnings/w022-high-entropy-output.d.ts +39 -0
  295. package/dist/runtime/analysis/rules/warnings/w022-high-entropy-output.js +36 -0
  296. package/dist/runtime/analysis/rules/warnings/w023-unstable-defaults.d.ts +38 -0
  297. package/dist/runtime/analysis/rules/warnings/w023-unstable-defaults.js +36 -0
  298. package/dist/runtime/analysis/rules/warnings/w100-implicit-dependency.d.ts +22 -0
  299. package/dist/runtime/analysis/rules/warnings/w100-implicit-dependency.js +89 -0
  300. package/dist/runtime/analysis/rules/warnings/w101-free-text-without-normalization.d.ts +24 -0
  301. package/dist/runtime/analysis/rules/warnings/w101-free-text-without-normalization.js +40 -0
  302. package/dist/runtime/analysis/rules/warnings/w102-missing-examples.d.ts +22 -0
  303. package/dist/runtime/analysis/rules/warnings/w102-missing-examples.js +76 -0
  304. package/dist/runtime/analysis/rules/warnings/w103-overloaded-responsibility.d.ts +23 -0
  305. package/dist/runtime/analysis/rules/warnings/w103-overloaded-responsibility.js +91 -0
  306. package/dist/runtime/analysis/rules/warnings/w104-generic-description.d.ts +53 -0
  307. package/dist/runtime/analysis/rules/warnings/w104-generic-description.js +108 -0
  308. package/dist/runtime/analysis/rules/warnings/w105-optional-as-required.d.ts +22 -0
  309. package/dist/runtime/analysis/rules/warnings/w105-optional-as-required.js +45 -0
  310. package/dist/runtime/analysis/rules/warnings/w106-broad-output-schema.d.ts +23 -0
  311. package/dist/runtime/analysis/rules/warnings/w106-broad-output-schema.js +37 -0
  312. package/dist/runtime/analysis/rules/warnings/w107-multiple-entry-points.d.ts +22 -0
  313. package/dist/runtime/analysis/rules/warnings/w107-multiple-entry-points.js +97 -0
  314. package/dist/runtime/analysis/rules/warnings/w108-hidden-side-effects.d.ts +23 -0
  315. package/dist/runtime/analysis/rules/warnings/w108-hidden-side-effects.js +94 -0
  316. package/dist/runtime/analysis/rules/warnings/w109-output-not-reusable.d.ts +22 -0
  317. package/dist/runtime/analysis/rules/warnings/w109-output-not-reusable.js +63 -0
  318. package/dist/runtime/analysis/rules/warnings/w110-weak-schema.d.ts +40 -0
  319. package/dist/runtime/analysis/rules/warnings/w110-weak-schema.js +32 -0
  320. package/dist/runtime/analysis/rules/warnings/w300-high-entropy-output.d.ts +39 -0
  321. package/dist/runtime/analysis/rules/warnings/w300-high-entropy-output.js +47 -0
  322. package/dist/runtime/analysis/rules/warnings/w301-unstable-defaults.d.ts +38 -0
  323. package/dist/runtime/analysis/rules/warnings/w301-unstable-defaults.js +36 -0
  324. package/dist/runtime/analysis/strict-mode.d.ts +21 -0
  325. package/dist/runtime/analysis/strict-mode.js +44 -0
  326. package/dist/runtime/analysis/types.d.ts +133 -0
  327. package/dist/runtime/analysis/types.js +6 -0
  328. package/dist/runtime/analysis/utils.d.ts +19 -0
  329. package/dist/runtime/analysis/utils.js +21 -0
  330. package/dist/runtime/dev/data-manager.d.ts +55 -0
  331. package/dist/runtime/dev/data-manager.js +87 -0
  332. package/dist/runtime/dev/event-mapper.d.ts +100 -0
  333. package/dist/runtime/dev/event-mapper.js +400 -0
  334. package/dist/runtime/dev/formatter.d.ts +94 -0
  335. package/dist/runtime/dev/formatter.js +236 -0
  336. package/dist/runtime/dev/index.d.ts +9 -0
  337. package/dist/runtime/dev/index.js +9 -0
  338. package/dist/runtime/dev/repl.d.ts +114 -0
  339. package/dist/runtime/dev/repl.js +310 -0
  340. package/dist/runtime/dev/session.d.ts +86 -0
  341. package/dist/runtime/dev/session.js +447 -0
  342. package/dist/runtime/dev/stack-trace.d.ts +77 -0
  343. package/dist/runtime/dev/stack-trace.js +286 -0
  344. package/dist/runtime/dev/types.d.ts +54 -0
  345. package/dist/runtime/dev/types.js +5 -0
  346. package/dist/runtime/llm/claude.d.ts +27 -0
  347. package/dist/runtime/llm/claude.js +150 -0
  348. package/dist/runtime/llm/factory.d.ts +30 -0
  349. package/dist/runtime/llm/factory.js +78 -0
  350. package/dist/runtime/llm/index.d.ts +10 -0
  351. package/dist/runtime/llm/index.js +10 -0
  352. package/dist/runtime/llm/ollama.d.ts +45 -0
  353. package/dist/runtime/llm/ollama.js +449 -0
  354. package/dist/runtime/llm/openai.d.ts +27 -0
  355. package/dist/runtime/llm/openai.js +170 -0
  356. package/dist/runtime/llm/provider.d.ts +32 -0
  357. package/dist/runtime/llm/provider.js +6 -0
  358. package/dist/runtime/llm/types.d.ts +55 -0
  359. package/dist/runtime/llm/types.js +6 -0
  360. package/dist/runtime/mcp/client/base.d.ts +40 -0
  361. package/dist/runtime/mcp/client/base.js +157 -0
  362. package/dist/runtime/mcp/client/manager.d.ts +91 -0
  363. package/dist/runtime/mcp/client/manager.js +248 -0
  364. package/dist/runtime/mcp/client/process.d.ts +31 -0
  365. package/dist/runtime/mcp/client/process.js +82 -0
  366. package/dist/runtime/mcp/connection.d.ts +63 -0
  367. package/dist/runtime/mcp/connection.js +449 -0
  368. package/dist/runtime/mcp/index.d.ts +9 -0
  369. package/dist/runtime/mcp/index.js +9 -0
  370. package/dist/runtime/mcp/list.d.ts +50 -0
  371. package/dist/runtime/mcp/list.js +65 -0
  372. package/dist/runtime/mcp/stdio-transport.d.ts +23 -0
  373. package/dist/runtime/mcp/stdio-transport.js +71 -0
  374. package/dist/runtime/mcp/types.d.ts +85 -0
  375. package/dist/runtime/mcp/types.js +6 -0
  376. package/dist/runtime/sandbox/executor.d.ts +102 -0
  377. package/dist/runtime/sandbox/executor.js +537 -0
  378. package/dist/runtime/sandbox/index.d.ts +9 -0
  379. package/dist/runtime/sandbox/index.js +9 -0
  380. package/dist/runtime/sandbox/io-monitor.d.ts +78 -0
  381. package/dist/runtime/sandbox/io-monitor.js +98 -0
  382. package/dist/runtime/sandbox/time-parser.d.ts +19 -0
  383. package/dist/runtime/sandbox/time-parser.js +67 -0
  384. package/dist/runtime/sandbox/types.d.ts +58 -0
  385. package/dist/runtime/sandbox/types.js +23 -0
  386. package/dist/runtime/test/behavior-observer.d.ts +61 -0
  387. package/dist/runtime/test/behavior-observer.js +140 -0
  388. package/dist/runtime/test/contract-loader.d.ts +41 -0
  389. package/dist/runtime/test/contract-loader.js +158 -0
  390. package/dist/runtime/test/contract-schema.d.ts +46 -0
  391. package/dist/runtime/test/contract-schema.js +107 -0
  392. package/dist/runtime/test/contract-types.d.ts +106 -0
  393. package/dist/runtime/test/contract-types.js +6 -0
  394. package/dist/runtime/test/dependency-tracker.d.ts +66 -0
  395. package/dist/runtime/test/dependency-tracker.js +80 -0
  396. package/dist/runtime/test/formatters.d.ts +18 -0
  397. package/dist/runtime/test/formatters.js +172 -0
  398. package/dist/runtime/test/index.d.ts +12 -0
  399. package/dist/runtime/test/index.js +13 -0
  400. package/dist/runtime/test/input-generator.d.ts +33 -0
  401. package/dist/runtime/test/input-generator.js +498 -0
  402. package/dist/runtime/test/mcp-root-detector.d.ts +31 -0
  403. package/dist/runtime/test/mcp-root-detector.js +105 -0
  404. package/dist/runtime/test/orchestrator.d.ts +131 -0
  405. package/dist/runtime/test/orchestrator.js +738 -0
  406. package/dist/runtime/test/output-validator.d.ts +44 -0
  407. package/dist/runtime/test/output-validator.js +262 -0
  408. package/dist/runtime/test/retry-tester.d.ts +44 -0
  409. package/dist/runtime/test/retry-tester.js +103 -0
  410. package/dist/runtime/test/runner.d.ts +28 -0
  411. package/dist/runtime/test/runner.js +55 -0
  412. package/dist/runtime/test/synthetic-input-generator.d.ts +11 -0
  413. package/dist/runtime/test/synthetic-input-generator.js +154 -0
  414. package/dist/runtime/test/test-runner.d.ts +28 -0
  415. package/dist/runtime/test/test-runner.js +55 -0
  416. package/dist/types/factories.d.ts +16 -0
  417. package/dist/types/factories.js +43 -0
  418. package/dist/types/ids.d.ts +16 -0
  419. package/dist/types/ids.js +2 -0
  420. package/dist/types/opaque.d.ts +4 -0
  421. package/dist/types/opaque.js +2 -0
  422. package/dist/utils/errors.d.ts +92 -0
  423. package/dist/utils/errors.js +97 -0
  424. package/dist/utils/gitignore.d.ts +11 -0
  425. package/dist/utils/gitignore.js +59 -0
  426. package/dist/utils/json-file-saver.d.ts +17 -0
  427. package/dist/utils/json-file-saver.js +81 -0
  428. package/dist/utils/json-formatter.d.ts +63 -0
  429. package/dist/utils/json-formatter.js +344 -0
  430. package/dist/utils/logger.d.ts +184 -0
  431. package/dist/utils/logger.js +330 -0
  432. package/dist/utils/package-manager.d.ts +30 -0
  433. package/dist/utils/package-manager.js +157 -0
  434. package/dist/utils/version-checker.d.ts +47 -0
  435. package/dist/utils/version-checker.js +167 -0
  436. package/dist/utils/version-display.d.ts +10 -0
  437. package/dist/utils/version-display.js +20 -0
  438. package/package.json +106 -0
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Contract schema validation using Zod.
3
+ * Provides runtime validation for tool contract YAML files.
4
+ */
5
+ import { z } from 'zod';
6
+ import type { ToolContract } from './contract-types.js';
7
+ /**
8
+ * Schema for contract test cases.
9
+ * Note: Inline import is intentional to avoid circular dependency with contract-types.
10
+ */
11
+ import type { ContractTest } from './contract-types.js';
12
+ /**
13
+ * Schema for tool unit contract.
14
+ */
15
+ export declare const ToolContractSchema: z.ZodObject<{
16
+ version: z.ZodLiteral<1>;
17
+ tool: z.ZodString;
18
+ contract: z.ZodObject<{
19
+ input_schema: z.ZodString;
20
+ output_schema: z.ZodString;
21
+ }, z.core.$strip>;
22
+ guarantees: z.ZodObject<{
23
+ deterministic: z.ZodOptional<z.ZodBoolean>;
24
+ side_effects: z.ZodOptional<z.ZodEnum<{
25
+ none: "none";
26
+ filesystem: "filesystem";
27
+ }>>;
28
+ max_output_size: z.ZodOptional<z.ZodString>;
29
+ max_execution_time: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>;
31
+ tests: z.ZodOptional<z.ZodArray<z.ZodType<ContractTest, unknown, z.core.$ZodTypeInternals<ContractTest, unknown>>>>;
32
+ }, z.core.$strict>;
33
+ /**
34
+ * Validate a contract object against the schema.
35
+ * @param data - Contract data to validate
36
+ * @returns Validated contract
37
+ * @throws {z.ZodError} If validation fails
38
+ */
39
+ export declare function validateContract(data: unknown): ToolContract;
40
+ /**
41
+ * Type guard to check if an object is a valid contract.
42
+ * @param data - Object to check
43
+ * @returns true if object is a valid contract
44
+ */
45
+ export declare function isContract(data: unknown): data is ToolContract;
46
+ //# sourceMappingURL=contract-schema.d.ts.map
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Contract schema validation using Zod.
3
+ * Provides runtime validation for tool contract YAML files.
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Schema for contract guarantees.
8
+ */
9
+ const ContractGuaranteesSchema = z.object({
10
+ deterministic: z.boolean().optional(),
11
+ side_effects: z.enum(['none', 'filesystem']).optional(),
12
+ max_output_size: z
13
+ .string()
14
+ .regex(/^\d+[kmgt]?b$/i, 'max_output_size must be in format: <number>[unit] (e.g., "100kb", "1mb", "2gb")')
15
+ .optional(),
16
+ max_execution_time: z
17
+ .string()
18
+ .regex(/^\d+[smhd]$/i, 'max_execution_time must be in format: <number><unit> (e.g., "30s", "5m", "2h")')
19
+ .optional(),
20
+ });
21
+ /**
22
+ * Schema for error expectation details.
23
+ */
24
+ const ErrorExpectationDetailsSchema = z
25
+ .record(z.string(), z.unknown())
26
+ .optional();
27
+ /**
28
+ * Schema for error expectation.
29
+ */
30
+ const ErrorExpectationSchema = z
31
+ .object({
32
+ code: z.string().optional(), // Made optional - match by type/details instead
33
+ type: z
34
+ .string()
35
+ .optional()
36
+ .refine(val => !val ||
37
+ [
38
+ 'input_validation',
39
+ 'output_validation',
40
+ 'execution_error',
41
+ 'output_explosion',
42
+ 'unbounded_execution',
43
+ 'side_effect',
44
+ ].includes(val), {
45
+ message: 'Error type must be one of: input_validation, output_validation, execution_error, output_explosion, unbounded_execution, side_effect',
46
+ }),
47
+ details: ErrorExpectationDetailsSchema,
48
+ })
49
+ .refine(data => data.code || data.type || data.details, {
50
+ message: 'Error expectation must specify at least one of: code, type, or details',
51
+ });
52
+ /**
53
+ * Schema for test expectation.
54
+ */
55
+ const TestExpectationSchema = z
56
+ .object({
57
+ success: z.boolean().optional(),
58
+ output_schema: z.string().optional(),
59
+ error: ErrorExpectationSchema.optional(),
60
+ })
61
+ .refine(data => !(data.success === true && data.error), {
62
+ message: 'Cannot specify both success=true and error expectation',
63
+ path: ['success'],
64
+ })
65
+ .refine(data => !(data.success === false && !data.error), {
66
+ message: 'If success=false, must specify error expectation',
67
+ path: ['success'],
68
+ });
69
+ const ContractTestSchema = z.object({
70
+ name: z.string().min(1, 'Test name is required'),
71
+ input: z.record(z.string(), z.unknown()),
72
+ expect: TestExpectationSchema.optional(),
73
+ env: z.record(z.string(), z.string()).optional(),
74
+ });
75
+ /**
76
+ * Schema for tool unit contract.
77
+ */
78
+ export const ToolContractSchema = z
79
+ .object({
80
+ version: z.literal(1),
81
+ tool: z.string().min(1, 'Tool name is required'),
82
+ contract: z.object({
83
+ input_schema: z.string().min(1, 'Input schema name is required'),
84
+ output_schema: z.string().min(1, 'Output schema name is required'),
85
+ }),
86
+ guarantees: ContractGuaranteesSchema,
87
+ tests: z.array(ContractTestSchema).optional(),
88
+ })
89
+ .strict();
90
+ /**
91
+ * Validate a contract object against the schema.
92
+ * @param data - Contract data to validate
93
+ * @returns Validated contract
94
+ * @throws {z.ZodError} If validation fails
95
+ */
96
+ export function validateContract(data) {
97
+ return ToolContractSchema.parse(data);
98
+ }
99
+ /**
100
+ * Type guard to check if an object is a valid contract.
101
+ * @param data - Object to check
102
+ * @returns true if object is a valid contract
103
+ */
104
+ export function isContract(data) {
105
+ return ToolContractSchema.safeParse(data).success;
106
+ }
107
+ //# sourceMappingURL=contract-schema.js.map
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Contract type definitions for tool unit contracts.
3
+ * These types represent the structure of tool contract YAML files.
4
+ */
5
+ /**
6
+ * Tool unit contract version.
7
+ * Currently only version 1 is supported.
8
+ */
9
+ export type ContractVersion = 1;
10
+ /**
11
+ * Guarantees that a tool must satisfy.
12
+ */
13
+ export interface ContractGuarantees {
14
+ /** Whether the tool produces deterministic output (same input → same output) */
15
+ deterministic?: boolean;
16
+ /** Side effects allowed: 'none' means no side effects, 'filesystem' allows temp dir writes */
17
+ side_effects?: 'none' | 'filesystem';
18
+ /** Maximum output size in bytes (e.g., '50kb', '1mb') */
19
+ max_output_size?: string;
20
+ /** Maximum execution time (e.g., '30s', '5m', '2h'). If not specified, uses global default timeout */
21
+ max_execution_time?: string;
22
+ }
23
+ /**
24
+ * Error expectation details for test cases.
25
+ */
26
+ export interface ErrorExpectationDetails {
27
+ /** Pydantic error type (e.g., 'missing_argument', 'string_type') */
28
+ error_type?: string;
29
+ /** Field name that caused the error */
30
+ field?: string;
31
+ /** Expected type/value */
32
+ expected?: string;
33
+ /** Actual type/value received */
34
+ received?: string;
35
+ /** Error message pattern to match */
36
+ message?: string;
37
+ /** Additional error details (flexible for different error types) */
38
+ [key: string]: unknown;
39
+ }
40
+ /**
41
+ * Error expectation for test cases.
42
+ */
43
+ export interface ErrorExpectation {
44
+ /** Error code (optional - for backward compatibility, but not required) */
45
+ code?: string;
46
+ /** Error category (e.g., 'input_validation', 'execution_error', 'output_validation', 'side_effect', 'output_explosion', 'unbounded_execution') */
47
+ type?: string;
48
+ /** Detailed error information */
49
+ details?: ErrorExpectationDetails;
50
+ }
51
+ /**
52
+ * Expected test outcome.
53
+ */
54
+ export interface TestExpectation {
55
+ /** Whether test should succeed (default: true if no error specified) */
56
+ success?: boolean;
57
+ /** Output schema name (optional, inherits from contract.output_schema) */
58
+ output_schema?: string;
59
+ /** Error expectation (if test is expected to fail) */
60
+ error?: ErrorExpectation;
61
+ }
62
+ /**
63
+ * Test case for a tool.
64
+ */
65
+ export interface ContractTest {
66
+ /** Test case name */
67
+ name: string;
68
+ /** Test input values */
69
+ input: Record<string, unknown>;
70
+ /** Expected test outcome */
71
+ expect?: TestExpectation;
72
+ /** Environment variables for this test (optional) */
73
+ env?: Record<string, string>;
74
+ }
75
+ /**
76
+ * Tool unit contract structure.
77
+ */
78
+ export interface ToolContract {
79
+ /** Contract version (must be 1 for v1.3.0) */
80
+ version: ContractVersion;
81
+ /** Tool name (must match MCP tool name) */
82
+ tool: string;
83
+ /** Contract specifications */
84
+ contract: {
85
+ /** Input schema name (references MCP tool's input schema) */
86
+ input_schema: string;
87
+ /** Output schema name (references MCP tool's output schema) */
88
+ output_schema: string;
89
+ };
90
+ /** Behavioral guarantees */
91
+ guarantees: ContractGuarantees;
92
+ /** Test cases */
93
+ tests?: ContractTest[];
94
+ }
95
+ /**
96
+ * Parsed contract file with metadata.
97
+ */
98
+ export interface ParsedContract extends ToolContract {
99
+ /** Path to the contract file */
100
+ filePath: string;
101
+ /** Directory containing the contract file */
102
+ directory: string;
103
+ /** Filename without extension */
104
+ toolName: string;
105
+ }
106
+ //# sourceMappingURL=contract-types.d.ts.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Contract type definitions for tool unit contracts.
3
+ * These types represent the structure of tool contract YAML files.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=contract-types.js.map
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Hidden dependency tracker.
3
+ * Tracks tool calls during execution to detect hidden dependencies.
4
+ */
5
+ /**
6
+ * Tool call record during execution.
7
+ */
8
+ export interface ToolCallRecord {
9
+ /** Tool name that was called */
10
+ toolName: string;
11
+ /** Timestamp */
12
+ timestamp: number;
13
+ /** Arguments passed */
14
+ arguments?: Record<string, unknown>;
15
+ }
16
+ /**
17
+ * Dependency tracking result.
18
+ */
19
+ export interface DependencyTrackingResult {
20
+ /** Whether hidden dependencies were detected */
21
+ detected: boolean;
22
+ /** List of tool calls that are not declared in contract */
23
+ hiddenDependencies: ToolCallRecord[];
24
+ /** List of declared dependencies that don't exist in the MCP server */
25
+ missingDependencies: string[];
26
+ /** Declared dependencies from contract */
27
+ declaredDependencies: string[];
28
+ }
29
+ /**
30
+ * Dependency tracker for monitoring tool calls.
31
+ * Note: This requires integration with MCP client to intercept tool calls.
32
+ * For v1.3.0, we'll track via a wrapper or client extension.
33
+ */
34
+ export declare class DependencyTracker {
35
+ private toolCalls;
36
+ private readonly declaredDependencies;
37
+ constructor(declaredDependencies?: string[]);
38
+ /**
39
+ * Record a tool call.
40
+ */
41
+ recordToolCall(toolName: string, arguments_?: Record<string, unknown>): void;
42
+ /**
43
+ * Get all tool calls.
44
+ */
45
+ getToolCalls(): readonly ToolCallRecord[];
46
+ /**
47
+ * Detect hidden dependencies (tool calls not declared in contract).
48
+ * Also validates that declared dependencies actually exist.
49
+ * @param availableTools - Set of available tool names from MCP server (optional, for validation)
50
+ */
51
+ detectHiddenDependencies(availableTools?: Set<string> | string[]): DependencyTrackingResult;
52
+ /**
53
+ * Clear all recorded tool calls.
54
+ */
55
+ clear(): void;
56
+ /**
57
+ * Get summary of dependencies.
58
+ */
59
+ getSummary(availableTools?: Set<string> | string[]): {
60
+ totalCalls: number;
61
+ uniqueTools: number;
62
+ hiddenDependencies: number;
63
+ missingDependencies: number;
64
+ };
65
+ }
66
+ //# sourceMappingURL=dependency-tracker.d.ts.map
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Hidden dependency tracker.
3
+ * Tracks tool calls during execution to detect hidden dependencies.
4
+ */
5
+ /**
6
+ * Dependency tracker for monitoring tool calls.
7
+ * Note: This requires integration with MCP client to intercept tool calls.
8
+ * For v1.3.0, we'll track via a wrapper or client extension.
9
+ */
10
+ export class DependencyTracker {
11
+ toolCalls = [];
12
+ declaredDependencies;
13
+ constructor(declaredDependencies = []) {
14
+ this.declaredDependencies = declaredDependencies;
15
+ }
16
+ /**
17
+ * Record a tool call.
18
+ */
19
+ recordToolCall(toolName, arguments_) {
20
+ this.toolCalls.push({
21
+ toolName,
22
+ timestamp: Date.now(),
23
+ arguments: arguments_,
24
+ });
25
+ }
26
+ /**
27
+ * Get all tool calls.
28
+ */
29
+ getToolCalls() {
30
+ return this.toolCalls;
31
+ }
32
+ /**
33
+ * Detect hidden dependencies (tool calls not declared in contract).
34
+ * Also validates that declared dependencies actually exist.
35
+ * @param availableTools - Set of available tool names from MCP server (optional, for validation)
36
+ */
37
+ detectHiddenDependencies(availableTools) {
38
+ // Check for hidden dependencies (tools called but not declared)
39
+ const hiddenDependencies = this.toolCalls.filter(call => !this.declaredDependencies.includes(call.toolName));
40
+ // Check for missing dependencies (declared but don't exist in MCP server)
41
+ const missingDependencies = [];
42
+ if (availableTools) {
43
+ const availableSet = Array.isArray(availableTools)
44
+ ? new Set(availableTools)
45
+ : availableTools;
46
+ for (const declaredDep of this.declaredDependencies) {
47
+ if (!availableSet.has(declaredDep)) {
48
+ missingDependencies.push(declaredDep);
49
+ }
50
+ }
51
+ }
52
+ const detected = hiddenDependencies.length > 0 || missingDependencies.length > 0;
53
+ return {
54
+ detected,
55
+ hiddenDependencies,
56
+ missingDependencies,
57
+ declaredDependencies: this.declaredDependencies,
58
+ };
59
+ }
60
+ /**
61
+ * Clear all recorded tool calls.
62
+ */
63
+ clear() {
64
+ this.toolCalls = [];
65
+ }
66
+ /**
67
+ * Get summary of dependencies.
68
+ */
69
+ getSummary(availableTools) {
70
+ const uniqueTools = new Set(this.toolCalls.map(c => c.toolName));
71
+ const result = this.detectHiddenDependencies(availableTools);
72
+ return {
73
+ totalCalls: this.toolCalls.length,
74
+ uniqueTools: uniqueTools.size,
75
+ hiddenDependencies: result.hiddenDependencies.length,
76
+ missingDependencies: result.missingDependencies.length,
77
+ };
78
+ }
79
+ }
80
+ //# sourceMappingURL=dependency-tracker.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Test result formatters.
3
+ * Formats test results for CLI and JSON output.
4
+ */
5
+ import type { TestOrchestratorResult } from './orchestrator.js';
6
+ /**
7
+ * Format test results for CI output (minimal).
8
+ */
9
+ export declare function formatCIResults(result: TestOrchestratorResult): void;
10
+ /**
11
+ * Format test results for CLI output.
12
+ */
13
+ export declare function formatCLIResults(result: TestOrchestratorResult): void;
14
+ /**
15
+ * Format test results as JSON.
16
+ */
17
+ export declare function formatJSONResults(result: TestOrchestratorResult): string;
18
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Test result formatters.
3
+ * Formats test results for CLI and JSON output.
4
+ */
5
+ import { log } from '../../utils/logger.js';
6
+ /**
7
+ * Format test results for CI output (minimal).
8
+ */
9
+ export function formatCIResults(result) {
10
+ const errors = result.diagnostics.filter(d => d.severity === 'error');
11
+ const warnings = result.diagnostics.filter(d => d.severity === 'warning');
12
+ // CI mode: minimal output, exit codes handled by caller
13
+ if (result.verdict === 'fail') {
14
+ console.log(`✗ Test failed: ${result.toolsFailed} tool(s) failed, ${errors.length} error(s), ${warnings.length} warning(s)`);
15
+ // Print errors only (no warnings in CI)
16
+ for (const error of errors) {
17
+ console.log(`${error.code}: ${error.message}`);
18
+ }
19
+ }
20
+ else {
21
+ console.log(`✓ Test passed: ${result.toolsTested} tool(s) tested, ${result.toolsPassed} passed`);
22
+ if (warnings.length > 0) {
23
+ console.log(` ${warnings.length} warning(s) (non-blocking)`);
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * Format test results for CLI output.
29
+ */
30
+ export function formatCLIResults(result) {
31
+ log.blank();
32
+ log.heading('Tool Validation Results');
33
+ log.blank();
34
+ // Overall verdict
35
+ if (result.verdict === 'pass') {
36
+ log.checkmark('All tools passed validation');
37
+ }
38
+ else if (result.verdict === 'pass-with-warnings') {
39
+ log.warn('Tools passed with warnings');
40
+ }
41
+ else {
42
+ log.xmark('Tool validation failed');
43
+ }
44
+ log.blank();
45
+ // Summary
46
+ log.heading('Summary:');
47
+ log.labelValue(' Tools tested:', String(result.toolsTested));
48
+ log.labelValue(' Tools passed:', String(result.toolsPassed));
49
+ log.labelValue(' Tools failed:', String(result.toolsFailed));
50
+ const errors = result.diagnostics.filter(d => d.severity === 'error');
51
+ const warnings = result.diagnostics.filter(d => d.severity === 'warning');
52
+ if (errors.length > 0) {
53
+ log.labelValue(' Errors:', String(errors.length));
54
+ }
55
+ if (warnings.length > 0) {
56
+ log.labelValue(' Warnings:', String(warnings.length));
57
+ }
58
+ log.blank();
59
+ // Tool results
60
+ if (result.toolResults.length > 0) {
61
+ log.heading('Tool Results:');
62
+ for (const toolResult of result.toolResults) {
63
+ log.blank();
64
+ const status = toolResult.passed ? log.tick() : log.cross();
65
+ log.plain(` ${status} ${log.styleText(toolResult.toolName, 'bold')}`);
66
+ // Summary
67
+ log.labelValue(' Executions:', `${toolResult.summary.successfulExecutions}/${toolResult.summary.totalExecutions} successful`);
68
+ if (toolResult.summary.testsPassed !== undefined &&
69
+ toolResult.summary.testsFailed !== undefined) {
70
+ const totalTests = toolResult.summary.testsPassed + toolResult.summary.testsFailed;
71
+ log.labelValue(' Tests:', `${toolResult.summary.testsPassed}/${totalTests} passed (expectations matched)`);
72
+ }
73
+ if (toolResult.summary.failedExecutions > 0) {
74
+ log.labelValue(' Failed:', String(toolResult.summary.failedExecutions));
75
+ }
76
+ if (toolResult.summary.timedOutExecutions > 0) {
77
+ log.labelValue(' Timed out:', String(toolResult.summary.timedOutExecutions));
78
+ }
79
+ // Diagnostics
80
+ if (toolResult.diagnostics.length > 0) {
81
+ const toolErrors = toolResult.diagnostics.filter(d => d.severity === 'error');
82
+ const toolWarnings = toolResult.diagnostics.filter(d => d.severity === 'warning');
83
+ if (toolErrors.length > 0) {
84
+ log.plain(' Errors:');
85
+ for (const error of toolErrors) {
86
+ log.error(` ${error.code}: ${error.message}`);
87
+ // Show test context if available
88
+ const context = error.context;
89
+ if (context?.testName) {
90
+ log.plain(` Test: ${context.testName}`);
91
+ }
92
+ if (context?.testInput &&
93
+ Object.keys(context.testInput).length > 0) {
94
+ const inputStr = JSON.stringify(context.testInput, null, 2)
95
+ .split('\n')
96
+ .map((line, idx) => (idx === 0 ? line : ` ${line}`))
97
+ .join('\n');
98
+ log.plain(` Input: ${inputStr}`);
99
+ }
100
+ if (context?.expectedOutputSchema) {
101
+ log.plain(` Expected output schema: ${context.expectedOutputSchema}`);
102
+ }
103
+ // Show parsed error details if available
104
+ if (context?.parsedError) {
105
+ const parsed = context.parsedError;
106
+ if (parsed.field) {
107
+ if (parsed.errorType === 'missing_argument') {
108
+ log.plain(` Field "${parsed.field}" is required but was not provided`);
109
+ }
110
+ else if (parsed.inputType) {
111
+ log.plain(` Field "${parsed.field}" received ${parsed.inputType}${parsed.inputValue && parsed.inputValue !== '{}' ? ` (${parsed.inputValue})` : ''}`);
112
+ }
113
+ }
114
+ }
115
+ if (error.suggestion) {
116
+ log.plain(` Suggestion: ${error.suggestion}`);
117
+ }
118
+ log.blank();
119
+ }
120
+ }
121
+ if (toolWarnings.length > 0) {
122
+ log.plain(' Warnings:');
123
+ for (const warning of toolWarnings) {
124
+ log.warn(` ${warning.code}: ${warning.message}`);
125
+ if (warning.suggestion) {
126
+ log.plain(` Suggestion: ${warning.suggestion}`);
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ log.blank();
134
+ }
135
+ /**
136
+ * Format test results as JSON.
137
+ */
138
+ export function formatJSONResults(result) {
139
+ const json = {
140
+ verdict: result.verdict,
141
+ summary: {
142
+ toolsTested: result.toolsTested,
143
+ toolsPassed: result.toolsPassed,
144
+ toolsFailed: result.toolsFailed,
145
+ errors: result.diagnostics.filter(d => d.severity === 'error').length,
146
+ warnings: result.diagnostics.filter(d => d.severity === 'warning').length,
147
+ },
148
+ diagnostics: result.diagnostics.map(d => ({
149
+ code: d.code,
150
+ severity: d.severity,
151
+ message: d.message,
152
+ tool: d.tool,
153
+ field: d.field,
154
+ suggestion: d.suggestion,
155
+ context: d.context,
156
+ })),
157
+ tools: result.toolResults.map(tr => ({
158
+ toolName: tr.toolName,
159
+ passed: tr.passed,
160
+ summary: tr.summary,
161
+ diagnostics: tr.diagnostics.map(d => ({
162
+ code: d.code,
163
+ severity: d.severity,
164
+ message: d.message,
165
+ suggestion: d.suggestion,
166
+ context: d.context,
167
+ })),
168
+ })),
169
+ };
170
+ return JSON.stringify(json, null, 2);
171
+ }
172
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Test execution engine exports.
3
+ * v1.3.0: Tool-level structural safety validation.
4
+ */
5
+ export * from './contract-types.js';
6
+ export * from './contract-schema.js';
7
+ export * from './contract-loader.js';
8
+ export * from './behavior-observer.js';
9
+ export * from './output-validator.js';
10
+ export * from './runner.js';
11
+ export * from './orchestrator.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Test execution engine exports.
3
+ * v1.3.0: Tool-level structural safety validation.
4
+ */
5
+ export * from './contract-types.js';
6
+ export * from './contract-schema.js';
7
+ export * from './contract-loader.js';
8
+ // Sandbox exports are now in @/runtime/sandbox
9
+ export * from './behavior-observer.js';
10
+ export * from './output-validator.js';
11
+ export * from './runner.js';
12
+ export * from './orchestrator.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Synthetic input generator.
3
+ * Generates test inputs from JSON Schema definitions.
4
+ */
5
+ /**
6
+ * JSON Schema field interface.
7
+ */
8
+ interface JSONSchemaField {
9
+ type?: string | string[];
10
+ description?: string;
11
+ required?: string[];
12
+ properties?: Record<string, JSONSchemaField>;
13
+ items?: JSONSchemaField | JSONSchemaField[];
14
+ $ref?: string;
15
+ enum?: unknown[];
16
+ pattern?: string;
17
+ example?: unknown;
18
+ examples?: unknown[];
19
+ nullable?: boolean;
20
+ default?: unknown;
21
+ minimum?: number;
22
+ maximum?: number;
23
+ }
24
+ type JSONSchema = JSONSchemaField | Record<string, unknown> | unknown;
25
+ /**
26
+ * Generate test inputs from a JSON Schema.
27
+ * Includes both predictable patterns and agent-like unpredictable variations.
28
+ * @param schema - JSON Schema definition
29
+ * @returns Array of generated input objects
30
+ */
31
+ export declare function generateInputsFromSchema(schema: JSONSchema): Array<Record<string, unknown>>;
32
+ export {};
33
+ //# sourceMappingURL=input-generator.d.ts.map