liminal 0.4.1 → 0.5.1

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 (562) hide show
  1. package/Action.ts +29 -0
  2. package/Actor.ts +20 -0
  3. package/CHANGELOG.md +14 -0
  4. package/Exec.ts +63 -0
  5. package/L.ts +27 -0
  6. package/LiminalAssertionError.ts +3 -0
  7. package/LiminalConfig.ts +7 -0
  8. package/Message.ts +94 -0
  9. package/Model.ts +20 -0
  10. package/PathLike.ts +19 -0
  11. package/Scope.ts +133 -0
  12. package/Spec.ts +29 -0
  13. package/Tool.ts +58 -0
  14. package/_.ts +11 -0
  15. package/actions/abort.ts +23 -0
  16. package/actions/actions_common/updateModels.ts +23 -0
  17. package/actions/actions_derived/__snapshots__/declareModel.test.ts.snap +89 -0
  18. package/actions/actions_derived/clear.ts +6 -0
  19. package/actions/actions_derived/declareModel.test.ts +33 -0
  20. package/actions/actions_derived/declareModel.ts +9 -0
  21. package/actions/actions_derived/declareModel.type-test.ts +70 -0
  22. package/actions/actions_derived/getMessages.ts +9 -0
  23. package/actions/actions_derived/messages.test.ts +88 -0
  24. package/actions/actions_derived/messages.ts +19 -0
  25. package/actions/actions_derived/metatype.ts +9 -0
  26. package/actions/appendMessage.ts +30 -0
  27. package/actions/await.ts +13 -0
  28. package/actions/branch.ts +108 -0
  29. package/actions/catch.ts +42 -0
  30. package/actions/declareArg.ts +14 -0
  31. package/actions/disableTool.ts +26 -0
  32. package/actions/embed.ts +28 -0
  33. package/actions/emit.ts +21 -0
  34. package/actions/enableTool.ts +75 -0
  35. package/actions/enableTool.type-test.ts +118 -0
  36. package/actions/getScope.ts +11 -0
  37. package/actions/getSignal.ts +10 -0
  38. package/actions/getTools.ts +11 -0
  39. package/actions/infer.ts +37 -0
  40. package/actions/pushModel.ts +32 -0
  41. package/actions/removeMessage.ts +22 -0
  42. package/actions/removeModel.ts +31 -0
  43. package/actions/setMessages.ts +66 -0
  44. package/actions/throw.ts +18 -0
  45. package/cli/WriteHandler.ts +35 -0
  46. package/cli/cli_common.ts +3 -0
  47. package/cli/main.ts +19 -0
  48. package/cli/runExec.ts +68 -0
  49. package/dist/Action.d.ts +15 -0
  50. package/dist/Action.js +13 -0
  51. package/dist/Action.js.map +1 -0
  52. package/dist/Actor.d.ts +14 -0
  53. package/dist/Actor.js +2 -0
  54. package/dist/Actor.js.map +1 -0
  55. package/dist/Exec.d.ts +27 -0
  56. package/dist/Exec.js +22 -0
  57. package/dist/Exec.js.map +1 -0
  58. package/dist/L.d.ts +26 -0
  59. package/dist/L.js +27 -0
  60. package/dist/L.js.map +1 -0
  61. package/dist/LiminalAssertionError.d.ts +3 -0
  62. package/dist/LiminalAssertionError.js +4 -0
  63. package/dist/LiminalAssertionError.js.map +1 -0
  64. package/dist/LiminalConfig.d.ts +6 -0
  65. package/dist/LiminalConfig.js +2 -0
  66. package/dist/LiminalConfig.js.map +1 -0
  67. package/dist/Message.d.ts +82 -0
  68. package/dist/Message.js +2 -0
  69. package/dist/Message.js.map +1 -0
  70. package/dist/Model.d.ts +16 -0
  71. package/dist/Model.js +2 -0
  72. package/dist/Model.js.map +1 -0
  73. package/dist/PathLike.d.ts +14 -0
  74. package/dist/PathLike.js +2 -0
  75. package/dist/PathLike.js.map +1 -0
  76. package/dist/Scope.d.ts +36 -0
  77. package/dist/Scope.js +90 -0
  78. package/dist/Scope.js.map +1 -0
  79. package/dist/Spec.d.ts +20 -0
  80. package/dist/Spec.js +2 -0
  81. package/dist/Spec.js.map +1 -0
  82. package/dist/Tool.d.ts +21 -0
  83. package/dist/Tool.js +32 -0
  84. package/dist/Tool.js.map +1 -0
  85. package/dist/_.d.ts +5 -0
  86. package/dist/_.js +7 -0
  87. package/dist/_.js.map +1 -0
  88. package/dist/actions/abort.d.ts +9 -0
  89. package/dist/actions/abort.js +15 -0
  90. package/dist/actions/abort.js.map +1 -0
  91. package/dist/actions/actions_common/updateModels.d.ts +3 -0
  92. package/dist/actions/actions_common/updateModels.js +17 -0
  93. package/dist/actions/actions_common/updateModels.js.map +1 -0
  94. package/dist/actions/actions_derived/clear.d.ts +8 -0
  95. package/dist/actions/actions_derived/clear.js +5 -0
  96. package/dist/actions/actions_derived/clear.js.map +1 -0
  97. package/dist/actions/actions_derived/declareModel.d.ts +5 -0
  98. package/dist/actions/actions_derived/declareModel.js +7 -0
  99. package/dist/actions/actions_derived/declareModel.js.map +1 -0
  100. package/dist/actions/actions_derived/declareModel.test.d.ts +1 -0
  101. package/dist/actions/actions_derived/declareModel.test.js +32 -0
  102. package/dist/actions/actions_derived/declareModel.test.js.map +1 -0
  103. package/dist/actions/actions_derived/declareModel.type-test.d.ts +1 -0
  104. package/dist/actions/actions_derived/declareModel.type-test.js +66 -0
  105. package/dist/actions/actions_derived/declareModel.type-test.js.map +1 -0
  106. package/dist/actions/actions_derived/getMessages.d.ts +3 -0
  107. package/dist/actions/actions_derived/getMessages.js +8 -0
  108. package/dist/actions/actions_derived/getMessages.js.map +1 -0
  109. package/dist/actions/actions_derived/messages.d.ts +6 -0
  110. package/dist/actions/actions_derived/messages.js +15 -0
  111. package/dist/actions/actions_derived/messages.js.map +1 -0
  112. package/dist/actions/actions_derived/messages.test.d.ts +1 -0
  113. package/dist/actions/actions_derived/messages.test.js +72 -0
  114. package/dist/actions/actions_derived/messages.test.js.map +1 -0
  115. package/dist/actions/actions_derived/metatype.d.ts +9 -0
  116. package/dist/actions/actions_derived/metatype.js +7 -0
  117. package/dist/actions/actions_derived/metatype.js.map +1 -0
  118. package/dist/actions/appendMessage.d.ts +10 -0
  119. package/dist/actions/appendMessage.js +20 -0
  120. package/dist/actions/appendMessage.js.map +1 -0
  121. package/dist/actions/await.d.ts +5 -0
  122. package/dist/actions/await.js +10 -0
  123. package/dist/actions/await.js.map +1 -0
  124. package/dist/actions/branch.d.ts +35 -0
  125. package/dist/actions/branch.js +40 -0
  126. package/dist/actions/branch.js.map +1 -0
  127. package/dist/actions/catch.d.ts +10 -0
  128. package/dist/actions/catch.js +27 -0
  129. package/dist/actions/catch.js.map +1 -0
  130. package/dist/actions/declareArg.d.ts +8 -0
  131. package/dist/actions/declareArg.js +10 -0
  132. package/dist/actions/declareArg.js.map +1 -0
  133. package/dist/actions/disableTool.d.ts +10 -0
  134. package/dist/actions/disableTool.js +17 -0
  135. package/dist/actions/disableTool.js.map +1 -0
  136. package/dist/actions/embed.d.ts +9 -0
  137. package/dist/actions/embed.js +23 -0
  138. package/dist/actions/embed.js.map +1 -0
  139. package/dist/actions/emit.d.ts +9 -0
  140. package/dist/actions/emit.js +14 -0
  141. package/dist/actions/emit.js.map +1 -0
  142. package/dist/actions/enableTool.d.ts +20 -0
  143. package/dist/actions/enableTool.js +26 -0
  144. package/dist/actions/enableTool.js.map +1 -0
  145. package/dist/actions/enableTool.type-test.d.ts +1 -0
  146. package/dist/actions/enableTool.type-test.js +30 -0
  147. package/dist/actions/enableTool.type-test.js.map +1 -0
  148. package/dist/actions/getScope.d.ts +5 -0
  149. package/dist/actions/getScope.js +8 -0
  150. package/dist/actions/getScope.js.map +1 -0
  151. package/dist/actions/getSignal.d.ts +4 -0
  152. package/dist/actions/getSignal.js +8 -0
  153. package/dist/actions/getSignal.js.map +1 -0
  154. package/dist/actions/getTools.d.ts +5 -0
  155. package/dist/actions/getTools.js +8 -0
  156. package/dist/actions/getTools.js.map +1 -0
  157. package/dist/actions/infer.d.ts +13 -0
  158. package/dist/actions/infer.js +21 -0
  159. package/dist/actions/infer.js.map +1 -0
  160. package/dist/actions/pushModel.d.ts +11 -0
  161. package/dist/actions/pushModel.js +21 -0
  162. package/dist/actions/pushModel.js.map +1 -0
  163. package/dist/actions/removeMessage.d.ts +9 -0
  164. package/dist/actions/removeMessage.js +17 -0
  165. package/dist/actions/removeMessage.js.map +1 -0
  166. package/dist/actions/removeModel.d.ts +10 -0
  167. package/dist/actions/removeModel.js +20 -0
  168. package/dist/actions/removeModel.js.map +1 -0
  169. package/dist/actions/setMessages.d.ts +16 -0
  170. package/dist/actions/setMessages.js +31 -0
  171. package/dist/actions/setMessages.js.map +1 -0
  172. package/dist/actions/throw.d.ts +9 -0
  173. package/dist/actions/throw.js +13 -0
  174. package/dist/actions/throw.js.map +1 -0
  175. package/dist/cli/WriteHandler.d.ts +9 -0
  176. package/dist/cli/WriteHandler.js +24 -0
  177. package/dist/cli/WriteHandler.js.map +1 -0
  178. package/dist/cli/cli_common.d.ts +3 -0
  179. package/dist/cli/cli_common.js +2 -0
  180. package/dist/cli/cli_common.js.map +1 -0
  181. package/dist/cli/main.d.ts +2 -0
  182. package/dist/cli/main.js +15 -0
  183. package/dist/cli/main.js.map +1 -0
  184. package/dist/cli/runExec.d.ts +2 -0
  185. package/dist/cli/runExec.js +69 -0
  186. package/dist/cli/runExec.js.map +1 -0
  187. package/dist/events/Aborted.d.ts +4 -0
  188. package/dist/events/Aborted.js +2 -0
  189. package/dist/events/Aborted.js.map +1 -0
  190. package/dist/events/Embedded.d.ts +5 -0
  191. package/dist/events/Embedded.js +2 -0
  192. package/dist/events/Embedded.js.map +1 -0
  193. package/dist/events/EmbeddingRequested.d.ts +4 -0
  194. package/dist/events/EmbeddingRequested.js +2 -0
  195. package/dist/events/EmbeddingRequested.js.map +1 -0
  196. package/dist/events/Emitted.d.ts +4 -0
  197. package/dist/events/Emitted.js +2 -0
  198. package/dist/events/Emitted.js.map +1 -0
  199. package/dist/events/EventBase.d.ts +3 -0
  200. package/dist/events/EventBase.js +2 -0
  201. package/dist/events/EventBase.js.map +1 -0
  202. package/dist/events/EventHandler.d.ts +2 -0
  203. package/dist/events/EventHandler.js +2 -0
  204. package/dist/events/EventHandler.js.map +1 -0
  205. package/dist/events/EventResolved.d.ts +19 -0
  206. package/dist/events/EventResolved.js +2 -0
  207. package/dist/events/EventResolved.js.map +1 -0
  208. package/dist/events/Forked.d.ts +3 -0
  209. package/dist/events/Forked.js +2 -0
  210. package/dist/events/Forked.js.map +1 -0
  211. package/dist/events/InferenceRequested.d.ts +3 -0
  212. package/dist/events/InferenceRequested.js +2 -0
  213. package/dist/events/InferenceRequested.js.map +1 -0
  214. package/dist/events/Inferred.d.ts +5 -0
  215. package/dist/events/Inferred.js +2 -0
  216. package/dist/events/Inferred.js.map +1 -0
  217. package/dist/events/LEvent.d.ts +18 -0
  218. package/dist/events/LEvent.js +2 -0
  219. package/dist/events/LEvent.js.map +1 -0
  220. package/dist/events/MessageAppended.d.ts +5 -0
  221. package/dist/events/MessageAppended.js +2 -0
  222. package/dist/events/MessageAppended.js.map +1 -0
  223. package/dist/events/MessageRemoved.d.ts +5 -0
  224. package/dist/events/MessageRemoved.js +2 -0
  225. package/dist/events/MessageRemoved.js.map +1 -0
  226. package/dist/events/MessagesSet.d.ts +5 -0
  227. package/dist/events/MessagesSet.js +2 -0
  228. package/dist/events/MessagesSet.js.map +1 -0
  229. package/dist/events/ModelPushed.d.ts +7 -0
  230. package/dist/events/ModelPushed.js +2 -0
  231. package/dist/events/ModelPushed.js.map +1 -0
  232. package/dist/events/ModelRemoved.d.ts +7 -0
  233. package/dist/events/ModelRemoved.js +2 -0
  234. package/dist/events/ModelRemoved.js.map +1 -0
  235. package/dist/events/Returned.d.ts +4 -0
  236. package/dist/events/Returned.js +2 -0
  237. package/dist/events/Returned.js.map +1 -0
  238. package/dist/events/Threw.d.ts +4 -0
  239. package/dist/events/Threw.js +2 -0
  240. package/dist/events/Threw.js.map +1 -0
  241. package/dist/events/ToolCalled.d.ts +6 -0
  242. package/dist/events/ToolCalled.js +2 -0
  243. package/dist/events/ToolCalled.js.map +1 -0
  244. package/dist/events/ToolDisabled.d.ts +5 -0
  245. package/dist/events/ToolDisabled.js +2 -0
  246. package/dist/events/ToolDisabled.js.map +1 -0
  247. package/dist/events/ToolEnabled.d.ts +7 -0
  248. package/dist/events/ToolEnabled.js +2 -0
  249. package/dist/events/ToolEnabled.js.map +1 -0
  250. package/dist/events/isScopeChildEvent.d.ts +6 -0
  251. package/dist/events/isScopeChildEvent.js +9 -0
  252. package/dist/events/isScopeChildEvent.js.map +1 -0
  253. package/dist/events/isScopeDescendantEvent.d.ts +14 -0
  254. package/dist/events/isScopeDescendantEvent.js +12 -0
  255. package/dist/events/isScopeDescendantEvent.js.map +1 -0
  256. package/dist/index.d.ts +41 -0
  257. package/dist/index.js +42 -0
  258. package/dist/index.js.map +1 -0
  259. package/dist/testing/ActorAssertions.d.ts +9 -0
  260. package/dist/testing/ActorAssertions.js +6 -0
  261. package/dist/testing/ActorAssertions.js.map +1 -0
  262. package/dist/testing/TestEmbeddingModel.d.ts +6 -0
  263. package/dist/testing/TestEmbeddingModel.js +10 -0
  264. package/dist/testing/TestEmbeddingModel.js.map +1 -0
  265. package/dist/testing/TestLanguageModel.d.ts +8 -0
  266. package/dist/testing/TestLanguageModel.js +21 -0
  267. package/dist/testing/TestLanguageModel.js.map +1 -0
  268. package/dist/testing/index.d.ts +4 -0
  269. package/dist/testing/index.js +5 -0
  270. package/dist/testing/index.js.map +1 -0
  271. package/dist/testing/takeFirstAction.d.ts +3 -0
  272. package/dist/testing/takeFirstAction.js +6 -0
  273. package/dist/testing/takeFirstAction.js.map +1 -0
  274. package/dist/tsconfig.tsbuildinfo +1 -0
  275. package/dist/types/AssertDiagnostics.d.ts +18 -0
  276. package/dist/types/AssertDiagnostics.js +152 -0
  277. package/dist/types/AssertDiagnostics.js.map +1 -0
  278. package/dist/types/JSONRootType.d.ts +6 -0
  279. package/dist/types/JSONRootType.js +2 -0
  280. package/dist/types/JSONRootType.js.map +1 -0
  281. package/dist/types/JSONType.d.ts +16 -0
  282. package/dist/types/JSONType.js +2 -0
  283. package/dist/types/JSONType.js.map +1 -0
  284. package/dist/types/JSONTypeBase.d.ts +3 -0
  285. package/dist/types/JSONTypeBase.js +2 -0
  286. package/dist/types/JSONTypeBase.js.map +1 -0
  287. package/dist/types/Metatype/MetatypeDescriptor.d.ts +41 -0
  288. package/dist/types/Metatype/MetatypeDescriptor.js +38 -0
  289. package/dist/types/Metatype/MetatypeDescriptor.js.map +1 -0
  290. package/dist/types/Metatype/fromMetatypeDescriptor.d.ts +6 -0
  291. package/dist/types/Metatype/fromMetatypeDescriptor.js +43 -0
  292. package/dist/types/Metatype/fromMetatypeDescriptor.js.map +1 -0
  293. package/dist/types/Type.d.ts +30 -0
  294. package/dist/types/Type.js +5 -0
  295. package/dist/types/Type.js.map +1 -0
  296. package/dist/types/TypeContext.d.ts +7 -0
  297. package/dist/types/TypeContext.js +17 -0
  298. package/dist/types/TypeContext.js.map +1 -0
  299. package/dist/types/TypeLike.d.ts +23 -0
  300. package/dist/types/TypeLike.js +23 -0
  301. package/dist/types/TypeLike.js.map +1 -0
  302. package/dist/types/TypeVisitor.d.ts +14 -0
  303. package/dist/types/TypeVisitor.js +12 -0
  304. package/dist/types/TypeVisitor.js.map +1 -0
  305. package/dist/types/array.d.ts +10 -0
  306. package/dist/types/array.js +9 -0
  307. package/dist/types/array.js.map +1 -0
  308. package/dist/types/boolean.d.ts +6 -0
  309. package/dist/types/boolean.js +3 -0
  310. package/dist/types/boolean.js.map +1 -0
  311. package/dist/types/const.d.ts +8 -0
  312. package/dist/types/const.js +7 -0
  313. package/dist/types/const.js.map +1 -0
  314. package/dist/types/declareType.d.ts +2 -0
  315. package/dist/types/declareType.js +57 -0
  316. package/dist/types/declareType.js.map +1 -0
  317. package/dist/types/enum.d.ts +8 -0
  318. package/dist/types/enum.js +7 -0
  319. package/dist/types/enum.js.map +1 -0
  320. package/dist/types/factories.d.ts +8 -0
  321. package/dist/types/factories.js +9 -0
  322. package/dist/types/factories.js.map +1 -0
  323. package/dist/types/index.d.ts +2 -0
  324. package/dist/types/index.js +3 -0
  325. package/dist/types/index.js.map +1 -0
  326. package/dist/types/integer.d.ts +6 -0
  327. package/dist/types/integer.js +3 -0
  328. package/dist/types/integer.js.map +1 -0
  329. package/dist/types/intrinsics.d.ts +11 -0
  330. package/dist/types/intrinsics.js +12 -0
  331. package/dist/types/intrinsics.js.map +1 -0
  332. package/dist/types/match.d.ts +3 -0
  333. package/dist/types/match.js +11 -0
  334. package/dist/types/match.js.map +1 -0
  335. package/dist/types/non_factories.d.ts +21 -0
  336. package/dist/types/non_factories.js +9 -0
  337. package/dist/types/non_factories.js.map +1 -0
  338. package/dist/types/null.d.ts +7 -0
  339. package/dist/types/null.js +4 -0
  340. package/dist/types/null.js.map +1 -0
  341. package/dist/types/number.d.ts +6 -0
  342. package/dist/types/number.js +3 -0
  343. package/dist/types/number.js.map +1 -0
  344. package/dist/types/object.d.ts +16 -0
  345. package/dist/types/object.js +10 -0
  346. package/dist/types/object.js.map +1 -0
  347. package/dist/types/ref.d.ts +7 -0
  348. package/dist/types/ref.js +5 -0
  349. package/dist/types/ref.js.map +1 -0
  350. package/dist/types/string.d.ts +6 -0
  351. package/dist/types/string.js +3 -0
  352. package/dist/types/string.js.map +1 -0
  353. package/dist/types/toJSON.d.ts +5 -0
  354. package/dist/types/toJSON.js +97 -0
  355. package/dist/types/toJSON.js.map +1 -0
  356. package/dist/types/type_common.d.ts +10 -0
  357. package/dist/types/type_common.js +12 -0
  358. package/dist/types/type_common.js.map +1 -0
  359. package/dist/types/types_derived/option.d.ts +5 -0
  360. package/dist/types/types_derived/option.js +6 -0
  361. package/dist/types/types_derived/option.js.map +1 -0
  362. package/dist/types/types_derived/taggedUnion.d.ts +19 -0
  363. package/dist/types/types_derived/taggedUnion.js +8 -0
  364. package/dist/types/types_derived/taggedUnion.js.map +1 -0
  365. package/dist/types/types_derived/wrapper.d.ts +8 -0
  366. package/dist/types/types_derived/wrapper.js +5 -0
  367. package/dist/types/types_derived/wrapper.js.map +1 -0
  368. package/dist/types/union.d.ts +9 -0
  369. package/dist/types/union.js +9 -0
  370. package/dist/types/union.js.map +1 -0
  371. package/dist/util/ArrayOfLength.d.ts +1 -0
  372. package/dist/util/ArrayOfLength.js +2 -0
  373. package/dist/util/ArrayOfLength.js.map +1 -0
  374. package/dist/util/DeferredOr.d.ts +1 -0
  375. package/dist/util/DeferredOr.js +2 -0
  376. package/dist/util/DeferredOr.js.map +1 -0
  377. package/dist/util/EnsureNarrow.d.ts +2 -0
  378. package/dist/util/EnsureNarrow.js +2 -0
  379. package/dist/util/EnsureNarrow.js.map +1 -0
  380. package/dist/util/EnsureRecord.d.ts +2 -0
  381. package/dist/util/EnsureRecord.js +2 -0
  382. package/dist/util/EnsureRecord.js.map +1 -0
  383. package/dist/util/Expand.d.ts +3 -0
  384. package/dist/util/Expand.js +2 -0
  385. package/dist/util/Expand.js.map +1 -0
  386. package/dist/util/Falsy.d.ts +1 -0
  387. package/dist/util/Falsy.js +2 -0
  388. package/dist/util/Falsy.js.map +1 -0
  389. package/dist/util/FromEntries.d.ts +3 -0
  390. package/dist/util/FromEntries.js +2 -0
  391. package/dist/util/FromEntries.js.map +1 -0
  392. package/dist/util/IteratorLike.d.ts +1 -0
  393. package/dist/util/IteratorLike.js +2 -0
  394. package/dist/util/IteratorLike.js.map +1 -0
  395. package/dist/util/JSONEntry.d.ts +2 -0
  396. package/dist/util/JSONEntry.js +2 -0
  397. package/dist/util/JSONEntry.js.map +1 -0
  398. package/dist/util/JSONKey.d.ts +1 -0
  399. package/dist/util/JSONKey.js +2 -0
  400. package/dist/util/JSONKey.js.map +1 -0
  401. package/dist/util/JSONObject.d.ts +5 -0
  402. package/dist/util/JSONObject.js +2 -0
  403. package/dist/util/JSONObject.js.map +1 -0
  404. package/dist/util/JSONSchemaMemo.d.ts +2 -0
  405. package/dist/util/JSONSchemaMemo.js +13 -0
  406. package/dist/util/JSONSchemaMemo.js.map +1 -0
  407. package/dist/util/JSONValue.d.ts +2 -0
  408. package/dist/util/JSONValue.js +2 -0
  409. package/dist/util/JSONValue.js.map +1 -0
  410. package/dist/util/PromiseOr.d.ts +1 -0
  411. package/dist/util/PromiseOr.js +2 -0
  412. package/dist/util/PromiseOr.js.map +1 -0
  413. package/dist/util/Result.d.ts +7 -0
  414. package/dist/util/Result.js +2 -0
  415. package/dist/util/Result.js.map +1 -0
  416. package/dist/util/Taggable.d.ts +9 -0
  417. package/dist/util/Taggable.js +8 -0
  418. package/dist/util/Taggable.js.map +1 -0
  419. package/dist/util/TupleToRecord.d.ts +5 -0
  420. package/dist/util/TupleToRecord.js +2 -0
  421. package/dist/util/TupleToRecord.js.map +1 -0
  422. package/dist/util/assert.d.ts +1 -0
  423. package/dist/util/assert.js +7 -0
  424. package/dist/util/assert.js.map +1 -0
  425. package/dist/util/dedent.d.ts +1 -0
  426. package/dist/util/dedent.js +5 -0
  427. package/dist/util/dedent.js.map +1 -0
  428. package/dist/util/fixTemplateStrings.d.ts +11 -0
  429. package/dist/util/fixTemplateStrings.js +83 -0
  430. package/dist/util/fixTemplateStrings.js.map +1 -0
  431. package/dist/util/fixTemplateStrings.test.d.ts +1 -0
  432. package/dist/util/fixTemplateStrings.test.js +221 -0
  433. package/dist/util/fixTemplateStrings.test.js.map +1 -0
  434. package/dist/util/isAsyncIterator.d.ts +1 -0
  435. package/dist/util/isAsyncIterator.js +7 -0
  436. package/dist/util/isAsyncIterator.js.map +1 -0
  437. package/dist/util/isIterator.d.ts +1 -0
  438. package/dist/util/isIterator.js +7 -0
  439. package/dist/util/isIterator.js.map +1 -0
  440. package/dist/util/isJSONValue.d.ts +2 -0
  441. package/dist/util/isJSONValue.js +16 -0
  442. package/dist/util/isJSONValue.js.map +1 -0
  443. package/dist/util/isPropertyKey.d.ts +1 -0
  444. package/dist/util/isPropertyKey.js +4 -0
  445. package/dist/util/isPropertyKey.js.map +1 -0
  446. package/dist/util/isTemplateStringsArray.d.ts +1 -0
  447. package/dist/util/isTemplateStringsArray.js +4 -0
  448. package/dist/util/isTemplateStringsArray.js.map +1 -0
  449. package/dist/util/jsonEquals.d.ts +2 -0
  450. package/dist/util/jsonEquals.js +33 -0
  451. package/dist/util/jsonEquals.js.map +1 -0
  452. package/dist/util/nullaryMemo.d.ts +1 -0
  453. package/dist/util/nullaryMemo.js +12 -0
  454. package/dist/util/nullaryMemo.js.map +1 -0
  455. package/dist/util/unimplemented.d.ts +1 -0
  456. package/dist/util/unimplemented.js +5 -0
  457. package/dist/util/unimplemented.js.map +1 -0
  458. package/dist/util/unreachable.d.ts +1 -0
  459. package/dist/util/unreachable.js +5 -0
  460. package/dist/util/unreachable.js.map +1 -0
  461. package/dist/util/unwrapDeferred.d.ts +2 -0
  462. package/dist/util/unwrapDeferred.js +4 -0
  463. package/dist/util/unwrapDeferred.js.map +1 -0
  464. package/dist/util/util.d.ts +10 -0
  465. package/dist/util/util.js +11 -0
  466. package/dist/util/util.js.map +1 -0
  467. package/events/Aborted.ts +5 -0
  468. package/events/Embedded.ts +6 -0
  469. package/events/EmbeddingRequested.ts +5 -0
  470. package/events/Emitted.ts +5 -0
  471. package/events/EventBase.ts +3 -0
  472. package/events/EventHandler.ts +3 -0
  473. package/events/EventResolved.ts +30 -0
  474. package/events/Forked.ts +3 -0
  475. package/events/InferenceRequested.ts +3 -0
  476. package/events/Inferred.ts +6 -0
  477. package/events/LEvent.ts +36 -0
  478. package/events/MessageAppended.ts +6 -0
  479. package/events/MessageRemoved.ts +6 -0
  480. package/events/MessagesSet.ts +6 -0
  481. package/events/ModelPushed.ts +10 -0
  482. package/events/ModelRemoved.ts +10 -0
  483. package/events/Returned.ts +5 -0
  484. package/events/Threw.ts +5 -0
  485. package/events/ToolCalled.ts +7 -0
  486. package/events/ToolDisabled.ts +6 -0
  487. package/events/ToolEnabled.ts +8 -0
  488. package/events/isScopeChildEvent.ts +15 -0
  489. package/events/isScopeDescendantEvent.ts +30 -0
  490. package/index.ts +41 -0
  491. package/package.json +32 -9
  492. package/testing/ActorAssertions.ts +19 -0
  493. package/testing/TestEmbeddingModel.ts +18 -0
  494. package/testing/TestLanguageModel.ts +32 -0
  495. package/testing/index.ts +4 -0
  496. package/testing/takeFirstAction.ts +8 -0
  497. package/tsconfig.json +8 -0
  498. package/types/AssertDiagnostics.ts +183 -0
  499. package/types/JSONRootType.ts +8 -0
  500. package/types/JSONType.ts +27 -0
  501. package/types/JSONTypeBase.ts +3 -0
  502. package/types/Metatype/MetatypeDescriptor.ts +80 -0
  503. package/types/Metatype/fromMetatypeDescriptor.ts +52 -0
  504. package/types/Type.ts +46 -0
  505. package/types/TypeContext.ts +19 -0
  506. package/types/TypeLike.ts +60 -0
  507. package/types/TypeVisitor.ts +49 -0
  508. package/types/array.ts +20 -0
  509. package/types/boolean.ts +9 -0
  510. package/types/const.ts +17 -0
  511. package/types/declareType.ts +71 -0
  512. package/types/enum.ts +14 -0
  513. package/types/factories.ts +8 -0
  514. package/types/index.ts +2 -0
  515. package/types/integer.ts +9 -0
  516. package/types/intrinsics.ts +11 -0
  517. package/types/match.ts +13 -0
  518. package/types/non_factories.ts +26 -0
  519. package/types/null.ts +10 -0
  520. package/types/number.ts +9 -0
  521. package/types/object.ts +27 -0
  522. package/types/ref.ts +12 -0
  523. package/types/string.ts +9 -0
  524. package/types/toJSON.ts +111 -0
  525. package/types/type_common.ts +21 -0
  526. package/types/types_derived/option.ts +10 -0
  527. package/types/types_derived/taggedUnion.ts +30 -0
  528. package/types/types_derived/wrapper.ts +10 -0
  529. package/types/union.ts +19 -0
  530. package/util/ArrayOfLength.ts +5 -0
  531. package/util/DeferredOr.ts +1 -0
  532. package/util/EnsureNarrow.ts +5 -0
  533. package/util/EnsureRecord.ts +3 -0
  534. package/util/Expand.ts +1 -0
  535. package/util/Falsy.ts +1 -0
  536. package/util/FromEntries.ts +3 -0
  537. package/util/IteratorLike.ts +1 -0
  538. package/util/JSONEntry.ts +3 -0
  539. package/util/JSONKey.ts +1 -0
  540. package/util/JSONObject.ts +6 -0
  541. package/util/JSONSchemaMemo.ts +15 -0
  542. package/util/JSONValue.ts +3 -0
  543. package/util/PromiseOr.ts +1 -0
  544. package/util/Result.ts +7 -0
  545. package/util/Taggable.ts +18 -0
  546. package/util/TupleToRecord.ts +5 -0
  547. package/util/assert.ts +7 -0
  548. package/util/dedent.ts +5 -0
  549. package/util/fixTemplateStrings.test.ts +250 -0
  550. package/util/fixTemplateStrings.ts +99 -0
  551. package/util/isAsyncIterator.ts +6 -0
  552. package/util/isIterator.ts +6 -0
  553. package/util/isJSONValue.ts +20 -0
  554. package/util/isPropertyKey.ts +3 -0
  555. package/util/isTemplateStringsArray.ts +3 -0
  556. package/util/jsonEquals.ts +41 -0
  557. package/util/nullaryMemo.ts +11 -0
  558. package/util/unimplemented.ts +5 -0
  559. package/util/unreachable.ts +5 -0
  560. package/util/unwrapDeferred.ts +5 -0
  561. package/util/util.ts +10 -0
  562. package/lib/index.js +0 -1
