@bolt-foundry/gambit-core 0.8.1 → 0.8.5-rc.3

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 (262) hide show
  1. package/README.md +60 -34
  2. package/cards/context.card.md +5 -5
  3. package/cards/generate-test-input.card.md +12 -0
  4. package/{script/deps/jsr.io/@std/collections/1.1.4 → esm/deps/jsr.io/@std/collections/1.1.5}/deep_merge.d.ts +2 -2
  5. package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.d.ts.map +1 -1
  6. package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.js +29 -19
  7. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
  8. package/esm/mod.d.ts +20 -10
  9. package/esm/mod.d.ts.map +1 -1
  10. package/esm/mod.js +11 -5
  11. package/esm/schemas/graders/contexts/conversation.d.ts +22 -0
  12. package/esm/schemas/graders/contexts/conversation.d.ts.map +1 -0
  13. package/esm/schemas/graders/contexts/conversation.js +17 -0
  14. package/esm/schemas/graders/contexts/conversation.zod.d.ts +3 -0
  15. package/esm/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
  16. package/esm/schemas/graders/contexts/conversation.zod.js +2 -0
  17. package/esm/schemas/graders/contexts/conversation_tools.d.ts +31 -0
  18. package/esm/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
  19. package/esm/schemas/graders/contexts/conversation_tools.js +25 -0
  20. package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
  21. package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
  22. package/esm/schemas/graders/contexts/conversation_tools.zod.js +2 -0
  23. package/esm/schemas/graders/contexts/tools.d.ts +4 -0
  24. package/esm/schemas/graders/contexts/tools.d.ts.map +1 -0
  25. package/esm/schemas/graders/contexts/tools.js +3 -0
  26. package/esm/schemas/graders/contexts/tools.zod.d.ts +3 -0
  27. package/esm/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
  28. package/esm/schemas/graders/contexts/tools.zod.js +2 -0
  29. package/esm/schemas/graders/contexts/turn.d.ts +10 -0
  30. package/esm/schemas/graders/contexts/turn.d.ts.map +1 -0
  31. package/esm/schemas/graders/contexts/turn.js +8 -0
  32. package/esm/schemas/graders/contexts/turn.zod.d.ts +3 -0
  33. package/esm/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
  34. package/esm/schemas/graders/contexts/turn.zod.js +2 -0
  35. package/esm/schemas/graders/contexts/turn_tools.d.ts +32 -0
  36. package/esm/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
  37. package/esm/schemas/graders/contexts/turn_tools.js +28 -0
  38. package/esm/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
  39. package/esm/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
  40. package/esm/schemas/graders/contexts/turn_tools.zod.js +2 -0
  41. package/esm/schemas/graders/grader_output.d.ts +10 -0
  42. package/esm/schemas/graders/grader_output.d.ts.map +1 -0
  43. package/esm/schemas/graders/grader_output.js +8 -0
  44. package/esm/schemas/graders/grader_output.zod.d.ts +3 -0
  45. package/esm/schemas/graders/grader_output.zod.d.ts.map +1 -0
  46. package/esm/schemas/graders/grader_output.zod.js +2 -0
  47. package/esm/schemas/graders/respond.d.ts +12 -0
  48. package/esm/schemas/graders/respond.d.ts.map +1 -0
  49. package/esm/schemas/graders/respond.js +10 -0
  50. package/esm/schemas/graders/respond.zod.d.ts +3 -0
  51. package/esm/schemas/graders/respond.zod.d.ts.map +1 -0
  52. package/esm/schemas/graders/respond.zod.js +2 -0
  53. package/esm/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
  54. package/esm/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
  55. package/esm/schemas/scenarios/plain_chat_input_optional.js +5 -0
  56. package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
  57. package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
  58. package/esm/schemas/scenarios/plain_chat_input_optional.zod.js +2 -0
  59. package/esm/schemas/scenarios/plain_chat_output.d.ts +5 -0
  60. package/esm/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
  61. package/esm/schemas/scenarios/plain_chat_output.js +4 -0
  62. package/esm/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
  63. package/esm/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
  64. package/esm/schemas/scenarios/plain_chat_output.zod.js +2 -0
  65. package/esm/src/builtins.d.ts +2 -0
  66. package/esm/src/builtins.d.ts.map +1 -1
  67. package/esm/src/builtins.js +45 -1
  68. package/esm/src/constants.d.ts +4 -0
  69. package/esm/src/constants.d.ts.map +1 -1
  70. package/esm/src/constants.js +5 -0
  71. package/esm/src/definitions.d.ts +5 -1
  72. package/esm/src/definitions.d.ts.map +1 -1
  73. package/esm/src/loader.d.ts.map +1 -1
  74. package/esm/src/loader.js +119 -13
  75. package/esm/src/markdown.d.ts.map +1 -1
  76. package/esm/src/markdown.js +222 -53
  77. package/esm/src/permissions.d.ts +143 -0
  78. package/esm/src/permissions.d.ts.map +1 -0
  79. package/esm/src/permissions.js +406 -0
  80. package/esm/src/render.d.ts.map +1 -1
  81. package/esm/src/render.js +22 -8
  82. package/esm/src/runtime.d.ts +28 -2
  83. package/esm/src/runtime.d.ts.map +1 -1
  84. package/esm/src/runtime.js +3051 -100
  85. package/esm/src/runtime_exec_host.d.ts +6 -0
  86. package/esm/src/runtime_exec_host.d.ts.map +1 -0
  87. package/esm/src/runtime_exec_host.js +17 -0
  88. package/esm/src/runtime_exec_host_contract.d.ts +23 -0
  89. package/esm/src/runtime_exec_host_contract.d.ts.map +1 -0
  90. package/esm/src/runtime_exec_host_contract.js +14 -0
  91. package/esm/src/runtime_exec_host_deno.d.ts +3 -0
  92. package/esm/src/runtime_exec_host_deno.d.ts.map +1 -0
  93. package/esm/src/runtime_exec_host_deno.js +35 -0
  94. package/esm/src/runtime_exec_host_unsupported.d.ts +3 -0
  95. package/esm/src/runtime_exec_host_unsupported.d.ts.map +1 -0
  96. package/esm/src/runtime_exec_host_unsupported.js +8 -0
  97. package/esm/src/runtime_worker_host.d.ts +6 -0
  98. package/esm/src/runtime_worker_host.d.ts.map +1 -0
  99. package/esm/src/runtime_worker_host.js +17 -0
  100. package/esm/src/runtime_worker_host_contract.d.ts +33 -0
  101. package/esm/src/runtime_worker_host_contract.d.ts.map +1 -0
  102. package/esm/src/runtime_worker_host_contract.js +14 -0
  103. package/esm/src/runtime_worker_host_deno.d.ts +3 -0
  104. package/esm/src/runtime_worker_host_deno.d.ts.map +1 -0
  105. package/esm/src/runtime_worker_host_deno.js +26 -0
  106. package/esm/src/runtime_worker_host_unsupported.d.ts +3 -0
  107. package/esm/src/runtime_worker_host_unsupported.d.ts.map +1 -0
  108. package/esm/src/runtime_worker_host_unsupported.js +8 -0
  109. package/esm/src/state.d.ts +4 -1
  110. package/esm/src/state.d.ts.map +1 -1
  111. package/esm/src/state.js +48 -2
  112. package/esm/src/types.d.ts +381 -1
  113. package/esm/src/types.d.ts.map +1 -1
  114. package/esm/src/types.js +102 -1
  115. package/package.json +73 -2
  116. package/schemas/graders/contexts/conversation.ts +32 -9
  117. package/schemas/graders/contexts/conversation.zod.ts +1 -0
  118. package/schemas/graders/contexts/conversation_tools.ts +63 -0
  119. package/schemas/graders/contexts/conversation_tools.zod.ts +1 -0
  120. package/schemas/graders/contexts/tools.ts +5 -0
  121. package/schemas/graders/contexts/tools.zod.ts +1 -0
  122. package/schemas/graders/contexts/turn.ts +8 -1
  123. package/schemas/graders/contexts/turn.zod.ts +1 -0
  124. package/schemas/graders/contexts/turn_tools.ts +63 -0
  125. package/schemas/graders/contexts/turn_tools.zod.ts +1 -0
  126. package/schemas/graders/grader_output.ts +15 -0
  127. package/schemas/graders/grader_output.zod.ts +1 -0
  128. package/schemas/graders/respond.ts +13 -3
  129. package/schemas/graders/respond.zod.ts +1 -0
  130. package/schemas/scenarios/plain_chat_input_optional.ts +6 -0
  131. package/schemas/scenarios/plain_chat_input_optional.zod.ts +1 -0
  132. package/schemas/scenarios/plain_chat_output.ts +5 -0
  133. package/schemas/scenarios/plain_chat_output.zod.ts +1 -0
  134. package/{esm/deps/jsr.io/@std/collections/1.1.4 → script/deps/jsr.io/@std/collections/1.1.5}/deep_merge.d.ts +2 -2
  135. package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.d.ts.map +1 -1
  136. package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.5}/deep_merge.js +29 -19
  137. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
  138. package/script/mod.d.ts +20 -10
  139. package/script/mod.d.ts.map +1 -1
  140. package/script/mod.js +25 -9
  141. package/script/schemas/graders/contexts/conversation.d.ts +22 -0
  142. package/script/schemas/graders/contexts/conversation.d.ts.map +1 -0
  143. package/script/schemas/graders/contexts/conversation.js +20 -0
  144. package/script/schemas/graders/contexts/conversation.zod.d.ts +3 -0
  145. package/script/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
  146. package/script/schemas/graders/contexts/conversation.zod.js +9 -0
  147. package/script/schemas/graders/contexts/conversation_tools.d.ts +31 -0
  148. package/script/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
  149. package/script/schemas/graders/contexts/conversation_tools.js +28 -0
  150. package/script/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
  151. package/script/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
  152. package/script/schemas/graders/contexts/conversation_tools.zod.js +9 -0
  153. package/script/schemas/graders/contexts/tools.d.ts +4 -0
  154. package/script/schemas/graders/contexts/tools.d.ts.map +1 -0
  155. package/script/schemas/graders/contexts/tools.js +12 -0
  156. package/script/schemas/graders/contexts/tools.zod.d.ts +3 -0
  157. package/script/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
  158. package/script/schemas/graders/contexts/tools.zod.js +9 -0
  159. package/script/schemas/graders/contexts/turn.d.ts +10 -0
  160. package/script/schemas/graders/contexts/turn.d.ts.map +1 -0
  161. package/script/schemas/graders/contexts/turn.js +10 -0
  162. package/script/schemas/graders/contexts/turn.zod.d.ts +3 -0
  163. package/script/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
  164. package/script/schemas/graders/contexts/turn.zod.js +9 -0
  165. package/script/schemas/graders/contexts/turn_tools.d.ts +32 -0
  166. package/script/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
  167. package/script/schemas/graders/contexts/turn_tools.js +31 -0
  168. package/script/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
  169. package/script/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
  170. package/script/schemas/graders/contexts/turn_tools.zod.js +9 -0
  171. package/script/schemas/graders/grader_output.d.ts +10 -0
  172. package/script/schemas/graders/grader_output.d.ts.map +1 -0
  173. package/script/schemas/graders/grader_output.js +10 -0
  174. package/script/schemas/graders/grader_output.zod.d.ts +3 -0
  175. package/script/schemas/graders/grader_output.zod.d.ts.map +1 -0
  176. package/script/schemas/graders/grader_output.zod.js +9 -0
  177. package/script/schemas/graders/respond.d.ts +12 -0
  178. package/script/schemas/graders/respond.d.ts.map +1 -0
  179. package/script/schemas/graders/respond.js +12 -0
  180. package/script/schemas/graders/respond.zod.d.ts +3 -0
  181. package/script/schemas/graders/respond.zod.d.ts.map +1 -0
  182. package/script/schemas/graders/respond.zod.js +9 -0
  183. package/script/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
  184. package/script/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
  185. package/script/schemas/scenarios/plain_chat_input_optional.js +7 -0
  186. package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
  187. package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
  188. package/script/schemas/scenarios/plain_chat_input_optional.zod.js +9 -0
  189. package/script/schemas/scenarios/plain_chat_output.d.ts +5 -0
  190. package/script/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
  191. package/script/schemas/scenarios/plain_chat_output.js +6 -0
  192. package/script/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
  193. package/script/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
  194. package/script/schemas/scenarios/plain_chat_output.zod.js +9 -0
  195. package/script/src/builtins.d.ts +2 -0
  196. package/script/src/builtins.d.ts.map +1 -1
  197. package/script/src/builtins.js +47 -1
  198. package/script/src/constants.d.ts +4 -0
  199. package/script/src/constants.d.ts.map +1 -1
  200. package/script/src/constants.js +6 -1
  201. package/script/src/definitions.d.ts +5 -1
  202. package/script/src/definitions.d.ts.map +1 -1
  203. package/script/src/loader.d.ts.map +1 -1
  204. package/script/src/loader.js +118 -12
  205. package/script/src/markdown.d.ts.map +1 -1
  206. package/script/src/markdown.js +221 -52
  207. package/script/src/permissions.d.ts +143 -0
  208. package/script/src/permissions.d.ts.map +1 -0
  209. package/script/src/permissions.js +453 -0
  210. package/script/src/render.d.ts.map +1 -1
  211. package/script/src/render.js +22 -8
  212. package/script/src/runtime.d.ts +28 -2
  213. package/script/src/runtime.d.ts.map +1 -1
  214. package/script/src/runtime.js +3053 -99
  215. package/script/src/runtime_exec_host.d.ts +6 -0
  216. package/script/src/runtime_exec_host.d.ts.map +1 -0
  217. package/script/src/runtime_exec_host.js +56 -0
  218. package/script/src/runtime_exec_host_contract.d.ts +23 -0
  219. package/script/src/runtime_exec_host_contract.d.ts.map +1 -0
  220. package/script/src/runtime_exec_host_contract.js +18 -0
  221. package/script/src/runtime_exec_host_deno.d.ts +3 -0
  222. package/script/src/runtime_exec_host_deno.d.ts.map +1 -0
  223. package/script/src/runtime_exec_host_deno.js +71 -0
  224. package/script/src/runtime_exec_host_unsupported.d.ts +3 -0
  225. package/script/src/runtime_exec_host_unsupported.d.ts.map +1 -0
  226. package/script/src/runtime_exec_host_unsupported.js +11 -0
  227. package/script/src/runtime_worker_host.d.ts +6 -0
  228. package/script/src/runtime_worker_host.d.ts.map +1 -0
  229. package/script/src/runtime_worker_host.js +56 -0
  230. package/script/src/runtime_worker_host_contract.d.ts +33 -0
  231. package/script/src/runtime_worker_host_contract.d.ts.map +1 -0
  232. package/script/src/runtime_worker_host_contract.js +18 -0
  233. package/script/src/runtime_worker_host_deno.d.ts +3 -0
  234. package/script/src/runtime_worker_host_deno.d.ts.map +1 -0
  235. package/script/src/runtime_worker_host_deno.js +62 -0
  236. package/script/src/runtime_worker_host_unsupported.d.ts +3 -0
  237. package/script/src/runtime_worker_host_unsupported.d.ts.map +1 -0
  238. package/script/src/runtime_worker_host_unsupported.js +11 -0
  239. package/script/src/state.d.ts +4 -1
  240. package/script/src/state.d.ts.map +1 -1
  241. package/script/src/state.js +48 -2
  242. package/script/src/types.d.ts +381 -1
  243. package/script/src/types.d.ts.map +1 -1
  244. package/script/src/types.js +103 -0
  245. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
  246. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
  247. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -18
  248. package/esm/src/openai_compat.d.ts +0 -63
  249. package/esm/src/openai_compat.d.ts.map +0 -1
  250. package/esm/src/openai_compat.js +0 -272
  251. package/esm/src/providers/openrouter.d.ts +0 -8
  252. package/esm/src/providers/openrouter.d.ts.map +0 -1
  253. package/esm/src/providers/openrouter.js +0 -168
  254. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
  255. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
  256. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -21
  257. package/script/src/openai_compat.d.ts +0 -63
  258. package/script/src/openai_compat.d.ts.map +0 -1
  259. package/script/src/openai_compat.js +0 -276
  260. package/script/src/providers/openrouter.d.ts +0 -8
  261. package/script/src/providers/openrouter.d.ts.map +0 -1
  262. package/script/src/providers/openrouter.js +0 -207
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.d.ts","sourceRoot":"","sources":["../../../../src/schemas/graders/contexts/turn.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;IAClD,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;CACrD,CAAC;AAEF,QAAA,MAAM,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAGxD,CAAC;AAEH,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ import { graderConversationSchema, graderMessageSchema, } from "./conversation.js";
4
+ const graderTurnContextSchema = z.object({
5
+ session: graderConversationSchema,
6
+ messageToGrade: graderMessageSchema,
7
+ });
8
+ export default graderTurnContextSchema;
@@ -0,0 +1,3 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ export { default } from "./turn.js";
3
+ //# sourceMappingURL=turn.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn.zod.d.ts","sourceRoot":"","sources":["../../../../src/schemas/graders/contexts/turn.zod.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ export { default } from "./turn.js";
@@ -0,0 +1,32 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ type GraderToolCall = {
4
+ id?: string;
5
+ type?: string;
6
+ function: {
7
+ name: string;
8
+ arguments?: string;
9
+ };
10
+ };
11
+ type GraderMessageWithTools = {
12
+ role: string;
13
+ content?: unknown;
14
+ name?: string;
15
+ tool_calls?: Array<GraderToolCall>;
16
+ };
17
+ type GraderConversationWithTools = {
18
+ messages?: Array<GraderMessageWithTools>;
19
+ meta?: Record<string, unknown>;
20
+ notes?: {
21
+ text?: string;
22
+ };
23
+ };
24
+ type GraderTurnToolsContext = {
25
+ session: GraderConversationWithTools;
26
+ messageToGrade: GraderMessageWithTools;
27
+ };
28
+ export declare const graderMessageWithToolsSchema: z.ZodType<GraderMessageWithTools>;
29
+ export declare const graderConversationWithToolsSchema: z.ZodType<GraderConversationWithTools>;
30
+ declare const graderTurnToolsContextSchema: z.ZodType<GraderTurnToolsContext>;
31
+ export default graderTurnToolsContextSchema;
32
+ //# sourceMappingURL=turn_tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn_tools.d.ts","sourceRoot":"","sources":["../../../../src/schemas/graders/contexts/turn_tools.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,cAAc,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;CACpC,CAAC;AAEF,KAAK,2BAA2B,GAAG;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,2BAA2B,CAAC;IACrC,cAAc,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAWF,eAAO,MAAM,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAMvE,CAAC;AAEL,eAAO,MAAM,iCAAiC,EAAE,CAAC,CAAC,OAAO,CACvD,2BAA2B,CAK3B,CAAC;AAEH,QAAA,MAAM,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAIhE,CAAC;AAEL,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ const graderToolCallSchema = z.object({
4
+ id: z.string().optional(),
5
+ type: z.string().optional(),
6
+ function: z.object({
7
+ name: z.string(),
8
+ arguments: z.string().optional(),
9
+ }),
10
+ });
11
+ export const graderMessageWithToolsSchema = z
12
+ .object({
13
+ role: z.string(),
14
+ content: z.any().optional(),
15
+ name: z.string().optional(),
16
+ tool_calls: z.array(graderToolCallSchema).optional(),
17
+ });
18
+ export const graderConversationWithToolsSchema = z.object({
19
+ messages: z.array(graderMessageWithToolsSchema).optional(),
20
+ meta: z.record(z.any()).optional(),
21
+ notes: z.object({ text: z.string().optional() }).optional(),
22
+ });
23
+ const graderTurnToolsContextSchema = z
24
+ .object({
25
+ session: graderConversationWithToolsSchema,
26
+ messageToGrade: graderMessageWithToolsSchema,
27
+ });
28
+ export default graderTurnToolsContextSchema;
@@ -0,0 +1,3 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ export { default } from "./turn_tools.js";
3
+ //# sourceMappingURL=turn_tools.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn_tools.zod.d.ts","sourceRoot":"","sources":["../../../../src/schemas/graders/contexts/turn_tools.zod.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../../_dnt.polyfills.js";
2
+ export { default } from "./turn_tools.js";
@@ -0,0 +1,10 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ type GraderOutput = {
4
+ score: number;
5
+ reason: string;
6
+ evidence?: Array<string>;
7
+ };
8
+ declare const graderOutputSchema: z.ZodType<GraderOutput>;
9
+ export default graderOutputSchema;
10
+ //# sourceMappingURL=grader_output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grader_output.d.ts","sourceRoot":"","sources":["../../../src/schemas/graders/grader_output.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAI9C,CAAC;AAEH,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ const graderOutputSchema = z.object({
4
+ score: z.number().int().min(-3).max(3),
5
+ reason: z.string(),
6
+ evidence: z.array(z.string()).optional(),
7
+ });
8
+ export default graderOutputSchema;
@@ -0,0 +1,3 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./grader_output.js";
3
+ //# sourceMappingURL=grader_output.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grader_output.zod.d.ts","sourceRoot":"","sources":["../../../src/schemas/graders/grader_output.zod.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./grader_output.js";
@@ -0,0 +1,12 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ type RespondEnvelope = {
4
+ payload?: unknown;
5
+ status?: number;
6
+ message?: string;
7
+ code?: string;
8
+ meta?: Record<string, unknown>;
9
+ };
10
+ declare const respondSchema: z.ZodType<RespondEnvelope>;
11
+ export default respondSchema;
12
+ //# sourceMappingURL=respond.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respond.d.ts","sourceRoot":"","sources":["../../../src/schemas/graders/respond.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAM5C,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ const respondSchema = z.object({
4
+ payload: z.any().optional(),
5
+ status: z.number().int().optional(),
6
+ message: z.string().optional(),
7
+ code: z.string().optional(),
8
+ meta: z.record(z.any()).optional(),
9
+ });
10
+ export default respondSchema;
@@ -0,0 +1,3 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./respond.js";
3
+ //# sourceMappingURL=respond.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respond.zod.d.ts","sourceRoot":"","sources":["../../../src/schemas/graders/respond.zod.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./respond.js";
@@ -0,0 +1,5 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ declare const plainChatInputOptionalSchema: z.ZodType<string | undefined>;
4
+ export default plainChatInputOptionalSchema;
5
+ //# sourceMappingURL=plain_chat_input_optional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain_chat_input_optional.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_input_optional.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,4BAA4B,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CACnD,CAAC;AAEd,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ const plainChatInputOptionalSchema = z.string()
4
+ .optional();
5
+ export default plainChatInputOptionalSchema;
@@ -0,0 +1,3 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./plain_chat_input_optional.js";
3
+ //# sourceMappingURL=plain_chat_input_optional.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain_chat_input_optional.zod.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_input_optional.zod.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./plain_chat_input_optional.js";
@@ -0,0 +1,5 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ declare const plainChatOutputSchema: z.ZodType<string>;
4
+ export default plainChatOutputSchema;
5
+ //# sourceMappingURL=plain_chat_output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain_chat_output.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_output.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAc,CAAC;AAE5D,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import "../../_dnt.polyfills.js";
2
+ import { z } from "zod";
3
+ const plainChatOutputSchema = z.string();
4
+ export default plainChatOutputSchema;
@@ -0,0 +1,3 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./plain_chat_output.js";
3
+ //# sourceMappingURL=plain_chat_output.zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain_chat_output.zod.d.ts","sourceRoot":"","sources":["../../../src/schemas/scenarios/plain_chat_output.zod.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "../../_dnt.polyfills.js";
2
+ export { default } from "./plain_chat_output.js";
@@ -1,3 +1,5 @@
1
1
  export declare function resolveBuiltinCardPath(target: string): string | undefined;
