Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/types/src/vscode.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ export const commandIds = [
"retryWebviewRecovery",
"toggleAutoApprove",

"generateGitCommitMessage",

"showRipgrepDiagnostic",
"createDiagnosticsReport",
] as const
Expand Down
30 changes: 30 additions & 0 deletions src/activate/__tests__/registerCommands.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,10 @@ vi.mock("../../services/diagnostics", () => ({
createDiagnosticsReport: vi.fn().mockResolvedValue(undefined),
}))

vi.mock("../../services/git/commitMessageGenerator", () => ({
generateCommitMessage: vi.fn().mockResolvedValue(undefined),
}))

describe("getVisibleProviderOrLog", () => {
let mockOutputChannel: vscode.OutputChannel

Expand Down Expand Up @@ -282,6 +286,32 @@ describe("registerCommands handlers", () => {
})
})

it("generateGitCommitMessage calls generateCommitMessage with visible provider and context", async () => {
const { generateCommitMessage } = await import("../../services/git/commitMessageGenerator")
const mockScmContext = { rootUri: { fsPath: "/mock/repo" } }

await handlers["zoo-code.generateGitCommitMessage"](mockScmContext)

expect(generateCommitMessage).toHaveBeenCalledWith({
provider: mockVisibleProviderInstance,
outputChannel: mockOutputChannel,
context: mockScmContext,
})
})

it("generateGitCommitMessage falls back to default provider when no visible provider", async () => {
const { generateCommitMessage } = await import("../../services/git/commitMessageGenerator")
;(ClineProvider.getVisibleInstance as Mock).mockReturnValue(undefined)

await handlers["zoo-code.generateGitCommitMessage"]()

expect(generateCommitMessage).toHaveBeenCalledWith({
provider: mockProvider,
outputChannel: mockOutputChannel,
context: undefined,
})
})

it("settingsButtonClicked posts both settingsButtonClicked and didBecomeVisible actions", () => {
handlers["zoo-code.settingsButtonClicked"]()

Expand Down
9 changes: 9 additions & 0 deletions src/activate/registerCommands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { importSettingsWithFeedback } from "../core/config/importExport"
import { MdmService } from "../services/mdm/MdmService"
import { registerRipgrepDiagnosticCommand } from "../services/ripgrep/diagnostic"
import { createDiagnosticsReport } from "../services/diagnostics"
import { generateCommitMessage } from "../services/git/commitMessageGenerator"

/**
* Helper to get the visible ClineProvider instance or log if not found.
Expand Down Expand Up @@ -225,6 +226,14 @@ const getCommandsMap = ({
outputChannel.appendLine(`[toggleAutoApprove] postMessageToWebview failed: ${error}`)
}
},
generateGitCommitMessage: async (context?: unknown) => {
const visibleProvider = ClineProvider.getVisibleInstance() ?? provider
await generateCommitMessage({
provider: visibleProvider,
outputChannel,
context,
})
},
})

type OpenClineInNewTabOptions = {
Expand Down
10 changes: 5 additions & 5 deletions src/api/providers/openai.ts
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@
}
}

async completePrompt(prompt: string, _options?: CompletePromptOptions): Promise<string> {
async completePrompt(prompt: string, options?: CompletePromptOptions): Promise<string> {
try {
const isAzureAiInference = this._isAzureAiInference(this.options.openAiBaseUrl)
const model = this.getModel()
Expand All @@ -372,10 +372,10 @@

let response
try {
response = await this.client.chat.completions.create(
requestOptions,
isAzureAiInference ? { path: OPENAI_AZURE_AI_INFERENCE_PATH } : {},
)
response = await this.client.chat.completions.create(requestOptions, {
...(isAzureAiInference ? { path: OPENAI_AZURE_AI_INFERENCE_PATH } : {}),
...(options?.abortSignal ? { signal: options.abortSignal } : {}),

Check warning on line 377 in src/api/providers/openai.ts

View workflow job for this annotation

GitHub Actions / mutation-diff

Mutation test advisory

src/api/providers/openai.ts:377: NoCoverage ObjectLiteral mutant (replacement: {}). See the job summary for the complete list and resolution guidance.
})
} catch (error) {
throw handleOpenAIError(error, this.providerName)
}
Expand Down
12 changes: 12 additions & 0 deletions src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -179,9 +179,21 @@
"command": "zoo-code.toggleAutoApprove",
"title": "%command.toggleAutoApprove.title%",
"category": "%configuration.title%"
},
{
"command": "zoo-code.generateGitCommitMessage",
"title": "%command.generateGitCommitMessage.title%",
"icon": "$(wand)"
}
],
"menus": {
"scm/inputBox": [
{
"command": "zoo-code.generateGitCommitMessage",
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
"group": "inline",
"when": "scmRepository && scmProvider == git"
}
],
"editor/context": [
{
"submenu": "zoo-code.contextMenu",
Expand Down
1 change: 1 addition & 0 deletions src/package.nls.ca.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.de.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.es.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.fr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.hi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.id.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.it.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.ja.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"command.showRipgrepDiagnostic.title": "Show Ripgrep Diagnostic",
"command.createDiagnosticsReport.title": "Create Diagnostics Report",
"command.toggleAutoApprove.title": "Toggle Auto-Approve",
"command.generateGitCommitMessage.title": "Generate Commit Message (Zoo Code)",
"configuration.title": "Zoo Code",
"commands.allowedCommands.description": "Commands that can be auto-executed when 'Always approve execute operations' is enabled",
"commands.deniedCommands.description": "Command prefixes that will be automatically denied without asking for approval. In case of conflicts with allowed commands, the longest prefix match takes precedence. Add * to deny all commands.",
Expand Down
1 change: 1 addition & 0 deletions src/package.nls.ko.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.nl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.pl.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.pt-BR.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.ru.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.tr.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.vi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.zh-CN.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions src/package.nls.zh-TW.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading