@actrun_ai/tastekit-core 0.1.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 (389) hide show
  1. package/dist/compiler/compiler.d.ts +24 -0
  2. package/dist/compiler/compiler.d.ts.map +1 -0
  3. package/dist/compiler/compiler.js +153 -0
  4. package/dist/compiler/compiler.js.map +1 -0
  5. package/dist/compiler/constitution-compiler.d.ts +11 -0
  6. package/dist/compiler/constitution-compiler.d.ts.map +1 -0
  7. package/dist/compiler/constitution-compiler.js +154 -0
  8. package/dist/compiler/constitution-compiler.js.map +1 -0
  9. package/dist/compiler/derivation.d.ts +125 -0
  10. package/dist/compiler/derivation.d.ts.map +1 -0
  11. package/dist/compiler/derivation.js +109 -0
  12. package/dist/compiler/derivation.js.map +1 -0
  13. package/dist/compiler/guardrails-compiler.d.ts +11 -0
  14. package/dist/compiler/guardrails-compiler.d.ts.map +1 -0
  15. package/dist/compiler/guardrails-compiler.js +362 -0
  16. package/dist/compiler/guardrails-compiler.js.map +1 -0
  17. package/dist/compiler/index.d.ts +13 -0
  18. package/dist/compiler/index.d.ts.map +1 -0
  19. package/dist/compiler/index.js +13 -0
  20. package/dist/compiler/index.js.map +1 -0
  21. package/dist/compiler/memory-compiler.d.ts +12 -0
  22. package/dist/compiler/memory-compiler.d.ts.map +1 -0
  23. package/dist/compiler/memory-compiler.js +293 -0
  24. package/dist/compiler/memory-compiler.js.map +1 -0
  25. package/dist/compiler/playbook-compiler.d.ts +15 -0
  26. package/dist/compiler/playbook-compiler.d.ts.map +1 -0
  27. package/dist/compiler/playbook-compiler.js +1143 -0
  28. package/dist/compiler/playbook-compiler.js.map +1 -0
  29. package/dist/compiler/skills-compiler.d.ts +15 -0
  30. package/dist/compiler/skills-compiler.d.ts.map +1 -0
  31. package/dist/compiler/skills-compiler.js +203 -0
  32. package/dist/compiler/skills-compiler.js.map +1 -0
  33. package/dist/domains/development-agent/domain.d.ts +8 -0
  34. package/dist/domains/development-agent/domain.d.ts.map +1 -0
  35. package/dist/domains/development-agent/domain.js +35 -0
  36. package/dist/domains/development-agent/domain.js.map +1 -0
  37. package/dist/domains/development-agent/index.d.ts +3 -0
  38. package/dist/domains/development-agent/index.d.ts.map +1 -0
  39. package/dist/domains/development-agent/index.js +3 -0
  40. package/dist/domains/development-agent/index.js.map +1 -0
  41. package/dist/domains/development-agent/rubric.d.ts +13 -0
  42. package/dist/domains/development-agent/rubric.d.ts.map +1 -0
  43. package/dist/domains/development-agent/rubric.js +451 -0
  44. package/dist/domains/development-agent/rubric.js.map +1 -0
  45. package/dist/domains/development-agent/skills/code-review.d.ts +25 -0
  46. package/dist/domains/development-agent/skills/code-review.d.ts.map +1 -0
  47. package/dist/domains/development-agent/skills/code-review.js +146 -0
  48. package/dist/domains/development-agent/skills/code-review.js.map +1 -0
  49. package/dist/domains/development-agent/skills/debugging-issues.d.ts +25 -0
  50. package/dist/domains/development-agent/skills/debugging-issues.d.ts.map +1 -0
  51. package/dist/domains/development-agent/skills/debugging-issues.js +155 -0
  52. package/dist/domains/development-agent/skills/debugging-issues.js.map +1 -0
  53. package/dist/domains/development-agent/skills/documenting-code.d.ts +19 -0
  54. package/dist/domains/development-agent/skills/documenting-code.d.ts.map +1 -0
  55. package/dist/domains/development-agent/skills/documenting-code.js +92 -0
  56. package/dist/domains/development-agent/skills/documenting-code.js.map +1 -0
  57. package/dist/domains/development-agent/skills/index.d.ts +55 -0
  58. package/dist/domains/development-agent/skills/index.d.ts.map +1 -0
  59. package/dist/domains/development-agent/skills/index.js +19 -0
  60. package/dist/domains/development-agent/skills/index.js.map +1 -0
  61. package/dist/domains/development-agent/skills/refactor-plan.d.ts +19 -0
  62. package/dist/domains/development-agent/skills/refactor-plan.d.ts.map +1 -0
  63. package/dist/domains/development-agent/skills/refactor-plan.js +117 -0
  64. package/dist/domains/development-agent/skills/refactor-plan.js.map +1 -0
  65. package/dist/domains/development-agent/skills/writing-tests.d.ts +20 -0
  66. package/dist/domains/development-agent/skills/writing-tests.d.ts.map +1 -0
  67. package/dist/domains/development-agent/skills/writing-tests.js +93 -0
  68. package/dist/domains/development-agent/skills/writing-tests.js.map +1 -0
  69. package/dist/domains/general-agent/domain.d.ts +9 -0
  70. package/dist/domains/general-agent/domain.d.ts.map +1 -0
  71. package/dist/domains/general-agent/domain.js +36 -0
  72. package/dist/domains/general-agent/domain.js.map +1 -0
  73. package/dist/domains/general-agent/index.d.ts +4 -0
  74. package/dist/domains/general-agent/index.d.ts.map +1 -0
  75. package/dist/domains/general-agent/index.js +4 -0
  76. package/dist/domains/general-agent/index.js.map +1 -0
  77. package/dist/domains/general-agent/rubric.d.ts +8 -0
  78. package/dist/domains/general-agent/rubric.d.ts.map +1 -0
  79. package/dist/domains/general-agent/rubric.js +332 -0
  80. package/dist/domains/general-agent/rubric.js.map +1 -0
  81. package/dist/domains/general-agent/skills/context-synthesis.d.ts +19 -0
  82. package/dist/domains/general-agent/skills/context-synthesis.d.ts.map +1 -0
  83. package/dist/domains/general-agent/skills/context-synthesis.js +94 -0
  84. package/dist/domains/general-agent/skills/context-synthesis.js.map +1 -0
  85. package/dist/domains/general-agent/skills/index.d.ts +32 -0
  86. package/dist/domains/general-agent/skills/index.d.ts.map +1 -0
  87. package/dist/domains/general-agent/skills/index.js +11 -0
  88. package/dist/domains/general-agent/skills/index.js.map +1 -0
  89. package/dist/domains/general-agent/skills/task-orchestration.d.ts +19 -0
  90. package/dist/domains/general-agent/skills/task-orchestration.d.ts.map +1 -0
  91. package/dist/domains/general-agent/skills/task-orchestration.js +101 -0
  92. package/dist/domains/general-agent/skills/task-orchestration.js.map +1 -0
  93. package/dist/domains/index.d.ts +21 -0
  94. package/dist/domains/index.d.ts.map +1 -0
  95. package/dist/domains/index.js +37 -0
  96. package/dist/domains/index.js.map +1 -0
  97. package/dist/domains/types.d.ts +22 -0
  98. package/dist/domains/types.d.ts.map +1 -0
  99. package/dist/domains/types.js +2 -0
  100. package/dist/domains/types.js.map +1 -0
  101. package/dist/drift/consolidator.d.ts +47 -0
  102. package/dist/drift/consolidator.d.ts.map +1 -0
  103. package/dist/drift/consolidator.js +116 -0
  104. package/dist/drift/consolidator.js.map +1 -0
  105. package/dist/drift/detector.d.ts +79 -0
  106. package/dist/drift/detector.d.ts.map +1 -0
  107. package/dist/drift/detector.js +424 -0
  108. package/dist/drift/detector.js.map +1 -0
  109. package/dist/drift/index.d.ts +9 -0
  110. package/dist/drift/index.d.ts.map +1 -0
  111. package/dist/drift/index.js +9 -0
  112. package/dist/drift/index.js.map +1 -0
  113. package/dist/drift/proposal.d.ts +108 -0
  114. package/dist/drift/proposal.d.ts.map +1 -0
  115. package/dist/drift/proposal.js +2 -0
  116. package/dist/drift/proposal.js.map +1 -0
  117. package/dist/eval/index.d.ts +9 -0
  118. package/dist/eval/index.d.ts.map +1 -0
  119. package/dist/eval/index.js +9 -0
  120. package/dist/eval/index.js.map +1 -0
  121. package/dist/eval/judge.d.ts +33 -0
  122. package/dist/eval/judge.d.ts.map +1 -0
  123. package/dist/eval/judge.js +209 -0
  124. package/dist/eval/judge.js.map +1 -0
  125. package/dist/eval/replay.d.ts +23 -0
  126. package/dist/eval/replay.d.ts.map +1 -0
  127. package/dist/eval/replay.js +42 -0
  128. package/dist/eval/replay.js.map +1 -0
  129. package/dist/eval/runner.d.ts +35 -0
  130. package/dist/eval/runner.d.ts.map +1 -0
  131. package/dist/eval/runner.js +52 -0
  132. package/dist/eval/runner.js.map +1 -0
  133. package/dist/generators/agents-md-generator.d.ts +9 -0
  134. package/dist/generators/agents-md-generator.d.ts.map +1 -0
  135. package/dist/generators/agents-md-generator.js +71 -0
  136. package/dist/generators/agents-md-generator.js.map +1 -0
  137. package/dist/generators/blocks/domain-context.d.ts +7 -0
  138. package/dist/generators/blocks/domain-context.d.ts.map +1 -0
  139. package/dist/generators/blocks/domain-context.js +26 -0
  140. package/dist/generators/blocks/domain-context.js.map +1 -0
  141. package/dist/generators/blocks/drift-awareness.d.ts +6 -0
  142. package/dist/generators/blocks/drift-awareness.d.ts.map +1 -0
  143. package/dist/generators/blocks/drift-awareness.js +28 -0
  144. package/dist/generators/blocks/drift-awareness.js.map +1 -0
  145. package/dist/generators/blocks/evaluation-criteria.d.ts +7 -0
  146. package/dist/generators/blocks/evaluation-criteria.d.ts.map +1 -0
  147. package/dist/generators/blocks/evaluation-criteria.js +18 -0
  148. package/dist/generators/blocks/evaluation-criteria.js.map +1 -0
  149. package/dist/generators/blocks/guardrails.d.ts +6 -0
  150. package/dist/generators/blocks/guardrails.d.ts.map +1 -0
  151. package/dist/generators/blocks/guardrails.js +44 -0
  152. package/dist/generators/blocks/guardrails.js.map +1 -0
  153. package/dist/generators/blocks/identity.d.ts +6 -0
  154. package/dist/generators/blocks/identity.d.ts.map +1 -0
  155. package/dist/generators/blocks/identity.js +36 -0
  156. package/dist/generators/blocks/identity.js.map +1 -0
  157. package/dist/generators/blocks/memory-policy.d.ts +6 -0
  158. package/dist/generators/blocks/memory-policy.d.ts.map +1 -0
  159. package/dist/generators/blocks/memory-policy.js +34 -0
  160. package/dist/generators/blocks/memory-policy.js.map +1 -0
  161. package/dist/generators/blocks/playbook-index.d.ts +7 -0
  162. package/dist/generators/blocks/playbook-index.d.ts.map +1 -0
  163. package/dist/generators/blocks/playbook-index.js +14 -0
  164. package/dist/generators/blocks/playbook-index.js.map +1 -0
  165. package/dist/generators/blocks/session-rhythm.d.ts +6 -0
  166. package/dist/generators/blocks/session-rhythm.d.ts.map +1 -0
  167. package/dist/generators/blocks/session-rhythm.js +11 -0
  168. package/dist/generators/blocks/session-rhythm.js.map +1 -0
  169. package/dist/generators/blocks/skills-index.d.ts +6 -0
  170. package/dist/generators/blocks/skills-index.d.ts.map +1 -0
  171. package/dist/generators/blocks/skills-index.js +36 -0
  172. package/dist/generators/blocks/skills-index.js.map +1 -0
  173. package/dist/generators/blocks/tool-usage.d.ts +6 -0
  174. package/dist/generators/blocks/tool-usage.d.ts.map +1 -0
  175. package/dist/generators/blocks/tool-usage.js +31 -0
  176. package/dist/generators/blocks/tool-usage.js.map +1 -0
  177. package/dist/generators/blocks/vocabulary.d.ts +7 -0
  178. package/dist/generators/blocks/vocabulary.d.ts.map +1 -0
  179. package/dist/generators/blocks/vocabulary.js +27 -0
  180. package/dist/generators/blocks/vocabulary.js.map +1 -0
  181. package/dist/generators/claude-hooks-compat.d.ts +33 -0
  182. package/dist/generators/claude-hooks-compat.d.ts.map +1 -0
  183. package/dist/generators/claude-hooks-compat.js +322 -0
  184. package/dist/generators/claude-hooks-compat.js.map +1 -0
  185. package/dist/generators/claude-md-generator.d.ts +12 -0
  186. package/dist/generators/claude-md-generator.d.ts.map +1 -0
  187. package/dist/generators/claude-md-generator.js +60 -0
  188. package/dist/generators/claude-md-generator.js.map +1 -0
  189. package/dist/generators/index.d.ts +11 -0
  190. package/dist/generators/index.d.ts.map +1 -0
  191. package/dist/generators/index.js +11 -0
  192. package/dist/generators/index.js.map +1 -0
  193. package/dist/generators/soul-md-generator.d.ts +9 -0
  194. package/dist/generators/soul-md-generator.d.ts.map +1 -0
  195. package/dist/generators/soul-md-generator.js +104 -0
  196. package/dist/generators/soul-md-generator.js.map +1 -0
  197. package/dist/generators/types.d.ts +55 -0
  198. package/dist/generators/types.d.ts.map +1 -0
  199. package/dist/generators/types.js +7 -0
  200. package/dist/generators/types.js.map +1 -0
  201. package/dist/index.d.ts +19 -0
  202. package/dist/index.d.ts.map +1 -0
  203. package/dist/index.js +20 -0
  204. package/dist/index.js.map +1 -0
  205. package/dist/interview/index.d.ts +11 -0
  206. package/dist/interview/index.d.ts.map +1 -0
  207. package/dist/interview/index.js +11 -0
  208. package/dist/interview/index.js.map +1 -0
  209. package/dist/interview/interviewer.d.ts +94 -0
  210. package/dist/interview/interviewer.d.ts.map +1 -0
  211. package/dist/interview/interviewer.js +516 -0
  212. package/dist/interview/interviewer.js.map +1 -0
  213. package/dist/interview/questions.d.ts +15 -0
  214. package/dist/interview/questions.d.ts.map +1 -0
  215. package/dist/interview/questions.js +86 -0
  216. package/dist/interview/questions.js.map +1 -0
  217. package/dist/interview/rubric.d.ts +265 -0
  218. package/dist/interview/rubric.d.ts.map +1 -0
  219. package/dist/interview/rubric.js +74 -0
  220. package/dist/interview/rubric.js.map +1 -0
  221. package/dist/interview/session.d.ts +9 -0
  222. package/dist/interview/session.d.ts.map +1 -0
  223. package/dist/interview/session.js +33 -0
  224. package/dist/interview/session.js.map +1 -0
  225. package/dist/interview/universal-rubric.d.ts +11 -0
  226. package/dist/interview/universal-rubric.d.ts.map +1 -0
  227. package/dist/interview/universal-rubric.js +165 -0
  228. package/dist/interview/universal-rubric.js.map +1 -0
  229. package/dist/llm/index.d.ts +8 -0
  230. package/dist/llm/index.d.ts.map +1 -0
  231. package/dist/llm/index.js +8 -0
  232. package/dist/llm/index.js.map +1 -0
  233. package/dist/llm/provider.d.ts +62 -0
  234. package/dist/llm/provider.d.ts.map +1 -0
  235. package/dist/llm/provider.js +24 -0
  236. package/dist/llm/provider.js.map +1 -0
  237. package/dist/llm/providers/anthropic.d.ts +18 -0
  238. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  239. package/dist/llm/providers/anthropic.js +56 -0
  240. package/dist/llm/providers/anthropic.js.map +1 -0
  241. package/dist/llm/providers/ollama.d.ts +17 -0
  242. package/dist/llm/providers/ollama.d.ts.map +1 -0
  243. package/dist/llm/providers/ollama.js +45 -0
  244. package/dist/llm/providers/ollama.js.map +1 -0
  245. package/dist/llm/providers/openai.d.ts +19 -0
  246. package/dist/llm/providers/openai.d.ts.map +1 -0
  247. package/dist/llm/providers/openai.js +52 -0
  248. package/dist/llm/providers/openai.js.map +1 -0
  249. package/dist/llm/resolve.d.ts +11 -0
  250. package/dist/llm/resolve.d.ts.map +1 -0
  251. package/dist/llm/resolve.js +56 -0
  252. package/dist/llm/resolve.js.map +1 -0
  253. package/dist/mcp/binder.d.ts +28 -0
  254. package/dist/mcp/binder.d.ts.map +1 -0
  255. package/dist/mcp/binder.js +87 -0
  256. package/dist/mcp/binder.js.map +1 -0
  257. package/dist/mcp/client.d.ts +99 -0
  258. package/dist/mcp/client.d.ts.map +1 -0
  259. package/dist/mcp/client.js +196 -0
  260. package/dist/mcp/client.js.map +1 -0
  261. package/dist/mcp/index.d.ts +9 -0
  262. package/dist/mcp/index.d.ts.map +1 -0
  263. package/dist/mcp/index.js +9 -0
  264. package/dist/mcp/index.js.map +1 -0
  265. package/dist/mcp/inspector.d.ts +29 -0
  266. package/dist/mcp/inspector.d.ts.map +1 -0
  267. package/dist/mcp/inspector.js +44 -0
  268. package/dist/mcp/inspector.js.map +1 -0
  269. package/dist/schemas/bindings.d.ts +248 -0
  270. package/dist/schemas/bindings.d.ts.map +1 -0
  271. package/dist/schemas/bindings.js +34 -0
  272. package/dist/schemas/bindings.js.map +1 -0
  273. package/dist/schemas/constitution.d.ts +229 -0
  274. package/dist/schemas/constitution.d.ts.map +1 -0
  275. package/dist/schemas/constitution.js +47 -0
  276. package/dist/schemas/constitution.js.map +1 -0
  277. package/dist/schemas/evalpack.d.ts +322 -0
  278. package/dist/schemas/evalpack.d.ts.map +1 -0
  279. package/dist/schemas/evalpack.js +43 -0
  280. package/dist/schemas/evalpack.js.map +1 -0
  281. package/dist/schemas/guardrails.d.ts +171 -0
  282. package/dist/schemas/guardrails.d.ts.map +1 -0
  283. package/dist/schemas/guardrails.js +35 -0
  284. package/dist/schemas/guardrails.js.map +1 -0
  285. package/dist/schemas/index.d.ts +18 -0
  286. package/dist/schemas/index.d.ts.map +1 -0
  287. package/dist/schemas/index.js +18 -0
  288. package/dist/schemas/index.js.map +1 -0
  289. package/dist/schemas/memory.d.ts +277 -0
  290. package/dist/schemas/memory.d.ts.map +1 -0
  291. package/dist/schemas/memory.js +42 -0
  292. package/dist/schemas/memory.js.map +1 -0
  293. package/dist/schemas/playbook.d.ts +270 -0
  294. package/dist/schemas/playbook.d.ts.map +1 -0
  295. package/dist/schemas/playbook.js +52 -0
  296. package/dist/schemas/playbook.js.map +1 -0
  297. package/dist/schemas/skills.d.ts +320 -0
  298. package/dist/schemas/skills.d.ts.map +1 -0
  299. package/dist/schemas/skills.js +84 -0
  300. package/dist/schemas/skills.js.map +1 -0
  301. package/dist/schemas/trace.d.ts +126 -0
  302. package/dist/schemas/trace.d.ts.map +1 -0
  303. package/dist/schemas/trace.js +70 -0
  304. package/dist/schemas/trace.js.map +1 -0
  305. package/dist/schemas/trust.d.ts +142 -0
  306. package/dist/schemas/trust.d.ts.map +1 -0
  307. package/dist/schemas/trust.js +30 -0
  308. package/dist/schemas/trust.js.map +1 -0
  309. package/dist/schemas/validators.d.ts +26 -0
  310. package/dist/schemas/validators.d.ts.map +1 -0
  311. package/dist/schemas/validators.js +79 -0
  312. package/dist/schemas/validators.js.map +1 -0
  313. package/dist/schemas/workspace.d.ts +725 -0
  314. package/dist/schemas/workspace.d.ts.map +1 -0
  315. package/dist/schemas/workspace.js +119 -0
  316. package/dist/schemas/workspace.js.map +1 -0
  317. package/dist/skills/constraints.d.ts +19 -0
  318. package/dist/skills/constraints.d.ts.map +1 -0
  319. package/dist/skills/constraints.js +91 -0
  320. package/dist/skills/constraints.js.map +1 -0
  321. package/dist/skills/generator.d.ts +13 -0
  322. package/dist/skills/generator.d.ts.map +1 -0
  323. package/dist/skills/generator.js +126 -0
  324. package/dist/skills/generator.js.map +1 -0
  325. package/dist/skills/graph.d.ts +42 -0
  326. package/dist/skills/graph.d.ts.map +1 -0
  327. package/dist/skills/graph.js +217 -0
  328. package/dist/skills/graph.js.map +1 -0
  329. package/dist/skills/index.d.ts +13 -0
  330. package/dist/skills/index.d.ts.map +1 -0
  331. package/dist/skills/index.js +13 -0
  332. package/dist/skills/index.js.map +1 -0
  333. package/dist/skills/linter.d.ts +22 -0
  334. package/dist/skills/linter.d.ts.map +1 -0
  335. package/dist/skills/linter.js +201 -0
  336. package/dist/skills/linter.js.map +1 -0
  337. package/dist/skills/packer.d.ts +27 -0
  338. package/dist/skills/packer.d.ts.map +1 -0
  339. package/dist/skills/packer.js +72 -0
  340. package/dist/skills/packer.js.map +1 -0
  341. package/dist/skills/tracker.d.ts +27 -0
  342. package/dist/skills/tracker.d.ts.map +1 -0
  343. package/dist/skills/tracker.js +131 -0
  344. package/dist/skills/tracker.js.map +1 -0
  345. package/dist/skills/versioner.d.ts +19 -0
  346. package/dist/skills/versioner.d.ts.map +1 -0
  347. package/dist/skills/versioner.js +76 -0
  348. package/dist/skills/versioner.js.map +1 -0
  349. package/dist/tracing/index.d.ts +8 -0
  350. package/dist/tracing/index.d.ts.map +1 -0
  351. package/dist/tracing/index.js +8 -0
  352. package/dist/tracing/index.js.map +1 -0
  353. package/dist/tracing/reader.d.ts +18 -0
  354. package/dist/tracing/reader.d.ts.map +1 -0
  355. package/dist/tracing/reader.js +34 -0
  356. package/dist/tracing/reader.js.map +1 -0
  357. package/dist/tracing/tracer.d.ts +22 -0
  358. package/dist/tracing/tracer.d.ts.map +1 -0
  359. package/dist/tracing/tracer.js +105 -0
  360. package/dist/tracing/tracer.js.map +1 -0
  361. package/dist/trust/auditor.d.ts +35 -0
  362. package/dist/trust/auditor.d.ts.map +1 -0
  363. package/dist/trust/auditor.js +78 -0
  364. package/dist/trust/auditor.js.map +1 -0
  365. package/dist/trust/index.d.ts +8 -0
  366. package/dist/trust/index.d.ts.map +1 -0
  367. package/dist/trust/index.js +8 -0
  368. package/dist/trust/index.js.map +1 -0
  369. package/dist/trust/manager.d.ts +18 -0
  370. package/dist/trust/manager.d.ts.map +1 -0
  371. package/dist/trust/manager.js +60 -0
  372. package/dist/trust/manager.js.map +1 -0
  373. package/dist/utils/filesystem.d.ts +15 -0
  374. package/dist/utils/filesystem.d.ts.map +1 -0
  375. package/dist/utils/filesystem.js +53 -0
  376. package/dist/utils/filesystem.js.map +1 -0
  377. package/dist/utils/hash.d.ts +7 -0
  378. package/dist/utils/hash.d.ts.map +1 -0
  379. package/dist/utils/hash.js +15 -0
  380. package/dist/utils/hash.js.map +1 -0
  381. package/dist/utils/index.d.ts +7 -0
  382. package/dist/utils/index.d.ts.map +1 -0
  383. package/dist/utils/index.js +7 -0
  384. package/dist/utils/index.js.map +1 -0
  385. package/dist/utils/yaml.d.ts +6 -0
  386. package/dist/utils/yaml.d.ts.map +1 -0
  387. package/dist/utils/yaml.js +14 -0
  388. package/dist/utils/yaml.js.map +1 -0
  389. package/package.json +58 -0
