@polka-codes/cli 0.10.23 → 0.10.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +143854 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9201 -9195
- package/dist/program.d.ts +3 -0
- package/dist/program.d.ts.map +1 -0
- package/package.json +6 -7
- package/cli.mjs +0 -2
- package/dist/ApiProviderConfig.js +0 -57
- package/dist/ApiProviderConfig.js.map +0 -1
- package/dist/ApiProviderConfig.test.js +0 -278
- package/dist/ApiProviderConfig.test.js.map +0 -1
- package/dist/agent/advanced-discovery.js +0 -604
- package/dist/agent/advanced-discovery.js.map +0 -1
- package/dist/agent/config.js +0 -139
- package/dist/agent/config.js.map +0 -1
- package/dist/agent/config.test.js +0 -140
- package/dist/agent/config.test.js.map +0 -1
- package/dist/agent/constants.js +0 -172
- package/dist/agent/constants.js.map +0 -1
- package/dist/agent/constants.test.js +0 -132
- package/dist/agent/constants.test.js.map +0 -1
- package/dist/agent/debug-logger.js +0 -281
- package/dist/agent/debug-logger.js.map +0 -1
- package/dist/agent/debug-logger.test.js +0 -294
- package/dist/agent/debug-logger.test.js.map +0 -1
- package/dist/agent/error-handling.js +0 -114
- package/dist/agent/error-handling.js.map +0 -1
- package/dist/agent/error-handling.test.js +0 -191
- package/dist/agent/error-handling.test.js.map +0 -1
- package/dist/agent/errors.js +0 -301
- package/dist/agent/errors.js.map +0 -1
- package/dist/agent/executor.js +0 -206
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/executor.test.js +0 -228
- package/dist/agent/executor.test.js.map +0 -1
- package/dist/agent/goal-decomposer.js +0 -281
- package/dist/agent/goal-decomposer.js.map +0 -1
- package/dist/agent/goal-decomposer.test.js +0 -225
- package/dist/agent/goal-decomposer.test.js.map +0 -1
- package/dist/agent/health-monitor.js +0 -89
- package/dist/agent/health-monitor.js.map +0 -1
- package/dist/agent/improvement-loop.js +0 -177
- package/dist/agent/improvement-loop.js.map +0 -1
- package/dist/agent/index.js +0 -38
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/metrics.js +0 -158
- package/dist/agent/metrics.js.map +0 -1
- package/dist/agent/metrics.test.js +0 -311
- package/dist/agent/metrics.test.js.map +0 -1
- package/dist/agent/orchestrator.js +0 -438
- package/dist/agent/orchestrator.js.map +0 -1
- package/dist/agent/planner.js +0 -199
- package/dist/agent/planner.js.map +0 -1
- package/dist/agent/planner.test.js +0 -135
- package/dist/agent/planner.test.js.map +0 -1
- package/dist/agent/progress.js +0 -298
- package/dist/agent/progress.js.map +0 -1
- package/dist/agent/progress.test.js +0 -255
- package/dist/agent/progress.test.js.map +0 -1
- package/dist/agent/resource-monitor.js +0 -114
- package/dist/agent/resource-monitor.js.map +0 -1
- package/dist/agent/safety/approval.js +0 -178
- package/dist/agent/safety/approval.js.map +0 -1
- package/dist/agent/safety/approval.test.js +0 -142
- package/dist/agent/safety/approval.test.js.map +0 -1
- package/dist/agent/safety/checks.js +0 -152
- package/dist/agent/safety/checks.js.map +0 -1
- package/dist/agent/safety/checks.test.js +0 -89
- package/dist/agent/safety/checks.test.js.map +0 -1
- package/dist/agent/safety/interrupt.js +0 -92
- package/dist/agent/safety/interrupt.js.map +0 -1
- package/dist/agent/safety/interrupt.test.js +0 -53
- package/dist/agent/safety/interrupt.test.js.map +0 -1
- package/dist/agent/session.js +0 -117
- package/dist/agent/session.js.map +0 -1
- package/dist/agent/session.test.js +0 -213
- package/dist/agent/session.test.js.map +0 -1
- package/dist/agent/state-manager.js +0 -287
- package/dist/agent/state-manager.js.map +0 -1
- package/dist/agent/task-discovery.js +0 -433
- package/dist/agent/task-discovery.js.map +0 -1
- package/dist/agent/task-discovery.test.js +0 -40
- package/dist/agent/task-discovery.test.js.map +0 -1
- package/dist/agent/task-history.js +0 -128
- package/dist/agent/task-history.js.map +0 -1
- package/dist/agent/task-prioritizer.js +0 -286
- package/dist/agent/task-prioritizer.js.map +0 -1
- package/dist/agent/test-fixtures.js +0 -112
- package/dist/agent/test-fixtures.js.map +0 -1
- package/dist/agent/types.js +0 -15
- package/dist/agent/types.js.map +0 -1
- package/dist/agent/workflow-adapter.js +0 -219
- package/dist/agent/workflow-adapter.js.map +0 -1
- package/dist/agent/workflow-adapter.test.js +0 -11
- package/dist/agent/workflow-adapter.test.js.map +0 -1
- package/dist/agent/working-dir-discovery.js +0 -54
- package/dist/agent/working-dir-discovery.js.map +0 -1
- package/dist/agent/working-space.js +0 -484
- package/dist/agent/working-space.js.map +0 -1
- package/dist/agent/working-space.test.js +0 -436
- package/dist/agent/working-space.test.js.map +0 -1
- package/dist/api.js +0 -279
- package/dist/api.js.map +0 -1
- package/dist/builtin-commands.js +0 -20
- package/dist/builtin-commands.js.map +0 -1
- package/dist/commandSummarizer.js +0 -96
- package/dist/commandSummarizer.js.map +0 -1
- package/dist/commands/__tests__/command-detection.integration.test.js +0 -238
- package/dist/commands/__tests__/command-detection.integration.test.js.map +0 -1
- package/dist/commands/__tests__/script-generator.integration.test.js +0 -271
- package/dist/commands/__tests__/script-generator.integration.test.js.map +0 -1
- package/dist/commands/agent.js +0 -218
- package/dist/commands/agent.js.map +0 -1
- package/dist/commands/code.js +0 -102
- package/dist/commands/code.js.map +0 -1
- package/dist/commands/command.constants.js +0 -13
- package/dist/commands/command.constants.js.map +0 -1
- package/dist/commands/commit.js +0 -17
- package/dist/commands/commit.js.map +0 -1
- package/dist/commands/fix.js +0 -17
- package/dist/commands/fix.js.map +0 -1
- package/dist/commands/init.js +0 -501
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp-server.js +0 -122
- package/dist/commands/mcp-server.js.map +0 -1
- package/dist/commands/memory.js +0 -410
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/memory.test.js +0 -453
- package/dist/commands/memory.test.js.map +0 -1
- package/dist/commands/meta.js +0 -142
- package/dist/commands/meta.js.map +0 -1
- package/dist/commands/plan.js +0 -39
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/pr.js +0 -14
- package/dist/commands/pr.js.map +0 -1
- package/dist/commands/review-json.test.js +0 -33
- package/dist/commands/review-json.test.js.map +0 -1
- package/dist/commands/review.js +0 -137
- package/dist/commands/review.js.map +0 -1
- package/dist/commands/review.usage.test.js +0 -41
- package/dist/commands/review.usage.test.js.map +0 -1
- package/dist/commands/run.js +0 -107
- package/dist/commands/run.js.map +0 -1
- package/dist/commands/skills.js +0 -175
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/task.js +0 -34
- package/dist/commands/task.js.map +0 -1
- package/dist/commands/workflow.js +0 -117
- package/dist/commands/workflow.js.map +0 -1
- package/dist/configPrompt.js +0 -39
- package/dist/configPrompt.js.map +0 -1
- package/dist/env.js +0 -22
- package/dist/env.js.map +0 -1
- package/dist/errors.js +0 -132
- package/dist/errors.js.map +0 -1
- package/dist/errors.test.js +0 -21
- package/dist/errors.test.js.map +0 -1
- package/dist/file-attachments.js +0 -77
- package/dist/file-attachments.js.map +0 -1
- package/dist/file-attachments.test.js +0 -214
- package/dist/file-attachments.test.js.map +0 -1
- package/dist/getModel.js +0 -229
- package/dist/getModel.js.map +0 -1
- package/dist/getModel.test.js +0 -67
- package/dist/getModel.test.js.map +0 -1
- package/dist/getProviderOptions.js +0 -58
- package/dist/getProviderOptions.js.map +0 -1
- package/dist/git-operations.js +0 -363
- package/dist/git-operations.js.map +0 -1
- package/dist/git-operations.test.js +0 -81
- package/dist/git-operations.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -41
- package/dist/logger.js.map +0 -1
- package/dist/mcp/client.js +0 -11
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/error-scenarios.test.js +0 -206
- package/dist/mcp/error-scenarios.test.js.map +0 -1
- package/dist/mcp/errors.js +0 -63
- package/dist/mcp/errors.js.map +0 -1
- package/dist/mcp/index.js +0 -9
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/manager.js +0 -231
- package/dist/mcp/manager.js.map +0 -1
- package/dist/mcp/manager.test.js +0 -40
- package/dist/mcp/manager.test.js.map +0 -1
- package/dist/mcp/sdk-client.js +0 -166
- package/dist/mcp/sdk-client.js.map +0 -1
- package/dist/mcp/shared-types.js +0 -3
- package/dist/mcp/shared-types.js.map +0 -1
- package/dist/mcp/tools-integration.test.js +0 -198
- package/dist/mcp/tools-integration.test.js.map +0 -1
- package/dist/mcp/tools.js +0 -60
- package/dist/mcp/tools.js.map +0 -1
- package/dist/mcp/transport.js +0 -257
- package/dist/mcp/transport.js.map +0 -1
- package/dist/mcp/types.js +0 -3
- package/dist/mcp/types.js.map +0 -1
- package/dist/mcp-server/index.js +0 -5
- package/dist/mcp-server/index.js.map +0 -1
- package/dist/mcp-server/plan-formatting.test.js +0 -74
- package/dist/mcp-server/plan-formatting.test.js.map +0 -1
- package/dist/mcp-server/sdk-server.js +0 -102
- package/dist/mcp-server/sdk-server.js.map +0 -1
- package/dist/mcp-server/sdk-server.test.js +0 -363
- package/dist/mcp-server/sdk-server.test.js.map +0 -1
- package/dist/mcp-server/tools.js +0 -785
- package/dist/mcp-server/tools.js.map +0 -1
- package/dist/mcp-server/types.js +0 -3
- package/dist/mcp-server/types.js.map +0 -1
- package/dist/options.js +0 -85
- package/dist/options.js.map +0 -1
- package/dist/options.test.js +0 -177
- package/dist/options.test.js.map +0 -1
- package/dist/prices.js +0 -61
- package/dist/prices.js.map +0 -1
- package/dist/prices.test.js +0 -148
- package/dist/prices.test.js.map +0 -1
- package/dist/runWorkflow.js +0 -313
- package/dist/runWorkflow.js.map +0 -1
- package/dist/script/__tests__/execution.integration.test.js +0 -274
- package/dist/script/__tests__/execution.integration.test.js.map +0 -1
- package/dist/script/__tests__/runner.test.js +0 -176
- package/dist/script/__tests__/runner.test.js.map +0 -1
- package/dist/script/__tests__/validator.test.js +0 -180
- package/dist/script/__tests__/validator.test.js.map +0 -1
- package/dist/script/executor.js +0 -127
- package/dist/script/executor.js.map +0 -1
- package/dist/script/index.js +0 -4
- package/dist/script/index.js.map +0 -1
- package/dist/script/runner.js +0 -258
- package/dist/script/runner.js.map +0 -1
- package/dist/skillIntegration.js +0 -46
- package/dist/skillIntegration.js.map +0 -1
- package/dist/skillIntegration.test.js +0 -128
- package/dist/skillIntegration.test.js.map +0 -1
- package/dist/test/utils.js +0 -200
- package/dist/test/utils.js.map +0 -1
- package/dist/test/workflow-fixtures.js +0 -120
- package/dist/test/workflow-fixtures.js.map +0 -1
- package/dist/tool-implementations.js +0 -521
- package/dist/tool-implementations.js.map +0 -1
- package/dist/tool-implementations.skill-tools.test.js +0 -106
- package/dist/tool-implementations.skill-tools.test.js.map +0 -1
- package/dist/tools/getTodoItem.js +0 -33
- package/dist/tools/getTodoItem.js.map +0 -1
- package/dist/tools/gitDiff.js +0 -108
- package/dist/tools/gitDiff.js.map +0 -1
- package/dist/tools/index.js +0 -8
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/listMemoryTopics.js +0 -24
- package/dist/tools/listMemoryTopics.js.map +0 -1
- package/dist/tools/listTodoItems.js +0 -35
- package/dist/tools/listTodoItems.js.map +0 -1
- package/dist/tools/listTodoItems.test.js +0 -89
- package/dist/tools/listTodoItems.test.js.map +0 -1
- package/dist/tools/readMemory.js +0 -33
- package/dist/tools/readMemory.js.map +0 -1
- package/dist/tools/updateMemory.js +0 -62
- package/dist/tools/updateMemory.js.map +0 -1
- package/dist/tools/updateMemory.test.js +0 -109
- package/dist/tools/updateMemory.test.js.map +0 -1
- package/dist/tools/updateTodoItem.js +0 -31
- package/dist/tools/updateTodoItem.js.map +0 -1
- package/dist/tools/utils/diffLineNumbers.js +0 -178
- package/dist/tools/utils/diffLineNumbers.js.map +0 -1
- package/dist/utils/cacheControl.js +0 -59
- package/dist/utils/cacheControl.js.map +0 -1
- package/dist/utils/cacheControl.test.js +0 -128
- package/dist/utils/cacheControl.test.js.map +0 -1
- package/dist/utils/command.js +0 -50
- package/dist/utils/command.js.map +0 -1
- package/dist/utils/shell.js +0 -56
- package/dist/utils/shell.js.map +0 -1
- package/dist/utils/userInput.js +0 -47
- package/dist/utils/userInput.js.map +0 -1
- package/dist/workflow-tools.js +0 -21
- package/dist/workflow-tools.js.map +0 -1
- package/dist/workflows/agent-builder.js +0 -90
- package/dist/workflows/agent-builder.js.map +0 -1
- package/dist/workflows/agent-builder.test.js +0 -115
- package/dist/workflows/agent-builder.test.js.map +0 -1
- package/dist/workflows/code.workflow.js +0 -145
- package/dist/workflows/code.workflow.js.map +0 -1
- package/dist/workflows/commit.workflow.js +0 -111
- package/dist/workflows/commit.workflow.js.map +0 -1
- package/dist/workflows/commit.workflow.test.js +0 -141
- package/dist/workflows/commit.workflow.test.js.map +0 -1
- package/dist/workflows/fix.workflow.js +0 -172
- package/dist/workflows/fix.workflow.js.map +0 -1
- package/dist/workflows/fix.workflow.test.js +0 -137
- package/dist/workflows/fix.workflow.test.js.map +0 -1
- package/dist/workflows/git-file-tools.js +0 -408
- package/dist/workflows/git-file-tools.js.map +0 -1
- package/dist/workflows/index.js +0 -12
- package/dist/workflows/index.js.map +0 -1
- package/dist/workflows/init-interactive.workflow.js +0 -198
- package/dist/workflows/init-interactive.workflow.js.map +0 -1
- package/dist/workflows/init.workflow.js +0 -41
- package/dist/workflows/init.workflow.js.map +0 -1
- package/dist/workflows/meta.workflow.js +0 -107
- package/dist/workflows/meta.workflow.js.map +0 -1
- package/dist/workflows/plan.workflow.js +0 -275
- package/dist/workflows/plan.workflow.js.map +0 -1
- package/dist/workflows/plan.workflow.test.js +0 -419
- package/dist/workflows/plan.workflow.test.js.map +0 -1
- package/dist/workflows/pr.workflow.js +0 -54
- package/dist/workflows/pr.workflow.js.map +0 -1
- package/dist/workflows/pr.workflow.test.js +0 -98
- package/dist/workflows/pr.workflow.test.js.map +0 -1
- package/dist/workflows/prompts/coder.js +0 -85
- package/dist/workflows/prompts/coder.js.map +0 -1
- package/dist/workflows/prompts/commit.js +0 -16
- package/dist/workflows/prompts/commit.js.map +0 -1
- package/dist/workflows/prompts/fix.js +0 -44
- package/dist/workflows/prompts/fix.js.map +0 -1
- package/dist/workflows/prompts/index.js +0 -10
- package/dist/workflows/prompts/index.js.map +0 -1
- package/dist/workflows/prompts/init.js +0 -48
- package/dist/workflows/prompts/init.js.map +0 -1
- package/dist/workflows/prompts/meta.js +0 -17
- package/dist/workflows/prompts/meta.js.map +0 -1
- package/dist/workflows/prompts/plan.js +0 -212
- package/dist/workflows/prompts/plan.js.map +0 -1
- package/dist/workflows/prompts/pr.js +0 -15
- package/dist/workflows/prompts/pr.js.map +0 -1
- package/dist/workflows/prompts/review.js +0 -145
- package/dist/workflows/prompts/review.js.map +0 -1
- package/dist/workflows/prompts/shared.js +0 -93
- package/dist/workflows/prompts/shared.js.map +0 -1
- package/dist/workflows/review.workflow.js +0 -357
- package/dist/workflows/review.workflow.js.map +0 -1
- package/dist/workflows/task.workflow.js +0 -47
- package/dist/workflows/task.workflow.js.map +0 -1
- package/dist/workflows/testing/helper.js +0 -41
- package/dist/workflows/testing/helper.js.map +0 -1
- package/dist/workflows/workflow.utils.js +0 -351
- package/dist/workflows/workflow.utils.js.map +0 -1
- package/dist/workflows/workflow.utils.test.js +0 -45
- package/dist/workflows/workflow.utils.test.js.map +0 -1
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { afterEach, describe, expect, mock, test } from 'bun:test';
|
|
3
|
-
import { execSync } from 'node:child_process';
|
|
4
|
-
import { UserCancelledError } from '../errors';
|
|
5
|
-
import { createWorkflowTestContext } from '../test/workflow-fixtures';
|
|
6
|
-
import { commitWorkflow } from './commit.workflow';
|
|
7
|
-
// Check if git is available synchronously
|
|
8
|
-
let gitAvailable = false;
|
|
9
|
-
try {
|
|
10
|
-
execSync('git --version', { stdio: 'ignore' });
|
|
11
|
-
gitAvailable = true;
|
|
12
|
-
}
|
|
13
|
-
catch {
|
|
14
|
-
// Git not available
|
|
15
|
-
}
|
|
16
|
-
describe.skipIf(!gitAvailable)('commitWorkflow', () => {
|
|
17
|
-
const defaultInput = {
|
|
18
|
-
interactive: false,
|
|
19
|
-
additionalTools: {},
|
|
20
|
-
};
|
|
21
|
-
afterEach(() => {
|
|
22
|
-
mock.restore();
|
|
23
|
-
});
|
|
24
|
-
test('should generate commit message with staged files', async () => {
|
|
25
|
-
const { context, tools, logger } = createWorkflowTestContext();
|
|
26
|
-
// Add commit-specific tools
|
|
27
|
-
tools.printChangeFile = mock();
|
|
28
|
-
tools.createCommit = mock();
|
|
29
|
-
tools.printChangeFile.mockResolvedValue({
|
|
30
|
-
stagedFiles: [{ path: 'src/file.ts', status: 'M' }],
|
|
31
|
-
unstagedFiles: [],
|
|
32
|
-
});
|
|
33
|
-
tools.executeCommand.mockResolvedValueOnce({ exitCode: 0, stdout: 'M\tsrc/file.ts' }).mockResolvedValueOnce({
|
|
34
|
-
exitCode: 0,
|
|
35
|
-
stdout: '--- a/src/file.ts\n+++ b/src/file.ts\n@@ -1,3 +1,4 @@\n+export const newFunc = () => {}\n',
|
|
36
|
-
});
|
|
37
|
-
tools.createCommit.mockResolvedValue({});
|
|
38
|
-
tools.generateText.mockResolvedValue([
|
|
39
|
-
{
|
|
40
|
-
role: 'assistant',
|
|
41
|
-
content: JSON.stringify({ commitMessage: 'feat: add newFunc' }),
|
|
42
|
-
},
|
|
43
|
-
]);
|
|
44
|
-
const result = await commitWorkflow({ ...defaultInput }, context);
|
|
45
|
-
expect(result).toBe('feat: add newFunc');
|
|
46
|
-
expect(tools.printChangeFile).toHaveBeenCalled();
|
|
47
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({
|
|
48
|
-
command: 'git',
|
|
49
|
-
args: ['diff', '--name-status', '--no-color', '--staged'],
|
|
50
|
-
});
|
|
51
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({
|
|
52
|
-
command: 'git',
|
|
53
|
-
args: ['diff', '--staged'],
|
|
54
|
-
});
|
|
55
|
-
expect(tools.generateText).toHaveBeenCalled();
|
|
56
|
-
expect(logger.info).toHaveBeenCalledWith('\nCommit message:\nfeat: add newFunc');
|
|
57
|
-
expect(tools.createCommit).toHaveBeenCalledWith({
|
|
58
|
-
message: 'feat: add newFunc',
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
test('should auto-stage all files when all=true', async () => {
|
|
62
|
-
const { context, tools } = createWorkflowTestContext();
|
|
63
|
-
// Add commit-specific tools
|
|
64
|
-
tools.printChangeFile = mock();
|
|
65
|
-
tools.createCommit = mock();
|
|
66
|
-
tools.printChangeFile.mockResolvedValue({
|
|
67
|
-
stagedFiles: [],
|
|
68
|
-
unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
|
|
69
|
-
});
|
|
70
|
-
tools.executeCommand.mockResolvedValue({ exitCode: 0, stdout: 'M\tsrc/file.ts' });
|
|
71
|
-
tools.generateText.mockResolvedValue([
|
|
72
|
-
{
|
|
73
|
-
role: 'assistant',
|
|
74
|
-
content: JSON.stringify({ commitMessage: 'feat: stage file' }),
|
|
75
|
-
},
|
|
76
|
-
]);
|
|
77
|
-
const result = await commitWorkflow({ ...defaultInput, all: true }, context);
|
|
78
|
-
expect(result).toBe('feat: stage file');
|
|
79
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({
|
|
80
|
-
command: 'git',
|
|
81
|
-
args: ['add', '.'],
|
|
82
|
-
});
|
|
83
|
-
expect(tools.generateText).toHaveBeenCalled();
|
|
84
|
-
expect(tools.createCommit).toHaveBeenCalledWith({
|
|
85
|
-
message: 'feat: stage file',
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
test('should prompt user and stage when confirmed', async () => {
|
|
89
|
-
const { context, tools } = createWorkflowTestContext();
|
|
90
|
-
// Add commit-specific tools
|
|
91
|
-
tools.printChangeFile = mock();
|
|
92
|
-
tools.confirm = mock();
|
|
93
|
-
tools.createCommit = mock();
|
|
94
|
-
tools.printChangeFile.mockResolvedValue({
|
|
95
|
-
stagedFiles: [],
|
|
96
|
-
unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
|
|
97
|
-
});
|
|
98
|
-
tools.confirm.mockResolvedValue(true);
|
|
99
|
-
tools.executeCommand.mockResolvedValue({ exitCode: 0, stdout: 'M\tsrc/file.ts' });
|
|
100
|
-
tools.generateText.mockResolvedValue([
|
|
101
|
-
{
|
|
102
|
-
role: 'assistant',
|
|
103
|
-
content: JSON.stringify({ commitMessage: 'feat: stage file' }),
|
|
104
|
-
},
|
|
105
|
-
]);
|
|
106
|
-
const result = await commitWorkflow({ ...defaultInput, interactive: true }, context);
|
|
107
|
-
expect(result).toBe('feat: stage file');
|
|
108
|
-
expect(tools.confirm).toHaveBeenCalledWith({
|
|
109
|
-
message: 'No staged files found. Stage all files?',
|
|
110
|
-
default: false,
|
|
111
|
-
});
|
|
112
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({
|
|
113
|
-
command: 'git',
|
|
114
|
-
args: ['add', '.'],
|
|
115
|
-
});
|
|
116
|
-
expect(tools.generateText).toHaveBeenCalled();
|
|
117
|
-
expect(tools.createCommit).toHaveBeenCalledWith({
|
|
118
|
-
message: 'feat: stage file',
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
test('should throw UserCancelledError when user declines staging', async () => {
|
|
122
|
-
const { context, tools } = createWorkflowTestContext();
|
|
123
|
-
// Add commit-specific tools
|
|
124
|
-
tools.printChangeFile = mock();
|
|
125
|
-
tools.confirm = mock();
|
|
126
|
-
tools.printChangeFile.mockResolvedValue({
|
|
127
|
-
stagedFiles: [],
|
|
128
|
-
unstagedFiles: [{ path: 'src/file.ts', status: 'M' }],
|
|
129
|
-
});
|
|
130
|
-
tools.confirm.mockResolvedValue(false);
|
|
131
|
-
await expect(commitWorkflow({ ...defaultInput, interactive: true }, context)).rejects.toThrow(UserCancelledError);
|
|
132
|
-
});
|
|
133
|
-
test('should throw error when no files to commit', async () => {
|
|
134
|
-
const { context, tools } = createWorkflowTestContext();
|
|
135
|
-
// Add commit-specific tools
|
|
136
|
-
tools.printChangeFile = mock();
|
|
137
|
-
tools.printChangeFile.mockResolvedValue({ stagedFiles: [], unstagedFiles: [] });
|
|
138
|
-
await expect(commitWorkflow({ ...defaultInput }, context)).rejects.toThrow('No files to commit. Aborting.');
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
//# sourceMappingURL=commit.workflow.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit.workflow.test.js","sourceRoot":"","sources":["../../src/workflows/commit.workflow.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { agentWorkflow, executeCommand, fetchUrl, listFiles, readBinaryFile, readFile, removeFile, renameFile, replaceInFile, searchFiles, writeToFile, } from '@polka-codes/core';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import { FIX_SYSTEM_PROMPT, getFixUserPrompt } from './prompts';
|
|
5
|
-
import { getDefaultContext } from './workflow.utils';
|
|
6
|
-
const FixIterationSummarySchema = z
|
|
7
|
-
.object({
|
|
8
|
-
summary: z.string().nullish(),
|
|
9
|
-
bailReason: z.string().nullish(),
|
|
10
|
-
})
|
|
11
|
-
.refine((data) => (data.summary != null) !== (data.bailReason != null), {
|
|
12
|
-
message: 'Either summary or bailReason must be provided, but not both',
|
|
13
|
-
});
|
|
14
|
-
export const fixWorkflow = async (input, context) => {
|
|
15
|
-
const { tools, logger, step } = context;
|
|
16
|
-
const { command: inputCommand, task, prompt, interactive = true, additionalTools } = input;
|
|
17
|
-
let command = inputCommand;
|
|
18
|
-
const summaries = [];
|
|
19
|
-
let formatCommand;
|
|
20
|
-
// Helper function to build script invocation command
|
|
21
|
-
const buildScriptCommand = (scriptName) => {
|
|
22
|
-
const runtime = process.argv[0];
|
|
23
|
-
const script = process.argv[1];
|
|
24
|
-
return `"${runtime}" "${script}" run ${scriptName}`;
|
|
25
|
-
};
|
|
26
|
-
if (!command) {
|
|
27
|
-
const config = input.config;
|
|
28
|
-
const check = config?.scripts?.check;
|
|
29
|
-
const test = config?.scripts?.test;
|
|
30
|
-
const format = config?.scripts?.format;
|
|
31
|
-
let checkCommand;
|
|
32
|
-
if (typeof check === 'string') {
|
|
33
|
-
checkCommand = check;
|
|
34
|
-
}
|
|
35
|
-
else if (check && 'command' in check) {
|
|
36
|
-
checkCommand = check.command;
|
|
37
|
-
}
|
|
38
|
-
else if (check && 'script' in check) {
|
|
39
|
-
// For TypeScript scripts, invoke via CLI
|
|
40
|
-
checkCommand = buildScriptCommand('check');
|
|
41
|
-
}
|
|
42
|
-
else if (check && 'workflow' in check) {
|
|
43
|
-
// Workflows not yet supported for fix workflow
|
|
44
|
-
logger.warn('Workflow scripts are not yet supported in fix workflow');
|
|
45
|
-
}
|
|
46
|
-
let testCommand;
|
|
47
|
-
if (typeof test === 'string') {
|
|
48
|
-
testCommand = test;
|
|
49
|
-
}
|
|
50
|
-
else if (test && 'command' in test) {
|
|
51
|
-
testCommand = test.command;
|
|
52
|
-
}
|
|
53
|
-
else if (test && 'script' in test) {
|
|
54
|
-
// For TypeScript scripts, invoke via CLI
|
|
55
|
-
testCommand = buildScriptCommand('test');
|
|
56
|
-
}
|
|
57
|
-
else if (test && 'workflow' in test) {
|
|
58
|
-
// Workflows not yet supported for fix workflow
|
|
59
|
-
logger.warn('Workflow scripts are not yet supported in fix workflow');
|
|
60
|
-
}
|
|
61
|
-
if (typeof format === 'string') {
|
|
62
|
-
formatCommand = format;
|
|
63
|
-
}
|
|
64
|
-
else if (format && 'command' in format) {
|
|
65
|
-
formatCommand = format.command;
|
|
66
|
-
}
|
|
67
|
-
else if (format && 'script' in format) {
|
|
68
|
-
// For TypeScript scripts, invoke via CLI
|
|
69
|
-
formatCommand = buildScriptCommand('format');
|
|
70
|
-
}
|
|
71
|
-
else if (format && 'workflow' in format) {
|
|
72
|
-
// Workflows not yet supported for fix workflow
|
|
73
|
-
logger.warn('Workflow scripts are not yet supported in fix workflow');
|
|
74
|
-
}
|
|
75
|
-
let defaultCommand;
|
|
76
|
-
if (checkCommand && testCommand) {
|
|
77
|
-
defaultCommand = `${checkCommand} && ${testCommand}`;
|
|
78
|
-
}
|
|
79
|
-
else if (checkCommand) {
|
|
80
|
-
defaultCommand = checkCommand;
|
|
81
|
-
}
|
|
82
|
-
else if (testCommand) {
|
|
83
|
-
defaultCommand = testCommand;
|
|
84
|
-
}
|
|
85
|
-
if (interactive) {
|
|
86
|
-
command = await tools.input({
|
|
87
|
-
message: 'Please enter the command to run to identify issues:',
|
|
88
|
-
default: defaultCommand,
|
|
89
|
-
});
|
|
90
|
-
if (!command) {
|
|
91
|
-
throw new Error('No command provided. Aborting.');
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
command = defaultCommand;
|
|
96
|
-
}
|
|
97
|
-
if (!command) {
|
|
98
|
-
logger.info('No command to run.');
|
|
99
|
-
return { success: true, summaries };
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
for (let i = 0; i < 10; i++) {
|
|
103
|
-
logger.info(`Running command (attempt ${i + 1}/10): ${command}`);
|
|
104
|
-
if (formatCommand) {
|
|
105
|
-
await tools.executeCommand({ command: formatCommand, shell: true, pipe: true });
|
|
106
|
-
}
|
|
107
|
-
const { exitCode, stdout, stderr } = await tools.executeCommand({
|
|
108
|
-
command,
|
|
109
|
-
shell: true,
|
|
110
|
-
pipe: true,
|
|
111
|
-
});
|
|
112
|
-
if (exitCode === 0) {
|
|
113
|
-
logger.info('Command succeeded!');
|
|
114
|
-
return { success: true, summaries };
|
|
115
|
-
}
|
|
116
|
-
logger.info(`Command failed with exit code ${exitCode}. Asking agent to fix it...`);
|
|
117
|
-
const result = await step(`fix-${i}`, async () => {
|
|
118
|
-
const { context: defaultContext } = await getDefaultContext(input.config, 'fix');
|
|
119
|
-
const memoryContext = await tools.getMemoryContext();
|
|
120
|
-
const userPrompt = getFixUserPrompt(command, exitCode, stdout, stderr, task, prompt);
|
|
121
|
-
const agentTools = [
|
|
122
|
-
readFile,
|
|
123
|
-
writeToFile,
|
|
124
|
-
replaceInFile,
|
|
125
|
-
searchFiles,
|
|
126
|
-
listFiles,
|
|
127
|
-
executeCommand,
|
|
128
|
-
fetchUrl,
|
|
129
|
-
readBinaryFile,
|
|
130
|
-
removeFile,
|
|
131
|
-
renameFile,
|
|
132
|
-
];
|
|
133
|
-
if (additionalTools?.search) {
|
|
134
|
-
agentTools.push(additionalTools.search);
|
|
135
|
-
}
|
|
136
|
-
if (additionalTools?.mcpTools) {
|
|
137
|
-
agentTools.push(...additionalTools.mcpTools);
|
|
138
|
-
}
|
|
139
|
-
return await agentWorkflow({
|
|
140
|
-
systemPrompt: FIX_SYSTEM_PROMPT,
|
|
141
|
-
userMessage: [
|
|
142
|
-
{
|
|
143
|
-
role: 'user',
|
|
144
|
-
content: `${userPrompt}\n\n${defaultContext}\n${memoryContext}`,
|
|
145
|
-
},
|
|
146
|
-
],
|
|
147
|
-
tools: agentTools,
|
|
148
|
-
outputSchema: FixIterationSummarySchema,
|
|
149
|
-
}, context);
|
|
150
|
-
});
|
|
151
|
-
const res = await step(`fix-summary-${i}`, async () => {
|
|
152
|
-
if (result.type === 'Exit' && result.object) {
|
|
153
|
-
const { summary, bailReason } = result.object;
|
|
154
|
-
if (bailReason) {
|
|
155
|
-
logger.warn(`Agent bailed: ${bailReason}`);
|
|
156
|
-
return { bailReason };
|
|
157
|
-
}
|
|
158
|
-
if (summary) {
|
|
159
|
-
summaries.push(summary);
|
|
160
|
-
await tools.updateMemory({ operation: 'append', content: `Summary of changes for fix attempt ${i + 1}: ${summary}` });
|
|
161
|
-
logger.info(`Summary of changes: ${summary}`);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
if (res?.bailReason) {
|
|
166
|
-
return { success: false, summaries, reason: res.bailReason };
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
logger.error('Failed to fix the issue after maximum attempts.');
|
|
170
|
-
return { success: false, summaries, reason: 'Failed to fix the issue after maximum attempts.' };
|
|
171
|
-
};
|
|
172
|
-
//# sourceMappingURL=fix.workflow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix.workflow.js","sourceRoot":"","sources":["../../src/workflows/fix.workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { afterEach, describe, expect, mock, spyOn, test } from 'bun:test';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import { createWorkflowTestContext, mockAgentResponse, mockCommandAttempts, mockFailedCommand, mockSuccessfulCommand, } from '../test/workflow-fixtures';
|
|
5
|
-
import { fixWorkflow } from './fix.workflow';
|
|
6
|
-
import * as prompts from './prompts';
|
|
7
|
-
describe('fixWorkflow', () => {
|
|
8
|
-
const defaultInput = {
|
|
9
|
-
interactive: false,
|
|
10
|
-
additionalTools: {},
|
|
11
|
-
};
|
|
12
|
-
afterEach(() => {
|
|
13
|
-
mock.restore();
|
|
14
|
-
});
|
|
15
|
-
test('should succeed when command passes on first attempt', async () => {
|
|
16
|
-
const { context, tools } = createWorkflowTestContext();
|
|
17
|
-
mockSuccessfulCommand(tools, 'All tests passed');
|
|
18
|
-
const result = await fixWorkflow({ ...defaultInput, command: 'bun test' }, context);
|
|
19
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({ command: 'bun test', shell: true, pipe: true });
|
|
20
|
-
expect(result).toStrictEqual({ success: true, summaries: [] });
|
|
21
|
-
});
|
|
22
|
-
test('should prompt for command when not provided', async () => {
|
|
23
|
-
const { context, tools } = createWorkflowTestContext();
|
|
24
|
-
const config = {
|
|
25
|
-
scripts: {
|
|
26
|
-
check: 'bun typecheck',
|
|
27
|
-
test: 'bun test',
|
|
28
|
-
},
|
|
29
|
-
};
|
|
30
|
-
tools.input.mockResolvedValue('bun typecheck && bun test');
|
|
31
|
-
mockSuccessfulCommand(tools, 'Success');
|
|
32
|
-
await fixWorkflow({ ...defaultInput, interactive: true, config }, context);
|
|
33
|
-
expect(tools.input).toHaveBeenCalledWith({
|
|
34
|
-
message: 'Please enter the command to run to identify issues:',
|
|
35
|
-
default: 'bun typecheck && bun test',
|
|
36
|
-
});
|
|
37
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({
|
|
38
|
-
command: 'bun typecheck && bun test',
|
|
39
|
-
shell: true,
|
|
40
|
-
pipe: true,
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
test('should use default command when not interactive', async () => {
|
|
44
|
-
const { context, tools } = createWorkflowTestContext();
|
|
45
|
-
const config = {
|
|
46
|
-
scripts: {
|
|
47
|
-
check: 'bun typecheck',
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
mockSuccessfulCommand(tools, '');
|
|
51
|
-
await fixWorkflow({ ...defaultInput, interactive: false, config }, context);
|
|
52
|
-
expect(tools.executeCommand).toHaveBeenCalledWith({ command: 'bun typecheck', shell: true, pipe: true });
|
|
53
|
-
});
|
|
54
|
-
test('should throw error when no command provided and user provides empty input', async () => {
|
|
55
|
-
const { context, tools } = createWorkflowTestContext();
|
|
56
|
-
const config = {};
|
|
57
|
-
tools.input.mockResolvedValue('');
|
|
58
|
-
const promise = fixWorkflow({ ...defaultInput, interactive: true, config }, context);
|
|
59
|
-
await expect(promise).rejects.toThrow('No command provided. Aborting.');
|
|
60
|
-
});
|
|
61
|
-
test('should succeed after agent fixes the issue', async () => {
|
|
62
|
-
const { context, tools } = createWorkflowTestContext();
|
|
63
|
-
mockCommandAttempts(tools, [1, 0]);
|
|
64
|
-
mockAgentResponse(tools, 'I did a fix');
|
|
65
|
-
const result = await fixWorkflow({ ...defaultInput, command: 'bun test' }, context);
|
|
66
|
-
expect(tools.executeCommand).toHaveBeenCalledTimes(2);
|
|
67
|
-
expect(tools.generateText).toHaveBeenCalledTimes(1);
|
|
68
|
-
expect(result).toStrictEqual({ success: true, summaries: ['I did a fix'] });
|
|
69
|
-
});
|
|
70
|
-
test('should fail after exhausting all retries', async () => {
|
|
71
|
-
const { context, tools } = createWorkflowTestContext();
|
|
72
|
-
const failedAttempts = Array(10).fill(1);
|
|
73
|
-
mockCommandAttempts(tools, failedAttempts);
|
|
74
|
-
mockAgentResponse(tools, 'I did a fix');
|
|
75
|
-
const result = await fixWorkflow({ ...defaultInput, command: 'bun test' }, context);
|
|
76
|
-
expect(tools.executeCommand).toHaveBeenCalledTimes(10);
|
|
77
|
-
expect(tools.generateText).toHaveBeenCalledTimes(10);
|
|
78
|
-
expect(result).toMatchSnapshot();
|
|
79
|
-
});
|
|
80
|
-
test('should return bailReason when agent cannot fix', async () => {
|
|
81
|
-
const { context, tools } = createWorkflowTestContext();
|
|
82
|
-
mockFailedCommand(tools, 'FAIL', 'Mysterious error');
|
|
83
|
-
mockAgentResponse(tools, null, 'Unable to identify the root cause of the error');
|
|
84
|
-
const result = await fixWorkflow({ ...defaultInput, command: 'bun test' }, context);
|
|
85
|
-
expect(tools.executeCommand).toHaveBeenCalledTimes(1);
|
|
86
|
-
expect(tools.generateText).toHaveBeenCalledTimes(1);
|
|
87
|
-
expect(result).toMatchSnapshot();
|
|
88
|
-
});
|
|
89
|
-
test('should pass task to agent prompt', async () => {
|
|
90
|
-
const { context, tools } = createWorkflowTestContext();
|
|
91
|
-
const getFixUserPromptSpy = spyOn(prompts, 'getFixUserPrompt');
|
|
92
|
-
mockFailedCommand(tools, 'FAIL src/test.ts', 'TypeError: undefined is not a function');
|
|
93
|
-
mockAgentResponse(tools, 'I did a fix');
|
|
94
|
-
mockCommandAttempts(tools, [1, 0]);
|
|
95
|
-
await fixWorkflow({ ...defaultInput, command: 'bun test', task: 'My original task was to do this thing.' }, context);
|
|
96
|
-
expect(getFixUserPromptSpy).toHaveBeenCalledTimes(1);
|
|
97
|
-
expect(tools.generateText).toHaveBeenCalledTimes(1);
|
|
98
|
-
const generateTextCall = tools.generateText.mock.calls[0][0];
|
|
99
|
-
const userMessage = generateTextCall.messages.find((m) => m.role === 'user');
|
|
100
|
-
expect(userMessage?.content).toContain('My original task was to do this thing.');
|
|
101
|
-
getFixUserPromptSpy.mockRestore();
|
|
102
|
-
});
|
|
103
|
-
test('should pass prompt to agent prompt', async () => {
|
|
104
|
-
const { context, tools } = createWorkflowTestContext();
|
|
105
|
-
const getFixUserPromptSpy = spyOn(prompts, 'getFixUserPrompt');
|
|
106
|
-
mockFailedCommand(tools, 'FAIL src/test.ts', 'TypeError: undefined is not a function');
|
|
107
|
-
mockAgentResponse(tools, 'I did a fix');
|
|
108
|
-
mockCommandAttempts(tools, [1, 0]);
|
|
109
|
-
await fixWorkflow({ ...defaultInput, command: 'bun test', prompt: 'Focus on the authentication tests' }, context);
|
|
110
|
-
expect(getFixUserPromptSpy).toHaveBeenCalledTimes(1);
|
|
111
|
-
expect(tools.generateText).toHaveBeenCalledTimes(1);
|
|
112
|
-
const generateTextCall = tools.generateText.mock.calls[0][0];
|
|
113
|
-
const userMessage = generateTextCall.messages.find((m) => m.role === 'user');
|
|
114
|
-
expect(userMessage?.content).toContain('Focus on the authentication tests');
|
|
115
|
-
getFixUserPromptSpy.mockRestore();
|
|
116
|
-
});
|
|
117
|
-
test('should pass additional tools to agent workflow', async () => {
|
|
118
|
-
const { context, tools } = createWorkflowTestContext();
|
|
119
|
-
const searchTool = {
|
|
120
|
-
name: 'search',
|
|
121
|
-
description: 'Search the web',
|
|
122
|
-
parameters: z.object({ query: z.string() }),
|
|
123
|
-
handler: async () => ({ type: 'Reply', message: { type: 'text', value: 'result' } }),
|
|
124
|
-
};
|
|
125
|
-
mockFailedCommand(tools, 'FAIL', 'Error');
|
|
126
|
-
mockAgentResponse(tools, 'I did a fix');
|
|
127
|
-
await fixWorkflow({
|
|
128
|
-
...defaultInput,
|
|
129
|
-
command: 'bun test',
|
|
130
|
-
additionalTools: { search: searchTool },
|
|
131
|
-
}, context);
|
|
132
|
-
const generateTextCall = tools.generateText.mock.calls[0][0];
|
|
133
|
-
expect(generateTextCall.tools).toHaveProperty('search');
|
|
134
|
-
expect(generateTextCall.tools.search.description).toBe('Search the web');
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
//# sourceMappingURL=fix.workflow.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix.workflow.test.js","sourceRoot":"","sources":["../../src/workflows/fix.workflow.test.ts"],"names":[],"mappings":"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"}
|