geeto 0.1.0-beta.0
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/LICENSE +21 -0
- package/README.md +152 -0
- package/lib/api/copilot-adapter.d.ts +11 -0
- package/lib/api/copilot-adapter.d.ts.map +1 -0
- package/lib/api/copilot-adapter.js +41 -0
- package/lib/api/copilot-adapter.js.map +1 -0
- package/lib/api/copilot-sdk.d.ts +48 -0
- package/lib/api/copilot-sdk.d.ts.map +1 -0
- package/lib/api/copilot-sdk.js +451 -0
- package/lib/api/copilot-sdk.js.map +1 -0
- package/lib/api/copilot.d.ts +21 -0
- package/lib/api/copilot.d.ts.map +1 -0
- package/lib/api/copilot.js +87 -0
- package/lib/api/copilot.js.map +1 -0
- package/lib/api/gemini-sdk.d.ts +24 -0
- package/lib/api/gemini-sdk.d.ts.map +1 -0
- package/lib/api/gemini-sdk.js +245 -0
- package/lib/api/gemini-sdk.js.map +1 -0
- package/lib/api/gemini.d.ts +21 -0
- package/lib/api/gemini.d.ts.map +1 -0
- package/lib/api/gemini.js +87 -0
- package/lib/api/gemini.js.map +1 -0
- package/lib/api/openrouter-sdk.d.ts +58 -0
- package/lib/api/openrouter-sdk.d.ts.map +1 -0
- package/lib/api/openrouter-sdk.js +341 -0
- package/lib/api/openrouter-sdk.js.map +1 -0
- package/lib/api/openrouter.d.ts +17 -0
- package/lib/api/openrouter.d.ts.map +1 -0
- package/lib/api/openrouter.js +111 -0
- package/lib/api/openrouter.js.map +1 -0
- package/lib/api/trello.d.ts +17 -0
- package/lib/api/trello.d.ts.map +1 -0
- package/lib/api/trello.js +72 -0
- package/lib/api/trello.js.map +1 -0
- package/lib/cli/input.d.ts +39 -0
- package/lib/cli/input.d.ts.map +1 -0
- package/lib/cli/input.js +119 -0
- package/lib/cli/input.js.map +1 -0
- package/lib/cli/menu.d.ts +9 -0
- package/lib/cli/menu.d.ts.map +1 -0
- package/lib/cli/menu.js +201 -0
- package/lib/cli/menu.js.map +1 -0
- package/lib/core/constants.d.ts +22 -0
- package/lib/core/constants.d.ts.map +1 -0
- package/lib/core/constants.js +24 -0
- package/lib/core/constants.js.map +1 -0
- package/lib/core/copilot-setup.d.ts +13 -0
- package/lib/core/copilot-setup.d.ts.map +1 -0
- package/lib/core/copilot-setup.js +447 -0
- package/lib/core/copilot-setup.js.map +1 -0
- package/lib/core/gemini-setup.d.ts +8 -0
- package/lib/core/gemini-setup.d.ts.map +1 -0
- package/lib/core/gemini-setup.js +84 -0
- package/lib/core/gemini-setup.js.map +1 -0
- package/lib/core/menu-constants.d.ts +24 -0
- package/lib/core/menu-constants.d.ts.map +1 -0
- package/lib/core/menu-constants.js +22 -0
- package/lib/core/menu-constants.js.map +1 -0
- package/lib/core/openrouter-setup.d.ts +8 -0
- package/lib/core/openrouter-setup.d.ts.map +1 -0
- package/lib/core/openrouter-setup.js +73 -0
- package/lib/core/openrouter-setup.js.map +1 -0
- package/lib/core/setup.d.ts +21 -0
- package/lib/core/setup.d.ts.map +1 -0
- package/lib/core/setup.js +88 -0
- package/lib/core/setup.js.map +1 -0
- package/lib/core/trello-setup.d.ts +8 -0
- package/lib/core/trello-setup.d.ts.map +1 -0
- package/lib/core/trello-setup.js +107 -0
- package/lib/core/trello-setup.js.map +1 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +250 -0
- package/lib/index.js.map +1 -0
- package/lib/types/index.d.ts +78 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +2 -0
- package/lib/types/index.js.map +1 -0
- package/lib/utils/branch-naming.d.ts +11 -0
- package/lib/utils/branch-naming.d.ts.map +1 -0
- package/lib/utils/branch-naming.js +396 -0
- package/lib/utils/branch-naming.js.map +1 -0
- package/lib/utils/colors.d.ts +14 -0
- package/lib/utils/colors.d.ts.map +1 -0
- package/lib/utils/colors.js +14 -0
- package/lib/utils/colors.js.map +1 -0
- package/lib/utils/commit-helpers.d.ts +53 -0
- package/lib/utils/commit-helpers.d.ts.map +1 -0
- package/lib/utils/commit-helpers.js +177 -0
- package/lib/utils/commit-helpers.js.map +1 -0
- package/lib/utils/config.d.ts +87 -0
- package/lib/utils/config.d.ts.map +1 -0
- package/lib/utils/config.js +326 -0
- package/lib/utils/config.js.map +1 -0
- package/lib/utils/display.d.ts +27 -0
- package/lib/utils/display.d.ts.map +1 -0
- package/lib/utils/display.js +116 -0
- package/lib/utils/display.js.map +1 -0
- package/lib/utils/error-helpers.d.ts +27 -0
- package/lib/utils/error-helpers.d.ts.map +1 -0
- package/lib/utils/error-helpers.js +102 -0
- package/lib/utils/error-helpers.js.map +1 -0
- package/lib/utils/exec.d.ts +18 -0
- package/lib/utils/exec.d.ts.map +1 -0
- package/lib/utils/exec.js +96 -0
- package/lib/utils/exec.js.map +1 -0
- package/lib/utils/git-ai-errors.d.ts +10 -0
- package/lib/utils/git-ai-errors.d.ts.map +1 -0
- package/lib/utils/git-ai-errors.js +71 -0
- package/lib/utils/git-ai-errors.js.map +1 -0
- package/lib/utils/git-ai.d.ts +26 -0
- package/lib/utils/git-ai.d.ts.map +1 -0
- package/lib/utils/git-ai.js +603 -0
- package/lib/utils/git-ai.js.map +1 -0
- package/lib/utils/git-commands.d.ts +21 -0
- package/lib/utils/git-commands.d.ts.map +1 -0
- package/lib/utils/git-commands.js +58 -0
- package/lib/utils/git-commands.js.map +1 -0
- package/lib/utils/git-errors.d.ts +76 -0
- package/lib/utils/git-errors.d.ts.map +1 -0
- package/lib/utils/git-errors.js +565 -0
- package/lib/utils/git-errors.js.map +1 -0
- package/lib/utils/git.d.ts +61 -0
- package/lib/utils/git.d.ts.map +1 -0
- package/lib/utils/git.js +245 -0
- package/lib/utils/git.js.map +1 -0
- package/lib/utils/logging.d.ts +25 -0
- package/lib/utils/logging.d.ts.map +1 -0
- package/lib/utils/logging.js +71 -0
- package/lib/utils/logging.js.map +1 -0
- package/lib/utils/menu-builders.d.ts +47 -0
- package/lib/utils/menu-builders.d.ts.map +1 -0
- package/lib/utils/menu-builders.js +34 -0
- package/lib/utils/menu-builders.js.map +1 -0
- package/lib/utils/platform.d.ts +13 -0
- package/lib/utils/platform.d.ts.map +1 -0
- package/lib/utils/platform.js +32 -0
- package/lib/utils/platform.js.map +1 -0
- package/lib/utils/spinner-wrapper.d.ts +16 -0
- package/lib/utils/spinner-wrapper.d.ts.map +1 -0
- package/lib/utils/spinner-wrapper.js +56 -0
- package/lib/utils/spinner-wrapper.js.map +1 -0
- package/lib/utils/state.d.ts +22 -0
- package/lib/utils/state.d.ts.map +1 -0
- package/lib/utils/state.js +75 -0
- package/lib/utils/state.js.map +1 -0
- package/lib/utils/time.d.ts +4 -0
- package/lib/utils/time.d.ts.map +1 -0
- package/lib/utils/time.js +29 -0
- package/lib/utils/time.js.map +1 -0
- package/lib/utils/type-guards.d.ts +10 -0
- package/lib/utils/type-guards.d.ts.map +1 -0
- package/lib/utils/type-guards.js +29 -0
- package/lib/utils/type-guards.js.map +1 -0
- package/lib/workflows/ai-provider.d.ts +13 -0
- package/lib/workflows/ai-provider.d.ts.map +1 -0
- package/lib/workflows/ai-provider.js +55 -0
- package/lib/workflows/ai-provider.js.map +1 -0
- package/lib/workflows/author.d.ts +4 -0
- package/lib/workflows/author.d.ts.map +1 -0
- package/lib/workflows/author.js +80 -0
- package/lib/workflows/author.js.map +1 -0
- package/lib/workflows/branch-helpers.d.ts +9 -0
- package/lib/workflows/branch-helpers.d.ts.map +1 -0
- package/lib/workflows/branch-helpers.js +406 -0
- package/lib/workflows/branch-helpers.js.map +1 -0
- package/lib/workflows/branch-utils.d.ts +9 -0
- package/lib/workflows/branch-utils.d.ts.map +1 -0
- package/lib/workflows/branch-utils.js +61 -0
- package/lib/workflows/branch-utils.js.map +1 -0
- package/lib/workflows/branch.d.ts +12 -0
- package/lib/workflows/branch.d.ts.map +1 -0
- package/lib/workflows/branch.js +555 -0
- package/lib/workflows/branch.js.map +1 -0
- package/lib/workflows/cleanup.d.ts +10 -0
- package/lib/workflows/cleanup.d.ts.map +1 -0
- package/lib/workflows/cleanup.js +287 -0
- package/lib/workflows/cleanup.js.map +1 -0
- package/lib/workflows/commit.d.ts +10 -0
- package/lib/workflows/commit.d.ts.map +1 -0
- package/lib/workflows/commit.js +771 -0
- package/lib/workflows/commit.js.map +1 -0
- package/lib/workflows/main-steps.d.ts +12 -0
- package/lib/workflows/main-steps.d.ts.map +1 -0
- package/lib/workflows/main-steps.js +407 -0
- package/lib/workflows/main-steps.js.map +1 -0
- package/lib/workflows/main.d.ts +8 -0
- package/lib/workflows/main.d.ts.map +1 -0
- package/lib/workflows/main.js +720 -0
- package/lib/workflows/main.js.map +1 -0
- package/lib/workflows/security-gate.d.ts +8 -0
- package/lib/workflows/security-gate.d.ts.map +1 -0
- package/lib/workflows/security-gate.js +447 -0
- package/lib/workflows/security-gate.js.map +1 -0
- package/lib/workflows/settings.d.ts +15 -0
- package/lib/workflows/settings.d.ts.map +1 -0
- package/lib/workflows/settings.js +438 -0
- package/lib/workflows/settings.js.map +1 -0
- package/lib/workflows/trello-menu.d.ts +16 -0
- package/lib/workflows/trello-menu.d.ts.map +1 -0
- package/lib/workflows/trello-menu.js +361 -0
- package/lib/workflows/trello-menu.js.map +1 -0
- package/package.json +112 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings workflow - handles all settings menu interactions
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, unlinkSync } from 'node:fs';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { confirm } from '../cli/input.js';
|
|
7
|
+
import { select } from '../cli/menu.js';
|
|
8
|
+
import { getBranchStrategyConfig, hasGeminiConfig, hasTrelloConfig, saveBranchStrategyConfig, } from '../utils/config.js';
|
|
9
|
+
import { log } from '../utils/logging.js';
|
|
10
|
+
const configDirPath = () => path.join(process.cwd(), '.geeto');
|
|
11
|
+
const configFilePath = (name) => path.join(configDirPath(), `${name}.toml`);
|
|
12
|
+
const removeConfigFile = (name) => {
|
|
13
|
+
const p = configFilePath(name);
|
|
14
|
+
if (existsSync(p)) {
|
|
15
|
+
unlinkSync(p);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return false;
|
|
19
|
+
};
|
|
20
|
+
const runInteractiveSetup = async (name) => {
|
|
21
|
+
if (name === 'trello') {
|
|
22
|
+
const { setupTrelloConfigInteractive } = await import('../core/trello-setup.js');
|
|
23
|
+
const trelloSetupSuccess = setupTrelloConfigInteractive();
|
|
24
|
+
if (trelloSetupSuccess) {
|
|
25
|
+
log.success('Trello integration configured!');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
log.warn('Trello setup failed or cancelled.');
|
|
29
|
+
}
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (name === 'gemini') {
|
|
33
|
+
const { setupGeminiConfigInteractive } = await import('../core/gemini-setup.js');
|
|
34
|
+
const geminiSetupSuccess = setupGeminiConfigInteractive();
|
|
35
|
+
if (geminiSetupSuccess) {
|
|
36
|
+
log.success('Gemini AI integration configured!');
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
log.warn('Gemini setup failed or cancelled.');
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const { setupOpenRouterConfigInteractive } = await import('../core/openrouter-setup.js');
|
|
44
|
+
const openRouterSetupSuccess = setupOpenRouterConfigInteractive();
|
|
45
|
+
if (openRouterSetupSuccess) {
|
|
46
|
+
log.success('OpenRouter integration configured!');
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
log.warn('OpenRouter setup failed or cancelled.');
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const handleSeparatorSetting = async () => {
|
|
53
|
+
const separatorChoice = await select('Choose branch name separator:', [
|
|
54
|
+
{ label: 'Hyphen (kebab-case): my-branch-name', value: 'hyphen' },
|
|
55
|
+
{ label: 'Underscore (snake_case): my_branch_name', value: 'underscore' },
|
|
56
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
57
|
+
]);
|
|
58
|
+
if (separatorChoice === 'back') {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
const separator = separatorChoice === 'hyphen' ? '-' : '_';
|
|
62
|
+
const config = getBranchStrategyConfig();
|
|
63
|
+
if (config) {
|
|
64
|
+
config.separator = separator;
|
|
65
|
+
saveBranchStrategyConfig(config);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
saveBranchStrategyConfig({ separator });
|
|
69
|
+
}
|
|
70
|
+
log.success(`Branch separator set to: ${separator === '-' ? 'hyphen (-)' : 'underscore (_)'} `);
|
|
71
|
+
// Explicitly return false to indicate "do not go back" to caller
|
|
72
|
+
return false;
|
|
73
|
+
};
|
|
74
|
+
// Sync OpenRouter models (fetch & persist detailed + simple lists)
|
|
75
|
+
const syncOpenRouterModels = async () => {
|
|
76
|
+
try {
|
|
77
|
+
// Dynamically import SDK wrapper
|
|
78
|
+
let sdkModule = null;
|
|
79
|
+
try {
|
|
80
|
+
sdkModule = await import('../api/openrouter-sdk.js');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
log.warn('OpenRouter SDK unavailable; cannot get live sample models from SDK.');
|
|
84
|
+
// Fall back to existing persisted-file behavior
|
|
85
|
+
}
|
|
86
|
+
const sdk = sdkModule;
|
|
87
|
+
const fs = await import('node:fs');
|
|
88
|
+
const outDir = path.join(process.cwd(), '.geeto');
|
|
89
|
+
await fs.promises.mkdir(outDir, { recursive: true });
|
|
90
|
+
if (sdk && typeof sdk.getAvailableModelChoices === 'function') {
|
|
91
|
+
try {
|
|
92
|
+
const detailed = (await sdk.getAvailableModelChoices());
|
|
93
|
+
if (Array.isArray(detailed) && detailed.length > 0) {
|
|
94
|
+
// Persist detailed sync file
|
|
95
|
+
const syncFile = path.join(outDir, 'openrouter-model-live-sample.json');
|
|
96
|
+
await fs.promises.writeFile(syncFile, JSON.stringify(detailed, null, 2));
|
|
97
|
+
const filtered = detailed.filter((d) => d.value === 'microsoft/wizardlm-2-8x22b' ||
|
|
98
|
+
d.value === 'allenai/olmo-3-32b-think' ||
|
|
99
|
+
d.value === 'allenai/molmo-2-8b' ||
|
|
100
|
+
d.value === 'meta-llama/llama-3.2-3b-instruct' ||
|
|
101
|
+
d.value === 'anthropic/claude-sonnet-4.5' ||
|
|
102
|
+
d.value === 'anthropic/claude-sonnet-4' ||
|
|
103
|
+
d.value === 'anthropic/claude-haiku-4.5' ||
|
|
104
|
+
d.value === 'openai/gpt-5' ||
|
|
105
|
+
d.value === 'openai/gpt-5.2-codex');
|
|
106
|
+
// Renumber auto-numbered labels sequentially
|
|
107
|
+
const hasAutoNumber = filtered.some((d) => /^\s*\d+\./.test(String(d.label ?? d.name ?? d.value)));
|
|
108
|
+
const simple = filtered.map((d, idx) => {
|
|
109
|
+
const rawLabel = String(d.label ?? d.name ?? d.value);
|
|
110
|
+
const label = hasAutoNumber
|
|
111
|
+
? rawLabel.replace(/^\s*\d+\.\s*/, `${idx + 1}. `)
|
|
112
|
+
: rawLabel;
|
|
113
|
+
return {
|
|
114
|
+
label,
|
|
115
|
+
value: d.value,
|
|
116
|
+
};
|
|
117
|
+
});
|
|
118
|
+
const modelFile = path.join(outDir, 'openrouter-model.json');
|
|
119
|
+
await fs.promises.writeFile(modelFile, JSON.stringify(simple, null, 2));
|
|
120
|
+
log.info(`Synced ${detailed.length} OpenRouter model(s) to .geeto/openrouter-model.json ` +
|
|
121
|
+
'(and _live-sample.json).');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
127
|
+
log.warn(`Failed to fetch OpenRouter models from SDK: ${msg}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// SDK unavailable or no models; fall back to persisted file/guidance
|
|
131
|
+
const modelFilePath = path.join(outDir, 'openrouter-model.json');
|
|
132
|
+
if (fs.existsSync(modelFilePath)) {
|
|
133
|
+
try {
|
|
134
|
+
const raw = fs.readFileSync(modelFilePath, 'utf8');
|
|
135
|
+
const parsed = JSON.parse(raw);
|
|
136
|
+
if (Array.isArray(parsed) && parsed.length > 0) {
|
|
137
|
+
log.info(`Found ${parsed.length} OpenRouter model(s) in .geeto/openrouter-model.json:`);
|
|
138
|
+
for (const m of parsed) {
|
|
139
|
+
log.info(` - ${m.label ?? m.value ?? JSON.stringify(m)}`);
|
|
140
|
+
}
|
|
141
|
+
log.info('No new sync performed; using existing persisted OpenRouter model configuration.');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
147
|
+
log.warn(`Could not read OpenRouter model config: ${msg}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
log.info('No OpenRouter model configuration found and no SDK sync possible.');
|
|
151
|
+
log.info('Run the sync again after installing/configuring the OpenRouter SDK to fetch models.');
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
155
|
+
log.warn(`OpenRouter model sync failed: ${msg}`);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
const handleModelResetSetting = async () => {
|
|
159
|
+
const resetChoice = await select('Sync model configurations (non-destructive):', [
|
|
160
|
+
{ label: 'Sync only OpenRouter models', value: 'openrouter' },
|
|
161
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
162
|
+
]);
|
|
163
|
+
if (resetChoice === 'back') {
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
try {
|
|
167
|
+
if (resetChoice === 'openrouter') {
|
|
168
|
+
log.info('⏳ Syncing OpenRouter models...');
|
|
169
|
+
await syncOpenRouterModels();
|
|
170
|
+
}
|
|
171
|
+
log.success('Model sync completed!');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
log.error(`Model sync failed: ${error}`);
|
|
175
|
+
}
|
|
176
|
+
// Explicitly return false when leaving handler without going back
|
|
177
|
+
return false;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Change provider/model (interactive)
|
|
181
|
+
*/
|
|
182
|
+
const handleChangeModelSetting = async () => {
|
|
183
|
+
const { chooseModelForProvider } = await import('../utils/git-ai.js');
|
|
184
|
+
const provOptions = [
|
|
185
|
+
{ label: 'Gemini', value: 'gemini' },
|
|
186
|
+
{ label: 'GitHub Copilot', value: 'copilot' },
|
|
187
|
+
{ label: 'OpenRouter', value: 'openrouter' },
|
|
188
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
189
|
+
];
|
|
190
|
+
const chosenProv = await select('Choose provider to change model for:', provOptions);
|
|
191
|
+
if (chosenProv === 'back') {
|
|
192
|
+
// User explicitly asked to go back to settings menu
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
const picked = await chooseModelForProvider(chosenProv, undefined, 'Back to settings menu');
|
|
196
|
+
if (picked === 'back') {
|
|
197
|
+
log.info('Model change cancelled.');
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
if (picked === undefined) {
|
|
201
|
+
log.warn('Provider setup not available; cannot change model.');
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
// Persist choice into checkpoint state so it is used next run
|
|
205
|
+
const stateModule = await import('../utils/state.js');
|
|
206
|
+
const { loadState, saveState } = stateModule;
|
|
207
|
+
const existing = loadState();
|
|
208
|
+
const now = new Date().toISOString();
|
|
209
|
+
const base = existing ?? {
|
|
210
|
+
step: 0,
|
|
211
|
+
workingBranch: '',
|
|
212
|
+
targetBranch: '',
|
|
213
|
+
currentBranch: '',
|
|
214
|
+
timestamp: now,
|
|
215
|
+
aiProvider: chosenProv,
|
|
216
|
+
copilotModel: undefined,
|
|
217
|
+
openrouterModel: undefined,
|
|
218
|
+
geminiModel: undefined,
|
|
219
|
+
};
|
|
220
|
+
base.aiProvider = chosenProv;
|
|
221
|
+
switch (chosenProv) {
|
|
222
|
+
case 'copilot': {
|
|
223
|
+
base.copilotModel = picked;
|
|
224
|
+
base.openrouterModel = undefined;
|
|
225
|
+
base.geminiModel = undefined;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case 'openrouter': {
|
|
229
|
+
base.openrouterModel = picked;
|
|
230
|
+
base.copilotModel = undefined;
|
|
231
|
+
base.geminiModel = undefined;
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
case 'gemini': {
|
|
235
|
+
base.geminiModel = picked;
|
|
236
|
+
base.copilotModel = undefined;
|
|
237
|
+
base.openrouterModel = undefined;
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
default: {
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
base.timestamp = now;
|
|
245
|
+
saveState(base);
|
|
246
|
+
const providerLabel = chosenProv === 'copilot' ? 'Copilot' : chosenProv === 'gemini' ? 'Gemini' : 'OpenRouter';
|
|
247
|
+
log.success(`Set ${providerLabel} model to: ${picked}`);
|
|
248
|
+
// Done; do not go back to settings menu
|
|
249
|
+
return false;
|
|
250
|
+
};
|
|
251
|
+
const handleGeminiSetting = async () => {
|
|
252
|
+
const hasConfig = hasGeminiConfig();
|
|
253
|
+
if (!hasConfig) {
|
|
254
|
+
const spinner = log.spinner();
|
|
255
|
+
spinner.start('Setting up Gemini AI integration...');
|
|
256
|
+
await runInteractiveSetup('gemini');
|
|
257
|
+
spinner.stop();
|
|
258
|
+
return false;
|
|
259
|
+
}
|
|
260
|
+
const action = await select('Gemini AI integration is already configured. What would you like to do?', [
|
|
261
|
+
{ label: 'Reconfigure (replace existing config)', value: 'reconfigure' },
|
|
262
|
+
{ label: 'Remove configuration', value: 'remove' },
|
|
263
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
264
|
+
]);
|
|
265
|
+
if (action === 'reconfigure') {
|
|
266
|
+
log.info('Reconfiguring Gemini AI integration...');
|
|
267
|
+
if (removeConfigFile('gemini')) {
|
|
268
|
+
log.info('Cleared existing Gemini configuration');
|
|
269
|
+
}
|
|
270
|
+
const { setupGeminiConfigInteractive } = await import('../core/gemini-setup.js');
|
|
271
|
+
const setupSuccess = setupGeminiConfigInteractive();
|
|
272
|
+
if (setupSuccess) {
|
|
273
|
+
log.success('Gemini AI integration reconfigured!');
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
log.warn('Gemini setup failed or cancelled.');
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else if (action === 'remove') {
|
|
280
|
+
const confirmRemove = confirm('Are you sure you want to remove Gemini configuration?');
|
|
281
|
+
if (confirmRemove) {
|
|
282
|
+
if (removeConfigFile('gemini')) {
|
|
283
|
+
log.success('Gemini configuration removed!');
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
log.warn('Failed to remove Gemini configuration.');
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (action === 'back') {
|
|
291
|
+
return true;
|
|
292
|
+
}
|
|
293
|
+
// Completed without returning to settings menu
|
|
294
|
+
return false;
|
|
295
|
+
};
|
|
296
|
+
const handleTrelloSetting = async () => {
|
|
297
|
+
const hasConfig = hasTrelloConfig();
|
|
298
|
+
if (!hasConfig) {
|
|
299
|
+
await runInteractiveSetup('trello');
|
|
300
|
+
return false;
|
|
301
|
+
}
|
|
302
|
+
const action = await select('Trello integration is already configured. What would you like to do?', [
|
|
303
|
+
{ label: 'Reconfigure (replace existing config)', value: 'reconfigure' },
|
|
304
|
+
{ label: 'Remove configuration', value: 'remove' },
|
|
305
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
306
|
+
]);
|
|
307
|
+
if (action === 'reconfigure') {
|
|
308
|
+
log.info('Reconfiguring Trello integration...');
|
|
309
|
+
if (removeConfigFile('trello')) {
|
|
310
|
+
log.info('Cleared existing Trello configuration');
|
|
311
|
+
}
|
|
312
|
+
const { setupTrelloConfigInteractive } = await import('../core/trello-setup.js');
|
|
313
|
+
const setupSuccess = setupTrelloConfigInteractive();
|
|
314
|
+
if (setupSuccess) {
|
|
315
|
+
log.success('Trello integration reconfigured!');
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
log.warn('Trello setup failed or cancelled.');
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
else if (action === 'remove') {
|
|
322
|
+
const confirmRemove = confirm('Are you sure you want to remove Trello configuration?');
|
|
323
|
+
if (!confirmRemove) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
if (removeConfigFile('trello')) {
|
|
327
|
+
log.success('Trello configuration removed!');
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
log.info('No Trello configuration found to remove');
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
if (action === 'back') {
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
// Completed without returning to settings menu
|
|
337
|
+
return false;
|
|
338
|
+
};
|
|
339
|
+
const handleOpenRouterSetting = async () => {
|
|
340
|
+
const { hasOpenRouterConfig } = await import('../utils/config.js');
|
|
341
|
+
const hasConfig = hasOpenRouterConfig();
|
|
342
|
+
if (!hasConfig) {
|
|
343
|
+
await runInteractiveSetup('openrouter');
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
346
|
+
const action = await select('OpenRouter integration is already configured. What would you like to do?', [
|
|
347
|
+
{ label: 'Reconfigure (replace existing config)', value: 'reconfigure' },
|
|
348
|
+
{ label: 'Remove configuration', value: 'remove' },
|
|
349
|
+
{ label: 'Back to settings menu', value: 'back' },
|
|
350
|
+
]);
|
|
351
|
+
if (action === 'reconfigure') {
|
|
352
|
+
log.info('Reconfiguring OpenRouter integration...');
|
|
353
|
+
if (removeConfigFile('openrouter')) {
|
|
354
|
+
log.info('Cleared existing OpenRouter configuration');
|
|
355
|
+
}
|
|
356
|
+
await runInteractiveSetup('openrouter');
|
|
357
|
+
log.success('OpenRouter integration reconfigured!');
|
|
358
|
+
}
|
|
359
|
+
else if (action === 'remove') {
|
|
360
|
+
const confirmRemove = confirm('Are you sure you want to remove OpenRouter configuration?');
|
|
361
|
+
if (!confirmRemove) {
|
|
362
|
+
return false;
|
|
363
|
+
}
|
|
364
|
+
if (removeConfigFile('openrouter')) {
|
|
365
|
+
log.success('OpenRouter configuration removed!');
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
log.info('No OpenRouter configuration found to remove');
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (action === 'back') {
|
|
372
|
+
return true;
|
|
373
|
+
}
|
|
374
|
+
// Completed without returning to settings menu
|
|
375
|
+
return false;
|
|
376
|
+
};
|
|
377
|
+
export const showSettingsMenu = async () => {
|
|
378
|
+
while (true) {
|
|
379
|
+
log.info('Settings Menu');
|
|
380
|
+
const settingChoice = await select('Choose a setting to configure:', [
|
|
381
|
+
{ label: 'Branch separator (hyphen/underscore)', value: 'separator' },
|
|
382
|
+
{ label: 'Sync model configurations (fetch live sample models)', value: 'models' },
|
|
383
|
+
{ label: 'Change AI provider / model', value: 'change-model' },
|
|
384
|
+
{ label: 'Gemini AI setup', value: 'gemini' },
|
|
385
|
+
{ label: 'OpenRouter AI setup', value: 'openrouter' },
|
|
386
|
+
{ label: 'Trello integration setup', value: 'trello' },
|
|
387
|
+
{ label: 'Back to main menu', value: 'back' },
|
|
388
|
+
]);
|
|
389
|
+
if (settingChoice === 'back') {
|
|
390
|
+
break;
|
|
391
|
+
}
|
|
392
|
+
if (settingChoice === 'separator') {
|
|
393
|
+
const back = await handleSeparatorSetting();
|
|
394
|
+
if (back) {
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
if (settingChoice === 'models') {
|
|
399
|
+
const back = await handleModelResetSetting();
|
|
400
|
+
if (back) {
|
|
401
|
+
continue;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
if (settingChoice === 'change-model') {
|
|
405
|
+
const back = await handleChangeModelSetting();
|
|
406
|
+
if (back) {
|
|
407
|
+
// user chose to go back from within handler — return to settings menu
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
if (settingChoice === 'gemini') {
|
|
412
|
+
const back = await handleGeminiSetting();
|
|
413
|
+
if (back) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (settingChoice === 'trello') {
|
|
418
|
+
const back = await handleTrelloSetting();
|
|
419
|
+
if (back) {
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
if (settingChoice === 'openrouter') {
|
|
424
|
+
const back = await handleOpenRouterSetting();
|
|
425
|
+
if (back) {
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
console.log('');
|
|
430
|
+
// Ask if user wants to continue with settings
|
|
431
|
+
const continueSettings = confirm('Configure another setting?');
|
|
432
|
+
if (!continueSettings) {
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
export { handleSeparatorSetting, handleModelResetSetting, handleChangeModelSetting, handleGeminiSetting, handleOpenRouterSetting, handleTrelloSetting, };
|
|
438
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/workflows/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trello workflow menu and utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Display Trello lists with formatted output
|
|
6
|
+
*/
|
|
7
|
+
export declare const handleGetTrelloLists: () => Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Generate tasks.instructions.md from selected Trello list
|
|
10
|
+
*/
|
|
11
|
+
export declare const handleGenerateTaskInstructions: () => Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Show Trello menu
|
|
14
|
+
*/
|
|
15
|
+
export declare const showTrelloMenu: () => Promise<void>;
|
|
16
|
+
//# sourceMappingURL=trello-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trello-menu.d.ts","sourceRoot":"","sources":["../../src/workflows/trello-menu.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,IAAI,CAqCzD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAoSnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,IAAI,CA4CnD,CAAA"}
|