task-o-matic 0.0.6 → 0.0.7

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.
@@ -93,27 +93,126 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
93
93
  return;
94
94
  }
95
95
  const projectName = await (0, workflow_prompts_1.textInputPrompt)("What is the name of your project?", "my-app");
96
+ // IMMEDIATE DIRECTORY CREATION AND SWITCH
97
+ const projectDir = (0, path_1.resolve)(process.cwd(), projectName);
98
+ if (!(0, fs_1.existsSync)(projectDir)) {
99
+ (0, fs_1.mkdirSync)(projectDir, { recursive: true });
100
+ console.log(chalk_1.default.green(`\n✓ Created directory: ${projectName}`));
101
+ }
102
+ else {
103
+ console.log(chalk_1.default.yellow(`\n⚠ Directory ${projectName} already exists`));
104
+ }
105
+ console.log(chalk_1.default.cyan(` 📂 Switching to project directory: ${projectDir}\n`));
106
+ process.chdir(projectDir);
107
+ config_1.configManager.setWorkingDirectory(projectDir);
108
+ state.projectDir = projectDir;
109
+ // Initialize task-o-matic in the NEW directory
110
+ console.log(chalk_1.default.cyan(" Initializing task-o-matic...\n"));
111
+ const newTaskOMaticDir = (0, path_1.join)(projectDir, ".task-o-matic");
112
+ if (!(0, fs_1.existsSync)(newTaskOMaticDir)) {
113
+ (0, fs_1.mkdirSync)(newTaskOMaticDir, { recursive: true });
114
+ ["tasks", "prd", "logs"].forEach((dir) => {
115
+ (0, fs_1.mkdirSync)((0, path_1.join)(newTaskOMaticDir, dir), { recursive: true });
116
+ });
117
+ }
118
+ // AI Configuration Step - ALWAYS ask for this first
119
+ console.log(chalk_1.default.blue.bold("\n🤖 Step 1.1: AI Configuration\n"));
120
+ const aiProvider = await (0, workflow_prompts_1.selectPrompt)("Select AI Provider:", [
121
+ { name: "OpenRouter", value: "openrouter" },
122
+ { name: "Anthropic", value: "anthropic" },
123
+ { name: "OpenAI", value: "openai" },
124
+ { name: "Custom (e.g. local LLM)", value: "custom" },
125
+ ]);
126
+ let aiProviderUrl;
127
+ if (aiProvider === "custom") {
128
+ aiProviderUrl = await (0, workflow_prompts_1.textInputPrompt)("Enter Custom Provider URL:", "http://localhost:11434/v1");
129
+ }
130
+ const defaultModel = aiProvider === "openrouter"
131
+ ? "anthropic/claude-3.5-sonnet"
132
+ : aiProvider === "anthropic"
133
+ ? "claude-3-5-sonnet-20240620"
134
+ : aiProvider === "openai"
135
+ ? "gpt-4o"
136
+ : "llama3";
137
+ const aiModel = await (0, workflow_prompts_1.textInputPrompt)("Enter AI Model:", defaultModel);
138
+ // Check/Ask for API Key
139
+ const providerKeyName = aiProvider === "openai"
140
+ ? "OPENAI_API_KEY"
141
+ : aiProvider === "anthropic"
142
+ ? "ANTHROPIC_API_KEY"
143
+ : aiProvider === "openrouter"
144
+ ? "OPENROUTER_API_KEY"
145
+ : "AI_API_KEY";
146
+ // Check if key exists in current env
147
+ let apiKey = process.env[providerKeyName];
148
+ if (!apiKey) {
149
+ console.log(chalk_1.default.yellow(`\n⚠️ No API key found for ${aiProvider}`));
150
+ apiKey = await (0, workflow_prompts_1.textInputPrompt)(`Enter your ${aiProvider} API Key:`);
151
+ }
152
+ // Save AI Config to .env immediately in the new project dir
153
+ const envPath = (0, path_1.join)(projectDir, ".env");
154
+ let envContent = "";
155
+ if ((0, fs_1.existsSync)(envPath)) {
156
+ envContent = (0, fs_1.readFileSync)(envPath, "utf-8");
157
+ }
158
+ if (!envContent.includes("AI_PROVIDER=")) {
159
+ envContent += `AI_PROVIDER=${aiProvider}\n`;
160
+ }
161
+ if (!envContent.includes("AI_MODEL=")) {
162
+ envContent += `AI_MODEL=${aiModel}\n`;
163
+ }
164
+ if (aiProviderUrl && !envContent.includes("AI_PROVIDER_URL=")) {
165
+ envContent += `AI_PROVIDER_URL=${aiProviderUrl}\n`;
166
+ }
167
+ if (!envContent.includes(`${providerKeyName}=`)) {
168
+ envContent += `${providerKeyName}=${apiKey}\n`;
169
+ }
170
+ (0, fs_1.writeFileSync)(envPath, envContent);
171
+ // Update process.env for immediate use
172
+ process.env.AI_PROVIDER = aiProvider;
173
+ process.env.AI_MODEL = aiModel;
174
+ process.env[providerKeyName] = apiKey;
175
+ if (aiProviderUrl) {
176
+ process.env.AI_PROVIDER_URL = aiProviderUrl;
177
+ }
178
+ // Update ConfigManager
179
+ config_1.configManager.setAIConfig({
180
+ provider: aiProvider,
181
+ model: aiModel,
182
+ apiKey: apiKey,
183
+ baseURL: aiProviderUrl,
184
+ });
185
+ console.log(chalk_1.default.green("✓ AI Configuration saved"));
186
+ // Stack Configuration Step
187
+ console.log(chalk_1.default.blue.bold("\n📦 Step 1.2: Stack Configuration\n"));
96
188
  // Choose initialization method
