@bolt-foundry/gambit-core 0.8.3 → 0.8.5-rc.11

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 (441) hide show
  1. package/README.md +38 -7
  2. package/cards/context.card.md +4 -4
  3. package/decks/anthropic/agent-sdk/PROMPT.md +9 -0
  4. package/decks/openai/codex-sdk/PROMPT.md +9 -0
  5. package/decks/openai/codex-sdk/codex_client.ts +109 -0
  6. package/decks/openai/codex-sdk/codex_sdk_bridge.deck.ts +36 -0
  7. package/esm/cards/context.card.md +9 -0
  8. package/esm/cards/end.card.md +10 -0
  9. package/esm/cards/generate-test-input.card.md +12 -0
  10. package/esm/cards/respond.card.md +10 -0
  11. package/esm/decks/anthropic/agent-sdk/PROMPT.md +9 -0
  12. package/esm/decks/openai/codex-sdk/PROMPT.md +9 -0
  13. package/esm/decks/openai/codex-sdk/codex_client.ts +109 -0
  14. package/esm/decks/openai/codex-sdk/codex_sdk_bridge.deck.ts +36 -0
  15. package/{script/deps/jsr.io/@std/collections/1.1.4 → esm/deps/jsr.io/@std/collections/1.1.6}/deep_merge.d.ts +2 -2
  16. package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.6}/deep_merge.d.ts.map +1 -1
  17. package/esm/deps/jsr.io/@std/collections/{1.1.4 → 1.1.6}/deep_merge.js +29 -19
  18. package/esm/deps/jsr.io/@std/front-matter/1.0.9/yaml.js +1 -1
  19. package/esm/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
  20. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts.map +1 -1
  21. package/{script/deps/jsr.io/@std/yaml/1.0.11 → esm/deps/jsr.io/@std/yaml/1.0.12}/_loader_state.d.ts +0 -5
  22. package/esm/deps/jsr.io/@std/yaml/1.0.12/_loader_state.d.ts.map +1 -0
  23. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_loader_state.js +216 -175
  24. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts.map +1 -1
  25. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts.map +1 -1
  26. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts.map +1 -1
  27. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts.map +1 -1
  28. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts.map +1 -1
  29. package/{script/deps/jsr.io/@std/yaml/1.0.11 → esm/deps/jsr.io/@std/yaml/1.0.12}/_type/map.d.ts.map +1 -1
  30. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts.map +1 -1
  31. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts.map +1 -1
  32. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts.map +1 -1
  33. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts.map +1 -1
  34. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts.map +1 -1
  35. package/{script/deps/jsr.io/@std/yaml/1.0.11 → esm/deps/jsr.io/@std/yaml/1.0.12}/_type/seq.d.ts.map +1 -1
  36. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts.map +1 -1
  37. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts.map +1 -1
  38. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts.map +1 -1
  39. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts.map +1 -1
  40. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts.map +1 -1
  41. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts.map +1 -1
  42. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts.map +1 -1
  43. package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.js +0 -2
  44. package/esm/mod.d.ts +10 -2
  45. package/esm/mod.d.ts.map +1 -1
  46. package/esm/mod.js +4 -0
  47. package/esm/schemas/graders/contexts/conversation.d.ts +22 -0
  48. package/esm/schemas/graders/contexts/conversation.d.ts.map +1 -0
  49. package/esm/schemas/graders/contexts/conversation.js +17 -0
  50. package/esm/schemas/graders/contexts/conversation.ts +40 -0
  51. package/esm/schemas/graders/contexts/conversation.zod.d.ts +3 -0
  52. package/esm/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
  53. package/esm/schemas/graders/contexts/conversation.zod.js +2 -0
  54. package/esm/schemas/graders/contexts/conversation.zod.ts +1 -0
  55. package/esm/schemas/graders/contexts/conversation_tools.d.ts +31 -0
  56. package/esm/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
  57. package/esm/schemas/graders/contexts/conversation_tools.js +25 -0
  58. package/esm/schemas/graders/contexts/conversation_tools.ts +63 -0
  59. package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
  60. package/esm/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
  61. package/esm/schemas/graders/contexts/conversation_tools.zod.js +2 -0
  62. package/esm/schemas/graders/contexts/conversation_tools.zod.ts +1 -0
  63. package/esm/schemas/graders/contexts/tools.d.ts +4 -0
  64. package/esm/schemas/graders/contexts/tools.d.ts.map +1 -0
  65. package/esm/schemas/graders/contexts/tools.js +3 -0
  66. package/esm/schemas/graders/contexts/tools.ts +5 -0
  67. package/esm/schemas/graders/contexts/tools.zod.d.ts +3 -0
  68. package/esm/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
  69. package/esm/schemas/graders/contexts/tools.zod.js +2 -0
  70. package/esm/schemas/graders/contexts/tools.zod.ts +1 -0
  71. package/esm/schemas/graders/contexts/turn.d.ts +10 -0
  72. package/esm/schemas/graders/contexts/turn.d.ts.map +1 -0
  73. package/esm/schemas/graders/contexts/turn.js +8 -0
  74. package/esm/schemas/graders/contexts/turn.ts +17 -0
  75. package/esm/schemas/graders/contexts/turn.zod.d.ts +3 -0
  76. package/esm/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
  77. package/esm/schemas/graders/contexts/turn.zod.js +2 -0
  78. package/esm/schemas/graders/contexts/turn.zod.ts +1 -0
  79. package/esm/schemas/graders/contexts/turn_tools.d.ts +32 -0
  80. package/esm/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
  81. package/esm/schemas/graders/contexts/turn_tools.js +28 -0
  82. package/esm/schemas/graders/contexts/turn_tools.ts +63 -0
  83. package/esm/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
  84. package/esm/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
  85. package/esm/schemas/graders/contexts/turn_tools.zod.js +2 -0
  86. package/esm/schemas/graders/contexts/turn_tools.zod.ts +1 -0
  87. package/esm/schemas/graders/grader_output.d.ts +10 -0
  88. package/esm/schemas/graders/grader_output.d.ts.map +1 -0
  89. package/esm/schemas/graders/grader_output.js +8 -0
  90. package/esm/schemas/graders/grader_output.ts +15 -0
  91. package/esm/schemas/graders/grader_output.zod.d.ts +3 -0
  92. package/esm/schemas/graders/grader_output.zod.d.ts.map +1 -0
  93. package/esm/schemas/graders/grader_output.zod.js +2 -0
  94. package/esm/schemas/graders/grader_output.zod.ts +1 -0
  95. package/esm/schemas/graders/respond.d.ts +12 -0
  96. package/esm/schemas/graders/respond.d.ts.map +1 -0
  97. package/esm/schemas/graders/respond.js +10 -0
  98. package/esm/schemas/graders/respond.ts +19 -0
  99. package/esm/schemas/graders/respond.zod.d.ts +3 -0
  100. package/esm/schemas/graders/respond.zod.d.ts.map +1 -0
  101. package/esm/schemas/graders/respond.zod.js +2 -0
  102. package/esm/schemas/graders/respond.zod.ts +1 -0
  103. package/esm/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
  104. package/esm/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
  105. package/esm/schemas/scenarios/plain_chat_input_optional.js +5 -0
  106. package/esm/schemas/scenarios/plain_chat_input_optional.ts +6 -0
  107. package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
  108. package/esm/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
  109. package/esm/schemas/scenarios/plain_chat_input_optional.zod.js +2 -0
  110. package/esm/schemas/scenarios/plain_chat_input_optional.zod.ts +1 -0
  111. package/esm/schemas/scenarios/plain_chat_output.d.ts +5 -0
  112. package/esm/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
  113. package/esm/schemas/scenarios/plain_chat_output.js +4 -0
  114. package/esm/schemas/scenarios/plain_chat_output.ts +5 -0
  115. package/esm/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
  116. package/esm/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
  117. package/esm/schemas/scenarios/plain_chat_output.zod.js +2 -0
  118. package/esm/schemas/scenarios/plain_chat_output.zod.ts +1 -0
  119. package/esm/snippets/context.md +8 -0
  120. package/esm/snippets/end.md +10 -0
  121. package/esm/snippets/generate-test-input.md +12 -0
  122. package/esm/snippets/init.md +12 -0
  123. package/esm/snippets/respond.md +10 -0
  124. package/esm/snippets/scenario-participant.md +10 -0
  125. package/esm/src/builtins.d.ts +2 -0
  126. package/esm/src/builtins.d.ts.map +1 -1
  127. package/esm/src/builtins.js +45 -1
  128. package/esm/src/constants.d.ts +0 -1
  129. package/esm/src/constants.d.ts.map +1 -1
  130. package/esm/src/constants.js +0 -4
  131. package/esm/src/loader.d.ts.map +1 -1
  132. package/esm/src/loader.js +159 -11
  133. package/esm/src/markdown.d.ts.map +1 -1
  134. package/esm/src/markdown.js +267 -41
  135. package/esm/src/permissions.d.ts +143 -0
  136. package/esm/src/permissions.d.ts.map +1 -0
  137. package/esm/src/permissions.js +406 -0
  138. package/esm/src/runtime.d.ts +43 -3
  139. package/esm/src/runtime.d.ts.map +1 -1
  140. package/esm/src/runtime.js +4372 -406
  141. package/esm/src/runtime_exec_host.d.ts +6 -0
  142. package/esm/src/runtime_exec_host.d.ts.map +1 -0
  143. package/esm/src/runtime_exec_host.js +17 -0
  144. package/esm/src/runtime_exec_host_contract.d.ts +23 -0
  145. package/esm/src/runtime_exec_host_contract.d.ts.map +1 -0
  146. package/esm/src/runtime_exec_host_contract.js +14 -0
  147. package/esm/src/runtime_exec_host_deno.d.ts +3 -0
  148. package/esm/src/runtime_exec_host_deno.d.ts.map +1 -0
  149. package/esm/src/runtime_exec_host_deno.js +35 -0
  150. package/esm/src/runtime_exec_host_unsupported.d.ts +3 -0
  151. package/esm/src/runtime_exec_host_unsupported.d.ts.map +1 -0
  152. package/esm/src/runtime_exec_host_unsupported.js +8 -0
  153. package/esm/src/runtime_worker_host.d.ts +6 -0
  154. package/esm/src/runtime_worker_host.d.ts.map +1 -0
  155. package/esm/src/runtime_worker_host.js +17 -0
  156. package/esm/src/runtime_worker_host_contract.d.ts +33 -0
  157. package/esm/src/runtime_worker_host_contract.d.ts.map +1 -0
  158. package/esm/src/runtime_worker_host_contract.js +14 -0
  159. package/esm/src/runtime_worker_host_deno.d.ts +3 -0
  160. package/esm/src/runtime_worker_host_deno.d.ts.map +1 -0
  161. package/esm/src/runtime_worker_host_deno.js +26 -0
  162. package/esm/src/runtime_worker_host_unsupported.d.ts +3 -0
  163. package/esm/src/runtime_worker_host_unsupported.d.ts.map +1 -0
  164. package/esm/src/runtime_worker_host_unsupported.js +8 -0
  165. package/esm/src/state.d.ts +1 -0
  166. package/esm/src/state.d.ts.map +1 -1
  167. package/esm/src/types.d.ts +259 -3
  168. package/esm/src/types.d.ts.map +1 -1
  169. package/package.json +73 -1
  170. package/schemas/graders/contexts/conversation.ts +32 -9
  171. package/schemas/graders/contexts/conversation.zod.ts +1 -0
  172. package/schemas/graders/contexts/conversation_tools.ts +63 -0
  173. package/schemas/graders/contexts/conversation_tools.zod.ts +1 -0
  174. package/schemas/graders/contexts/tools.ts +5 -0
  175. package/schemas/graders/contexts/tools.zod.ts +1 -0
  176. package/schemas/graders/contexts/turn.ts +8 -1
  177. package/schemas/graders/contexts/turn.zod.ts +1 -0
  178. package/schemas/graders/contexts/turn_tools.ts +63 -0
  179. package/schemas/graders/contexts/turn_tools.zod.ts +1 -0
  180. package/schemas/graders/grader_output.ts +9 -1
  181. package/schemas/graders/grader_output.zod.ts +1 -0
  182. package/schemas/graders/respond.ts +13 -3
  183. package/schemas/graders/respond.zod.ts +1 -0
  184. package/schemas/scenarios/plain_chat_input_optional.ts +6 -0
  185. package/schemas/scenarios/plain_chat_input_optional.zod.ts +1 -0
  186. package/schemas/scenarios/plain_chat_output.ts +5 -0
  187. package/schemas/scenarios/plain_chat_output.zod.ts +1 -0
  188. package/script/cards/context.card.md +9 -0
  189. package/script/cards/end.card.md +10 -0
  190. package/script/cards/generate-test-input.card.md +12 -0
  191. package/script/cards/respond.card.md +10 -0
  192. package/script/decks/anthropic/agent-sdk/PROMPT.md +9 -0
  193. package/script/decks/openai/codex-sdk/PROMPT.md +9 -0
  194. package/script/decks/openai/codex-sdk/codex_client.ts +109 -0
  195. package/script/decks/openai/codex-sdk/codex_sdk_bridge.deck.ts +36 -0
  196. package/{esm/deps/jsr.io/@std/collections/1.1.4 → script/deps/jsr.io/@std/collections/1.1.6}/deep_merge.d.ts +2 -2
  197. package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.6}/deep_merge.d.ts.map +1 -1
  198. package/script/deps/jsr.io/@std/collections/{1.1.4 → 1.1.6}/deep_merge.js +29 -19
  199. package/script/deps/jsr.io/@std/front-matter/1.0.9/yaml.js +1 -1
  200. package/script/deps/jsr.io/@std/toml/1.0.11/_parser.js +1 -1
  201. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts.map +1 -1
  202. package/{esm/deps/jsr.io/@std/yaml/1.0.11 → script/deps/jsr.io/@std/yaml/1.0.12}/_loader_state.d.ts +0 -5
  203. package/script/deps/jsr.io/@std/yaml/1.0.12/_loader_state.d.ts.map +1 -0
  204. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_loader_state.js +216 -175
  205. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts.map +1 -1
  206. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts.map +1 -1
  207. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts.map +1 -1
  208. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts.map +1 -1
  209. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts.map +1 -1
  210. package/{esm/deps/jsr.io/@std/yaml/1.0.11 → script/deps/jsr.io/@std/yaml/1.0.12}/_type/map.d.ts.map +1 -1
  211. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts.map +1 -1
  212. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts.map +1 -1
  213. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts.map +1 -1
  214. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts.map +1 -1
  215. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts.map +1 -1
  216. package/{esm/deps/jsr.io/@std/yaml/1.0.11 → script/deps/jsr.io/@std/yaml/1.0.12}/_type/seq.d.ts.map +1 -1
  217. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts.map +1 -1
  218. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts.map +1 -1
  219. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts.map +1 -1
  220. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts.map +1 -1
  221. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts.map +1 -1
  222. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts.map +1 -1
  223. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts.map +1 -1
  224. package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.js +0 -2
  225. package/script/mod.d.ts +10 -2
  226. package/script/mod.d.ts.map +1 -1
  227. package/script/mod.js +12 -1
  228. package/script/schemas/graders/contexts/conversation.d.ts +22 -0
  229. package/script/schemas/graders/contexts/conversation.d.ts.map +1 -0
  230. package/script/schemas/graders/contexts/conversation.js +20 -0
  231. package/script/schemas/graders/contexts/conversation.ts +40 -0
  232. package/script/schemas/graders/contexts/conversation.zod.d.ts +3 -0
  233. package/script/schemas/graders/contexts/conversation.zod.d.ts.map +1 -0
  234. package/script/schemas/graders/contexts/conversation.zod.js +9 -0
  235. package/script/schemas/graders/contexts/conversation.zod.ts +1 -0
  236. package/script/schemas/graders/contexts/conversation_tools.d.ts +31 -0
  237. package/script/schemas/graders/contexts/conversation_tools.d.ts.map +1 -0
  238. package/script/schemas/graders/contexts/conversation_tools.js +28 -0
  239. package/script/schemas/graders/contexts/conversation_tools.ts +63 -0
  240. package/script/schemas/graders/contexts/conversation_tools.zod.d.ts +3 -0
  241. package/script/schemas/graders/contexts/conversation_tools.zod.d.ts.map +1 -0
  242. package/script/schemas/graders/contexts/conversation_tools.zod.js +9 -0
  243. package/script/schemas/graders/contexts/conversation_tools.zod.ts +1 -0
  244. package/script/schemas/graders/contexts/tools.d.ts +4 -0
  245. package/script/schemas/graders/contexts/tools.d.ts.map +1 -0
  246. package/script/schemas/graders/contexts/tools.js +12 -0
  247. package/script/schemas/graders/contexts/tools.ts +5 -0
  248. package/script/schemas/graders/contexts/tools.zod.d.ts +3 -0
  249. package/script/schemas/graders/contexts/tools.zod.d.ts.map +1 -0
  250. package/script/schemas/graders/contexts/tools.zod.js +9 -0
  251. package/script/schemas/graders/contexts/tools.zod.ts +1 -0
  252. package/script/schemas/graders/contexts/turn.d.ts +10 -0
  253. package/script/schemas/graders/contexts/turn.d.ts.map +1 -0
  254. package/script/schemas/graders/contexts/turn.js +10 -0
  255. package/script/schemas/graders/contexts/turn.ts +17 -0
  256. package/script/schemas/graders/contexts/turn.zod.d.ts +3 -0
  257. package/script/schemas/graders/contexts/turn.zod.d.ts.map +1 -0
  258. package/script/schemas/graders/contexts/turn.zod.js +9 -0
  259. package/script/schemas/graders/contexts/turn.zod.ts +1 -0
  260. package/script/schemas/graders/contexts/turn_tools.d.ts +32 -0
  261. package/script/schemas/graders/contexts/turn_tools.d.ts.map +1 -0
  262. package/script/schemas/graders/contexts/turn_tools.js +31 -0
  263. package/script/schemas/graders/contexts/turn_tools.ts +63 -0
  264. package/script/schemas/graders/contexts/turn_tools.zod.d.ts +3 -0
  265. package/script/schemas/graders/contexts/turn_tools.zod.d.ts.map +1 -0
  266. package/script/schemas/graders/contexts/turn_tools.zod.js +9 -0
  267. package/script/schemas/graders/contexts/turn_tools.zod.ts +1 -0
  268. package/script/schemas/graders/grader_output.d.ts +10 -0
  269. package/script/schemas/graders/grader_output.d.ts.map +1 -0
  270. package/script/schemas/graders/grader_output.js +10 -0
  271. package/script/schemas/graders/grader_output.ts +15 -0
  272. package/script/schemas/graders/grader_output.zod.d.ts +3 -0
  273. package/script/schemas/graders/grader_output.zod.d.ts.map +1 -0
  274. package/script/schemas/graders/grader_output.zod.js +9 -0
  275. package/script/schemas/graders/grader_output.zod.ts +1 -0
  276. package/script/schemas/graders/respond.d.ts +12 -0
  277. package/script/schemas/graders/respond.d.ts.map +1 -0
  278. package/script/schemas/graders/respond.js +12 -0
  279. package/script/schemas/graders/respond.ts +19 -0
  280. package/script/schemas/graders/respond.zod.d.ts +3 -0
  281. package/script/schemas/graders/respond.zod.d.ts.map +1 -0
  282. package/script/schemas/graders/respond.zod.js +9 -0
  283. package/script/schemas/graders/respond.zod.ts +1 -0
  284. package/script/schemas/scenarios/plain_chat_input_optional.d.ts +5 -0
  285. package/script/schemas/scenarios/plain_chat_input_optional.d.ts.map +1 -0
  286. package/script/schemas/scenarios/plain_chat_input_optional.js +7 -0
  287. package/script/schemas/scenarios/plain_chat_input_optional.ts +6 -0
  288. package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts +3 -0
  289. package/script/schemas/scenarios/plain_chat_input_optional.zod.d.ts.map +1 -0
  290. package/script/schemas/scenarios/plain_chat_input_optional.zod.js +9 -0
  291. package/script/schemas/scenarios/plain_chat_input_optional.zod.ts +1 -0
  292. package/script/schemas/scenarios/plain_chat_output.d.ts +5 -0
  293. package/script/schemas/scenarios/plain_chat_output.d.ts.map +1 -0
  294. package/script/schemas/scenarios/plain_chat_output.js +6 -0
  295. package/script/schemas/scenarios/plain_chat_output.ts +5 -0
  296. package/script/schemas/scenarios/plain_chat_output.zod.d.ts +3 -0
  297. package/script/schemas/scenarios/plain_chat_output.zod.d.ts.map +1 -0
  298. package/script/schemas/scenarios/plain_chat_output.zod.js +9 -0
  299. package/script/schemas/scenarios/plain_chat_output.zod.ts +1 -0
  300. package/script/snippets/context.md +8 -0
  301. package/script/snippets/end.md +10 -0
  302. package/script/snippets/generate-test-input.md +12 -0
  303. package/script/snippets/init.md +12 -0
  304. package/script/snippets/respond.md +10 -0
  305. package/script/snippets/scenario-participant.md +10 -0
  306. package/script/src/builtins.d.ts +2 -0
  307. package/script/src/builtins.d.ts.map +1 -1
  308. package/script/src/builtins.js +47 -1
  309. package/script/src/constants.d.ts +0 -1
  310. package/script/src/constants.d.ts.map +1 -1
  311. package/script/src/constants.js +1 -5
  312. package/script/src/loader.d.ts.map +1 -1
  313. package/script/src/loader.js +158 -10
  314. package/script/src/markdown.d.ts.map +1 -1
  315. package/script/src/markdown.js +267 -41
  316. package/script/src/permissions.d.ts +143 -0
  317. package/script/src/permissions.d.ts.map +1 -0
  318. package/script/src/permissions.js +453 -0
  319. package/script/src/runtime.d.ts +43 -3
  320. package/script/src/runtime.d.ts.map +1 -1
  321. package/script/src/runtime.js +4374 -405
  322. package/script/src/runtime_exec_host.d.ts +6 -0
  323. package/script/src/runtime_exec_host.d.ts.map +1 -0
  324. package/script/src/runtime_exec_host.js +56 -0
  325. package/script/src/runtime_exec_host_contract.d.ts +23 -0
  326. package/script/src/runtime_exec_host_contract.d.ts.map +1 -0
  327. package/script/src/runtime_exec_host_contract.js +18 -0
  328. package/script/src/runtime_exec_host_deno.d.ts +3 -0
  329. package/script/src/runtime_exec_host_deno.d.ts.map +1 -0
  330. package/script/src/runtime_exec_host_deno.js +71 -0
  331. package/script/src/runtime_exec_host_unsupported.d.ts +3 -0
  332. package/script/src/runtime_exec_host_unsupported.d.ts.map +1 -0
  333. package/script/src/runtime_exec_host_unsupported.js +11 -0
  334. package/script/src/runtime_worker_host.d.ts +6 -0
  335. package/script/src/runtime_worker_host.d.ts.map +1 -0
  336. package/script/src/runtime_worker_host.js +56 -0
  337. package/script/src/runtime_worker_host_contract.d.ts +33 -0
  338. package/script/src/runtime_worker_host_contract.d.ts.map +1 -0
  339. package/script/src/runtime_worker_host_contract.js +18 -0
  340. package/script/src/runtime_worker_host_deno.d.ts +3 -0
  341. package/script/src/runtime_worker_host_deno.d.ts.map +1 -0
  342. package/script/src/runtime_worker_host_deno.js +62 -0
  343. package/script/src/runtime_worker_host_unsupported.d.ts +3 -0
  344. package/script/src/runtime_worker_host_unsupported.d.ts.map +1 -0
  345. package/script/src/runtime_worker_host_unsupported.js +11 -0
  346. package/script/src/state.d.ts +1 -0
  347. package/script/src/state.d.ts.map +1 -1
  348. package/script/src/types.d.ts +259 -3
  349. package/script/src/types.d.ts.map +1 -1
  350. package/snippets/context.md +8 -0
  351. package/snippets/end.md +10 -0
  352. package/snippets/generate-test-input.md +12 -0
  353. package/snippets/init.md +12 -0
  354. package/snippets/respond.md +10 -0
  355. package/snippets/scenario-participant.md +10 -0
  356. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
  357. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
  358. package/esm/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -18
  359. package/esm/deps/jsr.io/@std/yaml/1.0.11/_loader_state.d.ts.map +0 -1
  360. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts +0 -6
  361. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.d.ts.map +0 -1
  362. package/script/deps/jsr.io/@std/collections/1.1.4/_utils.js +0 -21
  363. package/script/deps/jsr.io/@std/yaml/1.0.11/_loader_state.d.ts.map +0 -1
  364. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts +0 -0
  365. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.js +0 -0
  366. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts +0 -0
  367. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.js +0 -0
  368. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts +0 -0
  369. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.js +0 -0
  370. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts +0 -0
  371. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.js +0 -0
  372. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts +0 -0
  373. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.js +0 -0
  374. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts +0 -0
  375. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.js +0 -0
  376. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.d.ts +0 -0
  377. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.js +0 -0
  378. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts +0 -0
  379. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.js +0 -0
  380. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts +0 -0
  381. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.js +0 -0
  382. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts +0 -0
  383. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.js +0 -0
  384. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts +0 -0
  385. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.js +0 -0
  386. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts +0 -0
  387. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.js +0 -0
  388. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.d.ts +0 -0
  389. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.js +0 -0
  390. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts +0 -0
  391. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.js +0 -0
  392. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts +0 -0
  393. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.js +0 -0
  394. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts +0 -0
  395. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.js +0 -0
  396. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts +0 -0
  397. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.js +0 -0
  398. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts +0 -0
  399. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.js +0 -0
  400. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts +0 -0
  401. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.js +0 -0
  402. /package/esm/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts +0 -0
  403. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.d.ts +0 -0
  404. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_chars.js +0 -0
  405. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.d.ts +0 -0
  406. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_schema.js +0 -0
  407. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.d.ts +0 -0
  408. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/binary.js +0 -0
  409. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.d.ts +0 -0
  410. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/bool.js +0 -0
  411. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.d.ts +0 -0
  412. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/float.js +0 -0
  413. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.d.ts +0 -0
  414. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/int.js +0 -0
  415. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.d.ts +0 -0
  416. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/map.js +0 -0
  417. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.d.ts +0 -0
  418. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/merge.js +0 -0
  419. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.d.ts +0 -0
  420. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/nil.js +0 -0
  421. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.d.ts +0 -0
  422. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/omap.js +0 -0
  423. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.d.ts +0 -0
  424. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/pairs.js +0 -0
  425. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.d.ts +0 -0
  426. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/regexp.js +0 -0
  427. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.d.ts +0 -0
  428. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/seq.js +0 -0
  429. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.d.ts +0 -0
  430. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/set.js +0 -0
  431. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.d.ts +0 -0
  432. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/str.js +0 -0
  433. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.d.ts +0 -0
  434. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/timestamp.js +0 -0
  435. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.d.ts +0 -0
  436. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type/undefined.js +0 -0
  437. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.d.ts +0 -0
  438. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_type.js +0 -0
  439. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.d.ts +0 -0
  440. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/_utils.js +0 -0
  441. /package/script/deps/jsr.io/@std/yaml/{1.0.11 → 1.0.12}/parse.d.ts +0 -0
