@bradtaylorsf/alpha-loop 1.0.0 → 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 (41) hide show
  1. package/README.md +34 -4
  2. package/dist/cli.js +25 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/history.js +196 -93
  5. package/dist/commands/history.js.map +1 -1
  6. package/dist/commands/init.d.ts +1 -1
  7. package/dist/commands/init.js +163 -107
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/resume.d.ts +8 -0
  10. package/dist/commands/resume.js +391 -0
  11. package/dist/commands/resume.js.map +1 -0
  12. package/dist/commands/review.d.ts +8 -0
  13. package/dist/commands/review.js +549 -0
  14. package/dist/commands/review.js.map +1 -0
  15. package/dist/commands/run.js +2 -2
  16. package/dist/commands/run.js.map +1 -1
  17. package/dist/commands/scan.d.ts +5 -0
  18. package/dist/commands/scan.js +129 -0
  19. package/dist/commands/scan.js.map +1 -1
  20. package/dist/commands/sync.d.ts +27 -3
  21. package/dist/commands/sync.js +222 -44
  22. package/dist/commands/sync.js.map +1 -1
  23. package/dist/lib/agent.d.ts +4 -0
  24. package/dist/lib/agent.js +43 -11
  25. package/dist/lib/agent.js.map +1 -1
  26. package/dist/lib/config.d.ts +1 -0
  27. package/dist/lib/config.js +2 -0
  28. package/dist/lib/config.js.map +1 -1
  29. package/dist/lib/github.d.ts +5 -0
  30. package/dist/lib/github.js +22 -2
  31. package/dist/lib/github.js.map +1 -1
  32. package/dist/lib/pipeline.js +19 -11
  33. package/dist/lib/pipeline.js.map +1 -1
  34. package/dist/lib/session.js +25 -5
  35. package/dist/lib/session.js.map +1 -1
  36. package/dist/lib/templates.d.ts +16 -0
  37. package/dist/lib/templates.js +59 -0
  38. package/dist/lib/templates.js.map +1 -0
  39. package/dist/lib/verify.js +18 -13
  40. package/dist/lib/verify.js.map +1 -1
  41. package/package.json +1 -1
@@ -1,48 +1,25 @@
1
- import { existsSync, writeFileSync, mkdirSync } from 'node:fs';
1
+ /**
2
+ * Init Command — full project onboarding for alpha-loop.
3
+ *
4
+ * Steps:
5
+ * 1. Create config (.alpha-loop.yaml)
6
+ * 2. Set up .gitignore
7
+ * 3. Detect and migrate legacy layout (skills/ at root, .claude/agents/)
8
+ * 4. Seed .alpha-loop/templates/ from distribution (fills gaps only)
9
+ * 5. Install playwright-cli skills (if available)
10
+ * 6. Run vision (interactive, if TTY)
11
+ * 7. Run scan (generates context + instructions)
12
+ * 8. Sync templates to configured harnesses
13
+ * 9. Install GitHub issue template
14
+ * 10. Commit generated files
15
+ */
16
+ import { existsSync, writeFileSync, readFileSync, readdirSync, copyFileSync, mkdirSync } from 'node:fs';
2
17
  import { join } from 'node:path';
3
- import { detectRepo } from '../lib/config.js';
18
+ import { detectRepo, loadConfig } from '../lib/config.js';
4
19
  import { exec } from '../lib/shell.js';
5
20
  import { log } from '../lib/logger.js';
6
- import { syncAgentAssets } from './sync.js';
7
- /**
8
- * Find the templates directory shipped with alpha-loop.
9
- * Works whether running from src/ (tsx) or dist/ (compiled) or as an npm package.
10
- */
11
- function findTemplatesDir() {
12
- // Walk up from this file's location to find the alpha-loop package root.
13
- // src/commands/init.ts -> src/ -> package root (has templates/)
14
- // dist/commands/init.js -> dist/ -> package root (has templates/)
15
- const scriptDir = typeof __dirname !== 'undefined' ? __dirname : '';
16
- const candidates = [];
17
- // Walk up from script location
18
- if (scriptDir) {
19
- let dir = scriptDir;
20
- for (let i = 0; i < 5; i++) {
21
- candidates.push(join(dir, 'templates'));
22
- const parent = join(dir, '..');
23
- if (parent === dir)
24
- break;
25
- dir = parent;
26
- }
27
- }
28
- // Also check relative to the entry script (process.argv[1])
29
- // e.g., npx tsx /path/to/alpha-loop/src/cli.ts → /path/to/alpha-loop/templates
30
- if (process.argv[1]) {
31
- let dir = join(process.argv[1], '..');
32
- for (let i = 0; i < 5; i++) {
33
- candidates.push(join(dir, 'templates'));
34
- const parent = join(dir, '..');
35
- if (parent === dir)
36
- break;
37
- dir = parent;
38
- }
39
- }
40
- for (const c of candidates) {
41
- if (existsSync(c))
42
- return c;
43
- }
44
- return null;
45
- }
21
+ import { syncAgentAssets, migrateToTemplates } from './sync.js';
22
+ import { findDistributionTemplatesDir } from '../lib/templates.js';
46
23
  const CONFIG_FILE = '.alpha-loop.yaml';
