|
|
@@ -1278,9 +1278,7 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
|
|
)
|
|
|
|
|
|
const parts = yield* Effect.forEach(resolvedParts, (part) =>
|
|
|
- part.type === "file" && part.mime.startsWith("image/")
|
|
|
- ? image.normalize(part)
|
|
|
- : Effect.succeed(part),
|
|
|
+ part.type === "file" && part.mime.startsWith("image/") ? image.normalize(part) : Effect.succeed(part),
|
|
|
)
|
|
|
|
|
|
const parsed = MessageV2.Info.zod.safeParse(info)
|
|
|
@@ -1376,26 +1374,26 @@ NOTE: At any point in time through this workflow you should feel free to ask the
|
|
|
return { info, parts }
|
|
|
}, Effect.scoped)
|
|
|
|
|
|
- const prompt: (input: PromptInput) => Effect.Effect<MessageV2.WithParts, Image.Error> = Effect.fn("SessionPrompt.prompt")(
|
|
|
- function* (input: PromptInput) {
|
|
|
- const session = yield* sessions.get(input.sessionID).pipe(Effect.orDie)
|
|
|
- yield* revert.cleanup(session)
|
|
|
- const message = yield* createUserMessage(input)
|
|
|
- yield* sessions.touch(input.sessionID)
|
|
|
-
|
|
|
- const permissions: Permission.Ruleset = []
|
|
|
- for (const [t, enabled] of Object.entries(input.tools ?? {})) {
|
|
|
- permissions.push({ permission: t, action: enabled ? "allow" : "deny", pattern: "*" })
|
|
|
- }
|
|
|
- if (permissions.length > 0) {
|
|
|
- session.permission = permissions
|
|
|
- yield* sessions.setPermission({ sessionID: session.id, permission: permissions })
|
|
|
- }
|
|
|
+ const prompt: (input: PromptInput) => Effect.Effect<MessageV2.WithParts, Image.Error> = Effect.fn(
|
|
|
+ "SessionPrompt.prompt",
|
|
|
+ )(function* (input: PromptInput) {
|
|
|
+ const session = yield* sessions.get(input.sessionID).pipe(Effect.orDie)
|
|
|
+ yield* revert.cleanup(session)
|
|
|
+ const message = yield* createUserMessage(input)
|
|
|
+ yield* sessions.touch(input.sessionID)
|
|
|
+
|
|
|
+ const permissions: Permission.Ruleset = []
|
|
|
+ for (const [t, enabled] of Object.entries(input.tools ?? {})) {
|
|
|
+ permissions.push({ permission: t, action: enabled ? "allow" : "deny", pattern: "*" })
|
|
|
+ }
|
|
|
+ if (permissions.length > 0) {
|
|
|
+ session.permission = permissions
|
|
|
+ yield* sessions.setPermission({ sessionID: session.id, permission: permissions })
|
|
|
+ }
|
|
|
|
|
|
- if (input.noReply === true) return message
|
|
|
- return yield* loop({ sessionID: input.sessionID })
|
|
|
- },
|
|
|
- )
|
|
|
+ if (input.noReply === true) return message
|
|
|
+ return yield* loop({ sessionID: input.sessionID })
|
|
|
+ })
|
|
|
|
|
|
const lastAssistant = Effect.fnUntraced(function* (sessionID: SessionID) {
|
|
|
const match = yield* sessions.findMessage(sessionID, (m) => m.info.role !== "user")
|