liminal 0.5.1 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (673) hide show
  1. package/Agent.ts +28 -0
  2. package/CHANGELOG.md +16 -0
  3. package/Fiber.ts +117 -0
  4. package/Globals.ts +10 -0
  5. package/Handler.ts +0 -0
  6. package/L/L.ts +13 -0
  7. package/L/_infer.ts +35 -0
  8. package/L/_message.ts +18 -0
  9. package/L/all.ts +11 -0
  10. package/L/assistant.ts +34 -0
  11. package/L/branch.ts +45 -0
  12. package/L/emit.ts +11 -0
  13. package/L/fork.ts +18 -0
  14. package/L/join.ts +9 -0
  15. package/L/model.ts +11 -0
  16. package/L/namespace.ts +11 -0
  17. package/L/rune.ts +19 -0
  18. package/L/self.ts +13 -0
  19. package/L/state.ts +20 -0
  20. package/L/system.ts +13 -0
  21. package/L/user.ts +13 -0
  22. package/LEvent.ts +35 -0
  23. package/Message.ts +11 -90
  24. package/Model.ts +10 -17
  25. package/Rune.ts +17 -0
  26. package/Runic.ts +22 -0
  27. package/cli/main.ts +1 -19
  28. package/dist/Agent.d.ts +12 -0
  29. package/dist/Agent.js +16 -0
  30. package/dist/Agent.js.map +1 -0
  31. package/dist/Fiber.d.ts +38 -0
  32. package/dist/Fiber.js +79 -0
  33. package/dist/Fiber.js.map +1 -0
  34. package/dist/Globals.d.ts +7 -0
  35. package/dist/Globals.js +2 -0
  36. package/dist/Globals.js.map +1 -0
  37. package/dist/Handler.js +2 -0
  38. package/dist/Handler.js.map +1 -0
  39. package/dist/L/L.d.ts +13 -0
  40. package/dist/L/L.js +14 -0
  41. package/dist/L/L.js.map +1 -0
  42. package/dist/L/_infer.d.ts +4 -0
  43. package/dist/L/_infer.js +29 -0
  44. package/dist/L/_infer.js.map +1 -0
  45. package/dist/L/_message.d.ts +6 -0
  46. package/dist/L/_message.js +14 -0
  47. package/dist/L/_message.js.map +1 -0
  48. package/dist/L/all.d.ts +7 -0
  49. package/dist/L/all.js +5 -0
  50. package/dist/L/all.js.map +1 -0
  51. package/dist/L/assistant.d.ts +7 -0
  52. package/dist/L/assistant.js +23 -0
  53. package/dist/L/assistant.js.map +1 -0
  54. package/dist/L/branch.d.ts +11 -0
  55. package/dist/L/branch.js +32 -0
  56. package/dist/L/branch.js.map +1 -0
  57. package/dist/L/emit.d.ts +5 -0
  58. package/dist/L/emit.js +7 -0
  59. package/dist/L/emit.js.map +1 -0
  60. package/dist/L/fork.d.ts +7 -0
  61. package/dist/L/fork.js +11 -0
  62. package/dist/L/fork.js.map +1 -0
  63. package/dist/L/join.d.ts +5 -0
  64. package/dist/L/join.js +5 -0
  65. package/dist/L/join.js.map +1 -0
  66. package/dist/L/model.d.ts +5 -0
  67. package/dist/L/model.js +7 -0
  68. package/dist/L/model.js.map +1 -0
  69. package/dist/L/namespace.js +12 -0
  70. package/dist/L/namespace.js.map +1 -0
  71. package/dist/L/rune.d.ts +6 -0
  72. package/dist/L/rune.js +11 -0
  73. package/dist/L/rune.js.map +1 -0
  74. package/dist/L/self.d.ts +6 -0
  75. package/dist/L/self.js +7 -0
  76. package/dist/L/self.js.map +1 -0
  77. package/dist/L/state.d.ts +7 -0
  78. package/dist/L/state.js +14 -0
  79. package/dist/L/state.js.map +1 -0
  80. package/dist/L/system.d.ts +6 -0
  81. package/dist/L/system.js +7 -0
  82. package/dist/L/system.js.map +1 -0
  83. package/dist/L/user.d.ts +6 -0
  84. package/dist/L/user.js +7 -0
  85. package/dist/L/user.js.map +1 -0
  86. package/dist/LEvent.d.ts +28 -0
  87. package/dist/LEvent.js +5 -0
  88. package/dist/LEvent.js.map +1 -0
  89. package/dist/Message.d.ts +12 -81
  90. package/dist/Model.d.ts +4 -15
  91. package/dist/Model.js +6 -0
  92. package/dist/Model.js.map +1 -1
  93. package/dist/Rune.d.ts +11 -0
  94. package/dist/Rune.js +5 -0
  95. package/dist/Rune.js.map +1 -0
  96. package/dist/Runic.d.ts +9 -0
  97. package/dist/Runic.js +18 -0
  98. package/dist/Runic.js.map +1 -0
  99. package/dist/cli/main.d.ts +0 -1
  100. package/dist/cli/main.js +2 -14
  101. package/dist/cli/main.js.map +1 -1
  102. package/dist/index.d.ts +10 -40
  103. package/dist/index.js +10 -40
  104. package/dist/index.js.map +1 -1
  105. package/dist/state/Counter.d.ts +6 -0
  106. package/dist/state/Counter.js +13 -0
  107. package/dist/state/Counter.js.map +1 -0
  108. package/dist/state/DefaultStateMap.d.ts +4 -0
  109. package/dist/state/DefaultStateMap.js +14 -0
  110. package/dist/state/DefaultStateMap.js.map +1 -0
  111. package/dist/state/MessageRegistry.d.ts +7 -0
  112. package/dist/state/MessageRegistry.js +14 -0
  113. package/dist/state/MessageRegistry.js.map +1 -0
  114. package/dist/state/ModelConfig.d.ts +49 -0
  115. package/dist/state/ModelConfig.js +18 -0
  116. package/dist/state/ModelConfig.js.map +1 -0
  117. package/dist/state/ModelRegistry.d.ts +15 -0
  118. package/dist/state/ModelRegistry.js +43 -0
  119. package/dist/state/ModelRegistry.js.map +1 -0
  120. package/dist/state/StateMap.d.ts +7 -0
  121. package/dist/state/StateMap.js +10 -0
  122. package/dist/state/StateMap.js.map +1 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/index.ts +10 -40
  125. package/package.json +6 -9
  126. package/state/Counter.ts +11 -0
  127. package/state/DefaultStateMap.ts +14 -0
  128. package/state/MessageRegistry.ts +17 -0
  129. package/state/ModelConfig.ts +49 -0
  130. package/state/ModelRegistry.ts +55 -0
  131. package/state/StateMap.ts +15 -0
  132. package/tsconfig.json +5 -1
  133. package/Action.ts +0 -29
  134. package/Actor.ts +0 -20
  135. package/Exec.ts +0 -63
  136. package/L.ts +0 -27
  137. package/LiminalAssertionError.ts +0 -3
  138. package/LiminalConfig.ts +0 -7
  139. package/PathLike.ts +0 -19
  140. package/Scope.ts +0 -133
  141. package/Spec.ts +0 -29
  142. package/Tool.ts +0 -58
  143. package/_.ts +0 -11
  144. package/actions/abort.ts +0 -23
  145. package/actions/actions_common/updateModels.ts +0 -23
  146. package/actions/actions_derived/__snapshots__/declareModel.test.ts.snap +0 -89
  147. package/actions/actions_derived/clear.ts +0 -6
  148. package/actions/actions_derived/declareModel.test.ts +0 -33
  149. package/actions/actions_derived/declareModel.ts +0 -9
  150. package/actions/actions_derived/declareModel.type-test.ts +0 -70
  151. package/actions/actions_derived/getMessages.ts +0 -9
  152. package/actions/actions_derived/messages.test.ts +0 -88
  153. package/actions/actions_derived/messages.ts +0 -19
  154. package/actions/actions_derived/metatype.ts +0 -9
  155. package/actions/appendMessage.ts +0 -30
  156. package/actions/await.ts +0 -13
  157. package/actions/branch.ts +0 -108
  158. package/actions/catch.ts +0 -42
  159. package/actions/declareArg.ts +0 -14
  160. package/actions/disableTool.ts +0 -26
  161. package/actions/embed.ts +0 -28
  162. package/actions/emit.ts +0 -21
  163. package/actions/enableTool.ts +0 -75
  164. package/actions/enableTool.type-test.ts +0 -118
  165. package/actions/getScope.ts +0 -11
  166. package/actions/getSignal.ts +0 -10
  167. package/actions/getTools.ts +0 -11
  168. package/actions/infer.ts +0 -37
  169. package/actions/pushModel.ts +0 -32
  170. package/actions/removeMessage.ts +0 -22
  171. package/actions/removeModel.ts +0 -31
  172. package/actions/setMessages.ts +0 -66
  173. package/actions/throw.ts +0 -18
  174. package/cli/WriteHandler.ts +0 -35
  175. package/cli/cli_common.ts +0 -3
  176. package/cli/runExec.ts +0 -68
  177. package/dist/Action.d.ts +0 -15
  178. package/dist/Action.js +0 -13
  179. package/dist/Action.js.map +0 -1
  180. package/dist/Actor.d.ts +0 -14
  181. package/dist/Actor.js +0 -2
  182. package/dist/Actor.js.map +0 -1
  183. package/dist/Exec.d.ts +0 -27
  184. package/dist/Exec.js +0 -22
  185. package/dist/Exec.js.map +0 -1
  186. package/dist/L.d.ts +0 -26
  187. package/dist/L.js +0 -27
  188. package/dist/L.js.map +0 -1
  189. package/dist/LiminalAssertionError.d.ts +0 -3
  190. package/dist/LiminalAssertionError.js +0 -4
  191. package/dist/LiminalAssertionError.js.map +0 -1
  192. package/dist/LiminalConfig.d.ts +0 -6
  193. package/dist/LiminalConfig.js +0 -2
  194. package/dist/LiminalConfig.js.map +0 -1
  195. package/dist/PathLike.d.ts +0 -14
  196. package/dist/PathLike.js +0 -2
  197. package/dist/PathLike.js.map +0 -1
  198. package/dist/Scope.d.ts +0 -36
  199. package/dist/Scope.js +0 -90
  200. package/dist/Scope.js.map +0 -1
  201. package/dist/Spec.d.ts +0 -20
  202. package/dist/Spec.js +0 -2
  203. package/dist/Spec.js.map +0 -1
  204. package/dist/Tool.d.ts +0 -21
  205. package/dist/Tool.js +0 -32
  206. package/dist/Tool.js.map +0 -1
  207. package/dist/_.d.ts +0 -5
  208. package/dist/_.js +0 -7
  209. package/dist/_.js.map +0 -1
  210. package/dist/actions/abort.d.ts +0 -9
  211. package/dist/actions/abort.js +0 -15
  212. package/dist/actions/abort.js.map +0 -1
  213. package/dist/actions/actions_common/updateModels.d.ts +0 -3
  214. package/dist/actions/actions_common/updateModels.js +0 -17
  215. package/dist/actions/actions_common/updateModels.js.map +0 -1
  216. package/dist/actions/actions_derived/clear.d.ts +0 -8
  217. package/dist/actions/actions_derived/clear.js +0 -5
  218. package/dist/actions/actions_derived/clear.js.map +0 -1
  219. package/dist/actions/actions_derived/declareModel.d.ts +0 -5
  220. package/dist/actions/actions_derived/declareModel.js +0 -7
  221. package/dist/actions/actions_derived/declareModel.js.map +0 -1
  222. package/dist/actions/actions_derived/declareModel.test.js +0 -32
  223. package/dist/actions/actions_derived/declareModel.test.js.map +0 -1
  224. package/dist/actions/actions_derived/declareModel.type-test.js +0 -66
  225. package/dist/actions/actions_derived/declareModel.type-test.js.map +0 -1
  226. package/dist/actions/actions_derived/getMessages.d.ts +0 -3
  227. package/dist/actions/actions_derived/getMessages.js +0 -8
  228. package/dist/actions/actions_derived/getMessages.js.map +0 -1
  229. package/dist/actions/actions_derived/messages.d.ts +0 -6
  230. package/dist/actions/actions_derived/messages.js +0 -15
  231. package/dist/actions/actions_derived/messages.js.map +0 -1
  232. package/dist/actions/actions_derived/messages.test.d.ts +0 -1
  233. package/dist/actions/actions_derived/messages.test.js +0 -72
  234. package/dist/actions/actions_derived/messages.test.js.map +0 -1
  235. package/dist/actions/actions_derived/metatype.d.ts +0 -9
  236. package/dist/actions/actions_derived/metatype.js +0 -7
  237. package/dist/actions/actions_derived/metatype.js.map +0 -1
  238. package/dist/actions/appendMessage.d.ts +0 -10
  239. package/dist/actions/appendMessage.js +0 -20
  240. package/dist/actions/appendMessage.js.map +0 -1
  241. package/dist/actions/await.d.ts +0 -5
  242. package/dist/actions/await.js +0 -10
  243. package/dist/actions/await.js.map +0 -1
  244. package/dist/actions/branch.d.ts +0 -35
  245. package/dist/actions/branch.js +0 -40
  246. package/dist/actions/branch.js.map +0 -1
  247. package/dist/actions/catch.d.ts +0 -10
  248. package/dist/actions/catch.js +0 -27
  249. package/dist/actions/catch.js.map +0 -1
  250. package/dist/actions/declareArg.d.ts +0 -8
  251. package/dist/actions/declareArg.js +0 -10
  252. package/dist/actions/declareArg.js.map +0 -1
  253. package/dist/actions/disableTool.d.ts +0 -10
  254. package/dist/actions/disableTool.js +0 -17
  255. package/dist/actions/disableTool.js.map +0 -1
  256. package/dist/actions/embed.d.ts +0 -9
  257. package/dist/actions/embed.js +0 -23
  258. package/dist/actions/embed.js.map +0 -1
  259. package/dist/actions/emit.d.ts +0 -9
  260. package/dist/actions/emit.js +0 -14
  261. package/dist/actions/emit.js.map +0 -1
  262. package/dist/actions/enableTool.d.ts +0 -20
  263. package/dist/actions/enableTool.js +0 -26
  264. package/dist/actions/enableTool.js.map +0 -1
  265. package/dist/actions/enableTool.type-test.d.ts +0 -1
  266. package/dist/actions/enableTool.type-test.js +0 -30
  267. package/dist/actions/enableTool.type-test.js.map +0 -1
  268. package/dist/actions/getScope.d.ts +0 -5
  269. package/dist/actions/getScope.js +0 -8
  270. package/dist/actions/getScope.js.map +0 -1
  271. package/dist/actions/getSignal.d.ts +0 -4
  272. package/dist/actions/getSignal.js +0 -8
  273. package/dist/actions/getSignal.js.map +0 -1
  274. package/dist/actions/getTools.d.ts +0 -5
  275. package/dist/actions/getTools.js +0 -8
  276. package/dist/actions/getTools.js.map +0 -1
  277. package/dist/actions/infer.d.ts +0 -13
  278. package/dist/actions/infer.js +0 -21
  279. package/dist/actions/infer.js.map +0 -1
  280. package/dist/actions/pushModel.d.ts +0 -11
  281. package/dist/actions/pushModel.js +0 -21
  282. package/dist/actions/pushModel.js.map +0 -1
  283. package/dist/actions/removeMessage.d.ts +0 -9
  284. package/dist/actions/removeMessage.js +0 -17
  285. package/dist/actions/removeMessage.js.map +0 -1
  286. package/dist/actions/removeModel.d.ts +0 -10
  287. package/dist/actions/removeModel.js +0 -20
  288. package/dist/actions/removeModel.js.map +0 -1
  289. package/dist/actions/setMessages.d.ts +0 -16
  290. package/dist/actions/setMessages.js +0 -31
  291. package/dist/actions/setMessages.js.map +0 -1
  292. package/dist/actions/throw.d.ts +0 -9
  293. package/dist/actions/throw.js +0 -13
  294. package/dist/actions/throw.js.map +0 -1
  295. package/dist/cli/WriteHandler.d.ts +0 -9
  296. package/dist/cli/WriteHandler.js +0 -24
  297. package/dist/cli/WriteHandler.js.map +0 -1
  298. package/dist/cli/cli_common.d.ts +0 -3
  299. package/dist/cli/cli_common.js +0 -2
  300. package/dist/cli/cli_common.js.map +0 -1
  301. package/dist/cli/runExec.d.ts +0 -2
  302. package/dist/cli/runExec.js +0 -69
  303. package/dist/cli/runExec.js.map +0 -1
  304. package/dist/events/Aborted.d.ts +0 -4
  305. package/dist/events/Aborted.js +0 -2
  306. package/dist/events/Aborted.js.map +0 -1
  307. package/dist/events/Embedded.d.ts +0 -5
  308. package/dist/events/Embedded.js +0 -2
  309. package/dist/events/Embedded.js.map +0 -1
  310. package/dist/events/EmbeddingRequested.d.ts +0 -4
  311. package/dist/events/EmbeddingRequested.js +0 -2
  312. package/dist/events/EmbeddingRequested.js.map +0 -1
  313. package/dist/events/Emitted.d.ts +0 -4
  314. package/dist/events/Emitted.js +0 -2
  315. package/dist/events/Emitted.js.map +0 -1
  316. package/dist/events/EventBase.d.ts +0 -3
  317. package/dist/events/EventBase.js +0 -2
  318. package/dist/events/EventBase.js.map +0 -1
  319. package/dist/events/EventHandler.d.ts +0 -2
  320. package/dist/events/EventHandler.js +0 -2
  321. package/dist/events/EventHandler.js.map +0 -1
  322. package/dist/events/EventResolved.d.ts +0 -19
  323. package/dist/events/EventResolved.js +0 -2
  324. package/dist/events/EventResolved.js.map +0 -1
  325. package/dist/events/Forked.d.ts +0 -3
  326. package/dist/events/Forked.js +0 -2
  327. package/dist/events/Forked.js.map +0 -1
  328. package/dist/events/InferenceRequested.d.ts +0 -3
  329. package/dist/events/InferenceRequested.js +0 -2
  330. package/dist/events/InferenceRequested.js.map +0 -1
  331. package/dist/events/Inferred.d.ts +0 -5
  332. package/dist/events/Inferred.js +0 -2
  333. package/dist/events/Inferred.js.map +0 -1
  334. package/dist/events/LEvent.d.ts +0 -18
  335. package/dist/events/LEvent.js +0 -2
  336. package/dist/events/LEvent.js.map +0 -1
  337. package/dist/events/MessageAppended.d.ts +0 -5
  338. package/dist/events/MessageAppended.js +0 -2
  339. package/dist/events/MessageAppended.js.map +0 -1
  340. package/dist/events/MessageRemoved.d.ts +0 -5
  341. package/dist/events/MessageRemoved.js +0 -2
  342. package/dist/events/MessageRemoved.js.map +0 -1
  343. package/dist/events/MessagesSet.d.ts +0 -5
  344. package/dist/events/MessagesSet.js +0 -2
  345. package/dist/events/MessagesSet.js.map +0 -1
  346. package/dist/events/ModelPushed.d.ts +0 -7
  347. package/dist/events/ModelPushed.js +0 -2
  348. package/dist/events/ModelPushed.js.map +0 -1
  349. package/dist/events/ModelRemoved.d.ts +0 -7
  350. package/dist/events/ModelRemoved.js +0 -2
  351. package/dist/events/ModelRemoved.js.map +0 -1
  352. package/dist/events/Returned.d.ts +0 -4
  353. package/dist/events/Returned.js +0 -2
  354. package/dist/events/Returned.js.map +0 -1
  355. package/dist/events/Threw.d.ts +0 -4
  356. package/dist/events/Threw.js +0 -2
  357. package/dist/events/Threw.js.map +0 -1
  358. package/dist/events/ToolCalled.d.ts +0 -6
  359. package/dist/events/ToolCalled.js +0 -2
  360. package/dist/events/ToolCalled.js.map +0 -1
  361. package/dist/events/ToolDisabled.d.ts +0 -5
  362. package/dist/events/ToolDisabled.js +0 -2
  363. package/dist/events/ToolDisabled.js.map +0 -1
  364. package/dist/events/ToolEnabled.d.ts +0 -7
  365. package/dist/events/ToolEnabled.js +0 -2
  366. package/dist/events/ToolEnabled.js.map +0 -1
  367. package/dist/events/isScopeChildEvent.d.ts +0 -6
  368. package/dist/events/isScopeChildEvent.js +0 -9
  369. package/dist/events/isScopeChildEvent.js.map +0 -1
  370. package/dist/events/isScopeDescendantEvent.d.ts +0 -14
  371. package/dist/events/isScopeDescendantEvent.js +0 -12
  372. package/dist/events/isScopeDescendantEvent.js.map +0 -1
  373. package/dist/testing/ActorAssertions.d.ts +0 -9
  374. package/dist/testing/ActorAssertions.js +0 -6
  375. package/dist/testing/ActorAssertions.js.map +0 -1
  376. package/dist/testing/TestEmbeddingModel.d.ts +0 -6
  377. package/dist/testing/TestEmbeddingModel.js +0 -10
  378. package/dist/testing/TestEmbeddingModel.js.map +0 -1
  379. package/dist/testing/TestLanguageModel.d.ts +0 -8
  380. package/dist/testing/TestLanguageModel.js +0 -21
  381. package/dist/testing/TestLanguageModel.js.map +0 -1
  382. package/dist/testing/index.d.ts +0 -4
  383. package/dist/testing/index.js +0 -5
  384. package/dist/testing/index.js.map +0 -1
  385. package/dist/testing/takeFirstAction.d.ts +0 -3
  386. package/dist/testing/takeFirstAction.js +0 -6
  387. package/dist/testing/takeFirstAction.js.map +0 -1
  388. package/dist/types/AssertDiagnostics.d.ts +0 -18
  389. package/dist/types/AssertDiagnostics.js +0 -152
  390. package/dist/types/AssertDiagnostics.js.map +0 -1
  391. package/dist/types/JSONRootType.d.ts +0 -6
  392. package/dist/types/JSONRootType.js +0 -2
  393. package/dist/types/JSONRootType.js.map +0 -1
  394. package/dist/types/JSONType.d.ts +0 -16
  395. package/dist/types/JSONType.js +0 -2
  396. package/dist/types/JSONType.js.map +0 -1
  397. package/dist/types/JSONTypeBase.d.ts +0 -3
  398. package/dist/types/JSONTypeBase.js +0 -2
  399. package/dist/types/JSONTypeBase.js.map +0 -1
  400. package/dist/types/Metatype/MetatypeDescriptor.d.ts +0 -41
  401. package/dist/types/Metatype/MetatypeDescriptor.js +0 -38
  402. package/dist/types/Metatype/MetatypeDescriptor.js.map +0 -1
  403. package/dist/types/Metatype/fromMetatypeDescriptor.d.ts +0 -6
  404. package/dist/types/Metatype/fromMetatypeDescriptor.js +0 -43
  405. package/dist/types/Metatype/fromMetatypeDescriptor.js.map +0 -1
  406. package/dist/types/Type.d.ts +0 -30
  407. package/dist/types/Type.js +0 -5
  408. package/dist/types/Type.js.map +0 -1
  409. package/dist/types/TypeContext.d.ts +0 -7
  410. package/dist/types/TypeContext.js +0 -17
  411. package/dist/types/TypeContext.js.map +0 -1
  412. package/dist/types/TypeLike.d.ts +0 -23
  413. package/dist/types/TypeLike.js +0 -23
  414. package/dist/types/TypeLike.js.map +0 -1
  415. package/dist/types/TypeVisitor.d.ts +0 -14
  416. package/dist/types/TypeVisitor.js +0 -12
  417. package/dist/types/TypeVisitor.js.map +0 -1
  418. package/dist/types/array.d.ts +0 -10
  419. package/dist/types/array.js +0 -9
  420. package/dist/types/array.js.map +0 -1
  421. package/dist/types/boolean.d.ts +0 -6
  422. package/dist/types/boolean.js +0 -3
  423. package/dist/types/boolean.js.map +0 -1
  424. package/dist/types/const.d.ts +0 -8
  425. package/dist/types/const.js +0 -7
  426. package/dist/types/const.js.map +0 -1
  427. package/dist/types/declareType.d.ts +0 -2
  428. package/dist/types/declareType.js +0 -57
  429. package/dist/types/declareType.js.map +0 -1
  430. package/dist/types/enum.d.ts +0 -8
  431. package/dist/types/enum.js +0 -7
  432. package/dist/types/enum.js.map +0 -1
  433. package/dist/types/factories.d.ts +0 -8
  434. package/dist/types/factories.js +0 -9
  435. package/dist/types/factories.js.map +0 -1
  436. package/dist/types/index.d.ts +0 -2
  437. package/dist/types/index.js +0 -3
  438. package/dist/types/index.js.map +0 -1
  439. package/dist/types/integer.d.ts +0 -6
  440. package/dist/types/integer.js +0 -3
  441. package/dist/types/integer.js.map +0 -1
  442. package/dist/types/intrinsics.d.ts +0 -11
  443. package/dist/types/intrinsics.js +0 -12
  444. package/dist/types/intrinsics.js.map +0 -1
  445. package/dist/types/match.d.ts +0 -3
  446. package/dist/types/match.js +0 -11
  447. package/dist/types/match.js.map +0 -1
  448. package/dist/types/non_factories.d.ts +0 -21
  449. package/dist/types/non_factories.js +0 -9
  450. package/dist/types/non_factories.js.map +0 -1
  451. package/dist/types/null.d.ts +0 -7
  452. package/dist/types/null.js +0 -4
  453. package/dist/types/null.js.map +0 -1
  454. package/dist/types/number.d.ts +0 -6
  455. package/dist/types/number.js +0 -3
  456. package/dist/types/number.js.map +0 -1
  457. package/dist/types/object.d.ts +0 -16
  458. package/dist/types/object.js +0 -10
  459. package/dist/types/object.js.map +0 -1
  460. package/dist/types/ref.d.ts +0 -7
  461. package/dist/types/ref.js +0 -5
  462. package/dist/types/ref.js.map +0 -1
  463. package/dist/types/string.d.ts +0 -6
  464. package/dist/types/string.js +0 -3
  465. package/dist/types/string.js.map +0 -1
  466. package/dist/types/toJSON.d.ts +0 -5
  467. package/dist/types/toJSON.js +0 -97
  468. package/dist/types/toJSON.js.map +0 -1
  469. package/dist/types/type_common.d.ts +0 -10
  470. package/dist/types/type_common.js +0 -12
  471. package/dist/types/type_common.js.map +0 -1
  472. package/dist/types/types_derived/option.d.ts +0 -5
  473. package/dist/types/types_derived/option.js +0 -6
  474. package/dist/types/types_derived/option.js.map +0 -1
  475. package/dist/types/types_derived/taggedUnion.d.ts +0 -19
  476. package/dist/types/types_derived/taggedUnion.js +0 -8
  477. package/dist/types/types_derived/taggedUnion.js.map +0 -1
  478. package/dist/types/types_derived/wrapper.d.ts +0 -8
  479. package/dist/types/types_derived/wrapper.js +0 -5
  480. package/dist/types/types_derived/wrapper.js.map +0 -1
  481. package/dist/types/union.d.ts +0 -9
  482. package/dist/types/union.js +0 -9
  483. package/dist/types/union.js.map +0 -1
  484. package/dist/util/ArrayOfLength.d.ts +0 -1
  485. package/dist/util/ArrayOfLength.js +0 -2
  486. package/dist/util/ArrayOfLength.js.map +0 -1
  487. package/dist/util/DeferredOr.d.ts +0 -1
  488. package/dist/util/DeferredOr.js +0 -2
  489. package/dist/util/DeferredOr.js.map +0 -1
  490. package/dist/util/EnsureNarrow.d.ts +0 -2
  491. package/dist/util/EnsureNarrow.js +0 -2
  492. package/dist/util/EnsureNarrow.js.map +0 -1
  493. package/dist/util/EnsureRecord.d.ts +0 -2
  494. package/dist/util/EnsureRecord.js +0 -2
  495. package/dist/util/EnsureRecord.js.map +0 -1
  496. package/dist/util/Expand.d.ts +0 -3
  497. package/dist/util/Expand.js +0 -2
  498. package/dist/util/Expand.js.map +0 -1
  499. package/dist/util/Falsy.d.ts +0 -1
  500. package/dist/util/Falsy.js +0 -2
  501. package/dist/util/Falsy.js.map +0 -1
  502. package/dist/util/FromEntries.d.ts +0 -3
  503. package/dist/util/FromEntries.js +0 -2
  504. package/dist/util/FromEntries.js.map +0 -1
  505. package/dist/util/IteratorLike.d.ts +0 -1
  506. package/dist/util/IteratorLike.js +0 -2
  507. package/dist/util/IteratorLike.js.map +0 -1
  508. package/dist/util/JSONEntry.d.ts +0 -2
  509. package/dist/util/JSONEntry.js +0 -2
  510. package/dist/util/JSONEntry.js.map +0 -1
  511. package/dist/util/JSONKey.d.ts +0 -1
  512. package/dist/util/JSONKey.js +0 -2
  513. package/dist/util/JSONKey.js.map +0 -1
  514. package/dist/util/JSONObject.d.ts +0 -5
  515. package/dist/util/JSONObject.js +0 -2
  516. package/dist/util/JSONObject.js.map +0 -1
  517. package/dist/util/JSONSchemaMemo.d.ts +0 -2
  518. package/dist/util/JSONSchemaMemo.js +0 -13
  519. package/dist/util/JSONSchemaMemo.js.map +0 -1
  520. package/dist/util/JSONValue.d.ts +0 -2
  521. package/dist/util/JSONValue.js +0 -2
  522. package/dist/util/JSONValue.js.map +0 -1
  523. package/dist/util/PromiseOr.d.ts +0 -1
  524. package/dist/util/PromiseOr.js +0 -2
  525. package/dist/util/PromiseOr.js.map +0 -1
  526. package/dist/util/Result.d.ts +0 -7
  527. package/dist/util/Result.js +0 -2
  528. package/dist/util/Result.js.map +0 -1
  529. package/dist/util/Taggable.d.ts +0 -9
  530. package/dist/util/Taggable.js +0 -8
  531. package/dist/util/Taggable.js.map +0 -1
  532. package/dist/util/TupleToRecord.d.ts +0 -5
  533. package/dist/util/TupleToRecord.js +0 -2
  534. package/dist/util/TupleToRecord.js.map +0 -1
  535. package/dist/util/assert.d.ts +0 -1
  536. package/dist/util/assert.js +0 -7
  537. package/dist/util/assert.js.map +0 -1
  538. package/dist/util/dedent.d.ts +0 -1
  539. package/dist/util/dedent.js +0 -5
  540. package/dist/util/dedent.js.map +0 -1
  541. package/dist/util/fixTemplateStrings.d.ts +0 -11
  542. package/dist/util/fixTemplateStrings.js +0 -83
  543. package/dist/util/fixTemplateStrings.js.map +0 -1
  544. package/dist/util/fixTemplateStrings.test.d.ts +0 -1
  545. package/dist/util/fixTemplateStrings.test.js +0 -221
  546. package/dist/util/fixTemplateStrings.test.js.map +0 -1
  547. package/dist/util/isAsyncIterator.d.ts +0 -1
  548. package/dist/util/isAsyncIterator.js +0 -7
  549. package/dist/util/isAsyncIterator.js.map +0 -1
  550. package/dist/util/isIterator.d.ts +0 -1
  551. package/dist/util/isIterator.js +0 -7
  552. package/dist/util/isIterator.js.map +0 -1
  553. package/dist/util/isJSONValue.d.ts +0 -2
  554. package/dist/util/isJSONValue.js +0 -16
  555. package/dist/util/isJSONValue.js.map +0 -1
  556. package/dist/util/isPropertyKey.d.ts +0 -1
  557. package/dist/util/isPropertyKey.js +0 -4
  558. package/dist/util/isPropertyKey.js.map +0 -1
  559. package/dist/util/isTemplateStringsArray.d.ts +0 -1
  560. package/dist/util/isTemplateStringsArray.js +0 -4
  561. package/dist/util/isTemplateStringsArray.js.map +0 -1
  562. package/dist/util/jsonEquals.d.ts +0 -2
  563. package/dist/util/jsonEquals.js +0 -33
  564. package/dist/util/jsonEquals.js.map +0 -1
  565. package/dist/util/nullaryMemo.d.ts +0 -1
  566. package/dist/util/nullaryMemo.js +0 -12
  567. package/dist/util/nullaryMemo.js.map +0 -1
  568. package/dist/util/unimplemented.d.ts +0 -1
  569. package/dist/util/unimplemented.js +0 -5
  570. package/dist/util/unimplemented.js.map +0 -1
  571. package/dist/util/unreachable.d.ts +0 -1
  572. package/dist/util/unreachable.js +0 -5
  573. package/dist/util/unreachable.js.map +0 -1
  574. package/dist/util/unwrapDeferred.d.ts +0 -2
  575. package/dist/util/unwrapDeferred.js +0 -4
  576. package/dist/util/unwrapDeferred.js.map +0 -1
  577. package/dist/util/util.d.ts +0 -10
  578. package/dist/util/util.js +0 -11
  579. package/dist/util/util.js.map +0 -1
  580. package/events/Aborted.ts +0 -5
  581. package/events/Embedded.ts +0 -6
  582. package/events/EmbeddingRequested.ts +0 -5
  583. package/events/Emitted.ts +0 -5
  584. package/events/EventBase.ts +0 -3
  585. package/events/EventHandler.ts +0 -3
  586. package/events/EventResolved.ts +0 -30
  587. package/events/Forked.ts +0 -3
  588. package/events/InferenceRequested.ts +0 -3
  589. package/events/Inferred.ts +0 -6
  590. package/events/LEvent.ts +0 -36
  591. package/events/MessageAppended.ts +0 -6
  592. package/events/MessageRemoved.ts +0 -6
  593. package/events/MessagesSet.ts +0 -6
  594. package/events/ModelPushed.ts +0 -10
  595. package/events/ModelRemoved.ts +0 -10
  596. package/events/Returned.ts +0 -5
  597. package/events/Threw.ts +0 -5
  598. package/events/ToolCalled.ts +0 -7
  599. package/events/ToolDisabled.ts +0 -6
  600. package/events/ToolEnabled.ts +0 -8
  601. package/events/isScopeChildEvent.ts +0 -15
  602. package/events/isScopeDescendantEvent.ts +0 -30
  603. package/testing/ActorAssertions.ts +0 -19
  604. package/testing/TestEmbeddingModel.ts +0 -18
  605. package/testing/TestLanguageModel.ts +0 -32
  606. package/testing/index.ts +0 -4
  607. package/testing/takeFirstAction.ts +0 -8
  608. package/types/AssertDiagnostics.ts +0 -183
  609. package/types/JSONRootType.ts +0 -8
  610. package/types/JSONType.ts +0 -27
  611. package/types/JSONTypeBase.ts +0 -3
  612. package/types/Metatype/MetatypeDescriptor.ts +0 -80
  613. package/types/Metatype/fromMetatypeDescriptor.ts +0 -52
  614. package/types/Type.ts +0 -46
  615. package/types/TypeContext.ts +0 -19
  616. package/types/TypeLike.ts +0 -60
  617. package/types/TypeVisitor.ts +0 -49
  618. package/types/array.ts +0 -20
  619. package/types/boolean.ts +0 -9
  620. package/types/const.ts +0 -17
  621. package/types/declareType.ts +0 -71
  622. package/types/enum.ts +0 -14
  623. package/types/factories.ts +0 -8
  624. package/types/index.ts +0 -2
  625. package/types/integer.ts +0 -9
  626. package/types/intrinsics.ts +0 -11
  627. package/types/match.ts +0 -13
  628. package/types/non_factories.ts +0 -26
  629. package/types/null.ts +0 -10
  630. package/types/number.ts +0 -9
  631. package/types/object.ts +0 -27
  632. package/types/ref.ts +0 -12
  633. package/types/string.ts +0 -9
  634. package/types/toJSON.ts +0 -111
  635. package/types/type_common.ts +0 -21
  636. package/types/types_derived/option.ts +0 -10
  637. package/types/types_derived/taggedUnion.ts +0 -30
  638. package/types/types_derived/wrapper.ts +0 -10
  639. package/types/union.ts +0 -19
  640. package/util/ArrayOfLength.ts +0 -5
  641. package/util/DeferredOr.ts +0 -1
  642. package/util/EnsureNarrow.ts +0 -5
  643. package/util/EnsureRecord.ts +0 -3
  644. package/util/Expand.ts +0 -1
  645. package/util/Falsy.ts +0 -1
  646. package/util/FromEntries.ts +0 -3
  647. package/util/IteratorLike.ts +0 -1
  648. package/util/JSONEntry.ts +0 -3
  649. package/util/JSONKey.ts +0 -1
  650. package/util/JSONObject.ts +0 -6
  651. package/util/JSONSchemaMemo.ts +0 -15
  652. package/util/JSONValue.ts +0 -3
  653. package/util/PromiseOr.ts +0 -1
  654. package/util/Result.ts +0 -7
  655. package/util/Taggable.ts +0 -18
  656. package/util/TupleToRecord.ts +0 -5
  657. package/util/assert.ts +0 -7
  658. package/util/dedent.ts +0 -5
  659. package/util/fixTemplateStrings.test.ts +0 -250
  660. package/util/fixTemplateStrings.ts +0 -99
  661. package/util/isAsyncIterator.ts +0 -6
  662. package/util/isIterator.ts +0 -6
  663. package/util/isJSONValue.ts +0 -20
  664. package/util/isPropertyKey.ts +0 -3
  665. package/util/isTemplateStringsArray.ts +0 -3
  666. package/util/jsonEquals.ts +0 -41
  667. package/util/nullaryMemo.ts +0 -11
  668. package/util/unimplemented.ts +0 -5
  669. package/util/unreachable.ts +0 -5
  670. package/util/unwrapDeferred.ts +0 -5
  671. package/util/util.ts +0 -10
  672. /package/dist/{actions/actions_derived/declareModel.test.d.ts → Handler.d.ts} +0 -0
  673. /package/dist/{actions/actions_derived/declareModel.type-test.d.ts → L/namespace.d.ts} +0 -0
