@cluesmith/codev 1.1.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 (245) hide show
  1. package/bin/af.js +8 -0
  2. package/bin/codev.js +4 -0
  3. package/bin/consult.js +7 -0
  4. package/dist/agent-farm/cli.d.ts +11 -0
  5. package/dist/agent-farm/cli.d.ts.map +1 -0
  6. package/dist/agent-farm/cli.js +359 -0
  7. package/dist/agent-farm/cli.js.map +1 -0
  8. package/dist/agent-farm/commands/cleanup.d.ts +12 -0
  9. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -0
  10. package/dist/agent-farm/commands/cleanup.js +154 -0
  11. package/dist/agent-farm/commands/cleanup.js.map +1 -0
  12. package/dist/agent-farm/commands/db.d.ts +38 -0
  13. package/dist/agent-farm/commands/db.d.ts.map +1 -0
  14. package/dist/agent-farm/commands/db.js +133 -0
  15. package/dist/agent-farm/commands/db.js.map +1 -0
  16. package/dist/agent-farm/commands/index.d.ts +11 -0
  17. package/dist/agent-farm/commands/index.d.ts.map +1 -0
  18. package/dist/agent-farm/commands/index.js +11 -0
  19. package/dist/agent-farm/commands/index.js.map +1 -0
  20. package/dist/agent-farm/commands/open.d.ts +15 -0
  21. package/dist/agent-farm/commands/open.d.ts.map +1 -0
  22. package/dist/agent-farm/commands/open.js +118 -0
  23. package/dist/agent-farm/commands/open.js.map +1 -0
  24. package/dist/agent-farm/commands/rename.d.ts +13 -0
  25. package/dist/agent-farm/commands/rename.d.ts.map +1 -0
  26. package/dist/agent-farm/commands/rename.js +33 -0
  27. package/dist/agent-farm/commands/rename.js.map +1 -0
  28. package/dist/agent-farm/commands/send.d.ts +9 -0
  29. package/dist/agent-farm/commands/send.d.ts.map +1 -0
  30. package/dist/agent-farm/commands/send.js +282 -0
  31. package/dist/agent-farm/commands/send.js.map +1 -0
  32. package/dist/agent-farm/commands/spawn.d.ts +15 -0
  33. package/dist/agent-farm/commands/spawn.d.ts.map +1 -0
  34. package/dist/agent-farm/commands/spawn.js +575 -0
  35. package/dist/agent-farm/commands/spawn.js.map +1 -0
  36. package/dist/agent-farm/commands/start.d.ts +9 -0
  37. package/dist/agent-farm/commands/start.d.ts.map +1 -0
  38. package/dist/agent-farm/commands/start.js +175 -0
  39. package/dist/agent-farm/commands/start.js.map +1 -0
  40. package/dist/agent-farm/commands/status.d.ts +8 -0
  41. package/dist/agent-farm/commands/status.d.ts.map +1 -0
  42. package/dist/agent-farm/commands/status.js +123 -0
  43. package/dist/agent-farm/commands/status.js.map +1 -0
  44. package/dist/agent-farm/commands/stop.d.ts +8 -0
  45. package/dist/agent-farm/commands/stop.d.ts.map +1 -0
  46. package/dist/agent-farm/commands/stop.js +76 -0
  47. package/dist/agent-farm/commands/stop.js.map +1 -0
  48. package/dist/agent-farm/commands/tower.d.ts +19 -0
  49. package/dist/agent-farm/commands/tower.d.ts.map +1 -0
  50. package/dist/agent-farm/commands/tower.js +125 -0
  51. package/dist/agent-farm/commands/tower.js.map +1 -0
  52. package/dist/agent-farm/commands/tutorial.d.ts +10 -0
  53. package/dist/agent-farm/commands/tutorial.d.ts.map +1 -0
  54. package/dist/agent-farm/commands/tutorial.js +49 -0
  55. package/dist/agent-farm/commands/tutorial.js.map +1 -0
  56. package/dist/agent-farm/commands/util.d.ts +15 -0
  57. package/dist/agent-farm/commands/util.d.ts.map +1 -0
  58. package/dist/agent-farm/commands/util.js +108 -0
  59. package/dist/agent-farm/commands/util.js.map +1 -0
  60. package/dist/agent-farm/db/errors.d.ts +17 -0
  61. package/dist/agent-farm/db/errors.d.ts.map +1 -0
  62. package/dist/agent-farm/db/errors.js +46 -0
  63. package/dist/agent-farm/db/errors.js.map +1 -0
  64. package/dist/agent-farm/db/index.d.ts +41 -0
  65. package/dist/agent-farm/db/index.d.ts.map +1 -0
  66. package/dist/agent-farm/db/index.js +168 -0
  67. package/dist/agent-farm/db/index.js.map +1 -0
  68. package/dist/agent-farm/db/migrate.d.ts +15 -0
  69. package/dist/agent-farm/db/migrate.d.ts.map +1 -0
  70. package/dist/agent-farm/db/migrate.js +137 -0
  71. package/dist/agent-farm/db/migrate.js.map +1 -0
  72. package/dist/agent-farm/db/schema.d.ts +16 -0
  73. package/dist/agent-farm/db/schema.d.ts.map +1 -0
  74. package/dist/agent-farm/db/schema.js +103 -0
  75. package/dist/agent-farm/db/schema.js.map +1 -0
  76. package/dist/agent-farm/db/types.d.ts +87 -0
  77. package/dist/agent-farm/db/types.d.ts.map +1 -0
  78. package/dist/agent-farm/db/types.js +65 -0
  79. package/dist/agent-farm/db/types.js.map +1 -0
  80. package/dist/agent-farm/index.d.ts +7 -0
  81. package/dist/agent-farm/index.d.ts.map +1 -0
  82. package/dist/agent-farm/index.js +373 -0
  83. package/dist/agent-farm/index.js.map +1 -0
  84. package/dist/agent-farm/servers/annotate-server.d.ts +9 -0
  85. package/dist/agent-farm/servers/annotate-server.d.ts.map +1 -0
  86. package/dist/agent-farm/servers/annotate-server.js +136 -0
  87. package/dist/agent-farm/servers/annotate-server.js.map +1 -0
  88. package/dist/agent-farm/servers/dashboard-server.d.ts +9 -0
  89. package/dist/agent-farm/servers/dashboard-server.d.ts.map +1 -0
  90. package/dist/agent-farm/servers/dashboard-server.js +939 -0
  91. package/dist/agent-farm/servers/dashboard-server.js.map +1 -0
  92. package/dist/agent-farm/servers/tower-server.d.ts +9 -0
  93. package/dist/agent-farm/servers/tower-server.d.ts.map +1 -0
  94. package/dist/agent-farm/servers/tower-server.js +463 -0
  95. package/dist/agent-farm/servers/tower-server.js.map +1 -0
  96. package/dist/agent-farm/state.d.ts +93 -0
  97. package/dist/agent-farm/state.d.ts.map +1 -0
  98. package/dist/agent-farm/state.js +253 -0
  99. package/dist/agent-farm/state.js.map +1 -0
  100. package/dist/agent-farm/tutorial/index.d.ts +8 -0
  101. package/dist/agent-farm/tutorial/index.d.ts.map +1 -0
  102. package/dist/agent-farm/tutorial/index.js +8 -0
  103. package/dist/agent-farm/tutorial/index.js.map +1 -0
  104. package/dist/agent-farm/tutorial/prompts.d.ts +57 -0
  105. package/dist/agent-farm/tutorial/prompts.d.ts.map +1 -0
  106. package/dist/agent-farm/tutorial/prompts.js +147 -0
  107. package/dist/agent-farm/tutorial/prompts.js.map +1 -0
  108. package/dist/agent-farm/tutorial/runner.d.ts +52 -0
  109. package/dist/agent-farm/tutorial/runner.d.ts.map +1 -0
  110. package/dist/agent-farm/tutorial/runner.js +204 -0
  111. package/dist/agent-farm/tutorial/runner.js.map +1 -0
  112. package/dist/agent-farm/tutorial/state.d.ts +26 -0
  113. package/dist/agent-farm/tutorial/state.d.ts.map +1 -0
  114. package/dist/agent-farm/tutorial/state.js +89 -0
  115. package/dist/agent-farm/tutorial/state.js.map +1 -0
  116. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +7 -0
  117. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +1 -0
  118. package/dist/agent-farm/tutorial/steps/first-spec.js +136 -0
  119. package/dist/agent-farm/tutorial/steps/first-spec.js.map +1 -0
  120. package/dist/agent-farm/tutorial/steps/implementation.d.ts +7 -0
  121. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +1 -0
  122. package/dist/agent-farm/tutorial/steps/implementation.js +76 -0
  123. package/dist/agent-farm/tutorial/steps/implementation.js.map +1 -0
  124. package/dist/agent-farm/tutorial/steps/index.d.ts +10 -0
  125. package/dist/agent-farm/tutorial/steps/index.d.ts.map +1 -0
  126. package/dist/agent-farm/tutorial/steps/index.js +10 -0
  127. package/dist/agent-farm/tutorial/steps/index.js.map +1 -0
  128. package/dist/agent-farm/tutorial/steps/planning.d.ts +7 -0
  129. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +1 -0
  130. package/dist/agent-farm/tutorial/steps/planning.js +143 -0
  131. package/dist/agent-farm/tutorial/steps/planning.js.map +1 -0
  132. package/dist/agent-farm/tutorial/steps/review.d.ts +7 -0
  133. package/dist/agent-farm/tutorial/steps/review.d.ts.map +1 -0
  134. package/dist/agent-farm/tutorial/steps/review.js +78 -0
  135. package/dist/agent-farm/tutorial/steps/review.js.map +1 -0
  136. package/dist/agent-farm/tutorial/steps/setup.d.ts +7 -0
  137. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +1 -0
  138. package/dist/agent-farm/tutorial/steps/setup.js +126 -0
  139. package/dist/agent-farm/tutorial/steps/setup.js.map +1 -0
  140. package/dist/agent-farm/tutorial/steps/welcome.d.ts +7 -0
  141. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +1 -0
  142. package/dist/agent-farm/tutorial/steps/welcome.js +50 -0
  143. package/dist/agent-farm/tutorial/steps/welcome.js.map +1 -0
  144. package/dist/agent-farm/types.d.ts +131 -0
  145. package/dist/agent-farm/types.d.ts.map +1 -0
  146. package/dist/agent-farm/types.js +5 -0
  147. package/dist/agent-farm/types.js.map +1 -0
  148. package/dist/agent-farm/utils/config.d.ts +27 -0
  149. package/dist/agent-farm/utils/config.d.ts.map +1 -0
  150. package/dist/agent-farm/utils/config.js +242 -0
  151. package/dist/agent-farm/utils/config.js.map +1 -0
  152. package/dist/agent-farm/utils/deps.d.ts +51 -0
  153. package/dist/agent-farm/utils/deps.d.ts.map +1 -0
  154. package/dist/agent-farm/utils/deps.js +194 -0
  155. package/dist/agent-farm/utils/deps.js.map +1 -0
  156. package/dist/agent-farm/utils/index.d.ts +6 -0
  157. package/dist/agent-farm/utils/index.d.ts.map +1 -0
  158. package/dist/agent-farm/utils/index.js +6 -0
  159. package/dist/agent-farm/utils/index.js.map +1 -0
  160. package/dist/agent-farm/utils/logger.d.ts +31 -0
  161. package/dist/agent-farm/utils/logger.d.ts.map +1 -0
  162. package/dist/agent-farm/utils/logger.js +58 -0
  163. package/dist/agent-farm/utils/logger.js.map +1 -0
  164. package/dist/agent-farm/utils/orphan-handler.d.ts +27 -0
  165. package/dist/agent-farm/utils/orphan-handler.d.ts.map +1 -0
  166. package/dist/agent-farm/utils/orphan-handler.js +127 -0
  167. package/dist/agent-farm/utils/orphan-handler.js.map +1 -0
  168. package/dist/agent-farm/utils/port-registry.d.ts +58 -0
  169. package/dist/agent-farm/utils/port-registry.d.ts.map +1 -0
  170. package/dist/agent-farm/utils/port-registry.js +149 -0
  171. package/dist/agent-farm/utils/port-registry.js.map +1 -0
  172. package/dist/agent-farm/utils/shell.d.ts +45 -0
  173. package/dist/agent-farm/utils/shell.d.ts.map +1 -0
  174. package/dist/agent-farm/utils/shell.js +120 -0
  175. package/dist/agent-farm/utils/shell.js.map +1 -0
  176. package/dist/cli.d.ts +10 -0
  177. package/dist/cli.d.ts.map +1 -0
  178. package/dist/cli.js +160 -0
  179. package/dist/cli.js.map +1 -0
  180. package/dist/commands/adopt.d.ts +12 -0
  181. package/dist/commands/adopt.d.ts.map +1 -0
  182. package/dist/commands/adopt.js +178 -0
  183. package/dist/commands/adopt.js.map +1 -0
  184. package/dist/commands/consult/index.d.ts +17 -0
  185. package/dist/commands/consult/index.d.ts.map +1 -0
  186. package/dist/commands/consult/index.js +405 -0
  187. package/dist/commands/consult/index.js.map +1 -0
  188. package/dist/commands/doctor.d.ts +10 -0
  189. package/dist/commands/doctor.d.ts.map +1 -0
  190. package/dist/commands/doctor.js +346 -0
  191. package/dist/commands/doctor.js.map +1 -0
  192. package/dist/commands/init.d.ts +12 -0
  193. package/dist/commands/init.d.ts.map +1 -0
  194. package/dist/commands/init.js +167 -0
  195. package/dist/commands/init.js.map +1 -0
  196. package/dist/commands/tower.d.ts +16 -0
  197. package/dist/commands/tower.d.ts.map +1 -0
  198. package/dist/commands/tower.js +21 -0
  199. package/dist/commands/tower.js.map +1 -0
  200. package/dist/commands/update.d.ts +13 -0
  201. package/dist/commands/update.d.ts.map +1 -0
  202. package/dist/commands/update.js +137 -0
  203. package/dist/commands/update.js.map +1 -0
  204. package/dist/lib/templates.d.ts +57 -0
  205. package/dist/lib/templates.d.ts.map +1 -0
  206. package/dist/lib/templates.js +205 -0
  207. package/dist/lib/templates.js.map +1 -0
  208. package/package.json +55 -0
  209. package/templates/AGENTS.md +49 -0
  210. package/templates/CLAUDE.md +47 -0
  211. package/templates/DEPENDENCIES.md +344 -0
  212. package/templates/agents/architecture-documenter.md +189 -0
  213. package/templates/agents/codev-updater.md +276 -0
  214. package/templates/agents/spider-protocol-updater.md +118 -0
  215. package/templates/annotate.html +903 -0
  216. package/templates/bin/agent-farm +18 -0
  217. package/templates/bin/annotate-server.js +140 -0
  218. package/templates/bin/codev-doctor +335 -0
  219. package/templates/builders.md +30 -0
  220. package/templates/config.json +7 -0
  221. package/templates/dashboard-split.html +1679 -0
  222. package/templates/dashboard.html +149 -0
  223. package/templates/plans/.gitkeep +0 -0
  224. package/templates/protocols/experiment/protocol.md +229 -0
  225. package/templates/protocols/experiment/templates/notes.md +97 -0
  226. package/templates/protocols/maintain/protocol.md +235 -0
  227. package/templates/protocols/spider/protocol.md +639 -0
  228. package/templates/protocols/spider/templates/plan.md +169 -0
  229. package/templates/protocols/spider/templates/review.md +207 -0
  230. package/templates/protocols/spider/templates/spec.md +140 -0
  231. package/templates/protocols/spider-solo/protocol.md +619 -0
  232. package/templates/protocols/spider-solo/templates/plan.md +169 -0
  233. package/templates/protocols/spider-solo/templates/review.md +207 -0
  234. package/templates/protocols/spider-solo/templates/spec.md +140 -0
  235. package/templates/protocols/tick/protocol.md +250 -0
  236. package/templates/protocols/tick/templates/plan.md +67 -0
  237. package/templates/protocols/tick/templates/review.md +90 -0
  238. package/templates/protocols/tick/templates/spec.md +61 -0
  239. package/templates/reviews/.gitkeep +0 -0
  240. package/templates/roles/architect.md +230 -0
  241. package/templates/roles/builder.md +175 -0
  242. package/templates/roles/consultant.md +27 -0
  243. package/templates/specs/.gitkeep +0 -0
  244. package/templates/templates/projectlist.md +129 -0
  245. package/templates/tower.html +1032 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Tutorial step runner infrastructure
