@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
package/dist/commands/commit.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { commit } from '../api';
|
|
3
|
-
import { getBaseWorkflowOptions } from '../utils/command';
|
|
4
|
-
export const commitCommand = new Command('commit')
|
|
5
|
-
.description('Create a commit with AI-generated message')
|
|
6
|
-
.option('-a, --all', 'Stage all files before committing')
|
|
7
|
-
.argument('[message]', 'Optional context for the commit message generation')
|
|
8
|
-
.action(async (message, localOptions, command) => {
|
|
9
|
-
const workflowOpts = getBaseWorkflowOptions(command);
|
|
10
|
-
await commit({
|
|
11
|
-
all: localOptions.all,
|
|
12
|
-
context: message,
|
|
13
|
-
files: workflowOpts.file,
|
|
14
|
-
...workflowOpts,
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=commit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/commands/commit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;KACxD,QAAQ,CAAC,WAAW,EAAE,oDAAoD,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAgB,EAAE,EAAE;IACxD,MAAM,YAAY,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,MAAM,CAAC;QACX,GAAG,EAAE,YAAY,CAAC,GAAG;QACrB,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,YAAY,CAAC,IAAI;QACxB,GAAG,YAAY;KAChB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/commands/fix.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// generated by polka.codes
|
|
2
|
-
import { Command } from 'commander';
|
|
3
|
-
import { fix } from '../api';
|
|
4
|
-
import { getBaseWorkflowOptions } from '../utils/command';
|
|
5
|
-
export const fixCommand = new Command('fix')
|
|
6
|
-
.description('Fix issues by running a command and letting an agent fix it.')
|
|
7
|
-
.argument('[command]', 'The command to run')
|
|
8
|
-
.option('-p, --prompt <prompt>', 'Additional prompt for the agent.')
|
|
9
|
-
.action(async (commandArg, options, cmd) => {
|
|
10
|
-
const workflowOpts = getBaseWorkflowOptions(cmd);
|
|
11
|
-
await fix({
|
|
12
|
-
command: commandArg,
|
|
13
|
-
prompt: options.prompt,
|
|
14
|
-
...workflowOpts,
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=fix.js.map
|
package/dist/commands/fix.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACzC,WAAW,CAAC,8DAA8D,CAAC;KAC3E,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;KAC3C,MAAM,CAAC,uBAAuB,EAAE,kCAAkC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,OAA4B,EAAE,GAAY,EAAE,EAAE;IAC3F,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,GAAG,CAAC;QACR,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,YAAY;KAChB,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,501 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Initialize polkacodes configuration command.
|
|
3
|
-
* Generated by polka.codes
|
|
4
|
-
*/
|
|
5
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { confirm, input, select } from '@inquirer/prompts';
|
|
8
|
-
import { getGlobalConfigPath, loadConfigAtPath, localConfigFileName, readConfig } from '@polka-codes/cli-shared';
|
|
9
|
-
import { Command } from 'commander';
|
|
10
|
-
import { set } from 'lodash-es';
|
|
11
|
-
import { parseDocument, stringify } from 'yaml';
|
|
12
|
-
import { BUILT_IN_COMMANDS } from '../builtin-commands';
|
|
13
|
-
import { configPrompt } from '../configPrompt';
|
|
14
|
-
import { createLogger } from '../logger';
|
|
15
|
-
import { runWorkflow } from '../runWorkflow';
|
|
16
|
-
import { getBaseWorkflowOptions } from '../utils/command';
|
|
17
|
-
import { initWorkflow } from '../workflows/init.workflow';
|
|
18
|
-
import { initInteractiveWorkflow } from '../workflows/init-interactive.workflow';
|
|
19
|
-
/**
|
|
20
|
-
* Create a new Agent Skill template
|
|
21
|
-
*/
|
|
22
|
-
async function createSkill(name, logger, interactive) {
|
|
23
|
-
// Validate skill name (same rules as Agent Skills spec)
|
|
24
|
-
const nameRegex = /^[a-z0-9-]+$/;
|
|
25
|
-
if (!nameRegex.test(name)) {
|
|
26
|
-
throw new Error('Skill name must contain only lowercase letters, numbers, and hyphens. Example: "react-component-generator"');
|
|
27
|
-
}
|
|
28
|
-
if (name.length > 64) {
|
|
29
|
-
throw new Error('Skill name must be at most 64 characters');
|
|
30
|
-
}
|
|
31
|
-
// Check for conflicts with built-in commands
|
|
32
|
-
if (BUILT_IN_COMMANDS.includes(name)) {
|
|
33
|
-
throw new Error(`Skill name '${name}' conflicts with a built-in command. ` + `Please choose a different name (e.g., '${name}-skill' or 'my-${name}')`);
|
|
34
|
-
}
|
|
35
|
-
const skillDir = join('.claude', 'skills', name);
|
|
36
|
-
// Check if skill already exists
|
|
37
|
-
if (existsSync(skillDir)) {
|
|
38
|
-
if (interactive) {
|
|
39
|
-
const proceed = await confirm({
|
|
40
|
-
message: `Skill '${name}' already exists. Overwrite?`,
|
|
41
|
-
default: false,
|
|
42
|
-
});
|
|
43
|
-
if (!proceed) {
|
|
44
|
-
logger.info('Skill creation cancelled');
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
throw new Error(`Skill already exists: ${skillDir}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// Create skill directory
|
|
53
|
-
mkdirSync(skillDir, { recursive: true });
|
|
54
|
-
logger.info(`Created skill directory: ${skillDir}`);
|
|
55
|
-
// Generate skill template
|
|
56
|
-
const template = generateSkillTemplate(name);
|
|
57
|
-
writeFileSync(join(skillDir, 'SKILL.md'), template);
|
|
58
|
-
logger.info(`Created SKILL.md`);
|
|
59
|
-
logger.info('');
|
|
60
|
-
logger.info(`Skill '${name}' created successfully!`);
|
|
61
|
-
logger.info('');
|
|
62
|
-
logger.info('Next steps:');
|
|
63
|
-
logger.info(` 1. Edit ${skillDir}/SKILL.md to add your instructions`);
|
|
64
|
-
logger.info(` 2. Add supporting files (reference.md, examples.md, etc.)`);
|
|
65
|
-
logger.info(` 3. Validate with: polka skills validate ${name}`);
|
|
66
|
-
logger.info(` 4. Test by asking Claude to use the skill`);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Generate skill template content
|
|
70
|
-
*/
|
|
71
|
-
function generateSkillTemplate(name) {
|
|
72
|
-
const capitalizedName = name
|
|
73
|
-
.split('-')
|
|
74
|
-
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
75
|
-
.join(' ');
|
|
76
|
-
return `---
|
|
77
|
-
name: ${name}
|
|
78
|
-
description: Brief description of what this skill does and when to use it. Include trigger terms like "when the user mentions..." or "for tasks involving..."
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
# ${capitalizedName}
|
|
82
|
-
|
|
83
|
-
## Instructions
|
|
84
|
-
|
|
85
|
-
Provide clear, step-by-step guidance for Claude here.
|
|
86
|
-
|
|
87
|
-
### When to Use This Skill
|
|
88
|
-
|
|
89
|
-
Use this skill when:
|
|
90
|
-
- The user asks about [specific topics]
|
|
91
|
-
- Working with [specific technologies/file types]
|
|
92
|
-
- [other trigger conditions]
|
|
93
|
-
|
|
94
|
-
### Step-by-Step Process
|
|
95
|
-
|
|
96
|
-
1. First step
|
|
97
|
-
2. Second step
|
|
98
|
-
3. Continue as needed
|
|
99
|
-
|
|
100
|
-
## Examples
|
|
101
|
-
|
|
102
|
-
### Example 1: Simple usage
|
|
103
|
-
|
|
104
|
-
\`\`\`
|
|
105
|
-
Input: [user input example]
|
|
106
|
-
Output: [expected response]
|
|
107
|
-
\`\`\`
|
|
108
|
-
|
|
109
|
-
## Best Practices
|
|
110
|
-
|
|
111
|
-
- Tip 1
|
|
112
|
-
- Tip 2
|
|
113
|
-
- Tip 3
|
|
114
|
-
|
|
115
|
-
## Troubleshooting
|
|
116
|
-
|
|
117
|
-
### Common Issues
|
|
118
|
-
|
|
119
|
-
**Problem**: Description of problem
|
|
120
|
-
**Solution**: How to fix it
|
|
121
|
-
|
|
122
|
-
## Resources
|
|
123
|
-
|
|
124
|
-
Add additional files like:
|
|
125
|
-
- \`reference.md\` - Detailed documentation
|
|
126
|
-
- \`examples.md\` - More usage examples
|
|
127
|
-
- \`scripts/\` - Helper scripts
|
|
128
|
-
- \`templates/\` - File templates
|
|
129
|
-
`;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Create a new TypeScript script template
|
|
133
|
-
*/
|
|
134
|
-
async function createScript(name, logger, interactive, isGlobal = false) {
|
|
135
|
-
// Note: Script name validation and built-in command checks are done at the
|
|
136
|
-
// higher level in the script type handler to apply to both AI and template paths
|
|
137
|
-
const scriptDir = '.polka-scripts';
|
|
138
|
-
// Use forward slashes for config (cross-platform), actual path for file operations
|
|
139
|
-
const scriptPathConfig = `${scriptDir}/${name}.ts`;
|
|
140
|
-
const scriptPathActual = join(scriptDir, `${name}.ts`);
|
|
141
|
-
// Check if script already exists
|
|
142
|
-
if (existsSync(scriptPathActual)) {
|
|
143
|
-
if (interactive) {
|
|
144
|
-
const proceed = await confirm({
|
|
145
|
-
message: `Script '${scriptPathActual}' already exists. Overwrite?`,
|
|
146
|
-
default: false,
|
|
147
|
-
});
|
|
148
|
-
if (!proceed) {
|
|
149
|
-
logger.info('Script generation cancelled');
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
throw new Error(`Script already exists: ${scriptPathActual}`);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
// Create .polka-scripts directory if it doesn't exist
|
|
158
|
-
if (!existsSync(scriptDir)) {
|
|
159
|
-
mkdirSync(scriptDir, { recursive: true });
|
|
160
|
-
logger.info(`Created directory: ${scriptDir}`);
|
|
161
|
-
}
|
|
162
|
-
// Generate script template
|
|
163
|
-
const template = `// Generated by polka.codes
|
|
164
|
-
import { code, commit } from '@polka-codes/cli'
|
|
165
|
-
|
|
166
|
-
export async function main(args: string[]) {
|
|
167
|
-
console.log('Running script: ${name}')
|
|
168
|
-
console.log('Arguments:', args)
|
|
169
|
-
|
|
170
|
-
// Your automation here
|
|
171
|
-
// Example workflows:
|
|
172
|
-
// await code({ task: 'Add feature', interactive: false })
|
|
173
|
-
// await commit({ all: true, context: 'Feature complete' })
|
|
174
|
-
|
|
175
|
-
console.log('Script completed successfully')
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// Only run main if this is the entry point
|
|
179
|
-
if (import.meta.main) {
|
|
180
|
-
main(process.argv.slice(2))
|
|
181
|
-
}
|
|
182
|
-
`;
|
|
183
|
-
// Write script file
|
|
184
|
-
writeFileSync(scriptPathActual, template);
|
|
185
|
-
logger.info(`Created script: ${scriptPathActual}`);
|
|
186
|
-
// Add to config if it exists
|
|
187
|
-
const configPath = isGlobal ? getGlobalConfigPath() : localConfigFileName;
|
|
188
|
-
if (existsSync(configPath)) {
|
|
189
|
-
try {
|
|
190
|
-
const config = readConfig(configPath);
|
|
191
|
-
if (!config.scripts) {
|
|
192
|
-
config.scripts = {};
|
|
193
|
-
}
|
|
194
|
-
config.scripts[name] = {
|
|
195
|
-
script: scriptPathConfig,
|
|
196
|
-
description: `Custom script: ${name}`,
|
|
197
|
-
};
|
|
198
|
-
// Append script to config file while preserving existing content
|
|
199
|
-
const configContent = readFileSync(configPath, 'utf-8');
|
|
200
|
-
let newContent = configContent;
|
|
201
|
-
// Check if scripts section exists
|
|
202
|
-
if (!configContent.includes('scripts:')) {
|
|
203
|
-
// Add scripts section at the end
|
|
204
|
-
newContent = `${configContent.trimEnd()}\n\nscripts:\n ${name}:\n script: ${scriptPathConfig}\n description: Custom script: ${name}\n`;
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
// Parse YAML to safely insert into scripts section
|
|
208
|
-
try {
|
|
209
|
-
// Use parseDocument to preserve comments
|
|
210
|
-
const doc = parseDocument(configContent);
|
|
211
|
-
if (!doc.has('scripts')) {
|
|
212
|
-
doc.set('scripts', {});
|
|
213
|
-
}
|
|
214
|
-
doc.setIn(['scripts', name], {
|
|
215
|
-
script: scriptPathConfig,
|
|
216
|
-
description: `Custom script: ${name}`,
|
|
217
|
-
});
|
|
218
|
-
newContent = doc.toString();
|
|
219
|
-
}
|
|
220
|
-
catch (parseError) {
|
|
221
|
-
// Fallback to string append if YAML parsing fails
|
|
222
|
-
logger.warn('Could not parse config file safely. Please add the script manually:');
|
|
223
|
-
logger.info(` scripts:`);
|
|
224
|
-
logger.info(` ${name}:`);
|
|
225
|
-
logger.info(` script: ${scriptPathConfig}`);
|
|
226
|
-
logger.info(` description: Custom script: ${name}`);
|
|
227
|
-
if (parseError instanceof Error) {
|
|
228
|
-
logger.debug(`Error: ${parseError.message}`);
|
|
229
|
-
}
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
writeFileSync(configPath, newContent);
|
|
234
|
-
logger.info(`Added script to config: ${configPath}`);
|
|
235
|
-
logger.info(`Run with: polka run ${name}`);
|
|
236
|
-
}
|
|
237
|
-
catch (error) {
|
|
238
|
-
logger.warn('Could not update config file. Add the script manually:');
|
|
239
|
-
logger.info(` scripts:`);
|
|
240
|
-
logger.info(` ${name}:`);
|
|
241
|
-
logger.info(` script: ${scriptPathConfig}`);
|
|
242
|
-
logger.info(` description: Custom script: ${name}`);
|
|
243
|
-
if (error instanceof Error) {
|
|
244
|
-
logger.debug(`Error: ${error.message}`);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
else {
|
|
249
|
-
logger.info(`Tip: Add this script to your .polkacodes.yml:`);
|
|
250
|
-
logger.info(` scripts:`);
|
|
251
|
-
logger.info(` ${name}:`);
|
|
252
|
-
logger.info(` script: ${scriptPathConfig}`);
|
|
253
|
-
logger.info(` description: Custom script: ${name}`);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
export const initCommand = new Command('init')
|
|
257
|
-
.description('Initialize polkacodes configuration, generate scripts, or create skills')
|
|
258
|
-
.argument('[type]', 'Type of resource to initialize (config, script, skill)')
|
|
259
|
-
.argument('[name]', 'Name of the script or skill (only for type=script|skill)')
|
|
260
|
-
.option('-g, --global', 'Use global config')
|
|
261
|
-
.option('-i, --instructions <string>', 'Script description for AI-assisted generation (only for type=script)')
|
|
262
|
-
.action(async (type, name, options, command) => {
|
|
263
|
-
const workflowOpts = getBaseWorkflowOptions(command);
|
|
264
|
-
const { verbose, yes } = workflowOpts;
|
|
265
|
-
const logger = createLogger({
|
|
266
|
-
verbose: verbose,
|
|
267
|
-
});
|
|
268
|
-
const interactive = !yes;
|
|
269
|
-
// Handle skill creation
|
|
270
|
-
if (type === 'skill') {
|
|
271
|
-
if (!name) {
|
|
272
|
-
logger.error('Error: Skill name is required when type=skill');
|
|
273
|
-
logger.info('Usage: polka init skill <skill-name>');
|
|
274
|
-
process.exit(1);
|
|
275
|
-
}
|
|
276
|
-
try {
|
|
277
|
-
await createSkill(name, logger, interactive);
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
281
|
-
logger.error(`Skill creation failed: ${message}`);
|
|
282
|
-
process.exit(1);
|
|
283
|
-
}
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
// Handle script generation
|
|
287
|
-
if (type === 'script') {
|
|
288
|
-
if (!name) {
|
|
289
|
-
logger.error('Error: Script name is required when type=script');
|
|
290
|
-
logger.info('Usage: polka init script <script-name>');
|
|
291
|
-
logger.info('');
|
|
292
|
-
logger.info('For AI-assisted script generation:');
|
|
293
|
-
logger.info(' polka init script <name> -i "description"');
|
|
294
|
-
logger.info('');
|
|
295
|
-
logger.info('For basic template generation:');
|
|
296
|
-
logger.info(' polka init script <name>');
|
|
297
|
-
process.exit(1);
|
|
298
|
-
}
|
|
299
|
-
// Validate script name (prevent path traversal - must be flat in .polka-scripts)
|
|
300
|
-
// This validation applies to both AI and basic template generation
|
|
301
|
-
if (name.includes('/') || name.includes('\\')) {
|
|
302
|
-
logger.error('Error: Script name cannot contain slashes. Use a simple name (e.g., "deploy" not "utils/deploy")');
|
|
303
|
-
process.exit(1);
|
|
304
|
-
}
|
|
305
|
-
// Check for conflicts with built-in commands
|
|
306
|
-
if (BUILT_IN_COMMANDS.includes(name)) {
|
|
307
|
-
logger.error(`Error: Script name '${name}' conflicts with a built-in command. ` +
|
|
308
|
-
`Please choose a different name (e.g., '${name}-script' or 'my-${name}')`);
|
|
309
|
-
process.exit(1);
|
|
310
|
-
}
|
|
311
|
-
// Check if AI-assisted generation is requested (presence of -i flag)
|
|
312
|
-
const useAI = options.instructions !== undefined;
|
|
313
|
-
if (useAI) {
|
|
314
|
-
// Interactive AI-assisted script generation
|
|
315
|
-
try {
|
|
316
|
-
let scriptInstructions = options.instructions;
|
|
317
|
-
if (!scriptInstructions && interactive) {
|
|
318
|
-
scriptInstructions = await input({
|
|
319
|
-
message: 'Describe what this script should do:',
|
|
320
|
-
validate: (input) => input.length > 0 || 'Please provide a description',
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
if (!scriptInstructions) {
|
|
324
|
-
logger.error('Error: Script instructions are required for AI generation');
|
|
325
|
-
logger.info('Usage: polka init script <name> -i "your instructions"');
|
|
326
|
-
process.exit(1);
|
|
327
|
-
}
|
|
328
|
-
// Check if script already exists before running AI workflow
|
|
329
|
-
const scriptDir = '.polka-scripts';
|
|
330
|
-
const scriptPath = join(scriptDir, `${name}.ts`);
|
|
331
|
-
if (existsSync(scriptPath)) {
|
|
332
|
-
if (interactive) {
|
|
333
|
-
const proceed = await confirm({
|
|
334
|
-
message: `Script '${scriptPath}' already exists. Overwrite?`,
|
|
335
|
-
default: false,
|
|
336
|
-
});
|
|
337
|
-
if (!proceed) {
|
|
338
|
-
logger.info('Script generation cancelled');
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
throw new Error(`Script already exists: ${scriptPath}`);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
// Get config path
|
|
347
|
-
const globalConfigPath = getGlobalConfigPath();
|
|
348
|
-
const isGlobal = options.global ?? false;
|
|
349
|
-
const configPath = isGlobal ? globalConfigPath : localConfigFileName;
|
|
350
|
-
// Run interactive workflow
|
|
351
|
-
await runWorkflow(initInteractiveWorkflow, {
|
|
352
|
-
configPath,
|
|
353
|
-
scriptName: name,
|
|
354
|
-
scriptInstructions,
|
|
355
|
-
generateScript: true,
|
|
356
|
-
skipConfirmation: !interactive,
|
|
357
|
-
}, {
|
|
358
|
-
commandName: 'init',
|
|
359
|
-
context: workflowOpts,
|
|
360
|
-
logger,
|
|
361
|
-
interactive,
|
|
362
|
-
});
|
|
363
|
-
}
|
|
364
|
-
catch (error) {
|
|
365
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
366
|
-
logger.error(`AI script generation failed: ${message}`);
|
|
367
|
-
process.exit(1);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
// Basic template generation
|
|
372
|
-
try {
|
|
373
|
-
const isGlobal = Boolean(options.global);
|
|
374
|
-
await createScript(name, logger, interactive, isGlobal);
|
|
375
|
-
}
|
|
376
|
-
catch (error) {
|
|
377
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
378
|
-
logger.error(`Script generation failed: ${message}`);
|
|
379
|
-
process.exit(1);
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
return;
|
|
383
|
-
}
|
|
384
|
-
// Original config initialization logic
|
|
385
|
-
if (type && type !== 'config') {
|
|
386
|
-
logger.error(`Error: Unknown type '${type}'`);
|
|
387
|
-
logger.info('Valid types: config, script, skill');
|
|
388
|
-
process.exit(1);
|
|
389
|
-
}
|
|
390
|
-
const globalConfigPath = getGlobalConfigPath();
|
|
391
|
-
let isGlobal = options.global ?? false;
|
|
392
|
-
let configPath = isGlobal ? globalConfigPath : localConfigFileName;
|
|
393
|
-
const exists = existsSync(configPath);
|
|
394
|
-
if (exists) {
|
|
395
|
-
if (interactive) {
|
|
396
|
-
const proceed = await confirm({
|
|
397
|
-
message: `Found existing config at ${configPath}. Do you want to proceed? This will overwrite the existing config.`,
|
|
398
|
-
default: false,
|
|
399
|
-
});
|
|
400
|
-
if (!proceed) {
|
|
401
|
-
logger.info('User cancelled');
|
|
402
|
-
return;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
else if (!options.global) {
|
|
407
|
-
if (interactive) {
|
|
408
|
-
const location = await select({
|
|
409
|
-
message: 'No config file found. Do you want to create one?',
|
|
410
|
-
choices: [
|
|
411
|
-
{ name: `Create a global config at ${globalConfigPath}`, value: 'global' },
|
|
412
|
-
{ name: `Create a local config at ${configPath}`, value: 'local' },
|
|
413
|
-
],
|
|
414
|
-
});
|
|
415
|
-
if (location === 'global') {
|
|
416
|
-
isGlobal = true;
|
|
417
|
-
configPath = globalConfigPath;
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
logger.info(`Config file path: ${configPath}`);
|
|
422
|
-
let existingConfig = {};
|
|
423
|
-
try {
|
|
424
|
-
existingConfig = readConfig(configPath);
|
|
425
|
-
}
|
|
426
|
-
catch (error) {
|
|
427
|
-
logger.error(`Unable to parse config file: ${configPath}`, error);
|
|
428
|
-
throw error;
|
|
429
|
-
}
|
|
430
|
-
const providerConfig = await configPrompt({});
|
|
431
|
-
const { provider, model, apiKey } = providerConfig;
|
|
432
|
-
if (apiKey && !isGlobal) {
|
|
433
|
-
let option = 'local';
|
|
434
|
-
if (interactive) {
|
|
435
|
-
option = await select({
|
|
436
|
-
message: 'It is not recommended to store API keys in the local config file. How would you like to proceed?',
|
|
437
|
-
choices: [
|
|
438
|
-
{ name: 'Save API key in the local config file', value: 'local' },
|
|
439
|
-
{ name: 'Save API key in the global config file', value: 'global' },
|
|
440
|
-
{ name: 'Save API key to .env file', value: 'env' },
|
|
441
|
-
],
|
|
442
|
-
});
|
|
443
|
-
}
|
|
444
|
-
switch (option) {
|
|
445
|
-
case 'local':
|
|
446
|
-
break;
|
|
447
|
-
case 'global': {
|
|
448
|
-
const globalConfig = loadConfigAtPath(globalConfigPath) ?? {};
|
|
449
|
-
set(globalConfig, ['providers', provider, 'apiKey'], apiKey);
|
|
450
|
-
writeFileSync(globalConfigPath, stringify(globalConfig));
|
|
451
|
-
logger.info(`API key saved to global config file: ${globalConfigPath}`);
|
|
452
|
-
providerConfig.apiKey = undefined;
|
|
453
|
-
break;
|
|
454
|
-
}
|
|
455
|
-
case 'env': {
|
|
456
|
-
let envFileContent = '';
|
|
457
|
-
const envExists = existsSync('.env');
|
|
458
|
-
if (envExists) {
|
|
459
|
-
envFileContent = readFileSync('.env', 'utf-8');
|
|
460
|
-
if (!envFileContent.endsWith('\n'))
|
|
461
|
-
envFileContent += '\n';
|
|
462
|
-
}
|
|
463
|
-
envFileContent += `${provider.toUpperCase()}_API_KEY=${apiKey}\n`;
|
|
464
|
-
writeFileSync('.env', envFileContent);
|
|
465
|
-
logger.info('API key saved to .env file');
|
|
466
|
-
providerConfig.apiKey = undefined;
|
|
467
|
-
break;
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
const finalConfig = {
|
|
472
|
-
...existingConfig,
|
|
473
|
-
defaultProvider: provider,
|
|
474
|
-
defaultModel: model,
|
|
475
|
-
};
|
|
476
|
-
if (!finalConfig.providers) {
|
|
477
|
-
finalConfig.providers = {};
|
|
478
|
-
}
|
|
479
|
-
if (providerConfig.apiKey) {
|
|
480
|
-
set(finalConfig, ['providers', provider, 'apiKey'], providerConfig.apiKey);
|
|
481
|
-
}
|
|
482
|
-
writeFileSync(configPath, stringify(finalConfig));
|
|
483
|
-
logger.info(`Configuration saved to ${configPath}`);
|
|
484
|
-
let shouldAnalyze = false;
|
|
485
|
-
if (!isGlobal && interactive) {
|
|
486
|
-
shouldAnalyze = await confirm({
|
|
487
|
-
message: 'Would you like to analyze the project to generate recommended configuration?',
|
|
488
|
-
default: false,
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
if (shouldAnalyze) {
|
|
492
|
-
await runWorkflow(initWorkflow, {
|
|
493
|
-
configPath,
|
|
494
|
-
}, {
|
|
495
|
-
commandName: 'init',
|
|
496
|
-
context: workflowOpts,
|
|
497
|
-
logger,
|
|
498
|
-
});
|
|
499
|
-
}
|
|
500
|
-
});
|
|
501
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|