pilotlynx 0.1.2 → 0.2.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 (145) hide show
  1. package/README.md +40 -40
  2. package/dist/agents/improve.agent.d.ts +42 -1
  3. package/dist/agents/improve.agent.js +102 -7
  4. package/dist/agents/improve.agent.js.map +1 -1
  5. package/dist/agents/run.agent.d.ts +0 -1
  6. package/dist/agents/run.agent.js +10 -7
  7. package/dist/agents/run.agent.js.map +1 -1
  8. package/dist/cli.js +8 -3
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/audit.d.ts +2 -0
  11. package/dist/commands/audit.js +51 -0
  12. package/dist/commands/audit.js.map +1 -0
  13. package/dist/commands/eval.d.ts +2 -0
  14. package/dist/commands/eval.js +47 -0
  15. package/dist/commands/eval.js.map +1 -0
  16. package/dist/commands/improve.js +83 -5
  17. package/dist/commands/improve.js.map +1 -1
  18. package/dist/commands/init.js +17 -27
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/insights.js +63 -0
  21. package/dist/commands/insights.js.map +1 -1
  22. package/dist/commands/logs.d.ts +1 -0
  23. package/dist/commands/logs.js +23 -1
  24. package/dist/commands/logs.js.map +1 -1
  25. package/dist/commands/relay.js +250 -124
  26. package/dist/commands/relay.js.map +1 -1
  27. package/dist/commands/run.js +21 -2
  28. package/dist/commands/run.js.map +1 -1
  29. package/dist/commands/schedule.js +7 -1
  30. package/dist/commands/schedule.js.map +1 -1
  31. package/dist/commands/status.js +9 -2
  32. package/dist/commands/status.js.map +1 -1
  33. package/dist/lib/agent-runner.d.ts +5 -1
  34. package/dist/lib/agent-runner.js +41 -1
  35. package/dist/lib/agent-runner.js.map +1 -1
  36. package/dist/lib/audit.d.ts +7 -0
  37. package/dist/lib/audit.js +63 -0
  38. package/dist/lib/audit.js.map +1 -0
  39. package/dist/lib/callbacks.d.ts +12 -1
  40. package/dist/lib/callbacks.js +147 -19
  41. package/dist/lib/callbacks.js.map +1 -1
  42. package/dist/lib/command-ops/doctor-ops.js +41 -6
  43. package/dist/lib/command-ops/doctor-ops.js.map +1 -1
  44. package/dist/lib/command-ops/eval-ops.d.ts +7 -0
  45. package/dist/lib/command-ops/eval-ops.js +111 -0
  46. package/dist/lib/command-ops/eval-ops.js.map +1 -0
  47. package/dist/lib/command-ops/improve-ops.d.ts +14 -1
  48. package/dist/lib/command-ops/improve-ops.js +369 -17
  49. package/dist/lib/command-ops/improve-ops.js.map +1 -1
  50. package/dist/lib/command-ops/run-ops.d.ts +8 -1
  51. package/dist/lib/command-ops/run-ops.js +25 -4
  52. package/dist/lib/command-ops/run-ops.js.map +1 -1
  53. package/dist/lib/command-ops/secrets-migration-ops.js +1 -1
  54. package/dist/lib/command-ops/secrets-migration-ops.js.map +1 -1
  55. package/dist/lib/command-ops/status-ops.d.ts +1 -0
  56. package/dist/lib/command-ops/status-ops.js +19 -7
  57. package/dist/lib/command-ops/status-ops.js.map +1 -1
  58. package/dist/lib/config.js +3 -3
  59. package/dist/lib/config.js.map +1 -1
  60. package/dist/lib/cron.d.ts +1 -1
  61. package/dist/lib/cron.js +2 -2
  62. package/dist/lib/cron.js.map +1 -1
  63. package/dist/lib/global-config.js +1 -1
  64. package/dist/lib/global-config.js.map +1 -1
  65. package/dist/lib/observation.d.ts +60 -2
  66. package/dist/lib/observation.js +261 -13
  67. package/dist/lib/observation.js.map +1 -1
  68. package/dist/lib/registry.d.ts +0 -1
  69. package/dist/lib/registry.js +1 -1
  70. package/dist/lib/registry.js.map +1 -1
  71. package/dist/lib/relay/admin.d.ts +29 -0
  72. package/dist/lib/relay/admin.js +176 -0
  73. package/dist/lib/relay/admin.js.map +1 -0
  74. package/dist/lib/relay/bindings.d.ts +8 -0
  75. package/dist/lib/relay/bindings.js +50 -0
  76. package/dist/lib/relay/bindings.js.map +1 -0
  77. package/dist/lib/relay/config.d.ts +3 -3
  78. package/dist/lib/relay/config.js +18 -10
  79. package/dist/lib/relay/config.js.map +1 -1
  80. package/dist/lib/relay/context.d.ts +31 -0
  81. package/dist/lib/relay/context.js +118 -0
  82. package/dist/lib/relay/context.js.map +1 -0
  83. package/dist/lib/relay/db.d.ts +38 -0
  84. package/dist/lib/relay/db.js +252 -0
  85. package/dist/lib/relay/db.js.map +1 -0
  86. package/dist/lib/relay/executor.d.ts +2 -0
  87. package/dist/lib/relay/executor.js +108 -0
  88. package/dist/lib/relay/executor.js.map +1 -0
  89. package/dist/lib/relay/feedback.d.ts +29 -0
  90. package/dist/lib/relay/feedback.js +142 -0
  91. package/dist/lib/relay/feedback.js.map +1 -0
  92. package/dist/lib/relay/notifier.d.ts +30 -0
  93. package/dist/lib/relay/notifier.js +78 -0
  94. package/dist/lib/relay/notifier.js.map +1 -0
  95. package/dist/lib/relay/notify.d.ts +3 -4
  96. package/dist/lib/relay/notify.js +43 -159
  97. package/dist/lib/relay/notify.js.map +1 -1
  98. package/dist/lib/relay/platform.d.ts +52 -0
  99. package/dist/lib/relay/platform.js +5 -0
  100. package/dist/lib/relay/platform.js.map +1 -0
  101. package/dist/lib/relay/platforms/slack.d.ts +37 -0
  102. package/dist/lib/relay/platforms/slack.js +240 -0
  103. package/dist/lib/relay/platforms/slack.js.map +1 -0
  104. package/dist/lib/relay/platforms/telegram.d.ts +29 -0
  105. package/dist/lib/relay/platforms/telegram.js +193 -0
  106. package/dist/lib/relay/platforms/telegram.js.map +1 -0
  107. package/dist/lib/relay/poster.d.ts +24 -0
  108. package/dist/lib/relay/poster.js +136 -0
  109. package/dist/lib/relay/poster.js.map +1 -0
  110. package/dist/lib/relay/queue.d.ts +18 -0
  111. package/dist/lib/relay/queue.js +85 -0
  112. package/dist/lib/relay/queue.js.map +1 -0
  113. package/dist/lib/relay/router.d.ts +25 -2
  114. package/dist/lib/relay/router.js +259 -168
  115. package/dist/lib/relay/router.js.map +1 -1
  116. package/dist/lib/relay/service.d.ts +31 -7
  117. package/dist/lib/relay/service.js +281 -200
  118. package/dist/lib/relay/service.js.map +1 -1
  119. package/dist/lib/relay/types.d.ts +189 -34
  120. package/dist/lib/relay/types.js +68 -28
  121. package/dist/lib/relay/types.js.map +1 -1
  122. package/dist/lib/sandbox.d.ts +9 -1
  123. package/dist/lib/sandbox.js +17 -2
  124. package/dist/lib/sandbox.js.map +1 -1
  125. package/dist/lib/schedule.d.ts +4 -5
  126. package/dist/lib/schedule.js +7 -8
  127. package/dist/lib/schedule.js.map +1 -1
  128. package/dist/lib/secrets.js +11 -1
  129. package/dist/lib/secrets.js.map +1 -1
  130. package/dist/lib/types.d.ts +80 -0
  131. package/dist/lib/types.js +9 -1
  132. package/dist/lib/types.js.map +1 -1
  133. package/package.json +18 -18
  134. package/prompts/improve.yaml +114 -6
  135. package/prompts/relay.yaml +29 -0
  136. package/prompts/run.yaml +36 -2
  137. package/template/CLAUDE.md +34 -5
  138. package/template/RUNBOOK.md +5 -5
  139. package/template/evals/sample.json +16 -0
  140. package/template/memory/MEMORY.md +6 -0
  141. package/template/memory/procedures/.gitkeep +0 -0
  142. package/template/schedule.yaml +1 -1
  143. package/template/workflows/daily_feedback.ts +78 -2
  144. package/template/workflows/project_review.ts +51 -2
  145. package/prompts/relay-chat.yaml +0 -24
