|
|
@@ -286,7 +286,11 @@ export namespace SessionPrompt {
|
|
|
OUTPUT_TOKEN_MAX,
|
|
|
),
|
|
|
abortSignal: abort.signal,
|
|
|
- providerOptions: ProviderTransform.providerOptions(model.npm, model.providerID, params.options),
|
|
|
+ providerOptions: ProviderTransform.providerOptions(
|
|
|
+ model.npm,
|
|
|
+ model.providerID,
|
|
|
+ params.options,
|
|
|
+ ),
|
|
|
stopWhen: stepCountIs(1),
|
|
|
temperature: params.temperature,
|
|
|
topP: params.topP,
|
|
|
@@ -321,7 +325,11 @@ export namespace SessionPrompt {
|
|
|
async transformParams(args) {
|
|
|
if (args.type === "stream") {
|
|
|
// @ts-expect-error
|
|
|
- args.params.prompt = ProviderTransform.message(args.params.prompt, model.providerID, model.modelID)
|
|
|
+ args.params.prompt = ProviderTransform.message(
|
|
|
+ args.params.prompt,
|
|
|
+ model.providerID,
|
|
|
+ model.modelID,
|
|
|
+ )
|
|
|
}
|
|
|
return args.params
|
|
|
},
|
|
|
@@ -504,7 +512,11 @@ export namespace SessionPrompt {
|
|
|
)
|
|
|
for (const item of await ToolRegistry.tools(input.providerID, input.modelID)) {
|
|
|
if (Wildcard.all(item.id, enabledTools) === false) continue
|
|
|
- const schema = ProviderTransform.schema(input.providerID, input.modelID, z.toJSONSchema(item.parameters))
|
|
|
+ const schema = ProviderTransform.schema(
|
|
|
+ input.providerID,
|
|
|
+ input.modelID,
|
|
|
+ z.toJSONSchema(item.parameters),
|
|
|
+ )
|
|
|
tools[item.id] = tool({
|
|
|
id: item.id as any,
|
|
|
description: item.description,
|
|
|
@@ -585,17 +597,7 @@ export namespace SessionPrompt {
|
|
|
args,
|
|
|
},
|
|
|
)
|
|
|
- const result = await execute(args, opts).catch((err: unknown) => {
|
|
|
- log.error("Error executing tool", { error: err, tool: key })
|
|
|
- return {
|
|
|
- content: [
|
|
|
- {
|
|
|
- type: "text",
|
|
|
- text: `Failed to execute tool: ${err instanceof Error ? err.message : String(err)}`,
|
|
|
- },
|
|
|
- ],
|
|
|
- }
|
|
|
- })
|
|
|
+ const result = await execute(args, opts)
|
|
|
|
|
|
await Plugin.trigger(
|
|
|
"tool.execute.after",
|
|
|
@@ -809,7 +811,9 @@ export namespace SessionPrompt {
|
|
|
messageID: info.id,
|
|
|
sessionID: input.sessionID,
|
|
|
type: "file",
|
|
|
- url: `data:${part.mime};base64,` + Buffer.from(await file.bytes()).toString("base64"),
|
|
|
+ url:
|
|
|
+ `data:${part.mime};base64,` +
|
|
|
+ Buffer.from(await file.bytes()).toString("base64"),
|
|
|
mime: part.mime,
|
|
|
filename: part.filename!,
|
|
|
source: part.source,
|
|
|
@@ -883,7 +887,9 @@ export namespace SessionPrompt {
|
|
|
synthetic: true,
|
|
|
})
|
|
|
}
|
|
|
- const wasPlan = input.messages.some((msg) => msg.info.role === "assistant" && msg.info.mode === "plan")
|
|
|
+ const wasPlan = input.messages.some(
|
|
|
+ (msg) => msg.info.role === "assistant" && msg.info.mode === "plan",
|
|
|
+ )
|
|
|
if (wasPlan && input.agent.name === "build") {
|
|
|
userMessage.parts.push({
|
|
|
id: Identifier.ascending("part"),
|
|
|
@@ -963,7 +969,10 @@ export namespace SessionPrompt {
|
|
|
partFromToolCall(toolCallID: string) {
|
|
|
return toolcalls[toolCallID]
|
|
|
},
|
|
|
- async process(stream: StreamTextResult<Record<string, AITool>, never>, retries: { count: number; max: number }) {
|
|
|
+ async process(
|
|
|
+ stream: StreamTextResult<Record<string, AITool>, never>,
|
|
|
+ retries: { count: number; max: number },
|
|
|
+ ) {
|
|
|
log.info("process")
|
|
|
if (!assistantMsg) throw new Error("call next() first before processing")
|
|
|
let shouldRetry = false
|
|
|
@@ -1094,7 +1103,10 @@ export namespace SessionPrompt {
|
|
|
status: "error",
|
|
|
input: value.input,
|
|
|
error: (value.error as any).toString(),
|
|
|
- metadata: value.error instanceof Permission.RejectedError ? value.error.metadata : undefined,
|
|
|
+ metadata:
|
|
|
+ value.error instanceof Permission.RejectedError
|
|
|
+ ? value.error.metadata
|
|
|
+ : undefined,
|
|
|
time: {
|
|
|
start: match.state.time.start,
|
|
|
end: Date.now(),
|
|
|
@@ -1218,7 +1230,11 @@ export namespace SessionPrompt {
|
|
|
error: e,
|
|
|
})
|
|
|
const error = MessageV2.fromError(e, { providerID: input.providerID })
|
|
|
- if (retries.count < retries.max && MessageV2.APIError.isInstance(error) && error.data.isRetryable) {
|
|
|
+ if (
|
|
|
+ retries.count < retries.max &&
|
|
|
+ MessageV2.APIError.isInstance(error) &&
|
|
|
+ error.data.isRetryable
|
|
|
+ ) {
|
|
|
shouldRetry = true
|
|
|
await Session.updatePart({
|
|
|
id: Identifier.ascending("part"),
|
|
|
@@ -1241,7 +1257,11 @@ export namespace SessionPrompt {
|
|
|
}
|
|
|
const p = await Session.getParts(assistantMsg.id)
|
|
|
for (const part of p) {
|
|
|
- if (part.type === "tool" && part.state.status !== "completed" && part.state.status !== "error") {
|
|
|
+ if (
|
|
|
+ part.type === "tool" &&
|
|
|
+ part.state.status !== "completed" &&
|
|
|
+ part.state.status !== "error"
|
|
|
+ ) {
|
|
|
Session.updatePart({
|
|
|
...part,
|
|
|
state: {
|
|
|
@@ -1705,11 +1725,13 @@ export namespace SessionPrompt {
|
|
|
if (input.session.parentID) return
|
|
|
if (!Session.isDefaultTitle(input.session.title)) return
|
|
|
const isFirst =
|
|
|
- input.history.filter((m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic))
|
|
|
- .length === 1
|
|
|
+ input.history.filter(
|
|
|
+ (m) => m.info.role === "user" && !m.parts.every((p) => "synthetic" in p && p.synthetic),
|
|
|
+ ).length === 1
|
|
|
if (!isFirst) return
|
|
|
const small =
|
|
|
- (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID))
|
|
|
+ (await Provider.getSmallModel(input.providerID)) ??
|
|
|
+ (await Provider.getModel(input.providerID, input.modelID))
|
|
|
const options = {
|
|
|
...ProviderTransform.options(small.providerID, small.modelID, input.session.id),
|
|
|
...small.info.options,
|