@yolk-sdk/agent 0.0.1-canary.0
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/LICENSE +21 -0
- package/README.md +93 -0
- package/dist/client/index.d.mts +3 -0
- package/dist/client/index.mjs +3 -0
- package/dist/client/state.d.mts +99 -0
- package/dist/client/state.d.mts.map +1 -0
- package/dist/client/state.mjs +245 -0
- package/dist/client/state.mjs.map +1 -0
- package/dist/client/transport.d.mts +67 -0
- package/dist/client/transport.d.mts.map +1 -0
- package/dist/client/transport.mjs +219 -0
- package/dist/client/transport.mjs.map +1 -0
- package/dist/index.d.mts +1 -0
- package/dist/index.mjs +1 -0
- package/dist/loop/accumulator.d.mts +11 -0
- package/dist/loop/accumulator.d.mts.map +1 -0
- package/dist/loop/accumulator.mjs +40 -0
- package/dist/loop/accumulator.mjs.map +1 -0
- package/dist/loop/error.d.mts +36 -0
- package/dist/loop/error.d.mts.map +1 -0
- package/dist/loop/error.mjs +84 -0
- package/dist/loop/error.mjs.map +1 -0
- package/dist/loop/index.d.mts +9 -0
- package/dist/loop/index.mjs +9 -0
- package/dist/loop/llm-event.d.mts +44 -0
- package/dist/loop/llm-event.d.mts.map +1 -0
- package/dist/loop/llm-event.mjs +34 -0
- package/dist/loop/llm-event.mjs.map +1 -0
- package/dist/loop/run.d.mts +37 -0
- package/dist/loop/run.d.mts.map +1 -0
- package/dist/loop/run.mjs +624 -0
- package/dist/loop/run.mjs.map +1 -0
- package/dist/loop/services/context-transformer.d.mts +18 -0
- package/dist/loop/services/context-transformer.d.mts.map +1 -0
- package/dist/loop/services/context-transformer.mjs +12 -0
- package/dist/loop/services/context-transformer.mjs.map +1 -0
- package/dist/loop/services/llm-provider.d.mts +20 -0
- package/dist/loop/services/llm-provider.d.mts.map +1 -0
- package/dist/loop/services/llm-provider.mjs +7 -0
- package/dist/loop/services/llm-provider.mjs.map +1 -0
- package/dist/loop/services/loop-config.d.mts +17 -0
- package/dist/loop/services/loop-config.d.mts.map +1 -0
- package/dist/loop/services/loop-config.mjs +15 -0
- package/dist/loop/services/loop-config.mjs.map +1 -0
- package/dist/loop/services/tool-executor.d.mts +12 -0
- package/dist/loop/services/tool-executor.d.mts.map +1 -0
- package/dist/loop/services/tool-executor.mjs +7 -0
- package/dist/loop/services/tool-executor.mjs.map +1 -0
- package/dist/loop/testing/faux-provider.d.mts +31 -0
- package/dist/loop/testing/faux-provider.d.mts.map +1 -0
- package/dist/loop/testing/faux-provider.mjs +47 -0
- package/dist/loop/testing/faux-provider.mjs.map +1 -0
- package/dist/loop/testing/index.d.mts +3 -0
- package/dist/loop/testing/index.mjs +3 -0
- package/dist/loop/testing/test-tool-executor.d.mts +10 -0
- package/dist/loop/testing/test-tool-executor.d.mts.map +1 -0
- package/dist/loop/testing/test-tool-executor.mjs +21 -0
- package/dist/loop/testing/test-tool-executor.mjs.map +1 -0
- package/dist/protocol/capability.d.mts +20 -0
- package/dist/protocol/capability.d.mts.map +1 -0
- package/dist/protocol/capability.mjs +34 -0
- package/dist/protocol/capability.mjs.map +1 -0
- package/dist/protocol/content.d.mts +31 -0
- package/dist/protocol/content.d.mts.map +1 -0
- package/dist/protocol/content.mjs +52 -0
- package/dist/protocol/content.mjs.map +1 -0
- package/dist/protocol/event.d.mts +228 -0
- package/dist/protocol/event.d.mts.map +1 -0
- package/dist/protocol/event.mjs +217 -0
- package/dist/protocol/event.mjs.map +1 -0
- package/dist/protocol/index.d.mts +14 -0
- package/dist/protocol/index.d.mts.map +1 -0
- package/dist/protocol/index.mjs +9 -0
- package/dist/protocol/message.d.mts +53 -0
- package/dist/protocol/message.d.mts.map +1 -0
- package/dist/protocol/message.mjs +49 -0
- package/dist/protocol/message.mjs.map +1 -0
- package/dist/protocol/reasoning.d.mts +8 -0
- package/dist/protocol/reasoning.d.mts.map +1 -0
- package/dist/protocol/reasoning.mjs +13 -0
- package/dist/protocol/reasoning.mjs.map +1 -0
- package/dist/protocol/session.d.mts +39 -0
- package/dist/protocol/session.d.mts.map +1 -0
- package/dist/protocol/session.mjs +38 -0
- package/dist/protocol/session.mjs.map +1 -0
- package/dist/protocol/tool.d.mts +101 -0
- package/dist/protocol/tool.d.mts.map +1 -0
- package/dist/protocol/tool.mjs +102 -0
- package/dist/protocol/tool.mjs.map +1 -0
- package/dist/protocol/usage.d.mts +26 -0
- package/dist/protocol/usage.d.mts.map +1 -0
- package/dist/protocol/usage.mjs +40 -0
- package/dist/protocol/usage.mjs.map +1 -0
- package/dist/runtime/error.d.mts +29 -0
- package/dist/runtime/error.d.mts.map +1 -0
- package/dist/runtime/error.mjs +46 -0
- package/dist/runtime/error.mjs.map +1 -0
- package/dist/runtime/index.d.mts +9 -0
- package/dist/runtime/index.d.mts.map +1 -0
- package/dist/runtime/index.mjs +4 -0
- package/dist/runtime/run-runtime.d.mts +47 -0
- package/dist/runtime/run-runtime.d.mts.map +1 -0
- package/dist/runtime/run-runtime.mjs +112 -0
- package/dist/runtime/run-runtime.mjs.map +1 -0
- package/dist/runtime/session-event-store.d.mts +75 -0
- package/dist/runtime/session-event-store.d.mts.map +1 -0
- package/dist/runtime/session-event-store.mjs +124 -0
- package/dist/runtime/session-event-store.mjs.map +1 -0
- package/dist/tools/index.d.mts +4 -0
- package/dist/tools/index.mjs +4 -0
- package/dist/tools/question.d.mts +21 -0
- package/dist/tools/question.d.mts.map +1 -0
- package/dist/tools/question.mjs +41 -0
- package/dist/tools/question.mjs.map +1 -0
- package/dist/tools/registry.d.mts +61 -0
- package/dist/tools/registry.d.mts.map +1 -0
- package/dist/tools/registry.mjs +113 -0
- package/dist/tools/registry.mjs.map +1 -0
- package/dist/tools/task.d.mts +34 -0
- package/dist/tools/task.d.mts.map +1 -0
- package/dist/tools/task.mjs +81 -0
- package/dist/tools/task.mjs.map +1 -0
- package/package.json +86 -0
- package/src/client/README.md +23 -0
- package/src/client/index.ts +43 -0
- package/src/client/state.ts +380 -0
- package/src/client/transport.ts +517 -0
- package/src/index.ts +2 -0
- package/src/loop/README.md +23 -0
- package/src/loop/accumulator.ts +71 -0
- package/src/loop/error.ts +105 -0
- package/src/loop/index.ts +35 -0
- package/src/loop/llm-event.ts +52 -0
- package/src/loop/run.ts +1237 -0
- package/src/loop/services/context-transformer.ts +24 -0
- package/src/loop/services/llm-provider.ts +20 -0
- package/src/loop/services/loop-config.ts +20 -0
- package/src/loop/services/tool-executor.ts +11 -0
- package/src/loop/testing/faux-provider.ts +94 -0
- package/src/loop/testing/index.ts +3 -0
- package/src/loop/testing/test-tool-executor.ts +28 -0
- package/src/protocol/README.md +24 -0
- package/src/protocol/capability.ts +29 -0
- package/src/protocol/content.ts +76 -0
- package/src/protocol/event.ts +286 -0
- package/src/protocol/index.ts +109 -0
- package/src/protocol/message.ts +86 -0
- package/src/protocol/reasoning.ts +4 -0
- package/src/protocol/session.ts +47 -0
- package/src/protocol/tool.ts +154 -0
- package/src/protocol/usage.ts +48 -0
- package/src/runtime/README.md +44 -0
- package/src/runtime/error.ts +70 -0
- package/src/runtime/index.ts +43 -0
- package/src/runtime/run-runtime.ts +307 -0
- package/src/runtime/session-event-store.ts +254 -0
- package/src/tools/README.md +22 -0
- package/src/tools/index.ts +29 -0
- package/src/tools/question.ts +58 -0
- package/src/tools/registry.ts +228 -0
- package/src/tools/task.ts +132 -0
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
|
|
3
|
+
//#region src/protocol/reasoning.d.ts
|
|
4
|
+
declare const AgentReasoningEffort: Schema.Literals<readonly ["minimal", "low", "medium", "high", "xhigh"]>;
|
|
5
|
+
type AgentReasoningEffort = typeof AgentReasoningEffort.Type;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { AgentReasoningEffort };
|
|
8
|
+
//# sourceMappingURL=reasoning.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning.d.mts","names":[],"sources":["../../src/protocol/reasoning.ts"],"mappings":";;;cAEa,oBAAA,EAAoB,MAAA,CAAA,QAAA;AAAA,KACrB,oBAAA,UAA8B,oBAAA,CAAqB,IAAI"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
//#region src/protocol/reasoning.ts
|
|
3
|
+
const AgentReasoningEffort = Schema.Literals([
|
|
4
|
+
"minimal",
|
|
5
|
+
"low",
|
|
6
|
+
"medium",
|
|
7
|
+
"high",
|
|
8
|
+
"xhigh"
|
|
9
|
+
]);
|
|
10
|
+
//#endregion
|
|
11
|
+
export { AgentReasoningEffort };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=reasoning.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reasoning.mjs","names":[],"sources":["../../src/protocol/reasoning.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\n\nexport const AgentReasoningEffort = Schema.Literals(['minimal', 'low', 'medium', 'high', 'xhigh'])\nexport type AgentReasoningEffort = typeof AgentReasoningEffort.Type\n"],"mappings":";;AAEA,MAAa,uBAAuB,OAAO,SAAS;CAAC;CAAW;CAAO;CAAU;CAAQ;AAAO,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { QuestionResponse, ToolApprovalResponse } from "./tool.mjs";
|
|
2
|
+
import { AssistantAgentMessage, ToolResultMessage, UserMessage } from "./message.mjs";
|
|
3
|
+
import { AgentAwaitingInput, AgentEnd, AgentError, AgentRetry, AgentStart, AssistantMessageEvent, CompactionEnd, CompactionStart, LLMReasoningDelta, LLMStreamEnd, LLMStreamStart, LLMTextDelta, ProviderToolResult, QuestionAnswered, QuestionCancelled, QuestionRequested, SubagentCompleted, SubagentStarted, ToolApprovalDenied, ToolApprovalGranted, ToolApprovalRequested, ToolExecutionCompleted, ToolExecutionError, ToolExecutionStarted, ToolInputDelta, ToolInputEnd, ToolInputStart, TurnEnd, TurnStart, UsageUpdate } from "./event.mjs";
|
|
4
|
+
import * as Schema from "effect/Schema";
|
|
5
|
+
|
|
6
|
+
//#region src/protocol/session.d.ts
|
|
7
|
+
declare const SessionSnapshot_base: Schema.Class<SessionSnapshot, Schema.TaggedStruct<"SessionSnapshot", {
|
|
8
|
+
readonly revision: Schema.Number;
|
|
9
|
+
readonly messages: Schema.$Array<Schema.Union<readonly [typeof UserMessage, typeof AssistantAgentMessage, typeof ToolResultMessage]>>;
|
|
10
|
+
}>, {}>;
|
|
11
|
+
declare class SessionSnapshot extends SessionSnapshot_base {}
|
|
12
|
+
declare const UserInput_base: Schema.Class<UserInput, Schema.TaggedStruct<"UserInput", {
|
|
13
|
+
readonly message: typeof UserMessage;
|
|
14
|
+
readonly expectedRevision: Schema.optional<Schema.Number>;
|
|
15
|
+
readonly model: Schema.optional<Schema.String>;
|
|
16
|
+
readonly reasoningEffort: Schema.optional<Schema.Literals<readonly ["minimal", "low", "medium", "high", "xhigh"]>>;
|
|
17
|
+
}>, {}>;
|
|
18
|
+
declare class UserInput extends UserInput_base {}
|
|
19
|
+
declare const ToolApprovalResponseInput_base: Schema.Class<ToolApprovalResponseInput, Schema.TaggedStruct<"ToolApprovalResponseInput", {
|
|
20
|
+
readonly response: typeof ToolApprovalResponse;
|
|
21
|
+
readonly expectedRevision: Schema.optional<Schema.Number>;
|
|
22
|
+
readonly model: Schema.optional<Schema.String>;
|
|
23
|
+
readonly reasoningEffort: Schema.optional<Schema.Literals<readonly ["minimal", "low", "medium", "high", "xhigh"]>>;
|
|
24
|
+
}>, {}>;
|
|
25
|
+
declare class ToolApprovalResponseInput extends ToolApprovalResponseInput_base {}
|
|
26
|
+
declare const QuestionResponseInput_base: Schema.Class<QuestionResponseInput, Schema.TaggedStruct<"QuestionResponseInput", {
|
|
27
|
+
readonly response: typeof QuestionResponse;
|
|
28
|
+
readonly expectedRevision: Schema.optional<Schema.Number>;
|
|
29
|
+
readonly model: Schema.optional<Schema.String>;
|
|
30
|
+
readonly reasoningEffort: Schema.optional<Schema.Literals<readonly ["minimal", "low", "medium", "high", "xhigh"]>>;
|
|
31
|
+
}>, {}>;
|
|
32
|
+
declare class QuestionResponseInput extends QuestionResponseInput_base {}
|
|
33
|
+
declare const AgentWebSocketClientMessage: Schema.Union<readonly [typeof UserInput, typeof ToolApprovalResponseInput, typeof QuestionResponseInput]>;
|
|
34
|
+
type AgentWebSocketClientMessage = typeof AgentWebSocketClientMessage.Type;
|
|
35
|
+
declare const AgentWebSocketServerMessage: Schema.Union<readonly [typeof SessionSnapshot, Schema.Union<readonly [typeof AgentStart, typeof AgentError, typeof AgentEnd, typeof AgentAwaitingInput, typeof UsageUpdate, typeof AgentRetry, typeof CompactionStart, typeof CompactionEnd, typeof TurnStart, typeof TurnEnd, typeof LLMStreamStart, typeof LLMTextDelta, typeof LLMReasoningDelta, typeof ToolInputStart, typeof ToolInputDelta, typeof ToolInputEnd, typeof LLMStreamEnd, typeof AssistantMessageEvent, typeof ToolApprovalRequested, typeof ToolApprovalGranted, typeof ToolApprovalDenied, typeof QuestionRequested, typeof QuestionAnswered, typeof QuestionCancelled, typeof ToolExecutionStarted, typeof ToolExecutionCompleted, typeof ToolExecutionError, typeof ProviderToolResult, typeof SubagentStarted, typeof SubagentCompleted]>]>;
|
|
36
|
+
type AgentWebSocketServerMessage = typeof AgentWebSocketServerMessage.Type;
|
|
37
|
+
//#endregion
|
|
38
|
+
export { AgentWebSocketClientMessage, AgentWebSocketServerMessage, QuestionResponseInput, SessionSnapshot, ToolApprovalResponseInput, UserInput };
|
|
39
|
+
//# sourceMappingURL=session.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.mts","names":[],"sources":["../../src/protocol/session.ts"],"mappings":";;;;;;cAIkE,oBAAA;;;;cAErD,eAAA,SAAwB,oBAGnC;AAAA,cAAG,cAAA;;;;;;cAEQ,SAAA,SAAkB,cAK7B;AAAA,cAAG,8BAAA;;;;;;cAEQ,yBAAA,SAAkC,8BAQ9C;AAAA,cAAG,0BAAA;;;;;;cAES,qBAAA,SAA8B,0BAQ1C;AAAA,cAEY,2BAAA,EAA2B,MAAA,CAAA,KAAA,kBAAA,SAAA,SAAA,yBAAA,SAAA,qBAAA;AAAA,KAK5B,2BAAA,UAAqC,2BAAA,CAA4B,IAAI;AAAA,cAEpE,2BAAA,EAA2B,MAAA,CAAA,KAAA,kBAAA,eAAA,EAAA,MAAA,CAAA,KAAA,kBAAA,UAAA,SAAA,UAAA,SAAA,QAAA,SAAA,kBAAA,SAAA,WAAA,SAAA,UAAA,SAAA,eAAA,SAAA,aAAA,SAAA,SAAA,SAAA,OAAA,SAAA,cAAA,SAAA,YAAA,SAAA,iBAAA,SAAA,cAAA,SAAA,cAAA,SAAA,YAAA,SAAA,YAAA,SAAA,qBAAA,SAAA,qBAAA,SAAA,mBAAA,SAAA,kBAAA,SAAA,iBAAA,SAAA,gBAAA,SAAA,iBAAA,SAAA,oBAAA,SAAA,sBAAA,SAAA,kBAAA,SAAA,kBAAA,SAAA,eAAA,SAAA,iBAAA;AAAA,KAC5B,2BAAA,UAAqC,2BAAA,CAA4B,IAAI"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { QuestionResponse, ToolApprovalResponse } from "./tool.mjs";
|
|
2
|
+
import { AgentMessage, UserMessage } from "./message.mjs";
|
|
3
|
+
import { AgentEvent } from "./event.mjs";
|
|
4
|
+
import { AgentReasoningEffort } from "./reasoning.mjs";
|
|
5
|
+
import * as Schema from "effect/Schema";
|
|
6
|
+
//#region src/protocol/session.ts
|
|
7
|
+
var SessionSnapshot = class extends Schema.TaggedClass()("SessionSnapshot", {
|
|
8
|
+
revision: Schema.Number,
|
|
9
|
+
messages: Schema.Array(AgentMessage)
|
|
10
|
+
}) {};
|
|
11
|
+
var UserInput = class extends Schema.TaggedClass()("UserInput", {
|
|
12
|
+
message: UserMessage,
|
|
13
|
+
expectedRevision: Schema.optional(Schema.Number),
|
|
14
|
+
model: Schema.optional(Schema.String),
|
|
15
|
+
reasoningEffort: Schema.optional(AgentReasoningEffort)
|
|
16
|
+
}) {};
|
|
17
|
+
var ToolApprovalResponseInput = class extends Schema.TaggedClass()("ToolApprovalResponseInput", {
|
|
18
|
+
response: ToolApprovalResponse,
|
|
19
|
+
expectedRevision: Schema.optional(Schema.Number),
|
|
20
|
+
model: Schema.optional(Schema.String),
|
|
21
|
+
reasoningEffort: Schema.optional(AgentReasoningEffort)
|
|
22
|
+
}) {};
|
|
23
|
+
var QuestionResponseInput = class extends Schema.TaggedClass()("QuestionResponseInput", {
|
|
24
|
+
response: QuestionResponse,
|
|
25
|
+
expectedRevision: Schema.optional(Schema.Number),
|
|
26
|
+
model: Schema.optional(Schema.String),
|
|
27
|
+
reasoningEffort: Schema.optional(AgentReasoningEffort)
|
|
28
|
+
}) {};
|
|
29
|
+
const AgentWebSocketClientMessage = Schema.Union([
|
|
30
|
+
UserInput,
|
|
31
|
+
ToolApprovalResponseInput,
|
|
32
|
+
QuestionResponseInput
|
|
33
|
+
]);
|
|
34
|
+
const AgentWebSocketServerMessage = Schema.Union([SessionSnapshot, AgentEvent]);
|
|
35
|
+
//#endregion
|
|
36
|
+
export { AgentWebSocketClientMessage, AgentWebSocketServerMessage, QuestionResponseInput, SessionSnapshot, ToolApprovalResponseInput, UserInput };
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=session.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.mjs","names":[],"sources":["../../src/protocol/session.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport { AgentEvent } from './event.ts'\nimport { AgentMessage, UserMessage } from './message.ts'\nimport { AgentReasoningEffort } from './reasoning.ts'\nimport { QuestionResponse, ToolApprovalResponse } from './tool.ts'\n\nexport class SessionSnapshot extends Schema.TaggedClass<SessionSnapshot>()('SessionSnapshot', {\n revision: Schema.Number,\n messages: Schema.Array(AgentMessage)\n}) {}\n\nexport class UserInput extends Schema.TaggedClass<UserInput>()('UserInput', {\n message: UserMessage,\n expectedRevision: Schema.optional(Schema.Number),\n model: Schema.optional(Schema.String),\n reasoningEffort: Schema.optional(AgentReasoningEffort)\n}) {}\n\nexport class ToolApprovalResponseInput extends Schema.TaggedClass<ToolApprovalResponseInput>()(\n 'ToolApprovalResponseInput',\n {\n response: ToolApprovalResponse,\n expectedRevision: Schema.optional(Schema.Number),\n model: Schema.optional(Schema.String),\n reasoningEffort: Schema.optional(AgentReasoningEffort)\n }\n) {}\n\nexport class QuestionResponseInput extends Schema.TaggedClass<QuestionResponseInput>()(\n 'QuestionResponseInput',\n {\n response: QuestionResponse,\n expectedRevision: Schema.optional(Schema.Number),\n model: Schema.optional(Schema.String),\n reasoningEffort: Schema.optional(AgentReasoningEffort)\n }\n) {}\n\nexport const AgentWebSocketClientMessage = Schema.Union([\n UserInput,\n ToolApprovalResponseInput,\n QuestionResponseInput\n])\nexport type AgentWebSocketClientMessage = typeof AgentWebSocketClientMessage.Type\n\nexport const AgentWebSocketServerMessage = Schema.Union([SessionSnapshot, AgentEvent])\nexport type AgentWebSocketServerMessage = typeof AgentWebSocketServerMessage.Type\n"],"mappings":";;;;;;AAMA,IAAa,kBAAb,cAAqC,OAAO,YAA6B,EAAE,mBAAmB;CAC5F,UAAU,OAAO;CACjB,UAAU,OAAO,MAAM,YAAY;AACrC,CAAC,EAAE,CAAC;AAEJ,IAAa,YAAb,cAA+B,OAAO,YAAuB,EAAE,aAAa;CAC1E,SAAS;CACT,kBAAkB,OAAO,SAAS,OAAO,MAAM;CAC/C,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,iBAAiB,OAAO,SAAS,oBAAoB;AACvD,CAAC,EAAE,CAAC;AAEJ,IAAa,4BAAb,cAA+C,OAAO,YAAuC,EAC3F,6BACA;CACE,UAAU;CACV,kBAAkB,OAAO,SAAS,OAAO,MAAM;CAC/C,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,iBAAiB,OAAO,SAAS,oBAAoB;AACvD,CACF,EAAE,CAAC;AAEH,IAAa,wBAAb,cAA2C,OAAO,YAAmC,EACnF,yBACA;CACE,UAAU;CACV,kBAAkB,OAAO,SAAS,OAAO,MAAM;CAC/C,OAAO,OAAO,SAAS,OAAO,MAAM;CACpC,iBAAiB,OAAO,SAAS,oBAAoB;AACvD,CACF,EAAE,CAAC;AAEH,MAAa,8BAA8B,OAAO,MAAM;CACtD;CACA;CACA;AACF,CAAC;AAGD,MAAa,8BAA8B,OAAO,MAAM,CAAC,iBAAiB,UAAU,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { AudioPart, ImagePart, TextPart } from "./content.mjs";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
|
|
4
|
+
//#region src/protocol/tool.d.ts
|
|
5
|
+
declare const HitlResponseSource: Schema.Literals<readonly ["user", "policy", "replay"]>;
|
|
6
|
+
type HitlResponseSource = typeof HitlResponseSource.Type;
|
|
7
|
+
declare const ToolApprovalDecision: Schema.Literals<readonly ["approved", "denied"]>;
|
|
8
|
+
type ToolApprovalDecision = typeof ToolApprovalDecision.Type;
|
|
9
|
+
declare const ToolApprovalMode: Schema.Literals<readonly ["manual"]>;
|
|
10
|
+
type ToolApprovalMode = typeof ToolApprovalMode.Type;
|
|
11
|
+
declare const ToolApprovalPolicy_base: Schema.Class<ToolApprovalPolicy, Schema.Struct<{
|
|
12
|
+
readonly mode: Schema.Literals<readonly ["manual"]>;
|
|
13
|
+
readonly reason: Schema.optional<Schema.String>;
|
|
14
|
+
}>, {}>;
|
|
15
|
+
declare class ToolApprovalPolicy extends ToolApprovalPolicy_base {}
|
|
16
|
+
declare const ToolCall_base: Schema.Class<ToolCall, Schema.Struct<{
|
|
17
|
+
readonly id: Schema.Trimmed;
|
|
18
|
+
readonly name: Schema.Trimmed;
|
|
19
|
+
readonly params: Schema.Unknown;
|
|
20
|
+
}>, {}>;
|
|
21
|
+
declare class ToolCall extends ToolCall_base {}
|
|
22
|
+
declare const ToolDef_base: Schema.Class<ToolDef, Schema.Struct<{
|
|
23
|
+
readonly name: Schema.Trimmed;
|
|
24
|
+
readonly description: Schema.String;
|
|
25
|
+
readonly parameters: Schema.Unknown;
|
|
26
|
+
readonly approval: Schema.optional<typeof ToolApprovalPolicy>;
|
|
27
|
+
}>, {}>;
|
|
28
|
+
declare class ToolDef extends ToolDef_base {}
|
|
29
|
+
declare const ToolResult_base: Schema.Class<ToolResult, Schema.Struct<{
|
|
30
|
+
readonly toolCallId: Schema.Trimmed;
|
|
31
|
+
readonly content: Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Union<readonly [typeof TextPart, typeof ImagePart, typeof AudioPart]>>]>;
|
|
32
|
+
readonly isError: Schema.optional<Schema.Boolean>;
|
|
33
|
+
readonly structuredContent: Schema.optional<Schema.Unknown>;
|
|
34
|
+
}>, {}>;
|
|
35
|
+
declare class ToolResult extends ToolResult_base {}
|
|
36
|
+
declare const ToolApprovalRequest_base: Schema.Class<ToolApprovalRequest, Schema.TaggedStruct<"ToolApprovalRequest", {
|
|
37
|
+
readonly requestId: Schema.Trimmed;
|
|
38
|
+
readonly toolCallId: Schema.Trimmed;
|
|
39
|
+
readonly call: typeof ToolCall;
|
|
40
|
+
readonly policy: Schema.optional<typeof ToolApprovalPolicy>;
|
|
41
|
+
}>, {}>;
|
|
42
|
+
declare class ToolApprovalRequest extends ToolApprovalRequest_base {}
|
|
43
|
+
declare const ToolApprovalResponse_base: Schema.Class<ToolApprovalResponse, Schema.TaggedStruct<"ToolApprovalResponse", {
|
|
44
|
+
readonly requestId: Schema.Trimmed;
|
|
45
|
+
readonly toolCallId: Schema.Trimmed;
|
|
46
|
+
readonly decision: Schema.Literals<readonly ["approved", "denied"]>;
|
|
47
|
+
readonly source: Schema.Literals<readonly ["user", "policy", "replay"]>;
|
|
48
|
+
readonly reason: Schema.optional<Schema.String>;
|
|
49
|
+
}>, {}>;
|
|
50
|
+
declare class ToolApprovalResponse extends ToolApprovalResponse_base {}
|
|
51
|
+
declare const QuestionOption_base: Schema.Class<QuestionOption, Schema.Struct<{
|
|
52
|
+
readonly id: Schema.Trimmed;
|
|
53
|
+
readonly label: Schema.Trimmed;
|
|
54
|
+
readonly description: Schema.optional<Schema.String>;
|
|
55
|
+
}>, {}>;
|
|
56
|
+
declare class QuestionOption extends QuestionOption_base {}
|
|
57
|
+
declare const QuestionPrompt_base: Schema.Class<QuestionPrompt, Schema.Struct<{
|
|
58
|
+
readonly id: Schema.Trimmed;
|
|
59
|
+
readonly prompt: Schema.Trimmed;
|
|
60
|
+
readonly options: Schema.optional<Schema.$Array<typeof QuestionOption>>;
|
|
61
|
+
readonly multiple: Schema.optional<Schema.Boolean>;
|
|
62
|
+
readonly allowCustom: Schema.optional<Schema.Boolean>;
|
|
63
|
+
readonly required: Schema.optional<Schema.Boolean>;
|
|
64
|
+
}>, {}>;
|
|
65
|
+
declare class QuestionPrompt extends QuestionPrompt_base {}
|
|
66
|
+
declare const QuestionToolParams_base: Schema.Class<QuestionToolParams, Schema.Struct<{
|
|
67
|
+
readonly questions: Schema.NonEmptyArray<typeof QuestionPrompt>;
|
|
68
|
+
}>, {}>;
|
|
69
|
+
declare class QuestionToolParams extends QuestionToolParams_base {}
|
|
70
|
+
declare const QuestionRequest_base: Schema.Class<QuestionRequest, Schema.TaggedStruct<"QuestionRequest", {
|
|
71
|
+
readonly requestId: Schema.Trimmed;
|
|
72
|
+
readonly toolCallId: Schema.Trimmed;
|
|
73
|
+
readonly call: typeof ToolCall;
|
|
74
|
+
readonly questions: Schema.NonEmptyArray<typeof QuestionPrompt>;
|
|
75
|
+
}>, {}>;
|
|
76
|
+
declare class QuestionRequest extends QuestionRequest_base {}
|
|
77
|
+
declare const QuestionAnswer_base: Schema.Class<QuestionAnswer, Schema.Struct<{
|
|
78
|
+
readonly questionId: Schema.Trimmed;
|
|
79
|
+
readonly optionIds: Schema.optional<Schema.$Array<Schema.Trimmed>>;
|
|
80
|
+
readonly customAnswer: Schema.optional<Schema.String>;
|
|
81
|
+
}>, {}>;
|
|
82
|
+
declare class QuestionAnswer extends QuestionAnswer_base {}
|
|
83
|
+
declare const QuestionResponseOutcome: Schema.Literals<readonly ["answered", "cancelled"]>;
|
|
84
|
+
type QuestionResponseOutcome = typeof QuestionResponseOutcome.Type;
|
|
85
|
+
declare const QuestionResponse_base: Schema.Class<QuestionResponse, Schema.TaggedStruct<"QuestionResponse", {
|
|
86
|
+
readonly requestId: Schema.Trimmed;
|
|
87
|
+
readonly toolCallId: Schema.Trimmed;
|
|
88
|
+
readonly outcome: Schema.Literals<readonly ["answered", "cancelled"]>;
|
|
89
|
+
readonly source: Schema.Literals<readonly ["user", "policy", "replay"]>;
|
|
90
|
+
readonly answers: Schema.optional<Schema.$Array<typeof QuestionAnswer>>;
|
|
91
|
+
readonly reason: Schema.optional<Schema.String>;
|
|
92
|
+
}>, {}>;
|
|
93
|
+
declare class QuestionResponse extends QuestionResponse_base {}
|
|
94
|
+
declare const formatQuestionResponseContent: (response: QuestionResponse, questions?: ReadonlyArray<QuestionPrompt>) => string;
|
|
95
|
+
declare const HitlRequest: Schema.Union<readonly [typeof ToolApprovalRequest, typeof QuestionRequest]>;
|
|
96
|
+
type HitlRequest = typeof HitlRequest.Type;
|
|
97
|
+
declare const HitlResponse: Schema.Union<readonly [typeof ToolApprovalResponse, typeof QuestionResponse]>;
|
|
98
|
+
type HitlResponse = typeof HitlResponse.Type;
|
|
99
|
+
//#endregion
|
|
100
|
+
export { HitlRequest, HitlResponse, HitlResponseSource, QuestionAnswer, QuestionOption, QuestionPrompt, QuestionRequest, QuestionResponse, QuestionResponseOutcome, QuestionToolParams, ToolApprovalDecision, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalResponse, ToolCall, ToolDef, ToolResult, formatQuestionResponseContent };
|
|
101
|
+
//# sourceMappingURL=tool.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.mts","names":[],"sources":["../../src/protocol/tool.ts"],"mappings":";;;;cAKa,kBAAA,EAAkB,MAAA,CAAA,QAAA;AAAA,KACnB,kBAAA,UAA4B,kBAAA,CAAmB,IAAI;AAAA,cAElD,oBAAA,EAAoB,MAAA,CAAA,QAAA;AAAA,KACrB,oBAAA,UAA8B,oBAAA,CAAqB,IAAI;AAAA,cAEtD,gBAAA,EAAgB,MAAA,CAAA,QAAA;AAAA,KACjB,gBAAA,UAA0B,gBAAA,CAAiB,IAAI;AAAA,cAAA,uBAAA;;;;cAE9C,kBAAA,SAA2B,uBAGtC;AAAA,cAAG,aAAA;;;;;cAEQ,QAAA,SAAiB,aAI5B;AAAA,cAAG,YAAA;;;;;;cAEQ,OAAA,SAAgB,YAK3B;AAAA,cAAG,eAAA;;;;;;cAEQ,UAAA,SAAmB,eAK9B;AAAA,cAAG,wBAAA;;;;;;cAEQ,mBAAA,SAA4B,wBAQxC;AAAA,cAAG,yBAAA;;;;;;;cAES,oBAAA,SAA6B,yBASzC;AAAA,cAAG,mBAAA;;;;;cAES,cAAA,SAAuB,mBAIlC;AAAA,cAAG,mBAAA;;;;;;;;cAEQ,cAAA,SAAuB,mBAOlC;AAAA,cAAG,uBAAA;;;cAEQ,kBAAA,SAA2B,uBAEtC;AAAA,cAAG,oBAAA;;;;;;cAEQ,eAAA,SAAwB,oBAKnC;AAAA,cAAG,mBAAA;;;;;cAEQ,cAAA,SAAuB,mBAIlC;AAAA,cAEW,uBAAA,EAAuB,MAAA,CAAA,QAAA;AAAA,KACxB,uBAAA,UAAiC,uBAAA,CAAwB,IAAI;AAAA,cAAA,qBAAA;;;;;;;;cAE5D,gBAAA,SAAyB,qBAOpC;AAAA,cAyBW,6BAAA,GACX,QAAA,EAAU,gBAAA,EACV,SAAA,GAAW,aAAA,CAAc,cAAA;AAAA,cAoBd,WAAA,EAAW,MAAA,CAAA,KAAA,kBAAA,mBAAA,SAAA,eAAA;AAAA,KACZ,WAAA,UAAqB,WAAA,CAAY,IAAI;AAAA,cAEpC,YAAA,EAAY,MAAA,CAAA,KAAA,kBAAA,oBAAA,SAAA,gBAAA;AAAA,KACb,YAAA,UAAsB,YAAA,CAAa,IAAI"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Content } from "./content.mjs";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
//#region src/protocol/tool.ts
|
|
4
|
+
const NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()));
|
|
5
|
+
const HitlResponseSource = Schema.Literals([
|
|
6
|
+
"user",
|
|
7
|
+
"policy",
|
|
8
|
+
"replay"
|
|
9
|
+
]);
|
|
10
|
+
const ToolApprovalDecision = Schema.Literals(["approved", "denied"]);
|
|
11
|
+
const ToolApprovalMode = Schema.Literals(["manual"]);
|
|
12
|
+
var ToolApprovalPolicy = class extends Schema.Class("ToolApprovalPolicy")({
|
|
13
|
+
mode: ToolApprovalMode,
|
|
14
|
+
reason: Schema.optional(Schema.String)
|
|
15
|
+
}) {};
|
|
16
|
+
var ToolCall = class extends Schema.Class("ToolCall")({
|
|
17
|
+
id: NonEmptyTrimmedString,
|
|
18
|
+
name: NonEmptyTrimmedString,
|
|
19
|
+
params: Schema.Unknown
|
|
20
|
+
}) {};
|
|
21
|
+
var ToolDef = class extends Schema.Class("ToolDef")({
|
|
22
|
+
name: NonEmptyTrimmedString,
|
|
23
|
+
description: Schema.String,
|
|
24
|
+
parameters: Schema.Unknown,
|
|
25
|
+
approval: Schema.optional(ToolApprovalPolicy)
|
|
26
|
+
}) {};
|
|
27
|
+
var ToolResult = class extends Schema.Class("ToolResult")({
|
|
28
|
+
toolCallId: NonEmptyTrimmedString,
|
|
29
|
+
content: Content,
|
|
30
|
+
isError: Schema.optional(Schema.Boolean),
|
|
31
|
+
structuredContent: Schema.optional(Schema.Unknown)
|
|
32
|
+
}) {};
|
|
33
|
+
var ToolApprovalRequest = class extends Schema.TaggedClass()("ToolApprovalRequest", {
|
|
34
|
+
requestId: NonEmptyTrimmedString,
|
|
35
|
+
toolCallId: NonEmptyTrimmedString,
|
|
36
|
+
call: ToolCall,
|
|
37
|
+
policy: Schema.optional(ToolApprovalPolicy)
|
|
38
|
+
}) {};
|
|
39
|
+
var ToolApprovalResponse = class extends Schema.TaggedClass()("ToolApprovalResponse", {
|
|
40
|
+
requestId: NonEmptyTrimmedString,
|
|
41
|
+
toolCallId: NonEmptyTrimmedString,
|
|
42
|
+
decision: ToolApprovalDecision,
|
|
43
|
+
source: HitlResponseSource,
|
|
44
|
+
reason: Schema.optional(Schema.String)
|
|
45
|
+
}) {};
|
|
46
|
+
var QuestionOption = class extends Schema.Class("QuestionOption")({
|
|
47
|
+
id: NonEmptyTrimmedString,
|
|
48
|
+
label: NonEmptyTrimmedString,
|
|
49
|
+
description: Schema.optional(Schema.String)
|
|
50
|
+
}) {};
|
|
51
|
+
var QuestionPrompt = class extends Schema.Class("QuestionPrompt")({
|
|
52
|
+
id: NonEmptyTrimmedString,
|
|
53
|
+
prompt: NonEmptyTrimmedString,
|
|
54
|
+
options: Schema.optional(Schema.Array(QuestionOption)),
|
|
55
|
+
multiple: Schema.optional(Schema.Boolean),
|
|
56
|
+
allowCustom: Schema.optional(Schema.Boolean),
|
|
57
|
+
required: Schema.optional(Schema.Boolean)
|
|
58
|
+
}) {};
|
|
59
|
+
var QuestionToolParams = class extends Schema.Class("QuestionToolParams")({ questions: Schema.NonEmptyArray(QuestionPrompt) }) {};
|
|
60
|
+
var QuestionRequest = class extends Schema.TaggedClass()("QuestionRequest", {
|
|
61
|
+
requestId: NonEmptyTrimmedString,
|
|
62
|
+
toolCallId: NonEmptyTrimmedString,
|
|
63
|
+
call: ToolCall,
|
|
64
|
+
questions: Schema.NonEmptyArray(QuestionPrompt)
|
|
65
|
+
}) {};
|
|
66
|
+
var QuestionAnswer = class extends Schema.Class("QuestionAnswer")({
|
|
67
|
+
questionId: NonEmptyTrimmedString,
|
|
68
|
+
optionIds: Schema.optional(Schema.Array(NonEmptyTrimmedString)),
|
|
69
|
+
customAnswer: Schema.optional(Schema.String)
|
|
70
|
+
}) {};
|
|
71
|
+
const QuestionResponseOutcome = Schema.Literals(["answered", "cancelled"]);
|
|
72
|
+
var QuestionResponse = class extends Schema.TaggedClass()("QuestionResponse", {
|
|
73
|
+
requestId: NonEmptyTrimmedString,
|
|
74
|
+
toolCallId: NonEmptyTrimmedString,
|
|
75
|
+
outcome: QuestionResponseOutcome,
|
|
76
|
+
source: HitlResponseSource,
|
|
77
|
+
answers: Schema.optional(Schema.Array(QuestionAnswer)),
|
|
78
|
+
reason: Schema.optional(Schema.String)
|
|
79
|
+
}) {};
|
|
80
|
+
const optionLabel = (question, optionId) => question.options?.find((option) => option.id === optionId)?.label ?? optionId;
|
|
81
|
+
const questionForAnswer = (questions, answer) => questions.find((question) => question.id === answer.questionId);
|
|
82
|
+
const formatQuestionAnswer = (answer, questions) => {
|
|
83
|
+
const question = questionForAnswer(questions, answer);
|
|
84
|
+
const prompt = question?.prompt ?? answer.questionId;
|
|
85
|
+
const selected = answer.optionIds?.map((optionId) => question === void 0 ? optionId : optionLabel(question, optionId)) ?? [];
|
|
86
|
+
const custom = answer.customAnswer?.trim();
|
|
87
|
+
const values = custom === void 0 || custom.length === 0 ? selected : [...selected, custom];
|
|
88
|
+
return values.length === 0 ? `- ${prompt}: answered` : `- ${prompt}: ${values.join(", ")}`;
|
|
89
|
+
};
|
|
90
|
+
const formatQuestionResponseContent = (response, questions = []) => {
|
|
91
|
+
if (response.outcome === "cancelled") return `Question cancelled: ${response.reason ?? "Question cancelled"}`;
|
|
92
|
+
const answers = response.answers ?? [];
|
|
93
|
+
if (answers.length === 0) return "User answered the question, but no answer values were provided. Continue with this in mind.";
|
|
94
|
+
const formatted = answers.map((answer) => formatQuestionAnswer(answer, questions).slice(2)).join("; ");
|
|
95
|
+
return `User has answered your ${answers.length === 1 ? "question" : "questions"}: ${formatted}. Continue with the user's answers in mind.`;
|
|
96
|
+
};
|
|
97
|
+
const HitlRequest = Schema.Union([ToolApprovalRequest, QuestionRequest]);
|
|
98
|
+
const HitlResponse = Schema.Union([ToolApprovalResponse, QuestionResponse]);
|
|
99
|
+
//#endregion
|
|
100
|
+
export { HitlRequest, HitlResponse, HitlResponseSource, QuestionAnswer, QuestionOption, QuestionPrompt, QuestionRequest, QuestionResponse, QuestionResponseOutcome, QuestionToolParams, ToolApprovalDecision, ToolApprovalMode, ToolApprovalPolicy, ToolApprovalRequest, ToolApprovalResponse, ToolCall, ToolDef, ToolResult, formatQuestionResponseContent };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=tool.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.mjs","names":[],"sources":["../../src/protocol/tool.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport { Content } from './content.ts'\n\nconst NonEmptyTrimmedString = Schema.Trimmed.pipe(Schema.check(Schema.isNonEmpty()))\n\nexport const HitlResponseSource = Schema.Literals(['user', 'policy', 'replay'])\nexport type HitlResponseSource = typeof HitlResponseSource.Type\n\nexport const ToolApprovalDecision = Schema.Literals(['approved', 'denied'])\nexport type ToolApprovalDecision = typeof ToolApprovalDecision.Type\n\nexport const ToolApprovalMode = Schema.Literals(['manual'])\nexport type ToolApprovalMode = typeof ToolApprovalMode.Type\n\nexport class ToolApprovalPolicy extends Schema.Class<ToolApprovalPolicy>('ToolApprovalPolicy')({\n mode: ToolApprovalMode,\n reason: Schema.optional(Schema.String)\n}) {}\n\nexport class ToolCall extends Schema.Class<ToolCall>('ToolCall')({\n id: NonEmptyTrimmedString,\n name: NonEmptyTrimmedString,\n params: Schema.Unknown\n}) {}\n\nexport class ToolDef extends Schema.Class<ToolDef>('ToolDef')({\n name: NonEmptyTrimmedString,\n description: Schema.String,\n parameters: Schema.Unknown,\n approval: Schema.optional(ToolApprovalPolicy)\n}) {}\n\nexport class ToolResult extends Schema.Class<ToolResult>('ToolResult')({\n toolCallId: NonEmptyTrimmedString,\n content: Content,\n isError: Schema.optional(Schema.Boolean),\n structuredContent: Schema.optional(Schema.Unknown)\n}) {}\n\nexport class ToolApprovalRequest extends Schema.TaggedClass<ToolApprovalRequest>()(\n 'ToolApprovalRequest',\n {\n requestId: NonEmptyTrimmedString,\n toolCallId: NonEmptyTrimmedString,\n call: ToolCall,\n policy: Schema.optional(ToolApprovalPolicy)\n }\n) {}\n\nexport class ToolApprovalResponse extends Schema.TaggedClass<ToolApprovalResponse>()(\n 'ToolApprovalResponse',\n {\n requestId: NonEmptyTrimmedString,\n toolCallId: NonEmptyTrimmedString,\n decision: ToolApprovalDecision,\n source: HitlResponseSource,\n reason: Schema.optional(Schema.String)\n }\n) {}\n\nexport class QuestionOption extends Schema.Class<QuestionOption>('QuestionOption')({\n id: NonEmptyTrimmedString,\n label: NonEmptyTrimmedString,\n description: Schema.optional(Schema.String)\n}) {}\n\nexport class QuestionPrompt extends Schema.Class<QuestionPrompt>('QuestionPrompt')({\n id: NonEmptyTrimmedString,\n prompt: NonEmptyTrimmedString,\n options: Schema.optional(Schema.Array(QuestionOption)),\n multiple: Schema.optional(Schema.Boolean),\n allowCustom: Schema.optional(Schema.Boolean),\n required: Schema.optional(Schema.Boolean)\n}) {}\n\nexport class QuestionToolParams extends Schema.Class<QuestionToolParams>('QuestionToolParams')({\n questions: Schema.NonEmptyArray(QuestionPrompt)\n}) {}\n\nexport class QuestionRequest extends Schema.TaggedClass<QuestionRequest>()('QuestionRequest', {\n requestId: NonEmptyTrimmedString,\n toolCallId: NonEmptyTrimmedString,\n call: ToolCall,\n questions: Schema.NonEmptyArray(QuestionPrompt)\n}) {}\n\nexport class QuestionAnswer extends Schema.Class<QuestionAnswer>('QuestionAnswer')({\n questionId: NonEmptyTrimmedString,\n optionIds: Schema.optional(Schema.Array(NonEmptyTrimmedString)),\n customAnswer: Schema.optional(Schema.String)\n}) {}\n\nexport const QuestionResponseOutcome = Schema.Literals(['answered', 'cancelled'])\nexport type QuestionResponseOutcome = typeof QuestionResponseOutcome.Type\n\nexport class QuestionResponse extends Schema.TaggedClass<QuestionResponse>()('QuestionResponse', {\n requestId: NonEmptyTrimmedString,\n toolCallId: NonEmptyTrimmedString,\n outcome: QuestionResponseOutcome,\n source: HitlResponseSource,\n answers: Schema.optional(Schema.Array(QuestionAnswer)),\n reason: Schema.optional(Schema.String)\n}) {}\n\nconst optionLabel = (question: QuestionPrompt, optionId: string) =>\n question.options?.find(option => option.id === optionId)?.label ?? optionId\n\nconst questionForAnswer = (\n questions: ReadonlyArray<QuestionPrompt>,\n answer: QuestionAnswer\n) => questions.find(question => question.id === answer.questionId)\n\nconst formatQuestionAnswer = (\n answer: QuestionAnswer,\n questions: ReadonlyArray<QuestionPrompt>\n) => {\n const question = questionForAnswer(questions, answer)\n const prompt = question?.prompt ?? answer.questionId\n const selected = answer.optionIds?.map(optionId =>\n question === undefined ? optionId : optionLabel(question, optionId)\n ) ?? []\n const custom = answer.customAnswer?.trim()\n const values = custom === undefined || custom.length === 0 ? selected : [...selected, custom]\n\n return values.length === 0 ? `- ${prompt}: answered` : `- ${prompt}: ${values.join(', ')}`\n}\n\nexport const formatQuestionResponseContent = (\n response: QuestionResponse,\n questions: ReadonlyArray<QuestionPrompt> = []\n) => {\n if (response.outcome === 'cancelled') {\n return `Question cancelled: ${response.reason ?? 'Question cancelled'}`\n }\n\n const answers = response.answers ?? []\n\n if (answers.length === 0) {\n return 'User answered the question, but no answer values were provided. Continue with this in mind.'\n }\n\n const formatted = answers\n .map(answer => formatQuestionAnswer(answer, questions).slice('- '.length))\n .join('; ')\n const label = answers.length === 1 ? 'question' : 'questions'\n\n return `User has answered your ${label}: ${formatted}. Continue with the user's answers in mind.`\n}\n\nexport const HitlRequest = Schema.Union([ToolApprovalRequest, QuestionRequest])\nexport type HitlRequest = typeof HitlRequest.Type\n\nexport const HitlResponse = Schema.Union([ToolApprovalResponse, QuestionResponse])\nexport type HitlResponse = typeof HitlResponse.Type\n"],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
|
|
3
|
+
//#region src/protocol/usage.d.ts
|
|
4
|
+
declare const AgentInputUsage_base: Schema.Class<AgentInputUsage, Schema.Struct<{
|
|
5
|
+
readonly total: Schema.Number;
|
|
6
|
+
readonly uncached: Schema.optional<Schema.Number>;
|
|
7
|
+
readonly cacheRead: Schema.optional<Schema.Number>;
|
|
8
|
+
readonly cacheWrite: Schema.optional<Schema.Number>;
|
|
9
|
+
}>, {}>;
|
|
10
|
+
declare class AgentInputUsage extends AgentInputUsage_base {}
|
|
11
|
+
declare const AgentOutputUsage_base: Schema.Class<AgentOutputUsage, Schema.Struct<{
|
|
12
|
+
readonly total: Schema.Number;
|
|
13
|
+
readonly text: Schema.optional<Schema.Number>;
|
|
14
|
+
readonly reasoning: Schema.optional<Schema.Number>;
|
|
15
|
+
}>, {}>;
|
|
16
|
+
declare class AgentOutputUsage extends AgentOutputUsage_base {}
|
|
17
|
+
declare const AgentUsage_base: Schema.Class<AgentUsage, Schema.Struct<{
|
|
18
|
+
readonly input: typeof AgentInputUsage;
|
|
19
|
+
readonly output: typeof AgentOutputUsage;
|
|
20
|
+
}>, {}>;
|
|
21
|
+
declare class AgentUsage extends AgentUsage_base {}
|
|
22
|
+
declare const zeroAgentUsage: AgentUsage;
|
|
23
|
+
declare const addAgentUsage: (left: AgentUsage, right: AgentUsage) => AgentUsage;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { AgentInputUsage, AgentOutputUsage, AgentUsage, addAgentUsage, zeroAgentUsage };
|
|
26
|
+
//# sourceMappingURL=usage.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.d.mts","names":[],"sources":["../../src/protocol/usage.ts"],"mappings":";;;cACuC,oBAAA;;;;;;cAE1B,eAAA,SAAwB,oBAKnC;AAAA,cAAG,qBAAA;;;;;cAEQ,gBAAA,SAAyB,qBAIpC;AAAA,cAAG,eAAA;;;;cAEQ,UAAA,SAAmB,eAG9B;AAAA,cAEW,cAAA,EAAc,UAGzB;AAAA,cAUW,aAAA,GAAiB,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,UAAA,KAAU,UAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Array, Option } from "effect";
|
|
2
|
+
import * as Schema from "effect/Schema";
|
|
3
|
+
//#region src/protocol/usage.ts
|
|
4
|
+
var AgentInputUsage = class extends Schema.Class("AgentInputUsage")({
|
|
5
|
+
total: Schema.Number,
|
|
6
|
+
uncached: Schema.optional(Schema.Number),
|
|
7
|
+
cacheRead: Schema.optional(Schema.Number),
|
|
8
|
+
cacheWrite: Schema.optional(Schema.Number)
|
|
9
|
+
}) {};
|
|
10
|
+
var AgentOutputUsage = class extends Schema.Class("AgentOutputUsage")({
|
|
11
|
+
total: Schema.Number,
|
|
12
|
+
text: Schema.optional(Schema.Number),
|
|
13
|
+
reasoning: Schema.optional(Schema.Number)
|
|
14
|
+
}) {};
|
|
15
|
+
var AgentUsage = class extends Schema.Class("AgentUsage")({
|
|
16
|
+
input: AgentInputUsage,
|
|
17
|
+
output: AgentOutputUsage
|
|
18
|
+
}) {};
|
|
19
|
+
const zeroAgentUsage = AgentUsage.make({
|
|
20
|
+
input: AgentInputUsage.make({ total: 0 }),
|
|
21
|
+
output: AgentOutputUsage.make({ total: 0 })
|
|
22
|
+
});
|
|
23
|
+
const sumOptional = (left, right) => Option.getOrUndefined(Option.liftPredicate(Array.getSomes([Option.fromNullishOr(left), Option.fromNullishOr(right)]), (values) => values.length > 0).pipe(Option.map((values) => Array.reduce(values, 0, (sum, value) => sum + value))));
|
|
24
|
+
const addAgentUsage = (left, right) => AgentUsage.make({
|
|
25
|
+
input: AgentInputUsage.make({
|
|
26
|
+
total: left.input.total + right.input.total,
|
|
27
|
+
uncached: sumOptional(left.input.uncached, right.input.uncached),
|
|
28
|
+
cacheRead: sumOptional(left.input.cacheRead, right.input.cacheRead),
|
|
29
|
+
cacheWrite: sumOptional(left.input.cacheWrite, right.input.cacheWrite)
|
|
30
|
+
}),
|
|
31
|
+
output: AgentOutputUsage.make({
|
|
32
|
+
total: left.output.total + right.output.total,
|
|
33
|
+
text: sumOptional(left.output.text, right.output.text),
|
|
34
|
+
reasoning: sumOptional(left.output.reasoning, right.output.reasoning)
|
|
35
|
+
})
|
|
36
|
+
});
|
|
37
|
+
//#endregion
|
|
38
|
+
export { AgentInputUsage, AgentOutputUsage, AgentUsage, addAgentUsage, zeroAgentUsage };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=usage.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage.mjs","names":["Arr"],"sources":["../../src/protocol/usage.ts"],"sourcesContent":["import { Array as Arr, Option } from 'effect'\nimport * as Schema from 'effect/Schema'\n\nexport class AgentInputUsage extends Schema.Class<AgentInputUsage>('AgentInputUsage')({\n total: Schema.Number,\n uncached: Schema.optional(Schema.Number),\n cacheRead: Schema.optional(Schema.Number),\n cacheWrite: Schema.optional(Schema.Number)\n}) {}\n\nexport class AgentOutputUsage extends Schema.Class<AgentOutputUsage>('AgentOutputUsage')({\n total: Schema.Number,\n text: Schema.optional(Schema.Number),\n reasoning: Schema.optional(Schema.Number)\n}) {}\n\nexport class AgentUsage extends Schema.Class<AgentUsage>('AgentUsage')({\n input: AgentInputUsage,\n output: AgentOutputUsage\n}) {}\n\nexport const zeroAgentUsage = AgentUsage.make({\n input: AgentInputUsage.make({ total: 0 }),\n output: AgentOutputUsage.make({ total: 0 })\n})\n\nconst sumOptional = (left: number | undefined, right: number | undefined) =>\n Option.getOrUndefined(\n Option.liftPredicate(\n Arr.getSomes([Option.fromNullishOr(left), Option.fromNullishOr(right)]),\n values => values.length > 0\n ).pipe(Option.map(values => Arr.reduce(values, 0, (sum, value) => sum + value)))\n )\n\nexport const addAgentUsage = (left: AgentUsage, right: AgentUsage) =>\n AgentUsage.make({\n input: AgentInputUsage.make({\n total: left.input.total + right.input.total,\n uncached: sumOptional(left.input.uncached, right.input.uncached),\n cacheRead: sumOptional(left.input.cacheRead, right.input.cacheRead),\n cacheWrite: sumOptional(left.input.cacheWrite, right.input.cacheWrite)\n }),\n output: AgentOutputUsage.make({\n total: left.output.total + right.output.total,\n text: sumOptional(left.output.text, right.output.text),\n reasoning: sumOptional(left.output.reasoning, right.output.reasoning)\n })\n })\n"],"mappings":";;;AAGA,IAAa,kBAAb,cAAqC,OAAO,MAAuB,iBAAiB,EAAE;CACpF,OAAO,OAAO;CACd,UAAU,OAAO,SAAS,OAAO,MAAM;CACvC,WAAW,OAAO,SAAS,OAAO,MAAM;CACxC,YAAY,OAAO,SAAS,OAAO,MAAM;AAC3C,CAAC,EAAE,CAAC;AAEJ,IAAa,mBAAb,cAAsC,OAAO,MAAwB,kBAAkB,EAAE;CACvF,OAAO,OAAO;CACd,MAAM,OAAO,SAAS,OAAO,MAAM;CACnC,WAAW,OAAO,SAAS,OAAO,MAAM;AAC1C,CAAC,EAAE,CAAC;AAEJ,IAAa,aAAb,cAAgC,OAAO,MAAkB,YAAY,EAAE;CACrE,OAAO;CACP,QAAQ;AACV,CAAC,EAAE,CAAC;AAEJ,MAAa,iBAAiB,WAAW,KAAK;CAC5C,OAAO,gBAAgB,KAAK,EAAE,OAAO,EAAE,CAAC;CACxC,QAAQ,iBAAiB,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,eAAe,MAA0B,UAC7C,OAAO,eACL,OAAO,cACLA,MAAI,SAAS,CAAC,OAAO,cAAc,IAAI,GAAG,OAAO,cAAc,KAAK,CAAC,CAAC,IACtE,WAAU,OAAO,SAAS,CAC5B,EAAE,KAAK,OAAO,KAAI,WAAUA,MAAI,OAAO,QAAQ,IAAI,KAAK,UAAU,MAAM,KAAK,CAAC,CAAC,CACjF;AAEF,MAAa,iBAAiB,MAAkB,UAC9C,WAAW,KAAK;CACd,OAAO,gBAAgB,KAAK;EAC1B,OAAO,KAAK,MAAM,QAAQ,MAAM,MAAM;EACtC,UAAU,YAAY,KAAK,MAAM,UAAU,MAAM,MAAM,QAAQ;EAC/D,WAAW,YAAY,KAAK,MAAM,WAAW,MAAM,MAAM,SAAS;EAClE,YAAY,YAAY,KAAK,MAAM,YAAY,MAAM,MAAM,UAAU;CACvE,CAAC;CACD,QAAQ,iBAAiB,KAAK;EAC5B,OAAO,KAAK,OAAO,QAAQ,MAAM,OAAO;EACxC,MAAM,YAAY,KAAK,OAAO,MAAM,MAAM,OAAO,IAAI;EACrD,WAAW,YAAY,KAAK,OAAO,WAAW,MAAM,OAAO,SAAS;CACtE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { AgentError } from "@yolk-sdk/agent/protocol";
|
|
3
|
+
import { AgentLoopError } from "@yolk-sdk/agent/loop";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/error.d.ts
|
|
6
|
+
declare const SessionNotFoundError_base: Schema.Class<SessionNotFoundError, Schema.TaggedStruct<"SessionNotFoundError", {
|
|
7
|
+
readonly sessionId: Schema.String;
|
|
8
|
+
}>, import("effect/Cause").YieldableError>;
|
|
9
|
+
declare class SessionNotFoundError extends SessionNotFoundError_base {}
|
|
10
|
+
declare const SessionLoadError_base: Schema.Class<SessionLoadError, Schema.TaggedStruct<"SessionLoadError", {
|
|
11
|
+
readonly sessionId: Schema.String;
|
|
12
|
+
readonly message: Schema.String;
|
|
13
|
+
}>, import("effect/Cause").YieldableError>;
|
|
14
|
+
declare class SessionLoadError extends SessionLoadError_base {}
|
|
15
|
+
declare const SessionSaveError_base: Schema.Class<SessionSaveError, Schema.TaggedStruct<"SessionSaveError", {
|
|
16
|
+
readonly sessionId: Schema.String;
|
|
17
|
+
readonly message: Schema.String;
|
|
18
|
+
}>, import("effect/Cause").YieldableError>;
|
|
19
|
+
declare class SessionSaveError extends SessionSaveError_base {}
|
|
20
|
+
declare const SessionConflictError_base: Schema.Class<SessionConflictError, Schema.TaggedStruct<"SessionConflictError", {
|
|
21
|
+
readonly sessionId: Schema.String;
|
|
22
|
+
readonly message: Schema.String;
|
|
23
|
+
}>, import("effect/Cause").YieldableError>;
|
|
24
|
+
declare class SessionConflictError extends SessionConflictError_base {}
|
|
25
|
+
type RuntimeError = SessionNotFoundError | SessionLoadError | SessionSaveError | SessionConflictError;
|
|
26
|
+
declare const runtimeErrorToAgentError: (error: RuntimeError | AgentLoopError) => AgentError;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { RuntimeError, SessionConflictError, SessionLoadError, SessionNotFoundError, SessionSaveError, runtimeErrorToAgentError };
|
|
29
|
+
//# sourceMappingURL=error.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.mts","names":[],"sources":["../../src/runtime/error.ts"],"mappings":";;;;;cAEqD,yBAAA;;;cAExC,oBAAA,SAA6B,yBAKzC;AAAA,cAAG,qBAAA;;;;cAES,gBAAA,SAAyB,qBAMrC;AAAA,cAAG,qBAAA;;;;cAES,gBAAA,SAAyB,qBAMrC;AAAA,cAAG,yBAAA;;;;cAES,oBAAA,SAA6B,yBAMzC;AAAA,KAEW,YAAA,GACR,oBAAA,GACA,gBAAA,GACA,gBAAA,GACA,oBAAA;AAAA,cAES,wBAAA,GAA4B,KAAA,EAAO,YAAA,GAAe,cAAA,KAAiB,UAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as Schema from "effect/Schema";
|
|
2
|
+
import { AgentError } from "@yolk-sdk/agent/protocol";
|
|
3
|
+
import { agentLoopErrorToAgentError } from "@yolk-sdk/agent/loop";
|
|
4
|
+
//#region src/runtime/error.ts
|
|
5
|
+
var SessionNotFoundError = class extends Schema.TaggedErrorClass()("SessionNotFoundError", { sessionId: Schema.String }) {};
|
|
6
|
+
var SessionLoadError = class extends Schema.TaggedErrorClass()("SessionLoadError", {
|
|
7
|
+
sessionId: Schema.String,
|
|
8
|
+
message: Schema.String
|
|
9
|
+
}) {};
|
|
10
|
+
var SessionSaveError = class extends Schema.TaggedErrorClass()("SessionSaveError", {
|
|
11
|
+
sessionId: Schema.String,
|
|
12
|
+
message: Schema.String
|
|
13
|
+
}) {};
|
|
14
|
+
var SessionConflictError = class extends Schema.TaggedErrorClass()("SessionConflictError", {
|
|
15
|
+
sessionId: Schema.String,
|
|
16
|
+
message: Schema.String
|
|
17
|
+
}) {};
|
|
18
|
+
const runtimeErrorToAgentError = (error) => {
|
|
19
|
+
switch (error._tag) {
|
|
20
|
+
case "SessionNotFoundError": return AgentError.make({
|
|
21
|
+
code: "session_not_found",
|
|
22
|
+
message: `Session not found: ${error.sessionId}`,
|
|
23
|
+
retryable: false
|
|
24
|
+
});
|
|
25
|
+
case "SessionLoadError":
|
|
26
|
+
case "SessionSaveError": return AgentError.make({
|
|
27
|
+
code: "store_error",
|
|
28
|
+
message: error.message,
|
|
29
|
+
retryable: true
|
|
30
|
+
});
|
|
31
|
+
case "SessionConflictError": return AgentError.make({
|
|
32
|
+
code: "conflict",
|
|
33
|
+
message: error.message,
|
|
34
|
+
retryable: false
|
|
35
|
+
});
|
|
36
|
+
case "LLMError":
|
|
37
|
+
case "ToolError":
|
|
38
|
+
case "ContextTransformError":
|
|
39
|
+
case "AbortError":
|
|
40
|
+
case "FauxExhaustedError": return agentLoopErrorToAgentError(error);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
//#endregion
|
|
44
|
+
export { SessionConflictError, SessionLoadError, SessionNotFoundError, SessionSaveError, runtimeErrorToAgentError };
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=error.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.mjs","names":[],"sources":["../../src/runtime/error.ts"],"sourcesContent":["import * as Schema from 'effect/Schema'\nimport { agentLoopErrorToAgentError, type AgentLoopError } from '@yolk-sdk/agent/loop'\nimport { AgentError } from '@yolk-sdk/agent/protocol'\n\nexport class SessionNotFoundError extends Schema.TaggedErrorClass<SessionNotFoundError>()(\n 'SessionNotFoundError',\n {\n sessionId: Schema.String\n }\n) {}\n\nexport class SessionLoadError extends Schema.TaggedErrorClass<SessionLoadError>()(\n 'SessionLoadError',\n {\n sessionId: Schema.String,\n message: Schema.String\n }\n) {}\n\nexport class SessionSaveError extends Schema.TaggedErrorClass<SessionSaveError>()(\n 'SessionSaveError',\n {\n sessionId: Schema.String,\n message: Schema.String\n }\n) {}\n\nexport class SessionConflictError extends Schema.TaggedErrorClass<SessionConflictError>()(\n 'SessionConflictError',\n {\n sessionId: Schema.String,\n message: Schema.String\n }\n) {}\n\nexport type RuntimeError =\n | SessionNotFoundError\n | SessionLoadError\n | SessionSaveError\n | SessionConflictError\n\nexport const runtimeErrorToAgentError = (error: RuntimeError | AgentLoopError): AgentError => {\n switch (error._tag) {\n case 'SessionNotFoundError':\n return AgentError.make({\n code: 'session_not_found',\n message: `Session not found: ${error.sessionId}`,\n retryable: false\n })\n case 'SessionLoadError':\n case 'SessionSaveError':\n return AgentError.make({\n code: 'store_error',\n message: error.message,\n retryable: true\n })\n case 'SessionConflictError':\n return AgentError.make({\n code: 'conflict',\n message: error.message,\n retryable: false\n })\n case 'LLMError':\n case 'ToolError':\n case 'ContextTransformError':\n case 'AbortError':\n case 'FauxExhaustedError':\n return agentLoopErrorToAgentError(error)\n }\n}\n"],"mappings":";;;;AAIA,IAAa,uBAAb,cAA0C,OAAO,iBAAuC,EACtF,wBACA,EACE,WAAW,OAAO,OACpB,CACF,EAAE,CAAC;AAEH,IAAa,mBAAb,cAAsC,OAAO,iBAAmC,EAC9E,oBACA;CACE,WAAW,OAAO;CAClB,SAAS,OAAO;AAClB,CACF,EAAE,CAAC;AAEH,IAAa,mBAAb,cAAsC,OAAO,iBAAmC,EAC9E,oBACA;CACE,WAAW,OAAO;CAClB,SAAS,OAAO;AAClB,CACF,EAAE,CAAC;AAEH,IAAa,uBAAb,cAA0C,OAAO,iBAAuC,EACtF,wBACA;CACE,WAAW,OAAO;CAClB,SAAS,OAAO;AAClB,CACF,EAAE,CAAC;AAQH,MAAa,4BAA4B,UAAqD;CAC5F,QAAQ,MAAM,MAAd;EACE,KAAK,wBACH,OAAO,WAAW,KAAK;GACrB,MAAM;GACN,SAAS,sBAAsB,MAAM;GACrC,WAAW;EACb,CAAC;EACH,KAAK;EACL,KAAK,oBACH,OAAO,WAAW,KAAK;GACrB,MAAM;GACN,SAAS,MAAM;GACf,WAAW;EACb,CAAC;EACH,KAAK,wBACH,OAAO,WAAW,KAAK;GACrB,MAAM;GACN,SAAS,MAAM;GACf,WAAW;EACb,CAAC;EACH,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,sBACH,OAAO,2BAA2B,KAAK;CAC3C;AACF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { RuntimeError, SessionConflictError, SessionLoadError, SessionNotFoundError, SessionSaveError, runtimeErrorToAgentError } from "./error.mjs";
|
|
2
|
+
import { AppendRuntimeSessionEventsInput, HitlResponseAppended, IncompleteRuntimeRun, InputAppended, RunAwaitingInput, RunCompleted, RunFailed, RunInterrupted, RunStarted, RuntimeSessionEvent, RuntimeSessionEventLog, SessionEventStore, SessionEventStoreApi, SessionRevision, StoredRuntimeSessionEvent, appendRuntimeSessionEventsToLog, latestIncompleteRuntimeRun, makeInMemorySessionEventStoreLayer, replayRuntimeHitlResponses, replayRuntimeSessionEvents } from "./session-event-store.mjs";
|
|
3
|
+
import { AppendHitlResponseRuntimeRequest, AppendInputRuntimeRequest, RuntimeConfig, RuntimeRequest, RuntimeTranscript, TranscriptRuntimeRequest, runRuntime } from "./run-runtime.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/runtime/index.d.ts
|
|
6
|
+
type RuntimeSessionId = string;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { type AppendHitlResponseRuntimeRequest, type AppendInputRuntimeRequest, type AppendRuntimeSessionEventsInput, HitlResponseAppended, type IncompleteRuntimeRun, InputAppended, RunAwaitingInput, RunCompleted, RunFailed, RunInterrupted, RunStarted, type RuntimeConfig, type RuntimeError, type RuntimeRequest, RuntimeSessionEvent, type RuntimeSessionEventLog, RuntimeSessionId, type RuntimeTranscript, SessionConflictError, SessionEventStore, type SessionEventStoreApi, SessionLoadError, SessionNotFoundError, type SessionRevision, SessionSaveError, type StoredRuntimeSessionEvent, type TranscriptRuntimeRequest, appendRuntimeSessionEventsToLog, latestIncompleteRuntimeRun, makeInMemorySessionEventStoreLayer, replayRuntimeHitlResponses, replayRuntimeSessionEvents, runRuntime, runtimeErrorToAgentError };
|
|
9
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/runtime/index.ts"],"mappings":";;;;;KA0CY,gBAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SessionConflictError, SessionLoadError, SessionNotFoundError, SessionSaveError, runtimeErrorToAgentError } from "./error.mjs";
|
|
2
|
+
import { HitlResponseAppended, InputAppended, RunAwaitingInput, RunCompleted, RunFailed, RunInterrupted, RunStarted, RuntimeSessionEvent, SessionEventStore, appendRuntimeSessionEventsToLog, latestIncompleteRuntimeRun, makeInMemorySessionEventStoreLayer, replayRuntimeHitlResponses, replayRuntimeSessionEvents } from "./session-event-store.mjs";
|
|
3
|
+
import { runRuntime } from "./run-runtime.mjs";
|
|
4
|
+
export { HitlResponseAppended, InputAppended, RunAwaitingInput, RunCompleted, RunFailed, RunInterrupted, RunStarted, RuntimeSessionEvent, SessionConflictError, SessionEventStore, SessionLoadError, SessionNotFoundError, SessionSaveError, appendRuntimeSessionEventsToLog, latestIncompleteRuntimeRun, makeInMemorySessionEventStoreLayer, replayRuntimeHitlResponses, replayRuntimeSessionEvents, runRuntime, runtimeErrorToAgentError };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { RuntimeError } from "./error.mjs";
|
|
2
|
+
import { SessionEventStore, SessionRevision } from "./session-event-store.mjs";
|
|
3
|
+
import { Stream } from "effect";
|
|
4
|
+
import { AgentEvent, AgentMessage, AgentModelCapabilities, AgentReasoningEffort, HitlResponse, ToolDef } from "@yolk-sdk/agent/protocol";
|
|
5
|
+
import { AgentLoopError, ContextTransformer, LLMProvider, LoopConfig, ToolExecutor } from "@yolk-sdk/agent/loop";
|
|
6
|
+
|
|
7
|
+
//#region src/runtime/run-runtime.d.ts
|
|
8
|
+
type RuntimeTranscript = readonly [AgentMessage, ...Array<AgentMessage>];
|
|
9
|
+
type RuntimeConfig = {
|
|
10
|
+
readonly systemPrompt: string;
|
|
11
|
+
readonly tools: ReadonlyArray<ToolDef>;
|
|
12
|
+
readonly hitlResponses?: ReadonlyArray<HitlResponse>;
|
|
13
|
+
readonly model: string;
|
|
14
|
+
readonly reasoningEffort?: AgentReasoningEffort;
|
|
15
|
+
readonly capabilities?: AgentModelCapabilities;
|
|
16
|
+
};
|
|
17
|
+
type TranscriptRuntimeRequest = {
|
|
18
|
+
readonly _tag: 'Transcript';
|
|
19
|
+
readonly sessionId: string;
|
|
20
|
+
readonly messages: RuntimeTranscript;
|
|
21
|
+
};
|
|
22
|
+
type AppendInputRuntimeRequest = {
|
|
23
|
+
readonly _tag: 'AppendInput';
|
|
24
|
+
readonly sessionId: string;
|
|
25
|
+
readonly input: AgentMessage;
|
|
26
|
+
readonly runId: string;
|
|
27
|
+
readonly expectedRevision?: SessionRevision;
|
|
28
|
+
};
|
|
29
|
+
type AppendHitlResponseRuntimeRequest = {
|
|
30
|
+
readonly _tag: 'AppendHitlResponse';
|
|
31
|
+
readonly sessionId: string;
|
|
32
|
+
readonly response: HitlResponse;
|
|
33
|
+
readonly runId: string;
|
|
34
|
+
readonly expectedRevision?: SessionRevision;
|
|
35
|
+
};
|
|
36
|
+
type RuntimeRequest = TranscriptRuntimeRequest | AppendInputRuntimeRequest | AppendHitlResponseRuntimeRequest;
|
|
37
|
+
type LoopRequirements = ContextTransformer | LLMProvider | LoopConfig | ToolExecutor;
|
|
38
|
+
type AppendRuntimeRequirements = LoopRequirements | SessionEventStore;
|
|
39
|
+
type RuntimeRequirements = LoopRequirements | AppendRuntimeRequirements;
|
|
40
|
+
type RuntimeErrorUnion = RuntimeError | AgentLoopError;
|
|
41
|
+
declare function runRuntime(request: TranscriptRuntimeRequest, config: RuntimeConfig): Stream.Stream<AgentEvent, AgentLoopError, LoopRequirements>;
|
|
42
|
+
declare function runRuntime(request: AppendInputRuntimeRequest, config: RuntimeConfig): Stream.Stream<AgentEvent, RuntimeErrorUnion, AppendRuntimeRequirements>;
|
|
43
|
+
declare function runRuntime(request: AppendHitlResponseRuntimeRequest, config: RuntimeConfig): Stream.Stream<AgentEvent, RuntimeErrorUnion, AppendRuntimeRequirements>;
|
|
44
|
+
declare function runRuntime(request: RuntimeRequest, config: RuntimeConfig): Stream.Stream<AgentEvent, RuntimeErrorUnion, RuntimeRequirements>;
|
|
45
|
+
//#endregion
|
|
46
|
+
export { AppendHitlResponseRuntimeRequest, AppendInputRuntimeRequest, RuntimeConfig, RuntimeRequest, RuntimeTranscript, TranscriptRuntimeRequest, runRuntime };
|
|
47
|
+
//# sourceMappingURL=run-runtime.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-runtime.d.mts","names":[],"sources":["../../src/runtime/run-runtime.ts"],"mappings":";;;;;;;KAkCY,iBAAA,aAA8B,YAAA,KAAiB,KAAA,CAAM,YAAA;AAAA,KAErD,aAAA;EAAA,SACD,YAAA;EAAA,SACA,KAAA,EAAO,aAAA,CAAc,OAAA;EAAA,SACrB,aAAA,GAAgB,aAAA,CAAc,YAAA;EAAA,SAC9B,KAAA;EAAA,SACA,eAAA,GAAkB,oBAAA;EAAA,SAClB,YAAA,GAAe,sBAAA;AAAA;AAAA,KAGd,wBAAA;EAAA,SACD,IAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA,EAAU,iBAAiB;AAAA;AAAA,KAG1B,yBAAA;EAAA,SACD,IAAA;EAAA,SACA,SAAA;EAAA,SACA,KAAA,EAAO,YAAA;EAAA,SACP,KAAA;EAAA,SACA,gBAAA,GAAmB,eAAe;AAAA;AAAA,KAGjC,gCAAA;EAAA,SACD,IAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA,EAAU,YAAA;EAAA,SACV,KAAA;EAAA,SACA,gBAAA,GAAmB,eAAe;AAAA;AAAA,KAGjC,cAAA,GACR,wBAAA,GACA,yBAAA,GACA,gCAAA;AAAA,KAEC,gBAAA,GAAmB,kBAAA,GAAqB,WAAA,GAAc,UAAA,GAAa,YAAA;AAAA,KACnE,yBAAA,GAA4B,gBAAA,GAAmB,iBAAiB;AAAA,KAChE,mBAAA,GAAsB,gBAAA,GAAmB,yBAAyB;AAAA,KAClE,iBAAA,GAAoB,YAAA,GAAe,cAAc;AAAA,iBA2MtC,UAAA,CACd,OAAA,EAAS,wBAAA,EACT,MAAA,EAAQ,aAAA,GACP,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,cAAA,EAAgB,gBAAA;AAAA,iBAC7B,UAAA,CACd,OAAA,EAAS,yBAAA,EACT,MAAA,EAAQ,aAAA,GACP,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,iBAAA,EAAmB,yBAAA;AAAA,iBAChC,UAAA,CACd,OAAA,EAAS,gCAAA,EACT,MAAA,EAAQ,aAAA,GACP,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,iBAAA,EAAmB,yBAAA;AAAA,iBAChC,UAAA,CACd,OAAA,EAAS,cAAA,EACT,MAAA,EAAQ,aAAA,GACP,MAAA,CAAO,MAAA,CAAO,UAAA,EAAY,iBAAA,EAAmB,mBAAA"}
|