@@ -42,6 +42,7 @@ const path = __importStar(require("../deps/jsr.io/@std/path/1.1.4/mod.js"));
42
42
  const constants_js_1 = require("./constants.js");
43
43
  const definitions_js_1 = require("./definitions.js");
44
44
  const loader_js_1 = require("./loader.js");
45
+ const permissions_js_1 = require("./permissions.js");
45
46
  const schema_js_1 = require("./schema.js");
46
47
  const builtins_js_1 = require("./builtins.js");
47
48
  const logger = console;
@@ -88,6 +89,23 @@ function toFileUrl(p) {
88
89
  const abs = path.resolve(p);
89
90
  return path.toFileUrl(abs).href;
90
91
  }
92
+ function startsWithFrontMatterDelimiter(raw) {
93
+ const normalized = raw.startsWith("\uFEFF") ? raw.slice(1) : raw;
94
+ const trimmed = normalized.trimStart();
95
+ return /^(\+\+\+|---)\s*(\r?\n|$)/.test(trimmed);
96
+ }
97
+ function parseFrontMatterOrRaw(raw, resolvedPath) {
98
+ try {
99
+ return (0, any_js_1.extract)(raw);
100
+ }
101
+ catch (err) {
102
+ if (!startsWithFrontMatterDelimiter(raw)) {
103
+ return { attrs: {}, body: raw };
104
+ }
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ throw new Error(`Failed to parse front matter in ${resolvedPath}: ${message}`);
107
+ }
108
+ }
91
109
  async function maybeLoadSchema(schemaPath, basePath) {
92
110
  if (!schemaPath || typeof schemaPath !== "string")
93
111
  return undefined;
@@ -97,7 +115,7 @@ async function maybeLoadSchema(schemaPath, basePath) {
97
115
  const mod = await Promise.resolve(`${toFileUrl(resolved)}`).then(s => __importStar(require(s)));
98
116
  return mod.default;
99
117
  }
100
- function normalizeDeckRefs(refs, basePath) {
118
+ function normalizeDeckRefs(refs, basePath, opts) {
101
119
  if (!Array.isArray(refs))
102
120
  return [];
103
121
  return refs
@@ -109,13 +127,28 @@ function normalizeDeckRefs(refs, basePath) {
109
127
  throw new Error("Deck reference must include a path");
110
128
  }
111
129
  const normalized = { ...rec };
112
- normalized.path = path.resolve(path.dirname(basePath), p);
130
+ normalized.path = p.startsWith("gambit://")
131
+ ? p
132
+ : path.resolve(path.dirname(basePath), p);
113
133
  if (typeof rec.description !== "string")
114
134
  delete normalized.description;
115
135
  if (typeof rec.label !== "string")
116
136
  delete normalized.label;
117
137
  if (typeof rec.id !== "string")
118
138
  delete normalized.id;
139
+ if (rec.permissions !== undefined) {
140
+ const parsed = (0, permissions_js_1.normalizePermissionDeclaration)(rec.permissions, path.dirname(basePath));
141
+ if (parsed)
142
+ normalized.permissions = parsed;
143
+ }
144
+ if (opts?.requireDescription) {
145
+ const desc = typeof rec.description === "string"
146
+ ? rec.description.trim()
147
+ : "";
148
+ if (!desc) {
149
+ throw new Error(`Action deck must include a description (${basePath})`);
150
+ }
151
+ }
119
152
  return normalized;
120
153
  });
121
154
  }
