task-o-matic 0.0.1

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.
Files changed (159) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +552 -0
  3. package/dist/cli/bin.d.ts +3 -0
  4. package/dist/cli/bin.d.ts.map +1 -0
  5. package/dist/cli/bin.js +8 -0
  6. package/dist/cli/display/common.d.ts +5 -0
  7. package/dist/cli/display/common.d.ts.map +1 -0
  8. package/dist/cli/display/common.js +44 -0
  9. package/dist/cli/display/plan.d.ts +11 -0
  10. package/dist/cli/display/plan.d.ts.map +1 -0
  11. package/dist/cli/display/plan.js +42 -0
  12. package/dist/cli/display/progress.d.ts +11 -0
  13. package/dist/cli/display/progress.d.ts.map +1 -0
  14. package/dist/cli/display/progress.js +47 -0
  15. package/dist/cli/display/task.d.ts +18 -0
  16. package/dist/cli/display/task.d.ts.map +1 -0
  17. package/dist/cli/display/task.js +250 -0
  18. package/dist/commands/config.d.ts +3 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +61 -0
  21. package/dist/commands/init.d.ts +4 -0
  22. package/dist/commands/init.d.ts.map +1 -0
  23. package/dist/commands/init.js +197 -0
  24. package/dist/commands/prd.d.ts +4 -0
  25. package/dist/commands/prd.d.ts.map +1 -0
  26. package/dist/commands/prd.js +131 -0
  27. package/dist/commands/prompt.d.ts +3 -0
  28. package/dist/commands/prompt.d.ts.map +1 -0
  29. package/dist/commands/prompt.js +192 -0
  30. package/dist/commands/tasks.d.ts +3 -0
  31. package/dist/commands/tasks.d.ts.map +1 -0
  32. package/dist/commands/tasks.js +599 -0
  33. package/dist/index.d.ts +18 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +67 -0
  36. package/dist/lib/ai-service/ai-operations.d.ts +31 -0
  37. package/dist/lib/ai-service/ai-operations.d.ts.map +1 -0
  38. package/dist/lib/ai-service/ai-operations.js +648 -0
  39. package/dist/lib/ai-service/json-parser.d.ts +9 -0
  40. package/dist/lib/ai-service/json-parser.d.ts.map +1 -0
  41. package/dist/lib/ai-service/json-parser.js +37 -0
  42. package/dist/lib/ai-service/mcp-client.d.ts +9 -0
  43. package/dist/lib/ai-service/mcp-client.d.ts.map +1 -0
  44. package/dist/lib/ai-service/mcp-client.js +48 -0
  45. package/dist/lib/ai-service/model-provider.d.ts +8 -0
  46. package/dist/lib/ai-service/model-provider.d.ts.map +1 -0
  47. package/dist/lib/ai-service/model-provider.js +71 -0
  48. package/dist/lib/ai-service/research-tools.d.ts +4 -0
  49. package/dist/lib/ai-service/research-tools.d.ts.map +1 -0
  50. package/dist/lib/ai-service/research-tools.js +8 -0
  51. package/dist/lib/ai-service/retry-handler.d.ts +8 -0
  52. package/dist/lib/ai-service/retry-handler.d.ts.map +1 -0
  53. package/dist/lib/ai-service/retry-handler.js +62 -0
  54. package/dist/lib/better-t-stack-cli.d.ts +35 -0
  55. package/dist/lib/better-t-stack-cli.d.ts.map +1 -0
  56. package/dist/lib/better-t-stack-cli.js +118 -0
  57. package/dist/lib/config.d.ts +24 -0
  58. package/dist/lib/config.d.ts.map +1 -0
  59. package/dist/lib/config.js +160 -0
  60. package/dist/lib/context-builder.d.ts +53 -0
  61. package/dist/lib/context-builder.d.ts.map +1 -0
  62. package/dist/lib/context-builder.js +294 -0
  63. package/dist/lib/executors/executor-factory.d.ts +5 -0
  64. package/dist/lib/executors/executor-factory.d.ts.map +1 -0
  65. package/dist/lib/executors/executor-factory.js +21 -0
  66. package/dist/lib/executors/opencode-executor.d.ts +6 -0
  67. package/dist/lib/executors/opencode-executor.d.ts.map +1 -0
  68. package/dist/lib/executors/opencode-executor.js +46 -0
  69. package/dist/lib/index.d.ts +89 -0
  70. package/dist/lib/index.d.ts.map +1 -0
  71. package/dist/lib/index.js +134 -0
  72. package/dist/lib/prompt-builder.d.ts +50 -0
  73. package/dist/lib/prompt-builder.d.ts.map +1 -0
  74. package/dist/lib/prompt-builder.js +171 -0
  75. package/dist/lib/prompt-registry.d.ts +22 -0
  76. package/dist/lib/prompt-registry.d.ts.map +1 -0
  77. package/dist/lib/prompt-registry.js +201 -0
  78. package/dist/lib/storage.d.ts +60 -0
  79. package/dist/lib/storage.d.ts.map +1 -0
  80. package/dist/lib/storage.js +768 -0
  81. package/dist/lib/task-execution.d.ts +3 -0
  82. package/dist/lib/task-execution.d.ts.map +1 -0
  83. package/dist/lib/task-execution.js +130 -0
  84. package/dist/lib/validation.d.ts +4 -0
  85. package/dist/lib/validation.d.ts.map +1 -0
  86. package/dist/lib/validation.js +52 -0
  87. package/dist/mcp/prompts.d.ts +3 -0
  88. package/dist/mcp/prompts.d.ts.map +1 -0
  89. package/dist/mcp/prompts.js +7 -0
  90. package/dist/mcp/resources.d.ts +3 -0
  91. package/dist/mcp/resources.d.ts.map +1 -0
  92. package/dist/mcp/resources.js +7 -0
  93. package/dist/mcp/server.d.ts +3 -0
  94. package/dist/mcp/server.d.ts.map +1 -0
  95. package/dist/mcp/server.js +25 -0
  96. package/dist/mcp/tools.d.ts +3 -0
  97. package/dist/mcp/tools.d.ts.map +1 -0
  98. package/dist/mcp/tools.js +99 -0
  99. package/dist/prompts/documentation-detection.d.ts +2 -0
  100. package/dist/prompts/documentation-detection.d.ts.map +1 -0
  101. package/dist/prompts/documentation-detection.js +24 -0
  102. package/dist/prompts/index.d.ts +7 -0
  103. package/dist/prompts/index.d.ts.map +1 -0
  104. package/dist/prompts/index.js +22 -0
  105. package/dist/prompts/prd-parsing.d.ts +3 -0
  106. package/dist/prompts/prd-parsing.d.ts.map +1 -0
  107. package/dist/prompts/prd-parsing.js +172 -0
  108. package/dist/prompts/prd-rework.d.ts +3 -0
  109. package/dist/prompts/prd-rework.d.ts.map +1 -0
  110. package/dist/prompts/prd-rework.js +81 -0
  111. package/dist/prompts/task-breakdown.d.ts +3 -0
  112. package/dist/prompts/task-breakdown.d.ts.map +1 -0
  113. package/dist/prompts/task-breakdown.js +151 -0
  114. package/dist/prompts/task-enhancement.d.ts +3 -0
  115. package/dist/prompts/task-enhancement.d.ts.map +1 -0
  116. package/dist/prompts/task-enhancement.js +140 -0
  117. package/dist/prompts/task-planning.d.ts +3 -0
  118. package/dist/prompts/task-planning.d.ts.map +1 -0
  119. package/dist/prompts/task-planning.js +66 -0
  120. package/dist/services/prd.d.ts +32 -0
  121. package/dist/services/prd.d.ts.map +1 -0
  122. package/dist/services/prd.js +191 -0
  123. package/dist/services/tasks.d.ts +67 -0
  124. package/dist/services/tasks.d.ts.map +1 -0
  125. package/dist/services/tasks.js +596 -0
  126. package/dist/test/commands.test.d.ts +2 -0
  127. package/dist/test/commands.test.d.ts.map +1 -0
  128. package/dist/test/commands.test.js +74 -0
  129. package/dist/test/storage.test.d.ts +2 -0
  130. package/dist/test/storage.test.d.ts.map +1 -0
  131. package/dist/test/storage.test.js +207 -0
  132. package/dist/types/callbacks.d.ts +27 -0
  133. package/dist/types/callbacks.d.ts.map +1 -0
  134. package/dist/types/callbacks.js +2 -0
  135. package/dist/types/index.d.ts +252 -0
  136. package/dist/types/index.d.ts.map +1 -0
  137. package/dist/types/index.js +2 -0
  138. package/dist/types/mcp.d.ts +3 -0
  139. package/dist/types/mcp.d.ts.map +1 -0
  140. package/dist/types/mcp.js +3 -0
  141. package/dist/types/options.d.ts +94 -0
  142. package/dist/types/options.d.ts.map +1 -0
  143. package/dist/types/options.js +2 -0
  144. package/dist/types/results.d.ts +90 -0
  145. package/dist/types/results.d.ts.map +1 -0
  146. package/dist/types/results.js +2 -0
  147. package/dist/utils/ai-config-builder.d.ts +14 -0
  148. package/dist/utils/ai-config-builder.d.ts.map +1 -0
  149. package/dist/utils/ai-config-builder.js +22 -0
  150. package/dist/utils/ai-service-factory.d.ts +10 -0
  151. package/dist/utils/ai-service-factory.d.ts.map +1 -0
  152. package/dist/utils/ai-service-factory.js +52 -0
  153. package/dist/utils/stack-formatter.d.ts +11 -0
  154. package/dist/utils/stack-formatter.d.ts.map +1 -0
  155. package/dist/utils/stack-formatter.js +30 -0
  156. package/dist/utils/streaming-options.d.ts +10 -0
  157. package/dist/utils/streaming-options.d.ts.map +1 -0
  158. package/dist/utils/streaming-options.js +53 -0
  159. package/package.json +82 -0