package/Action.ts ADDED
@@ -0,0 +1,29 @@
1
+ import type { Scope } from "./Scope.ts"
2
+ import type { Spec } from "./Spec.ts"
3
+ import type { PromiseOr } from "./util/PromiseOr.ts"
4
+
5
+ export interface Action<K extends string = string, S extends Spec = Spec> {
6
+ "": S
7
+ type: K
8
+ [ActionKey]: true
9
+ trace: string
10
+ reducer(this: this, scope: Scope): PromiseOr<Scope>
11
+ }
12
+
13
+ export type ActionReducer<K extends string, S extends Spec> = (this: Action<K, S>, scope: Scope) => PromiseOr<Scope>
14
+
15
+ export function Action<K extends string, S extends Spec>(type: K, reducer: ActionReducer<K, S>): Action<K, S> {
16
+ return ({
17
+ type,
18
+ [ActionKey]: true,
19
+ trace: new Error().stack!,
20
+ reducer,
21
+ } satisfies Omit<Action<K, S>, "">) as never
22
+ }
23
+
24
+ export type ActionKey = typeof ActionKey
25
+ export const ActionKey = Symbol("Liminal/Action")
26
+
27
+ export function isAction(value: unknown): value is Action {
28
+ return typeof value === "object" && value !== null && ActionKey in value
29
+ }
package/Actor.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Action } from "./Action.ts"
2
+ import type { DeferredOr } from "./util/DeferredOr.ts"
3
+ import type { IteratorLike } from "./util/IteratorLike.ts"
4
+ import type { JSONKey } from "./util/JSONKey.ts"
5
+
6
+ export type Actor<Y extends Action = Action, R = any> = IteratorLike<Y, R>
7
+
8
+ export type ActorLike<Y extends Action = Action, R = any> = DeferredOr<Actor<Y, R>>
9
+ export type ActorLikeY<A extends ActorLike> = A extends ActorLike<infer Y> ? Y : never
10
+ export type ActorLikeT<A extends ActorLike> = A extends ActorLike<Action, infer T> ? T : never
11
+
12
+ export type ActorLikes = ActorLikeArray | ActorLikeRecord
13
+ export type ActorLikeArray = Array<ActorLike>
14
+ export type ActorLikeRecord = Record<JSONKey, ActorLike>
15
+
16
+ export type ActorLikesT<A extends ActorLikes> =
17
+ & {
18
+ -readonly [K in keyof A]: A[K] extends ActorLike<Action, infer T> ? T : never
19
+ }
20
+ & {}
package/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # liminal
2
+
3
+ ## 0.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 96339de: Fixing continuous publishing. No other changes contained in this release.
8
+
9
+ ## 0.1.1
10
+
11
+ ### Patch Changes
12
+
13
+ - 171acfe: Initial publish of Liminal and the Vercel AI adapter library. Still heavily WIP.
14
+ More publishes to come!
package/Exec.ts ADDED
@@ -0,0 +1,63 @@
1
+ import type { Action } from "./Action.ts"
2
+ import type { Actor } from "./Actor.ts"
3
+ import type { EventHandler } from "./events/EventHandler.ts"
4
+ import type { EventResolved, ExtractEventResolved } from "./events/EventResolved.ts"
5
+ import type { LanguageModel } from "./Model.ts"
6
+ import { RootScope, type Scope } from "./Scope.ts"
7
+ import type { FromEntries } from "./util/FromEntries.ts"
8
+ import type { JSONKey } from "./util/JSONKey.ts"
9
+
10
+ export interface Exec<Y extends Action = Action, T = any> {
11
+ (
12
+ handler?: EventHandler<
13
+ Extract<ExtractEventResolved<Y[""]> & {}, EventResolved>
14
+ >,
15
+ options?: ExecOptions,
16
+ ): Promise<T>
17
+ }
18
+
19
+ export interface ExecConfig {
20
+ default: LanguageModel
21
+ args?: Record<JSONKey, any>
22
+ }
23
+
24
+ export interface ExecOptions {
25
+ signal?: AbortSignal
26
+ }
27
+
28
+ export type ExtractExecConfig<Y extends Action> =
29
+ & {
30
+ default: LanguageModel
31
+ }
32
+ & (
33
+ [Y[""]["Entry"]] extends [never] ? {
34
+ args?: undefined
35
+ }
36
+ : {
37
+ args: FromEntries<Y[""]["Entry"]>
38
+ }
39
+ )
40
+
41
+ export function Exec<Y extends Action, T>(
42
+ createActor: () => Actor<Y, T>,
43
+ config: ExtractExecConfig<Y>,
44
+ ): Exec<Y, T> {
45
+ // TODO: consider `Result` type.
46
+ return async (handler, options) => {
47
+ let scope: Scope = RootScope(config.default, config.args, handler as never, options?.signal)
48
+ scope = await scope.reduce(createActor())
49
+ const { signal: { aborted, reason } } = scope.controller
50
+ if (aborted) {
51
+ scope.event({
52
+ type: "aborted",
53
+ reason,
54
+ })
55
+ throw reason
56
+ }
57
+ scope.event({
58
+ type: "returned",
59
+ value: scope.value,
60
+ })
61
+ return scope.value
62
+ }
63
+ }
package/L.ts ADDED
@@ -0,0 +1,27 @@
1
+ export * from "./_.ts"
2
+ export * from "./actions/abort.ts"
3
+ export * from "./actions/actions_derived/clear.ts"
4
+ export * from "./actions/actions_derived/declareModel.ts"
5
+ export * from "./actions/actions_derived/declareModel.ts"
6
+ export * from "./actions/actions_derived/getMessages.ts"
7
+ export * from "./actions/actions_derived/messages.ts"
8
+ export * from "./actions/appendMessage.ts"
9
+ export * from "./actions/await.ts"
10
+ export * from "./actions/branch.ts"
11
+ export * from "./actions/catch.ts"
12
+ export * from "./actions/declareArg.ts"
13
+ export * from "./actions/disableTool.ts"
14
+ export * from "./actions/embed.ts"
15
+ export * from "./actions/emit.ts"
16
+ export * from "./actions/enableTool.ts"
17
+ export * from "./actions/getScope.ts"
18
+ export * from "./actions/getSignal.ts"
19
+ export * from "./actions/getTools.ts"
20
+ export * from "./actions/infer.ts"
21
+ export * from "./actions/pushModel.ts"
22
+ export * from "./actions/removeModel.ts"
23
+ export * from "./actions/setMessages.ts"
24
+ export * from "./actions/throw.ts"
25
+ export * from "./types/factories.ts"
26
+
27
+ export * from "./actions/actions_derived/metatype.ts"
@@ -0,0 +1,3 @@
1
+ export class LiminalAssertionError extends Error {
2
+ override readonly name = "LiminalAssertionError"
3
+ }
@@ -0,0 +1,7 @@
1
+ import type { ExecConfig } from "./Exec.ts"
2
+
3
+ export interface LiminalConfig extends ExecConfig {
4
+ actors?: string
5
+ silent?: boolean
6
+ write?: boolean | string
7
+ }
package/Message.ts ADDED
@@ -0,0 +1,94 @@
1
+ export type Message = Messages[keyof Messages]
2
+ export type Messages = {
3
+ system: SystemMessage
4
+ user: UserMessage
5
+ assistant: AssistantMessage
6
+ tool: ToolMessage
7
+ }
8
+
9
+ export interface SystemMessage extends MessageBase<"system"> {}
10
+ export interface UserMessage extends MessageBase<"user"> {}
11
+ export interface AssistantMessage extends MessageBase<"assistant"> {}
12
+ export interface ToolMessage extends MessageBase<"tool"> {}
13
+
14
+ interface MessageBase<R extends MessageRole> {
15
+ readonly role: R
16
+ readonly content: MessageContents[R]
17
+ }
18
+
19
+ export type MessageRole = "system" | "user" | "assistant" | "tool"
20
+
21
+ export type MessageContents = {
22
+ system: string
23
+ user: UserContent
24
+ assistant: AssistantContent
25
+ tool: ToolContent
26
+ }
27
+
28
+ export type AssistantContent =
29
+ | string
30
+ | ReadonlyArray<TextPart | FilePart | ReasoningPart | RedactedReasoningPart | ToolCallPart>
31
+
32
+ export type UserContent = string | Array<TextPart | ImagePart | FilePart>
33
+
34
+ export type ToolContent = Array<ToolContentPart>
35
+ export interface ToolContentPart {
36
+ readonly type: "tool-result"
37
+ readonly toolCallId: string
38
+ readonly toolName: string
39
+ readonly result: unknown
40
+ readonly isError?: boolean
41
+ }
42
+
43
+ export interface TextPart {
44
+ readonly type: "text"
45
+ readonly text: string
46
+ }
47
+
48
+ // TODO: URL?
49
+ export type DataContent = string | Uint8Array | ArrayBuffer | Buffer
50
+
51
+ export interface FilePart {
52
+ type: "file"
53
+ /**
54
+ * File data. Can either be:
55
+ *
56
+ * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer
57
+ * - URL: a URL that points to the image
58
+ */
59
+ readonly data: DataContent | URL
60
+ /** Optional filename of the file. */
61
+ readonly filename?: string
62
+ /** Mime type of the file. */
63
+ readonly mimeType: string
64
+ }
65
+
66
+ export interface ReasoningPart {
67
+ readonly type: "reasoning"
68
+ /** The reasoning text. */
69
+ readonly text: string
70
+ /** An optional signature for verifying that the reasoning originated from the model. */
71
+ readonly signature?: string
72
+ }
73
+
74
+ export interface RedactedReasoningPart {
75
+ readonly type: "redacted-reasoning"
76
+ /** Redacted reasoning data. */
77
+ readonly data: string
78
+ }
79
+
80
+ export interface ToolCallPart {
81
+ readonly type: "tool-call"
82
+ /** ID of the tool call. This ID is used to match the tool call with the tool result. */
83
+ readonly toolCallId: string
84
+ /** Name of the tool that is being called. */
85
+ readonly toolName: string
86
+ /** Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. */
87
+ readonly args: unknown
88
+ }
89
+
90
+ export interface ImagePart {
91
+ readonly type: "image"
92
+ readonly image: DataContent | URL
93
+ readonly mimeType?: string
94
+ }
package/Model.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec"
2
+ import type { Action } from "./Action.ts"
3
+ import type { Actor } from "./Actor.ts"
4
+ import type { JSONObject } from "./util/JSONObject.ts"
5
+
6
+ export type Model = LanguageModel | EmbeddingModel
7
+
8
+ export interface LanguageModel extends ModelBase<"language"> {
9
+ infer: (type: StandardSchemaV1<JSONObject, any> | undefined) => Actor<Action, any>
10
+ }
11
+
12
+ export interface EmbeddingModel extends ModelBase<"embedding"> {
13
+ embed: (value: string) => Promise<Array<number>>
14
+ }
15
+
16
+ interface ModelBase<K extends ModelType> {
17
+ type: K
18
+ }
19
+
20
+ export type ModelType = "language" | "embedding"
package/PathLike.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { _ } from "./_.ts"
2
+ import type { JSONKey } from "./util/JSONKey.ts"
3
+
4
+ export type Path = Array<JSONKey>
5
+ export declare namespace Path {
6
+ export type FromPathLike<P extends PathLike> = Extract<
7
+ {
8
+ [K in keyof P]: P[K] extends _ ? JSONKey : P[K]
9
+ },
10
+ Path
11
+ >
12
+ }
13
+
14
+ export type PathLike = Array<JSONKey | _>
15
+ export declare namespace PathLike {
16
+ export type FromPath<P extends Path> = {
17
+ [K in keyof P]: P[K] | _
18
+ }
19
+ }
package/Scope.ts ADDED
@@ -0,0 +1,133 @@
1
+ import type { Action } from "./Action.ts"
2
+ import type { Actor } from "./Actor.ts"
3
+ import type { EventHandler } from "./events/EventHandler.ts"
4
+ import type { LEvent } from "./events/LEvent.ts"
5
+ import type { Message } from "./Message.ts"
6
+ import type { EmbeddingModel, LanguageModel } from "./Model.ts"
7
+ import type { Tool } from "./Tool.ts"
8
+ import type { JSONKey } from "./util/JSONKey.ts"
9
+
10
+ export type Scope = RootScope | ChildScope
11
+
12
+ export interface RootScope extends ScopeBase<RootScopeType> {}
13
+ export interface ChildScope extends ScopeBase<ChildScopeType> {
14
+ readonly parent: Scope
15
+ }
16
+
17
+ export type RootScopeType = "root"
18
+ export type ChildScopeType = "catch" | "tool" | "branch" | "branch_arm" | "set_messages"
19
+ export type ScopeType = RootScopeType | ChildScopeType
20
+
21
+ export interface ScopeBase<Type extends ScopeType> {
22
+ readonly type: Type
23
+ readonly path: Array<JSONKey>
24
+ readonly args?: Record<JSONKey, any>
25
+ readonly controller: AbortController
26
+ readonly messages: Set<Message>
27
+ readonly tools: Set<Tool>
28
+ readonly nextArg?: any
29
+ readonly value: any
30
+ readonly thrown?: any
31
+ readonly languageModels: Set<LanguageModel>
32
+ readonly embeddingModels: Set<EmbeddingModel>
33
+ readonly handler?: EventHandler
34
+ readonly childForkCounts: Record<JSONKey, number>
35
+ readonly index: number
36
+
37
+ reduce(actor: Actor): Promise<Scope>
38
+ fork(source: ChildScopeType, subpath: Array<JSONKey>): Scope
39
+ event(event: LEvent): void
40
+ }
41
+
42
+ export function RootScope(
43
+ defaultLanguageModel: LanguageModel,
44
+ args?: Record<JSONKey, any>,
45
+ handler: EventHandler = () => {},
46
+ signal?: AbortSignal,
47
+ ): RootScope {
48
+ const controller = new AbortController()
49
+ signal?.addEventListener("abort", () => {
50
+ controller.abort()
51
+ })
52
+ return {
53
+ type: "root",
54
+ args,
55
+ controller,
56
+ messages: new Set(),
57
+ tools: new Set(),
58
+ value: undefined,
59
+ path: [],
60
+ languageModels: new Set([defaultLanguageModel]),
61
+ embeddingModels: new Set(),
62
+ childForkCounts: {},
63
+ index: 0,
64
+ reduce,
65
+ fork,
66
+ handler,
67
+ event,
68
+ }
69
+ }
70
+
71
+ async function reduce(this: Scope, actor: Actor): Promise<Scope> {
72
+ const { signal } = this.controller
73
+ let scope = { ...this }
74
+ if (signal.aborted) return scope
75
+ let value: unknown
76
+ try {
77
+ let current = await actor.next()
78
+ while (!current.done) {
79
+ const { value } = current
80
+ if (signal.aborted) return scope
81
+ scope = await (value as Action).reducer(scope)
82
+ if (signal.aborted) return scope
83
+ current = await actor.next(scope.nextArg)
84
+ }
85
+ value = current.value
86
+ } catch (thrown: unknown) {
87
+ scope.controller.abort(thrown)
88
+ }
89
+ return {
90
+ ...scope,
91
+ value,
92
+ nextArg: undefined,
93
+ }
94
+ }
95
+
96
+ function fork(this: Scope, type: ChildScopeType, subpath: Array<JSONKey>): ChildScope {
97
+ const subpathStr = subpath.join(" ")
98
+ let index = this.childForkCounts[subpathStr]
99
+ if (typeof index === "number") {
100
+ this.childForkCounts[subpathStr]! += 1
101
+ } else {
102
+ index = 0
103
+ this.childForkCounts[subpathStr] = 1
104
+ }
105
+ const f: ChildScope = {
106
+ type,
107
+ controller: this.controller,
108
+ args: this.args,
109
+ messages: new Set(this.messages),
110
+ tools: new Set(),
111
+ languageModels: new Set(this.languageModels),
112
+ embeddingModels: new Set(this.embeddingModels),
113
+ childForkCounts: {},
114
+ handler: this.handler,
115
+ path: [...this.path, ...subpath],
116
+ parent: this,
117
+ value: undefined,
118
+ index,
119
+ reduce,
120
+ fork,
121
+ event,
122
+ }
123
+ f.event({ type: "forked" })
124
+ return f
125
+ }
126
+
127
+ function event(this: ChildScope, event: LEvent): void {
128
+ this.handler?.({
129
+ scope: this.path,
130
+ index: this.index,
131
+ ...event,
132
+ })
133
+ }
package/Spec.ts ADDED
@@ -0,0 +1,29 @@
1
+ import type { LEvent } from "./events/LEvent.ts"
2
+ import type { Expand } from "./util/Expand.ts"
3
+ import type { JSONEntry } from "./util/JSONEntry.ts"
4
+ import type { JSONKey } from "./util/JSONKey.ts"
5
+
6
+ export interface Spec<
7
+ Key extends JSONKey = JSONKey,
8
+ Event extends LEvent = LEvent,
9
+ Spec_ extends Spec = any,
10
+ Entry_ extends JSONEntry = JSONEntry,
11
+ Throw = any,
12
+ Value = any,
13
+ > {
14
+ Event: Event
15
+ Child: [Key, Spec_]
16
+ Entry: Entry_
17
+ Throw: Throw
18
+ Value: Value
19
+ }
20
+
21
+ export declare namespace Spec {
22
+ export type Make<P extends Partial<Spec>> = Expand<{
23
+ Event: [unknown] extends [P["Event"]] ? never : P["Event"]
24
+ Child: [unknown] extends [P["Child"]] ? never : P["Child"]
25
+ Throw: [unknown] extends [P["Throw"]] ? never : P["Throw"]
26
+ Entry: [unknown] extends [P["Entry"]] ? never : P["Entry"]
27
+ Value: [unknown] extends [P["Value"]] ? never : P["Value"]
28
+ }>
29
+ }
package/Tool.ts ADDED
@@ -0,0 +1,58 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec"
2
+ import type { Action } from "./Action.ts"
3
+ import type { Actor } from "./Actor.ts"
4
+ import type { Scope } from "./Scope.ts"
5
+ import { assert } from "./util/assert.ts"
6
+ import { isJSONValue } from "./util/isJSONValue.ts"
7
+ import type { JSONKey } from "./util/JSONKey.ts"
8
+ import type { JSONObject } from "./util/JSONObject.ts"
9
+ import type { JSONValue } from "./util/JSONValue.ts"
10
+ import type { PromiseOr } from "./util/PromiseOr.ts"
11
+
12
+ export interface ToolConfig<K extends JSONKey = JSONKey> {
13
+ toolKey: K
14
+ description: string
15
+ params: StandardSchemaV1<JSONObject, any>
16
+ implementation: ToolImplementation
17
+ }
18
+
19
+ export interface Tool<K extends JSONKey = JSONKey> extends ToolConfig<K> {
20
+ executor: (scope: Scope) => ToolExecutor
21
+ }
22
+
23
+ export function Tool<K extends JSONKey>(config: ToolConfig<K>): Tool<K> {
24
+ return {
25
+ ...config,
26
+ executor,
27
+ }
28
+ }
29
+
30
+ export type ToolImplementation = (params: any) => Actor<Action, ToolResult> | PromiseOr<ToolResult>
31
+
32
+ export type ToolExecutor = (args: any) => Promise<JSONValue>
33
+
34
+ export type ToolResult = JSONValue | void
35
+
36
+ function executor(this: Tool, scope: Scope): ToolExecutor {
37
+ return async (args) => {
38
+ scope.event({
39
+ type: "tool_called",
40
+ args,
41
+ tool: this.toolKey,
42
+ })
43
+ const parsed = await this.params["~standard"].validate(args)
44
+ assert(!parsed.issues)
45
+ const { value: transformed } = parsed
46
+ const initial = await this.implementation(transformed)
47
+ if (isJSONValue(initial)) {
48
+ return { value: initial }
49
+ }
50
+ const fork = scope.fork("tool", [this.toolKey])
51
+ const { value } = await fork.reduce(initial as Actor)
52
+ fork.event({
53
+ type: "returned",
54
+ value,
55
+ })
56
+ return { value }
57
+ }
58
+ }
package/_.ts ADDED
@@ -0,0 +1,11 @@
1
+ export interface _ {
2
+ type: "_"
3
+ }
4
+
5
+ export const _: _ = {
6
+ type: "_",
7
+ }
8
+
9
+ export function is_(value: unknown): value is _ {
10
+ return typeof value === "object" && value !== null && "type" in value && value.type === "_"
11
+ }
@@ -0,0 +1,23 @@
1
+ import { Action } from "../Action.ts"
2
+ import type { Aborted } from "../events/Aborted.ts"
3
+ import type { Spec } from "../Spec.ts"
4
+ import type { EnsureNarrow } from "../util/EnsureNarrow.ts"
5
+
6
+ export interface abort<V> extends Action<"abort", Spec.Make<{ Event: Aborted<V> }>> {}
7
+
8
+ export function* abort<V>(reason: V, ...[_error]: EnsureNarrow<V>): Generator<
9
+ abort<V>,
10
+ never
11
+ > {
12
+ return (yield (Action("abort", (scope) => {
13
+ scope.event({
14
+ type: "aborted",
15
+ reason,
16
+ })
17
+ scope.controller.abort(reason)
18
+ return {
19
+ ...scope,
20
+ nextArg: undefined,
21
+ }
22
+ }))) as never
23
+ }
@@ -0,0 +1,23 @@
1
+ import type { EmbeddingModel, LanguageModel, Model } from "../../Model.ts"
2
+ import type { Scope } from "../../Scope.ts"
3
+ import { unreachable } from "../../util/unreachable.ts"
4
+
5
+ export function applyToModels<M extends Model>(
6
+ scope: Scope,
7
+ model: M,
8
+ f: (initial: Set<M>) => Set<M>,
9
+ ): Pick<Scope, "languageModels" | "embeddingModels"> {
10
+ const initial: Set<M> = (model.type === "language" ? scope.languageModels : scope.embeddingModels) as never
11
+ const models = f(new Set(initial))
12
+ return model.type === "language"
13
+ ? {
14
+ languageModels: models as Set<LanguageModel>,
15
+ embeddingModels: scope.embeddingModels,
16
+ }
17
+ : model.type === "embedding"
18
+ ? {
19
+ languageModels: scope.languageModels,
20
+ embeddingModels: models as Set<EmbeddingModel>,
21
+ }
22
+ : unreachable()
23
+ }
@@ -0,0 +1,89 @@
1
+ // Bun Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Model generates the expected event sequence 1`] = `
4
+ "[
5
+ {
6
+ "scope": [],
7
+ "index": 0,
8
+ "type": "model_pushed",
9
+ "modelKey": "secondary",
10
+ "modelType": "language"
11
+ },
12
+ {
13
+ "scope": [
14
+ "fork-key"
15
+ ],
16
+ "index": 0,
17
+ "type": "forked"
18
+ },
19
+ {
20
+ "scope": [
21
+ "fork-key"
22
+ ],
23
+ "index": 0,
24
+ "type": "model_pushed",
25
+ "modelKey": "child_a",
26
+ "modelType": "language"
27
+ },
28
+ {
29
+ "scope": [
30
+ "fork-key"
31
+ ],
32
+ "index": 0,
33
+ "type": "model_pushed",
34
+ "modelKey": "child_b",
35
+ "modelType": "embedding"
36
+ },
37
+ {
38
+ "scope": [
39
+ "fork-key"
40
+ ],
41
+ "index": 0,
42
+ "type": "model_removed",
43
+ "modelKey": "child_a",
44
+ "modelType": "language"
45
+ },
46
+ {
47
+ "scope": [
48
+ "fork-key"
49
+ ],
50
+ "index": 0,
51
+ "type": "model_removed",
52
+ "modelKey": "child_b",
53
+ "modelType": "embedding"
54
+ },
55
+ {
56
+ "scope": [
57
+ "fork-key"
58
+ ],
59
+ "index": 0,
60
+ "type": "returned"
61
+ },
62
+ {
63
+ "scope": [],
64
+ "index": 0,
65
+ "type": "model_pushed",
66
+ "modelKey": "tertiary",
67
+ "modelType": "embedding"
68
+ },
69
+ {
70
+ "scope": [],
71
+ "index": 0,
72
+ "type": "model_removed",
73
+ "modelKey": "secondary",
74
+ "modelType": "language"
75
+ },
76
+ {
77
+ "scope": [],
78
+ "index": 0,
79
+ "type": "model_removed",
80
+ "modelKey": "tertiary",
81
+ "modelType": "embedding"
82
+ },
83
+ {
84
+ "scope": [],
85
+ "index": 0,
86
+ "type": "returned"
87
+ }
88
+ ]"
89
+ `;
@@ -0,0 +1,6 @@
1
+ import { setMessages } from "../../actions/setMessages.ts"
2
+ import type { MessagesSet } from "../../events/MessagesSet.ts"
3
+
4
+ export function clear() {
5
+ return setMessages(() => [])
6
+ }