@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,39 @@
1
+ /**
2
+ * E500: Side Effect Detected
3
+ *
4
+ * Condition: Tool attempts filesystem writes to project files (not temp directory)
5
+ *
6
+ * Why this is fatal:
7
+ * - Tools should not mutate project state
8
+ * - Breaks isolation and testability
9
+ * - Makes behavior unpredictable
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
13
+ /**
14
+ * Context for behavioral validation results.
15
+ * This extends the static analysis context with runtime observation data.
16
+ */
17
+ export interface BehavioralContext {
18
+ /** Tool name */
19
+ toolName: string;
20
+ /** Side effects detected */
21
+ sideEffects: Array<{
22
+ operation: string;
23
+ path: string;
24
+ }>;
25
+ }
26
+ declare class E500SideEffectDetectedRule extends BaseRule {
27
+ readonly id: "E500";
28
+ readonly severity: "error";
29
+ readonly ruleName = "Side Effect Detected";
30
+ readonly description = "Tool attempted filesystem write to project files. Tools should not mutate project state.";
31
+ check(_ctx: AnalysisContext): Diagnostic[];
32
+ /**
33
+ * Check with behavioral context (called from test orchestrator).
34
+ */
35
+ checkWithBehavioralContext(behavioralCtx: BehavioralContext): Diagnostic[];
36
+ }
37
+ export declare const E500SideEffectDetected: E500SideEffectDetectedRule;
38
+ export {};
39
+ //# sourceMappingURL=e500-side-effect-detected.d.ts.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * E500: Side Effect Detected
3
+ *
4
+ * Condition: Tool attempts filesystem writes to project files (not temp directory)
5
+ *
6
+ * Why this is fatal:
7
+ * - Tools should not mutate project state
8
+ * - Breaks isolation and testability
9
+ * - Makes behavior unpredictable
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import { ERROR_CODES } from '../error-codes.js';
13
+ class E500SideEffectDetectedRule extends BaseRule {
14
+ id = ERROR_CODES.E500;
15
+ severity = 'error';
16
+ ruleName = 'Side Effect Detected';
17
+ description = 'Tool attempted filesystem write to project files. Tools should not mutate project state.';
18
+ check(_ctx) {
19
+ const diagnostics = [];
20
+ // This rule requires behavioral context (from runtime testing)
21
+ // It will be called with behavioral data from the test orchestrator
22
+ // For now, return empty - actual checking happens in test orchestrator
23
+ return diagnostics;
24
+ }
25
+ /**
26
+ * Check with behavioral context (called from test orchestrator).
27
+ */
28
+ checkWithBehavioralContext(behavioralCtx) {
29
+ const diagnostics = [];
30
+ if (behavioralCtx.sideEffects.length > 0) {
31
+ const sideEffectList = behavioralCtx.sideEffects
32
+ .map(se => ` - ${se.operation}: ${se.path}`)
33
+ .join('\n');
34
+ diagnostics.push(this.createDiagnostic(`Tool "${behavioralCtx.toolName}" attempted filesystem operations on project files:\n${sideEffectList}`, behavioralCtx.toolName, undefined, 'Remove filesystem writes or write only to temp directory. Tools should not mutate project state.'));
35
+ }
36
+ return diagnostics;
37
+ }
38
+ }
39
+ export const E500SideEffectDetected = new E500SideEffectDetectedRule();
40
+ //# sourceMappingURL=e500-side-effect-detected.js.map
@@ -0,0 +1,47 @@
1
+ /**
2
+ * E501: Hidden Dependency
3
+ *
4
+ * Condition: Tool calls other tools during execution without declaring them in contract
5
+ *
6
+ * Why this is fatal:
7
+ * - Breaks isolation assumption
8
+ * - Creates hidden coupling
9
+ * - Makes tool behavior unpredictable
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
13
+ /**
14
+ * Context for hidden dependency detection.
15
+ */
16
+ export interface HiddenDependencyContext {
17
+ /** Tool name */
18
+ toolName: string;
19
+ /** List of tool calls that are not declared */
20
+ hiddenDependencies: Array<{
21
+ toolName: string;
22
+ timestamp: number;
23
+ }>;
24
+ /** List of declared dependencies that don't exist in the MCP server */
25
+ missingDependencies?: string[];
26
+ /**
27
+ * Declared dependencies from contract.
28
+ * @todo Reserved for future validation/consumer use.
29
+ * Currently unused by checkWithBehavioralContext() but retained for potential
30
+ * future enhancements such as dependency validation or consumer tool analysis.
31
+ */
32
+ declaredDependencies: string[];
33
+ }
34
+ declare class E501HiddenDependencyRule extends BaseRule {
35
+ readonly id: "E501";
36
+ readonly severity: "error";
37
+ readonly ruleName = "Hidden Dependency";
38
+ readonly description = "Tool calls other tools during execution without declaring them in contract. This breaks isolation.";
39
+ check(_ctx: AnalysisContext): Diagnostic[];
40
+ /**
41
+ * Check with behavioral context (called from test orchestrator).
42
+ */
43
+ checkWithBehavioralContext(behavioralCtx: HiddenDependencyContext): Diagnostic[];
44
+ }
45
+ export declare const E501HiddenDependency: E501HiddenDependencyRule;
46
+ export {};
47
+ //# sourceMappingURL=e501-hidden-dependency.d.ts.map
@@ -0,0 +1,46 @@
1
+ /**
2
+ * E501: Hidden Dependency
3
+ *
4
+ * Condition: Tool calls other tools during execution without declaring them in contract
5
+ *
6
+ * Why this is fatal:
7
+ * - Breaks isolation assumption
8
+ * - Creates hidden coupling
9
+ * - Makes tool behavior unpredictable
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import { ERROR_CODES } from '../error-codes.js';
13
+ class E501HiddenDependencyRule extends BaseRule {
14
+ id = ERROR_CODES.E501;
15
+ severity = 'error';
16
+ ruleName = 'Hidden Dependency';
17
+ description = 'Tool calls other tools during execution without declaring them in contract. This breaks isolation.';
18
+ check(_ctx) {
19
+ // This rule requires behavioral context
20
+ return [];
21
+ }
22
+ /**
23
+ * Check with behavioral context (called from test orchestrator).
24
+ */
25
+ checkWithBehavioralContext(behavioralCtx) {
26
+ const diagnostics = [];
27
+ // Check for hidden dependencies (tools called but not declared)
28
+ if (behavioralCtx.hiddenDependencies.length > 0) {
29
+ const dependencyList = behavioralCtx.hiddenDependencies
30
+ .map(dep => ` - ${dep.toolName}`)
31
+ .join('\n');
32
+ diagnostics.push(this.createDiagnostic(`Tool "${behavioralCtx.toolName}" called other tools without declaring them:\n${dependencyList}`, behavioralCtx.toolName, undefined, `Declare dependencies in contract (guarantees.dependencies: [${behavioralCtx.hiddenDependencies.map(d => `"${d.toolName}"`).join(', ')}]) or remove the tool calls.`));
33
+ }
34
+ // Check for missing dependencies (declared but don't exist in MCP server)
35
+ if (behavioralCtx.missingDependencies &&
36
+ behavioralCtx.missingDependencies.length > 0) {
37
+ const missingList = behavioralCtx.missingDependencies
38
+ .map(dep => ` - ${dep}`)
39
+ .join('\n');
40
+ diagnostics.push(this.createDiagnostic(`Tool "${behavioralCtx.toolName}" declares dependencies that don't exist in the MCP server:\n${missingList}`, behavioralCtx.toolName, undefined, `Remove non-existent dependencies from contract (guarantees.dependencies) or ensure these tools are implemented: [${behavioralCtx.missingDependencies.map(d => `"${d}"`).join(', ')}]`));
41
+ }
42
+ return diagnostics;
43
+ }
44
+ }
45
+ export const E501HiddenDependency = new E501HiddenDependencyRule();
46
+ //# sourceMappingURL=e501-hidden-dependency.js.map
@@ -0,0 +1,65 @@
1
+ /**
2
+ * E600: Unexpected Test Result
3
+ *
4
+ * Condition: Test's actual outcome doesn't match its expectation
5
+ *
6
+ * Why this is fatal:
7
+ * - Test contract is inaccurate
8
+ * - Tool behavior doesn't match declared guarantees
9
+ * - Can cause false positives/negatives in validation
10
+ * - Indicates mismatch between expectations and reality
11
+ */
12
+ import { BaseRule } from '../base.js';
13
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
14
+ /**
15
+ * Context for unexpected test result detection.
16
+ */
17
+ export interface UnexpectedTestResultContext {
18
+ /** Tool name */
19
+ toolName: string;
20
+ /** Test name */
21
+ testName: string;
22
+ /** Test input */
23
+ testInput?: Record<string, unknown>;
24
+ /** Expected outcome (success/error/timeout) */
25
+ expectedOutcome: 'success' | 'error' | 'timeout';
26
+ /** Actual outcome (success/error/timeout) */
27
+ actualOutcome: 'success' | 'error' | 'timeout';
28
+ /** Expected error code (if expecting error) */
29
+ expectedErrorCode?: string;
30
+ /** Expected error type (if expecting error) */
31
+ expectedErrorType?: string;
32
+ /** Actual error code (if actual outcome is error) */
33
+ actualErrorCode?: string;
34
+ /** Actual error type (if actual outcome is error) */
35
+ actualErrorType?: string;
36
+ /** Expected error details (if expecting specific error) */
37
+ expectedError?: {
38
+ type?: string;
39
+ details?: Record<string, unknown>;
40
+ };
41
+ /** Actual error details (if actual outcome is error) */
42
+ actualError?: {
43
+ code?: string;
44
+ type?: string;
45
+ message?: string;
46
+ };
47
+ }
48
+ declare class E600UnexpectedTestResultRule extends BaseRule {
49
+ readonly id: "E600";
50
+ readonly severity: "error";
51
+ readonly ruleName = "Unexpected Test Result";
52
+ readonly description = "Test's actual outcome doesn't match its expectation. Tool behavior doesn't match declared guarantees.";
53
+ check(_ctx: AnalysisContext): Diagnostic[];
54
+ /**
55
+ * Determine if a diagnostic should be created based on behavioral context.
56
+ */
57
+ private shouldCreateDiagnostic;
58
+ /**
59
+ * Check with behavioral context (called from test orchestrator).
60
+ */
61
+ checkWithBehavioralContext(behavioralCtx: UnexpectedTestResultContext): Diagnostic[];
62
+ }
63
+ export declare const E600UnexpectedTestResult: E600UnexpectedTestResultRule;
64
+ export {};
65
+ //# sourceMappingURL=e600-unexpected-test-result.d.ts.map
@@ -0,0 +1,109 @@
1
+ /**
2
+ * E600: Unexpected Test Result
3
+ *
4
+ * Condition: Test's actual outcome doesn't match its expectation
5
+ *
6
+ * Why this is fatal:
7
+ * - Test contract is inaccurate
8
+ * - Tool behavior doesn't match declared guarantees
9
+ * - Can cause false positives/negatives in validation
10
+ * - Indicates mismatch between expectations and reality
11
+ */
12
+ import { BaseRule } from '../base.js';
13
+ import { ERROR_CODES } from '../error-codes.js';
14
+ class E600UnexpectedTestResultRule extends BaseRule {
15
+ id = ERROR_CODES.E600;
16
+ severity = 'error';
17
+ ruleName = 'Unexpected Test Result';
18
+ description = "Test's actual outcome doesn't match its expectation. Tool behavior doesn't match declared guarantees.";
19
+ check(_ctx) {
20
+ // This rule requires behavioral context
21
+ return [];
22
+ }
23
+ /**
24
+ * Determine if a diagnostic should be created based on behavioral context.
25
+ */
26
+ shouldCreateDiagnostic(behavioralCtx) {
27
+ // If outcomes don't match, create diagnostic
28
+ if (behavioralCtx.expectedOutcome !== behavioralCtx.actualOutcome) {
29
+ return true;
30
+ }
31
+ // Outcomes match - check if error details also match (for error cases)
32
+ if (behavioralCtx.expectedOutcome === 'error') {
33
+ const expectedType = behavioralCtx.expectedErrorType?.toLowerCase();
34
+ const actualType = behavioralCtx.actualErrorType?.toLowerCase();
35
+ if (expectedType && actualType && expectedType !== actualType) {
36
+ return true; // Type mismatch
37
+ }
38
+ if (expectedType && !actualType) {
39
+ return true; // Expected type but no actual type
40
+ }
41
+ const expectedCode = behavioralCtx.expectedErrorCode;
42
+ const actualCode = behavioralCtx.actualErrorCode;
43
+ if (expectedCode && actualCode && expectedCode !== actualCode) {
44
+ return true; // Code mismatch
45
+ }
46
+ }
47
+ return false; // Everything matches
48
+ }
49
+ /**
50
+ * Check with behavioral context (called from test orchestrator).
51
+ */
52
+ checkWithBehavioralContext(behavioralCtx) {
53
+ const diagnostics = [];
54
+ if (!this.shouldCreateDiagnostic(behavioralCtx)) {
55
+ return diagnostics;
56
+ }
57
+ // If we reach here, there's a mismatch - create diagnostic
58
+ let message = `Test "${behavioralCtx.testName}" in tool "${behavioralCtx.toolName}" expected `;
59
+ // Build expected description
60
+ if (behavioralCtx.expectedOutcome === 'success') {
61
+ message += 'success but got ';
62
+ if (behavioralCtx.actualOutcome === 'error') {
63
+ message += `error (${behavioralCtx.actualErrorCode || behavioralCtx.actualErrorType || 'unknown error'})`;
64
+ }
65
+ else if (behavioralCtx.actualOutcome === 'timeout') {
66
+ message += 'timeout';
67
+ }
68
+ else {
69
+ message += behavioralCtx.actualOutcome;
70
+ }
71
+ }
72
+ else if (behavioralCtx.expectedOutcome === 'error') {
73
+ message += `error`;
74
+ if (behavioralCtx.expectedErrorType) {
75
+ message += ` of type "${behavioralCtx.expectedErrorType}"`;
76
+ }
77
+ if (behavioralCtx.expectedErrorCode) {
78
+ message += ` (code: ${behavioralCtx.expectedErrorCode})`;
79
+ }
80
+ message += ' but got ';
81
+ if (behavioralCtx.actualOutcome === 'success') {
82
+ message += 'success';
83
+ }
84
+ else {
85
+ message += `${behavioralCtx.actualOutcome} (${behavioralCtx.actualErrorCode || behavioralCtx.actualErrorType || 'unknown error'})`;
86
+ }
87
+ if (behavioralCtx.actualErrorType &&
88
+ behavioralCtx.expectedErrorType &&
89
+ behavioralCtx.actualErrorType.toLowerCase() !==
90
+ behavioralCtx.expectedErrorType.toLowerCase()) {
91
+ message += ' with different type';
92
+ }
93
+ }
94
+ else {
95
+ message += `${behavioralCtx.expectedOutcome} but got ${behavioralCtx.actualOutcome}`;
96
+ }
97
+ diagnostics.push(this.createDiagnostic(message, behavioralCtx.toolName, undefined, 'Update test expectation to match actual tool behavior, or fix tool implementation to match declared guarantees. Ensure test expectations accurately reflect tool behavior.', {
98
+ testName: behavioralCtx.testName,
99
+ testInput: behavioralCtx.testInput,
100
+ expectedOutcome: behavioralCtx.expectedOutcome,
101
+ actualOutcome: behavioralCtx.actualOutcome,
102
+ expectedError: behavioralCtx.expectedError,
103
+ actualError: behavioralCtx.actualError,
104
+ }));
105
+ return diagnostics;
106
+ }
107
+ }
108
+ export const E600UnexpectedTestResult = new E600UnexpectedTestResultRule();
109
+ //# sourceMappingURL=e600-unexpected-test-result.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Rule registry.
3
+ * Exports all analysis rules.
4
+ */
5
+ import type { Rule } from './base.js';
6
+ /**
7
+ * All registered rules.
8
+ */
9
+ export declare const ALL_RULES: Rule[];
10
+ /**
11
+ * Get all error rules.
12
+ */
13
+ export declare function getErrorRules(): Rule[];
14
+ /**
15
+ * Get all warning rules.
16
+ */
17
+ export declare function getWarningRules(): Rule[];
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Rule registry.
3
+ * Exports all analysis rules.
4
+ */
5
+ // Error rules (will be imported as we create them)
6
+ import { E000ToolNotFound } from './errors/e000-tool-not-found.js';
7
+ import { E100MissingOutputSchema } from './errors/e100-missing-output-schema.js';
8
+ import { E102UnderspecifiedRequiredInput } from './errors/e102-underspecified-input.js';
9
+ import { E103TypeMismatch } from './errors/e103-type-mismatch.js';
10
+ import { E105FreeTextPropagation } from './errors/e105-free-text-propagation.js';
11
+ import { E110ToolAmbiguity } from './errors/e110-tool-ambiguity.js';
12
+ import { E104ParamNotInDescription } from './errors/e104-param-not-in-description.js';
13
+ import { E106OutputNotGuaranteed } from './errors/e106-output-not-guaranteed.js';
14
+ import { E107CircularDependency } from './errors/e107-circular-dependency.js';
15
+ import { E108ImplicitUserInput } from './errors/e108-implicit-user-input.js';
16
+ import { E109NonSerializable } from './errors/e109-non-serializable.js';
17
+ import { E101MissingToolDescription } from './errors/e101-missing-tool-description.js';
18
+ import { E500SideEffectDetected } from './errors/e500-side-effect-detected.js';
19
+ import { E301OutputExplosion } from './errors/e301-output-explosion.js';
20
+ import { E501HiddenDependency } from './errors/e501-hidden-dependency.js';
21
+ import { E403UnboundedExecution } from './errors/e403-unbounded-execution.js';
22
+ import { E300OutputValidationFailed } from './errors/e300-output-validation-failed.js';
23
+ import { E200InputValidationFailed } from './errors/e200-input-validation-failed.js';
24
+ import { E400ToolExecutionFailed } from './errors/e400-tool-execution-failed.js';
25
+ import { E600UnexpectedTestResult } from './errors/e600-unexpected-test-result.js';
26
+ // Warning rules
27
+ import { W100ImplicitDependency } from './warnings/w100-implicit-dependency.js';
28
+ import { W101FreeTextWithoutNormalization } from './warnings/w101-free-text-without-normalization.js';
29
+ import { W102MissingExamples } from './warnings/w102-missing-examples.js';
30
+ import { W103OverloadedResponsibility } from './warnings/w103-overloaded-responsibility.js';
31
+ import { W104GenericDescription } from './warnings/w104-generic-description.js';
32
+ import { W105OptionalAsRequired } from './warnings/w105-optional-as-required.js';
33
+ import { W106BroadOutputSchema } from './warnings/w106-broad-output-schema.js';
34
+ import { W107MultipleEntryPoints } from './warnings/w107-multiple-entry-points.js';
35
+ import { W108HiddenSideEffects } from './warnings/w108-hidden-side-effects.js';
36
+ import { W109OutputNotReusable } from './warnings/w109-output-not-reusable.js';
37
+ import { W110WeakSchema } from './warnings/w110-weak-schema.js';
38
+ import { W300HighEntropyOutput } from './warnings/w300-high-entropy-output.js';
39
+ import { W301UnstableDefaults } from './warnings/w301-unstable-defaults.js';
40
+ /**
41
+ * All registered rules.
42
+ */
43
+ export const ALL_RULES = [
44
+ // Error rules (blocking)
45
+ E000ToolNotFound,
46
+ E100MissingOutputSchema,
47
+ E102UnderspecifiedRequiredInput,
48
+ E103TypeMismatch,
49
+ E105FreeTextPropagation,
50
+ E110ToolAmbiguity,
51
+ E104ParamNotInDescription,
52
+ E106OutputNotGuaranteed,
53
+ E107CircularDependency,
54
+ E108ImplicitUserInput,
55
+ E109NonSerializable,
56
+ E101MissingToolDescription,
57
+ // Behavioral error rules (v1.3.0)
58
+ E500SideEffectDetected,
59
+ E301OutputExplosion,
60
+ E501HiddenDependency,
61
+ E403UnboundedExecution,
62
+ E300OutputValidationFailed,
63
+ E200InputValidationFailed,
64
+ E400ToolExecutionFailed,
65
+ E600UnexpectedTestResult,
66
+ // Warning rules (non-blocking)
67
+ W100ImplicitDependency,
68
+ W101FreeTextWithoutNormalization,
69
+ W102MissingExamples,
70
+ W103OverloadedResponsibility,
71
+ W104GenericDescription,
72
+ W105OptionalAsRequired,
73
+ W106BroadOutputSchema,
74
+ W107MultipleEntryPoints,
75
+ W108HiddenSideEffects,
76
+ W109OutputNotReusable,
77
+ // Behavioral warning rules (v1.3.0)
78
+ W110WeakSchema,
79
+ W300HighEntropyOutput,
80
+ W301UnstableDefaults,
81
+ ];
82
+ /**
83
+ * Get all error rules.
84
+ */
85
+ export function getErrorRules() {
86
+ return ALL_RULES.filter(rule => rule.severity === 'error');
87
+ }
88
+ /**
89
+ * Get all warning rules.
90
+ */
91
+ export function getWarningRules() {
92
+ return ALL_RULES.filter(rule => rule.severity === 'warning');
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * W001: Implicit Tool Dependency
3
+ *
4
+ * Condition:
5
+ * - High confidence dependency inferred
6
+ * - Not stated explicitly in description
7
+ *
8
+ * Why:
9
+ * - LLM may not chain tools reliably
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
13
+ declare class W001ImplicitDependencyRule extends BaseRule {
14
+ readonly id = "W001";
15
+ readonly severity: "warning";
16
+ readonly ruleName = "Implicit Tool Dependency";
17
+ readonly description = "Tool appears to depend on another tool, but the dependency is implicit.";
18
+ check(ctx: AnalysisContext): Diagnostic[];
19
+ }
20
+ export declare const W001ImplicitDependency: W001ImplicitDependencyRule;
21
+ export {};
22
+ //# sourceMappingURL=w001-implicit-dependency.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * W001: Implicit Tool Dependency
3
+ *
4
+ * Condition:
5
+ * - High confidence dependency inferred
6
+ * - Not stated explicitly in description
7
+ *
8
+ * Why:
9
+ * - LLM may not chain tools reliably
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ class W001ImplicitDependencyRule extends BaseRule {
13
+ id = 'W001';
14
+ severity = 'warning';
15
+ ruleName = 'Implicit Tool Dependency';
16
+ description = 'Tool appears to depend on another tool, but the dependency is implicit.';
17
+ check(ctx) {
18
+ const diagnostics = [];
19
+ // Check medium to high confidence dependencies (0.6-0.8)
20
+ const implicitDeps = ctx.dependencies.filter(d => d.confidence >= 0.6 && d.confidence < 0.8);
21
+ for (const dep of implicitDeps) {
22
+ // Find the toTool to check its description
23
+ const toTool = ctx.indexes.toolIndex.get(dep.toTool.toLowerCase());
24
+ if (!toTool) {
25
+ continue;
26
+ }
27
+ const description = toTool.description || '';
28
+ // Check if fromTool is mentioned in description
29
+ const fromToolNameLower = dep.fromTool.toLowerCase();
30
+ const descLower = description.toLowerCase();
31
+ if (!descLower.includes(fromToolNameLower)) {
32
+ diagnostics.push(this.createDiagnostic(`Tool "${dep.toTool}" appears to depend on "${dep.fromTool}", but the dependency is implicit.`, dep.toTool, dep.toField, `Mention "${dep.fromTool}" in the description of "${dep.toTool}" to make the dependency explicit.`));
33
+ }
34
+ }
35
+ return diagnostics;
36
+ }
37
+ }
38
+ export const W001ImplicitDependency = new W001ImplicitDependencyRule();
39
+ //# sourceMappingURL=w001-implicit-dependency.js.map
@@ -0,0 +1,24 @@
1
+ /**
2
+ * W002: Free-Text Output Without Normalization
3
+ *
4
+ * Condition:
5
+ * - Output is string
6
+ * - Not constrained or normalized
7
+ * - Even if not chained
8
+ *
9
+ * Why:
10
+ * - Hard to reuse
11
+ * - Hard to evolve
12
+ */
13
+ import { BaseRule } from '../base.js';
14
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
15
+ declare class W002FreeTextWithoutNormalizationRule extends BaseRule {
16
+ readonly id = "W002";
17
+ readonly severity: "warning";
18
+ readonly ruleName = "Free-Text Output Without Normalization";
19
+ readonly description = "Tool returns unconstrained free text. Consider normalizing output.";
20
+ check(ctx: AnalysisContext): Diagnostic[];
21
+ }
22
+ export declare const W002FreeTextWithoutNormalization: W002FreeTextWithoutNormalizationRule;
23
+ export {};
24
+ //# sourceMappingURL=w002-free-text-without-normalization.d.ts.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * W002: Free-Text Output Without Normalization
3
+ *
4
+ * Condition:
5
+ * - Output is string
6
+ * - Not constrained or normalized
7
+ * - Even if not chained
8
+ *
9
+ * Why:
10
+ * - Hard to reuse
11
+ * - Hard to evolve
12
+ */
13
+ import { BaseRule } from '../base.js';
14
+ class W002FreeTextWithoutNormalizationRule extends BaseRule {
15
+ id = 'W002';
16
+ severity = 'warning';
17
+ ruleName = 'Free-Text Output Without Normalization';
18
+ description = 'Tool returns unconstrained free text. Consider normalizing output.';
19
+ check(ctx) {
20
+ const diagnostics = [];
21
+ for (const tool of ctx.tools) {
22
+ for (const output of tool.outputs) {
23
+ // Check if output is unconstrained string
24
+ if (output.type !== 'string') {
25
+ continue;
26
+ }
27
+ const hasEnum = Boolean(output.enum && output.enum.length > 0);
28
+ const hasPattern = Boolean(output.pattern);
29
+ const hasDescription = Boolean(output.description && output.description.trim());
30
+ // If it's a string with no constraints, it's unconstrained free text
31
+ if (!hasEnum && !hasPattern && !hasDescription) {
32
+ diagnostics.push(this.createDiagnostic(`Tool "${tool.name}" returns unconstrained free text (field: "${output.name}"). Consider normalizing output.`, tool.name, output.name, `Add constraints to the output: enum values, regex pattern, or a clear description of the expected format.`));
33
+ }
34
+ }
35
+ }
36
+ return diagnostics;
37
+ }
38
+ }
39
+ export const W002FreeTextWithoutNormalization = new W002FreeTextWithoutNormalizationRule();
40
+ //# sourceMappingURL=w002-free-text-without-normalization.js.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * W003: Missing Examples for User-Facing Inputs
3
+ *
4
+ * Condition:
5
+ * - Tool takes user-provided input
6
+ * - No examples provided
7
+ *
8
+ * Why:
9
+ * - LLM guessing increases error rate
10
+ */
11
+ import { BaseRule } from '../base.js';
12
+ import type { AnalysisContext, Diagnostic } from '../../types.js';
13
+ declare class W003MissingExamplesRule extends BaseRule {
14
+ readonly id = "W003";
15
+ readonly severity: "warning";
16
+ readonly ruleName = "Missing Examples for User-Facing Inputs";
17
+ readonly description = "Tool accepts user-provided input but has no examples. LLM accuracy may be reduced.";
18
+ check(ctx: AnalysisContext): Diagnostic[];
19
+ }
20
+ export declare const W003MissingExamples: W003MissingExamplesRule;
21
+ export {};
22
+ //# sourceMappingURL=w003-missing-examples.d.ts.map