@bradtaylorsf/alpha-loop 1.0.1 → 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.
package/dist/cli.js CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from 'commander';
3
- import { initCommand } from './commands/init.js';
4
3
  import { historyCommand } from './commands/history.js';
5
4
  import { scanCommand } from './commands/scan.js';
6
5
  import { visionCommand } from './commands/vision.js';
7
6
  import { authCommand } from './commands/auth.js';
8
- import { syncCommand, migrateToTemplates, syncAgentAssets } from './commands/sync.js';
9
- import { loadConfig } from './lib/config.js';
10
- import { log } from './lib/logger.js';
7
+ import { syncCommand } from './commands/sync.js';
11
8
  program
12
9
  .name('alpha-loop')
13
10
  .description('Agent-agnostic automated development loop')
14
- .version('1.0.1');
11
+ .version('1.1.0');
15
12
  program
16
13
  .command('init')
17
- .description('Create .alpha-loop.yaml config template')
18
- .action(initCommand);
14
+ .description('Full project onboarding: config, templates, vision, scan, sync')
15
+ .action(async () => {
16
+ const { initCommand } = await import('./commands/init.js');
17
+ await initCommand();
18
+ });
19
19
  program
20
20
  .command('run')
21
21
  .description('Run the loop — fetches matching issues and processes them all, then exits')
@@ -55,19 +55,6 @@ program
55
55
  .description('Sync .alpha-loop/templates/ to all configured harnesses')
56
56
  .option('--check', 'Check for drift without syncing (exits non-zero if drift found)')
57
57
  .action(syncCommand);
58
- program
59
- .command('migrate')
60
- .description('Migrate legacy skills/, AGENTS.md, .claude/agents/ into .alpha-loop/templates/')
61
- .action(() => {
62
- migrateToTemplates();
63
- const config = loadConfig();
64
- if (config.harnesses.length > 0) {
65
- const result = syncAgentAssets(config.harnesses);
66
- if (result.synced) {
67
- log.success('Synced templates to configured harnesses');
68
- }
69
- }
70
- });
71
58
  program
72
59
  .command('resume')
73
60
  .description('Resume stranded work — push branches, run review, open PRs')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function initCommand(): void;
1
+ export declare function initCommand(): Promise<void>;
@@ -1,38 +1,25 @@
1
- import { existsSync, writeFileSync, readFileSync, mkdirSync, realpathSync } from 'node:fs';
2
- import { join, dirname } from 'node:path';
3
- import { detectRepo, loadConfig } from '../lib/config.js';
4
- import { exec } from '../lib/shell.js';
5
- import { log } from '../lib/logger.js';
6
- import { syncAgentAssets } from './sync.js';
7
1
  /**
8
- * Find the templates directory shipped with alpha-loop.
9
- * Works whether running from src/ (tsx) or dist/ (compiled) or as an npm package.
2
+ * Init Command full project onboarding for alpha-loop.
10
3
  *
11
- * Uses the resolved path of the CLI entrypoint (process.argv[1]) to locate the
12
- * package root, following symlinks so globally-installed npm packages resolve correctly.
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
13
15
  */
14
- function findTemplatesDir() {
15
- // Resolve symlinks (npm global installs are symlinked from bin/ to the actual package)
16
- let startDir;
17
- try {
18
- startDir = dirname(realpathSync(process.argv[1]));
19
- }
20
- catch {
21
- startDir = process.cwd();
22
- }
23
- // Walk up from the entrypoint to find templates/
24
- let dir = startDir;
25
- for (let i = 0; i < 5; i++) {
26
- const candidate = join(dir, 'templates');
27
- if (existsSync(candidate))
28
- return candidate;
29
- const parent = dirname(dir);
30
- if (parent === dir)
31
- break;
32
- dir = parent;
33
- }
34
- return null;
35
- }
16
+ import { existsSync, writeFileSync, readFileSync, readdirSync, copyFileSync, mkdirSync } from 'node:fs';
17
+ import { join } from 'node:path';
18
+ import { detectRepo, loadConfig } from '../lib/config.js';
19
+ import { exec } from '../lib/shell.js';
20
+ import { log } from '../lib/logger.js';
21
+ import { syncAgentAssets, migrateToTemplates } from './sync.js';
22
+ import { findDistributionTemplatesDir } from '../lib/templates.js';
36
23
  const CONFIG_FILE = '.alpha-loop.yaml';
37
24
  const ISSUE_TEMPLATE = `name: Agent-Ready Task
38
25
  description: A well-structured task for the automated agent loop to implement
@@ -115,8 +102,7 @@ dev_command: pnpm dev
115
102
  port: 3000
116
103
  auto_merge: true
117
104
 
118
- # Coding harnesses to sync skills/agents to (run 'alpha-loop sync' after changes)
119
- # See full list: https://github.com/nicepkg/playwright-cli
105
+ # Coding harnesses to sync skills/agents to
120
106
  harnesses:
121
107
  - claude-code
122
108
  - codex
@@ -126,9 +112,6 @@ max_issues: 20
126
112
  max_session_duration: 7200 # 2 hours in seconds
127
113
  `;
128
114
  }