97
- let initMethod = await (0, workflow_prompts_1.selectPrompt)("How would you like to configure your project?", [
189
+ let initMethod = await (0, workflow_prompts_1.selectPrompt)("How would you like to configure your project stack?", [
98
190
  { name: "Quick start (recommended defaults)", value: "quick" },
99
191
  { name: "Custom configuration", value: "custom" },
100
192
  { name: "AI-assisted (describe your project)", value: "ai" },
101
193
  ]);
102
194
  let config;
103
195
  if (initMethod === "ai") {
104
- console.log(chalk_1.default.cyan("\n🤖 AI-Assisted Configuration\n"));
196
+ console.log(chalk_1.default.cyan("\n🤖 AI-Assisted Stack Configuration\n"));
105
197
  const description = await (0, workflow_prompts_1.textInputPrompt)("Describe your project (e.g., 'A SaaS app for team collaboration with real-time features'):");
106
198
  console.log(chalk_1.default.gray("\n Analyzing your requirements...\n"));
107
199
  config = await workflow_ai_assistant_1.workflowAIAssistant.assistInitConfig({
108
200
  userDescription: description,
109
- aiOptions,
201
+ aiOptions: {
202
+ aiProvider,
203
+ aiModel,
204
+ aiKey: apiKey,
205
+ aiProviderUrl,
206
+ },
110
207
  streamingOptions,
111
208
  });
112
- // Override AI's project name with user's choice if they provided one (though we just asked for it, so we should use it)
209
+ // Override AI's project name with user's choice
113
210
  config.projectName = projectName;
211
+ // Override AI config with what we just set
212
+ config.aiProvider = aiProvider;
213
+ config.aiModel = aiModel;
114
214
  console.log(chalk_1.default.green("\n✓ AI Recommendations:"));
115
215
  console.log(chalk_1.default.gray(` Project: ${config.projectName}`));
116
- console.log(chalk_1.default.gray(` AI Provider: ${config.aiProvider}`));
117
216
  console.log(chalk_1.default.gray(` Frontend: ${config.frontend || "none"}`));
118
217
  console.log(chalk_1.default.gray(` Backend: ${config.backend || "none"}`));
119
218
  console.log(chalk_1.default.gray(` Database: ${config.database || "none"}`));
@@ -130,8 +229,8 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
130
229
  if (initMethod === "quick") {
131
230
  config = {
132
231
  projectName: projectName,
133
- aiProvider: "openrouter",
134
- aiModel: "anthropic/claude-3.5-sonnet",
232
+ aiProvider: aiProvider,
233
+ aiModel: aiModel,
135
234
  frontend: "next",
136
235
  backend: "hono",
137
236
  database: "sqlite",
@@ -142,13 +241,8 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
142
241
  else if (initMethod === "custom") {
143
242
  config = {
144
243
  projectName: projectName,
145
- aiProvider: await (0, workflow_prompts_1.selectPrompt)("AI Provider:", [
146
- "openrouter",
147
- "anthropic",
148
- "openai",
149
- "custom",
150
- ]),
151
- aiModel: await (0, workflow_prompts_1.textInputPrompt)("AI Model:", "anthropic/claude-3.5-sonnet"),
244
+ aiProvider: aiProvider,
245
+ aiModel: aiModel,
152
246
  };
153
247
  const shouldBootstrap = await (0, workflow_prompts_1.confirmPrompt)("Bootstrap with Better-T-Stack?", true);
154
248
  if (shouldBootstrap) {
@@ -177,15 +271,15 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
177
271
  }
178
272
  }
179
273
  // Bootstrap Logic
180
- let projectDir = process.cwd();
181
- let didBootstrap = false;
182
274
  if (config.frontend || config.backend) {
183
275
  const shouldBootstrap = await (0, workflow_prompts_1.confirmPrompt)("Bootstrap project now?", true);
184
276
  if (shouldBootstrap) {
185
277
  console.log(chalk_1.default.cyan("\n Bootstrapping with Better-T-Stack...\n"));
186
278
  try {
279
+ // We are already in the project directory.
280
+ // We pass "." as the project name so Better-T-Stack scaffolds in the current directory.
187
281
  const result = await (0, better_t_stack_cli_1.runBetterTStackCLI)({
188
- projectName: config.projectName,
282
+ projectName: ".", // Force scaffolding in current dir
189
283
  frontend: config.frontend || "next",
190
284
  backend: config.backend || "hono",
191
285
  database: config.database || "sqlite",
@@ -199,14 +293,20 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
199
293
  }, process.cwd());
200
294
  if (result.success) {
201
295
  console.log(chalk_1.default.green(`\n✓ ${result.message}\n`));
202
- didBootstrap = true;
203
- // Update project directory if a new directory was created
204
- if (result.projectPath) {
205
- projectDir = (0, path_1.resolve)(process.cwd(), result.projectPath);
206
- console.log(chalk_1.default.cyan(` 📂 Switching to project directory: ${projectDir}\n`));
207
- process.chdir(projectDir);
208
- config_1.configManager.setWorkingDirectory(projectDir);
209
- state.projectDir = projectDir;
296
+ // Fix up the configuration files
297
+ // Because we passed ".", the config file is named ".-bts-config.json" and contains projectName: "."
298
+ const dotConfigPath = (0, path_1.join)(newTaskOMaticDir, ".-bts-config.json");
299
+ const realConfigPath = (0, path_1.join)(newTaskOMaticDir, `${projectName}-bts-config.json`);
300
+ const stackConfigPath = (0, path_1.join)(newTaskOMaticDir, "stack.json");
301
+ if ((0, fs_1.existsSync)(dotConfigPath)) {
302
+ const configContent = JSON.parse((0, fs_1.readFileSync)(dotConfigPath, "utf-8"));
303
+ configContent.projectName = projectName; // Fix the project name
304
+ const newContent = JSON.stringify(configContent, null, 2);
305
+ (0, fs_1.writeFileSync)(realConfigPath, newContent);
306
+ (0, fs_1.writeFileSync)(stackConfigPath, newContent);
307
+ // Remove the temporary dot config
308
+ const { unlinkSync } = require("fs");
309
+ unlinkSync(dotConfigPath);
210
310
  }
211
311
  }
212
312
  else {
@@ -219,73 +319,15 @@ async function stepInitialize(state, aiOptions, streamingOptions) {
219
319
  }
220
320
  }
221
321
  }
222
- // Initialize task-o-matic in the correct directory (projectDir)
223
- console.log(chalk_1.default.cyan("\n Initializing task-o-matic...\n"));
224
- // Re-check task-o-matic dir in the new location
225
- const newTaskOMaticDir = (0, path_1.join)(projectDir, ".task-o-matic");
226
- if (!(0, fs_1.existsSync)(newTaskOMaticDir)) {
227
- (0, fs_1.mkdirSync)(newTaskOMaticDir, { recursive: true });
228
- ["tasks", "prd", "logs"].forEach((dir) => {
229
- (0, fs_1.mkdirSync)((0, path_1.join)(newTaskOMaticDir, dir), { recursive: true });
230
- });
231
- }
232
- // Handle .env configuration
233
- const envPath = (0, path_1.join)(projectDir, ".env");
234
- let envContent = "";
235
- if ((0, fs_1.existsSync)(envPath)) {
236
- envContent = (0, fs_1.readFileSync)(envPath, "utf-8");
237
- }
238
- // Check if we need to ask for API key
239
- const providerKeyName = config.aiProvider === "openai"
240
- ? "OPENAI_API_KEY"
241
- : config.aiProvider === "anthropic"
242
- ? "ANTHROPIC_API_KEY"
243
- : config.aiProvider === "openrouter"
244
- ? "OPENROUTER_API_KEY"
245
- : "AI_API_KEY";
246
- // Check if key exists in current env OR in the target .env file
247
- const hasKeyInEnv = process.env[providerKeyName] || envContent.includes(providerKeyName);
248
- if (!hasKeyInEnv) {
249
- console.log(chalk_1.default.yellow(`\n⚠️ No API key found for ${config.aiProvider}`));
250
- const apiKey = await (0, workflow_prompts_1.textInputPrompt)(`Enter your ${config.aiProvider} API Key:`);
251
- // Prepare .env content
252
- let newEnvContent = envContent;
253
- if (newEnvContent && !newEnvContent.endsWith("\n")) {
254
- newEnvContent += "\n";
255
- }
256
- if (!newEnvContent.includes("AI_PROVIDER=")) {
257
- newEnvContent += `AI_PROVIDER=${config.aiProvider}\n`;
258
- }
259
- if (!newEnvContent.includes("AI_MODEL=")) {
260
- newEnvContent += `AI_MODEL=${config.aiModel}\n`;
261
- }
262
- if (!newEnvContent.includes(`${providerKeyName}=`)) {
263
- newEnvContent += `${providerKeyName}=${apiKey}\n`;
264
- }
265
- (0, fs_1.writeFileSync)(envPath, newEnvContent);
266
- console.log(chalk_1.default.green(`✓ Saved configuration to ${envPath}`));
267
- // Update process.env for immediate use in this session
268
- process.env[providerKeyName] = apiKey;
269
- process.env.AI_PROVIDER = config.aiProvider;
270
- process.env.AI_MODEL = config.aiModel;
271
- }
272
322
  // Save configuration
273
- config_1.configManager.setConfig({
274
- ai: {
275
- provider: config.aiProvider, // Cast to satisfy AIProvider type
276
- model: config.aiModel,
277
- maxTokens: 32768,
278
- temperature: 0.5,
279
- apiKey: process.env[providerKeyName], // Ensure key is in config if needed
280
- },
281
- });
282
323
  config_1.configManager.save();
283
324
  console.log(chalk_1.default.green("✓ Project initialized"));
284
325
  state.initialized = true;
285
326
  state.projectName = config.projectName;
286
327
  state.aiConfig = {
287
- provider: config.aiProvider,
288
- model: config.aiModel,
328
+ provider: aiProvider,
329
+ model: aiModel,
330
+ key: apiKey,
289
331
  };
290
332
  state.currentStep = "define-prd";
291
333
  }
@@ -474,18 +516,33 @@ async function stepSplitTasks(state, aiOptions, streamingOptions) {
474
516
  console.log(chalk_1.default.gray(" No tasks selected"));
475
517
  return;
476
518
  }
519
+ let globalSplitMethod = "interactive";
520
+ let globalCustomInstructions;
521
+ if (tasksToSplit.length > 1) {
522
+ globalSplitMethod = await (0, workflow_prompts_1.selectPrompt)("How would you like to split these tasks?", [
523
+ { name: "Interactive (ask for each task)", value: "interactive" },
524
+ { name: "Standard AI split for ALL", value: "standard" },
525
+ { name: "Same custom instructions for ALL", value: "custom" },
526
+ ]);
527
+ if (globalSplitMethod === "custom") {
528
+ globalCustomInstructions = await (0, workflow_prompts_1.textInputPrompt)("Custom instructions for ALL tasks (e.g., 'Break into 2-4 hour chunks'):", "");
529
+ }
530
+ }
477
531
  for (const taskId of tasksToSplit) {
478
532
  const task = state.tasks.find((t) => t.id === taskId);
479
533
  if (!task)
480
534
  continue;
481
535
  console.log(chalk_1.default.cyan(`\n Splitting: ${task.title}\n`));
482
- const splitMethod = await (0, workflow_prompts_1.selectPrompt)("Split method:", [
483
- { name: "Standard AI split", value: "standard" },
484
- { name: "Custom instructions", value: "custom" },
485
- ]);
486
- let customInstructions;
487
- if (splitMethod === "custom") {
488
- customInstructions = await (0, workflow_prompts_1.textInputPrompt)("Custom instructions (e.g., 'Break into 2-4 hour chunks'):", "");
536
+ let splitMethod = globalSplitMethod;
537
+ let customInstructions = globalCustomInstructions;
538
+ if (globalSplitMethod === "interactive") {
539
+ splitMethod = await (0, workflow_prompts_1.selectPrompt)("Split method:", [
540
+ { name: "Standard AI split", value: "standard" },
541
+ { name: "Custom instructions", value: "custom" },
542
+ ]);
543
+ if (splitMethod === "custom") {
544
+ customInstructions = await (0, workflow_prompts_1.textInputPrompt)("Custom instructions (e.g., 'Break into 2-4 hour chunks'):", "");
545
+ }
489
546
  }
490
547
  try {
491
548
  const result = await tasks_1.taskService.splitTask(taskId, aiOptions, undefined, // promptOverride
@@ -120,6 +120,7 @@ export interface InitConfigChoice {
120
120
  projectName: string;
121
121
  aiProvider: string;
122
122
  aiModel: string;
123
+ aiProviderUrl?: string;
123
124
  frontend?: string;
124
125
  backend?: string;
125
126
  database?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;CAC9C;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC3C;AAGD,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,WAAW,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAGD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;CAC9C;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAGD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CAC3C;AAGD,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAChB,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,WAAW,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,GAAG;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,CAAC,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,CAAC,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "task-o-matic",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "AI-powered task management CLI",
5
5
  "keywords": [
6
6
  "task-management",