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.
Files changed (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +238 -0
  3. package/dist/agent.d.ts +37 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +247 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/claude-config.d.ts +58 -0
  8. package/dist/claude-config.d.ts.map +1 -0
  9. package/dist/claude-config.js +169 -0
  10. package/dist/claude-config.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +1379 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +13 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +42 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/mcp-config.d.ts +45 -0
  20. package/dist/mcp-config.d.ts.map +1 -0
  21. package/dist/mcp-config.js +111 -0
  22. package/dist/mcp-config.js.map +1 -0
  23. package/dist/permissions.d.ts +32 -0
  24. package/dist/permissions.d.ts.map +1 -0
  25. package/dist/permissions.js +165 -0
  26. package/dist/permissions.js.map +1 -0
  27. package/dist/planner.d.ts +42 -0
  28. package/dist/planner.d.ts.map +1 -0
  29. package/dist/planner.js +232 -0
  30. package/dist/planner.js.map +1 -0
  31. package/dist/prompts/wiki-system.d.ts +8 -0
  32. package/dist/prompts/wiki-system.d.ts.map +1 -0
  33. package/dist/prompts/wiki-system.js +249 -0
  34. package/dist/prompts/wiki-system.js.map +1 -0
  35. package/dist/rag/index.d.ts +84 -0
  36. package/dist/rag/index.d.ts.map +1 -0
  37. package/dist/rag/index.js +446 -0
  38. package/dist/rag/index.js.map +1 -0
  39. package/dist/tools/command-runner.d.ts +21 -0
  40. package/dist/tools/command-runner.d.ts.map +1 -0
  41. package/dist/tools/command-runner.js +67 -0
  42. package/dist/tools/command-runner.js.map +1 -0
  43. package/dist/tools/file-operations.d.ts +22 -0
  44. package/dist/tools/file-operations.d.ts.map +1 -0
  45. package/dist/tools/file-operations.js +119 -0
  46. package/dist/tools/file-operations.js.map +1 -0
  47. package/dist/tools/web-tools.d.ts +17 -0
  48. package/dist/tools/web-tools.d.ts.map +1 -0
  49. package/dist/tools/web-tools.js +122 -0
  50. package/dist/tools/web-tools.js.map +1 -0
  51. package/dist/wiki-agent.d.ts +81 -0
  52. package/dist/wiki-agent.d.ts.map +1 -0
  53. package/dist/wiki-agent.js +552 -0
  54. package/dist/wiki-agent.js.map +1 -0
  55. package/dist/workflows.d.ts +53 -0
  56. package/dist/workflows.d.ts.map +1 -0
  57. package/dist/workflows.js +169 -0
  58. package/dist/workflows.js.map +1 -0
  59. 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
+ }