@vurb/core 3.2.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 (642) hide show
  1. package/README.md +677 -0
  2. package/dist/cli/args.d.ts +26 -0
  3. package/dist/cli/args.d.ts.map +1 -0
  4. package/dist/cli/args.js +117 -0
  5. package/dist/cli/args.js.map +1 -0
  6. package/dist/cli/commands/create.d.ts +11 -0
  7. package/dist/cli/commands/create.d.ts.map +1 -0
  8. package/dist/cli/commands/create.js +121 -0
  9. package/dist/cli/commands/create.js.map +1 -0
  10. package/dist/cli/commands/deploy.d.ts +3 -0
  11. package/dist/cli/commands/deploy.d.ts.map +1 -0
  12. package/dist/cli/commands/deploy.js +268 -0
  13. package/dist/cli/commands/deploy.js.map +1 -0
  14. package/dist/cli/commands/dev.d.ts +9 -0
  15. package/dist/cli/commands/dev.d.ts.map +1 -0
  16. package/dist/cli/commands/dev.js +58 -0
  17. package/dist/cli/commands/dev.js.map +1 -0
  18. package/dist/cli/commands/lock.d.ts +5 -0
  19. package/dist/cli/commands/lock.d.ts.map +1 -0
  20. package/dist/cli/commands/lock.js +94 -0
  21. package/dist/cli/commands/lock.js.map +1 -0
  22. package/dist/cli/commands/remote.d.ts +3 -0
  23. package/dist/cli/commands/remote.d.ts.map +1 -0
  24. package/dist/cli/commands/remote.js +37 -0
  25. package/dist/cli/commands/remote.js.map +1 -0
  26. package/dist/cli/constants.d.ts +18 -0
  27. package/dist/cli/constants.d.ts.map +1 -0
  28. package/dist/cli/constants.js +95 -0
  29. package/dist/cli/constants.js.map +1 -0
  30. package/dist/cli/progress.d.ts +34 -0
  31. package/dist/cli/progress.d.ts.map +1 -0
  32. package/dist/cli/progress.js +102 -0
  33. package/dist/cli/progress.js.map +1 -0
  34. package/dist/cli/rc.d.ts +11 -0
  35. package/dist/cli/rc.d.ts.map +1 -0
  36. package/dist/cli/rc.js +75 -0
  37. package/dist/cli/rc.js.map +1 -0
  38. package/dist/cli/registry.d.ts +25 -0
  39. package/dist/cli/registry.d.ts.map +1 -0
  40. package/dist/cli/registry.js +86 -0
  41. package/dist/cli/registry.js.map +1 -0
  42. package/dist/cli/scaffold.d.ts +10 -0
  43. package/dist/cli/scaffold.d.ts.map +1 -0
  44. package/dist/cli/scaffold.js +105 -0
  45. package/dist/cli/scaffold.js.map +1 -0
  46. package/dist/cli/templates/config.d.ts +14 -0
  47. package/dist/cli/templates/config.d.ts.map +1 -0
  48. package/dist/cli/templates/config.js +133 -0
  49. package/dist/cli/templates/config.js.map +1 -0
  50. package/dist/cli/templates/constants.d.ts +9 -0
  51. package/dist/cli/templates/constants.d.ts.map +1 -0
  52. package/dist/cli/templates/constants.js +9 -0
  53. package/dist/cli/templates/constants.js.map +1 -0
  54. package/dist/cli/templates/core.d.ts +14 -0
  55. package/dist/cli/templates/core.d.ts.map +1 -0
  56. package/dist/cli/templates/core.js +186 -0
  57. package/dist/cli/templates/core.js.map +1 -0
  58. package/dist/cli/templates/cursor.d.ts +8 -0
  59. package/dist/cli/templates/cursor.d.ts.map +1 -0
  60. package/dist/cli/templates/cursor.js +13 -0
  61. package/dist/cli/templates/cursor.js.map +1 -0
  62. package/dist/cli/templates/index.d.ts +17 -0
  63. package/dist/cli/templates/index.d.ts.map +1 -0
  64. package/dist/cli/templates/index.js +27 -0
  65. package/dist/cli/templates/index.js.map +1 -0
  66. package/dist/cli/templates/middleware.d.ts +7 -0
  67. package/dist/cli/templates/middleware.d.ts.map +1 -0
  68. package/dist/cli/templates/middleware.js +34 -0
  69. package/dist/cli/templates/middleware.js.map +1 -0
  70. package/dist/cli/templates/presenter.d.ts +7 -0
  71. package/dist/cli/templates/presenter.d.ts.map +1 -0
  72. package/dist/cli/templates/presenter.js +46 -0
  73. package/dist/cli/templates/presenter.js.map +1 -0
  74. package/dist/cli/templates/prompt.d.ts +7 -0
  75. package/dist/cli/templates/prompt.d.ts.map +1 -0
  76. package/dist/cli/templates/prompt.js +42 -0
  77. package/dist/cli/templates/prompt.js.map +1 -0
  78. package/dist/cli/templates/readme.d.ts +8 -0
  79. package/dist/cli/templates/readme.d.ts.map +1 -0
  80. package/dist/cli/templates/readme.js +173 -0
  81. package/dist/cli/templates/readme.js.map +1 -0
  82. package/dist/cli/templates/testing.d.ts +11 -0
  83. package/dist/cli/templates/testing.d.ts.map +1 -0
  84. package/dist/cli/templates/testing.js +101 -0
  85. package/dist/cli/templates/testing.js.map +1 -0
  86. package/dist/cli/templates/tools.d.ts +13 -0
  87. package/dist/cli/templates/tools.d.ts.map +1 -0
  88. package/dist/cli/templates/tools.js +63 -0
  89. package/dist/cli/templates/tools.js.map +1 -0
  90. package/dist/cli/templates/vectors/database.d.ts +9 -0
  91. package/dist/cli/templates/vectors/database.d.ts.map +1 -0
  92. package/dist/cli/templates/vectors/database.js +82 -0
  93. package/dist/cli/templates/vectors/database.js.map +1 -0
  94. package/dist/cli/templates/vectors/index.d.ts +9 -0
  95. package/dist/cli/templates/vectors/index.d.ts.map +1 -0
  96. package/dist/cli/templates/vectors/index.js +9 -0
  97. package/dist/cli/templates/vectors/index.js.map +1 -0
  98. package/dist/cli/templates/vectors/oauth.d.ts +10 -0
  99. package/dist/cli/templates/vectors/oauth.d.ts.map +1 -0
  100. package/dist/cli/templates/vectors/oauth.js +76 -0
  101. package/dist/cli/templates/vectors/oauth.js.map +1 -0
  102. package/dist/cli/templates/vectors/openapi.d.ts +10 -0
  103. package/dist/cli/templates/vectors/openapi.d.ts.map +1 -0
  104. package/dist/cli/templates/vectors/openapi.js +106 -0
  105. package/dist/cli/templates/vectors/openapi.js.map +1 -0
  106. package/dist/cli/templates/vectors/workflow.d.ts +7 -0
  107. package/dist/cli/templates/vectors/workflow.d.ts.map +1 -0
  108. package/dist/cli/templates/vectors/workflow.js +49 -0
  109. package/dist/cli/templates/vectors/workflow.js.map +1 -0
  110. package/dist/cli/types.d.ts +36 -0
  111. package/dist/cli/types.d.ts.map +1 -0
  112. package/dist/cli/types.js +10 -0
  113. package/dist/cli/types.js.map +1 -0
  114. package/dist/cli/utils.d.ts +27 -0
  115. package/dist/cli/utils.d.ts.map +1 -0
  116. package/dist/cli/utils.js +73 -0
  117. package/dist/cli/utils.js.map +1 -0
  118. package/dist/cli/vurb.d.ts +15 -0
  119. package/dist/cli/vurb.d.ts.map +1 -0
  120. package/dist/cli/vurb.js +87 -0
  121. package/dist/cli/vurb.js.map +1 -0
  122. package/dist/client/InferRouter.d.ts +92 -0
  123. package/dist/client/InferRouter.d.ts.map +1 -0
  124. package/dist/client/InferRouter.js +31 -0
  125. package/dist/client/InferRouter.js.map +1 -0
  126. package/dist/client/VurbClient.d.ts +282 -0
  127. package/dist/client/VurbClient.d.ts.map +1 -0
  128. package/dist/client/VurbClient.js +287 -0
  129. package/dist/client/VurbClient.js.map +1 -0
  130. package/dist/client/createTypedRegistry.d.ts +25 -0
  131. package/dist/client/createTypedRegistry.d.ts.map +1 -0
  132. package/dist/client/createTypedRegistry.js +74 -0
  133. package/dist/client/createTypedRegistry.js.map +1 -0
  134. package/dist/client/index.d.ts +6 -0
  135. package/dist/client/index.d.ts.map +1 -0
  136. package/dist/client/index.js +4 -0
  137. package/dist/client/index.js.map +1 -0
  138. package/dist/converters/ConverterBase.d.ts +68 -0
  139. package/dist/converters/ConverterBase.d.ts.map +1 -0
  140. package/dist/converters/ConverterBase.js +62 -0
  141. package/dist/converters/ConverterBase.js.map +1 -0
  142. package/dist/converters/GroupConverter.d.ts +33 -0
  143. package/dist/converters/GroupConverter.d.ts.map +1 -0
  144. package/dist/converters/GroupConverter.js +26 -0
  145. package/dist/converters/GroupConverter.js.map +1 -0
  146. package/dist/converters/PromptConverter.d.ts +33 -0
  147. package/dist/converters/PromptConverter.d.ts.map +1 -0
  148. package/dist/converters/PromptConverter.js +26 -0
  149. package/dist/converters/PromptConverter.js.map +1 -0
  150. package/dist/converters/ResourceConverter.d.ts +35 -0
  151. package/dist/converters/ResourceConverter.d.ts.map +1 -0
  152. package/dist/converters/ResourceConverter.js +28 -0
  153. package/dist/converters/ResourceConverter.js.map +1 -0
  154. package/dist/converters/ToolAnnotationsConverter.d.ts +33 -0
  155. package/dist/converters/ToolAnnotationsConverter.d.ts.map +1 -0
  156. package/dist/converters/ToolAnnotationsConverter.js +26 -0
  157. package/dist/converters/ToolAnnotationsConverter.js.map +1 -0
  158. package/dist/converters/ToolConverter.d.ts +35 -0
  159. package/dist/converters/ToolConverter.d.ts.map +1 -0
  160. package/dist/converters/ToolConverter.js +28 -0
  161. package/dist/converters/ToolConverter.js.map +1 -0
  162. package/dist/converters/index.d.ts +7 -0
  163. package/dist/converters/index.d.ts.map +1 -0
  164. package/dist/converters/index.js +7 -0
  165. package/dist/converters/index.js.map +1 -0
  166. package/dist/core/StandardSchema.d.ts +178 -0
  167. package/dist/core/StandardSchema.d.ts.map +1 -0
  168. package/dist/core/StandardSchema.js +174 -0
  169. package/dist/core/StandardSchema.js.map +1 -0
  170. package/dist/core/builder/ActionGroupBuilder.d.ts +208 -0
  171. package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -0
  172. package/dist/core/builder/ActionGroupBuilder.js +193 -0
  173. package/dist/core/builder/ActionGroupBuilder.js.map +1 -0
  174. package/dist/core/builder/ErrorBuilder.d.ts +59 -0
  175. package/dist/core/builder/ErrorBuilder.d.ts.map +1 -0
  176. package/dist/core/builder/ErrorBuilder.js +99 -0
  177. package/dist/core/builder/ErrorBuilder.js.map +1 -0
  178. package/dist/core/builder/FluentRouter.d.ts +96 -0
  179. package/dist/core/builder/FluentRouter.d.ts.map +1 -0
  180. package/dist/core/builder/FluentRouter.js +116 -0
  181. package/dist/core/builder/FluentRouter.js.map +1 -0
  182. package/dist/core/builder/FluentSchemaHelpers.d.ts +237 -0
  183. package/dist/core/builder/FluentSchemaHelpers.d.ts.map +1 -0
  184. package/dist/core/builder/FluentSchemaHelpers.js +227 -0
  185. package/dist/core/builder/FluentSchemaHelpers.js.map +1 -0
  186. package/dist/core/builder/FluentToolBuilder.d.ts +419 -0
  187. package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -0
  188. package/dist/core/builder/FluentToolBuilder.js +643 -0
  189. package/dist/core/builder/FluentToolBuilder.js.map +1 -0
  190. package/dist/core/builder/GroupedToolBuilder.d.ts +832 -0
  191. package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -0
  192. package/dist/core/builder/GroupedToolBuilder.js +1306 -0
  193. package/dist/core/builder/GroupedToolBuilder.js.map +1 -0
  194. package/dist/core/builder/ParamDescriptors.d.ts +142 -0
  195. package/dist/core/builder/ParamDescriptors.d.ts.map +1 -0
  196. package/dist/core/builder/ParamDescriptors.js +164 -0
  197. package/dist/core/builder/ParamDescriptors.js.map +1 -0
  198. package/dist/core/builder/ToolDefinitionCompiler.d.ts +37 -0
  199. package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -0
  200. package/dist/core/builder/ToolDefinitionCompiler.js +72 -0
  201. package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -0
  202. package/dist/core/builder/defineTool.d.ts +180 -0
  203. package/dist/core/builder/defineTool.d.ts.map +1 -0
  204. package/dist/core/builder/defineTool.js +164 -0
  205. package/dist/core/builder/defineTool.js.map +1 -0
  206. package/dist/core/builder/index.d.ts +13 -0
  207. package/dist/core/builder/index.d.ts.map +1 -0
  208. package/dist/core/builder/index.js +13 -0
  209. package/dist/core/builder/index.js.map +1 -0
  210. package/dist/core/createGroup.d.ts +140 -0
  211. package/dist/core/createGroup.d.ts.map +1 -0
  212. package/dist/core/createGroup.js +144 -0
  213. package/dist/core/createGroup.js.map +1 -0
  214. package/dist/core/execution/ConcurrencyGuard.d.ts +103 -0
  215. package/dist/core/execution/ConcurrencyGuard.d.ts.map +1 -0
  216. package/dist/core/execution/ConcurrencyGuard.js +147 -0
  217. package/dist/core/execution/ConcurrencyGuard.js.map +1 -0
  218. package/dist/core/execution/EgressGuard.d.ts +72 -0
  219. package/dist/core/execution/EgressGuard.d.ts.map +1 -0
  220. package/dist/core/execution/EgressGuard.js +163 -0
  221. package/dist/core/execution/EgressGuard.js.map +1 -0
  222. package/dist/core/execution/ExecutionPipeline.d.ts +67 -0
  223. package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -0
  224. package/dist/core/execution/ExecutionPipeline.js +176 -0
  225. package/dist/core/execution/ExecutionPipeline.js.map +1 -0
  226. package/dist/core/execution/MiddlewareCompiler.d.ts +35 -0
  227. package/dist/core/execution/MiddlewareCompiler.d.ts.map +1 -0
  228. package/dist/core/execution/MiddlewareCompiler.js +111 -0
  229. package/dist/core/execution/MiddlewareCompiler.js.map +1 -0
  230. package/dist/core/execution/MutationSerializer.d.ts +78 -0
  231. package/dist/core/execution/MutationSerializer.d.ts.map +1 -0
  232. package/dist/core/execution/MutationSerializer.js +106 -0
  233. package/dist/core/execution/MutationSerializer.js.map +1 -0
  234. package/dist/core/execution/PipelineHooks.d.ts +46 -0
  235. package/dist/core/execution/PipelineHooks.d.ts.map +1 -0
  236. package/dist/core/execution/PipelineHooks.js +66 -0
  237. package/dist/core/execution/PipelineHooks.js.map +1 -0
  238. package/dist/core/execution/ProgressHelper.d.ts +67 -0
  239. package/dist/core/execution/ProgressHelper.d.ts.map +1 -0
  240. package/dist/core/execution/ProgressHelper.js +59 -0
  241. package/dist/core/execution/ProgressHelper.js.map +1 -0
  242. package/dist/core/execution/ValidationErrorFormatter.d.ts +34 -0
  243. package/dist/core/execution/ValidationErrorFormatter.d.ts.map +1 -0
  244. package/dist/core/execution/ValidationErrorFormatter.js +193 -0
  245. package/dist/core/execution/ValidationErrorFormatter.js.map +1 -0
  246. package/dist/core/execution/index.d.ts +9 -0
  247. package/dist/core/execution/index.d.ts.map +1 -0
  248. package/dist/core/execution/index.js +9 -0
  249. package/dist/core/execution/index.js.map +1 -0
  250. package/dist/core/index.d.ts +34 -0
  251. package/dist/core/index.d.ts.map +1 -0
  252. package/dist/core/index.js +29 -0
  253. package/dist/core/index.js.map +1 -0
  254. package/dist/core/initVurb.d.ts +295 -0
  255. package/dist/core/initVurb.d.ts.map +1 -0
  256. package/dist/core/initVurb.js +171 -0
  257. package/dist/core/initVurb.js.map +1 -0
  258. package/dist/core/middleware/ContextDerivation.d.ts +124 -0
  259. package/dist/core/middleware/ContextDerivation.d.ts.map +1 -0
  260. package/dist/core/middleware/ContextDerivation.js +117 -0
  261. package/dist/core/middleware/ContextDerivation.js.map +1 -0
  262. package/dist/core/middleware/index.d.ts +4 -0
  263. package/dist/core/middleware/index.d.ts.map +1 -0
  264. package/dist/core/middleware/index.js +3 -0
  265. package/dist/core/middleware/index.js.map +1 -0
  266. package/dist/core/registry/ToolFilterEngine.d.ts +27 -0
  267. package/dist/core/registry/ToolFilterEngine.d.ts.map +1 -0
  268. package/dist/core/registry/ToolFilterEngine.js +45 -0
  269. package/dist/core/registry/ToolFilterEngine.js.map +1 -0
  270. package/dist/core/registry/ToolRegistry.d.ts +259 -0
  271. package/dist/core/registry/ToolRegistry.d.ts.map +1 -0
  272. package/dist/core/registry/ToolRegistry.js +343 -0
  273. package/dist/core/registry/ToolRegistry.js.map +1 -0
  274. package/dist/core/registry/index.d.ts +4 -0
  275. package/dist/core/registry/index.d.ts.map +1 -0
  276. package/dist/core/registry/index.js +3 -0
  277. package/dist/core/registry/index.js.map +1 -0
  278. package/dist/core/response.d.ts +289 -0
  279. package/dist/core/response.d.ts.map +1 -0
  280. package/dist/core/response.js +286 -0
  281. package/dist/core/response.js.map +1 -0
  282. package/dist/core/result.d.ts +93 -0
  283. package/dist/core/result.d.ts.map +1 -0
  284. package/dist/core/result.js +66 -0
  285. package/dist/core/result.js.map +1 -0
  286. package/dist/core/schema/AnnotationAggregator.d.ts +11 -0
  287. package/dist/core/schema/AnnotationAggregator.d.ts.map +1 -0
  288. package/dist/core/schema/AnnotationAggregator.js +40 -0
  289. package/dist/core/schema/AnnotationAggregator.js.map +1 -0
  290. package/dist/core/schema/DescriptionGenerator.d.ts +12 -0
  291. package/dist/core/schema/DescriptionGenerator.d.ts.map +1 -0
  292. package/dist/core/schema/DescriptionGenerator.js +81 -0
  293. package/dist/core/schema/DescriptionGenerator.js.map +1 -0
  294. package/dist/core/schema/SchemaGenerator.d.ts +15 -0
  295. package/dist/core/schema/SchemaGenerator.d.ts.map +1 -0
  296. package/dist/core/schema/SchemaGenerator.js +192 -0
  297. package/dist/core/schema/SchemaGenerator.js.map +1 -0
  298. package/dist/core/schema/SchemaUtils.d.ts +26 -0
  299. package/dist/core/schema/SchemaUtils.d.ts.map +1 -0
  300. package/dist/core/schema/SchemaUtils.js +85 -0
  301. package/dist/core/schema/SchemaUtils.js.map +1 -0
  302. package/dist/core/schema/ToonDescriptionGenerator.d.ts +3 -0
  303. package/dist/core/schema/ToonDescriptionGenerator.d.ts.map +1 -0
  304. package/dist/core/schema/ToonDescriptionGenerator.js +65 -0
  305. package/dist/core/schema/ToonDescriptionGenerator.js.map +1 -0
  306. package/dist/core/schema/index.d.ts +7 -0
  307. package/dist/core/schema/index.d.ts.map +1 -0
  308. package/dist/core/schema/index.js +7 -0
  309. package/dist/core/schema/index.js.map +1 -0
  310. package/dist/core/serialization/JsonSerializer.d.ts +71 -0
  311. package/dist/core/serialization/JsonSerializer.d.ts.map +1 -0
  312. package/dist/core/serialization/JsonSerializer.js +192 -0
  313. package/dist/core/serialization/JsonSerializer.js.map +1 -0
  314. package/dist/core/serialization/index.d.ts +7 -0
  315. package/dist/core/serialization/index.d.ts.map +1 -0
  316. package/dist/core/serialization/index.js +7 -0
  317. package/dist/core/serialization/index.js.map +1 -0
  318. package/dist/core/types.d.ts +303 -0
  319. package/dist/core/types.d.ts.map +1 -0
  320. package/dist/core/types.js +17 -0
  321. package/dist/core/types.js.map +1 -0
  322. package/dist/domain/Annotations.d.ts +42 -0
  323. package/dist/domain/Annotations.d.ts.map +1 -0
  324. package/dist/domain/Annotations.js +16 -0
  325. package/dist/domain/Annotations.js.map +1 -0
  326. package/dist/domain/BaseModel.d.ts +50 -0
  327. package/dist/domain/BaseModel.d.ts.map +1 -0
  328. package/dist/domain/BaseModel.js +41 -0
  329. package/dist/domain/BaseModel.js.map +1 -0
  330. package/dist/domain/Group.d.ts +99 -0
  331. package/dist/domain/Group.d.ts.map +1 -0
  332. package/dist/domain/Group.js +172 -0
  333. package/dist/domain/Group.js.map +1 -0
  334. package/dist/domain/GroupItem.d.ts +46 -0
  335. package/dist/domain/GroupItem.d.ts.map +1 -0
  336. package/dist/domain/GroupItem.js +58 -0
  337. package/dist/domain/GroupItem.js.map +1 -0
  338. package/dist/domain/Icon.d.ts +41 -0
  339. package/dist/domain/Icon.d.ts.map +1 -0
  340. package/dist/domain/Icon.js +15 -0
  341. package/dist/domain/Icon.js.map +1 -0
  342. package/dist/domain/Prompt.d.ts +49 -0
  343. package/dist/domain/Prompt.d.ts.map +1 -0
  344. package/dist/domain/Prompt.js +59 -0
  345. package/dist/domain/Prompt.js.map +1 -0
  346. package/dist/domain/PromptArgument.d.ts +23 -0
  347. package/dist/domain/PromptArgument.d.ts.map +1 -0
  348. package/dist/domain/PromptArgument.js +27 -0
  349. package/dist/domain/PromptArgument.js.map +1 -0
  350. package/dist/domain/Resource.d.ts +37 -0
  351. package/dist/domain/Resource.d.ts.map +1 -0
  352. package/dist/domain/Resource.js +39 -0
  353. package/dist/domain/Resource.js.map +1 -0
  354. package/dist/domain/Role.d.ts +23 -0
  355. package/dist/domain/Role.d.ts.map +1 -0
  356. package/dist/domain/Role.js +24 -0
  357. package/dist/domain/Role.js.map +1 -0
  358. package/dist/domain/Tool.d.ts +39 -0
  359. package/dist/domain/Tool.d.ts.map +1 -0
  360. package/dist/domain/Tool.js +41 -0
  361. package/dist/domain/Tool.js.map +1 -0
  362. package/dist/domain/ToolAnnotations.d.ts +48 -0
  363. package/dist/domain/ToolAnnotations.d.ts.map +1 -0
  364. package/dist/domain/ToolAnnotations.js +15 -0
  365. package/dist/domain/ToolAnnotations.js.map +1 -0
  366. package/dist/domain/index.d.ts +16 -0
  367. package/dist/domain/index.d.ts.map +1 -0
  368. package/dist/domain/index.js +13 -0
  369. package/dist/domain/index.js.map +1 -0
  370. package/dist/domain/utils.d.ts +6 -0
  371. package/dist/domain/utils.d.ts.map +1 -0
  372. package/dist/domain/utils.js +12 -0
  373. package/dist/domain/utils.js.map +1 -0
  374. package/dist/edge-stub.d.ts +73 -0
  375. package/dist/edge-stub.d.ts.map +1 -0
  376. package/dist/edge-stub.js +83 -0
  377. package/dist/edge-stub.js.map +1 -0
  378. package/dist/exposition/ExpositionCompiler.d.ts +66 -0
  379. package/dist/exposition/ExpositionCompiler.d.ts.map +1 -0
  380. package/dist/exposition/ExpositionCompiler.js +279 -0
  381. package/dist/exposition/ExpositionCompiler.js.map +1 -0
  382. package/dist/exposition/index.d.ts +4 -0
  383. package/dist/exposition/index.d.ts.map +1 -0
  384. package/dist/exposition/index.js +2 -0
  385. package/dist/exposition/index.js.map +1 -0
  386. package/dist/exposition/types.d.ts +58 -0
  387. package/dist/exposition/types.d.ts.map +1 -0
  388. package/dist/exposition/types.js +11 -0
  389. package/dist/exposition/types.js.map +1 -0
  390. package/dist/fsm/StateMachineGate.d.ts +294 -0
  391. package/dist/fsm/StateMachineGate.d.ts.map +1 -0
  392. package/dist/fsm/StateMachineGate.js +400 -0
  393. package/dist/fsm/StateMachineGate.js.map +1 -0
  394. package/dist/index.d.ts +148 -0
  395. package/dist/index.d.ts.map +1 -0
  396. package/dist/index.js +112 -0
  397. package/dist/index.js.map +1 -0
  398. package/dist/introspection/BehaviorDigest.d.ts +112 -0
  399. package/dist/introspection/BehaviorDigest.d.ts.map +1 -0
  400. package/dist/introspection/BehaviorDigest.js +149 -0
  401. package/dist/introspection/BehaviorDigest.js.map +1 -0
  402. package/dist/introspection/CapabilityLockfile.d.ts +261 -0
  403. package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
  404. package/dist/introspection/CapabilityLockfile.js +395 -0
  405. package/dist/introspection/CapabilityLockfile.js.map +1 -0
  406. package/dist/introspection/ContractAwareSelfHealing.d.ts +90 -0
  407. package/dist/introspection/ContractAwareSelfHealing.d.ts.map +1 -0
  408. package/dist/introspection/ContractAwareSelfHealing.js +132 -0
  409. package/dist/introspection/ContractAwareSelfHealing.js.map +1 -0
  410. package/dist/introspection/ContractDiff.d.ts +91 -0
  411. package/dist/introspection/ContractDiff.d.ts.map +1 -0
  412. package/dist/introspection/ContractDiff.js +466 -0
  413. package/dist/introspection/ContractDiff.js.map +1 -0
  414. package/dist/introspection/CryptoAttestation.d.ts +143 -0
  415. package/dist/introspection/CryptoAttestation.d.ts.map +1 -0
  416. package/dist/introspection/CryptoAttestation.js +192 -0
  417. package/dist/introspection/CryptoAttestation.js.map +1 -0
  418. package/dist/introspection/EntitlementScanner.d.ts +177 -0
  419. package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
  420. package/dist/introspection/EntitlementScanner.js +459 -0
  421. package/dist/introspection/EntitlementScanner.js.map +1 -0
  422. package/dist/introspection/GovernanceObserver.d.ts +88 -0
  423. package/dist/introspection/GovernanceObserver.d.ts.map +1 -0
  424. package/dist/introspection/GovernanceObserver.js +136 -0
  425. package/dist/introspection/GovernanceObserver.js.map +1 -0
  426. package/dist/introspection/IntrospectionResource.d.ts +20 -0
  427. package/dist/introspection/IntrospectionResource.d.ts.map +1 -0
  428. package/dist/introspection/IntrospectionResource.js +112 -0
  429. package/dist/introspection/IntrospectionResource.js.map +1 -0
  430. package/dist/introspection/ManifestCompiler.d.ts +33 -0
  431. package/dist/introspection/ManifestCompiler.d.ts.map +1 -0
  432. package/dist/introspection/ManifestCompiler.js +88 -0
  433. package/dist/introspection/ManifestCompiler.js.map +1 -0
  434. package/dist/introspection/SemanticProbe.d.ts +207 -0
  435. package/dist/introspection/SemanticProbe.d.ts.map +1 -0
  436. package/dist/introspection/SemanticProbe.js +274 -0
  437. package/dist/introspection/SemanticProbe.js.map +1 -0
  438. package/dist/introspection/TokenEconomics.d.ts +210 -0
  439. package/dist/introspection/TokenEconomics.d.ts.map +1 -0
  440. package/dist/introspection/TokenEconomics.js +292 -0
  441. package/dist/introspection/TokenEconomics.js.map +1 -0
  442. package/dist/introspection/ToolContract.d.ts +161 -0
  443. package/dist/introspection/ToolContract.d.ts.map +1 -0
  444. package/dist/introspection/ToolContract.js +218 -0
  445. package/dist/introspection/ToolContract.js.map +1 -0
  446. package/dist/introspection/canonicalize.d.ts +35 -0
  447. package/dist/introspection/canonicalize.d.ts.map +1 -0
  448. package/dist/introspection/canonicalize.js +72 -0
  449. package/dist/introspection/canonicalize.js.map +1 -0
  450. package/dist/introspection/index.d.ts +26 -0
  451. package/dist/introspection/index.d.ts.map +1 -0
  452. package/dist/introspection/index.js +24 -0
  453. package/dist/introspection/index.js.map +1 -0
  454. package/dist/introspection/types.d.ts +120 -0
  455. package/dist/introspection/types.d.ts.map +1 -0
  456. package/dist/introspection/types.js +13 -0
  457. package/dist/introspection/types.js.map +1 -0
  458. package/dist/observability/DebugObserver.d.ts +185 -0
  459. package/dist/observability/DebugObserver.d.ts.map +1 -0
  460. package/dist/observability/DebugObserver.js +102 -0
  461. package/dist/observability/DebugObserver.js.map +1 -0
  462. package/dist/observability/TelemetryBus.d.ts +88 -0
  463. package/dist/observability/TelemetryBus.d.ts.map +1 -0
  464. package/dist/observability/TelemetryBus.js +463 -0
  465. package/dist/observability/TelemetryBus.js.map +1 -0
  466. package/dist/observability/TelemetryEvent.d.ts +177 -0
  467. package/dist/observability/TelemetryEvent.d.ts.map +1 -0
  468. package/dist/observability/TelemetryEvent.js +2 -0
  469. package/dist/observability/TelemetryEvent.js.map +1 -0
  470. package/dist/observability/Tracing.d.ts +155 -0
  471. package/dist/observability/Tracing.d.ts.map +1 -0
  472. package/dist/observability/Tracing.js +67 -0
  473. package/dist/observability/Tracing.js.map +1 -0
  474. package/dist/observability/index.d.ts +13 -0
  475. package/dist/observability/index.d.ts.map +1 -0
  476. package/dist/observability/index.js +12 -0
  477. package/dist/observability/index.js.map +1 -0
  478. package/dist/presenter/PostProcessor.d.ts +52 -0
  479. package/dist/presenter/PostProcessor.d.ts.map +1 -0
  480. package/dist/presenter/PostProcessor.js +148 -0
  481. package/dist/presenter/PostProcessor.js.map +1 -0
  482. package/dist/presenter/Presenter.d.ts +575 -0
  483. package/dist/presenter/Presenter.d.ts.map +1 -0
  484. package/dist/presenter/Presenter.js +768 -0
  485. package/dist/presenter/Presenter.js.map +1 -0
  486. package/dist/presenter/PresenterValidationError.d.ts +42 -0
  487. package/dist/presenter/PresenterValidationError.d.ts.map +1 -0
  488. package/dist/presenter/PresenterValidationError.js +55 -0
  489. package/dist/presenter/PresenterValidationError.js.map +1 -0
  490. package/dist/presenter/RedactEngine.d.ts +110 -0
  491. package/dist/presenter/RedactEngine.d.ts.map +1 -0
  492. package/dist/presenter/RedactEngine.js +128 -0
  493. package/dist/presenter/RedactEngine.js.map +1 -0
  494. package/dist/presenter/ResponseBuilder.d.ts +262 -0
  495. package/dist/presenter/ResponseBuilder.d.ts.map +1 -0
  496. package/dist/presenter/ResponseBuilder.js +374 -0
  497. package/dist/presenter/ResponseBuilder.js.map +1 -0
  498. package/dist/presenter/SelectUtils.d.ts +78 -0
  499. package/dist/presenter/SelectUtils.d.ts.map +1 -0
  500. package/dist/presenter/SelectUtils.js +141 -0
  501. package/dist/presenter/SelectUtils.js.map +1 -0
  502. package/dist/presenter/ZodDescriptionExtractor.d.ts +54 -0
  503. package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
  504. package/dist/presenter/ZodDescriptionExtractor.js +131 -0
  505. package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
  506. package/dist/presenter/definePresenter.d.ts +193 -0
  507. package/dist/presenter/definePresenter.d.ts.map +1 -0
  508. package/dist/presenter/definePresenter.js +99 -0
  509. package/dist/presenter/definePresenter.js.map +1 -0
  510. package/dist/presenter/index.d.ts +21 -0
  511. package/dist/presenter/index.d.ts.map +1 -0
  512. package/dist/presenter/index.js +28 -0
  513. package/dist/presenter/index.js.map +1 -0
  514. package/dist/presenter/suggest.d.ts +39 -0
  515. package/dist/presenter/suggest.d.ts.map +1 -0
  516. package/dist/presenter/suggest.js +41 -0
  517. package/dist/presenter/suggest.js.map +1 -0
  518. package/dist/presenter/typeHelpers.d.ts +147 -0
  519. package/dist/presenter/typeHelpers.d.ts.map +1 -0
  520. package/dist/presenter/typeHelpers.js +152 -0
  521. package/dist/presenter/typeHelpers.js.map +1 -0
  522. package/dist/presenter/ui.d.ts +205 -0
  523. package/dist/presenter/ui.d.ts.map +1 -0
  524. package/dist/presenter/ui.js +222 -0
  525. package/dist/presenter/ui.js.map +1 -0
  526. package/dist/prompt/CursorCodec.d.ts +43 -0
  527. package/dist/prompt/CursorCodec.d.ts.map +1 -0
  528. package/dist/prompt/CursorCodec.js +171 -0
  529. package/dist/prompt/CursorCodec.js.map +1 -0
  530. package/dist/prompt/FluentPromptBuilder.d.ts +155 -0
  531. package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -0
  532. package/dist/prompt/FluentPromptBuilder.js +195 -0
  533. package/dist/prompt/FluentPromptBuilder.js.map +1 -0
  534. package/dist/prompt/HydrationSandbox.d.ts +55 -0
  535. package/dist/prompt/HydrationSandbox.d.ts.map +1 -0
  536. package/dist/prompt/HydrationSandbox.js +122 -0
  537. package/dist/prompt/HydrationSandbox.js.map +1 -0
  538. package/dist/prompt/PromptExecutionPipeline.d.ts +61 -0
  539. package/dist/prompt/PromptExecutionPipeline.d.ts.map +1 -0
  540. package/dist/prompt/PromptExecutionPipeline.js +177 -0
  541. package/dist/prompt/PromptExecutionPipeline.js.map +1 -0
  542. package/dist/prompt/PromptMessage.d.ts +133 -0
  543. package/dist/prompt/PromptMessage.d.ts.map +1 -0
  544. package/dist/prompt/PromptMessage.js +182 -0
  545. package/dist/prompt/PromptMessage.js.map +1 -0
  546. package/dist/prompt/PromptRegistry.d.ts +236 -0
  547. package/dist/prompt/PromptRegistry.d.ts.map +1 -0
  548. package/dist/prompt/PromptRegistry.js +399 -0
  549. package/dist/prompt/PromptRegistry.js.map +1 -0
  550. package/dist/prompt/definePrompt.d.ts +111 -0
  551. package/dist/prompt/definePrompt.d.ts.map +1 -0
  552. package/dist/prompt/definePrompt.js +130 -0
  553. package/dist/prompt/definePrompt.js.map +1 -0
  554. package/dist/prompt/index.d.ts +12 -0
  555. package/dist/prompt/index.d.ts.map +1 -0
  556. package/dist/prompt/index.js +13 -0
  557. package/dist/prompt/index.js.map +1 -0
  558. package/dist/prompt/types.d.ts +425 -0
  559. package/dist/prompt/types.d.ts.map +1 -0
  560. package/dist/prompt/types.js +19 -0
  561. package/dist/prompt/types.js.map +1 -0
  562. package/dist/sandbox/SandboxEngine.d.ts +225 -0
  563. package/dist/sandbox/SandboxEngine.d.ts.map +1 -0
  564. package/dist/sandbox/SandboxEngine.js +437 -0
  565. package/dist/sandbox/SandboxEngine.js.map +1 -0
  566. package/dist/sandbox/SandboxGuard.d.ts +47 -0
  567. package/dist/sandbox/SandboxGuard.d.ts.map +1 -0
  568. package/dist/sandbox/SandboxGuard.js +127 -0
  569. package/dist/sandbox/SandboxGuard.js.map +1 -0
  570. package/dist/sandbox/index.d.ts +23 -0
  571. package/dist/sandbox/index.d.ts.map +1 -0
  572. package/dist/sandbox/index.js +26 -0
  573. package/dist/sandbox/index.js.map +1 -0
  574. package/dist/server/DevServer.d.ts +120 -0
  575. package/dist/server/DevServer.d.ts.map +1 -0
  576. package/dist/server/DevServer.js +252 -0
  577. package/dist/server/DevServer.js.map +1 -0
  578. package/dist/server/ServerAttachment.d.ts +354 -0
  579. package/dist/server/ServerAttachment.d.ts.map +1 -0
  580. package/dist/server/ServerAttachment.js +709 -0
  581. package/dist/server/ServerAttachment.js.map +1 -0
  582. package/dist/server/ServerResolver.d.ts +24 -0
  583. package/dist/server/ServerResolver.d.ts.map +1 -0
  584. package/dist/server/ServerResolver.js +50 -0
  585. package/dist/server/ServerResolver.js.map +1 -0
  586. package/dist/server/autoDiscover.d.ts +75 -0
  587. package/dist/server/autoDiscover.d.ts.map +1 -0
  588. package/dist/server/autoDiscover.js +164 -0
  589. package/dist/server/autoDiscover.js.map +1 -0
  590. package/dist/server/index.d.ts +12 -0
  591. package/dist/server/index.d.ts.map +1 -0
  592. package/dist/server/index.js +11 -0
  593. package/dist/server/index.js.map +1 -0
  594. package/dist/server/startServer.d.ts +81 -0
  595. package/dist/server/startServer.d.ts.map +1 -0
  596. package/dist/server/startServer.js +143 -0
  597. package/dist/server/startServer.js.map +1 -0
  598. package/dist/state-sync/CausalEngine.d.ts +28 -0
  599. package/dist/state-sync/CausalEngine.d.ts.map +1 -0
  600. package/dist/state-sync/CausalEngine.js +17 -0
  601. package/dist/state-sync/CausalEngine.js.map +1 -0
  602. package/dist/state-sync/DescriptionDecorator.d.ts +31 -0
  603. package/dist/state-sync/DescriptionDecorator.d.ts.map +1 -0
  604. package/dist/state-sync/DescriptionDecorator.js +38 -0
  605. package/dist/state-sync/DescriptionDecorator.js.map +1 -0
  606. package/dist/state-sync/GlobMatcher.d.ts +29 -0
  607. package/dist/state-sync/GlobMatcher.d.ts.map +1 -0
  608. package/dist/state-sync/GlobMatcher.js +79 -0
  609. package/dist/state-sync/GlobMatcher.js.map +1 -0
  610. package/dist/state-sync/PolicyEngine.d.ts +75 -0
  611. package/dist/state-sync/PolicyEngine.d.ts.map +1 -0
  612. package/dist/state-sync/PolicyEngine.js +107 -0
  613. package/dist/state-sync/PolicyEngine.js.map +1 -0
  614. package/dist/state-sync/PolicyValidator.d.ts +67 -0
  615. package/dist/state-sync/PolicyValidator.d.ts.map +1 -0
  616. package/dist/state-sync/PolicyValidator.js +122 -0
  617. package/dist/state-sync/PolicyValidator.js.map +1 -0
  618. package/dist/state-sync/ResponseDecorator.d.ts +33 -0
  619. package/dist/state-sync/ResponseDecorator.d.ts.map +1 -0
  620. package/dist/state-sync/ResponseDecorator.js +20 -0
  621. package/dist/state-sync/ResponseDecorator.js.map +1 -0
  622. package/dist/state-sync/StateSyncBuilder.d.ts +77 -0
  623. package/dist/state-sync/StateSyncBuilder.d.ts.map +1 -0
  624. package/dist/state-sync/StateSyncBuilder.js +129 -0
  625. package/dist/state-sync/StateSyncBuilder.js.map +1 -0
  626. package/dist/state-sync/StateSyncLayer.d.ts +107 -0
  627. package/dist/state-sync/StateSyncLayer.d.ts.map +1 -0
  628. package/dist/state-sync/StateSyncLayer.js +158 -0
  629. package/dist/state-sync/StateSyncLayer.js.map +1 -0
  630. package/dist/state-sync/index.d.ts +27 -0
  631. package/dist/state-sync/index.d.ts.map +1 -0
  632. package/dist/state-sync/index.js +27 -0
  633. package/dist/state-sync/index.js.map +1 -0
  634. package/dist/state-sync/types.d.ts +174 -0
  635. package/dist/state-sync/types.d.ts.map +1 -0
  636. package/dist/state-sync/types.js +17 -0
  637. package/dist/state-sync/types.js.map +1 -0
  638. package/dist/testing/MvaMetaSymbol.d.ts +45 -0
  639. package/dist/testing/MvaMetaSymbol.d.ts.map +1 -0
  640. package/dist/testing/MvaMetaSymbol.js +34 -0
  641. package/dist/testing/MvaMetaSymbol.js.map +1 -0
  642. package/package.json +153 -0