@@ -132,14 +165,194 @@ function mergeDeckRefs(...lists) {
132
165
  }
133
166
  return Array.from(merged.values());
134
167
  }
135
- function normalizeActionDecks(entries, basePath) {
136
- return normalizeDeckRefs(entries, basePath).map((entry) => {
137
- const name = "name" in entry ? String(entry.name ?? "").trim() : "";
168
+ function normalizeActionIntermediateOutputPolicy(raw, basePath) {
169
+ const invalid = () => {
170
+ throw new Error(`[gambit] Invalid intermediateOutput policy for action deck (${basePath}). Expected { emit: "allow" | "deny" }.`);
171
+ };
172
+ if (raw === undefined || raw === null) {
173
+ return { emit: "deny" };
174
+ }
175
+ if (typeof raw === "boolean") {
176
+ return { emit: raw ? "allow" : "deny" };
177
+ }
178
+ if (typeof raw === "string") {
179
+ const emit = raw.trim().toLowerCase();
180
+ if (emit === "allow" || emit === "deny")
181
+ return { emit };
182
+ invalid();
183
+ }
184
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
185
+ invalid();
186
+ const emitRaw = raw.emit;
187
+ if (emitRaw === undefined || emitRaw === null) {
188
+ return { emit: "deny" };
189
+ }
190
+ if (typeof emitRaw === "string") {
191
+ const emit = emitRaw.trim().toLowerCase();
192
+ if (emit === "allow" || emit === "deny")
193
+ return { emit };
194
+ }
195
+ invalid();
196
+ return { emit: "deny" };
197
+ }
198
+ function normalizeActionAsyncStartPolicy(raw, basePath) {
199
+ const invalid = () => {
200
+ throw new Error(`[gambit] Invalid asyncStart policy for action deck (${basePath}). Expected { mode: "allow" | "deny" }.`);
201
+ };
202
+ if (raw === undefined || raw === null) {
203
+ return { mode: "deny" };
204
+ }
205
+ if (typeof raw === "boolean") {
206
+ return { mode: raw ? "allow" : "deny" };
207
+ }
208
+ if (typeof raw === "string") {
209
+ const mode = raw.trim().toLowerCase();
210
+ if (mode === "allow" || mode === "deny")
211
+ return { mode };
212
+ invalid();
213
+ }
214
+ if (!raw || typeof raw !== "object" || Array.isArray(raw))
215
+ invalid();
216
+ const modeRaw = raw.mode;
217
+ if (modeRaw === undefined || modeRaw === null) {
218
+ return { mode: "deny" };
219
+ }
220
+ if (typeof modeRaw === "string") {
221
+ const mode = modeRaw.trim().toLowerCase();
222
+ if (mode === "allow" || mode === "deny")
223
+ return { mode };
224
+ }
225
+ invalid();
226
+ return { mode: "deny" };
227
+ }
228
+ async function normalizeActionDecks(entries, basePath, opts) {
229
+ if (!Array.isArray(entries))
230
+ return [];
231
+ const out = [];
232
+ for (const rawEntry of entries) {
233
+ if (!rawEntry || typeof rawEntry !== "object")
234
+ continue;
235
+ const rec = rawEntry;
236
+ const name = String(rec.name ?? "").trim();
138
237
  if (!name) {
139
238
  throw new Error(`Action deck must include a name (${basePath})`);
140
239
  }
141
- return { ...entry, name };
142
- });
240
+ const desc = typeof rec.description === "string"
241
+ ? rec.description.trim()
242
+ : "";
243
+ if (opts?.requireDescription && !desc) {
244
+ throw new Error(`Action deck must include a description (${basePath})`);
245
+ }
246
+ const rawPath = typeof rec.path === "string" ? rec.path.trim() : "";
247
+ const rawExecute = typeof rec.execute === "string"
248
+ ? rec.execute.trim()
249
+ : "";
250
+ const hasPath = rawPath.length > 0;
251
+ const hasExecute = rawExecute.length > 0;
252
+ if (hasPath === hasExecute) {
253
+ throw new Error(`Action deck must include exactly one of path or execute (${basePath})`);
254
+ }
255
+ const actionContextSchema = await maybeLoadSchema(rec.contextSchema, basePath);
256
+ const actionResponseSchema = await maybeLoadSchema(rec.responseSchema, basePath);
257
+ if (hasExecute && (!actionContextSchema || !actionResponseSchema)) {
258
+ throw new Error(`Action execute target must include contextSchema and responseSchema (${basePath})`);
259
+ }
260
+ const selectedTarget = hasPath ? rawPath : rawExecute;
261
+ const normalizedPath = selectedTarget.startsWith("gambit://")
262
+ ? selectedTarget
263
+ : path.resolve(path.dirname(basePath), selectedTarget);
264
+ const normalized = {
265
+ name,
266
+ path: normalizedPath,
267
+ description: desc || undefined,
268
+ label: typeof rec.label === "string" ? rec.label : undefined,
269
+ id: typeof rec.id === "string" ? rec.id : undefined,
270
+ execute: hasExecute ? normalizedPath : undefined,
271
+ contextSchema: actionContextSchema,
272
+ responseSchema: actionResponseSchema,
273
+ intermediateOutput: normalizeActionIntermediateOutputPolicy(rec.intermediateOutput, basePath),
274
+ asyncStart: normalizeActionAsyncStartPolicy(rec.asyncStart, basePath),
275
+ };
276
+ if (rec.permissions !== undefined) {
277
+ const parsed = (0, permissions_js_1.normalizePermissionDeclaration)(rec.permissions, path.dirname(basePath));
278
+ if (parsed)
279
+ normalized.permissions = parsed;
280
+ }
281
+ out.push(normalized);
282
+ }
283
+ return out;
284
+ }
285
+ async function normalizeExternalTools(refs, basePath) {
286
+ if (!Array.isArray(refs))
287
+ return [];
288
+ const out = [];
289
+ for (const entry of refs) {
290
+ if (!entry || typeof entry !== "object")
291
+ continue;
292
+ const rec = entry;
293
+ const name = String(rec.name ?? "").trim();
294
+ if (!name) {
295
+ throw new Error(`External tool must include a name (${basePath})`);
296
+ }
297
+ if (name.startsWith(constants_js_1.RESERVED_TOOL_PREFIX)) {
298
+ throw new Error(`External tool name ${name} is reserved (prefix ${constants_js_1.RESERVED_TOOL_PREFIX})`);
299
+ }
300
+ if (!constants_js_1.TOOL_NAME_PATTERN.test(name) || name.length > constants_js_1.MAX_TOOL_NAME_LENGTH) {
301
+ throw new Error(`External tool name ${name} must match ${constants_js_1.TOOL_NAME_PATTERN} and be <= ${constants_js_1.MAX_TOOL_NAME_LENGTH} characters`);
302
+ }
303
+ const inputSchema = await maybeLoadSchema(rec.inputSchema, basePath);
304
+ out.push({
305
+ name,
306
+ description: typeof rec.description === "string"
307
+ ? rec.description
308
+ : undefined,
309
+ inputSchema,
310
+ });
311
+ }
312
+ return out;
313
+ }
314
+ const CORE_RESPONSE_ITEM_TYPES = new Set([
315
+ "message",
316
+ "function_call",
317
+ "function_call_output",
318
+ "reasoning",
319
+ ]);
320
+ async function normalizeResponseItemExtensions(refs, basePath) {
321
+ if (!Array.isArray(refs))
322
+ return [];
323
+ const out = [];
324
+ const seen = new Set();
325
+ for (const entry of refs) {
326
+ if (!entry || typeof entry !== "object" || Array.isArray(entry))
327
+ continue;
328
+ const rec = entry;
329
+ const type = String(rec.type ?? "").trim();
330
+ if (!type) {
331
+ throw new Error(`Response item extension must include a type (${basePath})`);
332
+ }
333
+ if (!type.includes(":")) {
334
+ throw new Error(`Response item extension type "${type}" must be namespaced (<namespace>:<type>) (${basePath})`);
335
+ }
336
+ if (CORE_RESPONSE_ITEM_TYPES.has(type)) {
337
+ throw new Error(`Response item extension type "${type}" conflicts with core OpenResponses item types (${basePath})`);
338
+ }
339
+ if (seen.has(type)) {
340
+ throw new Error(`Duplicate response item extension type "${type}" (${basePath})`);
341
+ }
342
+ seen.add(type);
343
+ const dataSchema = await maybeLoadSchema(rec.dataSchema, basePath);
344
+ if (!dataSchema) {
345
+ throw new Error(`Response item extension "${type}" must include dataSchema (${basePath})`);
346
+ }
347
+ out.push({
348
+ type: type,
349
+ dataSchema,
350
+ description: typeof rec.description === "string"
351
+ ? rec.description
352
+ : undefined,
353
+ });
354
+ }
355
+ return out;
143
356
  }
144
357
  async function expandEmbedsInBody(args) {
145
358
  const { body, resolvedPath, stack } = args;
@@ -155,17 +368,17 @@ async function expandEmbedsInBody(args) {
155
368
  const target = match[1];
156
369
  out += body.slice(lastIndex, matchIndex);
157
370
  if (target === RESPOND_MARKER) {
158
- warnLegacyMarker("respond", "gambit://cards/respond.card.md");
371
+ warnLegacyMarker("respond", "gambit://snippets/respond.md");
159
372
  respond = true;
160
373
  out += RESPOND_TEXT;
161
374
  }
162
375
  else if (target === INIT_MARKER) {
163
- warnLegacyMarker("init", "gambit://cards/context.card.md");
376
+ warnLegacyMarker("init", "gambit://snippets/context.md");
164
377
  initHint = true;
165
378
  out += INIT_TEXT;
166
379
  }
167
380
  else if (target === END_MARKER) {
168
- warnLegacyMarker("end", "gambit://cards/end.card.md");
381
+ warnLegacyMarker("end", "gambit://snippets/end.md");
169
382
  endHint = true;
170
383
  out += END_TEXT;
171
384
  }
@@ -189,17 +402,7 @@ async function loadMarkdownCard(filePath, parentPath, stack = []) {
189
402
  }
190
403
  const nextStack = [...stack, resolved];
191
404
  const raw = await dntShim.Deno.readTextFile(resolved);
192
- let attrs;
193
- let body;
194
- try {
195
- const parsed = (0, any_js_1.extract)(raw);
196
- attrs = parsed.attrs;
197
- body = parsed.body;
198
- }
199
- catch (err) {
200
- const message = err instanceof Error ? err.message : String(err);
201
- throw new Error(`Failed to parse front matter in ${resolved}: ${message}`);
202
- }
405
+ const { attrs, body } = parseFrontMatterOrRaw(raw, resolved);
203
406
  const candidate = attrs;
204
407
  if ((0, definitions_js_1.isCardDefinition)(candidate)) {
205
408
  // treat attrs as ts-shaped card
@@ -209,7 +412,7 @@ async function loadMarkdownCard(filePath, parentPath, stack = []) {
209
412
  }
210
413
  const hasNewActionField = attrs.actionDecks;
211
414
  const legacyActions = attrs.actions;
212
- const actionDecks = normalizeActionDecks(hasNewActionField ?? legacyActions, resolved);
415
+ const actionDecks = await normalizeActionDecks(hasNewActionField ?? legacyActions, resolved);
213
416
  if (!hasNewActionField && legacyActions) {
214
417
  logger.warn(`[gambit] card at ${resolved} uses deprecated "actions"; rename to "actionDecks"`);
215
418
  }
@@ -243,6 +446,7 @@ async function loadMarkdownCard(filePath, parentPath, stack = []) {
243
446
  const embeddedCards = replaced.embeds;
244
447
  const respondFlag = Boolean(attrs.respond);
245
448
  const allowEndFlag = Boolean(attrs.allowEnd);
449
+ const permissions = (0, permissions_js_1.normalizePermissionDeclaration)(attrs.permissions, path.dirname(resolved));
246
450
  return {
247
451
  kind: "gambit.card",
248
452
  path: resolved,
@@ -253,6 +457,7 @@ async function loadMarkdownCard(filePath, parentPath, stack = []) {
253
457
  testDecks: normalizeDeckRefs(attrs.testDecks, resolved),
254
458
  graderDecks: normalizeDeckRefs(attrs.graderDecks, resolved),
255
459
  cards: embeddedCards,
460
+ permissions,
256
461
  contextFragment,
257
462
  responseFragment,
258
463
  inputFragment: contextFragment,
@@ -265,26 +470,34 @@ async function loadMarkdownDeck(filePath, parentPath) {
265
470
  ? path.resolve(path.dirname(parentPath), filePath)
266
471
  : path.resolve(filePath);
267
472
  const raw = await dntShim.Deno.readTextFile(resolved);
268
- let attrs;
269
- let body;
270
- try {
271
- const parsed = (0, any_js_1.extract)(raw);
272
- attrs = parsed.attrs;
273
- body = parsed.body;
274
- }
275
- catch (err) {
276
- const message = err instanceof Error ? err.message : String(err);
277
- throw new Error(`Failed to parse front matter in ${resolved}: ${message}`);
278
- }
473
+ const { attrs, body } = parseFrontMatterOrRaw(raw, resolved);
279
474
  const deckAttrs = attrs;
280
475
  const deckMeta = (deckAttrs.deck ?? deckAttrs);
476
+ if (deckMeta.mcpServers !== undefined) {
477
+ throw new Error(`Deck-level [[mcpServers]] is unsupported in this phase (${resolved})`);
478
+ }
479
+ if (deckMeta.execute !== undefined) {
480
+ throw new Error(`Top-level execute in PROMPT.md is unsupported (${resolved})`);
481
+ }
281
482
  const hasNewActionDecks = deckMeta.actionDecks;
282
- const legacyDeckActions = deckMeta.actions;
283
- const actionDecks = normalizeActionDecks(hasNewActionDecks ?? legacyDeckActions, resolved);
284
- if (!hasNewActionDecks && legacyDeckActions) {
285
- logger.warn(`[gambit] deck at ${resolved} uses deprecated "actions"; rename to "actionDecks"`);
483
+ const canonicalActions = deckMeta.actions;
484
+ const actionDecks = await normalizeActionDecks(canonicalActions, resolved, {
485
+ requireDescription: true,
486
+ });
487
+ const legacyActionDecks = await normalizeActionDecks(hasNewActionDecks, resolved);
488
+ if (hasNewActionDecks) {
489
+ logger.warn(`[gambit] deck at ${resolved} uses deprecated "actionDecks"; use "[[actions]]" instead.`);
286
490
  }
287
- actionDecks.forEach((a) => {
491
+ if (deckMeta.testDecks) {
492
+ logger.warn(`[gambit] deck at ${resolved} uses deprecated "testDecks"; use "[[scenarios]]" instead.`);
493
+ }
494
+ if (deckMeta.graderDecks) {
495
+ logger.warn(`[gambit] deck at ${resolved} uses deprecated "graderDecks"; use "[[graders]]" instead.`);
496
+ }
497
+ const scenarioDecks = normalizeDeckRefs(deckMeta.scenarios, resolved);
498
+ const graderDecks = normalizeDeckRefs(deckMeta.graders, resolved);
499
+ const allActionDecks = [...actionDecks, ...legacyActionDecks];
500
+ allActionDecks.forEach((a) => {
288
501
  if (a.name.startsWith(constants_js_1.RESERVED_TOOL_PREFIX) &&
289
502
  !constants_js_1.BUILTIN_TOOL_NAME_SET.has(a.name)) {
290
503
  throw new Error(`Action name ${a.name} is reserved`);
@@ -322,7 +535,7 @@ async function loadMarkdownDeck(filePath, parentPath) {
322
535
  mergedActions[action.name] = action;
323
536
  }
324
537
  }
325
- for (const action of actionDecks) {
538
+ for (const action of allActionDecks) {
326
539
  mergedActions[action.name] = action;
327
540
  }
328
541
  let mergedContextSchema = contextSchema;
@@ -365,10 +578,19 @@ async function loadMarkdownDeck(filePath, parentPath) {
365
578
  }
366
579
  : undefined;
367
580
  const mergedActionDecks = Object.values(mergedActions);
581
+ const tools = await normalizeExternalTools(deckMeta.tools, resolved);
582
+ const responseItemExtensions = await normalizeResponseItemExtensions(deckMeta.responseItemExtensions, resolved);
583
+ const actionNameSet = new Set(mergedActionDecks.map((action) => action.name));
584
+ for (const tool of tools) {
585
+ if (actionNameSet.has(tool.name)) {
586
+ logger.warn(`[gambit] tool ${tool.name} is shadowed by an action in ${resolved}`);
587
+ }
588
+ }
368
589
  const rootTestDecks = normalizeDeckRefs(deckMeta.testDecks, resolved);
369
590
  const rootGraderDecks = normalizeDeckRefs(deckMeta.graderDecks, resolved);
370
591
  const embeddedTestDecks = allCards.flatMap((card) => card.testDecks ?? []);
371
592
  const embeddedGraderDecks = allCards.flatMap((card) => card.graderDecks ?? []);
593
+ const permissions = (0, permissions_js_1.normalizePermissionDeclaration)(deckMeta.permissions, path.dirname(resolved));
372
594
  return {
373
595
  kind: "gambit.deck",
374
596
  path: resolved,
@@ -376,8 +598,10 @@ async function loadMarkdownDeck(filePath, parentPath) {
376
598
  allowEnd,
377
599
  actionDecks: mergedActionDecks,
378
600
  actions: mergedActionDecks,
379
- testDecks: mergeDeckRefs(rootTestDecks, embeddedTestDecks),
380
- graderDecks: mergeDeckRefs(rootGraderDecks, embeddedGraderDecks),
601
+ tools,
602
+ responseItemExtensions,
603
+ testDecks: mergeDeckRefs(scenarioDecks, rootTestDecks, embeddedTestDecks),
604
+ graderDecks: mergeDeckRefs(graderDecks, rootGraderDecks, embeddedGraderDecks),
381
605
  cards: allCards,
382
606
  label: deckMeta.label,
383
607
  startMode: deckMeta.startMode,
@@ -387,11 +611,13 @@ async function loadMarkdownDeck(filePath, parentPath) {
387
611
  responseSchema: mergedResponseSchema,
388
612
  inputSchema: mergedInputSchema,
389
613
  outputSchema: mergedOutputSchema,
614
+ executor: undefined,
390
615
  handlers,
391
616
  respond: Boolean(deckMeta.respond) ||
392
617
  replaced.respond ||
393
618
  allCards.some((c) => c.respond),
394
619
  inlineEmbeds: true,
620
+ permissions,
395
621
  };
396
622
  }
397
623
  function isMarkdownFile(filePath) {
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Deno-native permission kinds supported by Gambit's permission contract.
3
+ */
4
+ export declare const PERMISSION_KINDS: readonly ["read", "write", "run", "net", "env"];
5
+ export type PermissionKind = (typeof PERMISSION_KINDS)[number];
6
+ export type PathPermissionInput = boolean | Array<string>;
7
+ export type RunPermissionInput = boolean | Array<string> | {
8
+ paths?: Array<string>;
9
+ commands?: Array<string>;
10
+ };
11
+ export type PermissionDeclarationInput = Partial<{
12
+ read: PathPermissionInput;
13
+ write: PathPermissionInput;
14
+ run: RunPermissionInput;
15
+ net: PathPermissionInput;
16
+ env: PathPermissionInput;
17
+ }>;
18
+ export type SerializedRunPermission = false | true | {
19
+ paths: Array<string>;
20
+ commands: Array<string>;
21
+ };
22
+ export type SerializedPermissionSet = {
23
+ read: false | true | Array<string>;
24
+ write: false | true | Array<string>;
25
+ run: SerializedRunPermission;
26
+ net: false | true | Array<string>;
27
+ env: false | true | Array<string>;
28
+ };
29
+ export type PermissionDeclaration = SerializedPermissionSet;
30
+ type NormalizedScope = {
31
+ all: boolean;
32
+ values: Set<string>;
33
+ };
34
+ type NormalizedRunScope = {
35
+ all: boolean;
36
+ paths: Set<string>;
37
+ commands: Set<string>;
38
+ };
39
+ export type NormalizedPermissionSet = {
40
+ baseDir: string;
41
+ read: NormalizedScope;
42
+ write: NormalizedScope;
43
+ run: NormalizedRunScope;
44
+ net: NormalizedScope;
45
+ env: NormalizedScope;
46
+ };
47
+ export type PermissionLayerName = "parent" | "workspace" | "declaration" | "reference" | "session" | "host";
48
+ export type PermissionLayerTrace = {
49
+ name: PermissionLayerName;
50
+ baseDir: string;
51
+ requested: SerializedPermissionSet;
52
+ effective: SerializedPermissionSet;
53
+ };
54
+ export type PermissionTrace = {
55
+ baseDir: string;
56
+ effective: SerializedPermissionSet;
57
+ layers: Array<PermissionLayerTrace>;
58
+ };
59
+ export declare function cloneNormalizedPermissions(input: NormalizedPermissionSet): NormalizedPermissionSet;
60
+ /**
61
+ * Returns an allow-all permission set anchored to `baseDir`.
62
+ */
63
+ export declare function allowAllPermissions(baseDir: string): NormalizedPermissionSet;
64
+ /**
65
+ * Normalizes a permission declaration to a serializable, deterministic shape.
66
+ *
67
+ * Relative path grants are resolved against `baseDir`.
68
+ */
69
+ export declare function normalizePermissionDeclaration(input: PermissionDeclarationInput | undefined, baseDir: string): PermissionDeclaration | undefined;
70
+ /**
71
+ * Normalizes a declaration to the internal set form used during intersection.
72
+ */
73
+ export declare function normalizePermissionDeclarationToSet(input: PermissionDeclarationInput | undefined, baseDir: string): NormalizedPermissionSet | undefined;
74
+ /**
75
+ * Serializes an internal normalized permission set for traces/persistence.
76
+ */
77
+ export declare function serializePermissions(set: NormalizedPermissionSet): SerializedPermissionSet;
78
+ /**
79
+ * Computes the monotonic intersection between two permission sets.
80
+ *
81
+ * `baseDir` controls how relative checks (`canReadPath`/etc) are evaluated for
82
+ * the returned set.
83
+ */
84
+ export declare function intersectPermissions(parent: NormalizedPermissionSet, next: NormalizedPermissionSet, baseDir: string): NormalizedPermissionSet;
85
+ /**
86
+ * Resolves effective permissions and emits a layer-by-layer permission trace.
87
+ *
88
+ * Layer precedence:
89
+ * 1. `parent` (or host allow-all for roots)
90
+ * 2. `workspace` (root only)
91
+ * 3. `declaration` (deck/card declaration)
92
+ * 4. `reference` (parent reference override)
93
+ * 5. `session` (root only)
94
+ */
95
+ export declare function resolveEffectivePermissions(args: {
96
+ baseDir: string;
97
+ parent?: NormalizedPermissionSet;
98
+ workspace?: {
99
+ baseDir: string;
100
+ permissions: PermissionDeclarationInput;
101
+ };
102
+ declaration?: {
103
+ baseDir: string;
104
+ permissions: PermissionDeclarationInput;
105
+ };
106
+ reference?: {
107
+ baseDir: string;
108
+ permissions: PermissionDeclarationInput;
109
+ };
110
+ session?: {
111
+ baseDir: string;
112
+ permissions: PermissionDeclarationInput;
113
+ };
114
+ }): {
115
+ effective: NormalizedPermissionSet;
116
+ trace: PermissionTrace;
117
+ };
118
+ /**
119
+ * Returns whether `targetPath` is readable under `set`.
120
+ *
121
+ * Relative paths are resolved against `set.baseDir`.
122
+ */
123
+ export declare function canReadPath(set: NormalizedPermissionSet, targetPath: string): boolean;
124
+ /**
125
+ * Returns whether `targetPath` is writable under `set`.
126
+ *
127
+ * Relative paths are resolved against `set.baseDir`.
128
+ */
129
+ export declare function canWritePath(set: NormalizedPermissionSet, targetPath: string): boolean;
130
+ /**
131
+ * Returns whether `targetPath` is executable via run-path grants.
132
+ *
133
+ * Relative paths are resolved against `set.baseDir`.
134
+ */
135
+ export declare function canRunPath(set: NormalizedPermissionSet, targetPath: string): boolean;
136
+ /**
137
+ * Returns whether `commandName` is executable via run-command grants.
138
+ *
139
+ * This check intentionally does not apply basename/path fallback semantics.
140
+ */
141
+ export declare function canRunCommand(set: NormalizedPermissionSet, commandName: string): boolean;
142
+ export {};
143
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/src/permissions.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,gBAAgB,iDAAkD,CAAC;AAChF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,KAAK,CAAC,MAAM,CAAC,GACb;IACA,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1B,CAAC;AAEJ,MAAM,MAAM,0BAA0B,GAAG,OAAO,CAAC;IAC/C,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,GAAG,EAAE,kBAAkB,CAAC;IACxB,GAAG,EAAE,mBAAmB,CAAC;IACzB,GAAG,EAAE,mBAAmB,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,IAAI,GAAG;IACnD,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,GAAG,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE5D,KAAK,eAAe,GAAG;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACrB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,EAAE,kBAAkB,CAAC;IACxB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,WAAW,GACX,aAAa,GACb,WAAW,GACX,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,SAAS,EAAE,uBAAuB,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,uBAAuB,CAAC;IACnC,MAAM,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;CACrC,CAAC;AAwBF,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAC7B,uBAAuB,CASzB;AA0HD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAS5E;AAkBD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,0BAA0B,GAAG,SAAS,EAC7C,OAAO,EAAE,MAAM,GACd,qBAAqB,GAAG,SAAS,CAGnC;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,0BAA0B,GAAG,SAAS,EAC7C,OAAO,EAAE,MAAM,GACd,uBAAuB,GAAG,SAAS,CAGrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,uBAAuB,GAC3B,uBAAuB,CA6BzB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,uBAAuB,EAC/B,IAAI,EAAE,uBAAuB,EAC7B,OAAO,EAAE,MAAM,GACd,uBAAuB,CASzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,0BAA0B,CAAA;KAAE,CAAC;IACzE,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,0BAA0B,CAAA;KAAE,CAAC;IAC3E,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,0BAA0B,CAAA;KAAE,CAAC;IACzE,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,0BAA0B,CAAA;KAAE,CAAC;CACxE,GAAG;IACF,SAAS,EAAE,uBAAuB,CAAC;IACnC,KAAK,EAAE,eAAe,CAAC;CACxB,CA4DA;AA2DD;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,uBAAuB,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,uBAAuB,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,uBAAuB,EAC5B,UAAU,EAAE,MAAM,GACjB,OAAO,CAkBT;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,uBAAuB,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAGT"}