129
- /**
130
- * Copy a directory recursively using the shell (simple and reliable).
131
- */
132
115
  function copyDir(src, dest) {
133
116
  mkdirSync(dest, { recursive: true });
134
117
  exec(`cp -R "${src}/"* "${dest}/" 2>/dev/null || true`);
@@ -137,12 +120,9 @@ const GITIGNORE_ENTRIES = [
137
120
  '# Alpha-loop ephemeral data (not shared)',
138
121
  '.alpha-loop/sessions/',
139
122
  '.alpha-loop/auth/',
123
+ '.alpha-loop/templates/*.bak',
140
124
  '.worktrees/',
141
125
  ];
142
- /**
143
- * Ensure .gitignore tracks learnings but ignores sessions, auth, and worktrees.
144
- * Also removes stale entries that previously ignored learnings.
145
- */
146
126
  function ensureGitignore() {
147
127
  const gitignorePath = '.gitignore';
148
128
  let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf-8') : '';
@@ -156,7 +136,6 @@ function ensureGitignore() {
156
136
  changed = true;
157
137
  log.info('Removed .alpha-loop/learnings/ from .gitignore (learnings are now tracked)');
158
138
  }
159
- // Add required ignore entries
160
139
  const missing = GITIGNORE_ENTRIES.filter((entry) => !content.includes(entry));
161
140
  if (missing.length > 0) {
162
141
  const suffix = (content.endsWith('\n') || content === '') ? '' : '\n';
@@ -168,10 +147,12 @@ function ensureGitignore() {
168
147
  log.success('Updated .gitignore for alpha-loop');
169
148
  }
170
149
  }
171
- export function initCommand() {
172
- // Create config if it doesn't exist
150
+ export async function initCommand() {
151
+ const projectDir = process.cwd();
152
+ // --- Step 1: Create config ---
153
+ log.step('Step 1: Configuration');
173
154
  if (existsSync(CONFIG_FILE)) {
174
- log.info(`${CONFIG_FILE} already exists — skipping config creation`);
155
+ log.info(`${CONFIG_FILE} already exists — skipping`);
175
156
  }
176
157
  else {
177
158
  let repo = detectRepo();
@@ -185,27 +166,70 @@ export function initCommand() {
185
166
  writeFileSync(CONFIG_FILE, configTemplate(repo));
186
167
  log.success(`Created ${CONFIG_FILE}`);
187
168
  }
188
- // Everything below is idempotent safe to re-run
189
- // Ensure .gitignore has the right alpha-loop entries:
190
- // - Track learnings (team-shared knowledge)
191
- // - Ignore sessions (local logs, screenshots, ephemeral data)
192
- // - Ignore auth (browser state with credentials)
169
+ // --- Step 2: Set up .gitignore ---
170
+ log.step('Step 2: Git ignore');
193
171
  ensureGitignore();
194
- // Install playwright-cli skills if playwright-cli is available
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');
195
222
  const which = exec('which playwright-cli');
196
223
  if (which.exitCode === 0) {
197
- log.info('Installing playwright-cli skills...');
198
224
  const result = exec('playwright-cli install --skills');
199
225
  if (result.exitCode === 0) {
200
226
  log.success('Playwright CLI skills installed');
201
- // playwright-cli installs to .claude/skills/ only.
202
- // Copy to skills/ (source of truth) so our sync propagates to .agents/skills/ too.
227
+ // Copy to templates source of truth
203
228
  const installed = join('.claude', 'skills', 'playwright-cli');
204
- const sourceOfTruth = join('skills', 'playwright-cli');
205
- if (existsSync(installed) && !existsSync(sourceOfTruth)) {
206
- mkdirSync('skills', { recursive: true });
207
- copyDir(installed, sourceOfTruth);
208
- 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/');
209
233
  }
210
234
  }
211
235
  else {
@@ -213,70 +237,61 @@ export function initCommand() {
213
237
  }
214
238
  }
215
239
  else {
216
- log.info('playwright-cli not found — skipping skill install. Install with: npm install -g @playwright/cli@latest');
240
+ log.info('playwright-cli not found — skipping. Install with: npm install -g @playwright/cli@latest');
217
241
  }
218
- // Install base skills and agents from alpha-loop's templates
219
- // These are the universal skills every project needs for the loop to work well
220
- const templatesDir = findTemplatesDir();
221
- if (templatesDir) {
222
- // Install skills to skills/ (source of truth)
223
- const templateSkills = join(templatesDir, 'skills');
224
- if (existsSync(templateSkills)) {
225
- const skillNames = exec(`ls "${templateSkills}"`).stdout.trim().split('\n').filter(Boolean);
226
- let installed = 0;
227
- for (const name of skillNames) {
228
- const dest = join('skills', name);
229
- if (!existsSync(dest)) {
230
- mkdirSync('skills', { recursive: true });
231
- copyDir(join(templateSkills, name), dest);
232
- installed++;
233
- }
234
- }
235
- if (installed > 0) {
236
- log.success(`Installed ${installed} base skill(s): ${skillNames.filter(n => !existsSync(join('skills', n)) || installed > 0).join(', ')}`);
237
- }
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();
238
249
  }
239
- // Install agents to agents/ (will be synced by AGENTS.md convention)
240
- // Also install directly to .claude/agents/ and .codex/agents/ for immediate use
241
- const templateAgents = join(templatesDir, 'agents');
242
- if (existsSync(templateAgents)) {
243
- const agentFiles = exec(`ls "${templateAgents}"`).stdout.trim().split('\n').filter(Boolean);
244
- for (const file of agentFiles) {
245
- // .claude/agents/ for Claude
246
- const claudeDest = join('.claude', 'agents', file);
247
- if (!existsSync(claudeDest)) {
248
- mkdirSync(join('.claude', 'agents'), { recursive: true });
249
- exec(`cp "${join(templateAgents, file)}" "${claudeDest}"`);
250
- }
251
- // .codex/agents/ for Codex (TOML format would be different, but .md works as fallback)
252
- const codexDest = join('.codex', 'agents', file);
253
- if (!existsSync(codexDest)) {
254
- mkdirSync(join('.codex', 'agents'), { recursive: true });
255
- exec(`cp "${join(templateAgents, file)}" "${codexDest}"`);
256
- }
257
- }
258
- log.success(`Installed agent definitions: ${agentFiles.join(', ')}`);
250
+ else {
251
+ log.step('Step 6: Project vision (already exists)');
259
252
  }
260
253
  }
261
254
  else {
262
- log.warn('Templates directory not foundskipping base skills/agents install');
255
+ log.step('Step 6: Project vision (skipped non-interactive)');
256
+ }
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(', ')}`);
263
268
  }
264
- // Install GitHub issue template for structured agent-ready issues
269
+ // --- Step 9: GitHub issue template ---
270
+ log.step('Step 9: Issue template');
265
271
  const templateDir = join('.github', 'ISSUE_TEMPLATE');
266
272
  const templateFile = join(templateDir, 'agent-ready.yml');
267
273
  if (!existsSync(templateFile)) {
268
274
  mkdirSync(templateDir, { recursive: true });
269
275
  writeFileSync(templateFile, ISSUE_TEMPLATE);
270
- log.success('Created GitHub issue template: .github/ISSUE_TEMPLATE/agent-ready.yml');
276
+ log.success('Created GitHub issue template');
271
277
  }
272
- // Sync agent assets to all configured harnesses (default to claude-code + codex on first init)
273
- const initConfig = loadConfig();
274
- const initHarnesses = initConfig.harnesses.length > 0
275
- ? initConfig.harnesses
276
- : ['claude-code', 'codex'];
277
- const syncResult = syncAgentAssets(initHarnesses);
278
- if (syncResult.synced) {
279
- 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');
280
294
  }
295
+ log.success('Alpha-loop initialization complete!');
281
296
  }
282
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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"}
@@ -11,6 +11,7 @@ import { formatTimestamp } from '../lib/shell.js';
11
11
  import { spawnAgent } from '../lib/agent.js';
12
12
  import { createPR } from '../lib/github.js';
13
13
  import { syncAgentAssets } from './sync.js';
14
+ import { findDistributionTemplatesDir, diffSkills } from '../lib/templates.js';
14
15
  /** Directories that proposed changes are allowed to target. */
15
16
  const ALLOWED_PREFIXES = [
16
17
  '.alpha-loop/templates/skills/',
@@ -497,6 +498,33 @@ export async function reviewCommand(options) {
497
498
  });
498
499
  log.success(`${safeProposals.length} improvement(s) proposed`);
499
500
  displayProposals(safeProposals);
501
+ // --- Check for skill upgrades from distribution templates ---
502
+ const distTemplatesDir = findDistributionTemplatesDir();
503
+ if (distTemplatesDir) {
504
+ const distSkillsDir = join(distTemplatesDir, 'skills');
505
+ const projectSkillsDir = join(projectDir, '.alpha-loop', 'templates', 'skills');
506
+ const upgrades = diffSkills(distSkillsDir, projectSkillsDir);
507
+ if (upgrades.length > 0) {
508
+ log.info('');
509
+ log.step(`Skill upgrades available (${upgrades.length}):`);
510
+ for (const u of upgrades) {
511
+ log.info(` ${u.status === 'new' ? '[NEW]' : '[UPDATE]'} ${u.name}`);
512
+ }
513
+ if (options.apply) {
514
+ // Apply skill upgrades
515
+ mkdirSync(projectSkillsDir, { recursive: true });
516
+ for (const u of upgrades) {
517
+ const destDir = join(projectSkillsDir, u.name);
518
+ mkdirSync(destDir, { recursive: true });
519
+ writeFileSync(join(destDir, 'SKILL.md'), u.distContent);
520
+ log.success(`Upgraded skill: ${u.name}`);
521
+ }
522
+ }
523
+ else {
524
+ log.info(' Run with --apply to install these upgrades.');
525
+ }
526
+ }
527
+ }
500
528
  // --- Apply or save ---
501
529
  if (options.apply) {
502
530
  if (!config.repo) {
@@ -1 +1 @@
1
- {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review.js","sourceRoot":"","sources":["../../src/commands/review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAc/E,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG;IACvB,+BAA+B;IAC/B,+BAA+B;IAC/B,kBAAkB;CACnB,CAAC;AAEF,mEAAmE;AACnE,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACH,SAAS,UAAU,CAAC,QAAgB;IAClC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnF,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACtC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CACnD,CAAC;AACJ,CAAC;AAQD;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,IAAI,GAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAEvD,IAAI,WAAW;QAAE,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,YAAY;QAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,aAAa;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAWD;;GAEG;AACH,SAAS,cAAc,CAAC,SAAmB;IACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACnC,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC;QAC1B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE;QAC1E,CAAC,CAAC,CAAC,CAAC;IACN,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;QAC/D,CAAC,CAAC,CAAC,CAAC;IAEN,sDAAsD;IACtD,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC;iBACzB,KAAK,CAAC,IAAI,CAAC;iBACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC5C,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAW,EAAE,IAAc;IAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAA6C,EAAE,CAAC;IAE7D,SAAS,IAAI,CAAC,OAAe;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAAE,SAAS;oBAC/E,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBAChD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC5C,CAAC;oBAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACvD,CAAC,CAAC,CAAC,CAAC;IACN,OAAO;QACL,oBAAoB;QACpB,oBAAoB;QACpB,kBAAkB,OAAO,CAAC,KAAK,IAAI;QACnC,iBAAiB,OAAO,CAAC,SAAS,IAAI;QACtC,gBAAgB,OAAO,CAAC,QAAQ,IAAI;QACpC,oBAAoB,WAAW,KAAK;QACpC,mBAAmB,OAAO,CAAC,UAAU,IAAI;QACzC,oBAAoB,OAAO,CAAC,eAAe,KAAK;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,OAM/B;IACC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEnF,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClF,CAAC,CAAC,8BAA8B,CAAC;IAEnC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;QACxC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAClF,CAAC,CAAC,8BAA8B,CAAC;IAEnC,OAAO;;;;EAIP,kBAAkB,CAAC,OAAO,CAAC;;;EAG3B,OAAO,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB;;;;EAIhH,gBAAgB;;;;EAIhB,aAAa;;;;EAIb,aAAa;;;;;EAKb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEA0DmD,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAc,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,IACE,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;gBACzC,MAAM,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,IAAI,KAAK,QAAQ;gBAC5E,SAAS,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,OAAO,KAAK,QAAQ;gBAClF,QAAQ,IAAI,IAAI,IAAI,OAAQ,IAAgC,CAAC,MAAM,KAAK,QAAQ;gBAChF,UAAU,IAAI,IAAI,EAClB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,IAAsB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAyB;IACjD,MAAM,UAAU,GAAqC,EAAE,CAAC;IACxD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,IAAI,OAAO,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QAC3C,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,cAAc,GAA2B;QAC7C,KAAK,EAAE,eAAe;QACtB,KAAK,EAAE,mBAAmB;QAC1B,MAAM,EAAE,uBAAuB;QAC/B,OAAO,EAAE,qBAAqB;KAC/B,CAAC;IAEF,KAAK,MAAM,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACrE,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CACpB,SAA2B,EAC3B,OAAgB,EAChB,SAAiB,EACjB,UAAkB;IAElB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAC7E,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,eAAe,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAa;QACtB,6BAA6B,SAAS,EAAE;QACxC,EAAE;QACF,YAAY;QACZ,EAAE;QACF,kBAAkB,CAAC,OAAO,CAAC;QAC3B,EAAE;QACF,qBAAqB;QACrB,EAAE;KACH,CAAC;IAEF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,SAA2B,EAC3B,OAAgB,EAChB,SAAiB,EACjB,UAAkB,EAClB,MAAqG;IAErG,MAAM,MAAM,GAAG,qBAAqB,SAAS,EAAE,CAAC;IAEhD,0CAA0C;IAC1C,GAAG,CAAC,IAAI,CAAC,mBAAmB,MAAM,KAAK,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,MAAM,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9E,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,oBAAoB;IACpB,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,yBAAyB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,GAAG,CAAC,OAAO,CAAC,YAAY,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QAC9F,IAAI,CAAC,iBAAiB,MAAM,CAAC,UAAU,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,GAAG,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAED,qDAAqD;IACrD,MAAM,WAAW,GAAG,IAAI,CACtB,WAAW,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,uEAAuE,EACtI,EAAE,GAAG,EAAE,UAAU,EAAE,CACpB,CAAC;IACF,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,4BAA4B,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,YAAY,CAAC,MAAM,iCAAiC,CAAC;IACzF,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7F,IAAI,YAAY,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,gBAAgB;IAChB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACvD,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,MAAM,GAAG;QACb,+CAA+C;QAC/C,EAAE;QACF,+GAA+G;QAC/G,EAAE;QACF,YAAY;QACZ,EAAE;QACF,kBAAkB,CAAC,OAAO,CAAC;QAC3B,EAAE;QACF,iBAAiB,WAAW,GAAG;QAC/B,EAAE;QACF,YAAY;QACZ,EAAE;QACF,GAAG,SAAS;aACT,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,QAAQ,mBAAmB,CAAC,CAAC,MAAM,EAAE,CAAC;KAC7F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,kBAAkB;IAClB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACjC,MAAM,KAAK,GAAG,QAAQ,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,UAAU;QACvB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,sDAAsD,YAAY,CAAC,MAAM,WAAW;QAC3F,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAsB;IACxD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAE9C,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAEhD,2BAA2B;IAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAElE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;QAChH,OAAO;IACT,CAAC;IAED,IAAI,aAAa,GAAG,WAAW,CAAC,YAAY,CAAC;SAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChC,IAAI,EAAE,CAAC;IAEV,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,6CAA6C;IAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;QACpC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,IAAI,CAAC,mCAAmC,WAAW,cAAc,MAAM,UAAU,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,eAAe,aAAa,CAAC,MAAM,6BAA6B,WAAW,GAAG,CAAC,CAAC;IAC3F,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,mBAAmB,CAAC,CAAC;IAC7D,CAAC;IAED,yBAAyB;IACzB,MAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,0CAA0C;IAC1C,IAAI,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrD,IAAI,gBAAgB,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,4BAA4B,gBAAgB,CAAC,MAAM,OAAO,mBAAmB,QAAQ,CAAC,CAAC;QAChG,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,yBAAyB,CAAC;IAChG,CAAC;IAED,0BAA0B;IAC1B,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IAC1C,GAAG,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,KAAK,UAAU,OAAO,CAAC,SAAS,eAAe,OAAO,CAAC,QAAQ,SAAS,CAAC,CAAC;IAEvG,iFAAiF;IACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,GAAG,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAAC;IAE1D,iFAAiF;IACjF,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,YAAY,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,sBAAsB,CAAC,CAAC;IAE1D,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC;QACjD,CAAC,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC;QAC1C,CAAC,CAAC,6BAA6B,CAAC;IAElC,4CAA4C;IAC5C,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACpC,OAAO;QACP,gBAAgB;QAChB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;QACH,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;QACH,aAAa;KACd,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC;QACnC,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,MAAM,CAAC,WAAW;QACzB,MAAM;QACN,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,CAAC,iCAAiC,WAAW,CAAC,QAAQ,8BAA8B,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,wDAAwD;IACxD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,0BAA0B,CAAC,CAAC;IAC/D,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAEhC,+DAA+D;IAC/D,MAAM,gBAAgB,GAAG,4BAA4B,EAAE,CAAC;IACxD,IAAI,gBAAgB,EAAE,CAAC;QACrB,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,6BAA6B,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;YAC3D,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,uBAAuB;gBACvB,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACjD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAC/C,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACxC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;oBACxD,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,GAAG,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACtD,MAAM,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE;YAChE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC/E,GAAG,CAAC,OAAO,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
@@ -1 +1,6 @@
1
1
  export declare function scanCommand(): void;
2
+ /**
3
+ * Generate or update the instructions file at .alpha-loop/templates/instructions.md.
4
+ * If no existing file, generates from scratch. If existing, merges with fresh scan.
5
+ */
6
+ export declare function generateInstructions(projectDir: string, model: string): void;
@@ -1,5 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
+ import { tmpdir } from 'node:os';
3
4
  import { exec } from '../lib/shell.js';
4
5
  import { log } from '../lib/logger.js';
5
6
  import { assertSafeShellArg, loadConfig } from '../lib/config.js';
@@ -25,12 +26,66 @@ const SCAN_PROMPT = `Analyze this codebase and produce a concise project context
25
26
  - Recent changes: (will be filled in by the loop)
26
27
 
27
28
  Keep each section to 3-5 bullet points. Be specific to THIS codebase, not generic advice. Under 400 words total.`;
29
+ /**
30
+ * Prompt for generating the lean instructions file.
31
+ * Contains ONLY project context — procedural content (testing, git, security) lives in skills.
32
+ */
33
+ const INSTRUCTIONS_PROMPT = `Analyze this codebase and produce a concise project instructions file for AI coding agents working in this repo.
34
+
35
+ Output ONLY this markdown structure with the marker comment on the first line:
36
+
37
+ <!-- managed by alpha-loop -->
38
+ # [Project Name]
39
+
40
+ ## Overview
41
+ [2-3 sentences: what this project is, what it does, who it's for]
42
+
43
+ ## Tech Stack
44
+ - Language: [e.g., TypeScript (strict mode, ESM)]
45
+ - Runtime: [e.g., Node.js 20+]
46
+ - Framework: [e.g., Express 5, React 19]
47
+ - Package manager: [e.g., pnpm]
48
+ - Key dependencies: [top 3-5 important dependencies]
49
+
50
+ ## Directory Structure
51
+ [List key directories and what they contain — only the important ones, not every folder]
52
+
53
+ ## Code Style
54
+ [Naming conventions, import ordering, formatting rules, architectural patterns — be specific to THIS codebase]
55
+
56
+ ## Non-Negotiables
57
+ [Critical rules that must never be violated — security, data safety, patterns that break things if not followed]
58
+
59
+ IMPORTANT RULES:
60
+ - Do NOT include testing procedures, git workflow, code review checklists, or security scanning procedures — those belong in separate skills, not here.
61
+ - Do NOT include build/deploy commands — those are operational, not instructional.
62
+ - Keep it under 150 lines. Be specific to THIS codebase, not generic advice.
63
+ - The marker comment "<!-- managed by alpha-loop -->" MUST be the very first line.`;
64
+ /**
65
+ * Prompt for merging an existing instructions file with fresh scan results.
66
+ */
67
+ const INSTRUCTIONS_MERGE_PROMPT = `You are updating a project instructions file for AI coding agents.
68
+
69
+ Below is the EXISTING instructions file and the CURRENT state of the codebase. Your job is to:
70
+ 1. PRESERVE any user customizations and project-specific rules in the existing file
71
+ 2. UPDATE sections that are stale or incorrect based on the current codebase
72
+ 3. ADD any important new context discovered in the codebase
73
+ 4. REMOVE information that is no longer accurate
74
+
75
+ The marker comment "<!-- managed by alpha-loop -->" MUST remain as the very first line.
76
+
77
+ IMPORTANT: Do NOT add testing procedures, git workflow, code review checklists, or security scanning — those belong in skills, not instructions. Keep the same 5-section structure (Overview, Tech Stack, Directory Structure, Code Style, Non-Negotiables). Keep it under 150 lines.
78
+
79
+ ## EXISTING INSTRUCTIONS FILE:
80
+
81
+ `;
28
82
  export function scanCommand() {
29
83
  const projectDir = process.cwd();
30
84
  const contextDir = path.join(projectDir, '.alpha-loop');
31
85
  const contextFile = path.join(contextDir, 'context.md');
32
86
  const config = loadConfig();
33
87
  fs.mkdirSync(contextDir, { recursive: true });
88
+ // --- Generate project context ---
34
89
  log.step('Scanning codebase for project context...');
35
90
  const model = assertSafeShellArg(config.model ?? 'opus', 'model');
36
91
  const result = exec(`echo ${JSON.stringify(SCAN_PROMPT)} | claude -p --model ${model} --dangerously-skip-permissions --output-format text 2>/dev/null`, { cwd: projectDir });
@@ -46,5 +101,79 @@ export function scanCommand() {
46
101
  else {
47
102
  log.error(`Project context generation failed: ${result.stderr || 'empty output'}`);
48
103
  }
104
+ // --- Generate instructions file ---
105
+ generateInstructions(projectDir, model);
106
+ }
107
+ /**
108
+ * Generate or update the instructions file at .alpha-loop/templates/instructions.md.
109
+ * If no existing file, generates from scratch. If existing, merges with fresh scan.
110
+ */
111
+ export function generateInstructions(projectDir, model) {
112
+ const templatesDir = path.join(projectDir, '.alpha-loop', 'templates');
113
+ fs.mkdirSync(templatesDir, { recursive: true });
114
+ const instructionsFile = path.join(templatesDir, 'instructions.md');
115
+ const existing = fs.existsSync(instructionsFile)
116
+ ? fs.readFileSync(instructionsFile, 'utf-8')
117
+ : null;
118
+ if (existing) {
119
+ // Merge mode: preserve user customizations, update stale content
120
+ log.step('Updating instructions file...');
121
+ // Back up existing before merge
122
+ fs.writeFileSync(instructionsFile + '.bak', existing, 'utf-8');
123
+ const mergePrompt = INSTRUCTIONS_MERGE_PROMPT + existing +
124
+ '\n\n## OUTPUT:\nProduce the updated instructions file. Output ONLY the markdown content, nothing else.';
125
+ // Write prompt to temp file to avoid shell injection from file content
126
+ const safeModel = assertSafeShellArg(model, 'model');
127
+ const promptFile = path.join(tmpdir(), `alpha-loop-merge-${Date.now()}.txt`);
128
+ fs.writeFileSync(promptFile, mergePrompt, 'utf-8');
129
+ const mergeResult = exec(`claude -p --model ${safeModel} --dangerously-skip-permissions --output-format text < "${promptFile}" 2>/dev/null`, { cwd: projectDir });
130
+ try {
131
+ fs.unlinkSync(promptFile);
132
+ }
133
+ catch { /* cleanup best-effort */ }
134
+ if (mergeResult.exitCode === 0 && mergeResult.stdout.trim()) {
135
+ let output = mergeResult.stdout.trim();
136
+ // Ensure marker is present
137
+ if (!output.startsWith('<!-- managed by alpha-loop -->')) {
138
+ output = '<!-- managed by alpha-loop -->\n' + output;
139
+ }
140
+ fs.writeFileSync(instructionsFile, output + '\n');
141
+ log.success('Instructions file updated (backup at instructions.md.bak)');
142
+ }
143
+ else {
144
+ log.warn('Instructions merge failed, keeping existing file');
145
+ }
146
+ }
147
+ else {
148
+ // Fresh generation
149
+ log.step('Generating baseline instructions file...');
150
+ const safeModel = assertSafeShellArg(model, 'model');
151
+ const genPromptFile = path.join(tmpdir(), `alpha-loop-gen-${Date.now()}.txt`);
152
+ fs.writeFileSync(genPromptFile, INSTRUCTIONS_PROMPT, 'utf-8');
153
+ const genResult = exec(`claude -p --model ${safeModel} --dangerously-skip-permissions --output-format text < "${genPromptFile}" 2>/dev/null`, { cwd: projectDir });
154
+ try {
155
+ fs.unlinkSync(genPromptFile);
156
+ }
157
+ catch { /* cleanup best-effort */ }
158
+ if (genResult.exitCode === 0 && genResult.stdout.trim()) {
159
+ let output = genResult.stdout.trim();
160
+ if (!output.startsWith('<!-- managed by alpha-loop -->')) {
161
+ output = '<!-- managed by alpha-loop -->\n' + output;
162
+ }
163
+ fs.writeFileSync(instructionsFile, output + '\n');
164
+ log.success(`Instructions file generated: ${instructionsFile}`);
165
+ }
166
+ else if (genResult.stdout?.trim()) {
167
+ let output = genResult.stdout.trim();
168
+ if (!output.startsWith('<!-- managed by alpha-loop -->')) {
169
+ output = '<!-- managed by alpha-loop -->\n' + output;
170
+ }
171
+ fs.writeFileSync(instructionsFile, output + '\n');
172
+ log.warn('Claude exited with errors but produced instructions output');
173
+ }
174
+ else {
175
+ log.warn('Instructions generation failed — will retry on next scan');
176
+ }
177
+ }
49
178
  }
50
179
  //# sourceMappingURL=scan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAElE,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;iHAqB6F,CAAC;AAElH,MAAM,UAAU,WAAW;IACzB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACxD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9C,GAAG,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,CACjB,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,wBAAwB,KAAK,kEAAkE,EAClI,EAAE,GAAG,EAAE,UAAU,EAAE,CACpB,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACpD,GAAG,CAAC,OAAO,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QACzB,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACpD,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC1D,GAAG,CAAC,OAAO,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  export type HarnessConfig = {
2
2
  skillsDir: string;
3
3
  agentsDir?: string;
4
+ instructionsFile?: string;
4
5
  };
5
6
  export declare const HARNESS_REGISTRY: Record<string, HarnessConfig>;
7
+ /** Marker that identifies files managed by alpha-loop (safe to overwrite). */
8
+ export declare const MANAGED_MARKER = "<!-- managed by alpha-loop -->";
6
9
  export type SyncResult = {
7
10
  synced: boolean;
8
11
  docSynced: boolean;
@@ -23,7 +26,6 @@ export declare function syncAgentAssets(harnesses: string[], options?: {
23
26
  *
24
27
  * Moves:
25
28
  * skills/ → .alpha-loop/templates/skills/
26
- * AGENTS.md → .alpha-loop/templates/instructions.md
27
29
  * .claude/agents/ → .alpha-loop/templates/agents/
28
30
  *
29
31
  * Does NOT delete the originals — the next sync run will recreate them
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Sync Command — keep skills and sub-agents in sync across coding harnesses.
2
+ * Sync Command — keep skills, sub-agents, and instructions in sync across coding harnesses.
3
3
  *
4
4
  * Source of truth: .alpha-loop/templates/
5
5
  * skills/ → each harness's skillsDir
6
6
  * agents/ → each harness's agentsDir (if defined)
7
+ * instructions.md → each harness's instructionsFile (e.g., CLAUDE.md, AGENTS.md)
7
8
  *
8
- * CLAUDE.md and AGENTS.md are project-owned files and are NOT synced.
9
- * Alpha-loop's operational instructions live in the sub-agent prompts
10
- * (.claude/agents/implementer.md, etc.), not in the project instructions file.
9
+ * Instructions files are only overwritten if they contain the "<!-- managed by alpha-loop -->"
10
+ * marker. Existing hand-written CLAUDE.md/AGENTS.md files are never touched.
11
11
  *
12
12
  * Harnesses to sync are read from the `harnesses` array supplied by the caller
13
13
  * (typically loaded from .alpha-loop.yaml). Only harnesses that exist in the
@@ -17,46 +17,46 @@ import { existsSync, copyFileSync, mkdirSync, readdirSync, statSync, readFileSyn
17
17
  import { join } from 'node:path';
18
18
  import { log } from '../lib/logger.js';
19
19
  export const HARNESS_REGISTRY = {
20
- amp: { skillsDir: '.agents/skills' },
21
- antigravity: { skillsDir: '.agents/skills' },
20
+ amp: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
21
+ antigravity: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
22
22
  augment: { skillsDir: '.augment/skills' },
23
23
  bob: { skillsDir: '.bob/skills' },
24
- 'claude-code': { skillsDir: '.claude/skills', agentsDir: '.claude/agents' },
24
+ 'claude-code': { skillsDir: '.claude/skills', agentsDir: '.claude/agents', instructionsFile: 'CLAUDE.md' },
25
25
  openclaw: { skillsDir: 'skills' },
26
- cline: { skillsDir: '.agents/skills' },
27
- warp: { skillsDir: '.agents/skills' },
26
+ cline: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
27
+ warp: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
28
28
  codebuddy: { skillsDir: '.codebuddy/skills' },
29
- codex: { skillsDir: '.agents/skills', agentsDir: '.codex/agents' },
29
+ codex: { skillsDir: '.agents/skills', agentsDir: '.codex/agents', instructionsFile: 'AGENTS.md' },
30
30
  'command-code': { skillsDir: '.commandcode/skills' },
31
31
  continue: { skillsDir: '.continue/skills' },
32
32
  cortex: { skillsDir: '.cortex/skills' },
33
33
  crush: { skillsDir: '.crush/skills' },
34
- cursor: { skillsDir: '.agents/skills' },
35
- deepagents: { skillsDir: '.agents/skills' },
34
+ cursor: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
35
+ deepagents: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
36
36
  droid: { skillsDir: '.factory/skills' },
37
- firebender: { skillsDir: '.agents/skills' },
38
- 'gemini-cli': { skillsDir: '.agents/skills' },
39
- 'github-copilot': { skillsDir: '.agents/skills' },
37
+ firebender: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
38
+ 'gemini-cli': { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
39
+ 'github-copilot': { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
40
40
  goose: { skillsDir: '.goose/skills' },
41
41
  junie: { skillsDir: '.junie/skills' },
42
42
  'iflow-cli': { skillsDir: '.iflow/skills' },
43
43
  kilo: { skillsDir: '.kilocode/skills' },
44
- 'kimi-cli': { skillsDir: '.agents/skills' },
44
+ 'kimi-cli': { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
45
45
  'kiro-cli': { skillsDir: '.kiro/skills' },
46
46
  kode: { skillsDir: '.kode/skills' },
47
47
  mcpjam: { skillsDir: '.mcpjam/skills' },
48
48
  'mistral-vibe': { skillsDir: '.vibe/skills' },
49
49
  mux: { skillsDir: '.mux/skills' },
50
- opencode: { skillsDir: '.agents/skills' },
50
+ opencode: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
51
51
  openhands: { skillsDir: '.openhands/skills' },
52
52
  pi: { skillsDir: '.pi/skills' },
53
53
  qoder: { skillsDir: '.qoder/skills' },
54
54
  'qwen-code': { skillsDir: '.qwen/skills' },
55
- replit: { skillsDir: '.agents/skills' },
55
+ replit: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
56
56
  roo: { skillsDir: '.roo/skills' },
57
57
  trae: { skillsDir: '.trae/skills' },
58
58
  'trae-cn': { skillsDir: '.trae/skills' },
59
- universal: { skillsDir: '.agents/skills' },
59
+ universal: { skillsDir: '.agents/skills', instructionsFile: 'AGENTS.md' },
60
60
  windsurf: { skillsDir: '.windsurf/skills' },
61
61
  zencoder: { skillsDir: '.zencoder/skills' },
62
62
  neovate: { skillsDir: '.neovate/skills' },
@@ -69,6 +69,9 @@ export const HARNESS_REGISTRY = {
69
69
  const TEMPLATES_DIR = '.alpha-loop/templates';
70
70
  const TEMPLATE_SKILLS_SUBDIR = 'skills';
71
71
  const TEMPLATE_AGENTS_SUBDIR = 'agents';
72
+ const TEMPLATE_INSTRUCTIONS_FILE = 'instructions.md';
73
+ /** Marker that identifies files managed by alpha-loop (safe to overwrite). */
74
+ export const MANAGED_MARKER = '<!-- managed by alpha-loop -->';
72
75
  // Legacy root-level fallbacks
73
76
  const LEGACY_SKILLS_DIR = 'skills';
74
77
  const LEGACY_CLAUDE_AGENTS_DIR = '.claude/agents';
@@ -142,10 +145,12 @@ function resolveTemplateSources(projectDir) {
142
145
  const templatesBase = join(projectDir, TEMPLATES_DIR);
143
146
  const templateSkills = join(templatesBase, TEMPLATE_SKILLS_SUBDIR);
144
147
  const templateAgents = join(templatesBase, TEMPLATE_AGENTS_SUBDIR);
148
+ const templateInstructions = join(templatesBase, TEMPLATE_INSTRUCTIONS_FILE);
145
149
  if (existsSync(templatesBase)) {
146
150
  return {
147
151
  skillsDir: templateSkills,
148
152
  agentsDir: templateAgents,
153
+ instructionsFile: templateInstructions,
149
154
  isLegacy: false,
150
155
  };
151
156
  }
@@ -153,10 +158,11 @@ function resolveTemplateSources(projectDir) {
153
158
  const legacySkills = join(projectDir, LEGACY_SKILLS_DIR);
154
159
  if (existsSync(legacySkills)) {
155
160
  log.warn(`Legacy layout detected (${LEGACY_SKILLS_DIR}/ at project root). ` +
156
- `Run "alpha-loop migrate" to move them to ${TEMPLATES_DIR}/.`);
161
+ `Run "alpha-loop init" to migrate to ${TEMPLATES_DIR}/.`);
157
162
  return {
158
163
  skillsDir: legacySkills,
159
164
  agentsDir: join(projectDir, LEGACY_CLAUDE_AGENTS_DIR),
165
+ instructionsFile: '', // No instructions in legacy layout
160
166
  isLegacy: true,
161
167
  };
162
168
  }
@@ -213,6 +219,32 @@ export function syncAgentAssets(harnesses, options = {}) {
213
219
  result.synced = true;
214
220
  }
215
221
  }
222
+ // -- Instructions file --
223
+ if (config.instructionsFile && sources.instructionsFile && existsSync(sources.instructionsFile)) {
224
+ const targetFile = join(projectDir, config.instructionsFile);
225
+ if (!filesMatch(sources.instructionsFile, targetFile)) {
226
+ // Safety: only overwrite if the target doesn't exist or contains the managed marker
227
+ const targetExists = existsSync(targetFile);
228
+ const targetManaged = targetExists &&
229
+ readFileSync(targetFile, 'utf-8').startsWith(MANAGED_MARKER);
230
+ if (!targetExists || targetManaged) {
231
+ if (check) {
232
+ log.warn(`Drift [${harness}]: ${config.instructionsFile} differs from template instructions.md`);
233
+ }
234
+ else {
235
+ mkdirSync(join(targetFile, '..'), { recursive: true });
236
+ copyFileSync(sources.instructionsFile, targetFile);
237
+ log.info(`Synced [${harness}] instructions.md → ${config.instructionsFile}`);
238
+ }
239
+ result.docSynced = true;
240
+ result.synced = true;
241
+ }
242
+ else {
243
+ log.warn(`Skipping ${config.instructionsFile} — file exists without alpha-loop marker. ` +
244
+ `Run "alpha-loop scan" to generate a managed instructions file.`);
245
+ }
246
+ }
247
+ }
216
248
  }
217
249
  return result;
218
250
  }
@@ -221,7 +253,6 @@ export function syncAgentAssets(harnesses, options = {}) {
221
253
  *
222
254
  * Moves:
223
255
  * skills/ → .alpha-loop/templates/skills/
224
- * AGENTS.md → .alpha-loop/templates/instructions.md
225
256
  * .claude/agents/ → .alpha-loop/templates/agents/
226
257
  *
227
258
  * Does NOT delete the originals — the next sync run will recreate them
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Find the distribution templates directory shipped with the alpha-loop npm package.
3
+ * Walks up from the CLI entrypoint, following symlinks for global installs.
4
+ */
5
+ export declare function findDistributionTemplatesDir(): string | null;
6
+ export type SkillDiff = {
7
+ name: string;
8
+ status: 'new' | 'updated';
9
+ distContent: string;
10
+ projectContent?: string;
11
+ };
12
+ /**
13
+ * Compare project skills against distribution templates.
14
+ * Returns skills that are new or have changed content.
15
+ */
16
+ export declare function diffSkills(distSkillsDir: string, projectSkillsDir: string): SkillDiff[];
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Templates — shared utilities for locating distribution templates
3
+ * and comparing project skills against them.
4
+ */
5
+ import { existsSync, readdirSync, readFileSync, realpathSync } from 'node:fs';
6
+ import { join, dirname } from 'node:path';
7
+ /**
8
+ * Find the distribution templates directory shipped with the alpha-loop npm package.
9
+ * Walks up from the CLI entrypoint, following symlinks for global installs.
10
+ */
11
+ export function findDistributionTemplatesDir() {
12
+ let startDir;
13
+ try {
14
+ startDir = dirname(realpathSync(process.argv[1]));
15
+ }
16
+ catch {
17
+ startDir = process.cwd();
18
+ }
19
+ let dir = startDir;
20
+ for (let i = 0; i < 5; i++) {
21
+ const candidate = join(dir, 'templates');
22
+ if (existsSync(candidate))
23
+ return candidate;
24
+ const parent = dirname(dir);
25
+ if (parent === dir)
26
+ break;
27
+ dir = parent;
28
+ }
29
+ return null;
30
+ }
31
+ /**
32
+ * Compare project skills against distribution templates.
33
+ * Returns skills that are new or have changed content.
34
+ */
35
+ export function diffSkills(distSkillsDir, projectSkillsDir) {
36
+ if (!existsSync(distSkillsDir))
37
+ return [];
38
+ const diffs = [];
39
+ const distSkills = readdirSync(distSkillsDir, { withFileTypes: true })
40
+ .filter((d) => d.isDirectory());
41
+ for (const entry of distSkills) {
42
+ const distSkillFile = join(distSkillsDir, entry.name, 'SKILL.md');
43
+ if (!existsSync(distSkillFile))
44
+ continue;
45
+ const distContent = readFileSync(distSkillFile, 'utf-8');
46
+ const projectSkillFile = join(projectSkillsDir, entry.name, 'SKILL.md');
47
+ if (!existsSync(projectSkillFile)) {
48
+ diffs.push({ name: entry.name, status: 'new', distContent });
49
+ }
50
+ else {
51
+ const projectContent = readFileSync(projectSkillFile, 'utf-8');
52
+ if (projectContent !== distContent) {
53
+ diffs.push({ name: entry.name, status: 'updated', distContent, projectContent });
54
+ }
55
+ }
56
+ }
57
+ return diffs;
58
+ }
59
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/lib/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,4BAA4B;IAC1C,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACzC,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,aAAqB,EAAE,gBAAwB;IACxE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACnE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,SAAS;QAEzC,MAAM,WAAW,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAExE,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;gBACnC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bradtaylorsf/alpha-loop",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Agent-agnostic automated development loop: Plan → Build → Test → Review → Ship",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.0",