@@ -0,0 +1,111 @@
1
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, readdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { getProjectDir } from '../config.js';
4
+ import { runAgent } from '../agent-runner.js';
5
+ import { buildProjectEnv } from '../secrets.js';
6
+ import { getRunAgentConfig } from '../../agents/run.agent.js';
7
+ export async function executeEval(project, options) {
8
+ const projectDir = getProjectDir(project);
9
+ const evalsDir = join(projectDir, 'evals');
10
+ if (!existsSync(evalsDir)) {
11
+ throw new Error(`No evals/ directory found in project "${project}". Create test cases first.`);
12
+ }
13
+ // Load test cases from evals/*.json
14
+ const testCases = loadTestCases(evalsDir);
15
+ // Filter by workflow/tag if specified
16
+ let filtered = testCases;
17
+ if (options?.workflow) {
18
+ filtered = filtered.filter(tc => tc.workflow === options.workflow);
19
+ }
20
+ if (options?.tag) {
21
+ filtered = filtered.filter(tc => tc.tags?.includes(options.tag));
22
+ }
23
+ if (filtered.length === 0) {
24
+ throw new Error('No matching test cases found.');
25
+ }
26
+ const results = [];
27
+ let totalCost = 0;
28
+ for (const tc of filtered) {
29
+ // Budget check
30
+ if (options?.budget && totalCost >= options.budget) {
31
+ console.log(`Budget limit ($${options.budget}) reached. Stopping eval.`);
32
+ break;
33
+ }
34
+ // Run the workflow with the test case input
35
+ const projectEnv = buildProjectEnv(project);
36
+ const config = getRunAgentConfig(project, tc.workflow, projectEnv);
37
+ config.prompt = tc.input;
38
+ if (options?.budget)
39
+ config.maxBudgetUsd = Math.max(0.01, options.budget - totalCost);
40
+ config.maxTurns = 10; // Limit eval runs to keep costs down
41
+ const agentResult = await runAgent(config, () => { }); // suppress output
42
+ totalCost += agentResult.costUsd;
43
+ // Use heuristic judge to score the output against expected behavior
44
+ const score = judgeOutput(tc, agentResult.result, agentResult.success);
45
+ results.push({
46
+ testCase: tc.name,
47
+ workflow: tc.workflow,
48
+ passed: score.passed,
49
+ score: score.score,
50
+ reasoning: score.reasoning,
51
+ costUsd: agentResult.costUsd,
52
+ timestamp: new Date().toISOString(),
53
+ });
54
+ }
55
+ const summary = {
56
+ project,
57
+ timestamp: new Date().toISOString(),
58
+ totalCases: results.length,
59
+ passed: results.filter(r => r.passed).length,
60
+ failed: results.filter(r => !r.passed).length,
61
+ avgScore: results.length > 0 ? results.reduce((s, r) => s + r.score, 0) / results.length : 0,
62
+ results,
63
+ };
64
+ // Save results
65
+ const resultsDir = join(evalsDir, 'results');
66
+ mkdirSync(resultsDir, { recursive: true });
67
+ const dateStr = new Date().toISOString().split('T')[0];
68
+ writeFileSync(join(resultsDir, `${dateStr}.json`), JSON.stringify(summary, null, 2), 'utf8');
69
+ return summary;
70
+ }
71
+ function loadTestCases(evalsDir) {
72
+ const cases = [];
73
+ const files = readdirSync(evalsDir).filter(f => f.endsWith('.json') && f !== 'results');
74
+ for (const file of files) {
75
+ try {
76
+ const content = JSON.parse(readFileSync(join(evalsDir, file), 'utf8'));
77
+ if (Array.isArray(content)) {
78
+ cases.push(...content);
79
+ }
80
+ else if (content.name && content.workflow) {
81
+ cases.push(content);
82
+ }
83
+ }
84
+ catch {
85
+ // Skip invalid files
86
+ }
87
+ }
88
+ return cases;
89
+ }
90
+ function judgeOutput(testCase, output, success) {
91
+ // If the workflow failed entirely, score 0
92
+ if (!success) {
93
+ return { passed: false, score: 0, reasoning: 'Workflow execution failed' };
94
+ }
95
+ // Keyword matching against expected behavior for basic scoring
96
+ const expectedLower = testCase.expectedBehavior.toLowerCase();
97
+ const outputLower = output.toLowerCase();
98
+ // Extract key terms from expected behavior
99
+ const keyTerms = expectedLower
100
+ .split(/[\s,;.]+/)
101
+ .filter(t => t.length > 3);
102
+ const matchCount = keyTerms.filter(term => outputLower.includes(term)).length;
103
+ const score = keyTerms.length > 0 ? matchCount / keyTerms.length : 0;
104
+ const passed = score >= 0.5;
105
+ return {
106
+ passed,
107
+ score: Math.round(score * 100) / 100,
108
+ reasoning: `Matched ${matchCount}/${keyTerms.length} key terms from expected behavior`,
109
+ };
110
+ }
111
+ //# sourceMappingURL=eval-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval-ops.js","sourceRoot":"","sources":["../../../src/lib/command-ops/eval-ops.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,10 @@
1
+ import { type ImproveOutput } from '../../agents/improve.agent.js';
2
+ export interface ImproveOptions {
3
+ dryRun?: boolean;
4
+ budget?: number;
5
+ days?: number;
6
+ revert?: string;
7
+ }
1
8
  export interface ImproveResult {
2
9
  success: boolean;
3
10
  error?: string;
@@ -8,5 +15,11 @@ export interface ImproveResult {
8
15
  noProjects?: boolean;
9
16
  noActivity?: boolean;
10
17
  noFeedback?: boolean;
18
+ dryRunOutput?: ImproveOutput;
19
+ totalCostUsd?: number;
11
20
  }
12
- export declare function executeImprove(verbose?: boolean): Promise<ImproveResult>;
21
+ export declare function executeRevert(project: string): Promise<{
22
+ success: boolean;
23
+ error?: string;
24
+ }>;
25
+ export declare function executeImprove(options?: ImproveOptions): Promise<ImproveResult>;
@@ -1,35 +1,84 @@
1
- import { existsSync } from 'node:fs';
2
- import { join } from 'node:path';
1
+ import { existsSync, mkdirSync, cpSync, readdirSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
2
+ import { join, basename } from 'node:path';
3
3
  import chalk from 'chalk';
4
4
  import { listProjects } from '../project.js';
5
- import { getRecentLogs, writeInsight } from '../observation.js';
5
+ import { getRecentLogs, getLogStatistics, writeStructuredInsights, readRecentInsights, writeSharedPattern, writeAntiPattern, writeFeedbackLog, readFeedbackLog, } from '../observation.js';
6
6
  import { getImproveAgentConfig } from '../../agents/improve.agent.js';
7
7
  import { runAgent } from '../agent-runner.js';
8
8
  import { buildProjectEnv } from '../secrets.js';
9
9
  import { getRunAgentConfig } from '../../agents/run.agent.js';
10
- import { getProjectDir } from '../config.js';
10
+ import { getProjectDir, INSIGHTS_DIR } from '../config.js';
11
11
  import { resetPolicyCache } from '../policy.js';
12
- export async function executeImprove(verbose) {
12
+ import { loadImproveState, saveImproveState } from '../schedule.js';
13
+ // ── Revert ──
14
+ const BACKUP_DIR_NAME = '.improve-backup';
15
+ export async function executeRevert(project) {
16
+ const projectDir = getProjectDir(project);
17
+ const backupDir = join(projectDir, 'artifacts', BACKUP_DIR_NAME);
18
+ if (!existsSync(backupDir)) {
19
+ return { success: false, error: `No backup found for "${project}". Run \`pilotlynx improve\` first.` };
20
+ }
21
+ const targets = ['CLAUDE.md', 'memory', '.claude/skills', '.claude/rules'];
22
+ let restored = 0;
23
+ for (const target of targets) {
24
+ const src = join(backupDir, target);
25
+ const dest = join(projectDir, target);
26
+ if (existsSync(src)) {
27
+ cpSync(src, dest, { recursive: true, force: true });
28
+ restored++;
29
+ }
30
+ }
31
+ return restored > 0
32
+ ? { success: true }
33
+ : { success: false, error: 'Backup directory exists but contains no recognized files.' };
34
+ }
35
+ // ── Main Improve Loop ──
36
+ export async function executeImprove(options) {
37
+ const { dryRun, budget, days = 7 } = options ?? {};
13
38
  const projects = listProjects();
14
39
  if (projects.length === 0) {
15
40
  return { success: true, noProjects: true };
16
41
  }
42
+ // ── Phase 0: Auto-clean orphaned improve-backup dirs ──
43
+ for (const project of projects) {
44
+ const backupDir = join(getProjectDir(project), 'artifacts', BACKUP_DIR_NAME);
45
+ if (existsSync(backupDir)) {
46
+ try {
47
+ rmSync(backupDir, { recursive: true, force: true });
48
+ }
49
+ catch {
50
+ // Non-fatal — skip if cleanup fails
51
+ }
52
+ }
53
+ }
54
+ const improveState = loadImproveState();
55
+ // ── Phase 1: Build rich log summaries ──
17
56
  const logSummaries = {};
18
57
  for (const project of projects) {
19
- const logs = getRecentLogs(project, 1);
20
- if (logs.length > 0) {
21
- logSummaries[project] = logs
22
- .map((l) => `[${l.workflow}] ${l.success ? 'OK' : 'FAIL'}: ${l.summary}`)
23
- .join('\n');
58
+ const logs = getRecentLogs(project, days);
59
+ if (logs.length === 0) {
60
+ const bootstrap = generateBootstrapFeedback(project);
61
+ if (bootstrap) {
62
+ logSummaries[project] = bootstrap;
63
+ }
64
+ continue;
24
65
  }
66
+ logSummaries[project] = buildRichLogSummary(project, logs, days);
25
67
  }
26
68
  if (Object.keys(logSummaries).length === 0) {
27
69
  return { success: true, noActivity: true };
28
70
  }
71
+ // ── Phase 2: Inject previous insights (Reflexion pattern) ──
72
+ const previousInsights = buildPreviousInsightsContext();
73
+ // ── Phase 3: Run improve agent ──
74
+ let totalCost = 0;
29
75
  let result;
30
76
  try {
31
- const config = getImproveAgentConfig(logSummaries);
77
+ const config = getImproveAgentConfig(logSummaries, previousInsights || undefined);
78
+ if (budget)
79
+ config.maxBudgetUsd = budget;
32
80
  result = await runAgent(config);
81
+ totalCost += result.costUsd;
33
82
  }
34
83
  catch (err) {
35
84
  const msg = err instanceof Error ? err.message : String(err);
@@ -42,36 +91,339 @@ export async function executeImprove(verbose) {
42
91
  if (!output) {
43
92
  return { success: true, noFeedback: true };
44
93
  }
94
+ // ── Dry-run: return output without dispatching ──
95
+ if (dryRun) {
96
+ return { success: true, dryRunOutput: output, totalCostUsd: totalCost };
97
+ }
98
+ // ── Phase 4: Write cross-project artifacts ──
99
+ if (output.crossProjectInsights && output.crossProjectInsights.length > 0) {
100
+ const now = new Date().toISOString().split('T')[0];
101
+ const structured = output.crossProjectInsights.map((i) => ({
102
+ ...i,
103
+ date: now,
104
+ }));
105
+ writeStructuredInsights(structured);
106
+ }
107
+ if (output.antiPatterns && output.antiPatterns.length > 0) {
108
+ for (const ap of output.antiPatterns) {
109
+ writeAntiPattern(ap.pattern.slice(0, 40), {
110
+ ...ap,
111
+ applicableTo: ap.applicableTo ?? [],
112
+ createdAt: new Date().toISOString(),
113
+ });
114
+ }
115
+ }
116
+ if (output.sharedPatterns && output.sharedPatterns.length > 0) {
117
+ const now = new Date().toISOString();
118
+ const ninetyDaysMs = 90 * 24 * 60 * 60 * 1000;
119
+ const expiresAt = new Date(Date.now() + ninetyDaysMs).toISOString();
120
+ for (const sp of output.sharedPatterns) {
121
+ // Only promote patterns with 3+ observations (quality gate)
122
+ if (sp.observations >= 3) {
123
+ writeSharedPattern(sp.name, {
124
+ name: sp.name,
125
+ content: sp.content,
126
+ observations: sp.observations,
127
+ applicableTo: sp.applicableTo,
128
+ confidence: sp.confidence,
129
+ createdAt: now,
130
+ expiresAt,
131
+ });
132
+ }
133
+ }
134
+ }
135
+ // ── Phase 5: Dispatch feedback to projects ──
45
136
  const feedbackWorkflow = 'daily_feedback';
46
137
  const failures = [];
138
+ const feedbackLogEntries = [];
47
139
  for (const [project, feedback] of Object.entries(output.projectFeedback)) {
48
- if (!feedback)
140
+ if (!feedback || !feedback.summary)
141
+ continue;
142
+ // Circuit breaker: skip projects with 3+ consecutive failures
143
+ const projectFailCount = improveState.projectFailures[project] ?? 0;
144
+ if (projectFailCount >= 3) {
145
+ console.log(chalk.yellow(`[pilotlynx] Skipping "${project}": ${projectFailCount} consecutive failures. Reset with a successful manual run.`));
49
146
  continue;
147
+ }
50
148
  const workflowPath = join(getProjectDir(project), 'workflows', `${feedbackWorkflow}.ts`);
51
149
  if (!existsSync(workflowPath)) {
52
- console.log(chalk.dim(`[plynx] Skipping "${project}": no ${feedbackWorkflow} workflow found.`));
150
+ console.log(chalk.dim(`[pilotlynx] Skipping "${project}": no ${feedbackWorkflow} workflow found.`));
53
151
  continue;
54
152
  }
153
+ // Budget check
154
+ if (budget && totalCost >= budget) {
155
+ console.log(chalk.yellow(`[pilotlynx] Budget limit ($${budget}) reached. Skipping remaining projects.`));
156
+ break;
157
+ }
158
+ // Pre-improve snapshot
159
+ createSnapshot(project);
160
+ // Serialize structured feedback for the run agent prompt
161
+ const feedbackText = serializeFeedback(feedback);
55
162
  try {
56
163
  resetPolicyCache();
57
164
  const projectEnv = buildProjectEnv(project);
58
- const feedbackConfig = getRunAgentConfig(project, feedbackWorkflow, projectEnv, feedback);
165
+ const feedbackConfig = getRunAgentConfig(project, feedbackWorkflow, projectEnv, feedbackText);
166
+ if (budget)
167
+ feedbackConfig.maxBudgetUsd = Math.max(0, budget - totalCost);
59
168
  const feedbackResult = await runAgent(feedbackConfig);
169
+ totalCost += feedbackResult.costUsd;
60
170
  if (!feedbackResult.success) {
61
171
  failures.push({ project, error: feedbackResult.result });
172
+ feedbackLogEntries.push({ date: new Date().toISOString(), project, actedOn: false, outcome: 'agent_failed' });
173
+ improveState.projectFailures[project] = projectFailCount + 1;
174
+ }
175
+ else {
176
+ feedbackLogEntries.push({ date: new Date().toISOString(), project, actedOn: true, outcome: 'applied' });
177
+ improveState.projectFailures[project] = 0;
62
178
  }
63
179
  }
64
180
  catch (err) {
65
181
  const msg = err instanceof Error ? err.message : String(err);
66
182
  failures.push({ project, error: msg });
183
+ feedbackLogEntries.push({ date: new Date().toISOString(), project, actedOn: false, outcome: msg });
184
+ improveState.projectFailures[project] = projectFailCount + 1;
67
185
  }
68
186
  }
69
- if (output.crossProjectInsights) {
70
- writeInsight(output.crossProjectInsights);
71
- }
187
+ // ── Phase 6: Write feedback tracking and improve log ──
188
+ writeFeedbackLog(feedbackLogEntries);
189
+ writeImproveLog(output, failures, totalCost);
190
+ improveState.lastRun = new Date().toISOString();
191
+ saveImproveState(improveState);
72
192
  return {
73
193
  success: failures.length === 0,
74
194
  failures: failures.length > 0 ? failures : undefined,
195
+ totalCostUsd: totalCost,
196
+ };
197
+ }
198
+ // ── Helpers ──
199
+ function buildRichLogSummary(project, logs, days) {
200
+ const sections = [];
201
+ // Recent full records (most recent 5)
202
+ const recentLogs = logs.slice(-5);
203
+ const recentSection = recentLogs
204
+ .map((l) => {
205
+ const parts = [`[${l.workflow}] ${l.success ? 'OK' : 'FAIL'}: ${l.summary}`];
206
+ if (l.costUsd)
207
+ parts.push(`cost=$${l.costUsd.toFixed(4)}`);
208
+ if (l.numTurns)
209
+ parts.push(`turns=${l.numTurns}`);
210
+ if (l.error)
211
+ parts.push(`error: ${l.error.slice(0, 100)}`);
212
+ return parts.join(' | ');
213
+ })
214
+ .join('\n');
215
+ sections.push(`### Recent Runs (last ${recentLogs.length})\n${recentSection}`);
216
+ // Aggregate statistics (if there are more than 5 logs)
217
+ if (logs.length > 5) {
218
+ const stats = getLogStatistics(project, days);
219
+ const statsSection = [
220
+ `Total runs: ${stats.totalRuns}, Success: ${stats.successCount}, Failed: ${stats.failureCount} (${(stats.failureRate * 100).toFixed(0)}%)`,
221
+ `Avg cost: $${stats.avgCostUsd.toFixed(4)}, Total cost: $${stats.totalCostUsd.toFixed(4)}`,
222
+ `Avg turns: ${stats.avgTurns.toFixed(1)}`,
223
+ ];
224
+ if (stats.topErrors.length > 0) {
225
+ statsSection.push(`Top errors: ${stats.topErrors.join('; ')}`);
226
+ }
227
+ sections.push(`### Aggregate (${days}d)\n${statsSection.join('\n')}`);
228
+ }
229
+ // Relay feedback (high-signal negative reactions with follow-up text)
230
+ try {
231
+ const relayFeedback = readRelayFeedbackForProject(project);
232
+ if (relayFeedback.length > 0) {
233
+ sections.push(`### Relay Feedback (negative)\n${relayFeedback.join('\n')}`);
234
+ }
235
+ }
236
+ catch {
237
+ // relay feedback not available — skip
238
+ }
239
+ return sections.join('\n\n');
240
+ }
241
+ function buildPreviousInsightsContext() {
242
+ const sections = [];
243
+ // Previous insights
244
+ const insights = readRecentInsights(3);
245
+ if (insights.length > 0) {
246
+ const insightLines = insights
247
+ .slice(0, 10) // Cap to 10 individual insights
248
+ .map((i) => `- [${i.category}] ${i.insight} (evidence: ${i.evidence})`)
249
+ .join('\n');
250
+ sections.push(`Previous insights:\n${insightLines}`);
251
+ }
252
+ // Feedback effectiveness from prior cycles
253
+ const feedbackLog = readFeedbackLog();
254
+ if (feedbackLog.length > 0) {
255
+ const recent = feedbackLog.slice(-20); // Last 20 entries
256
+ const actedCount = recent.filter((e) => e.actedOn).length;
257
+ const failedCount = recent.filter((e) => !e.actedOn).length;
258
+ const failedProjects = [...new Set(recent.filter((e) => !e.actedOn).map((e) => e.project))];
259
+ const lines = [];
260
+ lines.push(`Feedback acted on: ${actedCount}/${recent.length} (${failedCount} failed)`);
261
+ if (failedProjects.length > 0) {
262
+ lines.push(`Projects with failed feedback: ${failedProjects.join(', ')}`);
263
+ }
264
+ sections.push(`Previous feedback effectiveness:\n${lines.join('\n')}`);
265
+ }
266
+ return sections.length > 0 ? sections.join('\n\n') : null;
267
+ }
268
+ function generateBootstrapFeedback(project) {
269
+ const projectDir = getProjectDir(project);
270
+ // Check if project has default/unfilled content
271
+ const briefPath = join(projectDir, 'PROJECT_BRIEF.md');
272
+ const skillsDir = join(projectDir, '.claude', 'skills');
273
+ const memoryPath = join(projectDir, 'memory', 'MEMORY.md');
274
+ const mcpPath = join(projectDir, '.mcp.json');
275
+ const runbookPath = join(projectDir, 'RUNBOOK.md');
276
+ const workflowsDir = join(projectDir, 'workflows');
277
+ const hasDefaultBrief = existsSync(briefPath) && isTemplateDefault(briefPath);
278
+ const hasNoSkills = !existsSync(skillsDir) || readdirSync(skillsDir).filter((f) => f.endsWith('.md')).length === 0;
279
+ const hasDefaultMemory = existsSync(memoryPath) && isTemplateDefault(memoryPath);
280
+ const hasEmptyMcp = existsSync(mcpPath) && isEmptyMcpJson(mcpPath);
281
+ const hasIncompleteRunbook = existsSync(runbookPath) && readFileSync(runbookPath, 'utf8').length < 200;
282
+ const hasEmptyWorkflows = !existsSync(workflowsDir) || readdirSync(workflowsDir).filter((f) => f.endsWith('.ts')).length === 0;
283
+ if (!hasDefaultBrief && !hasNoSkills && !hasEmptyMcp && !hasIncompleteRunbook && !hasEmptyWorkflows)
284
+ return null;
285
+ const items = [];
286
+ items.push('### Bootstrap (new project with no activity)');
287
+ if (hasDefaultBrief)
288
+ items.push('- PROJECT_BRIEF.md has template defaults — fill in project goals and key decisions');
289
+ if (hasNoSkills)
290
+ items.push('- No skills defined — create project-specific skills in .claude/skills/');
291
+ if (hasDefaultMemory)
292
+ items.push('- Memory is empty — record initial decisions and setup patterns');
293
+ if (hasEmptyMcp)
294
+ items.push('- .mcp.json is empty or has default template content — configure project-scoped MCP servers');
295
+ if (hasIncompleteRunbook)
296
+ items.push('- RUNBOOK.md is incomplete (< 200 chars) — document operational procedures');
297
+ if (hasEmptyWorkflows)
298
+ items.push('- No workflows defined — create workflow files in workflows/');
299
+ return items.join('\n');
300
+ }
301
+ function readRelayFeedbackForProject(project) {
302
+ const feedbackPath = join(INSIGHTS_DIR(), 'relay-feedback.jsonl');
303
+ if (!existsSync(feedbackPath))
304
+ return [];
305
+ const lines = readFileSync(feedbackPath, 'utf8').split('\n').filter(Boolean);
306
+ const result = [];
307
+ for (const line of lines) {
308
+ try {
309
+ const entry = JSON.parse(line);
310
+ if (entry.project === project && entry.type === 'negative' && entry.followUpText) {
311
+ result.push(`- ${entry.followUpText} (${entry.timestamp.split('T')[0]})`);
312
+ }
313
+ }
314
+ catch {
315
+ // skip malformed
316
+ }
317
+ }
318
+ return result.slice(-5); // Most recent 5
319
+ }
320
+ function isTemplateDefault(filePath) {
321
+ try {
322
+ const content = readFileSync(filePath, 'utf8');
323
+ return content.includes('{{PROJECT_NAME}}') || content.includes('<!-- Record ') || content.length < 200;
324
+ }
325
+ catch {
326
+ return false;
327
+ }
328
+ }
329
+ function isEmptyMcpJson(filePath) {
330
+ try {
331
+ const content = readFileSync(filePath, 'utf8').trim();
332
+ if (content === '{}' || content === '{ }')
333
+ return true;
334
+ const parsed = JSON.parse(content);
335
+ return Object.keys(parsed).length === 0;
336
+ }
337
+ catch {
338
+ return false;
339
+ }
340
+ }
341
+ function serializeFeedback(feedback) {
342
+ const sections = [];
343
+ sections.push(`**Priority: ${feedback.priority}**`);
344
+ sections.push(`**Summary:** ${feedback.summary}`);
345
+ if (feedback.actionItems.length > 0) {
346
+ sections.push('**Action Items:**');
347
+ for (const item of feedback.actionItems) {
348
+ sections.push(`- ${item}`);
349
+ }
350
+ }
351
+ if (feedback.suggestedSkills && feedback.suggestedSkills.length > 0) {
352
+ sections.push('**Suggested Skills:**');
353
+ for (const skill of feedback.suggestedSkills) {
354
+ sections.push(`- **${skill.name}**: ${skill.description}`);
355
+ }
356
+ }
357
+ if (feedback.suggestedRules && feedback.suggestedRules.length > 0) {
358
+ sections.push('**Suggested Rules:**');
359
+ for (const rule of feedback.suggestedRules) {
360
+ sections.push(`- **${rule.name}**: ${rule.content}`);
361
+ }
362
+ }
363
+ if (feedback.modifyClaude) {
364
+ sections.push('**CLAUDE.md Update:** Yes — update CLAUDE.md to address the identified gap.');
365
+ }
366
+ return sections.join('\n');
367
+ }
368
+ function createSnapshot(project) {
369
+ const projectDir = getProjectDir(project);
370
+ const backupDir = join(projectDir, 'artifacts', BACKUP_DIR_NAME);
371
+ try {
372
+ mkdirSync(backupDir, { recursive: true });
373
+ const targets = [
374
+ { src: 'CLAUDE.md', isDir: false },
375
+ { src: 'memory', isDir: true },
376
+ { src: join('.claude', 'skills'), isDir: true },
377
+ { src: join('.claude', 'rules'), isDir: true },
378
+ ];
379
+ for (const { src, isDir } of targets) {
380
+ const srcPath = join(projectDir, src);
381
+ const destPath = join(backupDir, src);
382
+ if (existsSync(srcPath)) {
383
+ if (isDir) {
384
+ mkdirSync(join(backupDir, basename(src === join('.claude', 'skills') ? '.claude' : src)), { recursive: true });
385
+ }
386
+ cpSync(srcPath, destPath, { recursive: true, force: true });
387
+ }
388
+ }
389
+ }
390
+ catch {
391
+ // Non-fatal — snapshot is best-effort
392
+ console.error(chalk.dim(`[pilotlynx] Warning: could not create backup for "${project}"`));
393
+ }
394
+ }
395
+ function writeImproveLog(output, failures, totalCost) {
396
+ const projectCount = Object.keys(output.projectFeedback).length;
397
+ const insightCount = output.crossProjectInsights?.length ?? 0;
398
+ const antiPatternCount = output.antiPatterns?.length ?? 0;
399
+ const summary = [
400
+ `Analyzed ${projectCount} project(s)`,
401
+ `${insightCount} insight(s) generated`,
402
+ `${antiPatternCount} anti-pattern(s) identified`,
403
+ failures.length > 0 ? `${failures.length} failure(s)` : 'all feedback applied',
404
+ ].join(', ');
405
+ // Write to a synthetic "improve" project log in the insights directory
406
+ const dir = INSIGHTS_DIR();
407
+ mkdirSync(dir, { recursive: true });
408
+ const now = new Date();
409
+ const record = {
410
+ type: 'improve_cycle',
411
+ timestamp: now.toISOString(),
412
+ summary,
413
+ projectCount,
414
+ insightCount,
415
+ antiPatternCount,
416
+ failures: failures.length,
417
+ totalCostUsd: totalCost,
418
+ projectsFeedback: Object.keys(output.projectFeedback),
75
419
  };
420
+ const dateStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
421
+ const logPath = join(dir, `improve-log-${dateStr}.json`);
422
+ try {
423
+ writeFileSync(logPath, JSON.stringify(record, null, 2), 'utf8');
424
+ }
425
+ catch {
426
+ // Non-fatal
427
+ }
76
428
  }
77
429
  //# sourceMappingURL=improve-ops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"improve-ops.js","sourceRoot":"","sources":["../../../src/lib/command-ops/improve-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"improve-ops.js","sourceRoot":"","sources":["../../../src/lib/command-ops/improve-ops.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,11 @@
1
1
  import type { RunRecord } from '../types.js';
2
+ export interface RunOptions {
3
+ model?: string;
4
+ budget?: number;
5
+ timeoutSeconds?: number;
6
+ tracing?: boolean;
7
+ feedbackPrompt?: string;
8
+ }
2
9
  export interface RunResult {
3
10
  success: boolean;
4
11
  error?: string;
@@ -7,4 +14,4 @@ export interface RunResult {
7
14
  numTurns?: number;
8
15
  durationMs?: number;
9
16
  }
10
- export declare function executeRun(project: string, workflow: string, feedbackPrompt?: string): Promise<RunResult>;
17
+ export declare function executeRun(project: string, workflow: string, options?: RunOptions): Promise<RunResult>;