liminal 0.5.2 → 0.5.4

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