@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,109 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, spyOn } from 'bun:test';
|
|
2
|
-
import { MockProvider } from '@polka-codes/core';
|
|
3
|
-
import updateMemory from './updateMemory';
|
|
4
|
-
describe('updateMemory', () => {
|
|
5
|
-
describe('parameters', () => {
|
|
6
|
-
it('should parse append operation with content', () => {
|
|
7
|
-
const result = updateMemory.parameters.safeParse({
|
|
8
|
-
operation: 'append',
|
|
9
|
-
content: 'new data',
|
|
10
|
-
});
|
|
11
|
-
expect(result.success).toBe(true);
|
|
12
|
-
});
|
|
13
|
-
it('should fail to parse append operation without content', () => {
|
|
14
|
-
const result = updateMemory.parameters.safeParse({
|
|
15
|
-
operation: 'append',
|
|
16
|
-
});
|
|
17
|
-
expect(result.success).toBe(false);
|
|
18
|
-
// Verify error mentions content
|
|
19
|
-
if (result.error) {
|
|
20
|
-
expect(result.error.issues[0].message).toMatch(/content/i);
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
it('should parse replace operation with content', () => {
|
|
24
|
-
const result = updateMemory.parameters.safeParse({
|
|
25
|
-
operation: 'replace',
|
|
26
|
-
content: 'new data',
|
|
27
|
-
});
|
|
28
|
-
expect(result.success).toBe(true);
|
|
29
|
-
});
|
|
30
|
-
it('should fail to parse replace operation without content', () => {
|
|
31
|
-
const result = updateMemory.parameters.safeParse({
|
|
32
|
-
operation: 'replace',
|
|
33
|
-
});
|
|
34
|
-
expect(result.success).toBe(false);
|
|
35
|
-
// Verify error mentions content
|
|
36
|
-
if (result.error) {
|
|
37
|
-
expect(result.error.issues[0].message).toMatch(/content/i);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
it('should parse remove operation without content', () => {
|
|
41
|
-
const result = updateMemory.parameters.safeParse({
|
|
42
|
-
operation: 'remove',
|
|
43
|
-
});
|
|
44
|
-
expect(result.success).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
it('should fail to parse remove operation with content', () => {
|
|
47
|
-
const result = updateMemory.parameters.safeParse({
|
|
48
|
-
operation: 'remove',
|
|
49
|
-
content: 'some data',
|
|
50
|
-
});
|
|
51
|
-
expect(result.success).toBe(false);
|
|
52
|
-
// Verify error mentions content should not be provided
|
|
53
|
-
if (result.error) {
|
|
54
|
-
expect(result.error.issues[0].message).toBeTruthy();
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
describe('handler', () => {
|
|
59
|
-
it('should handle append operation', async () => {
|
|
60
|
-
const mockProvider = new MockProvider();
|
|
61
|
-
const spy = spyOn(mockProvider, 'updateMemory');
|
|
62
|
-
const result = await updateMemory.handler(mockProvider, {
|
|
63
|
-
operation: 'append',
|
|
64
|
-
content: 'new data',
|
|
65
|
-
});
|
|
66
|
-
expect(result.success).toBe(true);
|
|
67
|
-
expect(result.message.type).toBe('text');
|
|
68
|
-
expect(result.message.value).toContain('appended');
|
|
69
|
-
expect(spy).toHaveBeenCalledWith('append', undefined, 'new data');
|
|
70
|
-
});
|
|
71
|
-
it('should handle replace operation with topic', async () => {
|
|
72
|
-
const mockProvider = new MockProvider();
|
|
73
|
-
const spy = spyOn(mockProvider, 'updateMemory');
|
|
74
|
-
const result = await updateMemory.handler(mockProvider, {
|
|
75
|
-
operation: 'replace',
|
|
76
|
-
topic: 'my-topic',
|
|
77
|
-
content: 'new data',
|
|
78
|
-
});
|
|
79
|
-
expect(result.success).toBe(true);
|
|
80
|
-
expect(result.message.type).toBe('text');
|
|
81
|
-
expect(result.message.value).toContain('my-topic');
|
|
82
|
-
expect(result.message.value).toContain('replaced');
|
|
83
|
-
expect(spy).toHaveBeenCalledWith('replace', 'my-topic', 'new data');
|
|
84
|
-
});
|
|
85
|
-
it('should handle remove operation', async () => {
|
|
86
|
-
const mockProvider = new MockProvider();
|
|
87
|
-
const spy = spyOn(mockProvider, 'updateMemory');
|
|
88
|
-
const result = await updateMemory.handler(mockProvider, {
|
|
89
|
-
operation: 'remove',
|
|
90
|
-
});
|
|
91
|
-
expect(result.success).toBe(true);
|
|
92
|
-
expect(result.message.type).toBe('text');
|
|
93
|
-
expect(result.message.value).toContain('removed');
|
|
94
|
-
expect(spy).toHaveBeenCalledWith('remove', undefined, undefined);
|
|
95
|
-
});
|
|
96
|
-
it('should return error if provider does not support memory', async () => {
|
|
97
|
-
const mockProvider = new MockProvider();
|
|
98
|
-
mockProvider.updateMemory = undefined;
|
|
99
|
-
const result = await updateMemory.handler(mockProvider, {
|
|
100
|
-
operation: 'append',
|
|
101
|
-
content: 'new data',
|
|
102
|
-
});
|
|
103
|
-
expect(result.success).toBe(false);
|
|
104
|
-
expect(result.message.type).toBe('error-text');
|
|
105
|
-
expect(result.message.value).toContain('not supported');
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
//# sourceMappingURL=updateMemory.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateMemory.test.js","sourceRoot":"","sources":["../../src/tools/updateMemory.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { UpdateTodoItemInputSchema } from '@polka-codes/core';
|
|
2
|
-
export const toolInfo = {
|
|
3
|
-
name: 'updateTodoItem',
|
|
4
|
-
description: 'Add or update a to-do item.',
|
|
5
|
-
parameters: UpdateTodoItemInputSchema,
|
|
6
|
-
};
|
|
7
|
-
export const handler = async (provider, args) => {
|
|
8
|
-
if (!provider.updateTodoItem) {
|
|
9
|
-
return {
|
|
10
|
-
success: false,
|
|
11
|
-
message: {
|
|
12
|
-
type: 'error-text',
|
|
13
|
-
value: 'Not possible to update a to-do item.',
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const input = toolInfo.parameters.parse(args);
|
|
18
|
-
const result = await provider.updateTodoItem(input);
|
|
19
|
-
return {
|
|
20
|
-
success: true,
|
|
21
|
-
message: {
|
|
22
|
-
type: 'json',
|
|
23
|
-
value: result,
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
export default {
|
|
28
|
-
...toolInfo,
|
|
29
|
-
handler,
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=updateTodoItem.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateTodoItem.js","sourceRoot":"","sources":["../../src/tools/updateTodoItem.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAE7D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,6BAA6B;IAC1C,UAAU,EAAE,yBAAyB;CACV,CAAA;AAE7B,MAAM,CAAC,MAAM,OAAO,GAA+C,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;IAC1F,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,sCAAsC;aAC9C;SACF,CAAA;IACH,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IACnD,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM;SACd;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe;IACb,GAAG,QAAQ;IACX,OAAO;CACe,CAAA"}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
// Utility functions for parsing and annotating unified diff format with line numbers
|
|
3
|
-
/**
|
|
4
|
-
* Parse a unified diff hunk header
|
|
5
|
-
* Format: @@ -oldStart,oldCount +newStart,newCount @@ optional context
|
|
6
|
-
*/
|
|
7
|
-
export function parseHunkHeader(header) {
|
|
8
|
-
const match = header.match(/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
|
|
9
|
-
if (!match)
|
|
10
|
-
return null;
|
|
11
|
-
return {
|
|
12
|
-
oldStart: parseInt(match[1], 10),
|
|
13
|
-
oldCount: match[2] ? parseInt(match[2], 10) : 1,
|
|
14
|
-
newStart: parseInt(match[3], 10),
|
|
15
|
-
newCount: match[4] ? parseInt(match[4], 10) : 1,
|
|
16
|
-
header,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Annotate a diff with line numbers for additions and deletions
|
|
21
|
-
* Adds [Line N] for additions and [Line N removed] for deletions
|
|
22
|
-
*/
|
|
23
|
-
export function annotateDiffWithLineNumbers(diff) {
|
|
24
|
-
const lines = diff.split('\n');
|
|
25
|
-
const annotatedLines = [];
|
|
26
|
-
let currentNewLine = 0;
|
|
27
|
-
let currentOldLine = 0;
|
|
28
|
-
let inHunk = false;
|
|
29
|
-
for (const line of lines) {
|
|
30
|
-
// Check if this is a hunk header
|
|
31
|
-
if (line.startsWith('@@')) {
|
|
32
|
-
const hunk = parseHunkHeader(line);
|
|
33
|
-
if (hunk) {
|
|
34
|
-
currentOldLine = hunk.oldStart;
|
|
35
|
-
currentNewLine = hunk.newStart;
|
|
36
|
-
inHunk = true;
|
|
37
|
-
}
|
|
38
|
-
annotatedLines.push(line);
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
// Skip file headers and other metadata
|
|
42
|
-
if (line.startsWith('diff --git') || line.startsWith('index ') || line.startsWith('---') || line.startsWith('+++')) {
|
|
43
|
-
annotatedLines.push(line);
|
|
44
|
-
inHunk = false;
|
|
45
|
-
continue;
|
|
46
|
-
}
|
|
47
|
-
// Only annotate lines within hunks
|
|
48
|
-
if (!inHunk) {
|
|
49
|
-
annotatedLines.push(line);
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
// Handle diff lines
|
|
53
|
-
if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
54
|
-
// Addition - annotate with new file line number
|
|
55
|
-
annotatedLines.push(`${line} [Line ${currentNewLine}]`);
|
|
56
|
-
currentNewLine++;
|
|
57
|
-
}
|
|
58
|
-
else if (line.startsWith('-') && !line.startsWith('---')) {
|
|
59
|
-
// Deletion - annotate with old file line number
|
|
60
|
-
annotatedLines.push(`${line} [Line ${currentOldLine} removed]`);
|
|
61
|
-
currentOldLine++;
|
|
62
|
-
}
|
|
63
|
-
else if (line.startsWith(' ')) {
|
|
64
|
-
// Context line - both line numbers advance
|
|
65
|
-
annotatedLines.push(line);
|
|
66
|
-
currentOldLine++;
|
|
67
|
-
currentNewLine++;
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
// Other lines (shouldn't happen in a proper diff, but handle gracefully)
|
|
71
|
-
annotatedLines.push(line);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return annotatedLines.join('\n');
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Extract line ranges from a diff for a specific file
|
|
78
|
-
* Returns an array of line ranges that were modified
|
|
79
|
-
*/
|
|
80
|
-
export function extractModifiedLineRanges(diff, filePath) {
|
|
81
|
-
const lines = diff.split('\n');
|
|
82
|
-
const ranges = [];
|
|
83
|
-
let currentFile = '';
|
|
84
|
-
let currentNewLine = 0;
|
|
85
|
-
let currentOldLine = 0;
|
|
86
|
-
let inHunk = false;
|
|
87
|
-
let addedLines = [];
|
|
88
|
-
let removedLines = [];
|
|
89
|
-
for (const line of lines) {
|
|
90
|
-
// Track current file
|
|
91
|
-
if (line.startsWith('diff --git')) {
|
|
92
|
-
// Extract filename from diff header
|
|
93
|
-
const match = line.match(/diff --git a\/(.*?) b\//);
|
|
94
|
-
if (match) {
|
|
95
|
-
currentFile = match[1];
|
|
96
|
-
}
|
|
97
|
-
// Reset for new file
|
|
98
|
-
addedLines = [];
|
|
99
|
-
removedLines = [];
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
// Skip if we're looking for a specific file and this isn't it
|
|
103
|
-
if (filePath && currentFile !== filePath) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
// Check if this is a hunk header
|
|
107
|
-
if (line.startsWith('@@')) {
|
|
108
|
-
// Process any accumulated changes from previous hunk
|
|
109
|
-
if (addedLines.length > 0 || removedLines.length > 0) {
|
|
110
|
-
processAccumulatedChanges(addedLines, removedLines, ranges);
|
|
111
|
-
addedLines = [];
|
|
112
|
-
removedLines = [];
|
|
113
|
-
}
|
|
114
|
-
const hunk = parseHunkHeader(line);
|
|
115
|
-
if (hunk) {
|
|
116
|
-
currentOldLine = hunk.oldStart;
|
|
117
|
-
currentNewLine = hunk.newStart;
|
|
118
|
-
inHunk = true;
|
|
119
|
-
}
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
if (!inHunk)
|
|
123
|
-
continue;
|
|
124
|
-
// Track modifications
|
|
125
|
-
if (line.startsWith('+') && !line.startsWith('+++')) {
|
|
126
|
-
addedLines.push(currentNewLine);
|
|
127
|
-
currentNewLine++;
|
|
128
|
-
}
|
|
129
|
-
else if (line.startsWith('-') && !line.startsWith('---')) {
|
|
130
|
-
removedLines.push(currentOldLine);
|
|
131
|
-
currentOldLine++;
|
|
132
|
-
}
|
|
133
|
-
else if (line.startsWith(' ')) {
|
|
134
|
-
// Context line - process any accumulated changes
|
|
135
|
-
if (addedLines.length > 0 || removedLines.length > 0) {
|
|
136
|
-
processAccumulatedChanges(addedLines, removedLines, ranges);
|
|
137
|
-
addedLines = [];
|
|
138
|
-
removedLines = [];
|
|
139
|
-
}
|
|
140
|
-
currentOldLine++;
|
|
141
|
-
currentNewLine++;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
// Process any remaining accumulated changes
|
|
145
|
-
if (addedLines.length > 0 || removedLines.length > 0) {
|
|
146
|
-
processAccumulatedChanges(addedLines, removedLines, ranges);
|
|
147
|
-
}
|
|
148
|
-
return ranges;
|
|
149
|
-
}
|
|
150
|
-
function processAccumulatedChanges(addedLines, removedLines, ranges) {
|
|
151
|
-
if (addedLines.length > 0 && removedLines.length > 0) {
|
|
152
|
-
// Modified lines
|
|
153
|
-
if (addedLines.length > 0) {
|
|
154
|
-
ranges.push({
|
|
155
|
-
start: Math.min(...addedLines),
|
|
156
|
-
end: Math.max(...addedLines),
|
|
157
|
-
type: 'modified',
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
else if (addedLines.length > 0) {
|
|
162
|
-
// Only additions
|
|
163
|
-
ranges.push({
|
|
164
|
-
start: Math.min(...addedLines),
|
|
165
|
-
end: Math.max(...addedLines),
|
|
166
|
-
type: 'added',
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
else if (removedLines.length > 0) {
|
|
170
|
-
// Only removals
|
|
171
|
-
ranges.push({
|
|
172
|
-
start: Math.min(...removedLines),
|
|
173
|
-
end: Math.max(...removedLines),
|
|
174
|
-
type: 'removed',
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//# sourceMappingURL=diffLineNumbers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diffLineNumbers.js","sourceRoot":"","sources":["../../../src/tools/utils/diffLineNumbers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
// Cache control configuration
|
|
2
|
-
const CACHEABLE_MODELS = ['sonnet', 'opus', 'haiku', 'gemini'];
|
|
3
|
-
/**
|
|
4
|
-
* Checks if a model supports caching based on model ID
|
|
5
|
-
*/
|
|
6
|
-
function isCacheableModel(modelId) {
|
|
7
|
-
return CACHEABLE_MODELS.some((model) => modelId.includes(model));
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Determines the provider key for cache control based on provider string
|
|
11
|
-
*/
|
|
12
|
-
function getProviderKey(provider) {
|
|
13
|
-
if (provider === 'openrouter') {
|
|
14
|
-
return 'openrouter';
|
|
15
|
-
}
|
|
16
|
-
if (provider.includes('anthropic')) {
|
|
17
|
-
return 'anthropic';
|
|
18
|
-
}
|
|
19
|
-
return undefined;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Applies cache control to messages for Anthropic and OpenRouter providers.
|
|
23
|
-
* Adds ephemeral cache control to the last 2 user messages and system message.
|
|
24
|
-
*/
|
|
25
|
-
export function applyCacheControl(messages, provider, modelId) {
|
|
26
|
-
const providerKey = getProviderKey(provider);
|
|
27
|
-
if (!providerKey || !isCacheableModel(modelId)) {
|
|
28
|
-
return messages;
|
|
29
|
-
}
|
|
30
|
-
const providerOptions = { [providerKey]: { cacheControl: { type: 'ephemeral' } } };
|
|
31
|
-
const newMessages = messages.slice();
|
|
32
|
-
let userMessagesToUpdate = 2;
|
|
33
|
-
// Iterate backwards to find the system message and the last two user messages
|
|
34
|
-
for (let i = newMessages.length - 1; i >= 0; i--) {
|
|
35
|
-
const message = newMessages[i];
|
|
36
|
-
const isUser = message.role === 'user';
|
|
37
|
-
const isSystem = message.role === 'system';
|
|
38
|
-
if ((isUser && userMessagesToUpdate > 0) || isSystem) {
|
|
39
|
-
newMessages[i] = {
|
|
40
|
-
...message,
|
|
41
|
-
providerOptions: {
|
|
42
|
-
...message.providerOptions,
|
|
43
|
-
[providerKey]: {
|
|
44
|
-
...(message.providerOptions?.[providerKey] ?? {}),
|
|
45
|
-
...providerOptions[providerKey],
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
if (isUser) {
|
|
50
|
-
userMessagesToUpdate--;
|
|
51
|
-
}
|
|
52
|
-
else if (isSystem) {
|
|
53
|
-
break; // Stop after updating the last system message
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return newMessages;
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=cacheControl.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheControl.js","sourceRoot":"","sources":["../../src/utils/cacheControl.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAE9D;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwB,EAAE,QAAgB,EAAE,OAAe;IAC3F,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IAE5C,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;IAElF,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;IACpC,IAAI,oBAAoB,GAAG,CAAC,CAAA;IAE5B,8EAA8E;IAC9E,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,MAAM,CAAA;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAA;QAE1C,IAAI,CAAC,MAAM,IAAI,oBAAoB,GAAG,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;YACrD,WAAW,CAAC,CAAC,CAAC,GAAG;gBACf,GAAG,OAAO;gBACV,eAAe,EAAE;oBACf,GAAG,OAAO,CAAC,eAAe;oBAC1B,CAAC,WAAW,CAAC,EAAE;wBACb,GAAG,CAAE,OAAO,CAAC,eAAe,EAAE,CAAC,WAAW,CAAyB,IAAI,EAAE,CAAC;wBAC1E,GAAG,eAAe,CAAC,WAAW,CAAC;qBAChC;iBACF;aACF,CAAA;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,oBAAoB,EAAE,CAAA;YACxB,CAAC;iBAAM,IAAI,QAAQ,EAAE,CAAC;gBACpB,MAAK,CAAC,8CAA8C;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { describe, expect, test } from 'bun:test';
|
|
2
|
-
import { applyCacheControl } from './cacheControl';
|
|
3
|
-
describe('applyCacheControl', () => {
|
|
4
|
-
const baseMessages = [
|
|
5
|
-
{ role: 'system', content: 'System message' },
|
|
6
|
-
{ role: 'user', content: 'User message 1' },
|
|
7
|
-
{ role: 'assistant', content: 'Assistant message 1' },
|
|
8
|
-
{ role: 'user', content: 'User message 2' },
|
|
9
|
-
{ role: 'assistant', content: 'Assistant message 2' },
|
|
10
|
-
{ role: 'user', content: 'User message 3' },
|
|
11
|
-
];
|
|
12
|
-
test('should not apply cache control for non-cacheable models', () => {
|
|
13
|
-
const messages = applyCacheControl(baseMessages, 'anthropic', 'claude-2');
|
|
14
|
-
expect(messages).toEqual(baseMessages);
|
|
15
|
-
});
|
|
16
|
-
test('should not apply cache control for unsupported providers', () => {
|
|
17
|
-
const messages = applyCacheControl(baseMessages, 'openai', 'sonnet');
|
|
18
|
-
expect(messages).toEqual(baseMessages);
|
|
19
|
-
});
|
|
20
|
-
test('should apply cache control for anthropic provider with a supported model', () => {
|
|
21
|
-
const messages = applyCacheControl(baseMessages, 'anthropic', 'claude-3-sonnet-20240229');
|
|
22
|
-
expect(messages).not.toEqual(baseMessages);
|
|
23
|
-
// System message should have cache control
|
|
24
|
-
expect(messages[0].providerOptions?.anthropic).toEqual({
|
|
25
|
-
cacheControl: { type: 'ephemeral' },
|
|
26
|
-
});
|
|
27
|
-
// Last two user messages should have cache control
|
|
28
|
-
expect(messages[3].providerOptions?.anthropic).toEqual({
|
|
29
|
-
cacheControl: { type: 'ephemeral' },
|
|
30
|
-
});
|
|
31
|
-
expect(messages[5].providerOptions?.anthropic).toEqual({
|
|
32
|
-
cacheControl: { type: 'ephemeral' },
|
|
33
|
-
});
|
|
34
|
-
// Other messages should not have cache control
|
|
35
|
-
expect(messages[1].providerOptions).toBeUndefined();
|
|
36
|
-
expect(messages[2].providerOptions).toBeUndefined();
|
|
37
|
-
expect(messages[4].providerOptions).toBeUndefined();
|
|
38
|
-
});
|
|
39
|
-
test('should apply cache control for openrouter provider with a supported model', () => {
|
|
40
|
-
const messages = applyCacheControl(baseMessages, 'openrouter', 'anthropic/claude-3-opus');
|
|
41
|
-
expect(messages).not.toEqual(baseMessages);
|
|
42
|
-
// System message should have cache control
|
|
43
|
-
expect(messages[0].providerOptions?.openrouter).toEqual({
|
|
44
|
-
cacheControl: { type: 'ephemeral' },
|
|
45
|
-
});
|
|
46
|
-
// Last two user messages should have cache control
|
|
47
|
-
expect(messages[3].providerOptions?.openrouter).toEqual({
|
|
48
|
-
cacheControl: { type: 'ephemeral' },
|
|
49
|
-
});
|
|
50
|
-
expect(messages[5].providerOptions?.openrouter).toEqual({
|
|
51
|
-
cacheControl: { type: 'ephemeral' },
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
test('should apply cache control for gemini models', () => {
|
|
55
|
-
const messages = applyCacheControl(baseMessages, 'openrouter', 'google/gemini-pro');
|
|
56
|
-
expect(messages).not.toEqual(baseMessages);
|
|
57
|
-
// System message should have cache control
|
|
58
|
-
expect(messages[0].providerOptions?.openrouter).toEqual({
|
|
59
|
-
cacheControl: { type: 'ephemeral' },
|
|
60
|
-
});
|
|
61
|
-
// Last two user messages should have cache control
|
|
62
|
-
expect(messages[3].providerOptions?.openrouter).toBeDefined();
|
|
63
|
-
expect(messages[5].providerOptions?.openrouter).toBeDefined();
|
|
64
|
-
});
|
|
65
|
-
test('should handle fewer than two user messages', () => {
|
|
66
|
-
const shortMessages = [
|
|
67
|
-
{ role: 'system', content: 'System message' },
|
|
68
|
-
{ role: 'user', content: 'User message 1' },
|
|
69
|
-
];
|
|
70
|
-
const messages = applyCacheControl(shortMessages, 'anthropic', 'claude-3-sonnet-20240229');
|
|
71
|
-
expect(messages).not.toEqual(shortMessages);
|
|
72
|
-
// System message should have cache control
|
|
73
|
-
expect(messages[0].providerOptions?.anthropic).toEqual({
|
|
74
|
-
cacheControl: { type: 'ephemeral' },
|
|
75
|
-
});
|
|
76
|
-
// Only user message should have cache control
|
|
77
|
-
expect(messages[1].providerOptions?.anthropic).toEqual({
|
|
78
|
-
cacheControl: { type: 'ephemeral' },
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
test('should work correctly without a system message', () => {
|
|
82
|
-
const noSystemMessages = [
|
|
83
|
-
{ role: 'user', content: 'User message 1' },
|
|
84
|
-
{ role: 'assistant', content: 'Assistant message 1' },
|
|
85
|
-
{ role: 'user', content: 'User message 2' },
|
|
86
|
-
{ role: 'user', content: 'User message 3' },
|
|
87
|
-
];
|
|
88
|
-
const messages = applyCacheControl(noSystemMessages, 'anthropic', 'claude-3-sonnet-20240229');
|
|
89
|
-
expect(messages).not.toEqual(noSystemMessages);
|
|
90
|
-
// Last two user messages should have cache control
|
|
91
|
-
expect(messages[2].providerOptions?.anthropic).toEqual({
|
|
92
|
-
cacheControl: { type: 'ephemeral' },
|
|
93
|
-
});
|
|
94
|
-
expect(messages[3].providerOptions?.anthropic).toEqual({
|
|
95
|
-
cacheControl: { type: 'ephemeral' },
|
|
96
|
-
});
|
|
97
|
-
// First user message should not have cache control
|
|
98
|
-
expect(messages[0].providerOptions).toBeUndefined();
|
|
99
|
-
});
|
|
100
|
-
test('should merge with existing providerOptions', () => {
|
|
101
|
-
const messagesWithProviderOptions = [
|
|
102
|
-
{ role: 'system', content: 'System message' },
|
|
103
|
-
{ role: 'user', content: 'User message 1' },
|
|
104
|
-
{ role: 'assistant', content: 'Assistant message 1' },
|
|
105
|
-
{
|
|
106
|
-
role: 'user',
|
|
107
|
-
content: 'User message 2',
|
|
108
|
-
providerOptions: { anthropic: { someOtherOption: 'value' } },
|
|
109
|
-
},
|
|
110
|
-
{ role: 'user', content: 'User message 3' },
|
|
111
|
-
];
|
|
112
|
-
const messages = applyCacheControl(messagesWithProviderOptions, 'anthropic', 'claude-3-sonnet-20240229');
|
|
113
|
-
expect(messages).not.toEqual(messagesWithProviderOptions);
|
|
114
|
-
// Should preserve existing option and add cache control
|
|
115
|
-
expect(messages[3].providerOptions?.anthropic).toEqual({
|
|
116
|
-
someOtherOption: 'value',
|
|
117
|
-
cacheControl: { type: 'ephemeral' },
|
|
118
|
-
});
|
|
119
|
-
// System message should have cache control
|
|
120
|
-
expect(messages[0].providerOptions?.anthropic).toHaveProperty('cacheControl');
|
|
121
|
-
});
|
|
122
|
-
test('should not modify original messages array', () => {
|
|
123
|
-
const originalMessages = [...baseMessages];
|
|
124
|
-
applyCacheControl(baseMessages, 'anthropic', 'claude-3-sonnet-20240229');
|
|
125
|
-
expect(baseMessages).toEqual(originalMessages);
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
//# sourceMappingURL=cacheControl.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cacheControl.test.js","sourceRoot":"","sources":["../../src/utils/cacheControl.test.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/command.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared utilities for command-line command handlers
|
|
3
|
-
*/
|
|
4
|
-
import { createLogger } from '../logger';
|
|
5
|
-
/**
|
|
6
|
-
* Get global options from the command hierarchy
|
|
7
|
-
* Handles both top-level commands and subcommands
|
|
8
|
-
*
|
|
9
|
-
* @param command - The commander Command instance
|
|
10
|
-
* @returns Global options object
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* export async function runCommand(options, command: Command) {
|
|
15
|
-
* const globalOpts = getGlobalOptions(command)
|
|
16
|
-
* const { verbose, yes } = globalOpts
|
|
17
|
-
* }
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
export function getGlobalOptions(command) {
|
|
21
|
-
return (command.parent ?? command).opts();
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get base workflow options with standard defaults
|
|
25
|
-
* This provides consistent interactive mode handling across all commands
|
|
26
|
-
*
|
|
27
|
-
* @param command - The commander Command instance
|
|
28
|
-
* @returns Workflow options with interactive mode set based on --yes flag
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```ts
|
|
32
|
-
* const workflowOpts = getBaseWorkflowOptions(command)
|
|
33
|
-
* await code({
|
|
34
|
-
* task: '...',
|
|
35
|
-
* ...workflowOpts
|
|
36
|
-
* })
|
|
37
|
-
* ```
|
|
38
|
-
*/
|
|
39
|
-
export function getBaseWorkflowOptions(command) {
|
|
40
|
-
const globalOpts = getGlobalOptions(command);
|
|
41
|
-
const verbose = globalOpts.silent ? -1 : (globalOpts.verbose ?? 0);
|
|
42
|
-
// Create logger
|
|
43
|
-
const logger = createLogger({ verbose });
|
|
44
|
-
return {
|
|
45
|
-
interactive: !globalOpts.yes,
|
|
46
|
-
...globalOpts,
|
|
47
|
-
logger,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/utils/command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGxC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,IAAI,EAAgB,CAAA;AACzD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;IAElE,gBAAgB;IAChB,MAAM,MAAM,GAAW,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAEhD,OAAO;QACL,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG;QAC5B,GAAG,UAAU;QACb,MAAM;KACP,CAAA;AACH,CAAC"}
|