package/Agent.ts ADDED
@@ -0,0 +1,28 @@
1
+ import { Fiber, type FiberInfo } from "./Fiber.ts"
2
+ import type { Rune, RuneKey } from "./Rune.ts"
3
+ import type { Runic } from "./Runic.ts"
4
+
5
+ export interface Agent<out T, out E> extends PromiseLike<T> {
6
+ T: T
7
+ E: E
8
+ }
9
+
10
+ export function Agent<Y extends Rune, T>(runic: Runic<Y, T>, config?: AgentConfig<Y, T>): Agent<T, Rune.E<Y>> {
11
+ return {
12
+ then(onfulfilled, onrejected) {
13
+ const root = Fiber({
14
+ globals: {
15
+ handler: config?.handler ?? (() => {}),
16
+ },
17
+ runic,
18
+ signal: config?.signal,
19
+ })
20
+ return root.run().then(onfulfilled, onrejected)
21
+ },
22
+ } satisfies Omit<Agent<T, Rune.E<Y>>, "E" | "T"> as never
23
+ }
24
+
25
+ export interface AgentConfig<Y extends Rune, _T> {
26
+ handler: (event: Y[RuneKey], info: FiberInfo) => void
27
+ signal?: AbortSignal
28
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # liminal
2
2
 
3
+ ## 0.5.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 2d3a717: Complete rewrite of Liminal. Includes new packages for various integrations.
8
+ - Updated dependencies [2d3a717]
9
+ - Updated dependencies [ff04b9f]
10
+ - liminal-schema@0.0.1
11
+ - liminal-util@0.0.1
12
+
13
+ ## 0.5.2
14
+
15
+ ### Patch Changes
16
+
17
+ - de74823: Various API changes, such as infer as a callable object (the object of which implements Symbol.iterator and yields the actual action). Introduced initial "section" action. Also created an adapter for Ollama.
18
+
3
19
  ## 0.5.1
4
20
 
5
21
  ### Patch Changes
package/Fiber.ts ADDED
@@ -0,0 +1,117 @@
1
+ import type { Globals } from "./Globals.ts"
2
+ import { type FiberCreated, type FiberResolved, type FiberStarted, LEventTag } from "./LEvent.ts"
3
+ import type { Rune } from "./Rune.ts"
4
+ import { Runic } from "./Runic.ts"
5
+ import { DefaultStateMap } from "./state/DefaultStateMap.ts"
6
+ import { StateMap } from "./state/StateMap.ts"
7
+
8
+ export interface Fiber<out T = any> {
9
+ T: T
10
+ parent: Fiber<any> | undefined
11
+ status: FiberStatus<T>
12
+ fiberId: number
13
+ state: StateMap
14
+ globals: Globals
15
+ run(this: this): Promise<T>
16
+ handler<E>(event: E): void
17
+ }
18
+
19
+ export type FiberStatus<T> = {
20
+ type: "untouched"
21
+ } | {
22
+ type: "pending"
23
+ promise: Promise<T>
24
+ } | {
25
+ type: "resolved"
26
+ value: T
27
+ } | {
28
+ type: "rejected"
29
+ reason?: unknown
30
+ }
31
+
32
+ export interface FiberInfo {
33
+ fiber: number
34
+ timestamp: number
35
+ }
36
+
37
+ let nextFiberId = 0
38
+
39
+ export interface FiberConfig<T> {
40
+ parent?: Fiber<any>
41
+ globals: Globals
42
+ runic: Runic<Rune, T>
43
+ state?: StateMap | undefined
44
+ signal?: AbortSignal | undefined
45
+ }
46
+
47
+ export function Fiber<T>(config: FiberConfig<T>): Fiber<T> {
48
+ const fiber = {
49
+ state: config.state ?? new DefaultStateMap(),
50
+ globals: config.globals,
51
+ parent: config.parent,
52
+ status: { type: "untouched" },
53
+ fiberId: nextFiberId++,
54
+ run,
55
+ handler,
56
+ } satisfies Omit<Fiber<T>, "T"> as Fiber<T>
57
+ fiber.handler<FiberCreated>({
58
+ [LEventTag]: "fiber_created",
59
+ })
60
+ return fiber
61
+
62
+ function handler<E>(this: Fiber<T>, event: E): void {
63
+ config.globals.handler(event, {
64
+ fiber: this.fiberId,
65
+ timestamp: Date.now(),
66
+ })
67
+ }
68
+
69
+ async function run(this: Fiber<T>): Promise<T> {
70
+ if (this.status.type === "pending") {
71
+ return await this.status.promise
72
+ } else if (this.status.type === "resolved") {
73
+ return this.status.value
74
+ } else if (this.status.type === "rejected") {
75
+ throw this.status.reason
76
+ }
77
+ this.handler<FiberStarted>({
78
+ [LEventTag]: "fiber_started",
79
+ })
80
+ const { promise, resolve, reject } = Promise.withResolvers<T>()
81
+ if (config.signal) {
82
+ if (config.signal.aborted) {
83
+ reject(config.signal.reason)
84
+ return await promise
85
+ } else {
86
+ config.signal.addEventListener("abort", () => {
87
+ reject(config.signal?.reason)
88
+ })
89
+ }
90
+ }
91
+ this.status = {
92
+ type: "pending",
93
+ promise,
94
+ }
95
+ queueMicrotask(async () => {
96
+ const iterator = Runic.unwrap(config.runic)
97
+ let nextArg: any
98
+ try {
99
+ let current = await iterator.next(nextArg)
100
+ while (!current.done) {
101
+ const rune = current.value
102
+ const nextArg = await rune(this)
103
+ current = await iterator.next(nextArg)
104
+ }
105
+ const { value } = current
106
+ this.handler<FiberResolved>({
107
+ [LEventTag]: "fiber_resolved",
108
+ value,
109
+ })
110
+ resolve(value)
111
+ } catch (reason: unknown) {
112
+ reject(reason)
113
+ }
114
+ })
115
+ return await promise
116
+ }
117
+ }
package/Globals.ts ADDED
@@ -0,0 +1,10 @@
1
+ export interface Globals {
2
+ handler<E = any>(event: E, info: EventInfo): void
3
+ }
4
+
5
+ export interface EventInfo {
6
+ fiber: number
7
+ timestamp: number
8
+ // group
9
+ // depth
10
+ }
package/Handler.ts ADDED
File without changes
package/L/L.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from "liminal-schema/factories"
2
+ export * from "./_infer.ts"
3
+ export * from "./_message.ts"
4
+ export * from "./assistant.ts"
5
+ export * from "./branch.ts"
6
+ export * from "./emit.ts"
7
+ export * from "./fork.ts"
8
+ export * from "./join.ts"
9
+ export * from "./model.ts"
10
+ export * from "./self.ts"
11
+ export * from "./state.ts"
12
+ export * from "./system.ts"
13
+ export * from "./user.ts"
package/L/_infer.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { SchemaRoot } from "liminal-schema"
2
+ import { assert } from "liminal-util"
3
+ import { type InferenceRequested, type Inferred, type LEvent, LEventTag } from "../LEvent.ts"
4
+ import type { Rune } from "../Rune.ts"
5
+ import { Counter } from "../state/Counter.ts"
6
+ import { MessageRegistry } from "../state/MessageRegistry.ts"
7
+ import { ModelRegistry } from "../state/ModelRegistry.ts"
8
+ import { emit } from "./emit.ts"
9
+ import { rune } from "./rune.ts"
10
+ import { state } from "./state.ts"
11
+
12
+ export function* _infer(schema?: SchemaRoot): Generator<Rune<LEvent>, string> {
13
+ const [modelRegistry, { messages }, counter] = yield* state(
14
+ ModelRegistry,
15
+ MessageRegistry,
16
+ InferenceRequestCounter,
17
+ )
18
+ const model = modelRegistry.peek()
19
+ assert(model)
20
+ const requestId = counter.next()
21
+ yield* emit<InferenceRequested>({
22
+ [LEventTag]: "inference_requested",
23
+ ...schema && { schema },
24
+ requestId,
25
+ })
26
+ const inference = yield* rune(() => model.resolve(messages, schema))
27
+ yield* emit<Inferred>({
28
+ [LEventTag]: "inferred",
29
+ inference,
30
+ requestId,
31
+ })
32
+ return inference
33
+ }
34
+
35
+ class InferenceRequestCounter extends Counter {}
package/L/_message.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { type LEvent, LEventTag, type MessageAppended } from "../LEvent.ts"
2
+ import type { ContentPart, Message, MessageRole } from "../Message.ts"
3
+ import type { Rune } from "../Rune.ts"
4
+ import { MessageRegistry } from "../state/MessageRegistry.ts"
5
+ import { emit } from "./emit.ts"
6
+ import { state } from "./state.ts"
7
+
8
+ export interface _message extends Generator<Rune<LEvent>, void> {}
9
+
10
+ export function* _message(role: MessageRole, content: Array<ContentPart>): _message {
11
+ const [messageRegistry] = yield* state(MessageRegistry)
12
+ const message: Message = { role, content }
13
+ yield* emit<MessageAppended>({
14
+ [LEventTag]: "message_appended",
15
+ message,
16
+ })
17
+ messageRegistry.append(message)
18
+ }
package/L/all.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Fiber } from "../Fiber.ts"
2
+ import type { Rune } from "../Rune.ts"
3
+ import { rune } from "./rune.ts"
4
+
5
+ export interface all<A extends Array<any>> extends Generator<Rune<never>, Fiber<A>> {}
6
+
7
+ export function* all<XA extends Array<Fiber>>(
8
+ ...fibers: XA
9
+ ): all<{ [I in keyof XA]: XA[I]["T"] }> {
10
+ return (yield* rune((_fiber) => Promise.all(fibers.map((fiber) => fiber.run())))) as never
11
+ }
package/L/assistant.ts ADDED
@@ -0,0 +1,34 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec"
2
+ import { type LType, toJSONSchema } from "liminal-schema"
3
+ import type { json } from "liminal-util"
4
+ import { LiminalAssertionError } from "liminal-util"
5
+ import type { LEvent } from "../LEvent.ts"
6
+ import type { Rune } from "../Rune.ts"
7
+ import { _infer } from "./_infer.ts"
8
+ import { _message } from "./_message.ts"
9
+ import { rune } from "./rune.ts"
10
+
11
+ export interface assistant extends Iterable<Rune<LEvent>, string> {
12
+ <T>(schema: LType<T>): Generator<Rune<LEvent>, T>
13
+ }
14
+
15
+ export const assistant: assistant = Object.assign(
16
+ function*<T>(type: LType<T>): Generator<Rune<LEvent>, T> {
17
+ const schema = toJSONSchema(type)
18
+ const inference = yield* _infer(schema)
19
+ yield* _message("assistant", [{ part: inference }])
20
+ const input = JSON.parse(inference)
21
+ const result = yield* rune(() => (type as StandardSchemaV1<json.ValueObject, T>)["~standard"].validate(input))
22
+ if (result.issues) {
23
+ throw new LiminalAssertionError(JSON.stringify(result.issues, null, 2))
24
+ }
25
+ return result.value
26
+ },
27
+ {
28
+ *[Symbol.iterator]() {
29
+ const inference = yield* _infer()
30
+ yield* _message("assistant", [{ part: inference }])
31
+ return inference
32
+ },
33
+ },
34
+ )
package/L/branch.ts ADDED
@@ -0,0 +1,45 @@
1
+ import { Fiber } from "../Fiber.ts"
2
+ import { type Rune } from "../Rune.ts"
3
+ import type { Runic } from "../Runic.ts"
4
+ import { all } from "./all.ts"
5
+ import { fork } from "./fork.ts"
6
+ import { join } from "./join.ts"
7
+ import { self } from "./self.ts"
8
+
9
+ export interface branch<Y extends Rune, T> extends Generator<Y, T> {}
10
+
11
+ export function branch<X extends Runic>(runic: X): branch<Runic.Y<X>, Runic.T<X>>
12
+ export function branch<XA extends Array<Runic>>(
13
+ runics: XA,
14
+ ): branch<Runic.Y<XA[number]> | Rune<never>, { [I in keyof XA]: Runic.T<XA[I]> }>
15
+ export function branch<XR extends Record<keyof any, Runic>>(
16
+ runics: XR,
17
+ ): branch<Runic.Y<XR[keyof XR]> | Rune<never>, { [K in keyof XR]: Runic.T<XR[K]> }>
18
+ export function* branch(value: Runic | Array<Runic> | Record<keyof any, Runic>): branch<Rune, any> {
19
+ const parent = yield* self
20
+ const { globals, state } = parent
21
+ if (Array.isArray(value)) {
22
+ const fibers = value.map((runic) =>
23
+ Fiber({
24
+ globals,
25
+ parent,
26
+ runic,
27
+ state: state.clone(),
28
+ })
29
+ )
30
+ return yield* join(yield* all(...fibers))
31
+ } else if (typeof value === "object") {
32
+ const fibers = Object.values(value).map((runic) =>
33
+ Fiber({
34
+ globals,
35
+ parent,
36
+ runic,
37
+ state: state.clone(),
38
+ })
39
+ )
40
+ const resolved = yield* join(yield* all(...fibers))
41
+ return Object.fromEntries(Object.keys(value).map((key, i) => [key, resolved[i]]))
42
+ }
43
+ const fiber = yield* fork(typeof value === "function" ? value() : value, state.clone())
44
+ return yield* join(fiber)
45
+ }
package/L/emit.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { EnsureNarrow } from "liminal-util"
2
+ import type { Rune } from "../Rune.ts"
3
+ import { rune } from "./rune.ts"
4
+
5
+ export interface emit<E> extends Generator<Rune<E>, void> {}
6
+
7
+ export function* emit<const E>(event: EnsureNarrow<E>): emit<E> {
8
+ yield* rune((fiber) => {
9
+ fiber.handler(event)
10
+ })<E>()
11
+ }
package/L/fork.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { Fiber } from "../Fiber.ts"
2
+ import type { Rune } from "../Rune.ts"
3
+ import type { Runic } from "../Runic.ts"
4
+ import type { StateMap } from "../state/StateMap.ts"
5
+ import { rune } from "./rune.ts"
6
+
7
+ export interface fork<Y extends Rune, T> extends Generator<Rune<never> | Y, Fiber<T>> {}
8
+
9
+ export function* fork<Y extends Rune, T>(runic: Runic<Y, T>, state?: StateMap): fork<Y, T> {
10
+ return yield* rune((parent) =>
11
+ Fiber({
12
+ globals: parent.globals,
13
+ parent,
14
+ runic,
15
+ state: state?.clone(),
16
+ })
17
+ )
18
+ }
package/L/join.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Fiber } from "../Fiber.ts"
2
+ import type { Rune } from "../Rune.ts"
3
+ import { rune } from "./rune.ts"
4
+
5
+ export interface join<X extends Fiber> extends Generator<Rune<never>, X["T"]> {}
6
+
7
+ export function* join<X extends Fiber>(fiber: X): join<X> {
8
+ return yield* rune((_fiber) => fiber.run())
9
+ }
package/L/model.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { Model } from "../Model.ts"
2
+ import type { Rune } from "../Rune.ts"
3
+ import { ModelRegistry } from "../state/ModelRegistry.ts"
4
+ import { state } from "./state.ts"
5
+
6
+ export interface model extends Generator<Rune<never>, void> {}
7
+
8
+ export function* model(model: Model): model {
9
+ const [modelRegistry] = yield* state(ModelRegistry)
10
+ modelRegistry.register(model)
11
+ }
package/L/namespace.ts ADDED
@@ -0,0 +1,11 @@
1
+ // import type { Rune } from "../Rune"
2
+ // import type { Runic } from "../Runic"
3
+
4
+ // export function* namespace<K extends keyof any, X extends Runic>(
5
+ // key: K,
6
+ // runic: X,
7
+ // ): Generator<Rune<never> | Runic.Y<X>, Runic.T<X>> {
8
+ // const { globals, state } = self_
9
+ // const namespace = globals.namespace(key)
10
+ // return yield* rune((fiber) => Fiber(fiber.globals, fiber.parent, runic, state.clone()))
11
+ // }
package/L/rune.ts ADDED
@@ -0,0 +1,19 @@
1
+ import type { Fiber } from "../Fiber.ts"
2
+ import { type Rune, RuneKey } from "../Rune.ts"
3
+
4
+ export interface rune<T> extends Iterable<Rune<never>, T> {
5
+ <E>(): Generator<Rune<E>, T>
6
+ }
7
+
8
+ export function rune<R>(source: (fiber: Fiber) => R): rune<Awaited<R>> {
9
+ return Object.assign(
10
+ function*<E>(): Generator<Rune<E>, Awaited<R>> {
11
+ return yield Object.assign(source, { [RuneKey]: {} as never })
12
+ },
13
+ {
14
+ *[Symbol.iterator](): Generator<Rune<never>, Awaited<R>> {
15
+ return yield Object.assign(source, { [RuneKey]: {} as never })
16
+ },
17
+ },
18
+ )
19
+ }
package/L/self.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type { Fiber } from "../Fiber.ts"
2
+ import type { Rune } from "../Rune.ts"
3
+ import { rune } from "./rune.ts"
4
+
5
+ export interface self {
6
+ [Symbol.iterator](): Generator<Rune<never>, Fiber>
7
+ }
8
+
9
+ export const self: self = {
10
+ *[Symbol.iterator]() {
11
+ return yield* rune((fiber) => fiber)
12
+ },
13
+ }
package/L/state.ts ADDED
@@ -0,0 +1,20 @@
1
+ import type { Rune } from "../Rune.ts"
2
+ import type { StateConstructor } from "../state/StateMap.ts"
3
+ import { rune } from "./rune.ts"
4
+
5
+ export interface state<CA extends Array<StateConstructor>>
6
+ extends Generator<Rune<never>, { [I in keyof CA]: InstanceType<CA[I]> }>
7
+ {}
8
+
9
+ export function* state<CA extends Array<StateConstructor>>(...constructors: CA): state<CA> {
10
+ return yield* rune((fiber) => {
11
+ return constructors.map((constructor) => {
12
+ let instance = fiber.state.get(constructor)
13
+ if (!instance) {
14
+ instance = new constructor()
15
+ fiber.state.set(constructor, instance)
16
+ }
17
+ return instance
18
+ }) as never
19
+ })
20
+ }
package/L/system.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { isTemplateStringsArray } from "liminal-util"
2
+ import type { LEvent } from "../LEvent.ts"
3
+ import type { Rune } from "../Rune.ts"
4
+ import { _message } from "./_message.ts"
5
+
6
+ export interface system extends Generator<Rune<LEvent>, void> {}
7
+
8
+ export function system(template: TemplateStringsArray, ...substitutions: Array<string>): system
9
+ export function system(value: string): system
10
+ export function system(e0: TemplateStringsArray | string, ...rest: Array<string>): system {
11
+ const part = isTemplateStringsArray(e0) ? String.raw(e0, ...rest) : e0
12
+ return _message("system", [{ part }])
13
+ }
package/L/user.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { isTemplateStringsArray } from "liminal-util"
2
+ import type { LEvent } from "../LEvent.ts"
3
+ import type { Rune } from "../Rune.ts"
4
+ import { _message } from "./_message.ts"
5
+
6
+ export interface user extends Generator<Rune<LEvent>, void> {}
7
+
8
+ export function user(template: TemplateStringsArray, ...substitutions: Array<string>): user
9
+ export function user(value: string): user
10
+ export function user(e0: TemplateStringsArray | string, ...rest: Array<string>): user {
11
+ const part = isTemplateStringsArray(e0) ? String.raw(e0, ...rest) : e0
12
+ return _message("user", [{ part }])
13
+ }
package/LEvent.ts ADDED
@@ -0,0 +1,35 @@
1
+ import type { SchemaRoot } from "liminal-schema"
2
+ import type { Message } from "./Message.ts"
3
+
4
+ export type LEvent = InferenceRequested | Inferred | MessageAppended | FiberCreated | FiberStarted | FiberResolved
5
+
6
+ export interface InferenceRequested extends LEventBase<"inference_requested"> {
7
+ requestId: number
8
+ schema?: SchemaRoot
9
+ }
10
+
11
+ export interface Inferred extends LEventBase<"inferred"> {
12
+ requestId: number
13
+ inference: string
14
+ }
15
+
16
+ export interface MessageAppended extends LEventBase<"message_appended"> {
17
+ message: Message
18
+ }
19
+
20
+ export interface FiberCreated extends LEventBase<"fiber_created"> {}
21
+ export interface FiberStarted extends LEventBase<"fiber_started"> {}
22
+ export interface FiberResolved extends LEventBase<"fiber_resolved"> {
23
+ value: any
24
+ }
25
+
26
+ interface LEventBase<K extends string> {
27
+ [LEventTag]: K
28
+ }
29
+
30
+ export const LEventTag: unique symbol = Symbol.for("liminal/LEvent")
31
+ export type LEventTag = typeof LEventTag
32
+
33
+ export function isLEvent(value: unknown): value is LEvent {
34
+ return typeof value === "object" && value !== null && LEventTag in value
35
+ }
package/Message.ts CHANGED
@@ -1,94 +1,15 @@
1
- export type Message = Messages[keyof Messages]
2
- export type Messages = {
3
- system: SystemMessage
4
- user: UserMessage
5
- assistant: AssistantMessage
6
- tool: ToolMessage
1
+ export interface Message {
2
+ readonly role: MessageRole
3
+ readonly content: Array<ContentPart>
7
4
  }
8
5
 
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"> {}
6
+ export type MessageRole = "system" | "user" | "assistant"
13
7
 
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
8
+ export type ContentPart = {
9
+ readonly part: string
10
+ readonly alt?: never
11
+ } | {
12
+ readonly part: URL
13
+ readonly alt: string
14
+ readonly mime?: string
94
15
  }
package/Model.ts CHANGED
@@ -1,20 +1,13 @@
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"
1
+ import type { Schema } from "liminal-schema"
2
+ import type { Message } from "./Message.ts"
5
3
 
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
4
+ export interface Model {
5
+ resolve(messages: Array<Message>, schema?: Schema): Promise<string>
18
6
  }
19
7
 
20
- export type ModelType = "language" | "embedding"
8
+ // export interface ModelCapabilities {
9
+ // readonly url: boolean
10
+ // readonly mimes: Set<string>
11
+ // readonly reasoning: boolean
12
+ // readonly structures: boolean
13
+ // }