@@ -0,0 +1,62 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * LLM Provider Interface
4
+ *
5
+ * Minimal abstraction over LLM APIs. Supports multi-turn conversation.
6
+ * No external dependencies — implementations use native fetch.
7
+ */
8
+ export interface LLMMessage {
9
+ role: 'system' | 'user' | 'assistant';
10
+ content: string;
11
+ }
12
+ export interface LLMCompletionOptions {
13
+ /** Maximum tokens to generate. Default: provider-dependent. */
14
+ maxTokens?: number;
15
+ /** Temperature. Default: 0.7 for interviews. */
16
+ temperature?: number;
17
+ /** Stop sequences. */
18
+ stop?: string[];
19
+ }
20
+ export interface LLMCompletionResult {
21
+ content: string;
22
+ usage?: {
23
+ input_tokens?: number;
24
+ output_tokens?: number;
25
+ };
26
+ }
27
+ /**
28
+ * Any LLM that can take messages and return text.
29
+ */
30
+ export interface LLMProvider {
31
+ readonly name: string;
32
+ complete(messages: LLMMessage[], options?: LLMCompletionOptions): Promise<LLMCompletionResult>;
33
+ }
34
+ /**
35
+ * Configuration for resolving an LLM provider.
36
+ * Stored in tastekit.yaml or passed via CLI flags.
37
+ */
38
+ export declare const LLMProviderConfigSchema: z.ZodObject<{
39
+ provider: z.ZodEnum<["anthropic", "openai", "ollama", "custom"]>;
40
+ model: z.ZodOptional<z.ZodString>;
41
+ api_key_env: z.ZodOptional<z.ZodString>;
42
+ base_url: z.ZodOptional<z.ZodString>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ provider: "custom" | "anthropic" | "openai" | "ollama";
45
+ model?: string | undefined;
46
+ api_key_env?: string | undefined;
47
+ base_url?: string | undefined;
48
+ }, {
49
+ provider: "custom" | "anthropic" | "openai" | "ollama";
50
+ model?: string | undefined;
51
+ api_key_env?: string | undefined;
52
+ base_url?: string | undefined;
53
+ }>;
54
+ export type LLMProviderConfig = z.infer<typeof LLMProviderConfigSchema>;
55
+ /**
56
+ * Adapt the full LLMProvider to the simpler single-prompt interface
57
+ * used by the eval judge (LLMJudgeProvider).
58
+ */
59
+ export declare function asJudgeProvider(provider: LLMProvider): {
60
+ complete(prompt: string): Promise<string>;
61
+ };
62
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../llm/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChG;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EAKlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE,CAOpG"}
@@ -0,0 +1,24 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Configuration for resolving an LLM provider.
4
+ * Stored in tastekit.yaml or passed via CLI flags.
5
+ */
6
+ export const LLMProviderConfigSchema = z.object({
7
+ provider: z.enum(['anthropic', 'openai', 'ollama', 'custom']),
8
+ model: z.string().optional(),
9
+ api_key_env: z.string().optional().describe('Environment variable name for API key'),
10
+ base_url: z.string().optional().describe('Base URL for API (Ollama, custom)'),
11
+ });
12
+ /**
13
+ * Adapt the full LLMProvider to the simpler single-prompt interface
14
+ * used by the eval judge (LLMJudgeProvider).
15
+ */
16
+ export function asJudgeProvider(provider) {
17
+ return {
18
+ async complete(prompt) {
19
+ const result = await provider.complete([{ role: 'user', content: prompt }]);
20
+ return result.content;
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../llm/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuCxB;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IACpF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC9E,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,QAAqB;IACnD,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC5E,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { LLMProvider, LLMMessage, LLMCompletionOptions, LLMCompletionResult } from '../provider.js';
2
+ /**
3
+ * Anthropic Claude provider.
4
+ * Uses native fetch — no SDK dependency.
5
+ */
6
+ export declare class AnthropicProvider implements LLMProvider {
7
+ readonly name = "anthropic";
8
+ private apiKey;
9
+ private model;
10
+ private baseUrl;
11
+ constructor(options: {
12
+ apiKey: string;
13
+ model?: string;
14
+ baseUrl?: string;
15
+ });
16
+ complete(messages: LLMMessage[], options?: LLMCompletionOptions): Promise<LLMCompletionResult>;
17
+ }
18
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../llm/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEpG;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAMnE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAoDrG"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Anthropic Claude provider.
3
+ * Uses native fetch — no SDK dependency.
4
+ */
5
+ export class AnthropicProvider {
6
+ name = 'anthropic';
7
+ apiKey;
8
+ model;
9
+ baseUrl;
10
+ constructor(options) {
11
+ this.apiKey = options.apiKey;
12
+ this.model = options.model ?? 'claude-sonnet-4-6';
13
+ this.baseUrl = options.baseUrl ?? 'https://api.anthropic.com';
14
+ }
15
+ async complete(messages, options) {
16
+ const systemMsg = messages.find(m => m.role === 'system');
17
+ const conversationMsgs = messages.filter(m => m.role !== 'system');
18
+ const body = {
19
+ model: this.model,
20
+ max_tokens: options?.maxTokens ?? 1024,
21
+ messages: conversationMsgs.map(m => ({ role: m.role, content: m.content })),
22
+ };
23
+ if (systemMsg) {
24
+ body.system = systemMsg.content;
25
+ }
26
+ if (options?.temperature !== undefined) {
27
+ body.temperature = options.temperature;
28
+ }
29
+ if (options?.stop) {
30
+ body.stop_sequences = options.stop;
31
+ }
32
+ const response = await fetch(`${this.baseUrl}/v1/messages`, {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Content-Type': 'application/json',
36
+ 'x-api-key': this.apiKey,
37
+ 'anthropic-version': '2023-06-01',
38
+ },
39
+ body: JSON.stringify(body),
40
+ });
41
+ if (!response.ok) {
42
+ const error = await response.text();
43
+ throw new Error(`Anthropic API error (${response.status}): ${error}`);
44
+ }
45
+ const data = await response.json();
46
+ const textBlock = data.content?.find((b) => b.type === 'text');
47
+ return {
48
+ content: textBlock?.text ?? '',
49
+ usage: {
50
+ input_tokens: data.usage?.input_tokens,
51
+ output_tokens: data.usage?.output_tokens,
52
+ },
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../llm/providers/anthropic.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,WAAW,CAAC;IACpB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,OAAO,CAAS;IAExB,YAAY,OAA6D;QACvE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAmB,CAAC;QAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,2BAA2B,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAsB,EAAE,OAA8B;QACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC1D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAEnE,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;YACtC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5E,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;QACrC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,cAAc,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,mBAAmB,EAAE,YAAY;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAE/D,OAAO;YACL,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE;YAC9B,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY;gBACtC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa;aACzC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { LLMProvider, LLMMessage, LLMCompletionOptions, LLMCompletionResult } from '../provider.js';
2
+ /**
3
+ * Ollama local model provider.
4
+ * Connects to Ollama HTTP API at localhost (default port 11434).
5
+ * Uses native fetch — no SDK dependency.
6
+ */
7
+ export declare class OllamaProvider implements LLMProvider {
8
+ readonly name = "ollama";
9
+ private model;
10
+ private baseUrl;
11
+ constructor(options?: {
12
+ model?: string;
13
+ baseUrl?: string;
14
+ });
15
+ complete(messages: LLMMessage[], options?: LLMCompletionOptions): Promise<LLMCompletionResult>;
16
+ }
17
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../llm/providers/ollama.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEpG;;;;GAIG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAKpD,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAuCrG"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Ollama local model provider.
3
+ * Connects to Ollama HTTP API at localhost (default port 11434).
4
+ * Uses native fetch — no SDK dependency.
5
+ */
6
+ export class OllamaProvider {
7
+ name = 'ollama';
8
+ model;
9
+ baseUrl;
10
+ constructor(options) {
11
+ this.model = options?.model ?? 'llama3.1';
12
+ this.baseUrl = options?.baseUrl ?? 'http://localhost:11434';
13
+ }
14
+ async complete(messages, options) {
15
+ const body = {
16
+ model: this.model,
17
+ messages: messages.map(m => ({ role: m.role, content: m.content })),
18
+ stream: false,
19
+ };
20
+ if (options?.temperature !== undefined || options?.stop) {
21
+ body.options = {
22
+ ...(options?.temperature !== undefined ? { temperature: options.temperature } : {}),
23
+ ...(options?.stop ? { stop: options.stop } : {}),
24
+ };
25
+ }
26
+ const response = await fetch(`${this.baseUrl}/api/chat`, {
27
+ method: 'POST',
28
+ headers: { 'Content-Type': 'application/json' },
29
+ body: JSON.stringify(body),
30
+ });
31
+ if (!response.ok) {
32
+ const error = await response.text();
33
+ throw new Error(`Ollama API error (${response.status}): ${error}`);
34
+ }
35
+ const data = await response.json();
36
+ return {
37
+ content: data.message?.content ?? '',
38
+ usage: {
39
+ input_tokens: data.prompt_eval_count,
40
+ output_tokens: data.eval_count,
41
+ },
42
+ };
43
+ }
44
+ }
45
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../llm/providers/ollama.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IACjB,KAAK,CAAS;IACd,OAAO,CAAS;IAExB,YAAY,OAA8C;QACxD,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,wBAAwB,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAsB,EAAE,OAA8B;QACnE,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,GAAG;gBACb,GAAG,CAAC,OAAO,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE;YACpC,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,iBAAiB;gBACpC,aAAa,EAAE,IAAI,CAAC,UAAU;aAC/B;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { LLMProvider, LLMMessage, LLMCompletionOptions, LLMCompletionResult } from '../provider.js';
2
+ /**
3
+ * OpenAI-compatible provider.
4
+ * Works with OpenAI, OpenRouter, and any OpenAI-compatible API.
5
+ * Uses native fetch — no SDK dependency.
6
+ */
7
+ export declare class OpenAIProvider implements LLMProvider {
8
+ readonly name = "openai";
9
+ private apiKey;
10
+ private model;
11
+ private baseUrl;
12
+ constructor(options: {
13
+ apiKey: string;
14
+ model?: string;
15
+ baseUrl?: string;
16
+ });
17
+ complete(messages: LLMMessage[], options?: LLMCompletionOptions): Promise<LLMCompletionResult>;
18
+ }
19
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../llm/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAEpG;;;;GAIG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAMnE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CA6CrG"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * OpenAI-compatible provider.
3
+ * Works with OpenAI, OpenRouter, and any OpenAI-compatible API.
4
+ * Uses native fetch — no SDK dependency.
5
+ */
6
+ export class OpenAIProvider {
7
+ name = 'openai';
8
+ apiKey;
9
+ model;
10
+ baseUrl;
11
+ constructor(options) {
12
+ this.apiKey = options.apiKey;
13
+ this.model = options.model ?? 'gpt-4o';
14
+ this.baseUrl = options.baseUrl ?? 'https://api.openai.com';
15
+ }
16
+ async complete(messages, options) {
17
+ const body = {
18
+ model: this.model,
19
+ messages: messages.map(m => ({ role: m.role, content: m.content })),
20
+ };
21
+ if (options?.maxTokens !== undefined) {
22
+ body.max_tokens = options.maxTokens;
23
+ }
24
+ if (options?.temperature !== undefined) {
25
+ body.temperature = options.temperature;
26
+ }
27
+ if (options?.stop) {
28
+ body.stop = options.stop;
29
+ }
30
+ const response = await fetch(`${this.baseUrl}/v1/chat/completions`, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ 'Authorization': `Bearer ${this.apiKey}`,
35
+ },
36
+ body: JSON.stringify(body),
37
+ });
38
+ if (!response.ok) {
39
+ const error = await response.text();
40
+ throw new Error(`OpenAI API error (${response.status}): ${error}`);
41
+ }
42
+ const data = await response.json();
43
+ return {
44
+ content: data.choices?.[0]?.message?.content ?? '',
45
+ usage: {
46
+ input_tokens: data.usage?.prompt_tokens,
47
+ output_tokens: data.usage?.completion_tokens,
48
+ },
49
+ };
50
+ }
51
+ }
52
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../llm/providers/openai.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IACjB,MAAM,CAAS;IACf,KAAK,CAAS;IACd,OAAO,CAAS;IAExB,YAAY,OAA6D;QACvE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,wBAAwB,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,QAAsB,EAAE,OAA8B;QACnE,MAAM,IAAI,GAA4B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;SACpE,CAAC;QAEF,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACtC,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACzC,CAAC;QAED,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,sBAAsB,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACzC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAG/B,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE;YAClD,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa;gBACvC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB;aAC7C;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { LLMProvider, LLMProviderConfig } from './provider.js';
2
+ /**
3
+ * Resolve an LLMProvider from configuration.
4
+ */
5
+ export declare function resolveProvider(config: LLMProviderConfig): Promise<LLMProvider>;
6
+ /**
7
+ * Auto-detect LLM provider from environment.
8
+ * Checks in order: ANTHROPIC_API_KEY, OPENAI_API_KEY, Ollama running locally.
9
+ */
10
+ export declare function autoDetectProvider(): Promise<LLMProviderConfig>;
11
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../llm/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE/D;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBrF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAwBrE"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Resolve an LLMProvider from configuration.
3
+ */
4
+ export async function resolveProvider(config) {
5
+ switch (config.provider) {
6
+ case 'anthropic': {
7
+ const envVar = config.api_key_env ?? 'ANTHROPIC_API_KEY';
8
+ const apiKey = process.env[envVar];
9
+ if (!apiKey)
10
+ throw new Error(`Missing environment variable: ${envVar}`);
11
+ const { AnthropicProvider } = await import('./providers/anthropic.js');
12
+ return new AnthropicProvider({ apiKey, model: config.model, baseUrl: config.base_url });
13
+ }
14
+ case 'openai': {
15
+ const envVar = config.api_key_env ?? 'OPENAI_API_KEY';
16
+ const apiKey = process.env[envVar];
17
+ if (!apiKey)
18
+ throw new Error(`Missing environment variable: ${envVar}`);
19
+ const { OpenAIProvider } = await import('./providers/openai.js');
20
+ return new OpenAIProvider({ apiKey, model: config.model, baseUrl: config.base_url });
21
+ }
22
+ case 'ollama': {
23
+ const { OllamaProvider } = await import('./providers/ollama.js');
24
+ return new OllamaProvider({ model: config.model, baseUrl: config.base_url });
25
+ }
26
+ default:
27
+ throw new Error(`Unknown LLM provider: ${config.provider}. Supported: anthropic, openai, ollama`);
28
+ }
29
+ }
30
+ /**
31
+ * Auto-detect LLM provider from environment.
32
+ * Checks in order: ANTHROPIC_API_KEY, OPENAI_API_KEY, Ollama running locally.
33
+ */
34
+ export async function autoDetectProvider() {
35
+ if (process.env.ANTHROPIC_API_KEY) {
36
+ return { provider: 'anthropic' };
37
+ }
38
+ if (process.env.OPENAI_API_KEY) {
39
+ return { provider: 'openai' };
40
+ }
41
+ // Check if Ollama is running locally
42
+ try {
43
+ const res = await fetch('http://localhost:11434/api/version', {
44
+ signal: AbortSignal.timeout(2000),
45
+ });
46
+ if (res.ok)
47
+ return { provider: 'ollama' };
48
+ }
49
+ catch {
50
+ // Not running
51
+ }
52
+ throw new Error('No LLM provider detected.\n' +
53
+ 'Set ANTHROPIC_API_KEY or OPENAI_API_KEY, or start Ollama locally.\n' +
54
+ 'You can also configure a provider in .tastekit/tastekit.yaml under llm_provider.');
55
+ }
56
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../llm/resolve.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAyB;IAC7D,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,mBAAmB,CAAC;YACzD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YACvE,OAAO,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,gBAAgB,CAAC;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;YACxE,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACjE,OAAO,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YACjE,OAAO,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,wCAAwC,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,qCAAqC;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oCAAoC,EAAE;YAC5D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,6BAA6B;QAC7B,qEAAqE;QACrE,kFAAkF,CACnF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { BindingsServer } from '../schemas/bindings.js';
2
+ import { GuardrailsApproval } from '../schemas/guardrails.js';
3
+ import { MCPClient, MCPTool } from './client.js';
4
+ /**
5
+ * MCP Binder
6
+ *
7
+ * Binds MCP tools to the workspace and generates guardrails from MCP metadata.
8
+ */
9
+ export interface BindingOptions {
10
+ interactive?: boolean;
11
+ autoApproveRead?: boolean;
12
+ /**
13
+ * Custom tool selection callback. When provided and `interactive` is true,
14
+ * this function is called with discovered tools and should return the
15
+ * selected subset. This keeps @actrun_ai/tastekit-core free of UI dependencies —
16
+ * the CLI injects an inquirer-based implementation.
17
+ */
18
+ toolSelector?: (tools: MCPTool[]) => Promise<MCPTool[]>;
19
+ }
20
+ export declare class MCPBinder {
21
+ bindServer(client: MCPClient, serverName: string, serverUrl: string, options?: BindingOptions): Promise<{
22
+ bindings: BindingsServer;
23
+ guardrails: GuardrailsApproval[];
24
+ }>;
25
+ private createToolBinding;
26
+ private generateGuardrailsFromMetadata;
27
+ }
28
+ //# sourceMappingURL=binder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder.d.ts","sourceRoot":"","sources":["../../mcp/binder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,cAAc,EAAgB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACzD;AAED,qBAAa,SAAS;IACd,UAAU,CACd,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,kBAAkB,EAAE,CAAA;KAAE,CAAC;IAgD1E,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,8BAA8B;CAoCvC"}
@@ -0,0 +1,87 @@
1
+ export class MCPBinder {
2
+ async bindServer(client, serverName, serverUrl, options = {}) {
3
+ // Discover tools
4
+ const tools = await client.listTools();
5
+ const resources = await client.listResources();
6
+ const prompts = await client.listPrompts();
7
+ // Get fingerprint for trust
8
+ const fingerprint = await client.getFingerprint();
9
+ // Select tools
10
+ let selectedTools;
11
+ if (options.interactive && options.toolSelector) {
12
+ selectedTools = await options.toolSelector(tools);
13
+ }
14
+ else if (options.interactive) {
15
+ // Fallback: select all when no selector provided
16
+ selectedTools = tools;
17
+ }
18
+ else {
19
+ selectedTools = tools;
20
+ }
21
+ // Create bindings
22
+ const bindingsServer = {
23
+ name: serverName,
24
+ url: serverUrl,
25
+ pinned_fingerprint: fingerprint,
26
+ tools: selectedTools.map(tool => this.createToolBinding(tool)),
27
+ resources: resources.map(r => ({
28
+ resource_ref: `${serverName}:${r.uri}`,
29
+ uri_pattern: r.uri,
30
+ })),
31
+ prompts: prompts.map(p => ({
32
+ prompt_ref: `${serverName}:${p.name}`,
33
+ description: p.description,
34
+ })),
35
+ last_bind_at: new Date().toISOString(),
36
+ };
37
+ // Generate guardrails from MCP metadata
38
+ const guardrails = this.generateGuardrailsFromMetadata(selectedTools, serverName, options);
39
+ return { bindings: bindingsServer, guardrails };
40
+ }
41
+ createToolBinding(tool) {
42
+ const riskHints = [];
43
+ if (tool.annotations?.destructive) {
44
+ riskHints.push('destructive');
45
+ }
46
+ if (tool.annotations?.risk) {
47
+ riskHints.push(tool.annotations.risk);
48
+ }
49
+ return {
50
+ tool_ref: tool.name,
51
+ risk_hints: riskHints.length > 0 ? riskHints : undefined,
52
+ };
53
+ }
54
+ generateGuardrailsFromMetadata(tools, serverName, options) {
55
+ const guardrails = [];
56
+ for (const tool of tools) {
57
+ // Auto-generate approval rules based on MCP annotations
58
+ if (tool.annotations?.destructive) {
59
+ guardrails.push({
60
+ rule_id: `approve_${serverName}_${tool.name}`,
61
+ when: `tool_ref == "${serverName}:${tool.name}"`,
62
+ action: 'require_approval',
63
+ channel: 'cli',
64
+ });
65
+ }
66
+ else if (tool.annotations?.risk === 'high') {
67
+ guardrails.push({
68
+ rule_id: `approve_${serverName}_${tool.name}`,
69
+ when: `tool_ref == "${serverName}:${tool.name}"`,
70
+ action: 'require_approval',
71
+ channel: 'cli',
72
+ });
73
+ }
74
+ else if (!options.autoApproveRead) {
75
+ // For read-only tools, allow by default unless opted out
76
+ guardrails.push({
77
+ rule_id: `allow_${serverName}_${tool.name}`,
78
+ when: `tool_ref == "${serverName}:${tool.name}"`,
79
+ action: 'allow',
80
+ channel: 'cli',
81
+ });
82
+ }
83
+ }
84
+ return guardrails;
85
+ }
86
+ }
87
+ //# sourceMappingURL=binder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binder.js","sourceRoot":"","sources":["../../mcp/binder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * MCP Client
3
+ *
4
+ * Client for connecting to MCP servers and discovering tools/resources/prompts.
5
+ * Wraps the official @modelcontextprotocol/sdk for transport, discovery, and invocation.
6
+ *
7
+ * Supports two transport modes:
8
+ * - stdio: launches a local process (command + args)
9
+ * - streamable-http: connects to a remote HTTP endpoint
10
+ */
11
+ export interface MCPServerConfig {
12
+ name: string;
13
+ /** For stdio transport: the command to launch the server */
14
+ command?: string;
15
+ /** For stdio transport: arguments to the command */
16
+ args?: string[];
17
+ /** For stdio transport: environment variables */
18
+ env?: Record<string, string>;
19
+ /** For HTTP transport: the server URL */
20
+ url?: string;
21
+ /** Transport type (default: inferred from presence of command vs url) */
22
+ transport?: 'stdio' | 'streamable-http';
23
+ /** Previously pinned fingerprint */
24
+ fingerprint?: string;
25
+ }
26
+ /** Backward-compatible alias */
27
+ export type MCPServer = MCPServerConfig;
28
+ export interface MCPTool {
29
+ name: string;
30
+ description?: string;
31
+ inputSchema?: Record<string, unknown>;
32
+ annotations?: {
33
+ risk?: string;
34
+ destructive?: boolean;
35
+ readOnlyHint?: boolean;
36
+ openWorldHint?: boolean;
37
+ };
38
+ }
39
+ export interface MCPResource {
40
+ uri: string;
41
+ name?: string;
42
+ mimeType?: string;
43
+ description?: string;
44
+ }
45
+ export interface MCPPrompt {
46
+ name: string;
47
+ description?: string;
48
+ arguments?: Array<{
49
+ name: string;
50
+ description?: string;
51
+ required?: boolean;
52
+ }>;
53
+ }
54
+ export interface MCPToolResult {
55
+ content: Array<{
56
+ type: string;
57
+ text?: string;
58
+ data?: string;
59
+ mimeType?: string;
60
+ }>;
61
+ isError?: boolean;
62
+ }
63
+ export interface MCPServerCapabilities {
64
+ tools?: boolean;
65
+ resources?: boolean;
66
+ prompts?: boolean;
67
+ logging?: boolean;
68
+ }
69
+ export declare class MCPClient {
70
+ private config;
71
+ private connected;
72
+ private sdkClient;
73
+ private sdkTransport;
74
+ constructor(server: MCPServerConfig);
75
+ /**
76
+ * Connect to the MCP server using the appropriate transport.
77
+ *
78
+ * Requires `@modelcontextprotocol/sdk` to be installed. If it is not,
79
+ * throws with a clear install instruction.
80
+ */
81
+ connect(): Promise<void>;
82
+ disconnect(): Promise<void>;
83
+ listTools(): Promise<MCPTool[]>;
84
+ listResources(): Promise<MCPResource[]>;
85
+ listPrompts(): Promise<MCPPrompt[]>;
86
+ callTool(name: string, args?: Record<string, unknown>): Promise<MCPToolResult>;
87
+ /**
88
+ * Compute a fingerprint for trust pinning.
89
+ * Based on server identity + tool names + tool schemas (sorted, hashed).
90
+ */
91
+ getFingerprint(): Promise<string>;
92
+ getCapabilities(): Promise<MCPServerCapabilities>;
93
+ isConnected(): boolean;
94
+ getConfig(): MCPServerConfig;
95
+ private resolveTransport;
96
+ private ensureConnected;
97
+ private loadSDK;
98
+ }
99
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../mcp/client.ts"],"names":[],"mappings":"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"}