@polka-codes/cli 0.10.23 → 0.10.24
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/index.js +1 -1
- package/package.json +3 -3
- 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,117 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { askFollowupQuestion, createDynamicWorkflow, listFiles, parseDynamicWorkflowDefinition, searchFiles, } from '@polka-codes/core';
|
|
3
|
-
import { Command } from 'commander';
|
|
4
|
-
import { createLogger } from '../logger';
|
|
5
|
-
import { runWorkflow } from '../runWorkflow';
|
|
6
|
-
import { getBaseWorkflowOptions } from '../utils/command';
|
|
7
|
-
import { commitWorkflow, fixWorkflow, planWorkflow, prWorkflow, reviewWorkflow } from '../workflows';
|
|
8
|
-
export async function runWorkflowCommand(task, _options, command) {
|
|
9
|
-
const workflowOpts = getBaseWorkflowOptions(command);
|
|
10
|
-
const { verbose } = workflowOpts;
|
|
11
|
-
const logger = createLogger({ verbose });
|
|
12
|
-
const { file, workflow: workflowName } = command.opts();
|
|
13
|
-
if (!file) {
|
|
14
|
-
logger.error('Error: Workflow file is required. Use -f or --file.');
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
// Read and parse workflow file
|
|
18
|
-
logger.info(`Loading workflow from '${file}'...`);
|
|
19
|
-
let content;
|
|
20
|
-
try {
|
|
21
|
-
content = await readFile(file, 'utf-8');
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
25
|
-
logger.error(`Error reading file '${file}': ${errorMessage}`);
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const parsedResult = parseDynamicWorkflowDefinition(content);
|
|
29
|
-
if (!parsedResult.success) {
|
|
30
|
-
logger.error(`Failed to parse workflow: ${parsedResult.error}`);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const workflowDef = parsedResult.definition;
|
|
34
|
-
const workflowNames = Object.keys(workflowDef.workflows);
|
|
35
|
-
logger.info(`Available workflows: ${workflowNames.join(', ')}`);
|
|
36
|
-
let workflowId = workflowName;
|
|
37
|
-
if (!workflowId) {
|
|
38
|
-
if (workflowNames.includes('main')) {
|
|
39
|
-
workflowId = 'main';
|
|
40
|
-
logger.info(`Using 'main' workflow`);
|
|
41
|
-
}
|
|
42
|
-
else if (workflowNames.length === 1) {
|
|
43
|
-
workflowId = workflowNames[0];
|
|
44
|
-
logger.info(`Using workflow '${workflowId}'`);
|
|
45
|
-
}
|
|
46
|
-
else if (workflowNames.length > 1) {
|
|
47
|
-
logger.error(`Multiple workflows found in file and no 'main' workflow. Please specify one using --workflow <name>. Available workflows: ${workflowNames.join(', ')}`);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
logger.error('No workflows found in file.');
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
if (!workflowNames.includes(workflowId)) {
|
|
57
|
-
logger.error(`Workflow '${workflowId}' not found in file. Available workflows: ${workflowNames.join(', ')}`);
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
logger.info(`Using workflow '${workflowId}'`);
|
|
61
|
-
}
|
|
62
|
-
// Create dynamic workflow runner
|
|
63
|
-
const tools = [listFiles, askFollowupQuestion, searchFiles];
|
|
64
|
-
let dynamicRunner;
|
|
65
|
-
try {
|
|
66
|
-
dynamicRunner = createDynamicWorkflow(workflowDef, {
|
|
67
|
-
toolInfo: tools,
|
|
68
|
-
builtInWorkflows: {
|
|
69
|
-
plan: planWorkflow,
|
|
70
|
-
fix: fixWorkflow,
|
|
71
|
-
review: reviewWorkflow,
|
|
72
|
-
commit: commitWorkflow,
|
|
73
|
-
pr: prWorkflow,
|
|
74
|
-
},
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
catch (error) {
|
|
78
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
79
|
-
logger.error(`Failed to parse workflow: ${errorMessage}`);
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
const workflowFn = async (input, context) => {
|
|
83
|
-
return dynamicRunner(workflowId, input, context);
|
|
84
|
-
};
|
|
85
|
-
const selectedWorkflow = workflowDef.workflows[workflowId];
|
|
86
|
-
const workflowInput = {};
|
|
87
|
-
if (selectedWorkflow.inputs && selectedWorkflow.inputs.length > 0 && task) {
|
|
88
|
-
const firstInput = selectedWorkflow.inputs[0];
|
|
89
|
-
workflowInput[firstInput.id] = task;
|
|
90
|
-
logger.info(`Workflow input '${firstInput.id}': ${task}`);
|
|
91
|
-
}
|
|
92
|
-
else if (selectedWorkflow.inputs && selectedWorkflow.inputs.length > 0) {
|
|
93
|
-
logger.info(`Workflow expects inputs: ${selectedWorkflow.inputs.map((i) => i.id).join(', ')}`);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
logger.info('Workflow has no inputs');
|
|
97
|
-
}
|
|
98
|
-
logger.info(`Workflow has ${selectedWorkflow.steps.length} step(s)`);
|
|
99
|
-
logger.debug(`Steps: ${selectedWorkflow.steps
|
|
100
|
-
.map((s) => {
|
|
101
|
-
// Type guard to check if step has id and task properties (basic workflow step)
|
|
102
|
-
if ('id' in s && 'task' in s) {
|
|
103
|
-
return `${s.id} (${s.task})`;
|
|
104
|
-
}
|
|
105
|
-
// For control flow steps, just show the id
|
|
106
|
-
return 'id' in s ? String(s.id) : '(unnamed step)';
|
|
107
|
-
})
|
|
108
|
-
.join(', ')}`);
|
|
109
|
-
await runWorkflow(workflowFn, workflowInput, { commandName: 'workflow', context: workflowOpts, logger });
|
|
110
|
-
}
|
|
111
|
-
export const workflowCommand = new Command('workflow')
|
|
112
|
-
.description('Run custom workflows.')
|
|
113
|
-
.argument('[task]', 'The task input for the workflow.')
|
|
114
|
-
.option('-f, --file <path>', 'Path to the workflow file (required)')
|
|
115
|
-
.option('-w, --workflow <name>', 'The name of the workflow to run')
|
|
116
|
-
.action(runWorkflowCommand);
|
|
117
|
-
//# sourceMappingURL=workflow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EAGrB,SAAS,EACT,8BAA8B,EAC9B,WAAW,GAEZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAA0B,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE5H,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAwB,EAAE,QAAiB,EAAE,OAAgB;IACpG,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAA;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAExC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAEvD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACnE,OAAM;IACR,CAAC;IAED,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,MAAM,CAAC,CAAA;IACjD,IAAI,OAAe,CAAA;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,CAAC,KAAK,CAAC,uBAAuB,IAAI,MAAM,YAAY,EAAE,CAAC,CAAA;QAC7D,OAAM;IACR,CAAC;IAED,MAAM,YAAY,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAA;IAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,6BAA6B,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAM;IACR,CAAC;IACD,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,CAAA;IAE3C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;IACxD,MAAM,CAAC,IAAI,CAAC,wBAAwB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE/D,IAAI,UAAU,GAAG,YAAY,CAAA;IAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,UAAU,GAAG,MAAM,CAAA;YACnB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACtC,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAA;QAC/C,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CACV,6HAA6H,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxJ,CAAA;YACD,OAAM;QACR,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAC3C,OAAM;QACR,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,aAAa,UAAU,6CAA6C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC5G,OAAM;QACR,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,GAAG,CAAC,CAAA;IAC/C,CAAC;IAED,iCAAiC;IACjC,MAAM,KAAK,GAAmB,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAA;IAE3E,IAAI,aAAuD,CAAA;IAC3D,IAAI,CAAC;QACH,aAAa,GAAG,qBAAqB,CAAC,WAAW,EAAE;YACjD,QAAQ,EAAE,KAAK;YACf,gBAAgB,EAAE;gBAChB,IAAI,EAAE,YAAY;gBAClB,GAAG,EAAE,WAAW;gBAChB,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,cAAc;gBACtB,EAAE,EAAE,UAAU;aACf;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3E,MAAM,CAAC,KAAK,CAAC,6BAA6B,YAAY,EAAE,CAAC,CAAA;QACzD,OAAM;IACR,CAAC;IAED,MAAM,UAAU,GAAoE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3G,OAAO,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC,CAAA;IAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,aAAa,GAA4B,EAAE,CAAA;IACjD,IAAI,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC1E,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAC7C,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QACnC,MAAM,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;SAAM,IAAI,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,4BAA4B,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChG,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,gBAAgB,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,CAAA;IACpE,MAAM,CAAC,KAAK,CACV,UAAU,gBAAgB,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,+EAA+E;QAC/E,IAAI,IAAI,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,GAAG,CAAA;QAC9B,CAAC;QACD,2CAA2C;QAC3C,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAA;IAED,MAAM,WAAW,CAAC,UAAU,EAAE,aAAa,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAA;AAC1G,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,uBAAuB,CAAC;KACpC,QAAQ,CAAC,QAAQ,EAAE,kCAAkC,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,uBAAuB,EAAE,iCAAiC,CAAC;KAClE,MAAM,CAAC,kBAAkB,CAAC,CAAA"}
|
package/dist/configPrompt.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { input, password, select } from '@inquirer/prompts';
|
|
2
|
-
import { AiProvider } from './getModel';
|
|
3
|
-
import prices from './prices';
|
|
4
|
-
export async function configPrompt(existingConfig) {
|
|
5
|
-
// select AI provider
|
|
6
|
-
const provider = await select({
|
|
7
|
-
message: 'Choose AI Provider:',
|
|
8
|
-
choices: Object.entries(AiProvider).map(([key, value]) => ({ name: key, value })),
|
|
9
|
-
default: existingConfig?.provider,
|
|
10
|
-
});
|
|
11
|
-
let model = existingConfig?.model;
|
|
12
|
-
switch (provider) {
|
|
13
|
-
case AiProvider.Anthropic:
|
|
14
|
-
model = await select({
|
|
15
|
-
message: 'Choose Model ID:',
|
|
16
|
-
choices: Object.keys(prices[AiProvider.Anthropic]).map((key) => ({ name: key, value: key })),
|
|
17
|
-
default: existingConfig?.model ?? 'claude-opus-4-20250514',
|
|
18
|
-
});
|
|
19
|
-
break;
|
|
20
|
-
case AiProvider.DeepSeek:
|
|
21
|
-
model = await select({
|
|
22
|
-
message: 'Choose Model ID:',
|
|
23
|
-
choices: [
|
|
24
|
-
{ name: 'deepseek-chat', value: 'deepseek-chat' },
|
|
25
|
-
{ name: 'deepseek-reasoner', value: 'deepseek-reasoner' },
|
|
26
|
-
],
|
|
27
|
-
default: existingConfig?.model ?? 'deepseek-chat',
|
|
28
|
-
});
|
|
29
|
-
break;
|
|
30
|
-
case AiProvider.OpenRouter:
|
|
31
|
-
// TODO: search for models
|
|
32
|
-
model = await input({ message: 'Enter Model ID (Visit https://openrouter.ai/models for available models):' });
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
const apiKey = await password({ message: 'Enter API Key:', mask: '*' });
|
|
36
|
-
let baseURL;
|
|
37
|
-
return { provider, model: model, apiKey, baseURL };
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=configPrompt.js.map
|
package/dist/configPrompt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configPrompt.js","sourceRoot":"","sources":["../src/configPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,MAAM,MAAM,UAAU,CAAA;AAS7B,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,cAAwC;IACzE,qBAAqB;IACrB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,EAAE,cAAc,EAAE,QAAQ;KAClC,CAAC,CAAA;IAEF,IAAI,KAAK,GAAG,cAAc,EAAE,KAAK,CAAA;IAEjC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,UAAU,CAAC,SAAS;YACvB,KAAK,GAAG,MAAM,MAAM,CAAC;gBACnB,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC5F,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,wBAAwB;aAC3D,CAAC,CAAA;YACF,MAAK;QACP,KAAK,UAAU,CAAC,QAAQ;YACtB,KAAK,GAAG,MAAM,MAAM,CAAC;gBACnB,OAAO,EAAE,kBAAkB;gBAC3B,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBACjD,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;iBAC1D;gBACD,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,eAAe;aAClD,CAAC,CAAA;YACF,MAAK;QACP,KAAK,UAAU,CAAC,UAAU;YACxB,0BAA0B;YAC1B,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC,CAAA;YAC7G,MAAK;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAEvE,IAAI,OAA2B,CAAA;IAE/B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAe,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC9D,CAAC"}
|
package/dist/env.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Generated by polka.codes
|
|
2
|
-
// This module centralizes environment variable access and provides TypeScript types
|
|
3
|
-
/**
|
|
4
|
-
* Get environment variables, optionally overriding process.env
|
|
5
|
-
*/
|
|
6
|
-
export function getEnv(override) {
|
|
7
|
-
return {
|
|
8
|
-
POLKA_API_PROVIDER: process.env.POLKA_API_PROVIDER,
|
|
9
|
-
POLKA_MODEL: process.env.POLKA_MODEL,
|
|
10
|
-
POLKA_API_KEY: process.env.POLKA_API_KEY,
|
|
11
|
-
POLKA_BUDGET: process.env.POLKA_BUDGET,
|
|
12
|
-
ANTHROPIC_API_KEY: process.env.ANTHROPIC_API_KEY,
|
|
13
|
-
DEEPSEEK_API_KEY: process.env.DEEPSEEK_API_KEY,
|
|
14
|
-
OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY,
|
|
15
|
-
OPENAI_API_KEY: process.env.OPENAI_API_KEY,
|
|
16
|
-
GOOGLE_API_KEY: process.env.GOOGLE_API_KEY,
|
|
17
|
-
TRACING_FILE: process.env.TRACING_FILE,
|
|
18
|
-
...override,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export default getEnv;
|
|
22
|
-
//# sourceMappingURL=env.js.map
|
package/dist/env.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,oFAAoF;AA8BpF;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,QAAuB;IAC5C,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAA4C;QAC5E,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACpC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QACxC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAChD,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAC9C,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAClD,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACtC,GAAG,QAAQ;KACZ,CAAA;AACH,CAAC;AAED,eAAe,MAAM,CAAA"}
|
package/dist/errors.js
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { createErrorClass } from '@polka-codes/core';
|
|
3
|
-
/**
|
|
4
|
-
* Error thrown when user cancels an operation
|
|
5
|
-
*/
|
|
6
|
-
export const UserCancelledError = createErrorClass('UserCancelledError', (args) => args[0] ?? 'User cancelled');
|
|
7
|
-
/**
|
|
8
|
-
* Base class for AI provider errors
|
|
9
|
-
*/
|
|
10
|
-
export class ProviderError extends Error {
|
|
11
|
-
provider;
|
|
12
|
-
model;
|
|
13
|
-
retryable;
|
|
14
|
-
cause;
|
|
15
|
-
constructor(provider, model, message, retryable, cause) {
|
|
16
|
-
super(message);
|
|
17
|
-
this.name = this.constructor.name;
|
|
18
|
-
this.provider = provider;
|
|
19
|
-
this.model = model;
|
|
20
|
-
this.retryable = retryable;
|
|
21
|
-
this.cause = cause;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Error when the provider API is temporarily unavailable (5xx errors)
|
|
26
|
-
*/
|
|
27
|
-
export class ProviderUnavailableError extends ProviderError {
|
|
28
|
-
constructor(provider, model, statusCode, cause) {
|
|
29
|
-
super(provider, model, `${provider} API is temporarily unavailable (HTTP ${statusCode}). The service may be experiencing issues. Please try again in a few minutes.`, true, cause);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Error when rate limit is exceeded (429 errors)
|
|
34
|
-
*/
|
|
35
|
-
export class RateLimitError extends ProviderError {
|
|
36
|
-
retryAfter;
|
|
37
|
-
constructor(provider, model, retryAfter, cause) {
|
|
38
|
-
const message = retryAfter
|
|
39
|
-
? `${provider} rate limit exceeded. Please retry after ${retryAfter} seconds.`
|
|
40
|
-
: `${provider} rate limit exceeded. Please wait a few minutes before retrying.`;
|
|
41
|
-
super(provider, model, message, true, cause);
|
|
42
|
-
this.retryAfter = retryAfter;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Error when request times out
|
|
47
|
-
*/
|
|
48
|
-
export class ProviderTimeoutError extends ProviderError {
|
|
49
|
-
timeoutSeconds;
|
|
50
|
-
constructor(provider, model, timeoutSeconds, cause) {
|
|
51
|
-
super(provider, model, `${provider} request timed out after ${timeoutSeconds} seconds. This could be due to network issues or the service being slow. Please check your connection and try again.`, true, cause);
|
|
52
|
-
this.timeoutSeconds = timeoutSeconds;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Error when authentication fails (401 errors)
|
|
57
|
-
*/
|
|
58
|
-
export class AuthenticationError extends ProviderError {
|
|
59
|
-
constructor(provider, model, cause) {
|
|
60
|
-
super(provider, model, `${provider} authentication failed for model '${model}'. Please check your API key is valid and has not expired. Run 'polka init' to reconfigure.`, false, cause);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Error when the model is not found or access is denied (403/404 errors)
|
|
65
|
-
*/
|
|
66
|
-
export class ModelAccessError extends ProviderError {
|
|
67
|
-
constructor(provider, model, statusCode, cause) {
|
|
68
|
-
super(provider, model, `${provider} model '${model}' is not available (HTTP ${statusCode}). This could mean the model doesn't exist, you don't have access, or it's not enabled in your account. Please check your model configuration.`, false, cause);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Error when the request is invalid (400 errors)
|
|
73
|
-
*/
|
|
74
|
-
export class InvalidRequestError extends ProviderError {
|
|
75
|
-
constructor(provider, model, details, cause) {
|
|
76
|
-
super(provider, model, `${provider} rejected the request: ${details}. Please check your request parameters and try again.`, false, cause);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Error when provider response is malformed or cannot be parsed
|
|
81
|
-
*/
|
|
82
|
-
export class MalformedResponseError extends ProviderError {
|
|
83
|
-
constructor(provider, model, cause) {
|
|
84
|
-
super(provider, model, `${provider} returned an invalid response for model '${model}'. This could indicate a provider issue or incompatible API version. Please try again or contact support.`, true, cause);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Error when quota/budget limits are exceeded
|
|
89
|
-
*/
|
|
90
|
-
export class QuotaExceededError extends ProviderError {
|
|
91
|
-
currentCost;
|
|
92
|
-
maxCost;
|
|
93
|
-
constructor(provider, model, currentCost, maxCost) {
|
|
94
|
-
super(provider, model, `${provider} quota exceeded for model '${model}'. Current cost: $${currentCost.toFixed(2)}, Max budget: $${maxCost.toFixed(2)}. Adjust your budget with 'polka init' or reduce usage.`, false);
|
|
95
|
-
this.currentCost = currentCost;
|
|
96
|
-
this.maxCost = maxCost;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Error when provider is repeatedly failing after multiple retries
|
|
101
|
-
*/
|
|
102
|
-
export class MaxRetriesExceededError extends ProviderError {
|
|
103
|
-
attempts;
|
|
104
|
-
lastError;
|
|
105
|
-
constructor(provider, model, attempts, lastError) {
|
|
106
|
-
super(provider, model, `${provider} failed after ${attempts} retry attempts for model '${model}'. Last error: ${lastError.message}. Please check your network connection and verify the service is operational.`, false, lastError);
|
|
107
|
-
this.attempts = attempts;
|
|
108
|
-
this.lastError = lastError;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Utility function to create appropriate error based on HTTP status code
|
|
113
|
-
*/
|
|
114
|
-
export function createProviderErrorFromStatus(provider, model, statusCode, cause) {
|
|
115
|
-
switch (statusCode) {
|
|
116
|
-
case 400:
|
|
117
|
-
return new InvalidRequestError(provider, model, 'Bad request', cause);
|
|
118
|
-
case 401:
|
|
119
|
-
return new AuthenticationError(provider, model, cause);
|
|
120
|
-
case 403:
|
|
121
|
-
case 404:
|
|
122
|
-
return new ModelAccessError(provider, model, statusCode, cause);
|
|
123
|
-
case 429:
|
|
124
|
-
return new RateLimitError(provider, model, undefined, cause);
|
|
125
|
-
default:
|
|
126
|
-
if (statusCode >= 500) {
|
|
127
|
-
return new ProviderUnavailableError(provider, model, statusCode, cause);
|
|
128
|
-
}
|
|
129
|
-
return new InvalidRequestError(provider, model, `HTTP ${statusCode}`, cause);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.test.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { describe, expect, it } from 'bun:test';
|
|
3
|
-
import { UserCancelledError } from './errors';
|
|
4
|
-
describe('UserCancelledError', () => {
|
|
5
|
-
it('should create error with default message', () => {
|
|
6
|
-
const error = new UserCancelledError();
|
|
7
|
-
expect(error.name).toBe('UserCancelledError');
|
|
8
|
-
expect(error.message).toBe('User cancelled');
|
|
9
|
-
});
|
|
10
|
-
it('should create error with custom message', () => {
|
|
11
|
-
const error = new UserCancelledError('Custom cancellation message');
|
|
12
|
-
expect(error.name).toBe('UserCancelledError');
|
|
13
|
-
expect(error.message).toBe('Custom cancellation message');
|
|
14
|
-
});
|
|
15
|
-
it('should be instance of Error', () => {
|
|
16
|
-
const error = new UserCancelledError();
|
|
17
|
-
expect(error instanceof Error).toBe(true);
|
|
18
|
-
expect(error instanceof UserCancelledError).toBe(true);
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=errors.test.js.map
|
package/dist/errors.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../src/errors.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,UAAU,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE7C,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAA;QACnE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,KAAK,GAAG,IAAI,kBAAkB,EAAE,CAAA;QACtC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,YAAY,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/file-attachments.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Attach files to user message content for AI workflows
|
|
3
|
-
*
|
|
4
|
-
* @param content - The existing user content (string or array)
|
|
5
|
-
* @param files - Optional array of files and images to attach
|
|
6
|
-
* @returns The content array with files attached
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```ts
|
|
10
|
-
* const content: JsonUserContent = 'Review these files'
|
|
11
|
-
* const files = [
|
|
12
|
-
* { type: 'file', mediaType: 'text/plain', filename: 'test.ts', data: { type: 'base64', value: '...' } },
|
|
13
|
-
* { type: 'image', mediaType: 'image/png', image: { type: 'base64', value: '...' } }
|
|
14
|
-
* ]
|
|
15
|
-
* const withFiles = attachFilesToContent(content, files)
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export function attachFilesToContent(content, files) {
|
|
19
|
-
if (!files || files.length === 0) {
|
|
20
|
-
return content;
|
|
21
|
-
}
|
|
22
|
-
// Convert string content to array
|
|
23
|
-
const baseContent = typeof content === 'string' ? [{ type: 'text', text: content }] : content;
|
|
24
|
-
// Combine existing content with new files
|
|
25
|
-
return [...baseContent, ...files];
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Create a user message with optional file attachments
|
|
29
|
-
*
|
|
30
|
-
* @param text - The text message content
|
|
31
|
-
* @param files - Optional array of files and images to attach
|
|
32
|
-
* @returns A complete user message with content array
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```ts
|
|
36
|
-
* const message = createUserMessageWithFiles('Review this code', [
|
|
37
|
-
* { type: 'file', mediaType: 'text/plain', filename: 'code.ts', data: '...' }
|
|
38
|
-
* ])
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export function createUserMessageWithFiles(text, files) {
|
|
42
|
-
const content = [{ type: 'text', text }];
|
|
43
|
-
return {
|
|
44
|
-
role: 'user',
|
|
45
|
-
content: attachFilesToContent(content, files),
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Filter files by media type
|
|
50
|
-
*/
|
|
51
|
-
export function filterFilesByMediaType(files, mediaType) {
|
|
52
|
-
const regex = typeof mediaType === 'string' ? new RegExp(`^${mediaType}`) : mediaType;
|
|
53
|
-
return files.filter((file) => file.mediaType !== undefined && regex.test(file.mediaType));
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Get only image files from mixed file array
|
|
57
|
-
*/
|
|
58
|
-
export function getImages(files) {
|
|
59
|
-
return files.filter((file) => file.type === 'image');
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Get only document files from mixed file array
|
|
63
|
-
*/
|
|
64
|
-
export function getDocuments(files) {
|
|
65
|
-
return files.filter((file) => file.type === 'file');
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Count total files by type
|
|
69
|
-
*/
|
|
70
|
-
export function countFilesByType(files) {
|
|
71
|
-
return {
|
|
72
|
-
images: getImages(files).length,
|
|
73
|
-
documents: getDocuments(files).length,
|
|
74
|
-
total: files.length,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=file-attachments.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file-attachments.js","sourceRoot":"","sources":["../src/file-attachments.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB,EAAE,KAAwC;IACrG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,kCAAkC;IAClC,MAAM,WAAW,GACf,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAE3E,0CAA0C;IAC1C,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,KAAK,CAAC,CAAA;AACnC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CACxC,IAAY,EACZ,KAAwC;IAExC,MAAM,OAAO,GAAoB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC;KAC9C,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAuC,EACvC,SAA0B;IAE1B,MAAM,KAAK,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACrF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,KAAuC;IAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAuC;IAClE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAwB,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAuC;IAKtE,OAAO;QACL,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM;QAC/B,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM;QACrC,KAAK,EAAE,KAAK,CAAC,MAAM;KACpB,CAAA;AACH,CAAC"}
|