diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts index b1e92d8c471..31ee2bce370 100644 --- a/packages/opencode/src/session/message-v2.ts +++ b/packages/opencode/src/session/message-v2.ts @@ -359,6 +359,7 @@ export namespace MessageV2 { system: z.string().optional(), tools: z.record(z.string(), z.boolean()).optional(), variant: z.string().optional(), + // kilocode_change start editorContext: z .object({ visibleFiles: z.array(z.string()).optional(), @@ -368,6 +369,7 @@ export namespace MessageV2 { timezone: z.string().optional(), }) .optional(), + // kilocode_change end }).meta({ ref: "UserMessage", }) diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 485d525490c..f3c0e5e39d6 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -109,6 +109,7 @@ export namespace SessionPrompt { format: MessageV2.Format.optional(), system: z.string().optional(), variant: z.string().optional(), + // kilocode_change start editorContext: z .object({ visibleFiles: z.array(z.string()).optional(), @@ -118,6 +119,7 @@ export namespace SessionPrompt { timezone: z.string().optional(), }) .optional(), + // kilocode_change end parts: z.array( z.discriminatedUnion("type", [ MessageV2.TextPart.omit({ @@ -676,7 +678,7 @@ export namespace SessionPrompt { await Plugin.trigger("experimental.chat.messages.transform", {}, { messages: sessionMessages }) // Build system prompt, adding structured output instruction if needed - const system = [...(await SystemPrompt.environment(model, lastUser.editorContext)), ...(await InstructionPrompt.system())] + const system = [...(await SystemPrompt.environment(model, lastUser.editorContext)), ...(await InstructionPrompt.system())] // kilocode_change const format = lastUser.format ?? { type: "text" } if (format.type === "json_schema") { system.push(STRUCTURED_OUTPUT_SYSTEM_PROMPT) @@ -1003,7 +1005,7 @@ export namespace SessionPrompt { system: input.system, format: input.format, variant, - editorContext: input.editorContext, + editorContext: input.editorContext, // kilocode_change } using _ = defer(() => InstructionPrompt.clear(info.id)) diff --git a/packages/opencode/src/session/system.ts b/packages/opencode/src/session/system.ts index 47f47d78666..03324b3e9ef 100644 --- a/packages/opencode/src/session/system.ts +++ b/packages/opencode/src/session/system.ts @@ -51,6 +51,7 @@ export namespace SystemPrompt { } // kilocode_change end + // kilocode_change start export async function environment( model: Provider.Model, editorContext?: { @@ -66,7 +67,7 @@ export namespace SystemPrompt { ` Working directory: ${Instance.directory}`, ` Is directory a git repo: ${project.vcs === "git" ? "yes" : "no"}`, ` Platform: ${process.platform}`, - ...formatTime(editorContext?.timezone), // kilocode_change + ...formatTime(editorContext?.timezone), ] if (editorContext?.shell) { envLines.push(` Default shell: ${editorContext.shell}`) @@ -80,6 +81,7 @@ export namespace SystemPrompt { if (editorContext?.openTabs?.length) { envLines.push(` Open tabs: ${editorContext.openTabs.join(", ")}`) } + // kilocode_change end return [ [ `You are powered by the model named ${model.api.id}. The exact model ID is ${model.providerID}/${model.api.id}`,