@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,292 @@
1
+ /**
2
+ * TokenEconomics — Cognitive Overload Detection
3
+ *
4
+ * **Evolution 3: Token Economics**
5
+ *
6
+ * Profiles the token density and context spread of MCP tool
7
+ * responses to detect cognitive overload scenarios where the
8
+ * LLM's working memory is flooded by verbose tool output,
9
+ * evicting system rules and degrading reasoning quality.
10
+ *
11
+ * **Key insight**: An MCP tool that returns 50KB of JSON per
12
+ * call will rapidly exhaust the context window. If that output
13
+ * isn't constrained by `agentLimit` or `egressMaxBytes`, the
14
+ * system rules injected by the Presenter's `addRules()` will
15
+ * be pushed out of the LLM's attention window — silently
16
+ * degrading behavioral correctness.
17
+ *
18
+ * This module provides:
19
+ *
20
+ * 1. **Static analysis**: Estimate token density from Presenter
21
+ * schema and guardrail configuration (zero-cost at runtime).
22
+ *
23
+ * 2. **Runtime profiling**: Measure actual token counts of
24
+ * response blocks after Presenter rendering (opt-in).
25
+ *
26
+ * 3. **Overload classification**: Classify responses into
27
+ * risk levels based on configurable thresholds.
28
+ *
29
+ * 4. **Integration with BehaviorDigest**: Token economics risk
30
+ * level is part of the behavioral contract — changes to
31
+ * the token profile are tracked as contract deltas.
32
+ *
33
+ * Pure-function module for analysis; runtime profiling hooks
34
+ * are designed for zero-overhead when not configured.
35
+ *
36
+ * @module
37
+ */
38
+ // ============================================================================
39
+ // Default Thresholds
40
+ // ============================================================================
41
+ const DEFAULT_THRESHOLDS = {
42
+ low: 1000,
43
+ medium: 4000,
44
+ high: 8000,
45
+ };
46
+ const DEFAULT_MAX_OVERHEAD_RATIO = 0.3;
47
+ // ============================================================================
48
+ // Token Estimation
49
+ // ============================================================================
50
+ /**
51
+ * Estimate token count from a string using the ~4 chars/token heuristic.
52
+ *
53
+ * This is a fast approximation suitable for profiling. For precise
54
+ * token counting, use a tokenizer library (tiktoken, etc.).
55
+ *
56
+ * @param text - The text to estimate tokens for
57
+ * @returns Estimated token count
58
+ */
59
+ export function estimateTokens(text) {
60
+ // GPT-family heuristic: ~4 characters per token for English
61
+ // JSON/code tends to be ~3.5 chars/token due to syntax characters
62
+ return Math.ceil(text.length / 3.5);
63
+ }
64
+ /**
65
+ * Estimate tokens for a content block structure (MCP response block).
66
+ *
67
+ * @param block - The content block with `type` and `text` fields
68
+ * @returns Block-level token profile
69
+ */
70
+ export function profileBlock(block) {
71
+ const text = block.text ?? '';
72
+ const bytes = new TextEncoder().encode(text).byteLength;
73
+ const estimatedTokens = estimateTokens(text);
74
+ return {
75
+ type: block.type,
76
+ estimatedTokens,
77
+ bytes,
78
+ };
79
+ }
80
+ // ============================================================================
81
+ // Runtime Profiling
82
+ // ============================================================================
83
+ /**
84
+ * Profile a complete tool response for token economics.
85
+ *
86
+ * Analyzes all content blocks in a tool response to compute
87
+ * total token usage, overhead ratio, and risk classification.
88
+ *
89
+ * @param toolName - Name of the tool that produced the response
90
+ * @param actionKey - Action key (if applicable)
91
+ * @param blocks - Content blocks from the tool response
92
+ * @param overheadBlocks - Number of blocks that are overhead (rules, UI)
93
+ * @param config - Token economics configuration
94
+ * @returns Complete token analysis
95
+ */
96
+ export function profileResponse(toolName, actionKey, blocks, overheadBlocks = 0, config = {}) {
97
+ const thresholds = resolveThresholds(config);
98
+ const blockProfiles = blocks.map(profileBlock);
99
+ const totalTokens = blockProfiles.reduce((sum, b) => sum + b.estimatedTokens, 0);
100
+ // Split tokens into overhead vs data
101
+ const overheadTokens = overheadBlocks > 0
102
+ ? blockProfiles
103
+ .slice(-overheadBlocks)
104
+ .reduce((sum, b) => sum + b.estimatedTokens, 0)
105
+ : 0;
106
+ const dataTokens = totalTokens - overheadTokens;
107
+ // Bug #46 fix: when ALL blocks are overhead (dataTokens === 0),
108
+ // report Infinity instead of 0 to correctly trigger OVERHEAD WARNING
109
+ const overheadRatio = dataTokens > 0
110
+ ? overheadTokens / dataTokens
111
+ : (overheadTokens > 0 ? Infinity : 0);
112
+ const risk = classifyRisk(totalTokens, thresholds);
113
+ const advisory = generateAdvisory(toolName, totalTokens, risk, overheadRatio, config);
114
+ return {
115
+ toolName,
116
+ actionKey,
117
+ estimatedTokens: totalTokens,
118
+ blockCount: blocks.length,
119
+ blocks: blockProfiles,
120
+ overheadTokens,
121
+ dataTokens,
122
+ overheadRatio,
123
+ risk,
124
+ advisory,
125
+ };
126
+ }
127
+ // ============================================================================
128
+ // Static Analysis
129
+ // ============================================================================
130
+ /**
131
+ * Compute a static token profile from Presenter metadata.
132
+ *
133
+ * This runs once at manifest compilation time and produces
134
+ * a zero-cost profile that estimates the worst-case token
135
+ * usage for a tool based on its schema and guardrail config.
136
+ *
137
+ * @param toolName - Tool name
138
+ * @param schemaKeys - Presenter schema field names
139
+ * @param agentLimitMax - Maximum items from agentLimit() config
140
+ * @param egressMaxBytes - Maximum bytes from egressMaxBytes() config
141
+ * @returns Static token profile with recommendations
142
+ */
143
+ export function computeStaticProfile(toolName, schemaKeys, agentLimitMax, egressMaxBytes) {
144
+ // Estimate per-field token cost
145
+ const fieldBreakdown = schemaKeys.map(name => ({
146
+ name,
147
+ estimatedTokens: estimateFieldTokens(name),
148
+ isCollection: /(?:ids|keys|values|records|results|rows|elements|entries|tags|items|users|events|files|nodes|edges|logs|names|emails|roles)$/i.test(name) || name.toLowerCase().includes('list') || name.toLowerCase().includes('items'),
149
+ }));
150
+ // Base token cost: field names + structure + JSON overhead
151
+ const baseTokens = fieldBreakdown.reduce((sum, f) => sum + f.estimatedTokens, 0);
152
+ // Minimum: one item with all fields
153
+ const minTokens = baseTokens + 20; // JSON structure overhead
154
+ // Maximum: bounded by egressMaxBytes, agentLimit, or worst-case estimate
155
+ const { maxTokens, bounded } = computeBounds(baseTokens, agentLimitMax, egressMaxBytes);
156
+ const risk = classifyRisk(maxTokens, DEFAULT_THRESHOLDS);
157
+ const recommendations = buildRecommendations(toolName, bounded, risk, schemaKeys, agentLimitMax, fieldBreakdown);
158
+ return {
159
+ toolName,
160
+ minTokens,
161
+ maxTokens,
162
+ bounded,
163
+ fieldBreakdown,
164
+ risk,
165
+ recommendations,
166
+ };
167
+ }
168
+ /**
169
+ * Aggregate static profiles into a server-level summary.
170
+ *
171
+ * @param profiles - All static profiles for the server
172
+ * @returns Server-level token economics summary
173
+ */
174
+ export function aggregateProfiles(profiles) {
175
+ const totalMinTokens = profiles.reduce((sum, p) => sum + p.minTokens, 0);
176
+ const totalMaxTokens = profiles.reduce((sum, p) => sum + p.maxTokens, 0);
177
+ const unboundedTools = profiles.filter(p => !p.bounded);
178
+ const criticalTools = profiles.filter(p => p.risk === 'critical');
179
+ const highRiskTools = profiles.filter(p => p.risk === 'high');
180
+ const overallRisk = criticalTools.length > 0
181
+ ? 'critical'
182
+ : highRiskTools.length > 0
183
+ ? 'high'
184
+ : unboundedTools.length > 0
185
+ ? 'medium'
186
+ : 'low';
187
+ return {
188
+ toolCount: profiles.length,
189
+ totalMinTokens,
190
+ totalMaxTokens,
191
+ unboundedToolCount: unboundedTools.length,
192
+ unboundedToolNames: unboundedTools.map(p => p.toolName),
193
+ overallRisk,
194
+ criticalToolNames: criticalTools.map(p => p.toolName),
195
+ recommendations: [
196
+ ...criticalTools.flatMap(p => p.recommendations.map(r => `[${p.toolName}] ${r}`)),
197
+ ...highRiskTools.flatMap(p => p.recommendations.map(r => `[${p.toolName}] ${r}`)),
198
+ ],
199
+ };
200
+ }
201
+ // ============================================================================
202
+ // Internals
203
+ // ============================================================================
204
+ /**
205
+ * Classify token risk based on thresholds.
206
+ * @internal
207
+ */
208
+ function classifyRisk(tokens, thresholds) {
209
+ if (tokens <= thresholds.low)
210
+ return 'low';
211
+ if (tokens <= thresholds.medium)
212
+ return 'medium';
213
+ if (tokens <= thresholds.high)
214
+ return 'high';
215
+ return 'critical';
216
+ }
217
+ /**
218
+ * Resolve thresholds with defaults.
219
+ * @internal
220
+ */
221
+ function resolveThresholds(config) {
222
+ return {
223
+ low: config.thresholds?.low ?? DEFAULT_THRESHOLDS.low,
224
+ medium: config.thresholds?.medium ?? DEFAULT_THRESHOLDS.medium,
225
+ high: config.thresholds?.high ?? DEFAULT_THRESHOLDS.high,
226
+ };
227
+ }
228
+ /** Advisory templates keyed by risk level. @internal */
229
+ const ADVISORY_TEMPLATES = {
230
+ critical: (toolName, tokens) => `COGNITIVE OVERLOAD: Tool "${toolName}" response estimated at ${tokens} tokens. ` +
231
+ `This will consume significant context window space. Consider adding agentLimit() or egressMaxBytes().`,
232
+ high: (toolName, tokens) => `HIGH TOKEN DENSITY: Tool "${toolName}" response estimated at ${tokens} tokens. ` +
233
+ `Consider reducing response verbosity or adding pagination.`,
234
+ };
235
+ /**
236
+ * Generate advisory for elevated risk levels.
237
+ * @internal
238
+ */
239
+ function generateAdvisory(toolName, tokens, risk, overheadRatio, config) {
240
+ const template = ADVISORY_TEMPLATES[risk];
241
+ if (template)
242
+ return template(toolName, tokens);
243
+ const maxRatio = config.maxOverheadRatio ?? DEFAULT_MAX_OVERHEAD_RATIO;
244
+ if (overheadRatio > maxRatio) {
245
+ return `OVERHEAD WARNING: Tool "${toolName}" has ${Math.round(overheadRatio * 100)}% overhead ratio. ` +
246
+ `System rules and UI decorators are consuming significant context.`;
247
+ }
248
+ return null;
249
+ }
250
+ /**
251
+ * Compute upper bounds for token estimation.
252
+ * @internal
253
+ */
254
+ function computeBounds(baseTokens, agentLimitMax, egressMaxBytes) {
255
+ // egressMaxBytes provides a hard ceiling
256
+ if (egressMaxBytes !== null)
257
+ return { maxTokens: Math.ceil(egressMaxBytes / 3.5), bounded: true };
258
+ // agentLimit bounds the collection size
259
+ if (agentLimitMax !== null)
260
+ return { maxTokens: baseTokens * agentLimitMax + 50, bounded: true };
261
+ // No bounds — worst-case estimate (100 items)
262
+ return { maxTokens: baseTokens * 100, bounded: false };
263
+ }
264
+ const RECOMMENDATION_RULES = [
265
+ { predicate: (bounded) => !bounded, message: 'Add .agentLimit() to bound collection size' },
266
+ { predicate: (_, risk) => risk === 'critical' || risk === 'high', message: 'Add .egressMaxBytes() to cap payload size' },
267
+ { predicate: (_, __, hasUnbounded) => hasUnbounded, message: 'Collection fields detected without agentLimit — risk of context flooding' },
268
+ { predicate: (_, __, ___, fieldCount) => fieldCount > 15, message: 'Consider reducing schema field count (>15 fields adds cognitive load)' },
269
+ ];
270
+ /**
271
+ * Build recommendations based on profile characteristics.
272
+ * @internal
273
+ */
274
+ function buildRecommendations(_toolName, bounded, risk, schemaKeys, agentLimitMax, fieldBreakdown) {
275
+ const hasUnboundedCollections = fieldBreakdown.some(f => f.isCollection) && agentLimitMax === null;
276
+ return RECOMMENDATION_RULES
277
+ .filter(rule => rule.predicate(bounded, risk, hasUnboundedCollections, schemaKeys.length))
278
+ .map(rule => rule.message);
279
+ }
280
+ /**
281
+ * Estimate tokens for a single field name.
282
+ * Heuristic: field name tokens + value tokens (estimated from name length).
283
+ * @internal
284
+ */
285
+ function estimateFieldTokens(fieldName) {
286
+ // Field name in JSON: "fieldName": → ~name.length/4 + 1
287
+ const nameTokens = Math.ceil(fieldName.length / 4) + 1;
288
+ // Value estimate: assume average 5 tokens per field value
289
+ const valueTokens = 5;
290
+ return nameTokens + valueTokens;
291
+ }
292
+ //# sourceMappingURL=TokenEconomics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenEconomics.js","sourceRoot":"","sources":["../../src/introspection/TokenEconomics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * ToolContract — Behavioral Contract Materialization
3
+ *
4
+ * Unifies the declarative surface (tool names, schemas, tags) with
5
+ * the behavioral contract (Presenter egress schema, system rules,
6
+ * cognitive guardrails, middleware chain, state-sync policies) into
7
+ * a single, serializable, diffable, hashable artifact.
8
+ *
9
+ * **Key insight**: Vurb's Presenter is not just a response
10
+ * formatter — it's a declarative behavioral specification. The Zod
11
+ * schema, system rules, agent limits, and affordances are all
12
+ * explicit, serializable contracts. By materializing them into a
13
+ * `ToolContract`, we create a fingerprint that changes when behavior
14
+ * changes — even if the MCP tool declaration stays identical.
15
+ *
16
+ * **Zero developer effort**: The contract materializes from what the
17
+ * developer has already declared. No annotations, no config, no
18
+ * ceremony — just `materializeContract(builder)`.
19
+ *
20
+ * Pure-function module: no state, no side effects.
21
+ *
22
+ * @module
23
+ */
24
+ import { type ToolBuilder } from '../core/types.js';
25
+ /**
26
+ * Complete behavioral contract for a single tool.
27
+ *
28
+ * Captures both the MCP-visible surface (schema, description) and
29
+ * the behavioral internals (Presenter egress, rules, guardrails,
30
+ * middleware, state-sync, concurrency).
31
+ */
32
+ export interface ToolContract {
33
+ /** Declarative surface visible via MCP `tools/list` */
34
+ readonly surface: ToolSurface;
35
+ /** Behavioral contract extracted from runtime primitives */
36
+ readonly behavior: ToolBehavior;
37
+ /** Token economics profile for cognitive overload detection */
38
+ readonly tokenEconomics: TokenEconomicsProfile;
39
+ /** Handler entitlements from static analysis */
40
+ readonly entitlements: HandlerEntitlements;
41
+ }
42
+ /** Declarative surface — what `tools/list` exposes */
43
+ export interface ToolSurface {
44
+ /** Tool name */
45
+ readonly name: string;
46
+ /** Tool description */
47
+ readonly description: string | undefined;
48
+ /** Tags for selective exposure */
49
+ readonly tags: readonly string[];
50
+ /** Per-action contracts */
51
+ readonly actions: Record<string, ActionContract>;
52
+ /** SHA-256 of canonical JSON Schema */
53
+ readonly inputSchemaDigest: string;
54
+ }
55
+ /** Per-action behavioral contract */
56
+ export interface ActionContract {
57
+ /** Human-readable description */
58
+ readonly description: string | undefined;
59
+ /** Whether this action is destructive */
60
+ readonly destructive: boolean;
61
+ /** Whether this action is idempotent */
62
+ readonly idempotent: boolean;
63
+ /** Whether this action is read-only */
64
+ readonly readOnly: boolean;
65
+ /** Required field names */
66
+ readonly requiredFields: readonly string[];
67
+ /** Presenter name (if MVA pattern is used) */
68
+ readonly presenterName: string | undefined;
69
+ /** SHA-256 of action-level input schema */
70
+ readonly inputSchemaDigest: string;
71
+ /** Whether the action has per-action middleware */
72
+ readonly hasMiddleware: boolean;
73
+ }
74
+ /** Behavioral contract — internal runtime guarantees */
75
+ export interface ToolBehavior {
76
+ /** SHA-256 of Presenter's Zod schema shape (field names + types) */
77
+ readonly egressSchemaDigest: string | null;
78
+ /**
79
+ * Fingerprint of system rules configuration.
80
+ * Static rules: SHA-256 of sorted rule strings.
81
+ * Dynamic rules: `"dynamic:<function-hash>"`.
82
+ */
83
+ readonly systemRulesFingerprint: string;
84
+ /** Cognitive guardrail configuration */
85
+ readonly cognitiveGuardrails: CognitiveGuardrailsContract;
86
+ /** Middleware chain identity */
87
+ readonly middlewareChain: readonly string[];
88
+ /** State sync policy fingerprint */
89
+ readonly stateSyncFingerprint: string | null;
90
+ /** Concurrency configuration fingerprint */
91
+ readonly concurrencyFingerprint: string | null;
92
+ /** Affordance topology — tool names from suggestActions */
93
+ readonly affordanceTopology: readonly string[];
94
+ /** Embedded child Presenter names */
95
+ readonly embeddedPresenters: readonly string[];
96
+ }
97
+ /** Cognitive guardrails configuration snapshot */
98
+ export interface CognitiveGuardrailsContract {
99
+ /** Maximum items before truncation (from Presenter) */
100
+ readonly agentLimitMax: number | null;
101
+ /** Maximum egress payload bytes (from builder) */
102
+ readonly egressMaxBytes: number | null;
103
+ }
104
+ /**
105
+ * Token economics profile for cognitive overload detection.
106
+ *
107
+ * Captures the expected token density of a tool's responses
108
+ * to detect context inflation that would evict system rules
109
+ * from the LLM's working memory.
110
+ */
111
+ export interface TokenEconomicsProfile {
112
+ /** Estimated tokens per field in the egress schema */
113
+ readonly schemaFieldCount: number;
114
+ /** Whether collections may be unbounded (no agentLimit) */
115
+ readonly unboundedCollection: boolean;
116
+ /** Estimated base token overhead (rules + UI + affordances) */
117
+ readonly baseOverheadTokens: number;
118
+ /** Risk level based on configuration */
119
+ readonly inflationRisk: 'low' | 'medium' | 'high' | 'critical';
120
+ }
121
+ /**
122
+ * Handler entitlements derived from static analysis.
123
+ *
124
+ * Tracks I/O capabilities that the handler accesses, forming
125
+ * a security contract. If a read-only tool suddenly imports
126
+ * `fs.writeFileSync`, the entitlement contract breaks.
127
+ */
128
+ export interface HandlerEntitlements {
129
+ /** Whether any handler references filesystem APIs */
130
+ readonly filesystem: boolean;
131
+ /** Whether any handler references network/fetch APIs */
132
+ readonly network: boolean;
133
+ /** Whether any handler references child_process/exec APIs */
134
+ readonly subprocess: boolean;
135
+ /** Whether any handler references crypto/signing APIs */
136
+ readonly crypto: boolean;
137
+ /** Whether any handler uses dynamic code evaluation (eval, Function, vm) */
138
+ readonly codeEvaluation: boolean;
139
+ /** Raw entitlement identifiers for granular diff */
140
+ readonly raw: readonly string[];
141
+ }
142
+ /**
143
+ * Materialize a `ToolContract` from a builder's public API.
144
+ *
145
+ * Extracts all behavioral metadata from the builder's introspection
146
+ * methods without accessing any private internals. This guarantees
147
+ * compatibility with any `ToolBuilder` implementation.
148
+ *
149
+ * @param builder - A registered tool builder
150
+ * @returns A fully materialized `ToolContract`
151
+ */
152
+ export declare function materializeContract<TContext>(builder: ToolBuilder<TContext>): Promise<ToolContract>;
153
+ /**
154
+ * Compile contracts for all tools in a registry.
155
+ *
156
+ * @param builders - Iterable of all registered tool builders
157
+ * @returns Record mapping tool names to their materialized contracts
158
+ */
159
+ export declare function compileContracts<TContext>(builders: Iterable<ToolBuilder<TContext>>): Promise<Record<string, ToolContract>>;
160
+ export { sha256, canonicalize } from './canonicalize.js';
161
+ //# sourceMappingURL=ToolContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolContract.d.ts","sourceRoot":"","sources":["../../src/introspection/ToolContract.ts"],"names":[],"mappings":"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"}