47
24
  const ISSUE_TEMPLATE = `name: Agent-Ready Task
48
25
  description: A well-structured task for the automated agent loop to implement
@@ -115,6 +92,7 @@ body:
115
92
  function configTemplate(repo) {
116
93
  return `# Alpha Loop configuration
117
94
  repo: ${repo}
95
+ project: 0 # GitHub Project number (find it in your project URL)
118
96
  model: opus
119
97
  review_model: opus
120
98
  label: ready
@@ -124,22 +102,57 @@ dev_command: pnpm dev
124
102
  port: 3000
125
103
  auto_merge: true
126
104
 
105
+ # Coding harnesses to sync skills/agents to
106
+ harnesses:
107
+ - claude-code
108
+ - codex
109
+
127
110
  # Safety limits (0 = unlimited)
128
111
  max_issues: 20
129
112
  max_session_duration: 7200 # 2 hours in seconds
130
113
  `;
131
114
  }
132
- /**
133
- * Copy a directory recursively using the shell (simple and reliable).
134
- */
135
115
  function copyDir(src, dest) {
136
116
  mkdirSync(dest, { recursive: true });
137
117
  exec(`cp -R "${src}/"* "${dest}/" 2>/dev/null || true`);
138
118
  }
139
- export function initCommand() {
140
- // Create config if it doesn't exist
119
+ const GITIGNORE_ENTRIES = [
120
+ '# Alpha-loop ephemeral data (not shared)',
121
+ '.alpha-loop/sessions/',
122
+ '.alpha-loop/auth/',
123
+ '.alpha-loop/templates/*.bak',
124
+ '.worktrees/',
125
+ ];
126
+ function ensureGitignore() {
127
+ const gitignorePath = '.gitignore';
128
+ let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf-8') : '';
129
+ let changed = false;
130
+ // Remove old entry that ignored learnings (they should be tracked now)
131
+ if (content.includes('.alpha-loop/learnings/')) {
132
+ content = content
133
+ .split('\n')
134
+ .filter((line) => line.trim() !== '.alpha-loop/learnings/')
135
+ .join('\n');
136
+ changed = true;
137
+ log.info('Removed .alpha-loop/learnings/ from .gitignore (learnings are now tracked)');
138
+ }
139
+ const missing = GITIGNORE_ENTRIES.filter((entry) => !content.includes(entry));
140
+ if (missing.length > 0) {
141
+ const suffix = (content.endsWith('\n') || content === '') ? '' : '\n';
142
+ content += suffix + missing.join('\n') + '\n';
143
+ changed = true;
144
+ }
145
+ if (changed) {
146
+ writeFileSync(gitignorePath, content);
147
+ log.success('Updated .gitignore for alpha-loop');
148
+ }
149
+ }
150
+ export async function initCommand() {
151
+ const projectDir = process.cwd();
152
+ // --- Step 1: Create config ---
153
+ log.step('Step 1: Configuration');
141
154
  if (existsSync(CONFIG_FILE)) {
142
- log.info(`${CONFIG_FILE} already exists — skipping config creation`);
155
+ log.info(`${CONFIG_FILE} already exists — skipping`);
143
156
  }
144
157
  else {
145
158
  let repo = detectRepo();
@@ -153,22 +166,70 @@ export function initCommand() {
153
166
  writeFileSync(CONFIG_FILE, configTemplate(repo));
154
167
  log.success(`Created ${CONFIG_FILE}`);
155
168
  }
156
- // Everything below is idempotent safe to re-run
157
- // Install playwright-cli skills if playwright-cli is available
169
+ // --- Step 2: Set up .gitignore ---
170
+ log.step('Step 2: Git ignore');
171
+ ensureGitignore();
172
+ // --- Step 3: Detect and migrate legacy layout (before seeding, to preserve user skills) ---
173
+ log.step('Step 3: Legacy migration');
174
+ migrateToTemplates(projectDir);
175
+ // --- Step 4: Seed .alpha-loop/templates/ from distribution (only fills gaps) ---
176
+ log.step('Step 4: Seed templates');
177
+ const distTemplatesDir = findDistributionTemplatesDir();
178
+ const projectTemplatesDir = join(projectDir, '.alpha-loop', 'templates');
179
+ if (distTemplatesDir) {
180
+ // Seed skills
181
+ const distSkills = join(distTemplatesDir, 'skills');
182
+ const projectSkills = join(projectTemplatesDir, 'skills');
183
+ if (existsSync(distSkills)) {
184
+ const skillNames = readdirSync(distSkills, { withFileTypes: true })
185
+ .filter((d) => d.isDirectory()).map((d) => d.name);
186
+ let installed = 0;
187
+ for (const name of skillNames) {
188
+ const dest = join(projectSkills, name);
189
+ if (!existsSync(dest)) {
190
+ copyDir(join(distSkills, name), dest);
191
+ installed++;
192
+ }
193
+ }
194
+ if (installed > 0) {
195
+ log.success(`Seeded ${installed} skill(s) to .alpha-loop/templates/skills/`);
196
+ }
197
+ }
198
+ // Seed agents
199
+ const distAgents = join(distTemplatesDir, 'agents');
200
+ const projectAgents = join(projectTemplatesDir, 'agents');
201
+ if (existsSync(distAgents)) {
202
+ mkdirSync(projectAgents, { recursive: true });
203
+ const agentFiles = readdirSync(distAgents).filter((f) => f.endsWith('.md'));
204
+ let installed = 0;
205
+ for (const file of agentFiles) {
206
+ const dest = join(projectAgents, file);
207
+ if (!existsSync(dest)) {
208
+ copyFileSync(join(distAgents, file), dest);
209
+ installed++;
210
+ }
211
+ }
212
+ if (installed > 0) {
213
+ log.success(`Seeded ${installed} agent(s) to .alpha-loop/templates/agents/`);
214
+ }
215
+ }
216
+ }
217
+ else {
218
+ log.warn('Distribution templates not found — skipping seed');
219
+ }
220
+ // --- Step 5: Install playwright-cli skills ---
221
+ log.step('Step 5: Playwright CLI');
158
222
  const which = exec('which playwright-cli');
159
223
  if (which.exitCode === 0) {
160
- log.info('Installing playwright-cli skills...');
161
224
  const result = exec('playwright-cli install --skills');
162
225
  if (result.exitCode === 0) {
163
226
  log.success('Playwright CLI skills installed');
164
- // playwright-cli installs to .claude/skills/ only.
165
- // Copy to skills/ (source of truth) so our sync propagates to .agents/skills/ too.
227
+ // Copy to templates source of truth
166
228
  const installed = join('.claude', 'skills', 'playwright-cli');
167
- const sourceOfTruth = join('skills', 'playwright-cli');
168
- if (existsSync(installed) && !existsSync(sourceOfTruth)) {
169
- mkdirSync('skills', { recursive: true });
170
- copyDir(installed, sourceOfTruth);
171
- log.info('Copied playwright-cli skill to skills/ (source of truth)');
229
+ const dest = join(projectTemplatesDir, 'skills', 'playwright-cli');
230
+ if (existsSync(installed) && !existsSync(dest)) {
231
+ copyDir(installed, dest);
232
+ log.info('Copied playwright-cli skill to .alpha-loop/templates/skills/');
172
233
  }
173
234
  }
174
235
  else {
@@ -176,66 +237,61 @@ export function initCommand() {
176
237
  }
177
238
  }
178
239
  else {
179
- log.info('playwright-cli not found — skipping skill install. Install with: npm install -g @playwright/cli@latest');
180
- }
181
- // Install base skills and agents from alpha-loop's templates
182
- // These are the universal skills every project needs for the loop to work well
183
- const templatesDir = findTemplatesDir();
184
- if (templatesDir) {
185
- // Install skills to skills/ (source of truth)
186
- const templateSkills = join(templatesDir, 'skills');
187
- if (existsSync(templateSkills)) {
188
- const skillNames = exec(`ls "${templateSkills}"`).stdout.trim().split('\n').filter(Boolean);
189
- let installed = 0;
190
- for (const name of skillNames) {
191
- const dest = join('skills', name);
192
- if (!existsSync(dest)) {
193
- mkdirSync('skills', { recursive: true });
194
- copyDir(join(templateSkills, name), dest);
195
- installed++;
196
- }
197
- }
198
- if (installed > 0) {
199
- log.success(`Installed ${installed} base skill(s): ${skillNames.filter(n => !existsSync(join('skills', n)) || installed > 0).join(', ')}`);
200
- }
240
+ log.info('playwright-cli not found — skipping. Install with: npm install -g @playwright/cli@latest');
241
+ }
242
+ // --- Step 6: Vision (interactive) ---
243
+ if (process.stdin.isTTY) {
244
+ const { hasVision } = await import('../lib/vision.js');
245
+ if (!hasVision()) {
246
+ log.step('Step 6: Project vision');
247
+ const { visionCommand } = await import('./vision.js');
248
+ await visionCommand();
201
249
  }
202
- // Install agents to agents/ (will be synced by AGENTS.md convention)
203
- // Also install directly to .claude/agents/ and .codex/agents/ for immediate use
204
- const templateAgents = join(templatesDir, 'agents');
205
- if (existsSync(templateAgents)) {
206
- const agentFiles = exec(`ls "${templateAgents}"`).stdout.trim().split('\n').filter(Boolean);
207
- for (const file of agentFiles) {
208
- // .claude/agents/ for Claude
209
- const claudeDest = join('.claude', 'agents', file);
210
- if (!existsSync(claudeDest)) {
211
- mkdirSync(join('.claude', 'agents'), { recursive: true });
212
- exec(`cp "${join(templateAgents, file)}" "${claudeDest}"`);
213
- }
214
- // .codex/agents/ for Codex (TOML format would be different, but .md works as fallback)
215
- const codexDest = join('.codex', 'agents', file);
216
- if (!existsSync(codexDest)) {
217
- mkdirSync(join('.codex', 'agents'), { recursive: true });
218
- exec(`cp "${join(templateAgents, file)}" "${codexDest}"`);
219
- }
220
- }
221
- log.success(`Installed agent definitions: ${agentFiles.join(', ')}`);
250
+ else {
251
+ log.step('Step 6: Project vision (already exists)');
222
252
  }
223
253
  }
224
254
  else {
225
- log.warn('Templates directory not foundskipping base skills/agents install');
255
+ log.step('Step 6: Project vision (skipped non-interactive)');
226
256
  }
227
- // Install GitHub issue template for structured agent-ready issues
257
+ // --- Step 7: Scan (context + instructions) ---
258
+ log.step('Step 7: Scan codebase');
259
+ const { scanCommand } = await import('./scan.js');
260
+ scanCommand();
261
+ // --- Step 8: Sync to harnesses ---
262
+ log.step('Step 8: Sync to harnesses');
263
+ const config = loadConfig();
264
+ const harnesses = config.harnesses.length > 0 ? config.harnesses : ['claude-code', 'codex'];
265
+ const syncResult = syncAgentAssets(harnesses);
266
+ if (syncResult.synced) {
267
+ log.success(`Synced templates to ${harnesses.join(', ')}`);
268
+ }
269
+ // --- Step 9: GitHub issue template ---
270
+ log.step('Step 9: Issue template');
228
271
  const templateDir = join('.github', 'ISSUE_TEMPLATE');
229
272
  const templateFile = join(templateDir, 'agent-ready.yml');
230
273
  if (!existsSync(templateFile)) {
231
274
  mkdirSync(templateDir, { recursive: true });
232
275
  writeFileSync(templateFile, ISSUE_TEMPLATE);
233
- log.success('Created GitHub issue template: .github/ISSUE_TEMPLATE/agent-ready.yml');
276
+ log.success('Created GitHub issue template');
234
277
  }
235
- // Sync agent assets so skills land in both .claude/skills/ and .agents/skills/
236
- const syncResult = syncAgentAssets();
237
- if (syncResult.synced) {
238
- log.success('Agent assets synced across .claude/ and .agents/');
278
+ else {
279
+ log.info('Issue template already exists');
280
+ }
281
+ // --- Step 10: Commit ---
282
+ log.step('Step 10: Commit generated files');
283
+ const statusResult = exec('git status --porcelain .alpha-loop/ .claude/ .agents/ .codex/ CLAUDE.md AGENTS.md .gitignore .github/');
284
+ if (statusResult.stdout.trim()) {
285
+ exec('git add .alpha-loop/ .claude/ .agents/ .codex/ CLAUDE.md AGENTS.md .gitignore .github/ 2>/dev/null || true');
286
+ const diffCheck = exec('git diff --cached --quiet');
287
+ if (diffCheck.exitCode !== 0) {
288
+ exec('git commit -m "chore: initialize alpha-loop (skills, agents, context, instructions)"');
289
+ log.success('Committed generated files');
290
+ }
291
+ }
292
+ else {
293
+ log.info('No new files to commit');
239
294
  }
295
+ log.success('Alpha-loop initialization complete!');
240
296
  }
241
297
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type ResumeOptions = {
2
+ issue?: string;
3
+ session?: string;
4
+ };
5
+ /**
6
+ * Main entry point for `alpha-loop resume`.
7
+ */
8
+ export declare function resumeCommand(options: ResumeOptions): Promise<void>;