@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
package/dist/runWorkflow.js
DELETED
|
@@ -1,313 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { mkdir } from 'node:fs/promises';
|
|
3
|
-
import { dirname } from 'node:path';
|
|
4
|
-
import { detectProjectScope, getGlobalConfigPath, getProvider, loadConfigAtPath, logGlobalToolCallStats, MemoryManager, printEvent, SQLiteMemoryStore, } from '@polka-codes/cli-shared';
|
|
5
|
-
import { DEFAULT_MEMORY_CONFIG, makeStepFn, PricingService, resolveHomePath, search, TaskEventKind, UsageMeter, } from '@polka-codes/core';
|
|
6
|
-
import { merge } from 'lodash-es';
|
|
7
|
-
import { AuthenticationError, ModelAccessError, ProviderError, QuotaExceededError, UserCancelledError } from './errors';
|
|
8
|
-
import { AiProvider, getModel } from './getModel';
|
|
9
|
-
import { getProviderOptions } from './getProviderOptions';
|
|
10
|
-
import { McpError } from './mcp/errors';
|
|
11
|
-
import { McpManager } from './mcp/manager';
|
|
12
|
-
import { parseOptions } from './options';
|
|
13
|
-
import prices from './prices';
|
|
14
|
-
import { initializeSkillContext, localToolNames, toolCall, toolHandlers, } from './tool-implementations';
|
|
15
|
-
export async function runWorkflow(workflow, workflowInput, options) {
|
|
16
|
-
const { commandName, context, logger, interactive, providerOverride } = options;
|
|
17
|
-
const { providerConfig, config, verbose } = await parseOptions(context, {});
|
|
18
|
-
const yes = context.yes;
|
|
19
|
-
const additionalTools = {};
|
|
20
|
-
if (config.tools?.search) {
|
|
21
|
-
additionalTools.search = search;
|
|
22
|
-
}
|
|
23
|
-
// Initialize MCP manager if MCP servers are configured
|
|
24
|
-
const mcpManager = new McpManager(logger);
|
|
25
|
-
// Determine interactive mode: respect explicit values in input, then options, then default based on yes flag
|
|
26
|
-
// Safely access interactive property with optional chaining in case workflowInput doesn't extend BaseWorkflowInput
|
|
27
|
-
const resolvedInteractive = workflowInput?.interactive ?? interactive ?? yes !== true;
|
|
28
|
-
const finalWorkflowInput = {
|
|
29
|
-
...workflowInput,
|
|
30
|
-
interactive: resolvedInteractive,
|
|
31
|
-
additionalTools,
|
|
32
|
-
config,
|
|
33
|
-
};
|
|
34
|
-
// Initialize pricing service (always enabled)
|
|
35
|
-
const pricingService = new PricingService(merge({}, prices, config.prices ?? {}));
|
|
36
|
-
const usage = new UsageMeter(merge({}, prices, config.prices ?? {}), {
|
|
37
|
-
maxMessages: config.maxMessageCount,
|
|
38
|
-
maxCost: config.budget,
|
|
39
|
-
pricingService,
|
|
40
|
-
});
|
|
41
|
-
options.onUsageMeterCreated?.(usage);
|
|
42
|
-
// Explicitly type onEvent as TaskEventCallback to avoid type inference issues
|
|
43
|
-
const onEvent = printEvent(verbose, usage, process.stderr);
|
|
44
|
-
// Get command config once and reuse
|
|
45
|
-
let commandConfig = providerConfig.getConfigForCommand(commandName);
|
|
46
|
-
// Apply provider/model overrides if provided
|
|
47
|
-
if (providerOverride) {
|
|
48
|
-
const { provider: overrideProvider, model: overrideModel, parameters: overrideParameters } = providerOverride;
|
|
49
|
-
if (commandConfig) {
|
|
50
|
-
// Create a merged config with overrides
|
|
51
|
-
// Validate provider is a valid AiProvider enum value
|
|
52
|
-
const validProvider = overrideProvider && Object.values(AiProvider).includes(overrideProvider)
|
|
53
|
-
? overrideProvider
|
|
54
|
-
: commandConfig.provider;
|
|
55
|
-
// Warn if provider override was provided but invalid
|
|
56
|
-
if (overrideProvider && validProvider !== overrideProvider) {
|
|
57
|
-
logger.warn(`Invalid provider override: "${overrideProvider}". Valid providers: ${Object.values(AiProvider).join(', ')}. Falling back to configured provider.`);
|
|
58
|
-
}
|
|
59
|
-
commandConfig = {
|
|
60
|
-
...commandConfig,
|
|
61
|
-
provider: validProvider,
|
|
62
|
-
model: overrideModel || commandConfig.model,
|
|
63
|
-
parameters: overrideParameters ? { ...commandConfig.parameters, ...overrideParameters } : commandConfig.parameters,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
else if (overrideProvider) {
|
|
67
|
-
// No base config, but overrides provided - create config from overrides
|
|
68
|
-
// resolveModelConfig will handle validation
|
|
69
|
-
commandConfig = providerConfig.resolveModelConfig({
|
|
70
|
-
provider: overrideProvider,
|
|
71
|
-
model: overrideModel,
|
|
72
|
-
parameters: overrideParameters,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
// All workflows currently require a provider, so validate config exists
|
|
77
|
-
if (!commandConfig?.provider || !commandConfig.model) {
|
|
78
|
-
const error = new Error(`No provider configured for command: ${commandName}. Please run "polka init" to configure your AI provider.`);
|
|
79
|
-
logger.error(`Error: ${error.message}`);
|
|
80
|
-
throw error;
|
|
81
|
-
}
|
|
82
|
-
logger.info('Provider:', commandConfig.provider);
|
|
83
|
-
logger.info('Model:', commandConfig.model);
|
|
84
|
-
const model = getModel(commandConfig);
|
|
85
|
-
const excludeFiles = [...(config.excludeFiles ?? [])];
|
|
86
|
-
// Initialize SQLiteMemoryStore for persistent memory storage
|
|
87
|
-
let memoryStore;
|
|
88
|
-
try {
|
|
89
|
-
const globalConfigPath = getGlobalConfigPath();
|
|
90
|
-
const globalConfig = (await loadConfigAtPath(globalConfigPath));
|
|
91
|
-
// Use same default configuration from core for consistency
|
|
92
|
-
const memoryConfig = globalConfig?.memory || DEFAULT_MEMORY_CONFIG;
|
|
93
|
-
if (memoryConfig.enabled && memoryConfig.type === 'sqlite') {
|
|
94
|
-
// Determine project scope using shared utility
|
|
95
|
-
const cwd = process.cwd();
|
|
96
|
-
const scope = detectProjectScope(cwd);
|
|
97
|
-
// Resolve db path
|
|
98
|
-
const dbPath = memoryConfig.path || DEFAULT_MEMORY_CONFIG.path;
|
|
99
|
-
const resolvedDbPath = resolveHomePath(dbPath);
|
|
100
|
-
// Ensure database directory exists
|
|
101
|
-
const dbDir = dirname(resolvedDbPath);
|
|
102
|
-
await mkdir(dbDir, { recursive: true, mode: 0o700 });
|
|
103
|
-
// Create SQLiteMemoryStore instance
|
|
104
|
-
const sqliteStore = new SQLiteMemoryStore({ enabled: true, type: 'sqlite', path: dbPath }, scope);
|
|
105
|
-
// Wrap with MemoryManager for safety limits and consistent behavior
|
|
106
|
-
const memoryManager = new MemoryManager(sqliteStore);
|
|
107
|
-
memoryStore = memoryManager;
|
|
108
|
-
// Update options to pass the memory store to getProvider
|
|
109
|
-
options.getProvider = (opts) => getProvider({ ...opts, memoryStore: sqliteStore });
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
// If memory store initialization fails, log warning but continue with in-memory store
|
|
114
|
-
logger.warn(`Failed to initialize persistent memory store: ${error instanceof Error ? error.message : String(error)}`);
|
|
115
|
-
}
|
|
116
|
-
const toolProvider = (options.getProvider ?? getProvider)({
|
|
117
|
-
excludeFiles,
|
|
118
|
-
yes: context.yes,
|
|
119
|
-
getModel: (tool) => {
|
|
120
|
-
const toolConfig = config.tools?.[tool];
|
|
121
|
-
if (toolConfig === false) {
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
// Inherit from the main command config
|
|
125
|
-
const baseConfig = commandConfig;
|
|
126
|
-
if (typeof toolConfig === 'object') {
|
|
127
|
-
// Merge to allow partial overrides (e.g. just model)
|
|
128
|
-
const mergedConfig = { ...baseConfig, ...toolConfig };
|
|
129
|
-
const resolvedConfig = providerConfig.resolveModelConfig(mergedConfig);
|
|
130
|
-
if (resolvedConfig) {
|
|
131
|
-
return getModel(resolvedConfig);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
// Fallback for true or undefined
|
|
135
|
-
return getModel(baseConfig);
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
const providerOptions = getProviderOptions({
|
|
139
|
-
provider: commandConfig.provider,
|
|
140
|
-
modelId: commandConfig.model,
|
|
141
|
-
parameters: commandConfig.parameters,
|
|
142
|
-
});
|
|
143
|
-
// Initialize skill context for Agent Skills support
|
|
144
|
-
const skillContext = await initializeSkillContext();
|
|
145
|
-
const parameters = {
|
|
146
|
-
providerOptions,
|
|
147
|
-
scripts: config.scripts,
|
|
148
|
-
retryCount: config.retryCount,
|
|
149
|
-
requestTimeoutSeconds: config.requestTimeoutSeconds,
|
|
150
|
-
usageMeter: usage,
|
|
151
|
-
skillContext,
|
|
152
|
-
mcpManager,
|
|
153
|
-
};
|
|
154
|
-
let workflowContext;
|
|
155
|
-
// Create a tools proxy with dynamic dispatch.
|
|
156
|
-
// Note: We cast to WorkflowTools<TTools> even though the actual return type is Promise<ToolResponse>.
|
|
157
|
-
// This is safe because ToolResponse is a union of all TTools[K]['output'] types, so at runtime
|
|
158
|
-
// the returned value is always compatible with the expected type for the called tool.
|
|
159
|
-
const tools = new Proxy({}, {
|
|
160
|
-
get: (_target, prop) => {
|
|
161
|
-
// Return undefined for non-string properties (symbols, etc.)
|
|
162
|
-
// and standard properties like 'then', 'toJSON' to avoid interfering
|
|
163
|
-
// with JavaScript operations like Promise.then or JSON.stringify
|
|
164
|
-
if (typeof prop !== 'string' || prop === 'then' || prop === 'toJSON') {
|
|
165
|
-
return undefined;
|
|
166
|
-
}
|
|
167
|
-
// Return undefined for unknown tools to support existence checks
|
|
168
|
-
// Only return a function for known tools (including local tools and MCP tools)
|
|
169
|
-
if (!toolHandlers.has(prop) && !localToolNames.includes(prop)) {
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
return (async (input) => {
|
|
173
|
-
logger.debug(`Running tool: ${prop}`);
|
|
174
|
-
return await toolCall({ tool: prop, input: input }, {
|
|
175
|
-
parameters,
|
|
176
|
-
model,
|
|
177
|
-
agentCallback: onEvent,
|
|
178
|
-
toolProvider,
|
|
179
|
-
yes: context.yes,
|
|
180
|
-
workflowContext: workflowContext,
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
},
|
|
184
|
-
});
|
|
185
|
-
workflowContext = {
|
|
186
|
-
step: makeStepFn(),
|
|
187
|
-
logger,
|
|
188
|
-
tools,
|
|
189
|
-
};
|
|
190
|
-
try {
|
|
191
|
-
// Connect to MCP servers inside the try block to ensure cleanup
|
|
192
|
-
if (config.mcpServers && Object.keys(config.mcpServers).length > 0) {
|
|
193
|
-
await mcpManager.connectToServers(config.mcpServers);
|
|
194
|
-
const mcpTools = mcpManager.getFullToolInfos();
|
|
195
|
-
if (mcpTools.length > 0) {
|
|
196
|
-
additionalTools.mcpTools = mcpTools;
|
|
197
|
-
logger.info(`Loaded ${mcpTools.length} MCP tools`);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
logger.info('Running workflow...');
|
|
201
|
-
const output = await workflow(finalWorkflowInput, workflowContext);
|
|
202
|
-
// Wait for any pending usage updates to complete
|
|
203
|
-
await usage.waitForPending();
|
|
204
|
-
logger.info('\n\nWorkflow completed successfully.');
|
|
205
|
-
logger.info(usage.getUsageText());
|
|
206
|
-
return output;
|
|
207
|
-
}
|
|
208
|
-
catch (e) {
|
|
209
|
-
const error = e;
|
|
210
|
-
// Handle different error types with appropriate messaging
|
|
211
|
-
if (error instanceof UserCancelledError) {
|
|
212
|
-
logger.warn('Workflow cancelled by user.');
|
|
213
|
-
onEvent({
|
|
214
|
-
kind: TaskEventKind.EndTask,
|
|
215
|
-
exitReason: {
|
|
216
|
-
type: 'Exit',
|
|
217
|
-
message: error.message,
|
|
218
|
-
messages: [],
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
else if (error instanceof QuotaExceededError) {
|
|
223
|
-
logger.error(`\n❌ Error: ${error.message}`);
|
|
224
|
-
onEvent({
|
|
225
|
-
kind: TaskEventKind.EndTask,
|
|
226
|
-
exitReason: {
|
|
227
|
-
type: 'Error',
|
|
228
|
-
error: { message: error.message, stack: error.stack },
|
|
229
|
-
messages: [],
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
}
|
|
233
|
-
else if (error instanceof AuthenticationError) {
|
|
234
|
-
logger.error(`\n❌ Authentication Error: ${error.message}`);
|
|
235
|
-
onEvent({
|
|
236
|
-
kind: TaskEventKind.EndTask,
|
|
237
|
-
exitReason: {
|
|
238
|
-
type: 'Error',
|
|
239
|
-
error: { message: error.message, stack: error.stack },
|
|
240
|
-
messages: [],
|
|
241
|
-
},
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
else if (error instanceof ModelAccessError) {
|
|
245
|
-
logger.error(`\n❌ Model Access Error: ${error.message}`);
|
|
246
|
-
onEvent({
|
|
247
|
-
kind: TaskEventKind.EndTask,
|
|
248
|
-
exitReason: {
|
|
249
|
-
type: 'Error',
|
|
250
|
-
error: { message: error.message, stack: error.stack },
|
|
251
|
-
messages: [],
|
|
252
|
-
},
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
else if (error instanceof ProviderError) {
|
|
256
|
-
// Handle all other provider errors
|
|
257
|
-
logger.error(`\n❌ Provider Error: ${error.message}`);
|
|
258
|
-
onEvent({
|
|
259
|
-
kind: TaskEventKind.EndTask,
|
|
260
|
-
exitReason: {
|
|
261
|
-
type: 'Error',
|
|
262
|
-
error: { message: error.message, stack: error.stack },
|
|
263
|
-
messages: [],
|
|
264
|
-
},
|
|
265
|
-
});
|
|
266
|
-
}
|
|
267
|
-
else if (error instanceof McpError) {
|
|
268
|
-
// Handle all MCP errors
|
|
269
|
-
logger.error(`\n❌ MCP Error: ${error.message}`);
|
|
270
|
-
onEvent({
|
|
271
|
-
kind: TaskEventKind.EndTask,
|
|
272
|
-
exitReason: {
|
|
273
|
-
type: 'Error',
|
|
274
|
-
error: { message: error.message, stack: error.stack },
|
|
275
|
-
messages: [],
|
|
276
|
-
},
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
// Generic error handling
|
|
281
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
282
|
-
const errorStack = error instanceof Error ? error.stack : undefined;
|
|
283
|
-
logger.error(`\n❌ Error: ${errorMessage}`);
|
|
284
|
-
onEvent({
|
|
285
|
-
kind: TaskEventKind.EndTask,
|
|
286
|
-
exitReason: {
|
|
287
|
-
type: 'Error',
|
|
288
|
-
error: { message: errorMessage, stack: errorStack },
|
|
289
|
-
messages: [],
|
|
290
|
-
},
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
// Wait for any pending usage updates to complete
|
|
294
|
-
await usage.waitForPending();
|
|
295
|
-
logger.info(usage.getUsageText());
|
|
296
|
-
return undefined;
|
|
297
|
-
}
|
|
298
|
-
finally {
|
|
299
|
-
// Close memory store
|
|
300
|
-
if (memoryStore) {
|
|
301
|
-
try {
|
|
302
|
-
await memoryStore.close();
|
|
303
|
-
}
|
|
304
|
-
catch (error) {
|
|
305
|
-
logger.warn(`Failed to close memory store: ${error instanceof Error ? error.message : String(error)}`);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
// Disconnect MCP servers
|
|
309
|
-
await mcpManager.disconnectAll();
|
|
310
|
-
logGlobalToolCallStats(process.stderr, verbose);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
//# sourceMappingURL=runWorkflow.js.map
|
package/dist/runWorkflow.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runWorkflow.js","sourceRoot":"","sources":["../src/runWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { afterAll, beforeAll, describe, expect, it } from 'bun:test';
|
|
3
|
-
import { execFileSync } from 'node:child_process';
|
|
4
|
-
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
5
|
-
import { join } from 'node:path';
|
|
6
|
-
import { ScriptRunner } from '../runner';
|
|
7
|
-
// Mock logger
|
|
8
|
-
const mockLogger = {
|
|
9
|
-
debug: () => { },
|
|
10
|
-
info: () => { },
|
|
11
|
-
warn: () => { },
|
|
12
|
-
error: () => { },
|
|
13
|
-
};
|
|
14
|
-
describe('Script Execution Integration Tests', () => {
|
|
15
|
-
const testProjectDir = join(process.cwd(), 'test-integration-project');
|
|
16
|
-
const scriptsDir = join(testProjectDir, '.polka-scripts');
|
|
17
|
-
const runner = new ScriptRunner();
|
|
18
|
-
beforeAll(() => {
|
|
19
|
-
// Create test project directory
|
|
20
|
-
mkdirSync(scriptsDir, { recursive: true });
|
|
21
|
-
// Create a test script that uses polka-codes APIs
|
|
22
|
-
writeFileSync(join(scriptsDir, 'test-script.ts'), `
|
|
23
|
-
import type { ScriptContext } from '@polka-codes/cli'
|
|
24
|
-
|
|
25
|
-
export async function main(args: string[], context: ScriptContext) {
|
|
26
|
-
const { logger } = context
|
|
27
|
-
logger.info('Test script executed')
|
|
28
|
-
logger.info('Args:', args.join(' '))
|
|
29
|
-
|
|
30
|
-
return {
|
|
31
|
-
success: true,
|
|
32
|
-
message: 'Integration test passed',
|
|
33
|
-
args,
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (import.meta.main) {
|
|
38
|
-
main(process.argv.slice(2), { logger: console, projectRoot: process.cwd() })
|
|
39
|
-
}
|
|
40
|
-
`);
|
|
41
|
-
// Create a script with timeout
|
|
42
|
-
writeFileSync(join(scriptsDir, 'timeout-script.ts'), `
|
|
43
|
-
import type { ScriptContext } from '@polka-codes/cli'
|
|
44
|
-
|
|
45
|
-
export async function main(args: string[], context: ScriptContext) {
|
|
46
|
-
const { logger } = context
|
|
47
|
-
logger.info('Starting long operation...')
|
|
48
|
-
await new Promise(resolve => setTimeout(resolve, 10000))
|
|
49
|
-
return { done: true }
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (import.meta.main) {
|
|
53
|
-
main(process.argv.slice(2), { logger: console, projectRoot: process.cwd() })
|
|
54
|
-
}
|
|
55
|
-
`);
|
|
56
|
-
// Create a script that throws an error
|
|
57
|
-
writeFileSync(join(scriptsDir, 'error-script.ts'), `
|
|
58
|
-
import type { ScriptContext } from '@polka-codes/cli'
|
|
59
|
-
|
|
60
|
-
export async function main(args: string[], context: ScriptContext) {
|
|
61
|
-
throw new Error('Intentional test error')
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (import.meta.main) {
|
|
65
|
-
main(process.argv.slice(2), { logger: console, projectRoot: process.cwd() })
|
|
66
|
-
}
|
|
67
|
-
`);
|
|
68
|
-
// Create a script without main function
|
|
69
|
-
writeFileSync(join(scriptsDir, 'no-main-script.ts'), `
|
|
70
|
-
export const helper = () => 'helper function'
|
|
71
|
-
`);
|
|
72
|
-
});
|
|
73
|
-
afterAll(() => {
|
|
74
|
-
// Cleanup test project directory
|
|
75
|
-
try {
|
|
76
|
-
rmSync(testProjectDir, { recursive: true, force: true });
|
|
77
|
-
}
|
|
78
|
-
catch {
|
|
79
|
-
// Directory doesn't exist
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
describe('Direct ScriptRunner execution', () => {
|
|
83
|
-
it('should execute TypeScript script and return result', async () => {
|
|
84
|
-
const scriptPath = join(scriptsDir, 'test-script.ts');
|
|
85
|
-
const result = await runner.execute({
|
|
86
|
-
scriptPath,
|
|
87
|
-
args: ['--arg1', '--arg2'],
|
|
88
|
-
context: {},
|
|
89
|
-
logger: mockLogger,
|
|
90
|
-
});
|
|
91
|
-
expect(result.success).toBe(true);
|
|
92
|
-
expect(result.returnValue).toEqual({
|
|
93
|
-
success: true,
|
|
94
|
-
message: 'Integration test passed',
|
|
95
|
-
args: ['--arg1', '--arg2'],
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
it('should handle script execution errors gracefully', async () => {
|
|
99
|
-
const scriptPath = join(scriptsDir, 'error-script.ts');
|
|
100
|
-
const result = await runner.execute({
|
|
101
|
-
scriptPath,
|
|
102
|
-
args: [],
|
|
103
|
-
context: {},
|
|
104
|
-
logger: mockLogger,
|
|
105
|
-
});
|
|
106
|
-
expect(result.success).toBe(false);
|
|
107
|
-
expect(result.error).toBeDefined();
|
|
108
|
-
expect(result.error?.message).toContain('Intentional test error');
|
|
109
|
-
});
|
|
110
|
-
it('should enforce timeout on long-running scripts', async () => {
|
|
111
|
-
const scriptPath = join(scriptsDir, 'timeout-script.ts');
|
|
112
|
-
try {
|
|
113
|
-
await runner.execute({
|
|
114
|
-
scriptPath,
|
|
115
|
-
args: [],
|
|
116
|
-
context: {},
|
|
117
|
-
logger: mockLogger,
|
|
118
|
-
timeout: 500, // 500ms timeout
|
|
119
|
-
});
|
|
120
|
-
expect(true).toBe(false); // Should not reach here
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
expect(error).toBeDefined();
|
|
124
|
-
expect(error.name).toBe('ScriptTimeoutError');
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
it('should fail when script lacks main function', async () => {
|
|
128
|
-
const scriptPath = join(scriptsDir, 'no-main-script.ts');
|
|
129
|
-
const result = await runner.execute({
|
|
130
|
-
scriptPath,
|
|
131
|
-
args: [],
|
|
132
|
-
context: {},
|
|
133
|
-
logger: mockLogger,
|
|
134
|
-
});
|
|
135
|
-
expect(result.success).toBe(false);
|
|
136
|
-
expect(result.error).toBeDefined();
|
|
137
|
-
expect(result.error?.name).toBe('ScriptExecutionError');
|
|
138
|
-
expect(result.error?.cause).toBeDefined();
|
|
139
|
-
if (result.error?.cause instanceof Error) {
|
|
140
|
-
expect(result.error.cause.message).toContain("must export a 'main");
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
describe('End-to-end CLI execution', () => {
|
|
145
|
-
it('should execute script via Bun runtime', () => {
|
|
146
|
-
const scriptPath = join(scriptsDir, 'test-script.ts');
|
|
147
|
-
const output = execFileSync('bun', ['run', scriptPath, '--test-arg'], {
|
|
148
|
-
cwd: testProjectDir,
|
|
149
|
-
encoding: 'utf-8',
|
|
150
|
-
});
|
|
151
|
-
expect(output).toContain('Test script executed');
|
|
152
|
-
expect(output).toContain('--test-arg');
|
|
153
|
-
});
|
|
154
|
-
it('should handle scripts that throw errors via Bun runtime', () => {
|
|
155
|
-
const scriptPath = join(scriptsDir, 'error-script.ts');
|
|
156
|
-
try {
|
|
157
|
-
execFileSync('bun', ['run', scriptPath], {
|
|
158
|
-
cwd: testProjectDir,
|
|
159
|
-
encoding: 'utf-8',
|
|
160
|
-
});
|
|
161
|
-
expect(true).toBe(false); // Should not reach here
|
|
162
|
-
}
|
|
163
|
-
catch (error) {
|
|
164
|
-
expect(error.stderr).toContain('Intentional test error');
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
describe('Script file system operations', () => {
|
|
169
|
-
it('should read and write files in script directory', async () => {
|
|
170
|
-
const testFilePath = join(scriptsDir, 'test-io.ts');
|
|
171
|
-
const testDataFile = join(testProjectDir, 'test-data.txt');
|
|
172
|
-
writeFileSync(testFilePath, `
|
|
173
|
-
import { readFileSync, writeFileSync } from 'node:fs'
|
|
174
|
-
import { join, dirname } from 'node:path'
|
|
175
|
-
import { fileURLToPath } from 'node:url'
|
|
176
|
-
|
|
177
|
-
const __filename = fileURLToPath(import.meta.url)
|
|
178
|
-
const __dirname = dirname(__filename)
|
|
179
|
-
|
|
180
|
-
export async function main(args: string[]) {
|
|
181
|
-
// Use absolute path for test data file
|
|
182
|
-
const dataFile = '${testDataFile}'
|
|
183
|
-
|
|
184
|
-
// Write test data
|
|
185
|
-
writeFileSync(dataFile, 'test content from script')
|
|
186
|
-
|
|
187
|
-
// Read it back
|
|
188
|
-
const content = readFileSync(dataFile, 'utf-8')
|
|
189
|
-
|
|
190
|
-
return {
|
|
191
|
-
success: true,
|
|
192
|
-
content,
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (import.meta.main) {
|
|
197
|
-
main(process.argv.slice(2))
|
|
198
|
-
}
|
|
199
|
-
`);
|
|
200
|
-
const result = await runner.execute({
|
|
201
|
-
scriptPath: testFilePath,
|
|
202
|
-
args: [],
|
|
203
|
-
context: {},
|
|
204
|
-
logger: mockLogger,
|
|
205
|
-
});
|
|
206
|
-
expect(result.success).toBe(true);
|
|
207
|
-
if (result.returnValue && typeof result.returnValue === 'object') {
|
|
208
|
-
expect(result.returnValue).toHaveProperty('content', 'test content from script');
|
|
209
|
-
}
|
|
210
|
-
expect(existsSync(testDataFile)).toBe(true);
|
|
211
|
-
// Cleanup
|
|
212
|
-
rmSync(testFilePath);
|
|
213
|
-
rmSync(testDataFile);
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
describe('Script argument parsing', () => {
|
|
217
|
-
it('should handle empty arguments', async () => {
|
|
218
|
-
const testFilePath = join(scriptsDir, 'test-args.ts');
|
|
219
|
-
writeFileSync(testFilePath, `
|
|
220
|
-
export async function main(args: string[]) {
|
|
221
|
-
return {
|
|
222
|
-
success: true,
|
|
223
|
-
argCount: args.length,
|
|
224
|
-
args,
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
if (import.meta.main) {
|
|
229
|
-
main(process.argv.slice(2))
|
|
230
|
-
}
|
|
231
|
-
`);
|
|
232
|
-
const result = await runner.execute({
|
|
233
|
-
scriptPath: testFilePath,
|
|
234
|
-
args: [],
|
|
235
|
-
context: {},
|
|
236
|
-
logger: mockLogger,
|
|
237
|
-
});
|
|
238
|
-
expect(result.success).toBe(true);
|
|
239
|
-
if (result.returnValue && typeof result.returnValue === 'object') {
|
|
240
|
-
expect(result.returnValue).toHaveProperty('argCount', 0);
|
|
241
|
-
expect(result.returnValue).toHaveProperty('args', []);
|
|
242
|
-
}
|
|
243
|
-
rmSync(testFilePath);
|
|
244
|
-
});
|
|
245
|
-
it('should handle multiple arguments with special characters', async () => {
|
|
246
|
-
const testFilePath = join(scriptsDir, 'test-special-args.ts');
|
|
247
|
-
writeFileSync(testFilePath, `
|
|
248
|
-
export async function main(args: string[]) {
|
|
249
|
-
return {
|
|
250
|
-
success: true,
|
|
251
|
-
args,
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (import.meta.main) {
|
|
256
|
-
main(process.argv.slice(2))
|
|
257
|
-
}
|
|
258
|
-
`);
|
|
259
|
-
const specialArgs = ['--flag', 'value with spaces', '--another="quoted"', '--emoji=🚀'];
|
|
260
|
-
const result = await runner.execute({
|
|
261
|
-
scriptPath: testFilePath,
|
|
262
|
-
args: specialArgs,
|
|
263
|
-
context: {},
|
|
264
|
-
logger: mockLogger,
|
|
265
|
-
});
|
|
266
|
-
expect(result.success).toBe(true);
|
|
267
|
-
if (result.returnValue && typeof result.returnValue === 'object') {
|
|
268
|
-
expect(result.returnValue).toHaveProperty('args', specialArgs);
|
|
269
|
-
}
|
|
270
|
-
rmSync(testFilePath);
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
});
|
|
274
|
-
//# sourceMappingURL=execution.integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution.integration.test.js","sourceRoot":"","sources":["../../../src/script/__tests__/execution.integration.test.ts"],"names":[],"mappings":"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"}
|