3
+ * Manages step execution, state, and progress
4
+ */
5
+ import { existsSync } from 'node:fs';
6
+ import { execSync } from 'node:child_process';
7
+ import { resolve, basename } from 'node:path';
8
+ import { getConfig } from '../utils/index.js';
9
+ import { loadTutorialState, saveTutorialState, getOrCreateTutorialState, completeStep } from './state.js';
10
+ import * as prompts from './prompts.js';
11
+ import { logger } from '../utils/logger.js';
12
+ /**
13
+ * Detect project type based on files present
14
+ */
15
+ function detectProjectType(projectPath) {
16
+ if (existsSync(resolve(projectPath, 'package.json'))) {
17
+ return 'nodejs';
18
+ }
19
+ if (existsSync(resolve(projectPath, 'pyproject.toml')) ||
20
+ existsSync(resolve(projectPath, 'setup.py')) ||
21
+ existsSync(resolve(projectPath, 'requirements.txt'))) {
22
+ return 'python';
23
+ }
24
+ return 'other';
25
+ }
26
+ /**
27
+ * Check if directory is a git repository
28
+ */
29
+ function hasGitRepo(projectPath) {
30
+ try {
31
+ execSync('git rev-parse --git-dir', {
32
+ cwd: projectPath,
33
+ stdio: 'ignore',
34
+ });
35
+ return true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ /**
42
+ * Check if codev directory exists
43
+ */
44
+ function hasCodevDir(projectPath) {
45
+ return existsSync(resolve(projectPath, 'codev'));
46
+ }
47
+ /**
48
+ * Build step context from current state
49
+ */
50
+ async function buildContext(state) {
51
+ const config = getConfig();
52
+ return {
53
+ state,
54
+ projectPath: config.projectRoot,
55
+ projectName: basename(config.projectRoot),
56
+ projectType: detectProjectType(config.projectRoot),
57
+ hasGit: hasGitRepo(config.projectRoot),
58
+ hasCodev: hasCodevDir(config.projectRoot),
59
+ };
60
+ }
61
+ /**
62
+ * Find the index of the current step
63
+ */
64
+ function findCurrentStepIndex(steps, currentStepId) {
65
+ return steps.findIndex((s) => s.id === currentStepId);
66
+ }
67
+ /**
68
+ * Show tutorial status/progress
69
+ */
70
+ export async function showStatus(steps) {
71
+ const state = await loadTutorialState();
72
+ if (!state) {
73
+ logger.info('No tutorial in progress. Run `af tutorial` to start.');
74
+ return;
75
+ }
76
+ const currentIndex = findCurrentStepIndex(steps, state.currentStep);
77
+ logger.header('Tutorial Progress');
78
+ logger.kv('Started', new Date(state.startedAt).toLocaleDateString());
79
+ logger.kv('Last active', new Date(state.lastActiveAt).toLocaleDateString());
80
+ logger.blank();
81
+ for (let i = 0; i < steps.length; i++) {
82
+ const step = steps[i];
83
+ const isCompleted = state.completedSteps.includes(step.id);
84
+ const isCurrent = i === currentIndex;
85
+ let prefix = ' ';
86
+ if (isCompleted) {
87
+ prefix = '✓ ';
88
+ }
89
+ else if (isCurrent) {
90
+ prefix = '→ ';
91
+ }
92
+ const status = isCompleted ? '(completed)' : isCurrent ? '(current)' : '';
93
+ console.log(`${prefix}${i + 1}. ${step.title} ${status}`);
94
+ }
95
+ logger.blank();
96
+ const completed = state.completedSteps.length;
97
+ const total = steps.length;
98
+ logger.info(`Progress: ${completed}/${total} steps completed`);
99
+ }
100
+ /**
101
+ * Skip to the next step
102
+ */
103
+ export async function skipCurrentStep(steps) {
104
+ const state = await loadTutorialState();
105
+ if (!state) {
106
+ logger.error('No tutorial in progress. Run `af tutorial` to start.');
107
+ return;
108
+ }
109
+ const currentIndex = findCurrentStepIndex(steps, state.currentStep);
110
+ if (currentIndex < 0) {
111
+ logger.error('Current step not found. Try resetting the tutorial.');
112
+ return;
113
+ }
114
+ if (currentIndex >= steps.length - 1) {
115
+ logger.info('Already at the last step.');
116
+ return;
117
+ }
118
+ const currentStep = steps[currentIndex];
119
+ const nextStep = steps[currentIndex + 1];
120
+ await completeStep(state, currentStep.id, nextStep.id);
121
+ logger.success(`Skipped "${currentStep.title}"`);
122
+ logger.info(`Now at: "${nextStep.title}"`);
123
+ }
124
+ /**
125
+ * Run the tutorial from current step
126
+ */
127
+ export async function runTutorial(steps) {
128
+ const state = await getOrCreateTutorialState();
129
+ let ctx = await buildContext(state);
130
+ let currentIndex = findCurrentStepIndex(steps, state.currentStep);
131
+ // If current step not found, start from the beginning
132
+ if (currentIndex < 0) {
133
+ currentIndex = 0;
134
+ state.currentStep = steps[0].id;
135
+ await saveTutorialState(state);
136
+ }
137
+ // Show welcome if resuming
138
+ if (state.completedSteps.length > 0) {
139
+ prompts.section('Resuming Tutorial');
140
+ prompts.info(`You're on step ${currentIndex + 1} of ${steps.length}: ${steps[currentIndex].title}`);
141
+ console.log();
142
+ const shouldContinue = await prompts.confirm('Continue from where you left off?');
143
+ if (!shouldContinue) {
144
+ const restart = await prompts.confirm('Start from the beginning?', false);
145
+ if (restart) {
146
+ state.currentStep = steps[0].id;
147
+ state.completedSteps = [];
148
+ state.userResponses = {};
149
+ await saveTutorialState(state);
150
+ currentIndex = 0;
151
+ ctx = await buildContext(state);
152
+ }
153
+ else {
154
+ logger.info('Tutorial paused. Run `af tutorial` to resume later.');
155
+ return;
156
+ }
157
+ }
158
+ }
159
+ // Run steps sequentially
160
+ while (currentIndex < steps.length) {
161
+ const step = steps[currentIndex];
162
+ prompts.section(`Step ${currentIndex + 1}/${steps.length}: ${step.title}`);
163
+ try {
164
+ const result = await step.run(ctx);
165
+ if (result.status === 'aborted') {
166
+ // Save current position and exit
167
+ await saveTutorialState(ctx.state);
168
+ logger.info('Tutorial paused. Run `af tutorial` to resume.');
169
+ return;
170
+ }
171
+ // Update state with results
172
+ const nextStepId = currentIndex < steps.length - 1 ? steps[currentIndex + 1].id : null;
173
+ ctx.state = await completeStep(ctx.state, step.id, nextStepId, result.responses);
174
+ // Refresh context in case step modified things (like creating codev dir)
175
+ ctx = await buildContext(ctx.state);
176
+ currentIndex++;
177
+ }
178
+ catch (error) {
179
+ // Handle Ctrl+C gracefully
180
+ if (error instanceof Error && error.message.includes('readline was closed')) {
181
+ console.log();
182
+ await saveTutorialState(ctx.state);
183
+ logger.info('Tutorial paused. Run `af tutorial` to resume.');
184
+ return;
185
+ }
186
+ throw error;
187
+ }
188
+ }
189
+ // Tutorial complete!
190
+ prompts.section('Tutorial Complete!');
191
+ prompts.success('Congratulations! You\'ve completed the Agent Farm tutorial.');
192
+ console.log();
193
+ prompts.content('You now know how to:');
194
+ prompts.bullet('Set up Codev in your project');
195
+ prompts.bullet('Create specifications for new features');
196
+ prompts.bullet('Write implementation plans');
197
+ prompts.bullet('Use the Architect/Builder pattern');
198
+ console.log();
199
+ prompts.content('For more information, check out:');
200
+ prompts.bullet('CLAUDE.md or AGENTS.md in your project');
201
+ prompts.bullet('codev/protocols/ for protocol documentation');
202
+ prompts.bullet('Run `af --help` to see all available commands');
203
+ }
204
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Tutorial state management
3
+ * Persists tutorial progress to disk
4
+ */
5
+ import type { TutorialState } from '../types.js';
6
+ /**
7
+ * Load tutorial state from disk
8
+ */
9
+ export declare function loadTutorialState(): Promise<TutorialState | null>;
10
+ /**
11
+ * Save tutorial state to disk
12
+ */
13
+ export declare function saveTutorialState(state: TutorialState): Promise<void>;
14
+ /**
15
+ * Reset tutorial state (delete the file)
16
+ */
17
+ export declare function resetTutorialState(): Promise<void>;
18
+ /**
19
+ * Get or create tutorial state
20
+ */
21
+ export declare function getOrCreateTutorialState(): Promise<TutorialState>;
22
+ /**
23
+ * Mark a step as completed and advance to the next step
24
+ */
25
+ export declare function completeStep(state: TutorialState, stepId: string, nextStepId: string | null, responses?: Record<string, string>): Promise<TutorialState>;
26
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/state.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsBjD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAavE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMxD;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC,CASvE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAexB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Tutorial state management
3
+ * Persists tutorial progress to disk
4
+ */
5
+ import { readFile, writeFile, unlink } from 'node:fs/promises';
6
+ import { existsSync } from 'node:fs';
7
+ import { resolve } from 'node:path';
8
+ import { getConfig, ensureDirectories } from '../utils/index.js';
9
+ const TUTORIAL_STATE_FILE = 'tutorial.json';
10
+ function getTutorialStatePath() {
11
+ const config = getConfig();
12
+ return resolve(config.stateDir, TUTORIAL_STATE_FILE);
13
+ }
14
+ function getDefaultTutorialState() {
15
+ const config = getConfig();
16
+ return {
17
+ projectPath: config.projectRoot,
18
+ currentStep: 'welcome',
19
+ completedSteps: [],
20
+ userResponses: {},
21
+ startedAt: new Date().toISOString(),
22
+ lastActiveAt: new Date().toISOString(),
23
+ };
24
+ }
25
+ /**
26
+ * Load tutorial state from disk
27
+ */
28
+ export async function loadTutorialState() {
29
+ const statePath = getTutorialStatePath();
30
+ if (!existsSync(statePath)) {
31
+ return null;
32
+ }
33
+ try {
34
+ const content = await readFile(statePath, 'utf-8');
35
+ return JSON.parse(content);
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Save tutorial state to disk
43
+ */
44
+ export async function saveTutorialState(state) {
45
+ const config = getConfig();
46
+ await ensureDirectories(config);
47
+ // Update lastActiveAt on every save
48
+ state.lastActiveAt = new Date().toISOString();
49
+ const statePath = getTutorialStatePath();
50
+ await writeFile(statePath, JSON.stringify(state, null, 2));
51
+ }
52
+ /**
53
+ * Reset tutorial state (delete the file)
54
+ */
55
+ export async function resetTutorialState() {
56
+ const statePath = getTutorialStatePath();
57
+ if (existsSync(statePath)) {
58
+ await unlink(statePath);
59
+ }
60
+ }
61
+ /**
62
+ * Get or create tutorial state
63
+ */
64
+ export async function getOrCreateTutorialState() {
65
+ const existing = await loadTutorialState();
66
+ if (existing) {
67
+ return existing;
68
+ }
69
+ const newState = getDefaultTutorialState();
70
+ await saveTutorialState(newState);
71
+ return newState;
72
+ }
73
+ /**
74
+ * Mark a step as completed and advance to the next step
75
+ */
76
+ export async function completeStep(state, stepId, nextStepId, responses) {
77
+ if (!state.completedSteps.includes(stepId)) {
78
+ state.completedSteps.push(stepId);
79
+ }
80
+ if (nextStepId) {
81
+ state.currentStep = nextStepId;
82
+ }
83
+ if (responses) {
84
+ state.userResponses = { ...state.userResponses, ...responses };
85
+ }
86
+ await saveTutorialState(state);
87
+ return state;
88
+ }
89
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/agent-farm/tutorial/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tutorial Step 3: First Spec Walkthrough
3
+ * Guides user through creating their first specification
4
+ */
5
+ import type { Step } from '../runner.js';
6
+ export declare const firstSpecStep: Step;
7
+ //# sourceMappingURL=first-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-spec.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/first-spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,cAAc,CAAC;AAsDlE,eAAO,MAAM,aAAa,EAAE,IA2F3B,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Tutorial Step 3: First Spec Walkthrough
3
+ * Guides user through creating their first specification
4
+ */
5
+ import { existsSync } from 'node:fs';
6
+ import { writeFile } from 'node:fs/promises';
7
+ import { resolve } from 'node:path';
8
+ import * as prompts from '../prompts.js';
9
+ function generateSpec(title, description, projectType) {
10
+ const projectContext = projectType === 'nodejs'
11
+ ? 'Node.js/TypeScript'
12
+ : projectType === 'python'
13
+ ? 'Python'
14
+ : 'your project';
15
+ return `# Specification: ${title}
16
+
17
+ ## Overview
18
+
19
+ ${description}
20
+
21
+ ## Goals
22
+
23
+ 1. [Primary goal for this feature]
24
+ 2. [Secondary goal]
25
+ 3. [Success criteria]
26
+
27
+ ## Technical Requirements
28
+
29
+ ### Context
30
+
31
+ This feature will be implemented in a ${projectContext} codebase.
32
+
33
+ ### Implementation Notes
34
+
35
+ [Add technical details here]
36
+
37
+ ## User Experience
38
+
39
+ [Describe how users will interact with this feature]
40
+
41
+ ## Success Criteria
42
+
43
+ - [ ] [Measurable criterion 1]
44
+ - [ ] [Measurable criterion 2]
45
+ - [ ] Tests pass
46
+ - [ ] Documentation updated
47
+
48
+ ## Open Questions
49
+
50
+ 1. [Any decisions that need to be made]
51
+ 2. [Unknowns to investigate]
52
+
53
+ ---
54
+
55
+ *Created via Agent Farm tutorial*
56
+ `;
57
+ }
58
+ export const firstSpecStep = {
59
+ id: 'first-spec',
60
+ title: 'Write Your First Spec',
61
+ async run(ctx) {
62
+ prompts.content('Now let\'s create your first specification!\n');
63
+ prompts.content('A spec is a document that describes WHAT you want to build.');
64
+ prompts.content('It should be clear enough that anyone (human or AI) can understand the goal.\n');
65
+ prompts.content('Good specs include:');
66
+ prompts.bullet('Clear goals and success criteria');
67
+ prompts.bullet('Technical requirements and constraints');
68
+ prompts.bullet('User experience considerations');
69
+ prompts.bullet('Open questions that need answers');
70
+ console.log();
71
+ // Ask what they want to build
72
+ prompts.content('Think of something small you\'d like to add to your project.');
73
+ prompts.content('Start small! A good first spec might be:');
74
+ prompts.bullet('Add a utility function');
75
+ prompts.bullet('Fix a small bug');
76
+ prompts.bullet('Add a configuration option');
77
+ prompts.bullet('Improve error handling');
78
+ console.log();
79
+ const title = await prompts.prompt('What do you want to build? (short title)');
80
+ if (!title) {
81
+ prompts.info('Using example: "Add logging utility"');
82
+ const exampleTitle = 'Add logging utility';
83
+ const exampleDesc = 'Create a simple logging utility that provides consistent log formatting across the application.';
84
+ prompts.content('\nHere\'s what a basic spec looks like:');
85
+ prompts.code(generateSpec(exampleTitle, exampleDesc, ctx.projectType).slice(0, 500) + '...');
86
+ console.log();
87
+ await prompts.pressEnter();
88
+ return {
89
+ status: 'completed',
90
+ responses: { specTitle: exampleTitle, specSkipped: 'true' },
91
+ };
92
+ }
93
+ const description = await prompts.prompt('Describe it in one sentence');
94
+ // Generate the spec
95
+ const specContent = generateSpec(title, description || `Implement ${title}`, ctx.projectType);
96
+ // Show preview
97
+ prompts.content('\nHere\'s your spec:\n');
98
+ console.log(specContent.slice(0, 800));
99
+ if (specContent.length > 800) {
100
+ console.log('...\n');
101
+ }
102
+ const shouldSave = await prompts.confirm('Save this spec to codev/specs/tutorial-example.md?');
103
+ if (shouldSave) {
104
+ const specsDir = resolve(ctx.projectPath, 'codev', 'specs');
105
+ const specPath = resolve(specsDir, 'tutorial-example.md');
106
+ try {
107
+ // Ensure specs directory exists
108
+ if (!existsSync(specsDir)) {
109
+ const { mkdirSync } = await import('node:fs');
110
+ mkdirSync(specsDir, { recursive: true });
111
+ }
112
+ await writeFile(specPath, specContent);
113
+ prompts.success(`Saved to codev/specs/tutorial-example.md`);
114
+ }
115
+ catch (error) {
116
+ prompts.warn(`Failed to save: ${error instanceof Error ? error.message : String(error)}`);
117
+ }
118
+ }
119
+ else {
120
+ prompts.info('Spec not saved. You can create it manually later.');
121
+ }
122
+ console.log();
123
+ prompts.content('Tips for writing good specs:');
124
+ prompts.bullet('Be specific about what success looks like');
125
+ prompts.bullet('Include constraints and non-goals');
126
+ prompts.bullet('List open questions explicitly');
127
+ prompts.bullet('Keep it focused - one feature per spec');
128
+ console.log();
129
+ await prompts.pressEnter();
130
+ return {
131
+ status: 'completed',
132
+ responses: { specTitle: title, specDescription: description },
133
+ };
134
+ },
135
+ };
136
+ //# sourceMappingURL=first-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"first-spec.js","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/first-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tutorial Step 5: Implementation Demo
3
+ * Shows how to implement using TICK or the Architect/Builder pattern
4
+ */
5
+ import type { Step } from '../runner.js';
6
+ export declare const implementationStep: Step;
7
+ //# sourceMappingURL=implementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/implementation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,cAAc,CAAC;AAGlE,eAAO,MAAM,kBAAkB,EAAE,IA+EhC,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Tutorial Step 5: Implementation Demo
3
+ * Shows how to implement using TICK or the Architect/Builder pattern
4
+ */
5
+ import * as prompts from '../prompts.js';
6
+ export const implementationStep = {
7
+ id: 'implementation',
8
+ title: 'Implementation Workflow',
9
+ async run(ctx) {
10
+ prompts.content('Now let\'s talk about implementation!\n');
11
+ prompts.content('There are two main ways to implement your specs:\n');
12
+ // TICK protocol
13
+ prompts.content('1. TICK Protocol (Simple Tasks)\n');
14
+ prompts.content('For small, well-defined work, just implement directly:');
15
+ prompts.code(`# Work with your AI assistant
16
+ "Please implement the spec at codev/specs/0001-tutorial-task.md
17
+ following the plan at codev/plans/0001-tutorial-task.md"
18
+
19
+ # The assistant will:
20
+ # 1. Read the spec and plan
21
+ # 2. Implement the changes
22
+ # 3. Write tests
23
+ # 4. Create a PR when done`);
24
+ console.log();
25
+ // Architect/Builder pattern
26
+ prompts.content('2. Architect/Builder Pattern (Complex Work)\n');
27
+ prompts.content('For larger features or parallel development:\n');
28
+ prompts.code(`# Start the dashboard
29
+ af start
30
+
31
+ # Spawn a builder for a spec
32
+ af spawn --project 0001
33
+
34
+ # Or spawn for an ad-hoc task
35
+ af spawn --task "Fix the login validation"`);
36
+ console.log();
37
+ prompts.content('The Architect/Builder pattern:');
38
+ prompts.bullet('Architect (you + AI): Creates specs, reviews work');
39
+ prompts.bullet('Builders (autonomous AI): Implement in isolated worktrees');
40
+ prompts.bullet('Each builder gets its own branch and terminal');
41
+ prompts.bullet('Multiple builders can work in parallel');
42
+ console.log();
43
+ // Key commands
44
+ prompts.content('Key Commands:\n');
45
+ prompts.step(1, 'af start - Launch the architect dashboard');
46
+ prompts.step(2, 'af spawn -p X - Spawn a builder for spec X');
47
+ prompts.step(3, 'af status - Check status of all agents');
48
+ prompts.step(4, 'af send X - Send instructions to a builder');
49
+ prompts.step(5, 'af open F - Open file F in annotation viewer');
50
+ prompts.step(6, 'af stop - Stop all agent farm processes');
51
+ console.log();
52
+ // Practical advice
53
+ prompts.content('Best Practices:\n');
54
+ prompts.bullet('Start with TICK for simple tasks');
55
+ prompts.bullet('Use Architect/Builder when you have multiple specs');
56
+ prompts.bullet('Keep specs focused - one feature per builder');
57
+ prompts.bullet('Review builder output before merging');
58
+ console.log();
59
+ const wantToTry = await prompts.confirm('Would you like to try starting the dashboard?', false);
60
+ if (wantToTry) {
61
+ prompts.content('\nTo start the dashboard, run in your terminal:\n');
62
+ prompts.highlight('af start');
63
+ console.log();
64
+ prompts.content('This will open a web-based dashboard where you can:');
65
+ prompts.bullet('See the architect terminal');
66
+ prompts.bullet('View spawned builders');
67
+ prompts.bullet('Open files in the annotation viewer');
68
+ console.log();
69
+ prompts.info('The dashboard runs at http://localhost:4200 by default.');
70
+ }
71
+ console.log();
72
+ await prompts.pressEnter();
73
+ return { status: 'completed' };
74
+ },
75
+ };
76
+ //# sourceMappingURL=implementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation.js","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/implementation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Export all tutorial steps
3
+ */
4
+ export { welcomeStep } from './welcome.js';
5
+ export { setupStep } from './setup.js';
6
+ export { firstSpecStep } from './first-spec.js';
7
+ export { planningStep } from './planning.js';
8
+ export { implementationStep } from './implementation.js';
9
+ export { reviewStep } from './review.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Export all tutorial steps
3
+ */
4
+ export { welcomeStep } from './welcome.js';
5
+ export { setupStep } from './setup.js';
6
+ export { firstSpecStep } from './first-spec.js';
7
+ export { planningStep } from './planning.js';
8
+ export { implementationStep } from './implementation.js';
9
+ export { reviewStep } from './review.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Tutorial Step 4: Planning Phase
3
+ * Shows how to create an implementation plan from a spec
4
+ */
5
+ import type { Step } from '../runner.js';
6
+ export declare const planningStep: Step;
7
+ //# sourceMappingURL=planning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../../../src/agent-farm/tutorial/steps/planning.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,cAAc,CAAC;AA0DlE,eAAO,MAAM,YAAY,EAAE,IA4F1B,CAAC"}