2
+ export declare function resolveBuiltinSnippetPath(target: string): string | undefined;
2
3
  export declare function resolveBuiltinSchemaPath(target: string): string | undefined;
4
+ export declare function resolveBuiltinDeckPath(target: string): string | undefined;
3
5
  //# sourceMappingURL=builtins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/src/builtins.ts"],"names":[],"mappings":"AAYA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOzE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO3E"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/src/builtins.ts"],"names":[],"mappings":"AAqBA,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAazE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAO5E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgB3E;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBzE"}
@@ -1,26 +1,70 @@
1
1
  import * as path from "../deps/jsr.io/@std/path/1.1.4/mod.js";
2
2
  const CARDS_PREFIX = "gambit://cards/";
3
+ const SNIPPETS_PREFIX = "gambit://snippets/";
3
4
  const SCHEMAS_PREFIX = "gambit://schemas/";
5
+ const DECKS_PREFIX = "gambit://decks/";
4
6
  const CARDS_BASE_URL = new URL("../cards/", globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
7
+ const SNIPPETS_BASE_URL = new URL("../snippets/", globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
5
8
  const SCHEMAS_BASE_URL = new URL("../schemas/", globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
9
+ const DECKS_BASE_URL = new URL("../decks/", globalThis[Symbol.for("import-meta-ponyfill-esmodule")](import.meta).url);
10
+ const LEGACY_CARD_WARNINGS = new Set();
11
+ const LEGACY_SCHEMA_WARNINGS = new Set();
12
+ const LEGACY_DECK_WARNINGS = new Set();
13
+ const logger = console;
6
14
  function resolveFromBase(base, relative) {
7
15
  return path.fromFileUrl(new URL(relative, base));
8
16
  }
9
17
  export function resolveBuiltinCardPath(target) {
10
18
  if (!target.startsWith(CARDS_PREFIX))
11
19
  return undefined;
20
+ if (!LEGACY_CARD_WARNINGS.has(target)) {
21
+ LEGACY_CARD_WARNINGS.add(target);
22
+ logger.warn(`[gambit] "${target}" is deprecated; use gambit://snippets instead.`);
23
+ }
12
24
  const relative = target.slice(CARDS_PREFIX.length);
13
25
  if (!relative) {
14
26
  throw new Error(`Invalid gambit card specifier: ${target}`);
15
27
  }
16
28
  return resolveFromBase(CARDS_BASE_URL, relative);
17
29
  }
30
+ export function resolveBuiltinSnippetPath(target) {
31
+ if (!target.startsWith(SNIPPETS_PREFIX))
32
+ return undefined;
33
+ const relative = target.slice(SNIPPETS_PREFIX.length);
34
+ if (!relative) {
35
+ throw new Error(`Invalid gambit snippet specifier: ${target}`);
36
+ }
37
+ return resolveFromBase(SNIPPETS_BASE_URL, relative);
38
+ }
18
39
  export function resolveBuiltinSchemaPath(target) {
19
40
  if (!target.startsWith(SCHEMAS_PREFIX))
20
41
  return undefined;
21
- const relative = target.slice(SCHEMAS_PREFIX.length);
42
+ let relative = target.slice(SCHEMAS_PREFIX.length);
22
43
  if (!relative) {
23
44
  throw new Error(`Invalid gambit schema specifier: ${target}`);
24
45
  }
46
+ if (relative.endsWith(".ts") && !relative.endsWith(".zod.ts")) {
47
+ if (!LEGACY_SCHEMA_WARNINGS.has(target)) {
48
+ LEGACY_SCHEMA_WARNINGS.add(target);
49
+ logger.warn(`[gambit] "${target}" is deprecated; use .zod.ts schema URIs instead.`);
50
+ }
51
+ relative = `${relative.slice(0, -3)}.zod.ts`;
52
+ }
25
53
  return resolveFromBase(SCHEMAS_BASE_URL, relative);
26
54
  }
55
+ export function resolveBuiltinDeckPath(target) {
56
+ if (!target.startsWith(DECKS_PREFIX))
57
+ return undefined;
58
+ let relative = target.slice(DECKS_PREFIX.length);
59
+ if (!relative) {
60
+ throw new Error(`Invalid gambit deck specifier: ${target}`);
61
+ }
62
+ if (!relative.endsWith("/PROMPT.md")) {
63
+ if (!LEGACY_DECK_WARNINGS.has(target)) {
64
+ LEGACY_DECK_WARNINGS.add(target);
65
+ logger.warn(`[gambit] "${target}" is deprecated; use gambit://decks/.../PROMPT.md instead.`);
66
+ }
67
+ relative = `${relative.replace(/\/?$/, "/")}PROMPT.md`;
68
+ }
69
+ return resolveFromBase(DECKS_BASE_URL, relative);
70
+ }
@@ -6,6 +6,10 @@ export declare const DEFAULT_GUARDRAILS: {
6
6
  export declare const RESERVED_TOOL_PREFIX = "gambit_";
7
7
  export declare const TOOL_NAME_PATTERN: RegExp;
8
8
  export declare const MAX_TOOL_NAME_LENGTH = 64;
9
+ export declare const GAMBIT_TOOL_CONTEXT = "gambit_context";
10
+ /**
11
+ * @deprecated Use GAMBIT_TOOL_CONTEXT instead.
12
+ */
9
13
  export declare const GAMBIT_TOOL_INIT = "gambit_init";
10
14
  export declare const GAMBIT_TOOL_RESPOND = "gambit_respond";
11
15
  export declare const GAMBIT_TOOL_COMPLETE = "gambit_complete";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAKpD,CAAC;AAGH,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;;CAIrB,CAAC;AAEX,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAC9C,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AACtD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAMpD,CAAC;AAGH,eAAO,MAAM,uBAAuB,MAAM,CAAC"}
@@ -6,11 +6,16 @@ export const DEFAULT_GUARDRAILS = {
6
6
  export const RESERVED_TOOL_PREFIX = "gambit_";
7
7
  export const TOOL_NAME_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
8
8
  export const MAX_TOOL_NAME_LENGTH = 64;
9
+ export const GAMBIT_TOOL_CONTEXT = "gambit_context";
10
+ /**
11
+ * @deprecated Use GAMBIT_TOOL_CONTEXT instead.
12
+ */
9
13
  export const GAMBIT_TOOL_INIT = "gambit_init";
10
14
  export const GAMBIT_TOOL_RESPOND = "gambit_respond";
11
15
  export const GAMBIT_TOOL_COMPLETE = "gambit_complete";
12
16
  export const GAMBIT_TOOL_END = "gambit_end";
13
17
  export const BUILTIN_TOOL_NAME_SET = new Set([
18
+ GAMBIT_TOOL_CONTEXT,
14
19
  GAMBIT_TOOL_INIT,
15
20
  GAMBIT_TOOL_RESPOND,
16
21
  GAMBIT_TOOL_COMPLETE,
@@ -1,6 +1,10 @@
1
1
  import type { CardDefinition, DeckDefinition } from "./types.js";
2
2
  import type { z } from "zod";
3
- export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "inputSchema" | "outputSchema"> & {
3
+ export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "contextSchema" | "responseSchema" | "inputSchema" | "outputSchema"> & {
4
+ contextSchema: InputSchema;
5
+ responseSchema?: OutputSchema;
6
+ }): DeckDefinition<z.infer<InputSchema>>;
7
+ export declare function defineDeck<InputSchema extends z.ZodTypeAny, OutputSchema extends z.ZodTypeAny | undefined = undefined>(def: Omit<DeckDefinition<z.infer<InputSchema>>, "kind" | "contextSchema" | "responseSchema" | "inputSchema" | "outputSchema"> & {
4
8
  inputSchema: InputSchema;
5
9
  outputSchema?: OutputSchema;
6
10
  }): DeckDefinition<z.infer<InputSchema>>;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/src/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EACpC,MAAM,GAAG,aAAa,GAAG,cAAc,CACxC,GACC;IACA,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GACF,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAChC,cAAc,CAAC;AAOlB,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/src/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,GACN,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,cAAc,CACjB,GACC;IACA,aAAa,EAAE,WAAW,CAAC;IAC3B,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B,GACF,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,wBAAgB,UAAU,CACxB,WAAW,SAAS,CAAC,CAAC,UAAU,EAChC,YAAY,SAAS,CAAC,CAAC,UAAU,GAAG,SAAS,GAAG,SAAS,EAEzD,GAAG,EACC,IAAI,CACJ,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAClC,MAAM,GACN,eAAe,GACf,gBAAgB,GAChB,aAAa,GACb,cAAc,CACjB,GACC;IACA,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B,GACF,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AACxC,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAChC,cAAc,CAAC;AAOlB,wBAAgB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAE5E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAKxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/src/loader.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAKV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAsHpB,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAOrB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CA6HrB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/src/loader.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAMV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAiPpB,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CA4JrB"}
package/esm/src/loader.js CHANGED
@@ -1,10 +1,60 @@
1
+ import * as dntShim from "../_dnt.shims.js";
1
2
  import * as path from "../deps/jsr.io/@std/path/1.1.4/mod.js";
2
3
  import { BUILTIN_TOOL_NAME_SET, MAX_TOOL_NAME_LENGTH, RESERVED_TOOL_PREFIX, TOOL_NAME_PATTERN, } from "./constants.js";
3
4
  import { isCardDefinition, isDeckDefinition } from "./definitions.js";
5
+ import { normalizePermissionDeclaration, } from "./permissions.js";
4
6
  import { mergeZodObjects } from "./schema.js";
5
7
  import { isMarkdownFile, loadMarkdownCard, loadMarkdownDeck, } from "./markdown.js";
6
- import { resolveBuiltinCardPath } from "./builtins.js";
8
+ import { resolveBuiltinCardPath, resolveBuiltinDeckPath, resolveBuiltinSnippetPath, } from "./builtins.js";
7
9
  const logger = console;
10
+ const LEGACY_SCHEMA_WARNINGS = new Set();
11
+ const LEGACY_FRAGMENT_WARNINGS = new Set();
12
+ function warnLegacySchema(resolvedPath, legacy, replacement) {
13
+ const key = `${resolvedPath}:${legacy}`;
14
+ if (LEGACY_SCHEMA_WARNINGS.has(key))
15
+ return;
16
+ LEGACY_SCHEMA_WARNINGS.add(key);
17
+ logger.warn(`[gambit] deck at ${resolvedPath} uses deprecated "${legacy}"; rename to "${replacement}"`);
18
+ }
19
+ function warnLegacyFragment(resolvedPath, legacy, replacement) {
20
+ const key = `${resolvedPath}:${legacy}`;
21
+ if (LEGACY_FRAGMENT_WARNINGS.has(key))
22
+ return;
23
+ LEGACY_FRAGMENT_WARNINGS.add(key);
24
+ logger.warn(`[gambit] card at ${resolvedPath} uses deprecated "${legacy}"; rename to "${replacement}"`);
25
+ }
26
+ function normalizeDeckSchemas(deck, resolvedPath) {
27
+ if (deck.inputSchema !== undefined) {
28
+ warnLegacySchema(resolvedPath, "inputSchema", "contextSchema");
29
+ }
30
+ if (deck.outputSchema !== undefined) {
31
+ warnLegacySchema(resolvedPath, "outputSchema", "responseSchema");
32
+ }
33
+ const contextSchema = deck.contextSchema ?? deck.inputSchema;
34
+ const responseSchema = deck.responseSchema ?? deck.outputSchema;
35
+ return {
36
+ contextSchema,
37
+ responseSchema,
38
+ inputSchema: contextSchema,
39
+ outputSchema: responseSchema,
40
+ };
41
+ }
42
+ function normalizeCardFragments(card, resolvedPath) {
43
+ if (card.inputFragment !== undefined) {
44
+ warnLegacyFragment(resolvedPath, "inputFragment", "contextFragment");
45
+ }
46
+ if (card.outputFragment !== undefined) {
47
+ warnLegacyFragment(resolvedPath, "outputFragment", "responseFragment");
48
+ }
49
+ const contextFragment = card.contextFragment ?? card.inputFragment;
50
+ const responseFragment = card.responseFragment ?? card.outputFragment;
51
+ return {
52
+ contextFragment,
53
+ responseFragment,
54
+ inputFragment: contextFragment,
55
+ outputFragment: responseFragment,
56
+ };
57
+ }
8
58
  function toFileUrl(p) {
9
59
  const abs = path.resolve(p);
10
60
  return path.toFileUrl(abs).href;
@@ -14,7 +64,10 @@ function normalizeActionDecks(actions, basePath) {
14
64
  return [];
15
65
  return actions.map((a) => ({
16
66
  ...a,
17
- path: basePath ? path.resolve(path.dirname(basePath), a.path) : a.path,
67
+ path: a.path.startsWith("gambit://") || !basePath
68
+ ? a.path
69
+ : path.resolve(path.dirname(basePath), a.path),
70
+ permissions: normalizePermissionDeclaration(a.permissions, basePath ? path.dirname(basePath) : dntShim.Deno.cwd()),
18
71
  }));
19
72
  }
20
73
  function normalizeCompanionDecks(decks, basePath) {
@@ -22,9 +75,10 @@ function normalizeCompanionDecks(decks, basePath) {
22
75
  return [];
23
76
  return decks.map((deck) => ({
24
77
  ...deck,
25
- path: basePath
26
- ? path.resolve(path.dirname(basePath), deck.path)
27
- : deck.path,
78
+ path: deck.path.startsWith("gambit://") || !basePath
79
+ ? deck.path
80
+ : path.resolve(path.dirname(basePath), deck.path),
81
+ permissions: normalizePermissionDeclaration(deck.permissions, basePath ? path.dirname(basePath) : dntShim.Deno.cwd()),
28
82
  }));
29
83
  }
30
84
  function checkReserved(action) {
@@ -37,6 +91,30 @@ function checkReserved(action) {
37
91
  throw new Error(`Action name ${action.name} must match ${TOOL_NAME_PATTERN} and be <= ${MAX_TOOL_NAME_LENGTH} characters`);
38
92
  }
39
93
  }
94
+ function normalizeExternalTools(tools, resolvedPath) {
95
+ if (!tools)
96
+ return [];
97
+ return tools.map((tool) => {
98
+ const name = String(tool.name ?? "").trim();
99
+ if (!name) {
100
+ throw new Error(`External tool must include a name (${resolvedPath})`);
101
+ }
102
+ if (name.startsWith(RESERVED_TOOL_PREFIX)) {
103
+ throw new Error(`External tool name ${name} is reserved (prefix ${RESERVED_TOOL_PREFIX})`);
104
+ }
105
+ if (!TOOL_NAME_PATTERN.test(name) ||
106
+ name.length > MAX_TOOL_NAME_LENGTH) {
107
+ throw new Error(`External tool name ${name} must match ${TOOL_NAME_PATTERN} and be <= ${MAX_TOOL_NAME_LENGTH} characters`);
108
+ }
109
+ return {
110
+ name,
111
+ description: typeof tool.description === "string"
112
+ ? tool.description
113
+ : undefined,
114
+ inputSchema: tool.inputSchema,
115
+ };
116
+ });
117
+ }
40
118
  async function loadCardInternal(cardPath, parentPath, stack = []) {
41
119
  const resolved = parentPath
42
120
  ? path.resolve(path.dirname(parentPath), cardPath)
@@ -61,6 +139,7 @@ async function loadCardInternal(cardPath, parentPath, stack = []) {
61
139
  const graderDecks = normalizeCompanionDecks(card.graderDecks, resolved);
62
140
  actionDecks.forEach(checkReserved);
63
141
  const { label: _l, ...rest } = card;
142
+ const fragments = normalizeCardFragments(card, resolved);
64
143
  return {
65
144
  ...rest,
66
145
  label: cardLabel,
@@ -70,28 +149,37 @@ async function loadCardInternal(cardPath, parentPath, stack = []) {
70
149
  graderDecks,
71
150
  path: resolved,
72
151
  cards: [],
152
+ ...fragments,
153
+ permissions: normalizePermissionDeclaration(card.permissions, path.dirname(resolved)),
73
154
  };
74
155
  }
75
156
  export async function loadCard(cardPath, parentPath, stack = []) {
76
157
  const builtinPath = resolveBuiltinCardPath(cardPath);
77
- const normalizedPath = builtinPath ?? cardPath;
158
+ const snippetPath = resolveBuiltinSnippetPath(cardPath);
159
+ const normalizedPath = snippetPath ?? builtinPath ?? cardPath;
78
160
  if (isMarkdownFile(normalizedPath)) {
79
161
  return await loadMarkdownCard(normalizedPath, parentPath, stack);
80
162
  }
81
163
  return await loadCardInternal(normalizedPath, parentPath, stack);
82
164
  }
83
165
  export async function loadDeck(deckPath, parentPath) {
84
- if (isMarkdownFile(deckPath)) {
85
- return await loadMarkdownDeck(deckPath, parentPath);
166
+ const builtinDeck = resolveBuiltinDeckPath(deckPath);
167
+ const normalizedDeckPath = builtinDeck ?? deckPath;
168
+ const markdownParent = builtinDeck ? undefined : parentPath;
169
+ if (isMarkdownFile(normalizedDeckPath)) {
170
+ return await loadMarkdownDeck(normalizedDeckPath, markdownParent);
86
171
  }
87
- const resolved = parentPath
88
- ? path.resolve(path.dirname(parentPath), deckPath)
89
- : path.resolve(deckPath);
172
+ const resolved = markdownParent
173
+ ? path.resolve(path.dirname(markdownParent), normalizedDeckPath)
174
+ : path.resolve(normalizedDeckPath);
90
175
  const mod = await import(toFileUrl(resolved));
91
176
  const deck = mod.default;
92
177
  if (!isDeckDefinition(deck)) {
93
178
  throw new Error(`Deck at ${resolved} did not export a valid deck definition`);
94
179
  }
180
+ if (deck.mcpServers !== undefined) {
181
+ throw new Error(`Deck-level [[mcpServers]] is unsupported in this phase (${resolved})`);
182
+ }
95
183
  const deckLabel = deck.label;
96
184
  const cards = [];
97
185
  const mergedActions = {};
@@ -111,12 +199,26 @@ export async function loadDeck(deckPath, parentPath) {
111
199
  mergedActions[action.name] = action;
112
200
  }
113
201
  const actionDecks = Object.values(mergedActions);
114
- let inputSchema = deck.inputSchema;
115
- let outputSchema = deck.outputSchema;
202
+ const tools = normalizeExternalTools(deck.tools, resolved);
203
+ const actionNames = new Set(actionDecks.map((action) => action.name));
204
+ for (const tool of tools) {
205
+ if (actionNames.has(tool.name)) {
206
+ logger.warn(`[gambit] tool ${tool.name} is shadowed by an action in ${resolved}`);
207
+ }
208
+ }
209
+ const schemaAliases = normalizeDeckSchemas(deck, resolved);
210
+ let inputSchema = schemaAliases.inputSchema;
211
+ let outputSchema = schemaAliases.outputSchema;
212
+ let contextSchema = schemaAliases.contextSchema;
213
+ let responseSchema = schemaAliases.responseSchema;
116
214
  for (const card of allCards) {
117
215
  inputSchema = mergeZodObjects(inputSchema, card.inputFragment);
118
216
  outputSchema = mergeZodObjects(outputSchema, card.outputFragment);
217
+ contextSchema = mergeZodObjects(contextSchema, card.contextFragment);
218
+ responseSchema = mergeZodObjects(responseSchema, card.responseFragment);
119
219
  }
220
+ inputSchema = contextSchema;
221
+ outputSchema = responseSchema;
120
222
  const executor = typeof deck.run === "function"
121
223
  ? deck.run
122
224
  : typeof deck.execute === "function"
@@ -163,11 +265,15 @@ export async function loadDeck(deckPath, parentPath) {
163
265
  actions: actionDecks,
164
266
  testDecks: normalizeCompanionDecks(deck.testDecks, resolved),
165
267
  graderDecks: normalizeCompanionDecks(deck.graderDecks, resolved),
268
+ tools,
269
+ contextSchema,
270
+ responseSchema,
166
271
  inputSchema,
167
272
  outputSchema,
168
273
  executor,
169
274
  handlers,
170
275
  respond: deck.respond,
276
+ permissions: normalizePermissionDeclaration(deck.permissions, path.dirname(resolved)),
171
277
  };
172
278
  }
173
279
  function flattenCards(cards) {
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/src/markdown.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAIV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAmKpB,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CA8FrB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CAgLrB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/src/markdown.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAKV,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAuVpB,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,KAAK,CAAC,MAAM,CAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAsGrB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CAqPrB;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}