@@ -0,0 +1,136 @@
1
+ import { SpanStatusCode } from '../observability/Tracing.js';
2
+ /**
3
+ * Create a governance observer that emits debug events and/or tracing
4
+ * spans for governance operations.
5
+ *
6
+ * @param config - Observer configuration (debug handler and/or tracer)
7
+ * @returns A `GovernanceObserver` instance
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { createGovernanceObserver } from 'vurb/introspection';
12
+ * import { createDebugObserver } from 'vurb';
13
+ *
14
+ * const observer = createGovernanceObserver({
15
+ * debug: createDebugObserver(),
16
+ * });
17
+ *
18
+ * const contracts = observer.observe(
19
+ * 'contract.compile',
20
+ * 'Compiling 5 tool contracts',
21
+ * () => compileContracts(builders),
22
+ * );
23
+ * ```
24
+ */
25
+ export function createGovernanceObserver(config) {
26
+ const { debug, tracer } = config;
27
+ function observe(operation, label, fn) {
28
+ const start = Date.now();
29
+ const span = tracer?.startSpan(`mcp.governance.${operation}`, {
30
+ attributes: {
31
+ 'mcp.governance.operation': operation,
32
+ 'mcp.governance.label': label,
33
+ },
34
+ });
35
+ try {
36
+ const result = fn();
37
+ // Bug #50: Runtime guard — reject async callbacks passed to sync observe()
38
+ if (result != null && typeof result['then'] === 'function') {
39
+ throw new Error('[Vurb] observe() received an async callback. Use observeAsync() for async operations.');
40
+ }
41
+ const durationMs = Date.now() - start;
42
+ span?.setAttribute('mcp.governance.outcome', 'success');
43
+ span?.setAttribute('mcp.durationMs', durationMs);
44
+ span?.setStatus({ code: SpanStatusCode.OK });
45
+ debug?.({
46
+ type: 'governance',
47
+ operation,
48
+ label,
49
+ outcome: 'success',
50
+ durationMs,
51
+ timestamp: Date.now(),
52
+ });
53
+ return result;
54
+ }
55
+ catch (err) {
56
+ const durationMs = Date.now() - start;
57
+ const message = err instanceof Error ? err.message : String(err);
58
+ span?.setAttribute('mcp.governance.outcome', 'failure');
59
+ span?.setAttribute('mcp.durationMs', durationMs);
60
+ span?.setStatus({ code: SpanStatusCode.ERROR, message });
61
+ span?.recordException(err instanceof Error ? err : new Error(message));
62
+ debug?.({
63
+ type: 'governance',
64
+ operation,
65
+ label,
66
+ outcome: 'failure',
67
+ detail: message,
68
+ durationMs,
69
+ timestamp: Date.now(),
70
+ });
71
+ throw err;
72
+ }
73
+ finally {
74
+ span?.end();
75
+ }
76
+ }
77
+ async function observeAsync(operation, label, fn) {
78
+ const start = Date.now();
79
+ const span = tracer?.startSpan(`mcp.governance.${operation}`, {
80
+ attributes: {
81
+ 'mcp.governance.operation': operation,
82
+ 'mcp.governance.label': label,
83
+ },
84
+ });
85
+ try {
86
+ const result = await fn();
87
+ const durationMs = Date.now() - start;
88
+ span?.setAttribute('mcp.governance.outcome', 'success');
89
+ span?.setAttribute('mcp.durationMs', durationMs);
90
+ span?.setStatus({ code: SpanStatusCode.OK });
91
+ debug?.({
92
+ type: 'governance',
93
+ operation,
94
+ label,
95
+ outcome: 'success',
96
+ durationMs,
97
+ timestamp: Date.now(),
98
+ });
99
+ return result;
100
+ }
101
+ catch (err) {
102
+ const durationMs = Date.now() - start;
103
+ const message = err instanceof Error ? err.message : String(err);
104
+ span?.setAttribute('mcp.governance.outcome', 'failure');
105
+ span?.setAttribute('mcp.durationMs', durationMs);
106
+ span?.setStatus({ code: SpanStatusCode.ERROR, message });
107
+ span?.recordException(err instanceof Error ? err : new Error(message));
108
+ debug?.({
109
+ type: 'governance',
110
+ operation,
111
+ label,
112
+ outcome: 'failure',
113
+ detail: message,
114
+ durationMs,
115
+ timestamp: Date.now(),
116
+ });
117
+ throw err;
118
+ }
119
+ finally {
120
+ span?.end();
121
+ }
122
+ }
123
+ return { observe, observeAsync };
124
+ }
125
+ /**
126
+ * Create a no-op governance observer.
127
+ *
128
+ * Used when observability is not configured. Zero overhead.
129
+ */
130
+ export function createNoopObserver() {
131
+ return {
132
+ observe: (_op, _label, fn) => fn(),
133
+ observeAsync: (_op, _label, fn) => fn(),
134
+ };
135
+ }
136
+ //# sourceMappingURL=GovernanceObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GovernanceObserver.js","sourceRoot":"","sources":["../../src/introspection/GovernanceObserver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { type ToolBuilder } from '../core/types.js';
2
+ import { type IntrospectionConfig } from './types.js';
3
+ /** Delegate interface for accessing registered builders (subset of ToolRegistry) */
4
+ export interface IntrospectionRegistryDelegate<TContext> {
5
+ /** Iterate over all registered builders */
6
+ values(): Iterable<ToolBuilder<TContext>>;
7
+ }
8
+ /**
9
+ * Register MCP Resource handlers for introspection on the low-level Server.
10
+ *
11
+ * Called by `attachToServer()` when `options.introspection.enabled` is `true`.
12
+ *
13
+ * @param server - The resolved low-level MCP Server instance
14
+ * @param config - Introspection configuration (from AttachOptions)
15
+ * @param serverName - Server name for the manifest payload
16
+ * @param builders - Registry delegate providing builder iteration
17
+ * @param contextFactory - Factory to create per-request context (from AttachOptions)
18
+ */
19
+ export declare function registerIntrospectionResource<TContext>(server: unknown, config: IntrospectionConfig<TContext>, serverName: string, builders: IntrospectionRegistryDelegate<TContext>, contextFactory?: (extra: unknown) => TContext | Promise<TContext>): void;
20
+ //# sourceMappingURL=IntrospectionResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntrospectionResource.d.ts","sourceRoot":"","sources":["../../src/introspection/IntrospectionResource.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,mBAAmB,EAAwB,MAAM,YAAY,CAAC;AA4B5E,oFAAoF;AACpF,MAAM,WAAW,6BAA6B,CAAC,QAAQ;IACnD,2CAA2C;IAC3C,MAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC7C;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAClD,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,6BAA6B,CAAC,QAAQ,CAAC,EACjD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAClE,IAAI,CA+DN"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * IntrospectionResource — MCP Resource Registration for Dynamic Manifest
3
+ *
4
+ * When introspection is enabled, this module silently registers two
5
+ * MCP request handlers on the low-level Server:
6
+ *
7
+ * 1. `resources/list` — Advertises the manifest resource
8
+ * 2. `resources/read` — Returns the RBAC-filtered manifest JSON
9
+ *
10
+ * Uses the native MCP Resource protocol — no custom HTTP endpoints.
11
+ * Zero overhead when introspection is disabled (this module is never imported).
12
+ *
13
+ * @module
14
+ */
15
+ import { ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
16
+ import {} from '../core/types.js';
17
+ import {} from './types.js';
18
+ import { compileManifest, cloneManifest } from './ManifestCompiler.js';
19
+ // ── Types ────────────────────────────────────────────────
20
+ /** Default URI for the introspection resource */
21
+ const DEFAULT_URI = 'vurb://manifest.json';
22
+ /** Default resource name */
23
+ const RESOURCE_NAME = 'Vurb Manifest';
24
+ /** Default resource description */
25
+ const RESOURCE_DESCRIPTION = 'Dynamic introspection manifest exposing all registered tools, actions, ' +
26
+ 'and presenters. RBAC-filtered per session context.';
27
+ /** Default MIME type for the manifest resource */
28
+ const RESOURCE_MIME_TYPE = 'application/json';
29
+ // ── Public API ───────────────────────────────────────────
30
+ /**
31
+ * Register MCP Resource handlers for introspection on the low-level Server.
32
+ *
33
+ * Called by `attachToServer()` when `options.introspection.enabled` is `true`.
34
+ *
35
+ * @param server - The resolved low-level MCP Server instance
36
+ * @param config - Introspection configuration (from AttachOptions)
37
+ * @param serverName - Server name for the manifest payload
38
+ * @param builders - Registry delegate providing builder iteration
39
+ * @param contextFactory - Factory to create per-request context (from AttachOptions)
40
+ */
41
+ export function registerIntrospectionResource(server, config, serverName, builders, contextFactory) {
42
+ const resolved = server;
43
+ const uri = config.uri ?? DEFAULT_URI;
44
+ // ── resources/list handler ────────────────────────────
45
+ // Advertises the manifest resource to clients/orchestrators
46
+ const existingListHandler = safeGetExistingListHandler(resolved);
47
+ resolved.setRequestHandler(ListResourcesRequestSchema, (() => {
48
+ // Merge with any previously registered resources
49
+ const existingResources = existingListHandler ? existingListHandler() : [];
50
+ return {
51
+ resources: [
52
+ ...existingResources,
53
+ {
54
+ uri,
55
+ name: RESOURCE_NAME,
56
+ description: RESOURCE_DESCRIPTION,
57
+ mimeType: RESOURCE_MIME_TYPE,
58
+ },
59
+ ],
60
+ };
61
+ }));
62
+ // ── resources/read handler ───────────────────────────
63
+ // Returns the RBAC-filtered manifest when requested
64
+ resolved.setRequestHandler(ReadResourceRequestSchema, (async (request, extra) => {
65
+ const requestedUri = request.params.uri;
66
+ // Only handle our manifest URI
67
+ if (requestedUri !== uri) {
68
+ return {
69
+ contents: [],
70
+ };
71
+ }
72
+ // Compile the full manifest from current registry state
73
+ const fullManifest = compileManifest(serverName, builders.values());
74
+ // Apply RBAC filter if configured
75
+ let manifest;
76
+ if (config.filter && contextFactory) {
77
+ const ctx = await contextFactory(extra);
78
+ // Clone before mutation to protect the compiled tree
79
+ manifest = config.filter(cloneManifest(fullManifest), ctx);
80
+ }
81
+ else {
82
+ manifest = fullManifest;
83
+ }
84
+ return {
85
+ contents: [
86
+ {
87
+ uri,
88
+ mimeType: RESOURCE_MIME_TYPE,
89
+ text: JSON.stringify(manifest, null, 2),
90
+ },
91
+ ],
92
+ };
93
+ }));
94
+ }
95
+ // ── Private Helpers ──────────────────────────────────────
96
+ /**
97
+ * Attempt to preserve an existing resources/list handler.
98
+ *
99
+ * Since the low-level Server replaces handlers (not appends), we
100
+ * capture any existing handler before overwriting it. This allows
101
+ * introspection to coexist with user-registered resources.
102
+ *
103
+ * @returns A function returning existing resources, or undefined
104
+ */
105
+ function safeGetExistingListHandler(_server) {
106
+ // The low-level MCP SDK doesn't expose a getter for existing handlers.
107
+ // For now, introspection assumes it's the first to register resources/list.
108
+ // If the user also registers resources, they should do so AFTER
109
+ // attachToServer() or use the high-level McpServer.resource() API.
110
+ return undefined;
111
+ }
112
+ //# sourceMappingURL=IntrospectionResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntrospectionResource.js","sourceRoot":"","sources":["../../src/introspection/IntrospectionResource.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,GAC5B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAkD,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEvE,4DAA4D;AAE5D,iDAAiD;AACjD,MAAM,WAAW,GAAG,sBAAsB,CAAC;AAE3C,4BAA4B;AAC5B,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,mCAAmC;AACnC,MAAM,oBAAoB,GACtB,yEAAyE;IACzE,oDAAoD,CAAC;AAEzD,kDAAkD;AAClD,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;AAiB9C,4DAA4D;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CACzC,MAAe,EACf,MAAqC,EACrC,UAAkB,EAClB,QAAiD,EACjD,cAAiE;IAEjE,MAAM,QAAQ,GAAG,MAAgC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,WAAW,CAAC;IAEtC,yDAAyD;IACzD,4DAA4D;IAC5D,MAAM,mBAAmB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAEjE,QAAQ,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE;QACzD,iDAAiD;QACjD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE3E,OAAO;YACH,SAAS,EAAE;gBACP,GAAG,iBAAiB;gBACpB;oBACI,GAAG;oBACH,IAAI,EAAE,aAAa;oBACnB,WAAW,EAAE,oBAAoB;oBACjC,QAAQ,EAAE,kBAAkB;iBAC/B;aACJ;SACJ,CAAC;IACN,CAAC,CAAkC,CAAC,CAAC;IAErC,wDAAwD;IACxD,oDAAoD;IACpD,QAAQ,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,CAAC,KAAK,EACxD,OAAoC,EACpC,KAAc,EAChB,EAAE;QACA,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QAExC,+BAA+B;QAC/B,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;YACvB,OAAO;gBACH,QAAQ,EAAE,EAAE;aACf,CAAC;QACN,CAAC;QAED,wDAAwD;QACxD,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpE,kCAAkC;QAClC,IAAI,QAAyB,CAAC;QAC9B,IAAI,MAAM,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YACxC,qDAAqD;YACrD,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACJ,QAAQ,GAAG,YAAY,CAAC;QAC5B,CAAC;QAED,OAAO;YACH,QAAQ,EAAE;gBACN;oBACI,GAAG;oBACH,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC1C;aACJ;SACJ,CAAC;IACN,CAAC,CAAkC,CAAC,CAAC;AACzC,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;GAQG;AACH,SAAS,0BAA0B,CAC/B,OAA+B;IAE/B,uEAAuE;IACvE,4EAA4E;IAC5E,gEAAgE;IAChE,mEAAmE;IACnE,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ManifestCompiler — Compiles the Dynamic Introspection Manifest
3
+ *
4
+ * Given a registry of tool builders, extracts all metadata (names,
5
+ * descriptions, action metadata, Zod→JSON Schema, presenter info)
6
+ * and compiles a structured {@link ManifestPayload}.
7
+ *
8
+ * The compiler operates on the **public** {@link ToolBuilder} interface,
9
+ * never accessing internals. This guarantees compatibility with custom
10
+ * builder implementations.
11
+ *
12
+ * Pure-function module: no state, no side effects.
13
+ *
14
+ * @module
15
+ */
16
+ import { type ToolBuilder } from '../core/types.js';
17
+ import { type ManifestPayload } from './types.js';
18
+ /**
19
+ * Compile a full manifest payload from a set of tool builders.
20
+ *
21
+ * @param serverName - The server name (from config or fallback)
22
+ * @param builders - Iterable of all registered tool builders
23
+ * @returns A deep-cloneable manifest payload
24
+ */
25
+ export declare function compileManifest<TContext>(serverName: string, builders: Iterable<ToolBuilder<TContext>>): ManifestPayload;
26
+ /**
27
+ * Deep-clone a manifest payload for safe mutation by the RBAC filter.
28
+ *
29
+ * Uses structured clone semantics via JSON round-trip (the manifest
30
+ * is a pure JSON-serializable object — no functions, no circular refs).
31
+ */
32
+ export declare function cloneManifest(manifest: ManifestPayload): ManifestPayload;
33
+ //# sourceMappingURL=ManifestCompiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestCompiler.d.ts","sourceRoot":"","sources":["../../src/introspection/ManifestCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACH,KAAK,eAAe,EAKvB,MAAM,YAAY,CAAC;AAYpB;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EACpC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAC1C,eAAe,CASjB;AAkDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAExE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * ManifestCompiler — Compiles the Dynamic Introspection Manifest
3
+ *
4
+ * Given a registry of tool builders, extracts all metadata (names,
5
+ * descriptions, action metadata, Zod→JSON Schema, presenter info)
6
+ * and compiles a structured {@link ManifestPayload}.
7
+ *
8
+ * The compiler operates on the **public** {@link ToolBuilder} interface,
9
+ * never accessing internals. This guarantees compatibility with custom
10
+ * builder implementations.
11
+ *
12
+ * Pure-function module: no state, no side effects.
13
+ *
14
+ * @module
15
+ */
16
+ import {} from '../core/types.js';
17
+ import {} from './types.js';
18
+ // ── Package Version ──────────────────────────────────────
19
+ /**
20
+ * Framework version injected into every manifest.
21
+ * Imported at build time — zero runtime FS overhead.
22
+ */
23
+ const VURB_VERSION = '1.1.0';
24
+ // ── Public API ───────────────────────────────────────────
25
+ /**
26
+ * Compile a full manifest payload from a set of tool builders.
27
+ *
28
+ * @param serverName - The server name (from config or fallback)
29
+ * @param builders - Iterable of all registered tool builders
30
+ * @returns A deep-cloneable manifest payload
31
+ */
32
+ export function compileManifest(serverName, builders) {
33
+ const capabilities = compileCapabilities(builders);
34
+ return {
35
+ server: serverName,
36
+ vurb_version: VURB_VERSION,
37
+ architecture: 'MVA (Model-View-Agent)',
38
+ capabilities,
39
+ };
40
+ }
41
+ // ── Internal Steps ───────────────────────────────────────
42
+ /** Compile tools and collect unique presenters across all builders. */
43
+ function compileCapabilities(builders) {
44
+ const tools = {};
45
+ const presenters = {};
46
+ for (const builder of builders) {
47
+ const toolDef = builder.buildToolDefinition();
48
+ const metadata = builder.getActionMetadata();
49
+ // Compile actions
50
+ const actions = {};
51
+ for (const action of metadata) {
52
+ const presenterName = action.presenterName;
53
+ actions[action.key] = {
54
+ description: action.description,
55
+ destructive: action.destructive,
56
+ idempotent: action.idempotent,
57
+ readOnly: action.readOnly,
58
+ required_fields: action.requiredFields,
59
+ returns_presenter: presenterName,
60
+ };
61
+ // Collect presenter stub (if not already registered)
62
+ if (presenterName && !presenters[presenterName]) {
63
+ presenters[presenterName] = {
64
+ schema_keys: action.presenterSchemaKeys ?? [],
65
+ ui_blocks_supported: action.presenterUiBlockTypes ?? [],
66
+ has_contextual_rules: action.presenterHasContextualRules ?? false,
67
+ };
68
+ }
69
+ }
70
+ tools[builder.getName()] = {
71
+ description: toolDef.description,
72
+ tags: builder.getTags(),
73
+ actions,
74
+ input_schema: toolDef.inputSchema,
75
+ };
76
+ }
77
+ return { tools, presenters };
78
+ }
79
+ /**
80
+ * Deep-clone a manifest payload for safe mutation by the RBAC filter.
81
+ *
82
+ * Uses structured clone semantics via JSON round-trip (the manifest
83
+ * is a pure JSON-serializable object — no functions, no circular refs).
84
+ */
85
+ export function cloneManifest(manifest) {
86
+ return JSON.parse(JSON.stringify(manifest));
87
+ }
88
+ //# sourceMappingURL=ManifestCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManifestCompiler.js","sourceRoot":"","sources":["../../src/introspection/ManifestCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAMN,MAAM,YAAY,CAAC;AAEpB,4DAA4D;AAE5D;;;GAGG;AACH,MAAM,YAAY,GAAG,OAAO,CAAC;AAE7B,4DAA4D;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC3B,UAAkB,EAClB,QAAyC;IAEzC,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAEnD,OAAO;QACH,MAAM,EAAE,UAAU;QAClB,YAAY,EAAE,YAAY;QAC1B,YAAY,EAAE,wBAAwB;QACtC,YAAY;KACf,CAAC;AACN,CAAC;AAED,4DAA4D;AAE5D,uEAAuE;AACvE,SAAS,mBAAmB,CACxB,QAAyC;IAEzC,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAsC,EAAE,CAAC;IAEzD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAE7C,kBAAkB;QAClB,MAAM,OAAO,GAAmC,EAAE,CAAC;QACnD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YAE3C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;gBAClB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,eAAe,EAAE,MAAM,CAAC,cAAc;gBACtC,iBAAiB,EAAE,aAAa;aACnC,CAAC;YAEF,qDAAqD;YACrD,IAAI,aAAa,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9C,UAAU,CAAC,aAAa,CAAC,GAAG;oBACxB,WAAW,EAAE,MAAM,CAAC,mBAAmB,IAAI,EAAE;oBAC7C,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,IAAI,EAAE;oBACvD,oBAAoB,EAAE,MAAM,CAAC,2BAA2B,IAAI,KAAK;iBACpE,CAAC;YACN,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG;YACvB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE;YACvB,OAAO;YACP,YAAY,EAAE,OAAO,CAAC,WAAW;SACpC,CAAC;IACN,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAyB;IACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAoB,CAAC;AACnE,CAAC"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * SemanticProbe — LLM-as-a-Judge for Opaque Behavior Detection
3
+ *
4
+ * **Evolution 2: Semantic Probing**
5
+ *
6
+ * Provides a framework for using an LLM to evaluate whether
7
+ * a tool handler's actual runtime behavior matches its declared
8
+ * behavioral contract. This detects "semantic drift" — situations
9
+ * where the handler's output changes meaning even when the
10
+ * egress schema and system rules remain structurally identical.
11
+ *
12
+ * **Architecture**: This module defines the probe protocol,
13
+ * types, and evaluation pipeline. The actual LLM invocation
14
+ * is delegated to user-provided adapters — the module never
15
+ * makes LLM calls directly, maintaining the "no hidden
16
+ * network dependencies" principle.
17
+ *
18
+ * **Testing integration**: Designed to be integrated with
19
+ * `VurbTester.callAction()` for automated regression
20
+ * testing: "given these inputs, does the output semantically
21
+ * match the previous known-good output?"
22
+ *
23
+ * Pure-function module for probe construction and evaluation;
24
+ * LLM interaction is async via pluggable adapters.
25
+ *
26
+ * @module
27
+ */
28
+ /**
29
+ * Configuration for semantic probing.
30
+ */
31
+ export interface SemanticProbeConfig {
32
+ /** The LLM adapter to use for evaluation */
33
+ readonly adapter: SemanticProbeAdapter;
34
+ /** Risk thresholds for classification */
35
+ readonly thresholds?: Partial<SemanticThresholds>;
36
+ /** Maximum number of probes to run in parallel */
37
+ readonly concurrency?: number;
38
+ /** Whether to include raw LLM responses in results */
39
+ readonly includeRawResponses?: boolean;
40
+ }
41
+ /**
42
+ * Pluggable LLM adapter for semantic evaluation.
43
+ *
44
+ * Implementations should call an LLM with the provided prompt
45
+ * and return the structured evaluation result.
46
+ */
47
+ export interface SemanticProbeAdapter {
48
+ /** Human-readable name (e.g., 'claude-3.5', 'gpt-4o') */
49
+ readonly name: string;
50
+ /**
51
+ * Send a semantic evaluation prompt to the LLM.
52
+ *
53
+ * @param prompt - Complete evaluation prompt
54
+ * @returns Raw LLM response text
55
+ */
56
+ evaluate(prompt: string): Promise<string>;
57
+ }
58
+ /**
59
+ * Thresholds for semantic drift classification.
60
+ */
61
+ export interface SemanticThresholds {
62
+ /** Score below which drift is considered 'high' (default: 0.5) */
63
+ readonly highDriftThreshold: number;
64
+ /** Score below which drift is considered 'medium' (default: 0.75) */
65
+ readonly mediumDriftThreshold: number;
66
+ }
67
+ /**
68
+ * A semantic probe definition — a structured test case
69
+ * for LLM-based behavioral evaluation.
70
+ */
71
+ export interface SemanticProbe {
72
+ /** Unique identifier for this probe */
73
+ readonly id: string;
74
+ /** Tool name being probed */
75
+ readonly toolName: string;
76
+ /** Action key being probed */
77
+ readonly actionKey: string;
78
+ /** Description of what this probe tests */
79
+ readonly description: string;
80
+ /** Input arguments to the tool */
81
+ readonly input: Record<string, unknown>;
82
+ /** Expected output (known-good baseline) */
83
+ readonly expectedOutput: unknown;
84
+ /** Actual output from the current handler */
85
+ readonly actualOutput: unknown;
86
+ /** Behavioral contract context for the judge */
87
+ readonly contractContext: ProbeContractContext;
88
+ }
89
+ /**
90
+ * Contract context injected into the LLM judge prompt.
91
+ *
92
+ * Provides the judge with enough information to evaluate
93
+ * whether the behavioral contract was violated.
94
+ */
95
+ export interface ProbeContractContext {
96
+ /** Tool description */
97
+ readonly description: string | undefined;
98
+ /** Whether the action is declared readOnly */
99
+ readonly readOnly: boolean;
100
+ /** Whether the action is declared destructive */
101
+ readonly destructive: boolean;
102
+ /** System rules that should be respected */
103
+ readonly systemRules: readonly string[];
104
+ /** Schema field names (expected output shape) */
105
+ readonly schemaKeys: readonly string[];
106
+ }
107
+ /**
108
+ * Result of a single semantic probe evaluation.
109
+ */
110
+ export interface SemanticProbeResult {
111
+ /** The probe that was evaluated */
112
+ readonly probe: SemanticProbe;
113
+ /** Semantic similarity score (0.0 = completely different, 1.0 = identical) */
114
+ readonly similarityScore: number;
115
+ /** Drift classification */
116
+ readonly driftLevel: DriftLevel;
117
+ /** Whether the behavioral contract was violated */
118
+ readonly contractViolated: boolean;
119
+ /** Specific violations detected by the judge */
120
+ readonly violations: readonly string[];
121
+ /** LLM judge's reasoning */
122
+ readonly reasoning: string;
123
+ /** Raw LLM response (if configured) */
124
+ readonly rawResponse: string | null;
125
+ /** ISO-8601 timestamp of evaluation */
126
+ readonly evaluatedAt: string;
127
+ }
128
+ /** Drift level classification */
129
+ export type DriftLevel = 'none' | 'low' | 'medium' | 'high';
130
+ /**
131
+ * Aggregated result of multiple semantic probes.
132
+ */
133
+ export interface SemanticProbeReport {
134
+ /** Tool name */
135
+ readonly toolName: string;
136
+ /** All individual probe results */
137
+ readonly results: readonly SemanticProbeResult[];
138
+ /** Overall drift assessment */
139
+ readonly overallDrift: DriftLevel;
140
+ /** Number of contract violations */
141
+ readonly violationCount: number;
142
+ /** Whether the tool is considered semantically stable */
143
+ readonly stable: boolean;
144
+ /** Human-readable summary */
145
+ readonly summary: string;
146
+ /** ISO-8601 timestamp */
147
+ readonly completedAt: string;
148
+ }
149
+ /**
150
+ * Create a semantic probe from input/output pairs.
151
+ *
152
+ * @param toolName - Tool name
153
+ * @param actionKey - Action key
154
+ * @param input - Input arguments
155
+ * @param expectedOutput - Known-good baseline output
156
+ * @param actualOutput - Current handler output
157
+ * @param contractContext - Behavioral contract context
158
+ * @returns A structured semantic probe
159
+ */
160
+ export declare function createProbe(toolName: string, actionKey: string, input: Record<string, unknown>, expectedOutput: unknown, actualOutput: unknown, contractContext: ProbeContractContext): SemanticProbe;
161
+ /**
162
+ * Build the evaluation prompt for the LLM judge.
163
+ *
164
+ * The prompt is structured to elicit a JSON-formatted response
165
+ * with specific fields for programmatic parsing.
166
+ *
167
+ * @param probe - The semantic probe to evaluate
168
+ * @returns Complete evaluation prompt
169
+ */
170
+ export declare function buildJudgePrompt(probe: SemanticProbe): string;
171
+ /**
172
+ * Parse the LLM judge's response into a structured result.
173
+ *
174
+ * Handles malformed responses gracefully by falling back
175
+ * to conservative defaults.
176
+ *
177
+ * @param probe - The probe that was evaluated
178
+ * @param rawResponse - Raw LLM response text
179
+ * @param config - Probe configuration
180
+ * @returns Structured probe result
181
+ */
182
+ export declare function parseJudgeResponse(probe: SemanticProbe, rawResponse: string, config: SemanticProbeConfig): SemanticProbeResult;
183
+ /**
184
+ * Run a complete semantic probe evaluation.
185
+ *
186
+ * @param probe - The probe to evaluate
187
+ * @param config - Probe configuration (includes LLM adapter)
188
+ * @returns Evaluation result
189
+ */
190
+ export declare function evaluateProbe(probe: SemanticProbe, config: SemanticProbeConfig): Promise<SemanticProbeResult>;
191
+ /**
192
+ * Run multiple probes and aggregate results.
193
+ *
194
+ * @param probes - Array of probes to evaluate
195
+ * @param config - Probe configuration
196
+ * @returns Aggregated report
197
+ */
198
+ export declare function evaluateProbes(probes: readonly SemanticProbe[], config: SemanticProbeConfig): Promise<SemanticProbeReport>;
199
+ /**
200
+ * Aggregate individual probe results into a report.
201
+ *
202
+ * @param toolName - Tool name
203
+ * @param results - Individual probe results
204
+ * @returns Aggregated report
205
+ */
206
+ export declare function aggregateResults(toolName: string, results: readonly SemanticProbeResult[]): SemanticProbeReport;
207
+ //# sourceMappingURL=SemanticProbe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticProbe.d.ts","sourceRoot":"","sources":["../../src/introspection/SemanticProbe.ts"],"names":[],"mappings":"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"}