@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,643 @@
1
+ /**
2
+ * FluentToolBuilder — Type-Chaining Builder for Semantic Verb Tools
3
+ *
4
+ * The core builder behind `f.query()`, `f.mutation()`, and `f.action()`.
5
+ * Uses TypeScript generic accumulation so that each fluent step narrows
6
+ * the types — the IDE "magically" knows the exact shape of `input` and
7
+ * `ctx` inside `.handle()` without any manual Interface declaration.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const f = initVurb<AppContext>();
12
+ *
13
+ * const listUsers = f.query('users.list')
14
+ * .describe('List users from the database')
15
+ * .withNumber('limit', 'Max results to return')
16
+ * .withOptionalEnum('status', ['active', 'inactive'], 'Filter by status')
17
+ * .returns(UserPresenter)
18
+ * .handle(async (input, ctx) => {
19
+ * return ctx.db.user.findMany({ take: input.limit });
20
+ * });
21
+ * ```
22
+ *
23
+ * @see {@link FluentRouter} for prefix grouping
24
+ * @see {@link initVurb} for the factory that creates these builders
25
+ *
26
+ * @module
27
+ */
28
+ import { z } from 'zod';
29
+ import { GroupedToolBuilder } from './GroupedToolBuilder.js';
30
+ import {} from '../types.js';
31
+ import { success, TOOL_RESPONSE_BRAND } from '../response.js';
32
+ import {} from '../../presenter/Presenter.js';
33
+ import {} from '../execution/ConcurrencyGuard.js';
34
+ import {} from '../../sandbox/SandboxEngine.js';
35
+ import { SANDBOX_SYSTEM_INSTRUCTION } from '../../sandbox/index.js';
36
+ import {} from '../middleware/ContextDerivation.js';
37
+ /** Defaults for `f.query()` — read-only, no side effects */
38
+ export const QUERY_DEFAULTS = { readOnly: true };
39
+ /** Defaults for `f.mutation()` — destructive, irreversible */
40
+ export const MUTATION_DEFAULTS = { destructive: true };
41
+ /** Defaults for `f.action()` — neutral, no assumptions */
42
+ export const ACTION_DEFAULTS = {};
43
+ // ── Array Item Type Resolution ───────────────────────────
44
+ /** Resolve Zod type from array item type string */
45
+ function resolveArrayItemType(itemType) {
46
+ switch (itemType) {
47
+ case 'string': return z.string();
48
+ case 'number': return z.number();
49
+ case 'boolean': return z.boolean();
50
+ }
51
+ }
52
+ // ── FluentToolBuilder ────────────────────────────────────
53
+ /**
54
+ * Fluent builder that accumulates types at each step.
55
+ *
56
+ * @typeParam TContext - Base application context (from `initVurb<TContext>()`)
57
+ * @typeParam TInput - Accumulated input type (built by `with*()` methods)
58
+ * @typeParam TCtx - Accumulated context type (enriched by `.use()`)
59
+ */
60
+ export class FluentToolBuilder {
61
+ /** @internal */ _name;
62
+ /** @internal */ _description;
63
+ /** @internal */ _instructions;
64
+ /** @internal */ _inputSchema;
65
+ /** @internal */ _withParams = {};
66
+ /** @internal */ _tags = [];
67
+ /**
68
+ * @internal Bug #118 fix: reject duplicate parameter names.
69
+ * All `withXxx()` methods delegate to this instead of assigning directly.
70
+ */
71
+ _addParam(name, schema) {
72
+ if (!name || !name.trim()) {
73
+ throw new Error(`Empty parameter name on tool "${this._name}". ` +
74
+ `Each parameter must have a non-empty name.`);
75
+ }
76
+ if (name in this._withParams) {
77
+ throw new Error(`Duplicate parameter name "${name}" on tool "${this._name}". ` +
78
+ `Each parameter must have a unique name.`);
79
+ }
80
+ this._withParams[name] = schema;
81
+ }
82
+ /** @internal */ _middlewares = [];
83
+ /** @internal */ _returns;
84
+ /** @internal */ _semanticDefaults;
85
+ /** @internal */ _readOnly;
86
+ /** @internal */ _destructive;
87
+ /** @internal */ _idempotent;
88
+ /** @internal */ _toonMode = false;
89
+ /** @internal */ _annotations;
90
+ /** @internal */ _invalidatesPatterns = [];
91
+ /** @internal */ _cacheControl;
92
+ /** @internal */ _concurrency;
93
+ /** @internal */ _egressMaxBytes;
94
+ /** @internal */ _sandboxConfig;
95
+ /** @internal */ _handlerSet = false;
96
+ /** @internal */ _fsmStates;
97
+ /** @internal */ _fsmTransition;
98
+ /**
99
+ * @param name - Tool name in `domain.action` format (e.g. `'users.list'`)
100
+ * @param defaults - Semantic defaults from the verb (`query`, `mutation`, `action`)
101
+ */
102
+ constructor(name, defaults = {}) {
103
+ if (!name || !name.trim()) {
104
+ throw new Error('Tool name must be a non-empty string. ' +
105
+ 'Use the "domain.action" format (e.g. "users.list").');
106
+ }
107
+ this._name = name;
108
+ this._semanticDefaults = defaults;
109
+ }
110
+ // ── Configuration (fluent, each returns narrowed type) ──
111
+ /**
112
+ * Set the tool description shown to the LLM.
113
+ *
114
+ * @param text - Human-readable description
115
+ * @returns `this` for chaining
116
+ */
117
+ describe(text) {
118
+ this._description = text;
119
+ return this;
120
+ }
121
+ /**
122
+ * Set AI-First instructions — injected as system-level guidance in the tool description.
123
+ *
124
+ * This is **Prompt Engineering embedded in the framework**. The instructions
125
+ * tell the LLM WHEN and HOW to use this tool, reducing hallucination.
126
+ *
127
+ * @param text - System prompt for the tool
128
+ * @returns `this` for chaining
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * f.query('docs.search')
133
+ * .describe('Search internal documentation')
134
+ * .instructions('Use ONLY when the user asks about internal policies.')
135
+ * .withString('query', 'Search term')
136
+ * .handle(async (input) => { ... });
137
+ * ```
138
+ */
139
+ instructions(text) {
140
+ this._instructions = text;
141
+ return this;
142
+ }
143
+ // ── Parameter Declaration (with* methods) ────────────
144
+ /**
145
+ * Add a required string parameter.
146
+ *
147
+ * @param name - Parameter name
148
+ * @param description - Human-readable description for the LLM
149
+ * @returns Builder with narrowed `TInput` type
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * f.query('projects.get')
154
+ * .withString('project_id', 'The project ID to retrieve')
155
+ * .handle(async (input) => { ... });
156
+ * // input.project_id: string ✅
157
+ * ```
158
+ */
159
+ withString(name, description) {
160
+ this._addParam(name, description ? z.string().describe(description) : z.string());
161
+ return this;
162
+ }
163
+ /**
164
+ * Add an optional string parameter.
165
+ *
166
+ * @param name - Parameter name
167
+ * @param description - Human-readable description for the LLM
168
+ * @returns Builder with narrowed `TInput` type
169
+ */
170
+ withOptionalString(name, description) {
171
+ const base = description ? z.string().describe(description) : z.string();
172
+ this._addParam(name, base.optional());
173
+ return this;
174
+ }
175
+ /**
176
+ * Add a required number parameter.
177
+ *
178
+ * @param name - Parameter name
179
+ * @param description - Human-readable description for the LLM
180
+ * @returns Builder with narrowed `TInput` type
181
+ */
182
+ withNumber(name, description) {
183
+ this._addParam(name, description ? z.number().describe(description) : z.number());
184
+ return this;
185
+ }
186
+ /**
187
+ * Add an optional number parameter.
188
+ *
189
+ * @param name - Parameter name
190
+ * @param description - Human-readable description for the LLM
191
+ * @returns Builder with narrowed `TInput` type
192
+ */
193
+ withOptionalNumber(name, description) {
194
+ const base = description ? z.number().describe(description) : z.number();
195
+ this._addParam(name, base.optional());
196
+ return this;
197
+ }
198
+ /**
199
+ * Add a required boolean parameter.
200
+ *
201
+ * @param name - Parameter name
202
+ * @param description - Human-readable description for the LLM
203
+ * @returns Builder with narrowed `TInput` type
204
+ */
205
+ withBoolean(name, description) {
206
+ this._addParam(name, description ? z.boolean().describe(description) : z.boolean());
207
+ return this;
208
+ }
209
+ /**
210
+ * Add an optional boolean parameter.
211
+ *
212
+ * @param name - Parameter name
213
+ * @param description - Human-readable description for the LLM
214
+ * @returns Builder with narrowed `TInput` type
215
+ */
216
+ withOptionalBoolean(name, description) {
217
+ const base = description ? z.boolean().describe(description) : z.boolean();
218
+ this._addParam(name, base.optional());
219
+ return this;
220
+ }
221
+ /**
222
+ * Add a required enum parameter.
223
+ *
224
+ * @param name - Parameter name
225
+ * @param values - Allowed enum values
226
+ * @param description - Human-readable description for the LLM
227
+ * @returns Builder with narrowed `TInput` type
228
+ *
229
+ * @example
230
+ * ```typescript
231
+ * f.query('invoices.list')
232
+ * .withEnum('status', ['draft', 'sent', 'paid'], 'Filter by status')
233
+ * .handle(async (input) => { ... });
234
+ * // input.status: 'draft' | 'sent' | 'paid' ✅
235
+ * ```
236
+ */
237
+ withEnum(name, values, description) {
238
+ const schema = z.enum(values);
239
+ this._addParam(name, description ? schema.describe(description) : schema);
240
+ return this;
241
+ }
242
+ /**
243
+ * Add an optional enum parameter.
244
+ *
245
+ * @param name - Parameter name
246
+ * @param values - Allowed enum values
247
+ * @param description - Human-readable description for the LLM
248
+ * @returns Builder with narrowed `TInput` type
249
+ */
250
+ withOptionalEnum(name, values, description) {
251
+ const schema = z.enum(values);
252
+ this._addParam(name, description ? schema.describe(description).optional() : schema.optional());
253
+ return this;
254
+ }
255
+ /**
256
+ * Add a required array parameter.
257
+ *
258
+ * @param name - Parameter name
259
+ * @param itemType - Type of array items (`'string'`, `'number'`, `'boolean'`)
260
+ * @param description - Human-readable description for the LLM
261
+ * @returns Builder with narrowed `TInput` type
262
+ *
263
+ * @example
264
+ * ```typescript
265
+ * f.mutation('tasks.tag')
266
+ * .withString('task_id', 'The task to tag')
267
+ * .withArray('tags', 'string', 'Tags to apply')
268
+ * .handle(async (input) => { ... });
269
+ * // input.tags: string[] ✅
270
+ * ```
271
+ */
272
+ withArray(name, itemType, description) {
273
+ const schema = z.array(resolveArrayItemType(itemType));
274
+ this._addParam(name, description ? schema.describe(description) : schema);
275
+ return this;
276
+ }
277
+ /**
278
+ * Add an optional array parameter.
279
+ *
280
+ * @param name - Parameter name
281
+ * @param itemType - Type of array items (`'string'`, `'number'`, `'boolean'`)
282
+ * @param description - Human-readable description for the LLM
283
+ * @returns Builder with narrowed `TInput` type
284
+ */
285
+ withOptionalArray(name, itemType, description) {
286
+ const schema = z.array(resolveArrayItemType(itemType));
287
+ this._addParam(name, description ? schema.describe(description).optional() : schema.optional());
288
+ return this;
289
+ }
290
+ use(mw) {
291
+ // Handle MiddlewareDefinition from f.middleware()
292
+ if (typeof mw === 'object' && mw !== null && '__brand' in mw && mw.__brand === 'MiddlewareDefinition') {
293
+ const def = mw;
294
+ this._middlewares.push(def.toMiddlewareFn());
295
+ return this;
296
+ }
297
+ // Handle inline function
298
+ const inlineMw = mw;
299
+ // Convert the fluent middleware signature to the standard MiddlewareFn
300
+ const standardMw = async (ctx, args, next) => {
301
+ const wrappedNext = async (enrichedCtx) => {
302
+ // Bug #78 fix: sanitize enriched context before merging
303
+ // to prevent prototype pollution via __proto__/constructor/prototype keys.
304
+ const safe = enrichedCtx;
305
+ const target = ctx;
306
+ for (const key of Object.keys(safe)) {
307
+ if (key === '__proto__' || key === 'constructor' || key === 'prototype')
308
+ continue;
309
+ target[key] = safe[key];
310
+ }
311
+ return next();
312
+ };
313
+ return inlineMw({ ctx: ctx, next: wrappedNext });
314
+ };
315
+ this._middlewares.push(standardMw);
316
+ return this;
317
+ }
318
+ /**
319
+ * Set the MVA Presenter for automatic response formatting.
320
+ *
321
+ * When a Presenter is attached, the handler can return raw data
322
+ * and the framework pipes it through schema validation, system rules,
323
+ * and UI block generation.
324
+ *
325
+ * @param presenter - A Presenter instance
326
+ * @returns `this` for chaining
327
+ */
328
+ returns(presenter) {
329
+ this._returns = presenter;
330
+ return this;
331
+ }
332
+ /**
333
+ * Add capability tags for selective tool exposure.
334
+ *
335
+ * Tags are accumulated — calling `.tags()` multiple times
336
+ * (or inheriting from a router) appends rather than replaces.
337
+ *
338
+ * @param tags - Tag strings for filtering
339
+ * @returns `this` for chaining
340
+ */
341
+ tags(...tags) {
342
+ this._tags.push(...tags);
343
+ return this;
344
+ }
345
+ // ── Semantic Overrides ───────────────────────────────
346
+ /** Override: mark this tool as read-only (no side effects) */
347
+ readOnly() {
348
+ this._readOnly = true;
349
+ return this;
350
+ }
351
+ /** Override: mark this tool as destructive (irreversible) */
352
+ destructive() {
353
+ this._destructive = true;
354
+ return this;
355
+ }
356
+ /** Override: mark this tool as idempotent (safe to retry) */
357
+ idempotent() {
358
+ this._idempotent = true;
359
+ return this;
360
+ }
361
+ /**
362
+ * Enable TOON-formatted descriptions for token optimization.
363
+ *
364
+ * @returns `this` for chaining
365
+ */
366
+ toonDescription() {
367
+ this._toonMode = true;
368
+ return this;
369
+ }
370
+ /**
371
+ * Set MCP tool annotations.
372
+ *
373
+ * @param a - Annotation key-value pairs
374
+ * @returns `this` for chaining
375
+ */
376
+ annotations(a) {
377
+ this._annotations = { ...this._annotations, ...a };
378
+ return this;
379
+ }
380
+ // ── State Sync (Fluent) ──────────────────────────────
381
+ /**
382
+ * Declare glob patterns invalidated when this tool succeeds.
383
+ *
384
+ * @param patterns - Glob patterns (e.g. `'sprints.*'`, `'tasks.*'`)
385
+ * @returns `this` for chaining
386
+ */
387
+ invalidates(...patterns) {
388
+ this._invalidatesPatterns.push(...patterns);
389
+ return this;
390
+ }
391
+ /**
392
+ * Mark this tool's data as immutable (safe to cache forever).
393
+ *
394
+ * @returns `this` for chaining
395
+ */
396
+ cached() {
397
+ this._cacheControl = 'immutable';
398
+ return this;
399
+ }
400
+ /**
401
+ * Mark this tool's data as volatile (never cache).
402
+ *
403
+ * @returns `this` for chaining
404
+ */
405
+ stale() {
406
+ this._cacheControl = 'no-store';
407
+ return this;
408
+ }
409
+ // ── Runtime Guards (Fluent) ──────────────────────────
410
+ /**
411
+ * Set concurrency limits for this tool (Semaphore + Queue pattern).
412
+ *
413
+ * @param config - Concurrency configuration
414
+ * @returns `this` for chaining
415
+ */
416
+ concurrency(config) {
417
+ this._concurrency = config;
418
+ return this;
419
+ }
420
+ /**
421
+ * Set maximum payload size for tool responses (Egress Guard).
422
+ *
423
+ * @param bytes - Maximum payload size in bytes
424
+ * @returns `this` for chaining
425
+ */
426
+ egress(bytes) {
427
+ this._egressMaxBytes = bytes;
428
+ return this;
429
+ }
430
+ // ── Sandbox (Zero-Trust Compute) ─────────────────
431
+ /**
432
+ * Enable zero-trust sandboxed execution for this tool.
433
+ *
434
+ * When enabled:
435
+ * 1. A `SandboxEngine` is lazily created on the `GroupedToolBuilder`
436
+ * 2. A system instruction is auto-injected into the tool description
437
+ * (HATEOAS auto-prompting) so the LLM knows to send JS functions
438
+ * 3. The handler can use `SandboxEngine.execute()` to run LLM code
439
+ * in a sealed V8 isolate (no process, require, fs, network)
440
+ *
441
+ * @param config - Optional sandbox configuration (timeout, memory, output size)
442
+ * @returns `this` for chaining
443
+ *
444
+ * @example
445
+ * ```typescript
446
+ * f.query('data.compute')
447
+ * .describe('Run safe computation on server data')
448
+ * .sandboxed({ timeout: 3000, memoryLimit: 64 })
449
+ * .withString('expression', 'JS arrow function: (data) => result')
450
+ * .handle(async (input, ctx) => {
451
+ * const data = await ctx.db.records.findMany();
452
+ * const engine = new SandboxEngine({ timeout: 3000 });
453
+ * const result = await engine.execute(input.expression, data);
454
+ * return result.ok ? result.value : { error: result.error };
455
+ * });
456
+ * ```
457
+ */
458
+ sandboxed(config) {
459
+ this._sandboxConfig = config ?? {};
460
+ return this;
461
+ }
462
+ // ── FSM State Gate (Temporal Anti-Hallucination) ─────
463
+ /**
464
+ * Bind this tool to specific FSM states.
465
+ *
466
+ * When a `StateMachineGate` is configured on the server, this tool
467
+ * will only appear in `tools/list` when the FSM is in one of the
468
+ * specified states. The LLM physically cannot call tools that
469
+ * don't exist in its reality.
470
+ *
471
+ * @param states - FSM state(s) where this tool is visible
472
+ * @param transition - Event to send to the FSM on successful execution
473
+ * @returns `this` for chaining
474
+ *
475
+ * @example
476
+ * ```typescript
477
+ * // Visible only in 'has_items' state, sends CHECKOUT on success
478
+ * const checkout = f.mutation('cart.checkout')
479
+ * .bindState('has_items', 'CHECKOUT')
480
+ * .handle(async (input, ctx) => { ... });
481
+ *
482
+ * // Visible in multiple states
483
+ * const addItem = f.mutation('cart.add_item')
484
+ * .bindState(['empty', 'has_items'], 'ADD_ITEM')
485
+ * .handle(async (input, ctx) => { ... });
486
+ * ```
487
+ */
488
+ bindState(states, transition) {
489
+ this._fsmStates = Array.isArray(states) ? states : [states];
490
+ if (transition !== undefined)
491
+ this._fsmTransition = transition;
492
+ return this;
493
+ }
494
+ // ── Terminal: handle() ───────────────────────────────
495
+ /**
496
+ * Set the handler and build the tool — the terminal step.
497
+ *
498
+ * The handler receives `(input, ctx)` with fully typed `TInput` and `TCtx`.
499
+ * **Implicit `success()` wrapping**: if the handler returns raw data
500
+ * (not a `ToolResponse`), the framework wraps it with `success()`.
501
+ *
502
+ * @param handler - Async function receiving typed `(input, ctx)`
503
+ * @returns A `GroupedToolBuilder` ready for registration
504
+ *
505
+ * @example
506
+ * ```typescript
507
+ * const getProject = f.query('projects.get')
508
+ * .describe('Get a project by ID')
509
+ * .withString('project_id', 'The exact project ID')
510
+ * .handle(async (input, ctx) => {
511
+ * return await ctx.db.projects.findUnique({ where: { id: input.project_id } });
512
+ * });
513
+ * ```
514
+ */
515
+ handle(handler) {
516
+ return this._build(handler);
517
+ }
518
+ /**
519
+ * Alias for `.handle()` — for backward compatibility.
520
+ * @internal
521
+ */
522
+ resolve(handler) {
523
+ // Adapt { input, ctx } signature to (input, ctx)
524
+ return this._build((input, ctx) => handler({ input, ctx }));
525
+ }
526
+ // ── Internal Build ───────────────────────────────────
527
+ /** @internal */
528
+ _build(handler) {
529
+ // Bug #123 fix: guard against double-invocation of handle()/resolve()
530
+ if (this._handlerSet) {
531
+ throw new Error(`handle() already called on tool "${this._name}". ` +
532
+ `Each FluentToolBuilder can only have one handler.`);
533
+ }
534
+ this._handlerSet = true;
535
+ // Build accumulated with* params into ZodObject
536
+ if (Object.keys(this._withParams).length > 0) {
537
+ this._inputSchema = z.object(this._withParams);
538
+ }
539
+ // Parse name: 'domain.action' → tool='domain', action='action'
540
+ const dotIndex = this._name.indexOf('.');
541
+ // Bug #109 fix: reject multi-dot names early with a clear error.
542
+ if (dotIndex > 0 && this._name.indexOf('.', dotIndex + 1) !== -1) {
543
+ throw new Error(`Tool name '${this._name}' has too many dot-separated segments. ` +
544
+ `Only one dot is allowed (e.g. 'group.action'). Use f.router() for nested prefixes.`);
545
+ }
546
+ const toolName = dotIndex > 0 ? this._name.slice(0, dotIndex) : this._name;
547
+ const actionName = dotIndex > 0 ? this._name.slice(dotIndex + 1) : 'default';
548
+ // Compile description: instructions + description
549
+ const descParts = [];
550
+ if (this._instructions) {
551
+ descParts.push(`[INSTRUCTIONS] ${this._instructions}`);
552
+ }
553
+ if (this._description) {
554
+ descParts.push(this._description);
555
+ }
556
+ // HATEOAS Auto-Prompting: teach the LLM about sandbox capability
557
+ if (this._sandboxConfig) {
558
+ descParts.push(SANDBOX_SYSTEM_INSTRUCTION.trim());
559
+ }
560
+ const compiledDescription = descParts.length > 0 ? descParts.join('\n\n') : undefined;
561
+ // Resolve semantic defaults + overrides
562
+ const readOnly = this._readOnly ?? this._semanticDefaults.readOnly;
563
+ const destructive = this._destructive ?? this._semanticDefaults.destructive;
564
+ const idempotent = this._idempotent ?? this._semanticDefaults.idempotent;
565
+ // Wrap handler: (input, ctx) → (ctx, args)
566
+ const resolvedHandler = handler;
567
+ const wrappedHandler = async (ctx, args) => {
568
+ const result = await resolvedHandler(args, ctx);
569
+ // Guard: void/null handlers → safe fallback (Bug #41)
570
+ if (result === undefined || result === null) {
571
+ return success('OK');
572
+ }
573
+ // Auto-wrap non-ToolResponse results (implicit success)
574
+ // Primary: check brand symbol stamped by success()/error()/toolError() helpers.
575
+ // Fallback: shape-based heuristic for manually constructed ToolResponse objects.
576
+ if (typeof result === 'object' && result !== null) {
577
+ // Brand check — reliable, no false positives (Bug #127)
578
+ if (TOOL_RESPONSE_BRAND in result) {
579
+ return result;
580
+ }
581
+ // Shape heuristic — backward compat for manually constructed ToolResponse
582
+ if ('content' in result &&
583
+ Array.isArray(result.content) &&
584
+ result.content.length > 0 &&
585
+ result.content[0]?.type === 'text' &&
586
+ typeof result.content[0]?.text === 'string' &&
587
+ Object.keys(result).every(k => k === 'content' || k === 'isError')) {
588
+ return result;
589
+ }
590
+ }
591
+ // Implicit success() — the dev just returns raw data!
592
+ return success(result);
593
+ };
594
+ // Build via GroupedToolBuilder for consistency with existing pipeline
595
+ const builder = new GroupedToolBuilder(toolName);
596
+ if (compiledDescription)
597
+ builder.description(compiledDescription);
598
+ if (this._tags.length > 0)
599
+ builder.tags(...this._tags);
600
+ if (this._toonMode)
601
+ builder.toonDescription();
602
+ if (this._annotations)
603
+ builder.annotations(this._annotations);
604
+ // Propagate state sync hints
605
+ if (this._invalidatesPatterns.length > 0) {
606
+ builder.invalidates(...this._invalidatesPatterns);
607
+ }
608
+ if (this._cacheControl) {
609
+ this._cacheControl === 'immutable' ? builder.cached() : builder.stale();
610
+ }
611
+ // Propagate runtime guards
612
+ if (this._concurrency) {
613
+ builder.concurrency(this._concurrency);
614
+ }
615
+ if (this._egressMaxBytes !== undefined) {
616
+ builder.maxPayloadBytes(this._egressMaxBytes);
617
+ }
618
+ // Propagate sandbox config
619
+ if (this._sandboxConfig) {
620
+ builder.sandbox(this._sandboxConfig);
621
+ }
622
+ // Propagate FSM state gate
623
+ if (this._fsmStates) {
624
+ builder.bindState(this._fsmStates, this._fsmTransition);
625
+ }
626
+ // Apply middleware
627
+ for (const mw of this._middlewares) {
628
+ builder.use(mw);
629
+ }
630
+ // Register the single action
631
+ builder.action({
632
+ name: actionName,
633
+ handler: wrappedHandler,
634
+ ...(this._inputSchema ? { schema: this._inputSchema } : {}),
635
+ ...(readOnly !== undefined ? { readOnly } : {}),
636
+ ...(destructive !== undefined ? { destructive } : {}),
637
+ ...(idempotent !== undefined ? { idempotent } : {}),
638
+ ...(this._returns ? { returns: this._returns } : {}),
639
+ });
640
+ return builder;
641
+ }
642
+ }
643
+ //# sourceMappingURL=FluentToolBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluentToolBuilder.js","sourceRoot":"","sources":["../../../src/core/builder/FluentToolBuilder.ts"],"names":[],"mappings":"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"}