@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 @@
1
+ {"version":3,"file":"startServer.js","sourceRoot":"","sources":["../../src/server/startServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * CausalEngine — Mutation Detection + isError Guard
3
+ *
4
+ * Pure function. Single responsibility: given a resolved policy
5
+ * and the tool call outcome, determine which domain patterns
6
+ * should be invalidated.
7
+ *
8
+ * Safety rules:
9
+ * 1. If the response has `isError: true` → no invalidation (mutation failed, state unchanged)
10
+ * 2. If the policy has `invalidates` → return those patterns
11
+ * 3. Otherwise → empty array (no invalidation needed)
12
+ *
13
+ * @module
14
+ */
15
+ import type { ResolvedPolicy } from './types.js';
16
+ /**
17
+ * Resolve which domain patterns should be invalidated after a tool call.
18
+ *
19
+ * The `isError` guard is critical: a failed mutation means the database
20
+ * state didn't change, so invalidating caches would be incorrect and
21
+ * would force unnecessary re-reads.
22
+ *
23
+ * @param policy - The resolved policy for the tool that was called
24
+ * @param isError - Whether the tool call returned an error
25
+ * @returns Array of glob patterns to invalidate, or empty if none
26
+ */
27
+ export declare function resolveInvalidations(policy: ResolvedPolicy | null, isError: boolean): readonly string[];
28
+ //# sourceMappingURL=CausalEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CausalEngine.d.ts","sourceRoot":"","sources":["../../src/state-sync/CausalEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,cAAc,GAAG,IAAI,EAC7B,OAAO,EAAE,OAAO,GACjB,SAAS,MAAM,EAAE,CAGnB"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Resolve which domain patterns should be invalidated after a tool call.
3
+ *
4
+ * The `isError` guard is critical: a failed mutation means the database
5
+ * state didn't change, so invalidating caches would be incorrect and
6
+ * would force unnecessary re-reads.
7
+ *
8
+ * @param policy - The resolved policy for the tool that was called
9
+ * @param isError - Whether the tool call returned an error
10
+ * @returns Array of glob patterns to invalidate, or empty if none
11
+ */
12
+ export function resolveInvalidations(policy, isError) {
13
+ if (isError)
14
+ return [];
15
+ return policy?.invalidates ?? [];
16
+ }
17
+ //# sourceMappingURL=CausalEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CausalEngine.js","sourceRoot":"","sources":["../../src/state-sync/CausalEngine.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAChC,MAA6B,EAC7B,OAAgB;IAEhB,IAAI,OAAO;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,EAAE,WAAW,IAAI,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * DescriptionDecorator — Cache-Control Directive Injection
3
+ *
4
+ * Pure function. Single responsibility: append a `[Cache-Control: X]`
5
+ * suffix to a tool's description based on its resolved policy.
6
+ *
7
+ * Idempotent: if the description already ends with a Cache-Control
8
+ * directive, it is replaced (not duplicated).
9
+ *
10
+ * @example
11
+ * ```
12
+ * Before: "Manage sprints."
13
+ * After: "Manage sprints. [Cache-Control: no-store]"
14
+ * ```
15
+ *
16
+ * @module
17
+ */
18
+ import { type Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
19
+ import type { ResolvedPolicy } from './types.js';
20
+ /**
21
+ * Decorate a tool's description with its Cache-Control directive.
22
+ *
23
+ * Returns a shallow copy with the decorated description.
24
+ * If the policy has no `cacheControl`, returns the tool unchanged.
25
+ *
26
+ * @param tool - Original MCP tool definition
27
+ * @param policy - Resolved policy for this tool (may be null)
28
+ * @returns The tool with an appended `[Cache-Control: X]` suffix, or unchanged
29
+ */
30
+ export declare function decorateDescription(tool: McpTool, policy: ResolvedPolicy | null): McpTool;
31
+ //# sourceMappingURL=DescriptionDecorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescriptionDecorator.d.ts","sourceRoot":"","sources":["../../src/state-sync/DescriptionDecorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAC/B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,cAAc,GAAG,IAAI,GAC9B,OAAO,CAOT"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * DescriptionDecorator — Cache-Control Directive Injection
3
+ *
4
+ * Pure function. Single responsibility: append a `[Cache-Control: X]`
5
+ * suffix to a tool's description based on its resolved policy.
6
+ *
7
+ * Idempotent: if the description already ends with a Cache-Control
8
+ * directive, it is replaced (not duplicated).
9
+ *
10
+ * @example
11
+ * ```
12
+ * Before: "Manage sprints."
13
+ * After: "Manage sprints. [Cache-Control: no-store]"
14
+ * ```
15
+ *
16
+ * @module
17
+ */
18
+ import {} from '@modelcontextprotocol/sdk/types.js';
19
+ /** Regex to detect an existing Cache-Control directive at the end of a description. */
20
+ const CACHE_CONTROL_PATTERN = /\s*\[Cache-Control:\s*\w[^\]]*\]$/;
21
+ /**
22
+ * Decorate a tool's description with its Cache-Control directive.
23
+ *
24
+ * Returns a shallow copy with the decorated description.
25
+ * If the policy has no `cacheControl`, returns the tool unchanged.
26
+ *
27
+ * @param tool - Original MCP tool definition
28
+ * @param policy - Resolved policy for this tool (may be null)
29
+ * @returns The tool with an appended `[Cache-Control: X]` suffix, or unchanged
30
+ */
31
+ export function decorateDescription(tool, policy) {
32
+ if (!policy?.cacheControl)
33
+ return tool;
34
+ const tag = `[Cache-Control: ${policy.cacheControl}]`;
35
+ const base = (tool.description ?? '').replace(CACHE_CONTROL_PATTERN, '');
36
+ return { ...tool, description: base.length > 0 ? `${base} ${tag}` : tag };
37
+ }
38
+ //# sourceMappingURL=DescriptionDecorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DescriptionDecorator.js","sourceRoot":"","sources":["../../src/state-sync/DescriptionDecorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAwB,MAAM,oCAAoC,CAAC;AAG1E,uFAAuF;AACvF,MAAM,qBAAqB,GAAG,mCAAmC,CAAC;AAElE;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAC/B,IAAa,EACb,MAA6B;IAE7B,IAAI,CAAC,MAAM,EAAE,YAAY;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,GAAG,GAAG,mBAAmB,MAAM,CAAC,YAAY,GAAG,CAAC;IACtD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;IAEzE,OAAO,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * GlobMatcher — Dot-Separated Glob Pattern Matching
3
+ *
4
+ * Pure function. Single responsibility: match a dot-separated tool name
5
+ * against a glob pattern.
6
+ *
7
+ * - `*` matches exactly one segment
8
+ * - `**` matches zero or more segments
9
+ *
10
+ * Uses an iterative approach with explicit stack to avoid stack overflow
11
+ * on deeply nested patterns and to cap worst-case complexity.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * matchGlob('sprints.*', 'sprints.get'); // true
16
+ * matchGlob('sprints.*', 'sprints.tasks.get'); // false
17
+ * matchGlob('**', 'anything.at.all'); // true
18
+ * ```
19
+ *
20
+ * @module
21
+ */
22
+ /**
23
+ * Match a dot-separated name against a glob pattern.
24
+ *
25
+ * Splits both pattern and name by `.` and performs iterative matching
26
+ * with bounded backtracking to prevent exponential blowup.
27
+ */
28
+ export declare function matchGlob(pattern: string, name: string): boolean;
29
+ //# sourceMappingURL=GlobMatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobMatcher.d.ts","sourceRoot":"","sources":["../../src/state-sync/GlobMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAWH;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKhE"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * GlobMatcher — Dot-Separated Glob Pattern Matching
3
+ *
4
+ * Pure function. Single responsibility: match a dot-separated tool name
5
+ * against a glob pattern.
6
+ *
7
+ * - `*` matches exactly one segment
8
+ * - `**` matches zero or more segments
9
+ *
10
+ * Uses an iterative approach with explicit stack to avoid stack overflow
11
+ * on deeply nested patterns and to cap worst-case complexity.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * matchGlob('sprints.*', 'sprints.get'); // true
16
+ * matchGlob('sprints.*', 'sprints.tasks.get'); // false
17
+ * matchGlob('**', 'anything.at.all'); // true
18
+ * ```
19
+ *
20
+ * @module
21
+ */
22
+ /**
23
+ * Maximum number of backtrack iterations to prevent exponential blowup
24
+ * on adversarial patterns (e.g. `**.**.**.**` against long names).
25
+ *
26
+ * 1024 is generous enough for any real-world MCP tool name hierarchy
27
+ * while capping worst-case CPU usage.
28
+ */
29
+ const MAX_ITERATIONS = 1024;
30
+ /**
31
+ * Match a dot-separated name against a glob pattern.
32
+ *
33
+ * Splits both pattern and name by `.` and performs iterative matching
34
+ * with bounded backtracking to prevent exponential blowup.
35
+ */
36
+ export function matchGlob(pattern, name) {
37
+ const patternSegs = pattern.split('.');
38
+ const nameSegs = name.split('.');
39
+ return matchIterative(patternSegs, nameSegs);
40
+ }
41
+ // ── Iterative Matching with Bounded Backtracking ─────────
42
+ function matchIterative(pattern, name) {
43
+ let pi = 0;
44
+ let ni = 0;
45
+ // Bookmarks for `**` backtracking: the position to retry from
46
+ let starPi = -1;
47
+ let starNi = -1;
48
+ let iterations = 0;
49
+ while (ni < name.length) {
50
+ if (++iterations > MAX_ITERATIONS)
51
+ return false;
52
+ if (pi < pattern.length && (pattern[pi] === '*' || pattern[pi] === name[ni])) {
53
+ // `*` or exact match — consume one segment from both
54
+ pi++;
55
+ ni++;
56
+ }
57
+ else if (pi < pattern.length && pattern[pi] === '**') {
58
+ // `**` — bookmark this position, try consuming zero segments first
59
+ starPi = pi;
60
+ starNi = ni;
61
+ pi++;
62
+ }
63
+ else if (starPi !== -1) {
64
+ // Backtrack: the last `**` consumes one more segment
65
+ pi = starPi + 1;
66
+ starNi++;
67
+ ni = starNi;
68
+ }
69
+ else {
70
+ return false;
71
+ }
72
+ }
73
+ // Skip trailing `**` segments in the pattern
74
+ while (pi < pattern.length && pattern[pi] === '**') {
75
+ pi++;
76
+ }
77
+ return pi === pattern.length;
78
+ }
79
+ //# sourceMappingURL=GlobMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobMatcher.js","sourceRoot":"","sources":["../../src/state-sync/GlobMatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;;GAMG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAY;IACnD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,4DAA4D;AAE5D,SAAS,cAAc,CACnB,OAA0B,EAC1B,IAAuB;IAEvB,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,EAAE,GAAG,CAAC,CAAC;IAEX,8DAA8D;IAC9D,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;IAChB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;IAEhB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,EAAE,UAAU,GAAG,cAAc;YAAE,OAAO,KAAK,CAAC;QAEhD,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,qDAAqD;YACrD,EAAE,EAAE,CAAC;YACL,EAAE,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACrD,mEAAmE;YACnE,MAAM,GAAG,EAAE,CAAC;YACZ,MAAM,GAAG,EAAE,CAAC;YACZ,EAAE,EAAE,CAAC;QACT,CAAC;aAAM,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,qDAAqD;YACrD,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC;YAChB,MAAM,EAAE,CAAC;YACT,EAAE,GAAG,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACJ,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,EAAE,EAAE,CAAC;IACT,CAAC;IAED,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC;AACjC,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * PolicyEngine — First-Match-Wins Policy Resolution
3
+ *
4
+ * Single responsibility: resolve a tool name to its applicable policy.
5
+ * Delegates glob matching to GlobMatcher and validation to PolicyValidator.
6
+ *
7
+ * Stateless after construction. Resolution results are cached in a Map
8
+ * for O(1) repeat lookups — the glob iteration only happens once per
9
+ * unique tool name.
10
+ *
11
+ * Cache is bounded to {@link MAX_CACHE_SIZE} entries to prevent unbounded
12
+ * memory growth from dynamic tool names.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const engine = new PolicyEngine(
17
+ * [{ match: 'sprints.*', cacheControl: 'no-store' }],
18
+ * { cacheControl: 'no-store' },
19
+ * );
20
+ *
21
+ * engine.resolve('sprints.get'); // { cacheControl: 'no-store' }
22
+ * engine.resolve('sprints.get'); // O(1) — cached
23
+ * engine.resolve('unknown.tool'); // { cacheControl: 'no-store' } — default
24
+ * ```
25
+ *
26
+ * @module
27
+ */
28
+ import type { SyncPolicy, ResolvedPolicy, CacheDirective } from './types.js';
29
+ export declare class PolicyEngine {
30
+ private readonly _policies;
31
+ private readonly _defaultCacheControl;
32
+ /**
33
+ * Resolution cache: avoids repeated glob iteration for the same tool name.
34
+ * Key = tool name, Value = resolved policy or null (no match, no default).
35
+ */
36
+ private readonly _cache;
37
+ /**
38
+ * Pre-computed resolved policies, one per policy entry.
39
+ * Built once at construction time so multiple tool names matching
40
+ * the same policy share the same frozen object reference.
41
+ */
42
+ private readonly _resolvedByIndex;
43
+ /**
44
+ * Pre-frozen default-only resolution. Created once at construction
45
+ * if defaults are configured, reused for every unmatched tool name.
46
+ */
47
+ private readonly _defaultResolved;
48
+ /**
49
+ * Construct a PolicyEngine with eager validation.
50
+ *
51
+ * @param policies - Policy rules, evaluated in declaration order
52
+ * @param defaults - Fallback applied when no policy matches
53
+ * @throws {Error} If any policy or default is invalid
54
+ */
55
+ constructor(policies: readonly SyncPolicy[], defaults?: {
56
+ readonly cacheControl?: CacheDirective;
57
+ });
58
+ /**
59
+ * Resolve the applicable policy for a tool name.
60
+ *
61
+ * First matching policy wins. Falls back to defaults if no match.
62
+ * Returns `null` if no policy matches and no defaults are configured.
63
+ *
64
+ * Results are cached — repeated calls for the same tool name are O(1).
65
+ */
66
+ resolve(toolName: string): ResolvedPolicy | null;
67
+ private _resolveUncached;
68
+ /**
69
+ * Build a frozen ResolvedPolicy from a SyncPolicy.
70
+ * Merges policy cacheControl with the default as fallback.
71
+ * Called once per policy at construction time.
72
+ */
73
+ private _buildResolved;
74
+ }
75
+ //# sourceMappingURL=PolicyEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyEngine.d.ts","sourceRoot":"","sources":["../../src/state-sync/PolicyEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAc7E,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAElE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4C;IAEnE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IAExE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IAEnE;;;;;;OAMG;gBAEC,QAAQ,EAAE,SAAS,UAAU,EAAE,EAC/B,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAA;KAAE;IAoBzD;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAmBhD,OAAO,CAAC,gBAAgB;IAWxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAmBzB"}
@@ -0,0 +1,107 @@
1
+ import { matchGlob } from './GlobMatcher.js';
2
+ import { validatePolicies, validateDefaults } from './PolicyValidator.js';
3
+ /**
4
+ * Maximum number of cached resolutions.
5
+ *
6
+ * In practice, MCP servers have a finite set of tools (~10-200).
7
+ * This cap exists purely as a safety net against adversarial
8
+ * or dynamically-generated tool names that could grow unboundedly.
9
+ * When hit, the cache is cleared (full eviction) to avoid memory leak.
10
+ */
11
+ const MAX_CACHE_SIZE = 2048;
12
+ export class PolicyEngine {
13
+ _policies;
14
+ _defaultCacheControl;
15
+ /**
16
+ * Resolution cache: avoids repeated glob iteration for the same tool name.
17
+ * Key = tool name, Value = resolved policy or null (no match, no default).
18
+ */
19
+ _cache = new Map();
20
+ /**
21
+ * Pre-computed resolved policies, one per policy entry.
22
+ * Built once at construction time so multiple tool names matching
23
+ * the same policy share the same frozen object reference.
24
+ */
25
+ _resolvedByIndex;
26
+ /**
27
+ * Pre-frozen default-only resolution. Created once at construction
28
+ * if defaults are configured, reused for every unmatched tool name.
29
+ */
30
+ _defaultResolved;
31
+ /**
32
+ * Construct a PolicyEngine with eager validation.
33
+ *
34
+ * @param policies - Policy rules, evaluated in declaration order
35
+ * @param defaults - Fallback applied when no policy matches
36
+ * @throws {Error} If any policy or default is invalid
37
+ */
38
+ constructor(policies, defaults) {
39
+ validatePolicies(policies);
40
+ validateDefaults(defaults);
41
+ this._policies = Object.freeze([...policies]);
42
+ this._defaultCacheControl = defaults?.cacheControl;
43
+ // Pre-freeze default resolution to avoid repeated object allocation
44
+ this._defaultResolved = this._defaultCacheControl
45
+ ? Object.freeze({ cacheControl: this._defaultCacheControl })
46
+ : null;
47
+ // Pre-compute a frozen ResolvedPolicy for each policy entry.
48
+ // This way, N tool names matching the same policy share one object.
49
+ this._resolvedByIndex = Object.freeze(this._policies.map(p => this._buildResolved(p)));
50
+ }
51
+ /**
52
+ * Resolve the applicable policy for a tool name.
53
+ *
54
+ * First matching policy wins. Falls back to defaults if no match.
55
+ * Returns `null` if no policy matches and no defaults are configured.
56
+ *
57
+ * Results are cached — repeated calls for the same tool name are O(1).
58
+ */
59
+ resolve(toolName) {
60
+ const cached = this._cache.get(toolName);
61
+ if (cached !== undefined)
62
+ return cached;
63
+ const result = this._resolveUncached(toolName);
64
+ // Bounded cache: evict all when hitting the cap.
65
+ // In practice this never triggers for normal MCP servers,
66
+ // but prevents unbounded growth from adversarial input.
67
+ if (this._cache.size >= MAX_CACHE_SIZE) {
68
+ this._cache.clear();
69
+ }
70
+ this._cache.set(toolName, result);
71
+ return result;
72
+ }
73
+ // ── Private ──────────────────────────────────────────
74
+ _resolveUncached(toolName) {
75
+ for (let i = 0; i < this._policies.length; i++) {
76
+ if (matchGlob(this._policies[i].match, toolName)) {
77
+ return this._resolvedByIndex[i];
78
+ }
79
+ }
80
+ // No policy matched — return pre-frozen default (or null)
81
+ return this._defaultResolved;
82
+ }
83
+ /**
84
+ * Build a frozen ResolvedPolicy from a SyncPolicy.
85
+ * Merges policy cacheControl with the default as fallback.
86
+ * Called once per policy at construction time.
87
+ */
88
+ _buildResolved(policy) {
89
+ const cacheControl = policy.cacheControl ?? this._defaultCacheControl;
90
+ const invalidates = policy.invalidates;
91
+ const hasInvalidates = (invalidates?.length ?? 0) > 0;
92
+ // No effective policy — nothing to do
93
+ if (!cacheControl && !hasInvalidates)
94
+ return null;
95
+ // Build the object conditionally to satisfy strict typing.
96
+ // Each branch freezes only the properties that are defined.
97
+ if (cacheControl && hasInvalidates) {
98
+ return Object.freeze({ cacheControl, invalidates: invalidates });
99
+ }
100
+ if (cacheControl) {
101
+ return Object.freeze({ cacheControl });
102
+ }
103
+ // hasInvalidates is true here (guard above ensures at least one)
104
+ return Object.freeze({ invalidates: invalidates });
105
+ }
106
+ }
107
+ //# sourceMappingURL=PolicyEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyEngine.js","sourceRoot":"","sources":["../../src/state-sync/PolicyEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * PolicyValidator — Fail-Fast Policy Validation
3
+ *
4
+ * Pure functions. Single responsibility: validate SyncPolicy arrays
5
+ * and default config at construction time.
6
+ *
7
+ * Every validation error is caught eagerly — no invalid configuration
8
+ * survives past PolicyEngine construction.
9
+ *
10
+ * @module
11
+ */
12
+ import type { SyncPolicy, CacheDirective } from './types.js';
13
+ /** Valid cache directives — binary vocabulary, no max-age. */
14
+ export declare const VALID_DIRECTIVES: ReadonlySet<string>;
15
+ /**
16
+ * Validate an array of policies. Throws on the first invalid entry.
17
+ *
18
+ * Called at PolicyEngine construction time for fail-fast behavior.
19
+ *
20
+ * @throws {Error} Descriptive error identifying the invalid policy
21
+ */
22
+ export declare function validatePolicies(policies: readonly SyncPolicy[]): void;
23
+ /**
24
+ * Validate the defaults config. Throws if cacheControl is invalid.
25
+ *
26
+ * @throws {Error} If the default cacheControl directive is not recognized
27
+ */
28
+ export declare function validateDefaults(defaults?: {
29
+ readonly cacheControl?: CacheDirective;
30
+ }): void;
31
+ /**
32
+ * Warning produced when two policies potentially overlap.
33
+ *
34
+ * Overlapping policies are not an error (first-match-wins is deterministic),
35
+ * but they can cause subtle configuration bugs when the user expects a
36
+ * more-specific policy to fire but a broader one shadows it.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const warnings = detectOverlaps(policies);
41
+ * warnings.forEach(w => console.warn(`[StateSync] ${w.message}`));
42
+ * ```
43
+ */
44
+ export interface OverlapWarning {
45
+ /** Human-readable description of the overlap. */
46
+ readonly message: string;
47
+ /** Index of the shadowing (earlier) policy. */
48
+ readonly shadowingIndex: number;
49
+ /** Index of the shadowed (later) policy. */
50
+ readonly shadowedIndex: number;
51
+ }
52
+ /**
53
+ * Detect potentially overlapping glob policies.
54
+ *
55
+ * Checks if a broader policy at index `i` could shadow a more-specific
56
+ * policy at index `j > i`. Uses GlobMatcher to test if the earlier
57
+ * pattern matches the later pattern's literal segments.
58
+ *
59
+ * This is a heuristic: it only catches cases where the later policy's
60
+ * `match` string (treated as a literal tool name) would match the
61
+ * earlier policy's glob. It does NOT do full set-intersection analysis.
62
+ *
63
+ * @param policies - The policies array to analyze
64
+ * @returns Array of overlap warnings (empty if no overlaps detected)
65
+ */
66
+ export declare function detectOverlaps(policies: readonly SyncPolicy[]): readonly OverlapWarning[];
67
+ //# sourceMappingURL=PolicyValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyValidator.d.ts","sourceRoot":"","sources":["../../src/state-sync/PolicyValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK7D,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAsC,CAAC;AAiExF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAetE;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC5B,QAAQ,CAAC,EAAE;IAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAA;CAAE,GACtD,IAAI,CAON;AAID;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,cAAc;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,4CAA4C;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,cAAc,EAAE,CAuBzF"}
@@ -0,0 +1,122 @@
1
+ import { matchGlob } from './GlobMatcher.js';
2
+ // ── Constants ────────────────────────────────────────────
3
+ /** Valid cache directives — binary vocabulary, no max-age. */
4
+ export const VALID_DIRECTIVES = new Set(['no-store', 'immutable']);
5
+ /** Valid glob segment: alphanumeric, `_`, `-`, `*`, `**`. */
6
+ const VALID_SEGMENT = /^(\*{1,2}|[a-zA-Z0-9_-]+)$/;
7
+ // ── Private Helpers ──────────────────────────────────────
8
+ /**
9
+ * Assert that a glob pattern string is non-empty and has valid segments.
10
+ *
11
+ * @param pattern - The glob pattern to validate
12
+ * @param label - Human-readable label for the error message (e.g. "'match'")
13
+ * @param prefix - Context prefix for error grouping (e.g. "policy[0]")
14
+ * @throws {Error} If the pattern is empty or contains invalid segments
15
+ */
16
+ function assertValidGlob(pattern, label, prefix) {
17
+ if (pattern === '' || typeof pattern !== 'string') {
18
+ throw new Error(`${prefix}: ${label} must be a non-empty string.`);
19
+ }
20
+ for (const seg of pattern.split('.')) {
21
+ if (!VALID_SEGMENT.test(seg)) {
22
+ throw new Error(`${prefix}: ${label} pattern "${pattern}" has invalid segment "${seg}". ` +
23
+ `Allowed: alphanumeric, "_", "-", "*", "**".`);
24
+ }
25
+ }
26
+ }
27
+ /**
28
+ * Assert that a cache directive is one of the recognized values.
29
+ *
30
+ * @param directive - The directive value to check
31
+ * @param prefix - Context prefix for error grouping
32
+ * @throws {Error} If the directive is not recognized
33
+ */
34
+ function assertValidDirective(directive, prefix) {
35
+ if (!VALID_DIRECTIVES.has(directive)) {
36
+ throw new Error(`${prefix}: invalid cacheControl "${directive}". ` +
37
+ `Allowed: "no-store", "immutable".`);
38
+ }
39
+ }
40
+ /**
41
+ * Assert that an invalidation list contains only valid glob patterns.
42
+ *
43
+ * @param invalidates - The array of invalidation patterns
44
+ * @param prefix - Context prefix for error grouping
45
+ * @throws {Error} If any entry is not a valid glob string
46
+ */
47
+ function assertValidInvalidates(invalidates, prefix) {
48
+ if (!Array.isArray(invalidates)) {
49
+ throw new Error(`${prefix}: 'invalidates' must be an array.`);
50
+ }
51
+ for (const pattern of invalidates) {
52
+ assertValidGlob(pattern, "'invalidates' entries must be non-empty strings. Entry", prefix);
53
+ }
54
+ }
55
+ // ── Validate Policies ────────────────────────────────────
56
+ /**
57
+ * Validate an array of policies. Throws on the first invalid entry.
58
+ *
59
+ * Called at PolicyEngine construction time for fail-fast behavior.
60
+ *
61
+ * @throws {Error} Descriptive error identifying the invalid policy
62
+ */
63
+ export function validatePolicies(policies) {
64
+ for (let i = 0; i < policies.length; i++) {
65
+ const p = policies[i];
66
+ const prefix = `StateSync policy[${i}]`;
67
+ assertValidGlob(p.match, "'match'", prefix);
68
+ if (p.cacheControl !== undefined) {
69
+ assertValidDirective(p.cacheControl, prefix);
70
+ }
71
+ if (p.invalidates !== undefined) {
72
+ assertValidInvalidates(p.invalidates, prefix);
73
+ }
74
+ }
75
+ }
76
+ // ── Validate Defaults ────────────────────────────────────
77
+ /**
78
+ * Validate the defaults config. Throws if cacheControl is invalid.
79
+ *
80
+ * @throws {Error} If the default cacheControl directive is not recognized
81
+ */
82
+ export function validateDefaults(defaults) {
83
+ if (defaults?.cacheControl !== undefined && !VALID_DIRECTIVES.has(defaults.cacheControl)) {
84
+ throw new Error(`StateSync default cacheControl "${defaults.cacheControl}" is invalid. ` +
85
+ `Allowed: "no-store", "immutable".`);
86
+ }
87
+ }
88
+ /**
89
+ * Detect potentially overlapping glob policies.
90
+ *
91
+ * Checks if a broader policy at index `i` could shadow a more-specific
92
+ * policy at index `j > i`. Uses GlobMatcher to test if the earlier
93
+ * pattern matches the later pattern's literal segments.
94
+ *
95
+ * This is a heuristic: it only catches cases where the later policy's
96
+ * `match` string (treated as a literal tool name) would match the
97
+ * earlier policy's glob. It does NOT do full set-intersection analysis.
98
+ *
99
+ * @param policies - The policies array to analyze
100
+ * @returns Array of overlap warnings (empty if no overlaps detected)
101
+ */
102
+ export function detectOverlaps(policies) {
103
+ const warnings = [];
104
+ for (let i = 0; i < policies.length; i++) {
105
+ for (let j = i + 1; j < policies.length; j++) {
106
+ const earlier = policies[i].match;
107
+ const later = policies[j].match;
108
+ // If the later policy's match pattern (as a literal name)
109
+ // would be caught by the earlier policy's glob, it's shadowed.
110
+ if (matchGlob(earlier, later)) {
111
+ warnings.push({
112
+ message: `policy[${i}] (match: "${earlier}") shadows policy[${j}] (match: "${later}"). ` +
113
+ `The later policy will never match because first-match-wins applies.`,
114
+ shadowingIndex: i,
115
+ shadowedIndex: j,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ return warnings;
121
+ }
122
+ //# sourceMappingURL=PolicyValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PolicyValidator.js","sourceRoot":"","sources":["../../src/state-sync/PolicyValidator.ts"],"names":[],"mappings":"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"}