liminal 0.4.1 → 0.5.2
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.
- package/Action.ts +29 -0
- package/Agent.ts +10 -0
- package/CHANGELOG.md +20 -0
- package/Exec.ts +51 -0
- package/L.ts +24 -0
- package/LiminalAssertionError.ts +3 -0
- package/LiminalConfig.ts +7 -0
- package/Message.ts +94 -0
- package/Model.ts +26 -0
- package/PathLike.ts +17 -0
- package/Scope.ts +152 -0
- package/Spec.ts +29 -0
- package/Tool.ts +58 -0
- package/_.ts +11 -0
- package/actions/abort.ts +23 -0
- package/actions/actions_common/updateModels.ts +23 -0
- package/actions/actions_derived/__snapshots__/declareModel.test.ts.snap +89 -0
- package/actions/actions_derived/clear.ts +6 -0
- package/actions/actions_derived/declareModel.test.ts +36 -0
- package/actions/actions_derived/declareModel.ts +9 -0
- package/actions/actions_derived/declareModel.type-test.ts +70 -0
- package/actions/actions_derived/messages.test.ts +88 -0
- package/actions/actions_derived/messages.ts +18 -0
- package/actions/actions_derived/metatype.ts +9 -0
- package/actions/actions_derived/readers_derived.ts +15 -0
- package/actions/appendMessage.ts +54 -0
- package/actions/await.ts +13 -0
- package/actions/branch.ts +106 -0
- package/actions/catch.ts +42 -0
- package/actions/declareArg.ts +14 -0
- package/actions/disableTool.ts +26 -0
- package/actions/embed.ts +29 -0
- package/actions/emit.ts +21 -0
- package/actions/enableTool.ts +75 -0
- package/actions/enableTool.type-test.ts +118 -0
- package/actions/infer.ts +49 -0
- package/actions/messages.ts +62 -0
- package/actions/pushModel.ts +52 -0
- package/actions/scope.ts +13 -0
- package/actions/section.ts +105 -0
- package/actions/throw.ts +18 -0
- package/cli/WriteHandler.ts +35 -0
- package/cli/cli_common.ts +4 -0
- package/cli/main.ts +24 -0
- package/cli/runExec.ts +72 -0
- package/dist/Action.d.ts +15 -0
- package/dist/Action.js +13 -0
- package/dist/Action.js.map +1 -0
- package/dist/Agent.d.ts +7 -0
- package/dist/Agent.js +2 -0
- package/dist/Agent.js.map +1 -0
- package/dist/Exec.d.ts +25 -0
- package/dist/Exec.js +19 -0
- package/dist/Exec.js.map +1 -0
- package/dist/L.d.ts +23 -0
- package/dist/L.js +24 -0
- package/dist/L.js.map +1 -0
- package/dist/LiminalAssertionError.d.ts +3 -0
- package/dist/LiminalAssertionError.js +4 -0
- package/dist/LiminalAssertionError.js.map +1 -0
- package/dist/LiminalConfig.d.ts +6 -0
- package/dist/LiminalConfig.js +2 -0
- package/dist/LiminalConfig.js.map +1 -0
- package/dist/Message.d.ts +82 -0
- package/dist/Message.js +2 -0
- package/dist/Message.js.map +1 -0
- package/dist/Model.d.ts +21 -0
- package/dist/Model.js +2 -0
- package/dist/Model.js.map +1 -0
- package/dist/PathLike.d.ts +11 -0
- package/dist/PathLike.js +2 -0
- package/dist/PathLike.js.map +1 -0
- package/dist/Scope.d.ts +42 -0
- package/dist/Scope.js +93 -0
- package/dist/Scope.js.map +1 -0
- package/dist/Spec.d.ts +20 -0
- package/dist/Spec.js +2 -0
- package/dist/Spec.js.map +1 -0
- package/dist/Tool.d.ts +21 -0
- package/dist/Tool.js +32 -0
- package/dist/Tool.js.map +1 -0
- package/dist/_.d.ts +5 -0
- package/dist/_.js +7 -0
- package/dist/_.js.map +1 -0
- package/dist/actions/abort.d.ts +9 -0
- package/dist/actions/abort.js +15 -0
- package/dist/actions/abort.js.map +1 -0
- package/dist/actions/actions_common/updateModels.d.ts +3 -0
- package/dist/actions/actions_common/updateModels.js +17 -0
- package/dist/actions/actions_common/updateModels.js.map +1 -0
- package/dist/actions/actions_derived/clear.d.ts +8 -0
- package/dist/actions/actions_derived/clear.js +5 -0
- package/dist/actions/actions_derived/clear.js.map +1 -0
- package/dist/actions/actions_derived/declareModel.d.ts +5 -0
- package/dist/actions/actions_derived/declareModel.js +7 -0
- package/dist/actions/actions_derived/declareModel.js.map +1 -0
- package/dist/actions/actions_derived/declareModel.test.d.ts +1 -0
- package/dist/actions/actions_derived/declareModel.test.js +35 -0
- package/dist/actions/actions_derived/declareModel.test.js.map +1 -0
- package/dist/actions/actions_derived/declareModel.type-test.d.ts +1 -0
- package/dist/actions/actions_derived/declareModel.type-test.js +66 -0
- package/dist/actions/actions_derived/declareModel.type-test.js.map +1 -0
- package/dist/actions/actions_derived/messages.d.ts +6 -0
- package/dist/actions/actions_derived/messages.js +15 -0
- package/dist/actions/actions_derived/messages.js.map +1 -0
- package/dist/actions/actions_derived/messages.test.d.ts +1 -0
- package/dist/actions/actions_derived/messages.test.js +72 -0
- package/dist/actions/actions_derived/messages.test.js.map +1 -0
- package/dist/actions/actions_derived/metatype.d.ts +9 -0
- package/dist/actions/actions_derived/metatype.js +7 -0
- package/dist/actions/actions_derived/metatype.js.map +1 -0
- package/dist/actions/actions_derived/readers_derived.d.ts +6 -0
- package/dist/actions/actions_derived/readers_derived.js +14 -0
- package/dist/actions/actions_derived/readers_derived.js.map +1 -0
- package/dist/actions/appendMessage.d.ts +14 -0
- package/dist/actions/appendMessage.js +41 -0
- package/dist/actions/appendMessage.js.map +1 -0
- package/dist/actions/await.d.ts +5 -0
- package/dist/actions/await.js +10 -0
- package/dist/actions/await.js.map +1 -0
- package/dist/actions/branch.d.ts +39 -0
- package/dist/actions/branch.js +40 -0
- package/dist/actions/branch.js.map +1 -0
- package/dist/actions/catch.d.ts +10 -0
- package/dist/actions/catch.js +27 -0
- package/dist/actions/catch.js.map +1 -0
- package/dist/actions/declareArg.d.ts +8 -0
- package/dist/actions/declareArg.js +10 -0
- package/dist/actions/declareArg.js.map +1 -0
- package/dist/actions/disableTool.d.ts +10 -0
- package/dist/actions/disableTool.js +17 -0
- package/dist/actions/disableTool.js.map +1 -0
- package/dist/actions/embed.d.ts +9 -0
- package/dist/actions/embed.js +24 -0
- package/dist/actions/embed.js.map +1 -0
- package/dist/actions/emit.d.ts +9 -0
- package/dist/actions/emit.js +14 -0
- package/dist/actions/emit.js.map +1 -0
- package/dist/actions/enableTool.d.ts +20 -0
- package/dist/actions/enableTool.js +26 -0
- package/dist/actions/enableTool.js.map +1 -0
- package/dist/actions/enableTool.type-test.d.ts +1 -0
- package/dist/actions/enableTool.type-test.js +30 -0
- package/dist/actions/enableTool.type-test.js.map +1 -0
- package/dist/actions/infer.d.ts +15 -0
- package/dist/actions/infer.js +29 -0
- package/dist/actions/infer.js.map +1 -0
- package/dist/actions/messages.d.ts +24 -0
- package/dist/actions/messages.js +35 -0
- package/dist/actions/messages.js.map +1 -0
- package/dist/actions/pushModel.d.ts +15 -0
- package/dist/actions/pushModel.js +36 -0
- package/dist/actions/pushModel.js.map +1 -0
- package/dist/actions/scope.d.ts +7 -0
- package/dist/actions/scope.js +10 -0
- package/dist/actions/scope.js.map +1 -0
- package/dist/actions/section.d.ts +23 -0
- package/dist/actions/section.js +64 -0
- package/dist/actions/section.js.map +1 -0
- package/dist/actions/throw.d.ts +9 -0
- package/dist/actions/throw.js +13 -0
- package/dist/actions/throw.js.map +1 -0
- package/dist/cli/WriteHandler.d.ts +9 -0
- package/dist/cli/WriteHandler.js +24 -0
- package/dist/cli/WriteHandler.js.map +1 -0
- package/dist/cli/cli_common.d.ts +4 -0
- package/dist/cli/cli_common.js +2 -0
- package/dist/cli/cli_common.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +20 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/runExec.d.ts +2 -0
- package/dist/cli/runExec.js +74 -0
- package/dist/cli/runExec.js.map +1 -0
- package/dist/events/Aborted.d.ts +4 -0
- package/dist/events/Aborted.js +2 -0
- package/dist/events/Aborted.js.map +1 -0
- package/dist/events/Embedded.d.ts +5 -0
- package/dist/events/Embedded.js +2 -0
- package/dist/events/Embedded.js.map +1 -0
- package/dist/events/EmbeddingRequested.d.ts +4 -0
- package/dist/events/EmbeddingRequested.js +2 -0
- package/dist/events/EmbeddingRequested.js.map +1 -0
- package/dist/events/Emitted.d.ts +4 -0
- package/dist/events/Emitted.js +2 -0
- package/dist/events/Emitted.js.map +1 -0
- package/dist/events/EventBase.d.ts +3 -0
- package/dist/events/EventBase.js +2 -0
- package/dist/events/EventBase.js.map +1 -0
- package/dist/events/EventHandler.d.ts +2 -0
- package/dist/events/EventHandler.js +2 -0
- package/dist/events/EventHandler.js.map +1 -0
- package/dist/events/EventResolved.d.ts +19 -0
- package/dist/events/EventResolved.js +2 -0
- package/dist/events/EventResolved.js.map +1 -0
- package/dist/events/Forked.d.ts +3 -0
- package/dist/events/Forked.js +2 -0
- package/dist/events/Forked.js.map +1 -0
- package/dist/events/InferenceRequested.d.ts +3 -0
- package/dist/events/InferenceRequested.js +2 -0
- package/dist/events/InferenceRequested.js.map +1 -0
- package/dist/events/Inferred.d.ts +5 -0
- package/dist/events/Inferred.js +2 -0
- package/dist/events/Inferred.js.map +1 -0
- package/dist/events/LEvent.d.ts +20 -0
- package/dist/events/LEvent.js +2 -0
- package/dist/events/LEvent.js.map +1 -0
- package/dist/events/MessageAppended.d.ts +5 -0
- package/dist/events/MessageAppended.js +2 -0
- package/dist/events/MessageAppended.js.map +1 -0
- package/dist/events/MessageRemoved.d.ts +5 -0
- package/dist/events/MessageRemoved.js +2 -0
- package/dist/events/MessageRemoved.js.map +1 -0
- package/dist/events/MessagesSet.d.ts +5 -0
- package/dist/events/MessagesSet.js +2 -0
- package/dist/events/MessagesSet.js.map +1 -0
- package/dist/events/ModelPushed.d.ts +7 -0
- package/dist/events/ModelPushed.js +2 -0
- package/dist/events/ModelPushed.js.map +1 -0
- package/dist/events/ModelRemoved.d.ts +7 -0
- package/dist/events/ModelRemoved.js +2 -0
- package/dist/events/ModelRemoved.js.map +1 -0
- package/dist/events/Returned.d.ts +4 -0
- package/dist/events/Returned.js +2 -0
- package/dist/events/Returned.js.map +1 -0
- package/dist/events/SectionCleared.d.ts +5 -0
- package/dist/events/SectionCleared.js +2 -0
- package/dist/events/SectionCleared.js.map +1 -0
- package/dist/events/Sectioned.d.ts +5 -0
- package/dist/events/Sectioned.js +2 -0
- package/dist/events/Sectioned.js.map +1 -0
- package/dist/events/Threw.d.ts +4 -0
- package/dist/events/Threw.js +2 -0
- package/dist/events/Threw.js.map +1 -0
- package/dist/events/ToolCalled.d.ts +6 -0
- package/dist/events/ToolCalled.js +2 -0
- package/dist/events/ToolCalled.js.map +1 -0
- package/dist/events/ToolDisabled.d.ts +5 -0
- package/dist/events/ToolDisabled.js +2 -0
- package/dist/events/ToolDisabled.js.map +1 -0
- package/dist/events/ToolEnabled.d.ts +7 -0
- package/dist/events/ToolEnabled.js +2 -0
- package/dist/events/ToolEnabled.js.map +1 -0
- package/dist/events/isScopeChildEvent.d.ts +6 -0
- package/dist/events/isScopeChildEvent.js +9 -0
- package/dist/events/isScopeChildEvent.js.map +1 -0
- package/dist/events/isScopeDescendantEvent.d.ts +14 -0
- package/dist/events/isScopeDescendantEvent.js +12 -0
- package/dist/events/isScopeDescendantEvent.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/testing/AgentAssertions.d.ts +9 -0
- package/dist/testing/AgentAssertions.js +6 -0
- package/dist/testing/AgentAssertions.js.map +1 -0
- package/dist/testing/TestEmbeddingModel.d.ts +6 -0
- package/dist/testing/TestEmbeddingModel.js +11 -0
- package/dist/testing/TestEmbeddingModel.js.map +1 -0
- package/dist/testing/TestLanguageModel.d.ts +8 -0
- package/dist/testing/TestLanguageModel.js +22 -0
- package/dist/testing/TestLanguageModel.js.map +1 -0
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/takeFirstAction.d.ts +3 -0
- package/dist/testing/takeFirstAction.js +6 -0
- package/dist/testing/takeFirstAction.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/AssertDiagnostics.d.ts +18 -0
- package/dist/types/AssertDiagnostics.js +152 -0
- package/dist/types/AssertDiagnostics.js.map +1 -0
- package/dist/types/JSONRootType.d.ts +6 -0
- package/dist/types/JSONRootType.js +2 -0
- package/dist/types/JSONRootType.js.map +1 -0
- package/dist/types/JSONType.d.ts +16 -0
- package/dist/types/JSONType.js +2 -0
- package/dist/types/JSONType.js.map +1 -0
- package/dist/types/JSONTypeBase.d.ts +3 -0
- package/dist/types/JSONTypeBase.js +2 -0
- package/dist/types/JSONTypeBase.js.map +1 -0
- package/dist/types/Metatype/MetatypeDescriptor.d.ts +41 -0
- package/dist/types/Metatype/MetatypeDescriptor.js +38 -0
- package/dist/types/Metatype/MetatypeDescriptor.js.map +1 -0
- package/dist/types/Metatype/fromMetatypeDescriptor.d.ts +6 -0
- package/dist/types/Metatype/fromMetatypeDescriptor.js +43 -0
- package/dist/types/Metatype/fromMetatypeDescriptor.js.map +1 -0
- package/dist/types/Type.d.ts +31 -0
- package/dist/types/Type.js +5 -0
- package/dist/types/Type.js.map +1 -0
- package/dist/types/TypeContext.d.ts +7 -0
- package/dist/types/TypeContext.js +17 -0
- package/dist/types/TypeContext.js.map +1 -0
- package/dist/types/TypeLike.d.ts +23 -0
- package/dist/types/TypeLike.js +23 -0
- package/dist/types/TypeLike.js.map +1 -0
- package/dist/types/TypeVisitor.d.ts +14 -0
- package/dist/types/TypeVisitor.js +12 -0
- package/dist/types/TypeVisitor.js.map +1 -0
- package/dist/types/array.d.ts +10 -0
- package/dist/types/array.js +9 -0
- package/dist/types/array.js.map +1 -0
- package/dist/types/boolean.d.ts +6 -0
- package/dist/types/boolean.js +3 -0
- package/dist/types/boolean.js.map +1 -0
- package/dist/types/const.d.ts +8 -0
- package/dist/types/const.js +7 -0
- package/dist/types/const.js.map +1 -0
- package/dist/types/enum.d.ts +8 -0
- package/dist/types/enum.js +7 -0
- package/dist/types/enum.js.map +1 -0
- package/dist/types/factories.d.ts +8 -0
- package/dist/types/factories.js +9 -0
- package/dist/types/factories.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/integer.d.ts +6 -0
- package/dist/types/integer.js +3 -0
- package/dist/types/integer.js.map +1 -0
- package/dist/types/intrinsics.d.ts +11 -0
- package/dist/types/intrinsics.js +12 -0
- package/dist/types/intrinsics.js.map +1 -0
- package/dist/types/makeType.d.ts +2 -0
- package/dist/types/makeType.js +58 -0
- package/dist/types/makeType.js.map +1 -0
- package/dist/types/match.d.ts +3 -0
- package/dist/types/match.js +11 -0
- package/dist/types/match.js.map +1 -0
- package/dist/types/non_factories.d.ts +21 -0
- package/dist/types/non_factories.js +9 -0
- package/dist/types/non_factories.js.map +1 -0
- package/dist/types/null.d.ts +7 -0
- package/dist/types/null.js +4 -0
- package/dist/types/null.js.map +1 -0
- package/dist/types/number.d.ts +6 -0
- package/dist/types/number.js +3 -0
- package/dist/types/number.js.map +1 -0
- package/dist/types/object.d.ts +16 -0
- package/dist/types/object.js +10 -0
- package/dist/types/object.js.map +1 -0
- package/dist/types/ref.d.ts +7 -0
- package/dist/types/ref.js +5 -0
- package/dist/types/ref.js.map +1 -0
- package/dist/types/string.d.ts +6 -0
- package/dist/types/string.js +3 -0
- package/dist/types/string.js.map +1 -0
- package/dist/types/toJSON.d.ts +5 -0
- package/dist/types/toJSON.js +97 -0
- package/dist/types/toJSON.js.map +1 -0
- package/dist/types/type_common.d.ts +10 -0
- package/dist/types/type_common.js +12 -0
- package/dist/types/type_common.js.map +1 -0
- package/dist/types/types_derived/option.d.ts +5 -0
- package/dist/types/types_derived/option.js +6 -0
- package/dist/types/types_derived/option.js.map +1 -0
- package/dist/types/types_derived/taggedUnion.d.ts +19 -0
- package/dist/types/types_derived/taggedUnion.js +8 -0
- package/dist/types/types_derived/taggedUnion.js.map +1 -0
- package/dist/types/types_derived/wrapper.d.ts +8 -0
- package/dist/types/types_derived/wrapper.js +5 -0
- package/dist/types/types_derived/wrapper.js.map +1 -0
- package/dist/types/union.d.ts +9 -0
- package/dist/types/union.js +9 -0
- package/dist/types/union.js.map +1 -0
- package/dist/util/ArrayOfLength.d.ts +1 -0
- package/dist/util/ArrayOfLength.js +2 -0
- package/dist/util/ArrayOfLength.js.map +1 -0
- package/dist/util/DeferredOr.d.ts +1 -0
- package/dist/util/DeferredOr.js +2 -0
- package/dist/util/DeferredOr.js.map +1 -0
- package/dist/util/EnsureNarrow.d.ts +2 -0
- package/dist/util/EnsureNarrow.js +2 -0
- package/dist/util/EnsureNarrow.js.map +1 -0
- package/dist/util/EnsureRecord.d.ts +2 -0
- package/dist/util/EnsureRecord.js +2 -0
- package/dist/util/EnsureRecord.js.map +1 -0
- package/dist/util/Expand.d.ts +3 -0
- package/dist/util/Expand.js +2 -0
- package/dist/util/Expand.js.map +1 -0
- package/dist/util/Falsy.d.ts +1 -0
- package/dist/util/Falsy.js +2 -0
- package/dist/util/Falsy.js.map +1 -0
- package/dist/util/FromEntries.d.ts +3 -0
- package/dist/util/FromEntries.js +2 -0
- package/dist/util/FromEntries.js.map +1 -0
- package/dist/util/IteratorLike.d.ts +1 -0
- package/dist/util/IteratorLike.js +2 -0
- package/dist/util/IteratorLike.js.map +1 -0
- package/dist/util/JSONEntry.d.ts +2 -0
- package/dist/util/JSONEntry.js +2 -0
- package/dist/util/JSONEntry.js.map +1 -0
- package/dist/util/JSONKey.d.ts +1 -0
- package/dist/util/JSONKey.js +2 -0
- package/dist/util/JSONKey.js.map +1 -0
- package/dist/util/JSONObject.d.ts +5 -0
- package/dist/util/JSONObject.js +2 -0
- package/dist/util/JSONObject.js.map +1 -0
- package/dist/util/JSONSchemaMemo.d.ts +2 -0
- package/dist/util/JSONSchemaMemo.js +13 -0
- package/dist/util/JSONSchemaMemo.js.map +1 -0
- package/dist/util/JSONValue.d.ts +2 -0
- package/dist/util/JSONValue.js +2 -0
- package/dist/util/JSONValue.js.map +1 -0
- package/dist/util/PromiseOr.d.ts +1 -0
- package/dist/util/PromiseOr.js +2 -0
- package/dist/util/PromiseOr.js.map +1 -0
- package/dist/util/Result.d.ts +7 -0
- package/dist/util/Result.js +2 -0
- package/dist/util/Result.js.map +1 -0
- package/dist/util/Taggable.d.ts +9 -0
- package/dist/util/Taggable.js +8 -0
- package/dist/util/Taggable.js.map +1 -0
- package/dist/util/TupleToRecord.d.ts +5 -0
- package/dist/util/TupleToRecord.js +2 -0
- package/dist/util/TupleToRecord.js.map +1 -0
- package/dist/util/assert.d.ts +1 -0
- package/dist/util/assert.js +7 -0
- package/dist/util/assert.js.map +1 -0
- package/dist/util/dedent.d.ts +1 -0
- package/dist/util/dedent.js +5 -0
- package/dist/util/dedent.js.map +1 -0
- package/dist/util/fixTemplateStrings.d.ts +11 -0
- package/dist/util/fixTemplateStrings.js +83 -0
- package/dist/util/fixTemplateStrings.js.map +1 -0
- package/dist/util/fixTemplateStrings.test.d.ts +1 -0
- package/dist/util/fixTemplateStrings.test.js +221 -0
- package/dist/util/fixTemplateStrings.test.js.map +1 -0
- package/dist/util/isAsyncIterator.d.ts +1 -0
- package/dist/util/isAsyncIterator.js +7 -0
- package/dist/util/isAsyncIterator.js.map +1 -0
- package/dist/util/isIterator.d.ts +1 -0
- package/dist/util/isIterator.js +7 -0
- package/dist/util/isIterator.js.map +1 -0
- package/dist/util/isJSONValue.d.ts +2 -0
- package/dist/util/isJSONValue.js +16 -0
- package/dist/util/isJSONValue.js.map +1 -0
- package/dist/util/isPropertyKey.d.ts +1 -0
- package/dist/util/isPropertyKey.js +4 -0
- package/dist/util/isPropertyKey.js.map +1 -0
- package/dist/util/isTemplateStringsArray.d.ts +1 -0
- package/dist/util/isTemplateStringsArray.js +4 -0
- package/dist/util/isTemplateStringsArray.js.map +1 -0
- package/dist/util/jsonEquals.d.ts +2 -0
- package/dist/util/jsonEquals.js +33 -0
- package/dist/util/jsonEquals.js.map +1 -0
- package/dist/util/nullaryMemo.d.ts +1 -0
- package/dist/util/nullaryMemo.js +12 -0
- package/dist/util/nullaryMemo.js.map +1 -0
- package/dist/util/peekLast.d.ts +1 -0
- package/dist/util/peekLast.js +4 -0
- package/dist/util/peekLast.js.map +1 -0
- package/dist/util/unimplemented.d.ts +1 -0
- package/dist/util/unimplemented.js +5 -0
- package/dist/util/unimplemented.js.map +1 -0
- package/dist/util/unreachable.d.ts +1 -0
- package/dist/util/unreachable.js +5 -0
- package/dist/util/unreachable.js.map +1 -0
- package/dist/util/unwrapDeferred.d.ts +2 -0
- package/dist/util/unwrapDeferred.js +4 -0
- package/dist/util/unwrapDeferred.js.map +1 -0
- package/dist/util/util.d.ts +10 -0
- package/dist/util/util.js +11 -0
- package/dist/util/util.js.map +1 -0
- package/events/Aborted.ts +5 -0
- package/events/Embedded.ts +6 -0
- package/events/EmbeddingRequested.ts +5 -0
- package/events/Emitted.ts +5 -0
- package/events/EventBase.ts +3 -0
- package/events/EventHandler.ts +3 -0
- package/events/EventResolved.ts +30 -0
- package/events/Forked.ts +3 -0
- package/events/InferenceRequested.ts +3 -0
- package/events/Inferred.ts +6 -0
- package/events/LEvent.ts +40 -0
- package/events/MessageAppended.ts +6 -0
- package/events/MessageRemoved.ts +6 -0
- package/events/MessagesSet.ts +6 -0
- package/events/ModelPushed.ts +10 -0
- package/events/ModelRemoved.ts +10 -0
- package/events/Returned.ts +5 -0
- package/events/SectionCleared.ts +6 -0
- package/events/Sectioned.ts +6 -0
- package/events/Threw.ts +5 -0
- package/events/ToolCalled.ts +7 -0
- package/events/ToolDisabled.ts +6 -0
- package/events/ToolEnabled.ts +8 -0
- package/events/isScopeChildEvent.ts +15 -0
- package/events/isScopeDescendantEvent.ts +30 -0
- package/index.ts +41 -0
- package/package.json +32 -9
- package/testing/AgentAssertions.ts +17 -0
- package/testing/TestEmbeddingModel.ts +19 -0
- package/testing/TestLanguageModel.ts +33 -0
- package/testing/index.ts +4 -0
- package/testing/takeFirstAction.ts +8 -0
- package/tsconfig.json +8 -0
- package/types/AssertDiagnostics.ts +183 -0
- package/types/JSONRootType.ts +8 -0
- package/types/JSONType.ts +27 -0
- package/types/JSONTypeBase.ts +3 -0
- package/types/Metatype/MetatypeDescriptor.ts +80 -0
- package/types/Metatype/fromMetatypeDescriptor.ts +52 -0
- package/types/Type.ts +47 -0
- package/types/TypeContext.ts +19 -0
- package/types/TypeLike.ts +60 -0
- package/types/TypeVisitor.ts +49 -0
- package/types/array.ts +20 -0
- package/types/boolean.ts +9 -0
- package/types/const.ts +17 -0
- package/types/enum.ts +14 -0
- package/types/factories.ts +8 -0
- package/types/index.ts +2 -0
- package/types/integer.ts +9 -0
- package/types/intrinsics.ts +11 -0
- package/types/makeType.ts +72 -0
- package/types/match.ts +13 -0
- package/types/non_factories.ts +26 -0
- package/types/null.ts +10 -0
- package/types/number.ts +9 -0
- package/types/object.ts +27 -0
- package/types/ref.ts +12 -0
- package/types/string.ts +9 -0
- package/types/toJSON.ts +111 -0
- package/types/type_common.ts +21 -0
- package/types/types_derived/option.ts +10 -0
- package/types/types_derived/taggedUnion.ts +30 -0
- package/types/types_derived/wrapper.ts +10 -0
- package/types/union.ts +19 -0
- package/util/ArrayOfLength.ts +5 -0
- package/util/DeferredOr.ts +1 -0
- package/util/EnsureNarrow.ts +5 -0
- package/util/EnsureRecord.ts +3 -0
- package/util/Expand.ts +1 -0
- package/util/Falsy.ts +1 -0
- package/util/FromEntries.ts +3 -0
- package/util/IteratorLike.ts +1 -0
- package/util/JSONEntry.ts +3 -0
- package/util/JSONKey.ts +1 -0
- package/util/JSONObject.ts +6 -0
- package/util/JSONSchemaMemo.ts +15 -0
- package/util/JSONValue.ts +3 -0
- package/util/PromiseOr.ts +1 -0
- package/util/Result.ts +7 -0
- package/util/Taggable.ts +18 -0
- package/util/TupleToRecord.ts +5 -0
- package/util/assert.ts +7 -0
- package/util/dedent.ts +5 -0
- package/util/fixTemplateStrings.test.ts +250 -0
- package/util/fixTemplateStrings.ts +99 -0
- package/util/isAsyncIterator.ts +6 -0
- package/util/isIterator.ts +6 -0
- package/util/isJSONValue.ts +20 -0
- package/util/isPropertyKey.ts +3 -0
- package/util/isTemplateStringsArray.ts +3 -0
- package/util/jsonEquals.ts +41 -0
- package/util/nullaryMemo.ts +11 -0
- package/util/peekLast.ts +3 -0
- package/util/unimplemented.ts +5 -0
- package/util/unreachable.ts +5 -0
- package/util/unwrapDeferred.ts +5 -0
- package/util/util.ts +10 -0
- package/lib/index.js +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import type { AssertTrue, IsExact } from "conditional-type-checks"
|
|
2
|
+
import type { AgentLike } from "../Agent.ts"
|
|
3
|
+
import type { Emitted } from "../events/Emitted.ts"
|
|
4
|
+
import type { ToolCalled } from "../events/ToolCalled.ts"
|
|
5
|
+
import type { ToolDisabled } from "../events/ToolDisabled.ts"
|
|
6
|
+
import type { ToolEnabled } from "../events/ToolEnabled.ts"
|
|
7
|
+
import * as L from "../L.ts"
|
|
8
|
+
import { AgentAssertions } from "../testing/AgentAssertions.ts"
|
|
9
|
+
import { emit } from "./emit.ts"
|
|
10
|
+
import { enableTool } from "./enableTool.ts"
|
|
11
|
+
|
|
12
|
+
type P = typeof P["T"]
|
|
13
|
+
const P = L.object({
|
|
14
|
+
a: L.string,
|
|
15
|
+
b: L.string,
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const arrowTool = L.enableTool("Tool", "", P, (params) => {
|
|
19
|
+
type _ = [AssertTrue<IsExact<typeof params, P>>]
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
AgentAssertions(arrowTool).assertSpec<{
|
|
23
|
+
Event:
|
|
24
|
+
| ToolEnabled<"Tool">
|
|
25
|
+
| ToolCalled<"Tool", {
|
|
26
|
+
a: string
|
|
27
|
+
b: string
|
|
28
|
+
}>
|
|
29
|
+
Child: never
|
|
30
|
+
Throw: never
|
|
31
|
+
Entry: never
|
|
32
|
+
Value: never
|
|
33
|
+
}>()
|
|
34
|
+
|
|
35
|
+
function* _0() {
|
|
36
|
+
const detach = yield* arrowTool
|
|
37
|
+
AgentAssertions(detach).assertSpec<{
|
|
38
|
+
Event: ToolDisabled<"Tool">
|
|
39
|
+
Child: never
|
|
40
|
+
Throw: never
|
|
41
|
+
Entry: never
|
|
42
|
+
Value: never
|
|
43
|
+
}>()
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const genTool = enableTool("tool-key", "", P, function*(params) {
|
|
47
|
+
type _ = [AssertTrue<IsExact<typeof params, P>>]
|
|
48
|
+
yield* emit("Test")
|
|
49
|
+
return ""
|
|
50
|
+
})
|
|
51
|
+
|
|
52
|
+
AgentAssertions(genTool).assertSpec<{
|
|
53
|
+
Event:
|
|
54
|
+
| ToolEnabled<"tool-key">
|
|
55
|
+
| ToolCalled<"tool-key", {
|
|
56
|
+
a: string
|
|
57
|
+
b: string
|
|
58
|
+
}>
|
|
59
|
+
Child: ["tool-key", {
|
|
60
|
+
Event: Emitted<"Test">
|
|
61
|
+
Child: never
|
|
62
|
+
Throw: never
|
|
63
|
+
Entry: never
|
|
64
|
+
Value: never
|
|
65
|
+
}]
|
|
66
|
+
Throw: never
|
|
67
|
+
Entry: never
|
|
68
|
+
Value: string
|
|
69
|
+
}>()
|
|
70
|
+
|
|
71
|
+
function* parent() {
|
|
72
|
+
yield* L.enableTool("parent-tool", "", P, () => {})
|
|
73
|
+
yield* L.branch("fork-key", {
|
|
74
|
+
*"arm-key"() {
|
|
75
|
+
yield* arrowTool
|
|
76
|
+
},
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
type g = typeof parent extends AgentLike<infer Y> ? Y[""] : never
|
|
81
|
+
|
|
82
|
+
AgentAssertions(parent).assertSpec<
|
|
83
|
+
{
|
|
84
|
+
Event:
|
|
85
|
+
| ToolEnabled<"parent-tool">
|
|
86
|
+
| ToolCalled<"parent-tool", {
|
|
87
|
+
a: string
|
|
88
|
+
b: string
|
|
89
|
+
}>
|
|
90
|
+
Child: never
|
|
91
|
+
Throw: never
|
|
92
|
+
Entry: never
|
|
93
|
+
Value: never
|
|
94
|
+
} | {
|
|
95
|
+
Event: never
|
|
96
|
+
Child: ["fork-key", {
|
|
97
|
+
Event: never
|
|
98
|
+
Child: ["arm-key", {
|
|
99
|
+
Event:
|
|
100
|
+
| ToolEnabled<"Tool">
|
|
101
|
+
| ToolCalled<"Tool", {
|
|
102
|
+
a: string
|
|
103
|
+
b: string
|
|
104
|
+
}>
|
|
105
|
+
Child: never
|
|
106
|
+
Throw: never
|
|
107
|
+
Entry: never
|
|
108
|
+
Value: never
|
|
109
|
+
}]
|
|
110
|
+
Throw: never
|
|
111
|
+
Entry: never
|
|
112
|
+
Value: void
|
|
113
|
+
}]
|
|
114
|
+
Throw: never
|
|
115
|
+
Entry: never
|
|
116
|
+
Value: never
|
|
117
|
+
}
|
|
118
|
+
>()
|
package/actions/infer.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { StandardSchemaV1 } from "@standard-schema/spec"
|
|
2
|
+
import { Action } from "../Action.ts"
|
|
3
|
+
import type { InferenceRequested } from "../events/InferenceRequested.ts"
|
|
4
|
+
import type { Inferred } from "../events/Inferred.ts"
|
|
5
|
+
import type { Spec } from "../Spec.ts"
|
|
6
|
+
import type { JSONObject } from "../util/JSONObject.ts"
|
|
7
|
+
import type { JSONValue } from "../util/JSONValue.ts"
|
|
8
|
+
import { peekLast } from "../util/peekLast.ts"
|
|
9
|
+
|
|
10
|
+
export { infer_ as infer }
|
|
11
|
+
|
|
12
|
+
interface infer_<_T> extends
|
|
13
|
+
Action<
|
|
14
|
+
"infer",
|
|
15
|
+
Spec.Make<{
|
|
16
|
+
Event: InferenceRequested | Inferred
|
|
17
|
+
}>
|
|
18
|
+
>
|
|
19
|
+
{}
|
|
20
|
+
|
|
21
|
+
const infer_ = Object.assign(
|
|
22
|
+
function* infer_<T extends JSONValue>(type: StandardSchemaV1<JSONObject, T>): Generator<infer_<T>, T> {
|
|
23
|
+
return yield* impl(type)
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
*[Symbol.iterator](): Iterator<infer_<string>, string> {
|
|
27
|
+
return yield* impl()
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
)
|
|
31
|
+
Object.defineProperty(infer_, "name", { value: "infer" })
|
|
32
|
+
|
|
33
|
+
function* impl(type?: StandardSchemaV1<JSONObject, any>): Generator<infer_<any>, any> {
|
|
34
|
+
return yield Action("infer", async (scope) => {
|
|
35
|
+
scope.event({
|
|
36
|
+
type: "inference_requested",
|
|
37
|
+
})
|
|
38
|
+
const model = peekLast(scope.languageModels)!
|
|
39
|
+
scope = await scope.reduce(model.infer(type))
|
|
40
|
+
scope.event({
|
|
41
|
+
type: "inferred",
|
|
42
|
+
value: scope.value,
|
|
43
|
+
})
|
|
44
|
+
return {
|
|
45
|
+
...scope,
|
|
46
|
+
nextArg: scope.value,
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Action } from "../Action.ts"
|
|
2
|
+
import type { Agent } from "../Agent.ts"
|
|
3
|
+
import type { MessagesSet } from "../events/MessagesSet.ts"
|
|
4
|
+
import type { Message } from "../Message.ts"
|
|
5
|
+
import type { Spec } from "../Spec.ts"
|
|
6
|
+
import { isPropertyKey } from "../util/isPropertyKey.ts"
|
|
7
|
+
import type { JSONKey } from "../util/JSONKey.ts"
|
|
8
|
+
import type { PromiseOr } from "../util/PromiseOr.ts"
|
|
9
|
+
import { type getScope, scope } from "./scope.ts"
|
|
10
|
+
|
|
11
|
+
interface messages extends Iterable<getScope, Set<Message>> {
|
|
12
|
+
(messages: Array<Message>): Generator<Action<"set_messages", Spec.Make<{ Event: MessagesSet }>>, Array<Message>>
|
|
13
|
+
(
|
|
14
|
+
setter: (messages: Array<Message>) => PromiseOr<Array<Message>>,
|
|
15
|
+
): Generator<Action<"set_messages", Spec.Make<{ Event: MessagesSet }>>, Array<Message>>
|
|
16
|
+
<K extends JSONKey, Y extends Action>(
|
|
17
|
+
key: K,
|
|
18
|
+
setter: (messages: Array<Message>) => Agent<Y, void>,
|
|
19
|
+
): Generator<
|
|
20
|
+
Action<
|
|
21
|
+
"set_messages",
|
|
22
|
+
Spec.Make<{ Event: MessagesSet; Child: [K, Y[""]]; Entry: Y[""]["Entry"]; Value: Array<Message> }>
|
|
23
|
+
>,
|
|
24
|
+
Array<Message>
|
|
25
|
+
>
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const messages: messages = Object.assign(messages_, {
|
|
29
|
+
*[Symbol.iterator]() {
|
|
30
|
+
const scope_ = yield* scope
|
|
31
|
+
return scope_.messages
|
|
32
|
+
},
|
|
33
|
+
}) as never
|
|
34
|
+
|
|
35
|
+
function* messages_(
|
|
36
|
+
setterOrKey: JSONKey | ((messages: Array<Message>) => PromiseOr<Array<Message>>),
|
|
37
|
+
maybeSetter?: (messages: Array<Message>) => Agent<Action, void>,
|
|
38
|
+
): Generator<Action<"set_messages">, Array<Message>> {
|
|
39
|
+
return yield Action("set_messages", async (scope) => {
|
|
40
|
+
if (isPropertyKey(setterOrKey)) {
|
|
41
|
+
const setterScope = scope.fork("set_messages", [setterOrKey])
|
|
42
|
+
const reduced = await setterScope.reduce(maybeSetter!([...scope.messages]))
|
|
43
|
+
const { messages } = reduced
|
|
44
|
+
setterScope.event({
|
|
45
|
+
type: "messages_set",
|
|
46
|
+
messages: [...messages],
|
|
47
|
+
})
|
|
48
|
+
return {
|
|
49
|
+
...scope,
|
|
50
|
+
messages,
|
|
51
|
+
nextArg: scope.messages,
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const messages = new Set(Array.isArray(setterOrKey) ? setterOrKey : await setterOrKey([...scope.messages]))
|
|
55
|
+
return {
|
|
56
|
+
...scope,
|
|
57
|
+
messages,
|
|
58
|
+
nextArg: scope.messages,
|
|
59
|
+
}
|
|
60
|
+
})
|
|
61
|
+
}
|
|
62
|
+
Object.defineProperty(messages_, "name", { value: "messages" })
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Action } from "../Action.ts"
|
|
2
|
+
import type { ModelPushed } from "../events/ModelPushed.ts"
|
|
3
|
+
import type { ModelRemoved } from "../events/ModelRemoved.ts"
|
|
4
|
+
import type { Model, ModelType } from "../Model.ts"
|
|
5
|
+
import type { Spec } from "../Spec.ts"
|
|
6
|
+
import type { JSONKey } from "../util/JSONKey.ts"
|
|
7
|
+
import { applyToModels } from "./actions_common/updateModels.ts"
|
|
8
|
+
|
|
9
|
+
export interface pushModel<K extends JSONKey, M extends ModelType>
|
|
10
|
+
extends Action<"remove_model", Spec.Make<{ Event: ModelPushed<K, M> }>>
|
|
11
|
+
{}
|
|
12
|
+
|
|
13
|
+
export interface removeModel<K extends JSONKey, M extends ModelType>
|
|
14
|
+
extends Action<"remove_model", Spec.Make<{ Event: ModelRemoved<K, M> }>>
|
|
15
|
+
{}
|
|
16
|
+
|
|
17
|
+
export function* pushModel<K extends JSONKey, M extends Model>(
|
|
18
|
+
modelKey: K,
|
|
19
|
+
model: M,
|
|
20
|
+
): Generator<pushModel<K, M["type"]>, Generator<removeModel<K, M["type"]>, void>> {
|
|
21
|
+
return yield Action("remove_model", (scope) => {
|
|
22
|
+
scope.event({
|
|
23
|
+
type: "model_pushed",
|
|
24
|
+
modelKey,
|
|
25
|
+
modelType: model.type,
|
|
26
|
+
})
|
|
27
|
+
return {
|
|
28
|
+
...scope,
|
|
29
|
+
...applyToModels(scope, model, (models) => {
|
|
30
|
+
models.add(model)
|
|
31
|
+
return models
|
|
32
|
+
}),
|
|
33
|
+
nextArg: (function*(): Generator<removeModel<K, M["type"]>, void> {
|
|
34
|
+
yield Action("remove_model", (scope) => {
|
|
35
|
+
scope.event({
|
|
36
|
+
type: "model_removed",
|
|
37
|
+
modelKey,
|
|
38
|
+
modelType: model.type,
|
|
39
|
+
})
|
|
40
|
+
return {
|
|
41
|
+
...scope,
|
|
42
|
+
...applyToModels(scope, model, (models) => {
|
|
43
|
+
models.delete(model)
|
|
44
|
+
return models
|
|
45
|
+
}),
|
|
46
|
+
nextArg: undefined,
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
})(),
|
|
50
|
+
}
|
|
51
|
+
})
|
|
52
|
+
}
|
package/actions/scope.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Action } from "../Action.ts"
|
|
2
|
+
import type { Scope } from "../Scope.ts"
|
|
3
|
+
|
|
4
|
+
export interface getScope extends Action<"get_scope", never> {}
|
|
5
|
+
|
|
6
|
+
export const scope = {
|
|
7
|
+
*[Symbol.iterator](): Iterator<getScope, Scope> {
|
|
8
|
+
return yield Action("get_scope", (scope) => ({
|
|
9
|
+
...scope,
|
|
10
|
+
nextArg: scope,
|
|
11
|
+
}))
|
|
12
|
+
},
|
|
13
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Action } from "../Action.ts"
|
|
2
|
+
import type { Agent, AgentLike } from "../Agent.ts"
|
|
3
|
+
import type { SectionCleared } from "../events/SectionCleared.ts"
|
|
4
|
+
import type { Sectioned } from "../events/Sectioned.ts"
|
|
5
|
+
import type { Message } from "../Message.ts"
|
|
6
|
+
import type { Section } from "../Scope.ts"
|
|
7
|
+
import type { Spec } from "../Spec.ts"
|
|
8
|
+
import type { JSONKey } from "../util/JSONKey.ts"
|
|
9
|
+
import { unwrapDeferred } from "../util/unwrapDeferred.ts"
|
|
10
|
+
|
|
11
|
+
export interface section<K extends JSONKey> extends Action<"section", Spec.Make<{ Event: Sectioned<K> }>> {}
|
|
12
|
+
|
|
13
|
+
export interface SectionHandle<K extends JSONKey> {
|
|
14
|
+
clear: Generator<Action<"clear_section", Spec.Make<{ Event: SectionCleared<K> }>>, void>
|
|
15
|
+
getMessages: () => Generator<Action<"get_section_messages", never>, Set<Message>>
|
|
16
|
+
|
|
17
|
+
<L extends JSONKey, Y extends Action, T>(key: L, agentLike: AgentLike<Y, T>): Generator<
|
|
18
|
+
Action<
|
|
19
|
+
"run_section",
|
|
20
|
+
Spec.Make<{
|
|
21
|
+
Child: [L, Y[""]]
|
|
22
|
+
Entry: Y[""]["Entry"]
|
|
23
|
+
Value: T
|
|
24
|
+
}>
|
|
25
|
+
>,
|
|
26
|
+
T
|
|
27
|
+
>
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function* section<K extends JSONKey>(sectionKey: K): Generator<section<K>, SectionHandle<K>> {
|
|
31
|
+
return yield Action("section", (scope) => {
|
|
32
|
+
scope.event({
|
|
33
|
+
type: "sectioned",
|
|
34
|
+
sectionKey,
|
|
35
|
+
})
|
|
36
|
+
const section: Section = {
|
|
37
|
+
sectionKey,
|
|
38
|
+
messages: new Set(),
|
|
39
|
+
}
|
|
40
|
+
scope.sections.add(section)
|
|
41
|
+
return {
|
|
42
|
+
...scope,
|
|
43
|
+
nextArg: Object.assign(
|
|
44
|
+
function*<L extends JSONKey, Y extends Action, T>(key: L, agentLike: AgentLike<Y, T>): Generator<
|
|
45
|
+
Action<
|
|
46
|
+
"run_section",
|
|
47
|
+
Spec.Make<{
|
|
48
|
+
Child: [L, Y[""]]
|
|
49
|
+
Entry: Y[""]["Entry"]
|
|
50
|
+
Value: T
|
|
51
|
+
}>
|
|
52
|
+
>,
|
|
53
|
+
T
|
|
54
|
+
> {
|
|
55
|
+
return yield Action("run_section", async (scope) => {
|
|
56
|
+
const sectionScope = scope.fork("run_section", [key], {
|
|
57
|
+
messages: new Set(section.messages),
|
|
58
|
+
})
|
|
59
|
+
const reduced = await sectionScope.reduce(unwrapDeferred(agentLike))
|
|
60
|
+
const { value } = reduced
|
|
61
|
+
sectionScope.event({
|
|
62
|
+
type: "returned",
|
|
63
|
+
value,
|
|
64
|
+
})
|
|
65
|
+
return {
|
|
66
|
+
...scope,
|
|
67
|
+
nextArg: value,
|
|
68
|
+
}
|
|
69
|
+
})
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
getMessages: (function*(): Generator<Action<"get_section_messages", never>, Set<Message>> {
|
|
73
|
+
return yield Action("get_section_messages", (scope) => ({
|
|
74
|
+
...scope,
|
|
75
|
+
nextArg: new Set(section.messages),
|
|
76
|
+
}))
|
|
77
|
+
})(),
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
clear:
|
|
81
|
+
(function*(): Generator<Action<"clear_section", Spec.Make<{ Event: SectionCleared<K> }>>, Set<Message>> {
|
|
82
|
+
return yield Action("clear_section", (scope) => {
|
|
83
|
+
const sections = new Set(scope.sections)
|
|
84
|
+
sections.delete(section)
|
|
85
|
+
const messages = new Set(scope.messages)
|
|
86
|
+
section.messages.forEach((message) => {
|
|
87
|
+
messages.delete(message)
|
|
88
|
+
})
|
|
89
|
+
scope.event({
|
|
90
|
+
type: "section_cleared",
|
|
91
|
+
sectionKey,
|
|
92
|
+
})
|
|
93
|
+
return {
|
|
94
|
+
...scope,
|
|
95
|
+
nextArg: messages,
|
|
96
|
+
sections,
|
|
97
|
+
messages,
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
})(),
|
|
101
|
+
},
|
|
102
|
+
),
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
}
|
package/actions/throw.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Action } from "../Action.ts"
|
|
2
|
+
import type { Spec } from "../Spec.ts"
|
|
3
|
+
import type { EnsureNarrow } from "../util/EnsureNarrow.ts"
|
|
4
|
+
|
|
5
|
+
export { throw_ as throw }
|
|
6
|
+
|
|
7
|
+
interface throw_<V> extends Action<"throw", Spec.Make<{ Throw: V }>> {}
|
|
8
|
+
|
|
9
|
+
function* throw_<V>(value: V, ...[_error]: EnsureNarrow<V>): Generator<throw_<V>, never> {
|
|
10
|
+
return (yield Action("throw", (scope) => {
|
|
11
|
+
return {
|
|
12
|
+
...scope,
|
|
13
|
+
thrown: value,
|
|
14
|
+
nextArg: undefined,
|
|
15
|
+
}
|
|
16
|
+
})) as never
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(throw_, "name", { value: "throw" })
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "node:fs/promises"
|
|
2
|
+
import { type ParsedPath, relative, resolve } from "node:path"
|
|
3
|
+
import type { EventResolved } from "../events/EventResolved.ts"
|
|
4
|
+
|
|
5
|
+
export async function WriteHandler({
|
|
6
|
+
stateDir,
|
|
7
|
+
parsedPath,
|
|
8
|
+
configDir,
|
|
9
|
+
startTime,
|
|
10
|
+
}: {
|
|
11
|
+
stateDir: string
|
|
12
|
+
execId: string | undefined
|
|
13
|
+
parsedPath: ParsedPath
|
|
14
|
+
startTime: number
|
|
15
|
+
configDir: string
|
|
16
|
+
}): Promise<(event: EventResolved) => Promise<void>> {
|
|
17
|
+
const destDir = resolve(stateDir, relative(configDir, parsedPath.dir), parsedPath.name, startTime.toString())
|
|
18
|
+
let ensureDir: undefined | PromiseWithResolvers<void>
|
|
19
|
+
let i = 0
|
|
20
|
+
return async (event) => {
|
|
21
|
+
if (!ensureDir) {
|
|
22
|
+
ensureDir = Promise.withResolvers()
|
|
23
|
+
;(async () => {
|
|
24
|
+
try {
|
|
25
|
+
await mkdir(destDir, { recursive: true })
|
|
26
|
+
} catch (_e: unknown) {}
|
|
27
|
+
ensureDir.resolve()
|
|
28
|
+
})()
|
|
29
|
+
}
|
|
30
|
+
await ensureDir.promise
|
|
31
|
+
const key = `${i++}__${event.scope.join("__")}__${event.type}.json`
|
|
32
|
+
const destPath = resolve(destDir, key)
|
|
33
|
+
await writeFile(destPath, JSON.stringify(event, null, 2), "utf-8")
|
|
34
|
+
}
|
|
35
|
+
}
|
package/cli/main.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import process from "node:process"
|
|
4
|
+
import { L } from "../index.ts"
|
|
5
|
+
import type { CliCtx } from "./cli_common.ts"
|
|
6
|
+
import { runExec } from "./runExec.ts"
|
|
7
|
+
|
|
8
|
+
const args = process.argv.slice(2)
|
|
9
|
+
const command = L.enum("exec").assert(args.shift())
|
|
10
|
+
const ctl = new AbortController()
|
|
11
|
+
|
|
12
|
+
const cliCtx: CliCtx = {
|
|
13
|
+
ctl,
|
|
14
|
+
error(message) { // TODO
|
|
15
|
+
throw new Error(message)
|
|
16
|
+
},
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
switch (command) {
|
|
20
|
+
case "exec": {
|
|
21
|
+
await runExec(cliCtx, args)
|
|
22
|
+
break
|
|
23
|
+
}
|
|
24
|
+
}
|
package/cli/runExec.ts
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { dirname, isAbsolute, parse, resolve } from "node:path"
|
|
2
|
+
import { parseArgs, type ParseArgsConfig } from "node:util"
|
|
3
|
+
import { type Agent, type EventResolved, exec, L, type LiminalConfig } from "../index.ts"
|
|
4
|
+
import type { CliCtx } from "./cli_common.ts"
|
|
5
|
+
import { WriteHandler } from "./WriteHandler.ts"
|
|
6
|
+
|
|
7
|
+
const options = {
|
|
8
|
+
config: {
|
|
9
|
+
type: "string",
|
|
10
|
+
default: "liminal.ts",
|
|
11
|
+
short: "c",
|
|
12
|
+
},
|
|
13
|
+
execId: {
|
|
14
|
+
type: "string",
|
|
15
|
+
short: "i",
|
|
16
|
+
},
|
|
17
|
+
} satisfies ParseArgsConfig["options"]
|
|
18
|
+
|
|
19
|
+
export async function runExec(ctx: CliCtx, args: Array<string>) {
|
|
20
|
+
let {
|
|
21
|
+
values: {
|
|
22
|
+
config: configPath,
|
|
23
|
+
execId,
|
|
24
|
+
},
|
|
25
|
+
positionals,
|
|
26
|
+
} = parseArgs({
|
|
27
|
+
args,
|
|
28
|
+
strict: true,
|
|
29
|
+
allowPositionals: true,
|
|
30
|
+
options,
|
|
31
|
+
})
|
|
32
|
+
const configPathResolved = resolve(configPath)
|
|
33
|
+
const configDir = dirname(configPathResolved)
|
|
34
|
+
const config = await import(configPathResolved).then(({ default: default_ }) => default_ as LiminalConfig)
|
|
35
|
+
const agentPathInitial = L.string.assert(positionals[0])
|
|
36
|
+
let agentPathResolved: string
|
|
37
|
+
if (isAbsolute(agentPathInitial)) {
|
|
38
|
+
agentPathResolved = agentPathInitial
|
|
39
|
+
} else {
|
|
40
|
+
agentPathResolved = resolve(configDir, ...config.agents ? [config.agents] : [], agentPathInitial)
|
|
41
|
+
}
|
|
42
|
+
if (!agentPathResolved.endsWith(".ts")) {
|
|
43
|
+
agentPathResolved = `${agentPathResolved}.ts`
|
|
44
|
+
}
|
|
45
|
+
const parsedPath = parse(agentPathResolved)
|
|
46
|
+
let agentLike: () => Agent
|
|
47
|
+
try {
|
|
48
|
+
agentLike = await import(agentPathResolved).then(({ default: default_ }) => default_ as () => Agent)
|
|
49
|
+
} catch (_e: unknown) {
|
|
50
|
+
ctx.error(`Could not fine agent file at "${agentPathResolved}".`)
|
|
51
|
+
}
|
|
52
|
+
const startTime = Date.now()
|
|
53
|
+
const writeHandlerOrNoop = config.write
|
|
54
|
+
? await WriteHandler({
|
|
55
|
+
configDir,
|
|
56
|
+
parsedPath,
|
|
57
|
+
execId,
|
|
58
|
+
startTime,
|
|
59
|
+
stateDir: typeof config.write === "string" ? config.write : ".liminal",
|
|
60
|
+
})
|
|
61
|
+
: undefined
|
|
62
|
+
const printHandlerOrNoop = config.silent ? undefined : (event: EventResolved) => console.log(event)
|
|
63
|
+
await exec(agentLike, {
|
|
64
|
+
default: config.default,
|
|
65
|
+
args: config.args!,
|
|
66
|
+
handler(event) {
|
|
67
|
+
printHandlerOrNoop?.(event)
|
|
68
|
+
writeHandlerOrNoop?.(event)
|
|
69
|
+
},
|
|
70
|
+
signal: ctx.ctl.signal,
|
|
71
|
+
})
|
|
72
|
+
}
|
package/dist/Action.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Scope } from "./Scope.ts";
|
|
2
|
+
import type { Spec } from "./Spec.ts";
|
|
3
|
+
import type { PromiseOr } from "./util/PromiseOr.ts";
|
|
4
|
+
export interface Action<K extends string = string, S extends Spec = Spec> {
|
|
5
|
+
"": S;
|
|
6
|
+
type: K;
|
|
7
|
+
[ActionKey]: true;
|
|
8
|
+
trace: string;
|
|
9
|
+
reducer(this: this, scope: Scope): PromiseOr<Scope>;
|
|
10
|
+
}
|
|
11
|
+
export type ActionReducer<K extends string, S extends Spec> = (this: Action<K, S>, scope: Scope) => PromiseOr<Scope>;
|
|
12
|
+
export declare function Action<K extends string, S extends Spec>(type: K, reducer: ActionReducer<K, S>): Action<K, S>;
|
|
13
|
+
export type ActionKey = typeof ActionKey;
|
|
14
|
+
export declare const ActionKey: unique symbol;
|
|
15
|
+
export declare function isAction(value: unknown): value is Action;
|
package/dist/Action.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function Action(type, reducer) {
|
|
2
|
+
return {
|
|
3
|
+
type,
|
|
4
|
+
[ActionKey]: true,
|
|
5
|
+
trace: new Error().stack,
|
|
6
|
+
reducer,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export const ActionKey = Symbol("Liminal/Action");
|
|
10
|
+
export function isAction(value) {
|
|
11
|
+
return typeof value === "object" && value !== null && ActionKey in value;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=Action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../Action.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,MAAM,CAAmC,IAAO,EAAE,OAA4B;IAC5F,OAAQ;QACN,IAAI;QACJ,CAAC,SAAS,CAAC,EAAE,IAAI;QACjB,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC,KAAM;QACzB,OAAO;KACmC,CAAA;AAC9C,CAAC;AAGD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAA;AAEjD,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,CAAA;AAC1E,CAAC"}
|
package/dist/Agent.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Action } from "./Action.ts";
|
|
2
|
+
import type { DeferredOr } from "./util/DeferredOr.ts";
|
|
3
|
+
import type { IteratorLike } from "./util/IteratorLike.ts";
|
|
4
|
+
export type Agent<Y extends Action = Action, R = any> = IteratorLike<Y, R>;
|
|
5
|
+
export type AgentLike<Y extends Action = Action, R = any> = DeferredOr<Agent<Y, R>>;
|
|
6
|
+
export type AgentLikeY<A extends AgentLike> = A extends AgentLike<infer Y> ? Y : never;
|
|
7
|
+
export type AgentLikeT<A extends AgentLike> = A extends AgentLike<Action, infer T> ? T : never;
|
package/dist/Agent.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../Agent.ts"],"names":[],"mappings":""}
|
package/dist/Exec.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Action } from "./Action.ts";
|
|
2
|
+
import type { Agent } from "./Agent.ts";
|
|
3
|
+
import type { EventHandler } from "./events/EventHandler.ts";
|
|
4
|
+
import type { EventResolved, ExtractEventResolved } from "./events/EventResolved.ts";
|
|
5
|
+
import type { LanguageModel } from "./Model.ts";
|
|
6
|
+
import type { FromEntries } from "./util/FromEntries.ts";
|
|
7
|
+
import type { JSONKey } from "./util/JSONKey.ts";
|
|
8
|
+
export interface ExecConfig {
|
|
9
|
+
default: LanguageModel;
|
|
10
|
+
args?: Record<JSONKey, any>;
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
handler?: EventHandler;
|
|
13
|
+
}
|
|
14
|
+
export type ExtractExecConfig<Y extends Action> = {
|
|
15
|
+
default: LanguageModel;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
handler?: EventHandler<Extract<ExtractEventResolved<Y[""]> & {}, EventResolved>>;
|
|
18
|
+
} & ([
|
|
19
|
+
Y[""]["Entry"]
|
|
20
|
+
] extends [never] ? {
|
|
21
|
+
args?: undefined;
|
|
22
|
+
} : {
|
|
23
|
+
args: FromEntries<Y[""]["Entry"]>;
|
|
24
|
+
});
|
|
25
|
+
export declare function exec<Y extends Action, T>(createAgent: () => Agent<Y, T>, config: ExtractExecConfig<Y>): Promise<T>;
|
package/dist/Exec.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RootScope } from "./Scope.js";
|
|
2
|
+
export async function exec(createAgent, config) {
|
|
3
|
+
let scope = RootScope(config);
|
|
4
|
+
scope = await scope.reduce(createAgent());
|
|
5
|
+
const { signal: { aborted, reason } } = scope.controller;
|
|
6
|
+
if (aborted) {
|
|
7
|
+
scope.event({
|
|
8
|
+
type: "aborted",
|
|
9
|
+
reason,
|
|
10
|
+
});
|
|
11
|
+
throw reason;
|
|
12
|
+
}
|
|
13
|
+
scope.event({
|
|
14
|
+
type: "returned",
|
|
15
|
+
value: scope.value,
|
|
16
|
+
});
|
|
17
|
+
return scope.value;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Exec.js.map
|
package/dist/Exec.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Exec.js","sourceRoot":"","sources":["../Exec.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AA0BlD,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,WAA8B,EAC9B,MAA4B;IAE5B,IAAI,KAAK,GAAU,SAAS,CAAC,MAAe,CAAC,CAAA;IAC7C,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,UAAU,CAAA;IACxD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,KAAK,CAAC;YACV,IAAI,EAAE,SAAS;YACf,MAAM;SACP,CAAC,CAAA;QACF,MAAM,MAAM,CAAA;IACd,CAAC;IACD,KAAK,CAAC,KAAK,CAAC;QACV,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAA;IACF,OAAO,KAAK,CAAC,KAAK,CAAA;AACpB,CAAC"}
|