ted-mosby 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +238 -0
- package/dist/agent.d.ts +37 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +247 -0
- package/dist/agent.js.map +1 -0
- package/dist/claude-config.d.ts +58 -0
- package/dist/claude-config.d.ts.map +1 -0
- package/dist/claude-config.js +169 -0
- package/dist/claude-config.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1379 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +42 -0
- package/dist/config.js.map +1 -0
- package/dist/mcp-config.d.ts +45 -0
- package/dist/mcp-config.d.ts.map +1 -0
- package/dist/mcp-config.js +111 -0
- package/dist/mcp-config.js.map +1 -0
- package/dist/permissions.d.ts +32 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +165 -0
- package/dist/permissions.js.map +1 -0
- package/dist/planner.d.ts +42 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +232 -0
- package/dist/planner.js.map +1 -0
- package/dist/prompts/wiki-system.d.ts +8 -0
- package/dist/prompts/wiki-system.d.ts.map +1 -0
- package/dist/prompts/wiki-system.js +249 -0
- package/dist/prompts/wiki-system.js.map +1 -0
- package/dist/rag/index.d.ts +84 -0
- package/dist/rag/index.d.ts.map +1 -0
- package/dist/rag/index.js +446 -0
- package/dist/rag/index.js.map +1 -0
- package/dist/tools/command-runner.d.ts +21 -0
- package/dist/tools/command-runner.d.ts.map +1 -0
- package/dist/tools/command-runner.js +67 -0
- package/dist/tools/command-runner.js.map +1 -0
- package/dist/tools/file-operations.d.ts +22 -0
- package/dist/tools/file-operations.d.ts.map +1 -0
- package/dist/tools/file-operations.js +119 -0
- package/dist/tools/file-operations.js.map +1 -0
- package/dist/tools/web-tools.d.ts +17 -0
- package/dist/tools/web-tools.d.ts.map +1 -0
- package/dist/tools/web-tools.js +122 -0
- package/dist/tools/web-tools.js.map +1 -0
- package/dist/wiki-agent.d.ts +81 -0
- package/dist/wiki-agent.d.ts.map +1 -0
- package/dist/wiki-agent.js +552 -0
- package/dist/wiki-agent.js.map +1 -0
- package/dist/workflows.d.ts +53 -0
- package/dist/workflows.d.ts.map +1 -0
- package/dist/workflows.js +169 -0
- package/dist/workflows.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { glob } from 'glob';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
// ESM equivalent of __dirname
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
const PROJECT_ROOT = join(__dirname, '..');
|
|
11
|
+
export class WorkflowExecutor {
|
|
12
|
+
permissionManager;
|
|
13
|
+
constructor(permissionManager) {
|
|
14
|
+
this.permissionManager = permissionManager;
|
|
15
|
+
}
|
|
16
|
+
async execute(workflow, args, context) {
|
|
17
|
+
// Initialize context with arguments
|
|
18
|
+
for (const [key, value] of Object.entries(args)) {
|
|
19
|
+
context.variables.set(key, value);
|
|
20
|
+
}
|
|
21
|
+
// Add timestamp variable
|
|
22
|
+
context.variables.set('timestamp', new Date().toISOString().replace(/[:.]/g, '-'));
|
|
23
|
+
const spinner = ora({ text: `Executing workflow: ${workflow.name}`, spinner: 'dots' }).start();
|
|
24
|
+
try {
|
|
25
|
+
for (let i = 0; i < workflow.workflow.steps.length; i++) {
|
|
26
|
+
const step = workflow.workflow.steps[i];
|
|
27
|
+
spinner.text = `Step ${i + 1}/${workflow.workflow.steps.length}: ${step.name}`;
|
|
28
|
+
// Execute step
|
|
29
|
+
const result = await this.executeStep(step, context);
|
|
30
|
+
// Store result in context
|
|
31
|
+
if (step.output) {
|
|
32
|
+
const varName = this.extractVariableName(step.output);
|
|
33
|
+
context.variables.set(varName, result);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
spinner.succeed('Workflow completed successfully');
|
|
37
|
+
return context.variables.get('$result') || context.variables.get('$output');
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
spinner.fail(`Workflow failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async executeStep(step, context) {
|
|
45
|
+
const maxAttempts = step.retry?.maxAttempts || 1;
|
|
46
|
+
let lastError;
|
|
47
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
48
|
+
try {
|
|
49
|
+
return await this.executeStepInternal(step, context);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
lastError = error;
|
|
53
|
+
if (attempt < maxAttempts && this.shouldRetry(error, step.retry)) {
|
|
54
|
+
const delay = this.calculateBackoff(attempt, step.retry?.backoff);
|
|
55
|
+
console.log(chalk.yellow(` Retrying in ${delay}ms (attempt ${attempt + 1}/${maxAttempts})...`));
|
|
56
|
+
await this.sleep(delay);
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// Handle based on onError strategy
|
|
60
|
+
if (step.onError === 'continue') {
|
|
61
|
+
console.warn(chalk.yellow(` Step ${step.name} failed, continuing: ${lastError.message}`));
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
else if (step.onError === 'skip') {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
throw lastError;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async executeStepInternal(step, context) {
|
|
72
|
+
// Resolve template variables in input
|
|
73
|
+
const resolvedInput = this.resolveTemplates(step.input, context);
|
|
74
|
+
if (step.forEach) {
|
|
75
|
+
// Parallel execution for forEach
|
|
76
|
+
const pattern = this.resolveTemplates(step.forEach, context);
|
|
77
|
+
const items = await this.resolvePath(pattern, context);
|
|
78
|
+
return await Promise.all(items.map(item => this.executeStepInternal({ ...step, input: item, forEach: undefined }, context)));
|
|
79
|
+
}
|
|
80
|
+
else if (step.tool) {
|
|
81
|
+
// Call tool directly via agent
|
|
82
|
+
return await this.callTool(step.tool, resolvedInput, context.agent);
|
|
83
|
+
}
|
|
84
|
+
else if (step.prompt) {
|
|
85
|
+
// Query agent with prompt
|
|
86
|
+
const prompt = this.resolveTemplates(step.prompt, context);
|
|
87
|
+
return await this.queryAgent(prompt, context.agent);
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Step ${step.name} has no executable action (tool or prompt)`);
|
|
90
|
+
}
|
|
91
|
+
async callTool(toolName, input, agent) {
|
|
92
|
+
// This is a simplified implementation
|
|
93
|
+
// In a real implementation, we'd need to call the tool through the agent's tool system
|
|
94
|
+
console.log(chalk.gray(` → Calling tool: ${toolName}`));
|
|
95
|
+
// For now, we'll just return the input
|
|
96
|
+
// This would need to be implemented to actually call tools
|
|
97
|
+
return { success: true, tool: toolName, input };
|
|
98
|
+
}
|
|
99
|
+
async queryAgent(prompt, agent) {
|
|
100
|
+
console.log(chalk.gray(' → Querying agent...'));
|
|
101
|
+
let result = '';
|
|
102
|
+
for await (const message of agent.query(prompt)) {
|
|
103
|
+
if (message.type === 'stream_event') {
|
|
104
|
+
if (message.event?.type === 'content_block_delta' && message.event.delta?.type === 'text_delta') {
|
|
105
|
+
const text = message.event.delta.text || '';
|
|
106
|
+
process.stdout.write(text);
|
|
107
|
+
result += text;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
process.stdout.write('\n');
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
async resolvePath(pattern, context) {
|
|
115
|
+
try {
|
|
116
|
+
const files = await glob(pattern);
|
|
117
|
+
return files;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.error(chalk.red(`Failed to resolve path pattern: ${pattern}`));
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
resolveTemplates(template, context) {
|
|
125
|
+
if (typeof template !== 'string') {
|
|
126
|
+
return template;
|
|
127
|
+
}
|
|
128
|
+
return template.replace(/\{\{([^}]+)\}\}/g, (_, varName) => {
|
|
129
|
+
const trimmed = varName.trim();
|
|
130
|
+
const value = context.variables.get(trimmed);
|
|
131
|
+
return value !== undefined ? String(value) : `{{${trimmed}}}`;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
extractVariableName(output) {
|
|
135
|
+
const match = output.match(/\{\{([^}]+)\}\}/);
|
|
136
|
+
return match ? match[1].trim() : output;
|
|
137
|
+
}
|
|
138
|
+
shouldRetry(error, retry) {
|
|
139
|
+
if (!retry || !retry.retryOn) {
|
|
140
|
+
return true; // Retry all errors if retry is configured
|
|
141
|
+
}
|
|
142
|
+
const errorType = error?.constructor?.name || 'Error';
|
|
143
|
+
return retry.retryOn.includes(errorType);
|
|
144
|
+
}
|
|
145
|
+
calculateBackoff(attempt, backoff = 'linear') {
|
|
146
|
+
if (backoff === 'exponential') {
|
|
147
|
+
return Math.min(1000 * Math.pow(2, attempt - 1), 30000);
|
|
148
|
+
}
|
|
149
|
+
return 1000 * attempt;
|
|
150
|
+
}
|
|
151
|
+
sleep(ms) {
|
|
152
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
153
|
+
}
|
|
154
|
+
async loadWorkflow(commandName) {
|
|
155
|
+
// Resolve path relative to project root, not current working directory
|
|
156
|
+
const workflowPath = join(PROJECT_ROOT, '.commands', `${commandName}.json`);
|
|
157
|
+
if (!existsSync(workflowPath)) {
|
|
158
|
+
throw new Error(`Workflow not found: ${commandName} (looked in ${workflowPath})`);
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
const content = readFileSync(workflowPath, 'utf-8');
|
|
162
|
+
return JSON.parse(content);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
throw new Error(`Failed to load workflow: ${commandName} - ${error instanceof Error ? error.message : String(error)}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../src/workflows.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ted-mosby",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Generate comprehensive architectural documentation wikis for code repositories with source traceability.",
|
|
5
|
+
"main": "dist/cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ted-mosby": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"start": "node dist/cli.js",
|
|
13
|
+
"test": "node dist/cli.js --help",
|
|
14
|
+
"clean": "rm -rf dist",
|
|
15
|
+
"prepare": "npm run build",
|
|
16
|
+
"prepublishOnly": "npm run build && npm test"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"ai-agent",
|
|
20
|
+
"cli",
|
|
21
|
+
"claude",
|
|
22
|
+
"documentation",
|
|
23
|
+
"architecture",
|
|
24
|
+
"wiki",
|
|
25
|
+
"code-analysis",
|
|
26
|
+
"mcp"
|
|
27
|
+
],
|
|
28
|
+
"author": "Dakota Kim",
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"type": "module",
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=18.0.0"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/**/*",
|
|
36
|
+
"README.md",
|
|
37
|
+
"LICENSE"
|
|
38
|
+
],
|
|
39
|
+
"publishConfig": {
|
|
40
|
+
"access": "public"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@anthropic-ai/claude-agent-sdk": "^0.1.53",
|
|
44
|
+
"@anthropic-ai/sdk": "^0.71.2",
|
|
45
|
+
"@lepion/mcp-server-mermaid": "^1.0.8",
|
|
46
|
+
"@modelcontextprotocol/server-filesystem": "^2025.12.18",
|
|
47
|
+
"axios": "^1.6.0",
|
|
48
|
+
"better-sqlite3": "^9.0.0",
|
|
49
|
+
"chalk": "^5.3.0",
|
|
50
|
+
"cheerio": "^1.0.0-rc.12",
|
|
51
|
+
"commander": "^12.0.0",
|
|
52
|
+
"dotenv": "^16.3.1",
|
|
53
|
+
"faiss-node": "^0.5.1",
|
|
54
|
+
"glob": "^10.3.10",
|
|
55
|
+
"gray-matter": "^4.0.3",
|
|
56
|
+
"inquirer": "^9.2.12",
|
|
57
|
+
"inquirer-autocomplete-prompt": "^3.0.1",
|
|
58
|
+
"ora": "^8.0.1",
|
|
59
|
+
"simple-git": "^3.30.0"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@types/inquirer": "^9.0.7",
|
|
63
|
+
"@types/node": "^20.10.0",
|
|
64
|
+
"@types/pdf-parse": "^1.1.4",
|
|
65
|
+
"typescript": "^5.3.0"
|
|
66
|
+
}
|
|
67
|
+
}
|