@e0ipso/ai-task-manager 1.2.1 → 1.4.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/README.md +74 -9
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -78
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +1 -33
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -53
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -144
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -348
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/templates/ai-task-manager/{TASK_MANAGER_INFO.md → config/TASK_MANAGER.md} +1 -1
- package/templates/ai-task-manager/config/hooks/POST_TASK_GENERATION_ALL.md +96 -0
- package/templates/ai-task-manager/config/scripts/check-task-dependencies.sh +185 -0
- package/templates/ai-task-manager/config/templates/PLAN_TEMPLATE.md +93 -0
- package/templates/ai-task-manager/config/templates/TASK_TEMPLATE.md +36 -0
- package/templates/{commands → assistant/commands}/tasks/create-plan.md +3 -97
- package/templates/{commands → assistant/commands}/tasks/execute-blueprint.md +17 -7
- package/templates/assistant/commands/tasks/execute-task.md +319 -0
- package/templates/{commands → assistant/commands}/tasks/generate-tasks.md +54 -35
- /package/templates/ai-task-manager/{VALIDATION_GATES.md → config/hooks/POST_PHASE.md} +0 -0
package/README.md
CHANGED
|
@@ -3,11 +3,64 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@e0ipso/ai-task-manager)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
## 🔥 **Use Your Existing AI Subscription**
|
|
7
|
+
|
|
8
|
+
**Unlike Aider, Taskmaster, and Cursor**, AI Task Manager works **within** your existing AI subscription interfaces (Claude Pro/Max, Gemini, etc.). This is NOT another AI agent that requires API keys - it creates slash commands that run inside your AI tools you already pay for.
|
|
9
|
+
|
|
10
|
+
### 🏗️ **How This Actually Works**
|
|
11
|
+
|
|
12
|
+
This tool creates **custom slash commands** (like `/tasks:create-plan`, `/tasks:generate-tasks`) that integrate directly into:
|
|
13
|
+
- **Claude Code**: Works with your Claude Pro/Max subscription via [claude.ai/code](https://claude.ai/code)
|
|
14
|
+
- **Gemini CLI**: Uses your existing Gemini subscription
|
|
15
|
+
- **Open Code**: Leverages your preferred open-source setup
|
|
16
|
+
|
|
17
|
+
### 💰 **Billing Model Comparison**
|
|
18
|
+
|
|
19
|
+
| Tool | Additional API Costs | Total for Subscription Users |
|
|
20
|
+
|------|---------------------|------------------------------|
|
|
21
|
+
| **AI Task Manager** | **$0** | **$0** (uses existing subscription) |
|
|
22
|
+
| **Plandex Cloud** | Included credits | *$45/month* |
|
|
23
|
+
| **Plandex (BYOK)** | Unpredictable (API usage) | *Unpredictable costs* |
|
|
24
|
+
| **Claude Task Master** | Unpredictable (API usage) | *Unpredictable costs* |
|
|
25
|
+
| **Conductor Tasks** | Unpredictable (API usage) | *Unpredictable costs* |
|
|
26
|
+
| **Shrimp Task Manager** | Unpredictable (API usage) | *Unpredictable costs* |
|
|
27
|
+
|
|
28
|
+
<details>
|
|
29
|
+
<summary>📋 More Details</summary>
|
|
30
|
+
|
|
31
|
+
| Tool | Stars | Type | Key Features | Documentation |
|
|
32
|
+
|------|-------|------|--------------|---------------|
|
|
33
|
+
| **AI Task Manager** | New | Task Management System | ✅ Plans→Tasks→Execution workflow<br>✅ Native slash commands<br>✅ No API keys needed | This README |
|
|
34
|
+
| **[Plandex](https://github.com/plandex-ai/plandex)** | 14k+ | AI Coding Agent | ✅ Handles 2M token context<br>✅ Multi-file editing<br>⚠️ Terminal-based (not in IDE) | [Docs](https://docs.plandex.ai/) |
|
|
35
|
+
| **[Claude Task Master](https://github.com/eyaltoledano/claude-task-master)** | 4.2k+ | Task Management | ✅ PRD→Tasks workflow<br>✅ MCP integration<br>⚠️ Requires API keys | [Tutorial](https://github.com/eyaltoledano/claude-task-master/blob/main/docs/tutorial.md) |
|
|
36
|
+
| **[Conductor Tasks](https://github.com/hridaya423/conductor-tasks)** | 38 | Visual Task Manager | ✅ Kanban boards<br>✅ Dependency trees<br>⚠️ Requires API keys | [GitHub](https://github.com/hridaya423/conductor-tasks) |
|
|
37
|
+
| **[Shrimp Task Manager](https://github.com/cjo4m06/mcp-shrimp-task-manager)** | 70+ | Chain-of-Thought Tasks | ✅ Chain-of-thought focus<br>✅ Persistent memory<br>⚠️ Requires API keys | [Docs](https://github.com/cjo4m06/mcp-shrimp-task-manager/tree/main/docs) |
|
|
38
|
+
|
|
39
|
+
</details>
|
|
40
|
+
|
|
41
|
+
### ⚡ **Predictable Costs**
|
|
42
|
+
|
|
43
|
+
Because this works within your existing AI interface:
|
|
44
|
+
- **No surprise API bills** - you already know what your AI subscription costs
|
|
45
|
+
- **No rate limiting issues** - uses your subscription's limits
|
|
46
|
+
- **No API key management** - just type slash commands
|
|
47
|
+
- **Full model access** - get the latest models as soon as they're available in your subscription
|
|
48
|
+
|
|
49
|
+
AI-powered task management that creates structured workflows within your existing AI subscriptions. Supports Claude Code, Gemini CLI, and Open Code through custom slash commands.
|
|
50
|
+
|
|
51
|
+
### 🎯 Key Differentiators
|
|
52
|
+
|
|
53
|
+
**1. Zero Additional Costs**: AI Task Manager is the **only tool** that works within your existing AI subscriptions (Claude Pro/Max, Gemini, etc.) without any API fees or additional subscriptions.
|
|
54
|
+
|
|
55
|
+
**2. Native Integration**: Unlike terminal-based tools (Plandex) or MCP servers requiring complex setup, AI Task Manager creates simple slash commands that work directly in your AI interface (claude.ai/code, Gemini CLI, etc.).
|
|
56
|
+
|
|
57
|
+
**3. Complete Workflow**: Full planning → task generation → execution workflow, matching enterprise tools like Claude Task Master but without the API key requirement.
|
|
58
|
+
|
|
59
|
+
**4. Predictable Costs**: No surprise API bills. You already know what your AI subscription costs - there's nothing extra to pay.
|
|
7
60
|
|
|
8
61
|
## ✨ Features
|
|
9
62
|
|
|
10
|
-
- 🤝 **Multi-Assistant Support**: Configure support for Claude, and
|
|
63
|
+
- 🤝 **Multi-Assistant Support**: Configure support for Claude, Gemini, and Open Code
|
|
11
64
|
- 📋 **Template System**: Built-in templates for different project types (basic, development, research)
|
|
12
65
|
|
|
13
66
|
## 💰 Intelligent Token Usage
|
|
@@ -41,6 +94,7 @@ AI Task Manager supports multiple coding assistants. You **must** specify which
|
|
|
41
94
|
|
|
42
95
|
- 🎭 **Claude**: Anthropic's Claude AI assistant
|
|
43
96
|
- 💎 **Gemini**: Google's Gemini AI assistant
|
|
97
|
+
- 📝 **Open Code**: Open source code assistant
|
|
44
98
|
|
|
45
99
|
The `--destination-directory` flag allows you to specify an alternative directory for the workspace. By default, the workspace is initialized in the current working directory.
|
|
46
100
|
|
|
@@ -51,8 +105,13 @@ npx @e0ipso/ai-task-manager init --assistants claude
|
|
|
51
105
|
# Gemini only
|
|
52
106
|
npx @e0ipso/ai-task-manager init --assistants gemini
|
|
53
107
|
|
|
54
|
-
#
|
|
108
|
+
# Open Code only
|
|
109
|
+
npx @e0ipso/ai-task-manager init --assistants opencode
|
|
110
|
+
|
|
111
|
+
# Multiple assistants
|
|
55
112
|
npx @e0ipso/ai-task-manager init --assistants claude,gemini
|
|
113
|
+
npx @e0ipso/ai-task-manager init --assistants claude,opencode
|
|
114
|
+
npx @e0ipso/ai-task-manager init --assistants claude,gemini,opencode
|
|
56
115
|
```
|
|
57
116
|
|
|
58
117
|
If the script detects that any of the folders it needs to create already exist it merge the folder structures, but it will overwrite the files in them.
|
|
@@ -64,22 +123,28 @@ When you initialize with assistant selection, the following directory structure
|
|
|
64
123
|
```
|
|
65
124
|
project-root/
|
|
66
125
|
├── .ai/
|
|
67
|
-
│ └── task-manager/ #
|
|
126
|
+
│ └── task-manager/ # Shared configuration files
|
|
68
127
|
│ ├── plans
|
|
69
|
-
│ ├──
|
|
70
|
-
│ └──
|
|
71
|
-
├── .claude/
|
|
128
|
+
│ ├── TASK_MANAGER.md # General information to operate the task manager
|
|
129
|
+
│ └── POST_PHASE.md # Validation gates for phase completion
|
|
130
|
+
├── .claude/ # Claude files (if selected)
|
|
72
131
|
│ └── commands/ # Custom slash commands for Claude
|
|
73
132
|
│ └── tasks/
|
|
74
133
|
│ ├── create-plan.md
|
|
75
134
|
│ ├── execute-blueprint.md
|
|
76
135
|
│ └── generate-tasks.md
|
|
77
|
-
├── .gemini/
|
|
136
|
+
├── .gemini/ # Gemini files (if selected)
|
|
78
137
|
│ └── commands/ # Custom slash commands for Gemini
|
|
79
138
|
│ └── tasks/
|
|
80
139
|
│ ├── create-plan.toml
|
|
81
140
|
│ ├── execute-blueprint.toml
|
|
82
141
|
│ └── generate-tasks.toml
|
|
142
|
+
├── .opencode/ # Open Code files (if selected)
|
|
143
|
+
│ └── commands/ # Custom slash commands for Open Code
|
|
144
|
+
│ └── tasks/
|
|
145
|
+
│ ├── create-plan.md
|
|
146
|
+
│ ├── execute-blueprint.md
|
|
147
|
+
│ └── generate-tasks.md
|
|
83
148
|
└── project files...
|
|
84
149
|
```
|
|
85
150
|
|
|
@@ -87,7 +152,7 @@ project-root/
|
|
|
87
152
|
|
|
88
153
|
### 📋 One-time Setup
|
|
89
154
|
|
|
90
|
-
Review and tweak the `.ai/task-manager/
|
|
155
|
+
Review and tweak the `.ai/task-manager/TASK_MANAGER.md` and `.ai/task-manager/config/hooks/POST_PHASE.md`. These files are yours to edit and should reflect your project's tech stack and goals.
|
|
91
156
|
|
|
92
157
|
### 🔄 Day-to-day Workflow
|
|
93
158
|
|
package/dist/cli.js
CHANGED
|
@@ -48,7 +48,7 @@ program.name('ai-task-manager').version('0.1.0').description('AI-powered task ma
|
|
|
48
48
|
program
|
|
49
49
|
.command('init')
|
|
50
50
|
.description('Initialize a new AI task management project')
|
|
51
|
-
.requiredOption('--assistants <value>', 'Comma-separated list of assistants to configure (claude,gemini)')
|
|
51
|
+
.requiredOption('--assistants <value>', 'Comma-separated list of assistants to configure (claude,gemini,opencode)')
|
|
52
52
|
.option('--destination-directory <path>', 'Directory to create project structure in (default: current directory)')
|
|
53
53
|
.action(async (options) => {
|
|
54
54
|
try {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,mCAA+B;AAE/B,iDAAmC;AAEnC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;AAEpG,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,cAAc,CACb,sBAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,mCAA+B;AAE/B,iDAAmC;AAEnC,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qCAAqC,CAAC,CAAC;AAEpG,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,cAAc,CACb,sBAAsB,EACtB,0EAA0E,CAC3E;KACA,MAAM,CACL,gCAAgC,EAChC,uEAAuE,CACxE;KACA,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,uDAAuD;QACvD,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAE1B,2BAA2B;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAA,YAAI,EAAC,OAAO,CAAC,CAAC;QAEnC,6CAA6C;QAC7C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAChB,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,2CAA2C;AAC3C,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE;IAC/D,qCAAqC;IACrC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,sCAAsC;AACtC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;IACvC,MAAM,MAAM,CAAC,KAAK,CAAC,oBAAoB,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,+BAA+B;AAC/B,OAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,sCAAsC;AACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,OAAO,CAAC,UAAU,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAwChE;;;;;;;;GAQG;AACH,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC,CA0EvE;AA0ED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGtE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,CAAC,CAmBD"}
|
package/dist/index.js
CHANGED
|
@@ -42,9 +42,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
42
42
|
exports.init = init;
|
|
43
43
|
exports.isInitialized = isInitialized;
|
|
44
44
|
exports.getInitInfo = getInitInfo;
|
|
45
|
-
const
|
|
45
|
+
const fs = __importStar(require("fs-extra"));
|
|
46
|
+
const path = __importStar(require("path"));
|
|
46
47
|
const logger = __importStar(require("./logger"));
|
|
47
48
|
const utils_1 = require("./utils");
|
|
49
|
+
/**
|
|
50
|
+
* Get the absolute path to a template file
|
|
51
|
+
*/
|
|
52
|
+
function getTemplatePath(templateFile) {
|
|
53
|
+
return path.join(__dirname, '..', 'templates', templateFile);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve path segments relative to a base directory with cross-platform compatibility
|
|
57
|
+
*/
|
|
58
|
+
function resolvePath(baseDir, ...segments) {
|
|
59
|
+
const base = baseDir || '.';
|
|
60
|
+
const validSegments = segments.filter(segment => segment !== null && segment !== undefined && segment !== '');
|
|
61
|
+
return path.resolve(base, ...validSegments);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Check if a file or directory exists
|
|
65
|
+
*/
|
|
66
|
+
async function exists(filepath) {
|
|
67
|
+
try {
|
|
68
|
+
await fs.access(filepath);
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
48
75
|
/**
|
|
49
76
|
* Initialize a new AI Task Manager project
|
|
50
77
|
*
|
|
@@ -58,7 +85,7 @@ async function init(options) {
|
|
|
58
85
|
try {
|
|
59
86
|
// Determine base directory
|
|
60
87
|
const baseDir = options.destinationDirectory || '.';
|
|
61
|
-
const resolvedBaseDir =
|
|
88
|
+
const resolvedBaseDir = resolvePath(baseDir);
|
|
62
89
|
// Log start of initialization
|
|
63
90
|
await logger.info(`Initializing AI Task Manager in: ${resolvedBaseDir}...`);
|
|
64
91
|
// Parse and validate assistants
|
|
@@ -69,7 +96,8 @@ async function init(options) {
|
|
|
69
96
|
await logger.debug('Assistant validation passed');
|
|
70
97
|
// Create .ai/task-manager structure
|
|
71
98
|
await logger.info('📁 Creating .ai/task-manager directory structure...');
|
|
72
|
-
await
|
|
99
|
+
await fs.ensureDir(resolvePath(baseDir, '.ai/task-manager/plans'));
|
|
100
|
+
await fs.ensureDir(resolvePath(baseDir, '.ai/task-manager/config/hooks'));
|
|
73
101
|
// Copy common templates to .ai/task-manager
|
|
74
102
|
await logger.info('📋 Copying common template files...');
|
|
75
103
|
await copyCommonTemplates(baseDir);
|
|
@@ -80,13 +108,16 @@ async function init(options) {
|
|
|
80
108
|
}
|
|
81
109
|
// Show success message with created directories
|
|
82
110
|
await logger.success('🎉 AI Task Manager initialized successfully!');
|
|
83
|
-
await logger.info(` ✓ ${
|
|
84
|
-
await logger.info(` ✓ ${
|
|
111
|
+
await logger.info(` ✓ ${resolvePath(baseDir, '.ai/task-manager/config/TASK_MANAGER.md')}`);
|
|
112
|
+
await logger.info(` ✓ ${resolvePath(baseDir, '.ai/task-manager/config/hooks/POST_PHASE.md')}`);
|
|
113
|
+
await logger.info(` ✓ ${resolvePath(baseDir, '.ai/task-manager/config/hooks/POST_TASK_GENERATION_ALL.md')}`);
|
|
85
114
|
for (const assistant of assistants) {
|
|
86
115
|
const templateFormat = (0, utils_1.getTemplateFormat)(assistant);
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
await logger.info(` ✓ ${
|
|
116
|
+
// Open Code uses 'command' (singular) instead of 'commands' (plural)
|
|
117
|
+
const commandsPath = assistant === 'opencode' ? 'command' : 'commands';
|
|
118
|
+
await logger.info(` ✓ ${resolvePath(baseDir, `.${assistant}/${commandsPath}/tasks/create-plan.${templateFormat}`)}`);
|
|
119
|
+
await logger.info(` ✓ ${resolvePath(baseDir, `.${assistant}/${commandsPath}/tasks/execute-blueprint.${templateFormat}`)}`);
|
|
120
|
+
await logger.info(` ✓ ${resolvePath(baseDir, `.${assistant}/${commandsPath}/tasks/generate-tasks.${templateFormat}`)}`);
|
|
90
121
|
}
|
|
91
122
|
// Show suggested workflow help text
|
|
92
123
|
await displayWorkflowHelp();
|
|
@@ -97,31 +128,12 @@ async function init(options) {
|
|
|
97
128
|
};
|
|
98
129
|
}
|
|
99
130
|
catch (error) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (error instanceof Error) {
|
|
103
|
-
errorMessage = error.message;
|
|
104
|
-
errorInstance = error;
|
|
105
|
-
if (error.message.includes('Invalid assistant') ||
|
|
106
|
-
error.message.includes('Assistants parameter')) {
|
|
107
|
-
await logger.error(`Configuration Error: ${error.message}`);
|
|
108
|
-
}
|
|
109
|
-
else if (error instanceof types_1.FileSystemError) {
|
|
110
|
-
await logger.error(`File System Error: ${error.message}`);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
await logger.error(`Initialization failed: ${error.message}`);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
errorMessage = 'Initialization failed with unknown error';
|
|
118
|
-
errorInstance = new Error(String(error));
|
|
119
|
-
await logger.error(errorMessage);
|
|
120
|
-
}
|
|
131
|
+
const errorMessage = error instanceof Error ? error.message : 'Initialization failed with unknown error';
|
|
132
|
+
await logger.error(`Initialization failed: ${errorMessage}`);
|
|
121
133
|
return {
|
|
122
134
|
success: false,
|
|
123
135
|
message: errorMessage,
|
|
124
|
-
error:
|
|
136
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
125
137
|
};
|
|
126
138
|
}
|
|
127
139
|
}
|
|
@@ -129,58 +141,57 @@ async function init(options) {
|
|
|
129
141
|
* Copy common template files to .ai/task-manager directory
|
|
130
142
|
*/
|
|
131
143
|
async function copyCommonTemplates(baseDir) {
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
{
|
|
138
|
-
source: (0, utils_1.getTemplatePath)('ai-task-manager/VALIDATION_GATES.md'),
|
|
139
|
-
dest: (0, utils_1.resolvePath)(baseDir, '.ai/task-manager/VALIDATION_GATES.md'),
|
|
140
|
-
},
|
|
141
|
-
];
|
|
142
|
-
for (const template of templates) {
|
|
143
|
-
// Check if source template exists
|
|
144
|
-
if (!(await (0, utils_1.exists)(template.source))) {
|
|
145
|
-
throw new types_1.FileSystemError(`Template file not found: ${template.source}`, {
|
|
146
|
-
templatePath: template.source,
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
await (0, utils_1.copyTemplate)(template.source, template.dest);
|
|
150
|
-
await logger.debug(`📤 Copied ${template.source} to ${template.dest}`);
|
|
144
|
+
const sourceDir = getTemplatePath('ai-task-manager');
|
|
145
|
+
const destDir = resolvePath(baseDir, '.ai/task-manager');
|
|
146
|
+
// Check if source template directory exists
|
|
147
|
+
if (!(await exists(sourceDir))) {
|
|
148
|
+
throw new Error(`Template directory not found: ${sourceDir}`);
|
|
151
149
|
}
|
|
150
|
+
// Copy entire directory structure exactly as-is
|
|
151
|
+
await fs.copy(sourceDir, destDir);
|
|
152
|
+
await logger.debug(`📤 Copied ${sourceDir} to ${destDir}`);
|
|
152
153
|
}
|
|
153
154
|
/**
|
|
154
155
|
* Create directory structure and copy templates for a specific assistant
|
|
155
156
|
*/
|
|
156
157
|
async function createAssistantStructure(assistant, baseDir) {
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
await
|
|
158
|
+
const sourceDir = getTemplatePath('assistant');
|
|
159
|
+
const assistantDir = resolvePath(baseDir, `.${assistant}`);
|
|
160
|
+
// Check if source template directory exists
|
|
161
|
+
if (!(await exists(sourceDir))) {
|
|
162
|
+
throw new Error(`Template directory not found: ${sourceDir}`);
|
|
163
|
+
}
|
|
164
|
+
// Copy entire template directory structure
|
|
165
|
+
await fs.copy(sourceDir, assistantDir);
|
|
166
|
+
await logger.debug(`📤 Copied ${sourceDir} to ${assistantDir}`);
|
|
167
|
+
// OpenCode uses 'command' (singular) instead of 'commands' (plural)
|
|
168
|
+
if (assistant === 'opencode') {
|
|
169
|
+
const commandsDir = resolvePath(assistantDir, 'commands');
|
|
170
|
+
const commandDir = resolvePath(assistantDir, 'command');
|
|
171
|
+
if (await exists(commandsDir)) {
|
|
172
|
+
await fs.move(commandsDir, commandDir);
|
|
173
|
+
await logger.debug(`📁 Renamed 'commands' to 'command' for ${assistant}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
161
176
|
// Determine template format based on assistant type
|
|
162
177
|
const templateFormat = (0, utils_1.getTemplateFormat)(assistant);
|
|
163
178
|
await logger.debug(`🎨 Using ${templateFormat} template format for ${assistant} assistant`);
|
|
164
|
-
//
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
179
|
+
// If target format is different from source (md), process files in place
|
|
180
|
+
if (templateFormat !== 'md') {
|
|
181
|
+
const commandsPath = assistant === 'opencode' ? 'command' : 'commands';
|
|
182
|
+
const tasksDir = resolvePath(assistantDir, `${commandsPath}/tasks`);
|
|
183
|
+
const files = await fs.readdir(tasksDir);
|
|
184
|
+
for (const file of files.filter(f => f.endsWith('.md'))) {
|
|
185
|
+
const mdPath = resolvePath(tasksDir, file);
|
|
186
|
+
const newPath = resolvePath(tasksDir, file.replace('.md', `.${templateFormat}`));
|
|
187
|
+
// Read and process the template
|
|
188
|
+
const processedContent = await (0, utils_1.readAndProcessTemplate)(mdPath, templateFormat);
|
|
189
|
+
// Write processed content to new file
|
|
190
|
+
await (0, utils_1.writeProcessedTemplate)(processedContent, newPath);
|
|
191
|
+
// Remove original .md file
|
|
192
|
+
await fs.remove(mdPath);
|
|
193
|
+
await logger.debug(`⚡ Converted ${file} to ${templateFormat} format for ${assistant}`);
|
|
178
194
|
}
|
|
179
|
-
// Read and process the template based on target format
|
|
180
|
-
const processedContent = await (0, utils_1.readAndProcessTemplate)(mdSourcePath, templateFormat);
|
|
181
|
-
// Write the processed content to destination
|
|
182
|
-
await (0, utils_1.writeProcessedTemplate)(processedContent, destPath);
|
|
183
|
-
await logger.debug(`⚡ Processed ${templateName}.md and created ${templateFile} for ${assistant} at ${destPath}`);
|
|
184
195
|
}
|
|
185
196
|
}
|
|
186
197
|
/**
|
|
@@ -188,25 +199,29 @@ async function createAssistantStructure(assistant, baseDir) {
|
|
|
188
199
|
*/
|
|
189
200
|
async function isInitialized(baseDir) {
|
|
190
201
|
const targetDir = baseDir || '.';
|
|
191
|
-
return await
|
|
202
|
+
return await exists(resolvePath(targetDir, '.ai/task-manager'));
|
|
192
203
|
}
|
|
193
204
|
/**
|
|
194
205
|
* Get information about existing initialization
|
|
195
206
|
*/
|
|
196
207
|
async function getInitInfo(baseDir) {
|
|
197
208
|
const targetDir = baseDir || '.';
|
|
198
|
-
const hasAiTaskManager = await
|
|
199
|
-
const hasClaudeConfig = await
|
|
200
|
-
const hasGeminiConfig = await
|
|
209
|
+
const hasAiTaskManager = await exists(resolvePath(targetDir, '.ai/task-manager'));
|
|
210
|
+
const hasClaudeConfig = await exists(resolvePath(targetDir, '.claude/commands/tasks'));
|
|
211
|
+
const hasGeminiConfig = await exists(resolvePath(targetDir, '.gemini/commands/tasks'));
|
|
212
|
+
const hasOpencodeConfig = await exists(resolvePath(targetDir, '.opencode/command/tasks'));
|
|
201
213
|
const assistants = [];
|
|
202
214
|
if (hasClaudeConfig)
|
|
203
215
|
assistants.push('claude');
|
|
204
216
|
if (hasGeminiConfig)
|
|
205
217
|
assistants.push('gemini');
|
|
218
|
+
if (hasOpencodeConfig)
|
|
219
|
+
assistants.push('opencode');
|
|
206
220
|
return {
|
|
207
221
|
hasAiTaskManager,
|
|
208
222
|
hasClaudeConfig,
|
|
209
223
|
hasGeminiConfig,
|
|
224
|
+
hasOpencodeConfig,
|
|
210
225
|
assistants,
|
|
211
226
|
};
|
|
212
227
|
}
|
|
@@ -225,8 +240,8 @@ async function displayWorkflowHelp() {
|
|
|
225
240
|
console.log(`┌─ 📋 ONE-TIME SETUP ${thinSeparator.slice(20)}┐`);
|
|
226
241
|
console.log('│ │');
|
|
227
242
|
console.log('│ 🔧 Review and tweak these files to match your project: │');
|
|
228
|
-
console.log('│ • .ai/task-manager/
|
|
229
|
-
console.log('│ • .ai/task-manager/
|
|
243
|
+
console.log('│ • .ai/task-manager/TASK_MANAGER.md │');
|
|
244
|
+
console.log('│ • .ai/task-manager/POST_PHASE.md │');
|
|
230
245
|
console.log('│ │');
|
|
231
246
|
console.log(`└${thinSeparator}┘`);
|
|
232
247
|
console.log('');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* Supported AI assistants for task management
|
|
9
9
|
*/
|
|
10
|
-
export type Assistant = 'claude' | 'gemini';
|
|
10
|
+
export type Assistant = 'claude' | 'gemini' | 'opencode';
|
|
11
11
|
/**
|
|
12
12
|
* Template format types for different assistants
|
|
13
13
|
*/
|
|
@@ -183,38 +183,6 @@ export interface ProjectConfig {
|
|
|
183
183
|
*/
|
|
184
184
|
version: string;
|
|
185
185
|
}
|
|
186
|
-
/**
|
|
187
|
-
* Error types for better error handling
|
|
188
|
-
*/
|
|
189
|
-
export declare class TaskManagerError extends Error {
|
|
190
|
-
code: string;
|
|
191
|
-
details?: Record<string, unknown> | undefined;
|
|
192
|
-
constructor(message: string, code: string, details?: Record<string, unknown> | undefined);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Configuration validation error
|
|
196
|
-
*/
|
|
197
|
-
export declare class ConfigError extends TaskManagerError {
|
|
198
|
-
constructor(message: string, details?: Record<string, unknown>);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Task operation error
|
|
202
|
-
*/
|
|
203
|
-
export declare class TaskError extends TaskManagerError {
|
|
204
|
-
constructor(message: string, details?: Record<string, unknown>);
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Assistant integration error
|
|
208
|
-
*/
|
|
209
|
-
export declare class AssistantError extends TaskManagerError {
|
|
210
|
-
constructor(message: string, details?: Record<string, unknown>);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* File system operation error
|
|
214
|
-
*/
|
|
215
|
-
export declare class FileSystemError extends TaskManagerError {
|
|
216
|
-
constructor(message: string, details?: Record<string, unknown>);
|
|
217
|
-
}
|
|
218
186
|
/**
|
|
219
187
|
* Validation result interface
|
|
220
188
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -6,57 +6,4 @@
|
|
|
6
6
|
* used throughout the AI Task Manager CLI application
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.FileSystemError = exports.AssistantError = exports.TaskError = exports.ConfigError = exports.TaskManagerError = void 0;
|
|
10
|
-
/**
|
|
11
|
-
* Error types for better error handling
|
|
12
|
-
*/
|
|
13
|
-
class TaskManagerError extends Error {
|
|
14
|
-
constructor(message, code, details) {
|
|
15
|
-
super(message);
|
|
16
|
-
this.code = code;
|
|
17
|
-
this.details = details;
|
|
18
|
-
this.name = 'TaskManagerError';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.TaskManagerError = TaskManagerError;
|
|
22
|
-
/**
|
|
23
|
-
* Configuration validation error
|
|
24
|
-
*/
|
|
25
|
-
class ConfigError extends TaskManagerError {
|
|
26
|
-
constructor(message, details) {
|
|
27
|
-
super(message, 'CONFIG_ERROR', details);
|
|
28
|
-
this.name = 'ConfigError';
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.ConfigError = ConfigError;
|
|
32
|
-
/**
|
|
33
|
-
* Task operation error
|
|
34
|
-
*/
|
|
35
|
-
class TaskError extends TaskManagerError {
|
|
36
|
-
constructor(message, details) {
|
|
37
|
-
super(message, 'TASK_ERROR', details);
|
|
38
|
-
this.name = 'TaskError';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
exports.TaskError = TaskError;
|
|
42
|
-
/**
|
|
43
|
-
* Assistant integration error
|
|
44
|
-
*/
|
|
45
|
-
class AssistantError extends TaskManagerError {
|
|
46
|
-
constructor(message, details) {
|
|
47
|
-
super(message, 'ASSISTANT_ERROR', details);
|
|
48
|
-
this.name = 'AssistantError';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.AssistantError = AssistantError;
|
|
52
|
-
/**
|
|
53
|
-
* File system operation error
|
|
54
|
-
*/
|
|
55
|
-
class FileSystemError extends TaskManagerError {
|
|
56
|
-
constructor(message, details) {
|
|
57
|
-
super(message, 'FILESYSTEM_ERROR', details);
|
|
58
|
-
this.name = 'FileSystemError';
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.FileSystemError = FileSystemError;
|
|
62
9
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|