@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,447 @@
1
+ /**
2
+ * Dev Mode Session.
3
+ * Orchestrates LLM-MCP interactions with event emission.
4
+ */
5
+ import { SessionLifecycleEventType, LLMContextEventType, LLMProposalEventType, ValidationEventType, } from '../../events/event-type.js';
6
+ import { makePromptID } from '../../types/factories.js';
7
+ import { v4 as uuidv4 } from 'uuid';
8
+ import { logger } from '../../utils/logger.js';
9
+ import { DataManager } from './data-manager.js';
10
+ /**
11
+ * Dev Mode Session implementation.
12
+ */
13
+ export class DevSession {
14
+ config;
15
+ state;
16
+ availableTools = [];
17
+ currentPromptId = null;
18
+ dataManager;
19
+ MAX_HISTORY_LENGTH = 50; // Max messages in LLM context
20
+ MAX_MESSAGE_SIZE = 10 * 1024; // 10KB per message
21
+ constructor(config) {
22
+ this.config = config;
23
+ this.state = {
24
+ conversationHistory: [],
25
+ toolCalls: [],
26
+ totalToolCalls: 0,
27
+ totalLLMCalls: 0,
28
+ startTime: new Date(),
29
+ };
30
+ this.dataManager = new DataManager(config.projectRoot);
31
+ }
32
+ /**
33
+ * Initialize the session.
34
+ * Loads available tools and emits session started event.
35
+ */
36
+ async initialize() {
37
+ // Emit session started event
38
+ await this.config.eventEmitter.emit(SessionLifecycleEventType.SESSION_STARTED, {
39
+ project_name: this.config.config.project_name,
40
+ syrin_version: this.config.config.version,
41
+ });
42
+ // Load available tools from MCP server
43
+ try {
44
+ const tools = await this.config.mcpClientManager.getAvailableTools();
45
+ this.availableTools = tools.map(tool => ({
46
+ name: tool.name,
47
+ description: tool.description,
48
+ inputSchema: tool.inputSchema,
49
+ }));
50
+ // Emit tool registry loaded event
51
+ // Note: This would be TOOL_REGISTRY_LOADED, but we'll use what's available
52
+ }
53
+ catch (error) {
54
+ const errorMessage = error instanceof Error ? error.message : String(error);
55
+ throw new Error(`Failed to load tools: ${errorMessage}`);
56
+ }
57
+ }
58
+ /**
59
+ * Add user message to conversation history without processing.
60
+ * Useful for special commands that don't need LLM processing.
61
+ */
62
+ addUserMessageToHistory(userInput) {
63
+ this.state.conversationHistory.push({
64
+ role: 'user',
65
+ content: userInput,
66
+ });
67
+ }
68
+ /**
69
+ * Process user input.
70
+ * This is the main entry point for handling user messages.
71
+ */
72
+ async processUserInput(userInput) {
73
+ // Add user message to conversation history
74
+ this.addUserMessageToHistory(userInput);
75
+ // Process the conversation (may involve multiple LLM calls if tools are used)
76
+ await this.processConversation();
77
+ }
78
+ /**
79
+ * Process the conversation.
80
+ * Handles LLM calls and tool execution in a loop until final response.
81
+ */
82
+ async processConversation() {
83
+ const maxIterations = 10; // Prevent infinite loops
84
+ let iteration = 0;
85
+ while (iteration < maxIterations) {
86
+ iteration++;
87
+ this.state.totalLLMCalls++;
88
+ // Generate prompt ID for this LLM call
89
+ const promptId = makePromptID(uuidv4());
90
+ this.currentPromptId = promptId;
91
+ // Build LLM context with tools
92
+ const llmRequest = this.buildLLMContext();
93
+ // Emit LLM context built event
94
+ await this.config.eventEmitter.emit(LLMContextEventType.LLM_CONTEXT_BUILT, {
95
+ prompt_id: promptId,
96
+ context: {
97
+ messages: llmRequest.messages.map(msg => ({
98
+ role: msg.role,
99
+ content: msg.content,
100
+ timestamp: new Date().toISOString(),
101
+ })),
102
+ tools: llmRequest.tools?.map(tool => ({
103
+ name: tool.name,
104
+ description: tool.description,
105
+ input_schema: tool.inputSchema,
106
+ })),
107
+ },
108
+ tool_definitions: this.availableTools.map(tool => ({
109
+ name: tool.name,
110
+ description: tool.description,
111
+ input_schema: tool.inputSchema,
112
+ })),
113
+ system_prompt: llmRequest.systemPrompt,
114
+ });
115
+ // Call LLM
116
+ const startTime = Date.now();
117
+ const llmResponse = await this.config.llmProvider.chat(llmRequest);
118
+ const duration = Date.now() - startTime;
119
+ // Add assistant response to conversation history
120
+ this.state.conversationHistory.push({
121
+ role: 'assistant',
122
+ content: llmResponse.content || '',
123
+ });
124
+ // Check if LLM wants to call tools
125
+ if (llmResponse.toolCalls && llmResponse.toolCalls.length > 0) {
126
+ // Process tool calls
127
+ const toolResults = await this.processToolCalls(llmResponse.toolCalls);
128
+ // Build post-tool prompt with tool results
129
+ const postToolPrompt = this.buildPostToolPrompt(llmResponse.toolCalls, toolResults);
130
+ // Emit post-tool LLM prompt built event
131
+ await this.config.eventEmitter.emit(LLMContextEventType.POST_TOOL_LLM_PROMPT_BUILT, {
132
+ prompt_id: promptId,
133
+ tool_call_result: toolResults[0] || {
134
+ tool_name: '',
135
+ arguments: {},
136
+ result: null,
137
+ duration_ms: 0,
138
+ },
139
+ context: {
140
+ messages: postToolPrompt.messages.map(msg => ({
141
+ role: msg.role,
142
+ content: msg.content,
143
+ timestamp: new Date().toISOString(),
144
+ })),
145
+ },
146
+ });
147
+ // Continue the loop to get final response from LLM
148
+ continue;
149
+ }
150
+ // No tool calls - emit final response and return
151
+ await this.config.eventEmitter.emit(LLMProposalEventType.LLM_FINAL_RESPONSE_GENERATED, {
152
+ response_text: llmResponse.content || '',
153
+ finish_reason: llmResponse.finishReason || 'stop',
154
+ token_count: llmResponse.usage?.totalTokens,
155
+ duration_ms: duration,
156
+ });
157
+ return;
158
+ }
159
+ // If we've exceeded max iterations, halt
160
+ await this.halt(`Maximum conversation iterations (${maxIterations}) exceeded`);
161
+ }
162
+ /**
163
+ * Build LLM context from conversation history and available tools.
164
+ * Truncates history to prevent context from growing too large.
165
+ */
166
+ buildLLMContext() {
167
+ // Get recent conversation history (truncate if too long)
168
+ let messages = [...this.state.conversationHistory];
169
+ if (messages.length > this.MAX_HISTORY_LENGTH) {
170
+ // Keep most recent messages
171
+ messages = messages.slice(-this.MAX_HISTORY_LENGTH);
172
+ }
173
+ // Truncate individual messages if too large
174
+ messages = messages.map(msg => {
175
+ if (msg.content.length > this.MAX_MESSAGE_SIZE) {
176
+ return {
177
+ ...msg,
178
+ content: msg.content.substring(0, this.MAX_MESSAGE_SIZE) +
179
+ '\n[... truncated, see tool result files for full data]',
180
+ };
181
+ }
182
+ return msg;
183
+ });
184
+ // Build system prompt
185
+ const systemPrompt = `You are ${this.config.config.agent_name}, an AI assistant with access to tools.
186
+ You can use the available tools to help the user. When you need to use a tool, make a tool call.
187
+ After tool execution, you will receive the results and can provide a final response to the user.
188
+ Note: Large tool results may be stored externally and referenced by ID. If you see a data reference ID,
189
+ you can request the full data if needed.`;
190
+ return {
191
+ messages,
192
+ tools: this.availableTools,
193
+ systemPrompt,
194
+ };
195
+ }
196
+ /**
197
+ * Process tool calls from LLM.
198
+ */
199
+ async processToolCalls(toolCalls) {
200
+ const results = [];
201
+ // Deduplicate tool calls to prevent executing the same tool call multiple times
202
+ // This can happen if the LLM returns duplicate tool calls in a single response
203
+ // We deduplicate by tool name + normalized arguments to avoid redundant executions
204
+ const seenKeys = new Set();
205
+ const uniqueToolCalls = [];
206
+ const skippedDuplicates = [];
207
+ for (const toolCall of toolCalls) {
208
+ // Create a unique key from tool name + arguments (normalized JSON)
209
+ // This ensures we don't execute the same tool with the same arguments twice
210
+ const normalizedArgs = JSON.stringify(toolCall.arguments, Object.keys(toolCall.arguments).sort());
211
+ const key = `${toolCall.name}:${normalizedArgs}`;
212
+ if (seenKeys.has(key)) {
213
+ // Track skipped duplicates to inform the LLM
214
+ skippedDuplicates.push({
215
+ toolCall,
216
+ reason: `Duplicate tool call detected: ${toolCall.name} with identical arguments was already executed`,
217
+ });
218
+ // Use logger instead of console.warn for proper event tracking
219
+ logger.warn(`Skipping duplicate tool call: ${toolCall.name} with arguments ${normalizedArgs}`);
220
+ continue;
221
+ }
222
+ seenKeys.add(key);
223
+ uniqueToolCalls.push(toolCall);
224
+ }
225
+ // If we skipped duplicates, add them to conversation history so LLM knows
226
+ if (skippedDuplicates.length > 0) {
227
+ const skippedMessages = skippedDuplicates.map(({ toolCall, reason }) => `Tool call ${toolCall.name}(${JSON.stringify(toolCall.arguments)}) was skipped: ${reason}`);
228
+ this.state.conversationHistory.push({
229
+ role: 'assistant',
230
+ content: `Note: ${skippedDuplicates.length} duplicate tool call(s) were skipped:\n${skippedMessages.join('\n')}`,
231
+ });
232
+ }
233
+ // Process only unique tool calls
234
+ for (const toolCall of uniqueToolCalls) {
235
+ // Emit LLM proposed tool call event
236
+ await this.config.eventEmitter.emit(LLMProposalEventType.LLM_PROPOSED_TOOL_CALL, {
237
+ tool_name: toolCall.name,
238
+ arguments: toolCall.arguments,
239
+ });
240
+ // Validate tool call
241
+ const validationResult = await this.validateToolCall(toolCall);
242
+ if (!validationResult.valid) {
243
+ // Validation failed - add error to conversation and continue
244
+ this.state.conversationHistory.push({
245
+ role: 'assistant',
246
+ content: `Tool call validation failed: ${validationResult.error}`,
247
+ });
248
+ continue;
249
+ }
250
+ // Execute tool
251
+ const startTime = Date.now();
252
+ let toolResult;
253
+ let toolError;
254
+ try {
255
+ toolResult = await this.config.mcpClientManager.executeTool(toolCall.name, toolCall.arguments, this.config.executionMode);
256
+ }
257
+ catch (error) {
258
+ toolError = error instanceof Error ? error.message : String(error);
259
+ toolResult = { error: toolError };
260
+ }
261
+ const duration = Date.now() - startTime;
262
+ // Calculate result size
263
+ const resultSize = Buffer.byteLength(JSON.stringify(toolResult), 'utf8');
264
+ // Track tool call
265
+ const toolCallInfo = {
266
+ id: toolCall.id,
267
+ name: toolCall.name,
268
+ arguments: toolCall.arguments,
269
+ result: toolResult,
270
+ timestamp: new Date(),
271
+ duration,
272
+ };
273
+ // Externalize large results
274
+ if (DataManager.shouldExternalize(resultSize) && !toolError) {
275
+ const dataId = this.dataManager.store(toolResult, toolCall.name);
276
+ toolCallInfo.resultReference = dataId;
277
+ // Clear result from memory (keep reference only)
278
+ delete toolCallInfo.result;
279
+ // Add truncated message to conversation history
280
+ const sizeDisplay = DataManager.formatSize(resultSize);
281
+ this.state.conversationHistory.push({
282
+ role: 'assistant',
283
+ content: `Tool ${toolCall.name} executed. Large result (${sizeDisplay}) stored externally. Reference: ${dataId}`,
284
+ });
285
+ // Store reference in results for LLM (will need to load if needed)
286
+ results.push({
287
+ tool_name: toolCall.name,
288
+ arguments: toolCall.arguments,
289
+ result: {
290
+ _dataReference: dataId,
291
+ _message: `Large result (${sizeDisplay}) stored externally. Use reference ${dataId} to load.`,
292
+ },
293
+ duration_ms: duration,
294
+ });
295
+ }
296
+ else {
297
+ // Small result: store normally
298
+ results.push({
299
+ tool_name: toolCall.name,
300
+ arguments: toolCall.arguments,
301
+ result: toolResult,
302
+ duration_ms: duration,
303
+ });
304
+ // Add tool result to conversation history (truncate if needed)
305
+ const resultText = typeof toolResult === 'string'
306
+ ? toolResult
307
+ : JSON.stringify(toolResult, null, 2);
308
+ // Truncate if too large
309
+ const truncatedResult = resultText.length > this.MAX_MESSAGE_SIZE
310
+ ? resultText.substring(0, this.MAX_MESSAGE_SIZE) +
311
+ '\n[... truncated, result too large]'
312
+ : resultText;
313
+ this.state.conversationHistory.push({
314
+ role: 'assistant',
315
+ content: `Tool ${toolCall.name} executed${toolError ? ` with error: ${toolError}` : ''}. Result: ${truncatedResult}`,
316
+ });
317
+ }
318
+ // Always add toolCallInfo to state (with or without result)
319
+ this.state.toolCalls.push(toolCallInfo);
320
+ this.state.totalToolCalls++;
321
+ }
322
+ return results;
323
+ }
324
+ /**
325
+ * Validate a tool call.
326
+ */
327
+ async validateToolCall(toolCall) {
328
+ // Emit validation started event
329
+ await this.config.eventEmitter.emit(ValidationEventType.TOOL_CALL_VALIDATION_STARTED, {
330
+ tool_name: toolCall.name,
331
+ arguments: toolCall.arguments,
332
+ validation_rules: ['tool_exists', 'required_fields'],
333
+ });
334
+ // Find the tool definition
335
+ const toolDef = this.availableTools.find(tool => tool.name === toolCall.name);
336
+ if (!toolDef) {
337
+ const error = `Tool "${toolCall.name}" not found`;
338
+ await this.config.eventEmitter.emit(ValidationEventType.TOOL_CALL_VALIDATION_FAILED, {
339
+ tool_name: toolCall.name,
340
+ arguments: toolCall.arguments,
341
+ failure_reason: error,
342
+ validation_errors: [
343
+ {
344
+ message: error,
345
+ code: 'TOOL_NOT_FOUND',
346
+ },
347
+ ],
348
+ });
349
+ return { valid: false, error };
350
+ }
351
+ // Basic validation - check if required fields are present
352
+ // More sophisticated validation can be added later
353
+ const schema = toolDef.inputSchema;
354
+ if (schema.required) {
355
+ for (const requiredField of schema.required) {
356
+ if (!(requiredField in toolCall.arguments)) {
357
+ const error = `Missing required argument: ${requiredField}`;
358
+ await this.config.eventEmitter.emit(ValidationEventType.TOOL_CALL_VALIDATION_FAILED, {
359
+ tool_name: toolCall.name,
360
+ arguments: toolCall.arguments,
361
+ failure_reason: error,
362
+ validation_errors: [
363
+ {
364
+ field: requiredField,
365
+ message: error,
366
+ code: 'MISSING_REQUIRED_ARGUMENT',
367
+ },
368
+ ],
369
+ });
370
+ return { valid: false, error };
371
+ }
372
+ }
373
+ }
374
+ // Validation passed
375
+ await this.config.eventEmitter.emit(ValidationEventType.TOOL_CALL_VALIDATION_PASSED, {
376
+ tool_name: toolCall.name,
377
+ arguments: toolCall.arguments,
378
+ validated_at: new Date().toISOString(),
379
+ });
380
+ return { valid: true };
381
+ }
382
+ /**
383
+ * Build prompt after tool execution.
384
+ */
385
+ buildPostToolPrompt(_toolCalls, _toolResults) {
386
+ // The conversation history already includes tool results
387
+ // Just return the current state
388
+ return {
389
+ messages: [...this.state.conversationHistory],
390
+ };
391
+ }
392
+ /**
393
+ * Get session state.
394
+ */
395
+ getState() {
396
+ return { ...this.state };
397
+ }
398
+ /**
399
+ * Get available tools.
400
+ */
401
+ getAvailableTools() {
402
+ return [...this.availableTools];
403
+ }
404
+ /**
405
+ * Complete the session.
406
+ */
407
+ async complete() {
408
+ const duration = Date.now() - this.state.startTime.getTime();
409
+ await this.config.eventEmitter.emit(SessionLifecycleEventType.SESSION_COMPLETED, {
410
+ status: 'success',
411
+ duration_ms: duration,
412
+ total_tool_calls: this.state.totalToolCalls,
413
+ total_llm_calls: this.state.totalLLMCalls,
414
+ });
415
+ }
416
+ /**
417
+ * Halt the session due to error.
418
+ */
419
+ async halt(reason, errorCode) {
420
+ await this.config.eventEmitter.emit(SessionLifecycleEventType.SESSION_HALTED, {
421
+ reason,
422
+ error_code: errorCode,
423
+ });
424
+ }
425
+ /**
426
+ * Clear conversation history.
427
+ */
428
+ clearHistory() {
429
+ this.state.conversationHistory = [];
430
+ }
431
+ /**
432
+ * Get tool result (loads from file if large data was externalized).
433
+ */
434
+ getToolResult(toolCallInfo) {
435
+ if (toolCallInfo.resultReference) {
436
+ return this.dataManager.load(toolCallInfo.resultReference);
437
+ }
438
+ return toolCallInfo.result;
439
+ }
440
+ /**
441
+ * Get the data manager instance.
442
+ */
443
+ getDataManager() {
444
+ return this.dataManager;
445
+ }
446
+ }
447
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Stack trace generation from events.
3
+ * Generates human-readable stack traces from event sequences to aid debugging.
4
+ */
5
+ import type { EventStore } from '../../events/store.js';
6
+ import type { SessionID, EventID } from '../../types/ids.js';
7
+ import type { EventType } from '../../events/event-type.js';
8
+ /**
9
+ * Stack trace entry representing a single event in the trace.
10
+ */
11
+ export interface StackTraceEntry {
12
+ /** Event ID */
13
+ eventId: EventID;
14
+ /** Event type */
15
+ eventType: EventType;
16
+ /** Timestamp */
17
+ timestamp: string;
18
+ /** Sequence number */
19
+ sequence: number;
20
+ /** Human-readable description */
21
+ description: string;
22
+ /** Additional context (tool name, error message, etc.) */
23
+ context?: Record<string, unknown>;
24
+ /** Indicates if this entry represents an error */
25
+ isError: boolean;
26
+ /** Indicates if this entry is a critical point in execution */
27
+ isCritical: boolean;
28
+ }
29
+ /**
30
+ * Stack trace result containing entries and metadata.
31
+ */
32
+ export interface StackTrace {
33
+ /** Session ID */
34
+ sessionId: SessionID;
35
+ /** Stack trace entries in chronological order */
36
+ entries: StackTraceEntry[];
37
+ /** Total number of events in the session */
38
+ totalEvents: number;
39
+ /** Number of error events */
40
+ errorCount: number;
41
+ /** First error event (if any) */
42
+ firstError?: StackTraceEntry;
43
+ /** Summary of the trace */
44
+ summary: string;
45
+ }
46
+ /**
47
+ * Options for generating a stack trace.
48
+ */
49
+ export interface StackTraceOptions {
50
+ /** Include all events or only critical/error events */
51
+ includeAll?: boolean;
52
+ /** Maximum number of entries to include */
53
+ maxEntries?: number;
54
+ /** Filter by specific event types */
55
+ eventTypes?: EventType[];
56
+ /** Filter by execution ID (for tool execution traces) */
57
+ executionId?: string;
58
+ /** Include context in entries */
59
+ includeContext?: boolean;
60
+ }
61
+ /**
62
+ * Generate a stack trace from events for a given session.
63
+ *
64
+ * @param eventStore - Event store to query
65
+ * @param sessionId - Session ID to generate trace for
66
+ * @param options - Stack trace generation options
67
+ * @returns Stack trace
68
+ */
69
+ export declare function generateStackTrace(eventStore: EventStore, sessionId: SessionID, options?: StackTraceOptions): Promise<StackTrace>;
70
+ /**
71
+ * Format a stack trace as a human-readable string.
72
+ *
73
+ * @param stackTrace - Stack trace to format
74
+ * @returns Formatted string
75
+ */
76
+ export declare function formatStackTrace(stackTrace: StackTrace): string;
77
+ //# sourceMappingURL=stack-trace.d.ts.map