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.
- package/LICENSE +21 -0
- package/README.md +552 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +8 -0
- package/dist/cli/display/common.d.ts +5 -0
- package/dist/cli/display/common.d.ts.map +1 -0
- package/dist/cli/display/common.js +44 -0
- package/dist/cli/display/plan.d.ts +11 -0
- package/dist/cli/display/plan.d.ts.map +1 -0
- package/dist/cli/display/plan.js +42 -0
- package/dist/cli/display/progress.d.ts +11 -0
- package/dist/cli/display/progress.d.ts.map +1 -0
- package/dist/cli/display/progress.js +47 -0
- package/dist/cli/display/task.d.ts +18 -0
- package/dist/cli/display/task.d.ts.map +1 -0
- package/dist/cli/display/task.js +250 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +61 -0
- package/dist/commands/init.d.ts +4 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +197 -0
- package/dist/commands/prd.d.ts +4 -0
- package/dist/commands/prd.d.ts.map +1 -0
- package/dist/commands/prd.js +131 -0
- package/dist/commands/prompt.d.ts +3 -0
- package/dist/commands/prompt.d.ts.map +1 -0
- package/dist/commands/prompt.js +192 -0
- package/dist/commands/tasks.d.ts +3 -0
- package/dist/commands/tasks.d.ts.map +1 -0
- package/dist/commands/tasks.js +599 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/lib/ai-service/ai-operations.d.ts +31 -0
- package/dist/lib/ai-service/ai-operations.d.ts.map +1 -0
- package/dist/lib/ai-service/ai-operations.js +648 -0
- package/dist/lib/ai-service/json-parser.d.ts +9 -0
- package/dist/lib/ai-service/json-parser.d.ts.map +1 -0
- package/dist/lib/ai-service/json-parser.js +37 -0
- package/dist/lib/ai-service/mcp-client.d.ts +9 -0
- package/dist/lib/ai-service/mcp-client.d.ts.map +1 -0
- package/dist/lib/ai-service/mcp-client.js +48 -0
- package/dist/lib/ai-service/model-provider.d.ts +8 -0
- package/dist/lib/ai-service/model-provider.d.ts.map +1 -0
- package/dist/lib/ai-service/model-provider.js +71 -0
- package/dist/lib/ai-service/research-tools.d.ts +4 -0
- package/dist/lib/ai-service/research-tools.d.ts.map +1 -0
- package/dist/lib/ai-service/research-tools.js +8 -0
- package/dist/lib/ai-service/retry-handler.d.ts +8 -0
- package/dist/lib/ai-service/retry-handler.d.ts.map +1 -0
- package/dist/lib/ai-service/retry-handler.js +62 -0
- package/dist/lib/better-t-stack-cli.d.ts +35 -0
- package/dist/lib/better-t-stack-cli.d.ts.map +1 -0
- package/dist/lib/better-t-stack-cli.js +118 -0
- package/dist/lib/config.d.ts +24 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +160 -0
- package/dist/lib/context-builder.d.ts +53 -0
- package/dist/lib/context-builder.d.ts.map +1 -0
- package/dist/lib/context-builder.js +294 -0
- package/dist/lib/executors/executor-factory.d.ts +5 -0
- package/dist/lib/executors/executor-factory.d.ts.map +1 -0
- package/dist/lib/executors/executor-factory.js +21 -0
- package/dist/lib/executors/opencode-executor.d.ts +6 -0
- package/dist/lib/executors/opencode-executor.d.ts.map +1 -0
- package/dist/lib/executors/opencode-executor.js +46 -0
- package/dist/lib/index.d.ts +89 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +134 -0
- package/dist/lib/prompt-builder.d.ts +50 -0
- package/dist/lib/prompt-builder.d.ts.map +1 -0
- package/dist/lib/prompt-builder.js +171 -0
- package/dist/lib/prompt-registry.d.ts +22 -0
- package/dist/lib/prompt-registry.d.ts.map +1 -0
- package/dist/lib/prompt-registry.js +201 -0
- package/dist/lib/storage.d.ts +60 -0
- package/dist/lib/storage.d.ts.map +1 -0
- package/dist/lib/storage.js +768 -0
- package/dist/lib/task-execution.d.ts +3 -0
- package/dist/lib/task-execution.d.ts.map +1 -0
- package/dist/lib/task-execution.js +130 -0
- package/dist/lib/validation.d.ts +4 -0
- package/dist/lib/validation.d.ts.map +1 -0
- package/dist/lib/validation.js +52 -0
- package/dist/mcp/prompts.d.ts +3 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +7 -0
- package/dist/mcp/resources.d.ts +3 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +7 -0
- package/dist/mcp/server.d.ts +3 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +25 -0
- package/dist/mcp/tools.d.ts +3 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +99 -0
- package/dist/prompts/documentation-detection.d.ts +2 -0
- package/dist/prompts/documentation-detection.d.ts.map +1 -0
- package/dist/prompts/documentation-detection.js +24 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +22 -0
- package/dist/prompts/prd-parsing.d.ts +3 -0
- package/dist/prompts/prd-parsing.d.ts.map +1 -0
- package/dist/prompts/prd-parsing.js +172 -0
- package/dist/prompts/prd-rework.d.ts +3 -0
- package/dist/prompts/prd-rework.d.ts.map +1 -0
- package/dist/prompts/prd-rework.js +81 -0
- package/dist/prompts/task-breakdown.d.ts +3 -0
- package/dist/prompts/task-breakdown.d.ts.map +1 -0
- package/dist/prompts/task-breakdown.js +151 -0
- package/dist/prompts/task-enhancement.d.ts +3 -0
- package/dist/prompts/task-enhancement.d.ts.map +1 -0
- package/dist/prompts/task-enhancement.js +140 -0
- package/dist/prompts/task-planning.d.ts +3 -0
- package/dist/prompts/task-planning.d.ts.map +1 -0
- package/dist/prompts/task-planning.js +66 -0
- package/dist/services/prd.d.ts +32 -0
- package/dist/services/prd.d.ts.map +1 -0
- package/dist/services/prd.js +191 -0
- package/dist/services/tasks.d.ts +67 -0
- package/dist/services/tasks.d.ts.map +1 -0
- package/dist/services/tasks.js +596 -0
- package/dist/test/commands.test.d.ts +2 -0
- package/dist/test/commands.test.d.ts.map +1 -0
- package/dist/test/commands.test.js +74 -0
- package/dist/test/storage.test.d.ts +2 -0
- package/dist/test/storage.test.d.ts.map +1 -0
- package/dist/test/storage.test.js +207 -0
- package/dist/types/callbacks.d.ts +27 -0
- package/dist/types/callbacks.d.ts.map +1 -0
- package/dist/types/callbacks.js +2 -0
- package/dist/types/index.d.ts +252 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/mcp.d.ts +3 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +3 -0
- package/dist/types/options.d.ts +94 -0
- package/dist/types/options.d.ts.map +1 -0
- package/dist/types/options.js +2 -0
- package/dist/types/results.d.ts +90 -0
- package/dist/types/results.d.ts.map +1 -0
- package/dist/types/results.js +2 -0
- package/dist/utils/ai-config-builder.d.ts +14 -0
- package/dist/utils/ai-config-builder.d.ts.map +1 -0
- package/dist/utils/ai-config-builder.js +22 -0
- package/dist/utils/ai-service-factory.d.ts +10 -0
- package/dist/utils/ai-service-factory.d.ts.map +1 -0
- package/dist/utils/ai-service-factory.js +52 -0
- package/dist/utils/stack-formatter.d.ts +11 -0
- package/dist/utils/stack-formatter.d.ts.map +1 -0
- package/dist/utils/stack-formatter.js +30 -0
- package/dist/utils/streaming-options.d.ts +10 -0
- package/dist/utils/streaming-options.d.ts.map +1 -0
- package/dist/utils/streaming-options.js +53 -0
- 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,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
|
+
}
|