@@ -0,0 +1,90 @@
1
+ import { Task, TaskAIMetadata, DocumentationDetection } from "./index";
2
+ export interface OperationResult<T = any> {
3
+ success: boolean;
4
+ data?: T;
5
+ error?: string;
6
+ stats?: Record<string, any>;
7
+ metadata?: Record<string, any>;
8
+ }
9
+ export interface CreateTaskResult {
10
+ success: true;
11
+ task: Task;
12
+ aiMetadata?: TaskAIMetadata;
13
+ }
14
+ export interface EnhanceTaskResult {
15
+ success: true;
16
+ task: Task;
17
+ enhancedContent: string;
18
+ stats: {
19
+ originalLength: number;
20
+ enhancedLength: number;
21
+ duration: number;
22
+ };
23
+ metadata: {
24
+ aiProvider: string;
25
+ aiModel: string;
26
+ confidence: number;
27
+ };
28
+ }
29
+ export interface SplitTaskResult {
30
+ success: true;
31
+ task: Task;
32
+ subtasks: Task[];
33
+ stats: {
34
+ subtasksCreated: number;
35
+ duration: number;
36
+ };
37
+ metadata: {
38
+ aiProvider: string;
39
+ aiModel: string;
40
+ confidence?: number;
41
+ };
42
+ }
43
+ export interface PlanTaskResult {
44
+ success: true;
45
+ task: Task;
46
+ plan: string;
47
+ stats: {
48
+ duration: number;
49
+ };
50
+ metadata: {
51
+ aiProvider: string;
52
+ aiModel: string;
53
+ };
54
+ }
55
+ export interface DocumentTaskResult {
56
+ success: true;
57
+ task: Task;
58
+ analysis?: DocumentationDetection;
59
+ documentation?: any;
60
+ stats: {
61
+ duration: number;
62
+ };
63
+ }
64
+ export interface DeleteTaskResult {
65
+ success: true;
66
+ deleted: Task[];
67
+ orphanedSubtasks: Task[];
68
+ }
69
+ export interface PRDParseResult {
70
+ success: boolean;
71
+ prd: {
72
+ overview: string;
73
+ objectives: string[];
74
+ features: string[];
75
+ };
76
+ tasks: Task[];
77
+ stats: {
78
+ tasksCreated: number;
79
+ duration: number;
80
+ aiProvider: string;
81
+ aiModel: string;
82
+ };
83
+ steps: {
84
+ step: string;
85
+ status: 'completed' | 'failed';
86
+ duration: number;
87
+ details?: any;
88
+ }[];
89
+ }
90
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/types/results.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { AIConfig } from "../types";
2
+ export interface AIOptions {
3
+ aiProvider?: string;
4
+ aiModel?: string;
5
+ aiKey?: string;
6
+ aiProviderUrl?: string;
7
+ aiReasoning?: string;
8
+ }
9
+ /**
10
+ * Builds an AI configuration object from CLI options
11
+ * This eliminates the duplication of this pattern across 10+ files
12
+ */
13
+ export declare function buildAIConfig(options?: AIOptions): Partial<AIConfig>;
14
+ //# sourceMappingURL=ai-config-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-config-builder.d.ts","sourceRoot":"","sources":["../../src/utils/ai-config-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,SAAS;IACxB,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;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAkBpE"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAIConfig = buildAIConfig;
4
+ /**
5
+ * Builds an AI configuration object from CLI options
6
+ * This eliminates the duplication of this pattern across 10+ files
7
+ */
8
+ function buildAIConfig(options) {
9
+ if (!options)
10
+ return {};
11
+ return {
12
+ ...(options.aiProvider && {
13
+ provider: options.aiProvider,
14
+ }),
15
+ ...(options.aiModel && { model: options.aiModel }),
16
+ ...(options.aiKey && { apiKey: options.aiKey }),
17
+ ...(options.aiProviderUrl && { baseURL: options.aiProviderUrl }),
18
+ ...(options.aiReasoning && {
19
+ reasoning: { maxTokens: parseInt(options.aiReasoning, 10) },
20
+ }),
21
+ };
22
+ }
@@ -0,0 +1,10 @@
1
+ import { LocalStorage } from '../lib/storage';
2
+ import { ContextBuilder } from '../lib/context-builder';
3
+ import { AIOperations } from '../lib/ai-service/ai-operations';
4
+ import { ModelProvider } from '../lib/ai-service/model-provider';
5
+ export declare function getAIOperations(): AIOperations;
6
+ export declare function getModelProvider(): ModelProvider;
7
+ export declare function getStorage(): LocalStorage;
8
+ export declare function getContextBuilder(): ContextBuilder;
9
+ export declare function resetServiceInstances(): void;
10
+ //# sourceMappingURL=ai-service-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-service-factory.d.ts","sourceRoot":"","sources":["../../src/utils/ai-service-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAOjE,wBAAgB,eAAe,IAAI,YAAY,CAK9C;AAED,wBAAgB,gBAAgB,IAAI,aAAa,CAKhD;AAED,wBAAgB,UAAU,IAAI,YAAY,CAazC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAIOperations = getAIOperations;
4
+ exports.getModelProvider = getModelProvider;
5
+ exports.getStorage = getStorage;
6
+ exports.getContextBuilder = getContextBuilder;
7
+ exports.resetServiceInstances = resetServiceInstances;
8
+ const storage_1 = require("../lib/storage");
9
+ const context_builder_1 = require("../lib/context-builder");
10
+ const fs_1 = require("fs");
11
+ const config_1 = require("../lib/config");
12
+ const ai_operations_1 = require("../lib/ai-service/ai-operations");
13
+ const model_provider_1 = require("../lib/ai-service/model-provider");
14
+ let aiOperations = null;
15
+ let modelProvider = null;
16
+ let storage = null;
17
+ let contextBuilder = null;
18
+ function getAIOperations() {
19
+ if (!aiOperations) {
20
+ aiOperations = new ai_operations_1.AIOperations();
21
+ }
22
+ return aiOperations;
23
+ }
24
+ function getModelProvider() {
25
+ if (!modelProvider) {
26
+ modelProvider = new model_provider_1.ModelProvider();
27
+ }
28
+ return modelProvider;
29
+ }
30
+ function getStorage() {
31
+ if (!storage) {
32
+ // Ensure we're in a task-o-matic project before creating storage
33
+ const taskOMaticDir = config_1.configManager.getTaskOMaticDir();
34
+ if (!(0, fs_1.existsSync)(taskOMaticDir)) {
35
+ throw new Error(`Not a task-o-matic project. Run 'task-o-matic init init' first.`);
36
+ }
37
+ storage = new storage_1.LocalStorage();
38
+ }
39
+ return storage;
40
+ }
41
+ function getContextBuilder() {
42
+ if (!contextBuilder) {
43
+ contextBuilder = new context_builder_1.ContextBuilder();
44
+ }
45
+ return contextBuilder;
46
+ }
47
+ function resetServiceInstances() {
48
+ aiOperations = null;
49
+ modelProvider = null;
50
+ storage = null;
51
+ contextBuilder = null;
52
+ }
@@ -0,0 +1,11 @@
1
+ export interface StackInfo {
2
+ frontend: string;
3
+ backend: string;
4
+ database: string;
5
+ orm: string;
6
+ auth: string;
7
+ addons: string[];
8
+ }
9
+ export declare function formatStackInfo(stack: StackInfo | null | undefined): string;
10
+ export declare function formatStackForContext(stack: StackInfo | null | undefined): string;
11
+ //# sourceMappingURL=stack-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-formatter.d.ts","sourceRoot":"","sources":["../../src/utils/stack-formatter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAyB3E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAMjF"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatStackInfo = formatStackInfo;
4
+ exports.formatStackForContext = formatStackForContext;
5
+ function formatStackInfo(stack) {
6
+ if (!stack) {
7
+ return "Not detected";
8
+ }
9
+ const parts = [
10
+ `Frontend: ${stack.frontend}`,
11
+ `Backend: ${stack.backend}`
12
+ ];
13
+ if (stack.database !== 'none') {
14
+ parts.push(`Database: ${stack.database}`);
15
+ }
16
+ if (stack.orm !== 'none') {
17
+ parts.push(`ORM: ${stack.orm}`);
18
+ }
19
+ parts.push(`Auth: ${stack.auth}`);
20
+ if (stack.addons.length > 0) {
21
+ parts.push(`Addons: ${stack.addons.join(", ")}`);
22
+ }
23
+ return parts.join(", ");
24
+ }
25
+ function formatStackForContext(stack) {
26
+ if (!stack) {
27
+ return "";
28
+ }
29
+ return `Technology Stack: ${stack.frontend} + ${stack.backend} + ${stack.database}`;
30
+ }
@@ -0,0 +1,10 @@
1
+ import { StreamingOptions } from '../types';
2
+ export declare function createStreamingOptions(enabled?: boolean, operation?: string): StreamingOptions | undefined;
3
+ export declare function createStreamingOptionsWithCustomHandlers(enabled?: boolean, customHandlers?: {
4
+ onChunk?: (chunk: string) => void;
5
+ onFinish?: (result: {
6
+ finishReason?: string;
7
+ }) => void;
8
+ onError?: (error: unknown) => void;
9
+ }): StreamingOptions | undefined;
10
+ //# sourceMappingURL=streaming-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-options.d.ts","sourceRoot":"","sources":["../../src/utils/streaming-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,OAAe,EACxB,SAAS,GAAE,MAAoB,GAC9B,gBAAgB,GAAG,SAAS,CAsB9B;AAED,wBAAgB,wCAAwC,CACtD,OAAO,GAAE,OAAe,EACxB,cAAc,CAAC,EAAE;IACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,GACA,gBAAgB,GAAG,SAAS,CAqB9B"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createStreamingOptions = createStreamingOptions;
7
+ exports.createStreamingOptionsWithCustomHandlers = createStreamingOptionsWithCustomHandlers;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ function createStreamingOptions(enabled = false, operation = 'operation') {
10
+ if (!enabled) {
11
+ return undefined;
12
+ }
13
+ return {
14
+ enabled: true,
15
+ onChunk: (chunk) => {
16
+ // Write streaming output without newline for real-time effect
17
+ process.stdout.write(chunk);
18
+ },
19
+ onFinish: ({ finishReason }) => {
20
+ if (finishReason && finishReason !== 'stop' && finishReason !== 'tool-calls') {
21
+ console.log(chalk_1.default.yellow(`\n⚠️ ${operation} finished: ${finishReason}`));
22
+ }
23
+ else {
24
+ console.log(chalk_1.default.green(`\n✓ ${operation} complete`));
25
+ }
26
+ },
27
+ onError: (error) => {
28
+ console.log(chalk_1.default.red(`\n❌ ${operation} error: ${error instanceof Error ? error.message : 'Unknown error'}`));
29
+ }
30
+ };
31
+ }
32
+ function createStreamingOptionsWithCustomHandlers(enabled = false, customHandlers) {
33
+ if (!enabled) {
34
+ return undefined;
35
+ }
36
+ return {
37
+ enabled: true,
38
+ onChunk: customHandlers?.onChunk || ((chunk) => {
39
+ process.stdout.write(chunk);
40
+ }),
41
+ onFinish: customHandlers?.onFinish || (({ finishReason }) => {
42
+ if (finishReason && finishReason !== 'stop' && finishReason !== 'tool-calls') {
43
+ console.log(chalk_1.default.yellow(`\n⚠️ Operation finished: ${finishReason}`));
44
+ }
45
+ else {
46
+ console.log(chalk_1.default.green('\n✓ Operation complete'));
47
+ }
48
+ }),
49
+ onError: customHandlers?.onError || ((error) => {
50
+ console.log(chalk_1.default.red(`\n❌ Operation error: ${error instanceof Error ? error.message : 'Unknown error'}`));
51
+ })
52
+ };
53
+ }
package/package.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "name": "task-o-matic",
3
+ "version": "0.0.1",
4
+ "description": "AI-powered task management CLI",
5
+ "keywords": [
6
+ "task-management",
7
+ "ai",
8
+ "cli",
9
+ "project-management",
10
+ "automation",
11
+ "mcp",
12
+ "anthropic",
13
+ "openai"
14
+ ],
15
+ "author": "",
16
+ "license": "MIT",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/DimitriGilbert/task-o-matic.git"
20
+ },
21
+ "main": "./dist/lib/index.js",
22
+ "types": "./dist/lib/index.d.ts",
23
+ "bin": {
24
+ "task-o-matic": "dist/cli/bin.js",
25
+ "task-o-matic-mcp": "dist/mcp/server.js"
26
+ },
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/lib/index.d.ts",
30
+ "require": "./dist/lib/index.js",
31
+ "default": "./dist/lib/index.js"
32
+ },
33
+ "./types": {
34
+ "types": "./dist/types/index.d.ts",
35
+ "require": "./dist/types/index.js",
36
+ "default": "./dist/types/index.js"
37
+ }
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "README.md",
42
+ "LICENSE"
43
+ ],
44
+ "scripts": {
45
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
46
+ "build": "rm -rf dist tsconfig.tsbuildinfo && node_modules/.bin/tsc",
47
+ "build:watch": "tsc --watch",
48
+ "dev": "tsx src/cli/bin.ts",
49
+ "dev:mcp": "tsx src/mcp/server.ts",
50
+ "start": "node dist/cli/bin.js",
51
+ "check-types": "tsc --noEmit --skipLibCheck",
52
+ "test": "mocha -r tsx/cjs src/test/**/*.test.ts",
53
+ "prepare": "npm run build",
54
+ "prepublishOnly": "bun run build && bun test"
55
+ },
56
+ "dependencies": {
57
+ "@ai-sdk/anthropic": "^2.0.44",
58
+ "@ai-sdk/google": "^2.0.31",
59
+ "@ai-sdk/mcp": "^0.0.8",
60
+ "@ai-sdk/openai": "^2.0.65",
61
+ "@ai-sdk/openai-compatible": "^1.0.27",
62
+ "@modelcontextprotocol/sdk": "^1.19.1",
63
+ "@openrouter/ai-sdk-provider": "^1.2.0",
64
+ "ai": "^5.0.92",
65
+ "axios": "^1.7.9",
66
+ "chalk": "^5.4.1",
67
+ "commander": "^14.0.2",
68
+ "create-better-t-stack": "^3.0.10",
69
+ "dotenv": "^16.4.7",
70
+ "inquirer": "^12.11.0",
71
+ "zod": "^3.25.76"
72
+ },
73
+ "devDependencies": {
74
+ "@types/inquirer": "^9.0.7",
75
+ "@types/mocha": "^10.0.10",
76
+ "@types/node": "^20",
77
+ "mocha": "^11.7.4",
78
+ "ts-node": "^10.9.2",
79
+ "tsx": "^4.19.2",
80
+ "typescript": "^5"
81
+ }
82
+ }