monty-autonomous-fullstack-dev-multillm 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 (186) hide show
  1. package/LICENSE +81 -0
  2. package/README.md +608 -0
  3. package/bin/cli.js +448 -0
  4. package/dist/agents/coding.d.ts +15 -0
  5. package/dist/agents/coding.d.ts.map +1 -0
  6. package/dist/agents/coding.js +189 -0
  7. package/dist/agents/coding.js.map +1 -0
  8. package/dist/agents/initializer.d.ts +15 -0
  9. package/dist/agents/initializer.d.ts.map +1 -0
  10. package/dist/agents/initializer.js +87 -0
  11. package/dist/agents/initializer.js.map +1 -0
  12. package/dist/agents/prompts/arbitrator.md +143 -0
  13. package/dist/agents/prompts/coding.md +247 -0
  14. package/dist/agents/prompts/initializer.md +98 -0
  15. package/dist/config/agent-config.d.ts +103 -0
  16. package/dist/config/agent-config.d.ts.map +1 -0
  17. package/dist/config/agent-config.js +138 -0
  18. package/dist/config/agent-config.js.map +1 -0
  19. package/dist/config/auth-config.d.ts +152 -0
  20. package/dist/config/auth-config.d.ts.map +1 -0
  21. package/dist/config/auth-config.js +139 -0
  22. package/dist/config/auth-config.js.map +1 -0
  23. package/dist/config/mcp-config.d.ts +109 -0
  24. package/dist/config/mcp-config.d.ts.map +1 -0
  25. package/dist/config/mcp-config.js +234 -0
  26. package/dist/config/mcp-config.js.map +1 -0
  27. package/dist/config/provider-config.d.ts +139 -0
  28. package/dist/config/provider-config.d.ts.map +1 -0
  29. package/dist/config/provider-config.js +344 -0
  30. package/dist/config/provider-config.js.map +1 -0
  31. package/dist/config/subagents-config.d.ts +85 -0
  32. package/dist/config/subagents-config.d.ts.map +1 -0
  33. package/dist/config/subagents-config.js +430 -0
  34. package/dist/config/subagents-config.js.map +1 -0
  35. package/dist/index.d.ts +14 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +385 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/orchestrator/arbitrator.d.ts +93 -0
  40. package/dist/orchestrator/arbitrator.d.ts.map +1 -0
  41. package/dist/orchestrator/arbitrator.js +330 -0
  42. package/dist/orchestrator/arbitrator.js.map +1 -0
  43. package/dist/orchestrator/index.d.ts +113 -0
  44. package/dist/orchestrator/index.d.ts.map +1 -0
  45. package/dist/orchestrator/index.js +217 -0
  46. package/dist/orchestrator/index.js.map +1 -0
  47. package/dist/orchestrator/review-coordinator.d.ts +143 -0
  48. package/dist/orchestrator/review-coordinator.d.ts.map +1 -0
  49. package/dist/orchestrator/review-coordinator.js +401 -0
  50. package/dist/orchestrator/review-coordinator.js.map +1 -0
  51. package/dist/orchestrator/task-classifier.d.ts +87 -0
  52. package/dist/orchestrator/task-classifier.d.ts.map +1 -0
  53. package/dist/orchestrator/task-classifier.js +250 -0
  54. package/dist/orchestrator/task-classifier.js.map +1 -0
  55. package/dist/providers/anthropic-provider.d.ts +64 -0
  56. package/dist/providers/anthropic-provider.d.ts.map +1 -0
  57. package/dist/providers/anthropic-provider.js +264 -0
  58. package/dist/providers/anthropic-provider.js.map +1 -0
  59. package/dist/providers/base-provider.d.ts +219 -0
  60. package/dist/providers/base-provider.d.ts.map +1 -0
  61. package/dist/providers/base-provider.js +143 -0
  62. package/dist/providers/base-provider.js.map +1 -0
  63. package/dist/providers/cursor-provider.d.ts +82 -0
  64. package/dist/providers/cursor-provider.d.ts.map +1 -0
  65. package/dist/providers/cursor-provider.js +321 -0
  66. package/dist/providers/cursor-provider.js.map +1 -0
  67. package/dist/providers/google-provider.d.ts +75 -0
  68. package/dist/providers/google-provider.d.ts.map +1 -0
  69. package/dist/providers/google-provider.js +274 -0
  70. package/dist/providers/google-provider.js.map +1 -0
  71. package/dist/providers/index.d.ts +92 -0
  72. package/dist/providers/index.d.ts.map +1 -0
  73. package/dist/providers/index.js +233 -0
  74. package/dist/providers/index.js.map +1 -0
  75. package/dist/providers/openai-provider.d.ts +83 -0
  76. package/dist/providers/openai-provider.d.ts.map +1 -0
  77. package/dist/providers/openai-provider.js +295 -0
  78. package/dist/providers/openai-provider.js.map +1 -0
  79. package/dist/templates/feature_list.template.json +66 -0
  80. package/dist/templates/progress.template.txt +51 -0
  81. package/dist/utils/auth-manager.d.ts +121 -0
  82. package/dist/utils/auth-manager.d.ts.map +1 -0
  83. package/dist/utils/auth-manager.js +560 -0
  84. package/dist/utils/auth-manager.js.map +1 -0
  85. package/dist/utils/budget-enforcer.d.ts +181 -0
  86. package/dist/utils/budget-enforcer.d.ts.map +1 -0
  87. package/dist/utils/budget-enforcer.js +386 -0
  88. package/dist/utils/budget-enforcer.js.map +1 -0
  89. package/dist/utils/chatgpt-detector.d.ts +51 -0
  90. package/dist/utils/chatgpt-detector.d.ts.map +1 -0
  91. package/dist/utils/chatgpt-detector.js +274 -0
  92. package/dist/utils/chatgpt-detector.js.map +1 -0
  93. package/dist/utils/claude-code-detector.d.ts +39 -0
  94. package/dist/utils/claude-code-detector.d.ts.map +1 -0
  95. package/dist/utils/claude-code-detector.js +153 -0
  96. package/dist/utils/claude-code-detector.js.map +1 -0
  97. package/dist/utils/code-quality.d.ts +58 -0
  98. package/dist/utils/code-quality.d.ts.map +1 -0
  99. package/dist/utils/code-quality.js +258 -0
  100. package/dist/utils/code-quality.js.map +1 -0
  101. package/dist/utils/context-primer.d.ts +50 -0
  102. package/dist/utils/context-primer.d.ts.map +1 -0
  103. package/dist/utils/context-primer.js +429 -0
  104. package/dist/utils/context-primer.js.map +1 -0
  105. package/dist/utils/dependency-management.d.ts +40 -0
  106. package/dist/utils/dependency-management.d.ts.map +1 -0
  107. package/dist/utils/dependency-management.js +123 -0
  108. package/dist/utils/dependency-management.js.map +1 -0
  109. package/dist/utils/environment-validation.d.ts +33 -0
  110. package/dist/utils/environment-validation.d.ts.map +1 -0
  111. package/dist/utils/environment-validation.js +136 -0
  112. package/dist/utils/environment-validation.js.map +1 -0
  113. package/dist/utils/error-recovery.d.ts +60 -0
  114. package/dist/utils/error-recovery.d.ts.map +1 -0
  115. package/dist/utils/error-recovery.js +183 -0
  116. package/dist/utils/error-recovery.js.map +1 -0
  117. package/dist/utils/feature-list.d.ts +102 -0
  118. package/dist/utils/feature-list.d.ts.map +1 -0
  119. package/dist/utils/feature-list.js +191 -0
  120. package/dist/utils/feature-list.js.map +1 -0
  121. package/dist/utils/gemini-detector.d.ts +65 -0
  122. package/dist/utils/gemini-detector.d.ts.map +1 -0
  123. package/dist/utils/gemini-detector.js +340 -0
  124. package/dist/utils/gemini-detector.js.map +1 -0
  125. package/dist/utils/git-utils.d.ts +48 -0
  126. package/dist/utils/git-utils.d.ts.map +1 -0
  127. package/dist/utils/git-utils.js +110 -0
  128. package/dist/utils/git-utils.js.map +1 -0
  129. package/dist/utils/health-check.d.ts +32 -0
  130. package/dist/utils/health-check.d.ts.map +1 -0
  131. package/dist/utils/health-check.js +152 -0
  132. package/dist/utils/health-check.js.map +1 -0
  133. package/dist/utils/hooks-manager.d.ts +154 -0
  134. package/dist/utils/hooks-manager.d.ts.map +1 -0
  135. package/dist/utils/hooks-manager.js +359 -0
  136. package/dist/utils/hooks-manager.js.map +1 -0
  137. package/dist/utils/multi-auth-manager.d.ts +144 -0
  138. package/dist/utils/multi-auth-manager.d.ts.map +1 -0
  139. package/dist/utils/multi-auth-manager.js +588 -0
  140. package/dist/utils/multi-auth-manager.js.map +1 -0
  141. package/dist/utils/progress.d.ts +49 -0
  142. package/dist/utils/progress.d.ts.map +1 -0
  143. package/dist/utils/progress.js +209 -0
  144. package/dist/utils/progress.js.map +1 -0
  145. package/dist/utils/project-detection.d.ts +40 -0
  146. package/dist/utils/project-detection.d.ts.map +1 -0
  147. package/dist/utils/project-detection.js +230 -0
  148. package/dist/utils/project-detection.js.map +1 -0
  149. package/dist/utils/session-manager.d.ts +119 -0
  150. package/dist/utils/session-manager.d.ts.map +1 -0
  151. package/dist/utils/session-manager.js +389 -0
  152. package/dist/utils/session-manager.js.map +1 -0
  153. package/dist/utils/skills-manager.d.ts +113 -0
  154. package/dist/utils/skills-manager.d.ts.map +1 -0
  155. package/dist/utils/skills-manager.js +332 -0
  156. package/dist/utils/skills-manager.js.map +1 -0
  157. package/dist/utils/structured-output.d.ts +117 -0
  158. package/dist/utils/structured-output.d.ts.map +1 -0
  159. package/dist/utils/structured-output.js +191 -0
  160. package/dist/utils/structured-output.js.map +1 -0
  161. package/dist/utils/subagent-manager.d.ts +143 -0
  162. package/dist/utils/subagent-manager.d.ts.map +1 -0
  163. package/dist/utils/subagent-manager.js +326 -0
  164. package/dist/utils/subagent-manager.js.map +1 -0
  165. package/dist/utils/supabase-setup.d.ts +50 -0
  166. package/dist/utils/supabase-setup.d.ts.map +1 -0
  167. package/dist/utils/supabase-setup.js +151 -0
  168. package/dist/utils/supabase-setup.js.map +1 -0
  169. package/dist/utils/token-refresh.d.ts +21 -0
  170. package/dist/utils/token-refresh.d.ts.map +1 -0
  171. package/dist/utils/token-refresh.js +77 -0
  172. package/dist/utils/token-refresh.js.map +1 -0
  173. package/dist/utils/tos-warning.d.ts +115 -0
  174. package/dist/utils/tos-warning.d.ts.map +1 -0
  175. package/dist/utils/tos-warning.js +304 -0
  176. package/dist/utils/tos-warning.js.map +1 -0
  177. package/dist/utils/usage-monitor.d.ts +156 -0
  178. package/dist/utils/usage-monitor.d.ts.map +1 -0
  179. package/dist/utils/usage-monitor.js +296 -0
  180. package/dist/utils/usage-monitor.js.map +1 -0
  181. package/package.json +105 -0
  182. package/scripts/init.ps1 +73 -0
  183. package/scripts/init.sh +86 -0
  184. package/scripts/test-auth.sh +90 -0
  185. package/templates/feature_list.template.json +66 -0
  186. package/templates/progress.template.txt +51 -0
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Progress File Utilities
3
+ * Manages the claude-progress.txt file for session continuity.
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync } from "fs";
6
+ import { agentConfig } from "../config/agent-config.js";
7
+ /**
8
+ * Load the progress file content
9
+ */
10
+ export function loadProgressFile() {
11
+ const path = agentConfig.paths.progressFile;
12
+ if (!existsSync(path)) {
13
+ return null;
14
+ }
15
+ try {
16
+ return readFileSync(path, "utf-8");
17
+ }
18
+ catch (error) {
19
+ console.error("Error loading progress file:", error);
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Create a new progress file from template
25
+ */
26
+ export function createProgressFile(projectName, projectDescription) {
27
+ const path = agentConfig.paths.progressFile;
28
+ const now = new Date().toISOString();
29
+ const content = `================================================================================
30
+ PROJECT: ${projectName}
31
+ CREATED: ${now}
32
+ LAST SESSION: ${now}
33
+ ================================================================================
34
+
35
+ ## PROJECT OVERVIEW
36
+ ${projectDescription}
37
+
38
+ ## CURRENT STATE
39
+ - Total Features: 0
40
+ - Completed: 0
41
+ - Remaining: 0
42
+ - Last Feature Worked On: None
43
+
44
+ ## SESSION LOG
45
+ ### ${now}
46
+ - Agent: initializer
47
+ - Actions taken:
48
+ * Created project environment
49
+ * Generated feature list
50
+ * Set up progress tracking
51
+ - Features completed: []
52
+ - Issues encountered: []
53
+ - Next steps:
54
+ * Begin implementing features
55
+ * Start with highest priority items
56
+
57
+ ## KNOWN ISSUES
58
+ - None yet
59
+
60
+ ## NOTES FOR NEXT SESSION
61
+ - Project has been initialized
62
+ - All features are marked as failing initially
63
+ - Use browser automation for testing
64
+ ================================================================================
65
+ `;
66
+ try {
67
+ writeFileSync(path, content, "utf-8");
68
+ return true;
69
+ }
70
+ catch (error) {
71
+ console.error("Error creating progress file:", error);
72
+ return false;
73
+ }
74
+ }
75
+ /**
76
+ * Append a session log entry to the progress file
77
+ */
78
+ export function appendSessionLog(entry) {
79
+ const path = agentConfig.paths.progressFile;
80
+ if (!existsSync(path)) {
81
+ console.error("Progress file does not exist");
82
+ return false;
83
+ }
84
+ const logContent = `
85
+ ### ${entry.timestamp}
86
+ - Agent: ${entry.agentType}
87
+ - Actions taken:
88
+ ${entry.actions.map(a => ` * ${a}`).join("\n")}
89
+ - Features completed: [${entry.featuresCompleted.join(", ")}]
90
+ - Issues encountered: [${entry.issuesEncountered.join(", ")}]
91
+ - Next steps:
92
+ ${entry.nextSteps.map(s => ` * ${s}`).join("\n")}
93
+ `;
94
+ try {
95
+ // Read current content
96
+ let content = readFileSync(path, "utf-8");
97
+ // Update LAST SESSION timestamp
98
+ content = content.replace(/LAST SESSION: .*/, `LAST SESSION: ${entry.timestamp}`);
99
+ // Find the SESSION LOG section and append
100
+ const sessionLogIndex = content.indexOf("## SESSION LOG");
101
+ if (sessionLogIndex !== -1) {
102
+ const nextSectionIndex = content.indexOf("\n## ", sessionLogIndex + 1);
103
+ if (nextSectionIndex !== -1) {
104
+ content =
105
+ content.slice(0, nextSectionIndex) +
106
+ logContent +
107
+ content.slice(nextSectionIndex);
108
+ }
109
+ else {
110
+ // SESSION LOG is the last section, append before the closing line
111
+ const closingIndex = content.lastIndexOf("================================================================================");
112
+ if (closingIndex !== -1) {
113
+ content =
114
+ content.slice(0, closingIndex) +
115
+ logContent + "\n" +
116
+ content.slice(closingIndex);
117
+ }
118
+ }
119
+ }
120
+ writeFileSync(path, content, "utf-8");
121
+ return true;
122
+ }
123
+ catch (error) {
124
+ console.error("Error appending session log:", error);
125
+ return false;
126
+ }
127
+ }
128
+ /**
129
+ * Update the current state section in the progress file
130
+ */
131
+ export function updateCurrentState(totalFeatures, completed, lastFeature) {
132
+ const path = agentConfig.paths.progressFile;
133
+ if (!existsSync(path)) {
134
+ return false;
135
+ }
136
+ try {
137
+ let content = readFileSync(path, "utf-8");
138
+ // Update the CURRENT STATE section
139
+ const stateRegex = /## CURRENT STATE[\s\S]*?(?=\n## )/;
140
+ const newState = `## CURRENT STATE
141
+ - Total Features: ${totalFeatures}
142
+ - Completed: ${completed}
143
+ - Remaining: ${totalFeatures - completed}
144
+ - Last Feature Worked On: ${lastFeature || "None"}
145
+
146
+ `;
147
+ content = content.replace(stateRegex, newState);
148
+ writeFileSync(path, content, "utf-8");
149
+ return true;
150
+ }
151
+ catch (error) {
152
+ console.error("Error updating current state:", error);
153
+ return false;
154
+ }
155
+ }
156
+ /**
157
+ * Add a known issue to the progress file
158
+ */
159
+ export function addKnownIssue(issue) {
160
+ const path = agentConfig.paths.progressFile;
161
+ if (!existsSync(path)) {
162
+ return false;
163
+ }
164
+ try {
165
+ let content = readFileSync(path, "utf-8");
166
+ // Find KNOWN ISSUES section
167
+ const issuesIndex = content.indexOf("## KNOWN ISSUES");
168
+ if (issuesIndex !== -1) {
169
+ const nextSectionIndex = content.indexOf("\n## ", issuesIndex + 1);
170
+ const insertPoint = nextSectionIndex !== -1
171
+ ? nextSectionIndex
172
+ : content.lastIndexOf("================================================================================");
173
+ content =
174
+ content.slice(0, insertPoint) +
175
+ `- ${issue}\n` +
176
+ content.slice(insertPoint);
177
+ }
178
+ writeFileSync(path, content, "utf-8");
179
+ return true;
180
+ }
181
+ catch (error) {
182
+ console.error("Error adding known issue:", error);
183
+ return false;
184
+ }
185
+ }
186
+ /**
187
+ * Get a summary of the last session from the progress file
188
+ */
189
+ export function getLastSessionSummary() {
190
+ const content = loadProgressFile();
191
+ if (!content) {
192
+ return null;
193
+ }
194
+ // Extract the most recent session log entry
195
+ const sessionLogMatch = content.match(/### (\d{4}-\d{2}-\d{2}T[\d:.]+Z)[\s\S]*?(?=\n### |\n## |$)/);
196
+ if (sessionLogMatch) {
197
+ return sessionLogMatch[0];
198
+ }
199
+ return null;
200
+ }
201
+ export default {
202
+ loadProgressFile,
203
+ createProgressFile,
204
+ appendSessionLog,
205
+ updateCurrentState,
206
+ addKnownIssue,
207
+ getLastSessionSummary,
208
+ };
209
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/utils/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Project Detection Utilities
3
+ * Automatically detects project type, framework, and technology stack.
4
+ * Enables the agent to adapt its behavior based on the project context.
5
+ */
6
+ /**
7
+ * Detected project information
8
+ */
9
+ export interface ProjectInfo {
10
+ type: "react" | "nextjs" | "vue" | "svelte" | "angular" | "vanilla" | "unknown";
11
+ framework: string | null;
12
+ packageManager: "npm" | "yarn" | "pnpm" | "bun" | "unknown";
13
+ language: "typescript" | "javascript" | "both";
14
+ buildTool: "vite" | "webpack" | "rollup" | "turbopack" | "unknown";
15
+ testingFramework: "vitest" | "jest" | "playwright" | "cypress" | "none" | "unknown";
16
+ backend: "supabase" | "express" | "fastify" | "nextjs-api" | "none" | "unknown";
17
+ database: "supabase" | "postgres" | "mysql" | "mongodb" | "sqlite" | "none" | "unknown";
18
+ styling: "tailwind" | "css-modules" | "styled-components" | "emotion" | "sass" | "css" | "unknown";
19
+ monorepo: boolean;
20
+ rootPath: string;
21
+ }
22
+ /**
23
+ * Detect project information
24
+ */
25
+ export declare function detectProject(): ProjectInfo;
26
+ /**
27
+ * Get project-specific recommendations
28
+ */
29
+ export declare function getProjectRecommendations(info: ProjectInfo): string[];
30
+ /**
31
+ * Generate a project summary string for agent prompts
32
+ */
33
+ export declare function generateProjectSummary(): string;
34
+ declare const _default: {
35
+ detectProject: typeof detectProject;
36
+ getProjectRecommendations: typeof getProjectRecommendations;
37
+ generateProjectSummary: typeof generateProjectSummary;
38
+ };
39
+ export default _default;
40
+ //# sourceMappingURL=project-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detection.d.ts","sourceRoot":"","sources":["../../src/utils/project-detection.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAChF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D,QAAQ,EAAE,YAAY,GAAG,YAAY,GAAG,MAAM,CAAC;IAC/C,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACnE,gBAAgB,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IACpF,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IAChF,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACxF,OAAO,EAAE,UAAU,GAAG,aAAa,GAAG,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACnG,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAwID;;GAEG;AACH,wBAAgB,aAAa,IAAI,WAAW,CA+B3C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,CAoBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAuB/C;;;;;;AAED,wBAIE"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * Project Detection Utilities
3
+ * Automatically detects project type, framework, and technology stack.
4
+ * Enables the agent to adapt its behavior based on the project context.
5
+ */
6
+ import { existsSync, readFileSync } from "fs";
7
+ import { resolve, join } from "path";
8
+ import { agentConfig } from "../config/agent-config.js";
9
+ /**
10
+ * Detect project type from package.json
11
+ */
12
+ function detectFromPackageJson(packageJsonPath) {
13
+ const info = {};
14
+ try {
15
+ const content = readFileSync(packageJsonPath, "utf-8");
16
+ const pkg = JSON.parse(content);
17
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
18
+ // Detect framework
19
+ if (deps["next"]) {
20
+ info.type = "nextjs";
21
+ info.framework = "Next.js";
22
+ info.buildTool = "turbopack"; // Next.js 13+ uses Turbopack
23
+ }
24
+ else if (deps["react"]) {
25
+ info.type = "react";
26
+ info.framework = "React";
27
+ }
28
+ else if (deps["vue"]) {
29
+ info.type = "vue";
30
+ info.framework = "Vue.js";
31
+ }
32
+ else if (deps["svelte"]) {
33
+ info.type = "svelte";
34
+ info.framework = "Svelte";
35
+ }
36
+ else if (deps["@angular/core"]) {
37
+ info.type = "angular";
38
+ info.framework = "Angular";
39
+ }
40
+ // Detect build tool
41
+ if (deps["vite"]) {
42
+ info.buildTool = "vite";
43
+ }
44
+ else if (deps["webpack"]) {
45
+ info.buildTool = "webpack";
46
+ }
47
+ else if (deps["rollup"]) {
48
+ info.buildTool = "rollup";
49
+ }
50
+ // Detect testing framework
51
+ if (deps["vitest"]) {
52
+ info.testingFramework = "vitest";
53
+ }
54
+ else if (deps["jest"]) {
55
+ info.testingFramework = "jest";
56
+ }
57
+ else if (deps["@playwright/test"]) {
58
+ info.testingFramework = "playwright";
59
+ }
60
+ else if (deps["cypress"]) {
61
+ info.testingFramework = "cypress";
62
+ }
63
+ // Detect backend
64
+ if (deps["@supabase/supabase-js"]) {
65
+ info.backend = "supabase";
66
+ }
67
+ else if (deps["express"]) {
68
+ info.backend = "express";
69
+ }
70
+ else if (deps["fastify"]) {
71
+ info.backend = "fastify";
72
+ }
73
+ else if (info.type === "nextjs") {
74
+ info.backend = "nextjs-api";
75
+ }
76
+ // Detect database
77
+ if (deps["@supabase/supabase-js"]) {
78
+ info.database = "supabase";
79
+ }
80
+ else if (deps["pg"] || deps["postgres"]) {
81
+ info.database = "postgres";
82
+ }
83
+ else if (deps["mysql2"] || deps["mysql"]) {
84
+ info.database = "mysql";
85
+ }
86
+ else if (deps["mongodb"]) {
87
+ info.database = "mongodb";
88
+ }
89
+ else if (deps["better-sqlite3"] || deps["sqlite3"]) {
90
+ info.database = "sqlite";
91
+ }
92
+ // Detect styling
93
+ if (deps["tailwindcss"]) {
94
+ info.styling = "tailwind";
95
+ }
96
+ else if (deps["styled-components"]) {
97
+ info.styling = "styled-components";
98
+ }
99
+ else if (deps["@emotion/react"] || deps["@emotion/styled"]) {
100
+ info.styling = "emotion";
101
+ }
102
+ else if (deps["sass"] || deps["node-sass"]) {
103
+ info.styling = "sass";
104
+ }
105
+ else if (existsSync(resolve(agentConfig.paths.projectRoot, "src", "index.module.css"))) {
106
+ info.styling = "css-modules";
107
+ }
108
+ // Detect language
109
+ const hasTS = existsSync(resolve(agentConfig.paths.projectRoot, "tsconfig.json"));
110
+ const hasJS = existsSync(resolve(agentConfig.paths.projectRoot, "jsconfig.json")) ||
111
+ deps["@babel/core"] !== undefined;
112
+ if (hasTS && hasJS) {
113
+ info.language = "both";
114
+ }
115
+ else if (hasTS) {
116
+ info.language = "typescript";
117
+ }
118
+ else {
119
+ info.language = "javascript";
120
+ }
121
+ // Detect monorepo
122
+ info.monorepo = existsSync(resolve(agentConfig.paths.projectRoot, "pnpm-workspace.yaml")) ||
123
+ existsSync(resolve(agentConfig.paths.projectRoot, "lerna.json")) ||
124
+ existsSync(resolve(agentConfig.paths.projectRoot, "turbo.json")) ||
125
+ (pkg.workspaces !== undefined);
126
+ }
127
+ catch (error) {
128
+ // Silently fail
129
+ }
130
+ return info;
131
+ }
132
+ /**
133
+ * Detect package manager from lock files
134
+ */
135
+ function detectPackageManager() {
136
+ const root = agentConfig.paths.projectRoot;
137
+ if (existsSync(join(root, "pnpm-lock.yaml"))) {
138
+ return "pnpm";
139
+ }
140
+ if (existsSync(join(root, "yarn.lock"))) {
141
+ return "yarn";
142
+ }
143
+ if (existsSync(join(root, "bun.lockb"))) {
144
+ return "bun";
145
+ }
146
+ if (existsSync(join(root, "package-lock.json"))) {
147
+ return "npm";
148
+ }
149
+ return "unknown";
150
+ }
151
+ /**
152
+ * Detect project information
153
+ */
154
+ export function detectProject() {
155
+ const root = agentConfig.paths.projectRoot;
156
+ const packageJsonPath = resolve(root, "package.json");
157
+ const defaults = {
158
+ type: "unknown",
159
+ framework: null,
160
+ packageManager: "unknown",
161
+ language: "javascript",
162
+ buildTool: "unknown",
163
+ testingFramework: "unknown",
164
+ backend: "unknown",
165
+ database: "unknown",
166
+ styling: "unknown",
167
+ monorepo: false,
168
+ rootPath: root,
169
+ };
170
+ if (!existsSync(packageJsonPath)) {
171
+ return defaults;
172
+ }
173
+ const detected = detectFromPackageJson(packageJsonPath);
174
+ const packageManager = detectPackageManager();
175
+ return {
176
+ ...defaults,
177
+ ...detected,
178
+ packageManager,
179
+ rootPath: root,
180
+ };
181
+ }
182
+ /**
183
+ * Get project-specific recommendations
184
+ */
185
+ export function getProjectRecommendations(info) {
186
+ const recommendations = [];
187
+ if (info.type === "unknown") {
188
+ recommendations.push("Project type could not be detected - ensure package.json exists");
189
+ }
190
+ if (info.testingFramework === "none" || info.testingFramework === "unknown") {
191
+ recommendations.push("Consider adding a testing framework (Vitest, Jest, or Playwright)");
192
+ }
193
+ if (info.language === "javascript" && info.type !== "unknown") {
194
+ recommendations.push("Consider migrating to TypeScript for better type safety");
195
+ }
196
+ if (info.buildTool === "unknown" && info.type !== "vanilla") {
197
+ recommendations.push("Build tool not detected - ensure build configuration exists");
198
+ }
199
+ return recommendations;
200
+ }
201
+ /**
202
+ * Generate a project summary string for agent prompts
203
+ */
204
+ export function generateProjectSummary() {
205
+ const info = detectProject();
206
+ const recommendations = getProjectRecommendations(info);
207
+ let summary = "\n## PROJECT DETECTION\n\n";
208
+ summary += `Type: ${info.type}${info.framework ? ` (${info.framework})` : ""}\n`;
209
+ summary += `Package Manager: ${info.packageManager}\n`;
210
+ summary += `Language: ${info.language}\n`;
211
+ summary += `Build Tool: ${info.buildTool}\n`;
212
+ summary += `Testing: ${info.testingFramework}\n`;
213
+ summary += `Backend: ${info.backend}\n`;
214
+ summary += `Database: ${info.database}\n`;
215
+ summary += `Styling: ${info.styling}\n`;
216
+ summary += `Monorepo: ${info.monorepo ? "Yes" : "No"}\n`;
217
+ if (recommendations.length > 0) {
218
+ summary += "\n💡 Recommendations:\n";
219
+ recommendations.forEach(r => {
220
+ summary += ` - ${r}\n`;
221
+ });
222
+ }
223
+ return summary;
224
+ }
225
+ export default {
226
+ detectProject,
227
+ getProjectRecommendations,
228
+ generateProjectSummary,
229
+ };
230
+ //# sourceMappingURL=project-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detection.js","sourceRoot":"","sources":["../../src/utils/project-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Session Manager (Features A1, A6)
3
+ * Handles session persistence, resumption, and file checkpointing
4
+ *
5
+ * Copyright (c) 2025 Dobeu Tech Solutions LLC
6
+ * Licensed under CC BY-NC 4.0
7
+ */
8
+ /**
9
+ * Session state for persistence
10
+ */
11
+ export interface SessionState {
12
+ session_id: string;
13
+ parent_session_id: string | null;
14
+ created_at: string;
15
+ last_active: string;
16
+ status: 'active' | 'completed' | 'interrupted' | 'forked';
17
+ current_feature: string | null;
18
+ completed_features: string[];
19
+ failed_features: string[];
20
+ context_summary: string;
21
+ important_decisions: string[];
22
+ tools_initialized: string[];
23
+ mcp_servers_active: string[];
24
+ checkpoints: CheckpointInfo[];
25
+ current_checkpoint: string | null;
26
+ }
27
+ /**
28
+ * Checkpoint information
29
+ */
30
+ export interface CheckpointInfo {
31
+ id: string;
32
+ created_at: string;
33
+ description: string;
34
+ feature_id: string | null;
35
+ files_snapshot: FileSnapshot[];
36
+ can_restore: boolean;
37
+ }
38
+ /**
39
+ * File snapshot for checkpointing
40
+ */
41
+ export interface FileSnapshot {
42
+ path: string;
43
+ hash: string;
44
+ size: number;
45
+ backed_up: boolean;
46
+ }
47
+ /**
48
+ * Generate unique session ID
49
+ */
50
+ export declare function generateSessionId(): string;
51
+ /**
52
+ * Generate checkpoint ID
53
+ */
54
+ export declare function generateCheckpointId(): string;
55
+ /**
56
+ * Create new session state
57
+ */
58
+ export declare function createSessionState(parentSessionId?: string | null): SessionState;
59
+ /**
60
+ * Save session state
61
+ */
62
+ export declare function saveSessionState(agentDir: string, state: SessionState): void;
63
+ /**
64
+ * Load session state
65
+ */
66
+ export declare function loadSessionState(agentDir: string): SessionState | null;
67
+ /**
68
+ * Load specific session by ID
69
+ */
70
+ export declare function loadSessionById(agentDir: string, sessionId: string): SessionState | null;
71
+ /**
72
+ * Fork session for A/B testing
73
+ */
74
+ export declare function forkSession(agentDir: string, parentState: SessionState): SessionState;
75
+ /**
76
+ * List all sessions
77
+ */
78
+ export declare function listSessions(agentDir: string): SessionState[];
79
+ /**
80
+ * Create checkpoint
81
+ */
82
+ export declare function createCheckpoint(agentDir: string, projectRoot: string, description: string, featureId?: string | null): CheckpointInfo;
83
+ /**
84
+ * Restore checkpoint
85
+ */
86
+ export declare function restoreCheckpoint(agentDir: string, projectRoot: string, checkpointId: string): boolean;
87
+ /**
88
+ * List checkpoints
89
+ */
90
+ export declare function listCheckpoints(agentDir: string): CheckpointInfo[];
91
+ /**
92
+ * Clean old checkpoints (keep last N)
93
+ */
94
+ export declare function cleanOldCheckpoints(agentDir: string, keepCount?: number): void;
95
+ /**
96
+ * Get session resume options for SDK
97
+ */
98
+ export declare function getResumeOptions(sessionState: SessionState): object;
99
+ /**
100
+ * Generate session summary for context preservation
101
+ */
102
+ export declare function generateSessionSummary(state: SessionState): string;
103
+ declare const _default: {
104
+ generateSessionId: typeof generateSessionId;
105
+ createSessionState: typeof createSessionState;
106
+ saveSessionState: typeof saveSessionState;
107
+ loadSessionState: typeof loadSessionState;
108
+ loadSessionById: typeof loadSessionById;
109
+ forkSession: typeof forkSession;
110
+ listSessions: typeof listSessions;
111
+ createCheckpoint: typeof createCheckpoint;
112
+ restoreCheckpoint: typeof restoreCheckpoint;
113
+ listCheckpoints: typeof listCheckpoints;
114
+ cleanOldCheckpoints: typeof cleanOldCheckpoints;
115
+ getResumeOptions: typeof getResumeOptions;
116
+ generateSessionSummary: typeof generateSessionSummary;
117
+ };
118
+ export default _default;
119
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/utils/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;IAG1D,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAC;IAG1B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAG9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAG7B,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,GAAE,MAAM,GAAG,IAAW,GAAG,YAAY,CAiBtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAkB5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAUtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAWxF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,GAAG,YAAY,CAkBrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAqB7D;AAYD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,MAAM,GAAG,IAAW,GAC9B,cAAc,CAmFhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAuCT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE,CAuBlE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAW,GAAG,IAAI,CAelF;AAsDD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAMnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAwBlE;;;;;;;;;;;;;;;;AAED,wBAcE"}