|
|
@@ -1389,26 +1389,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> = 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> = 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")
|