@yuaone/core 0.9.7 → 0.9.9

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 (193) hide show
  1. package/dist/__tests__/context-manager.test.js +5 -9
  2. package/dist/__tests__/context-manager.test.js.map +1 -1
  3. package/dist/agent-coordinator.d.ts +172 -0
  4. package/dist/agent-coordinator.d.ts.map +1 -0
  5. package/dist/agent-coordinator.js +390 -0
  6. package/dist/agent-coordinator.js.map +1 -0
  7. package/dist/agent-loop.d.ts +83 -29
  8. package/dist/agent-loop.d.ts.map +1 -1
  9. package/dist/agent-loop.js +697 -335
  10. package/dist/agent-loop.js.map +1 -1
  11. package/dist/agent-reputation.d.ts +72 -0
  12. package/dist/agent-reputation.d.ts.map +1 -0
  13. package/dist/agent-reputation.js +222 -0
  14. package/dist/agent-reputation.js.map +1 -0
  15. package/dist/arch-summarizer.d.ts +48 -0
  16. package/dist/arch-summarizer.d.ts.map +1 -0
  17. package/dist/arch-summarizer.js +239 -0
  18. package/dist/arch-summarizer.js.map +1 -0
  19. package/dist/autonomous/explicit-planner.d.ts +45 -0
  20. package/dist/autonomous/explicit-planner.d.ts.map +1 -0
  21. package/dist/autonomous/explicit-planner.js +99 -0
  22. package/dist/autonomous/explicit-planner.js.map +1 -0
  23. package/dist/autonomous/incident-debugger.d.ts +78 -0
  24. package/dist/autonomous/incident-debugger.d.ts.map +1 -0
  25. package/dist/autonomous/incident-debugger.js +324 -0
  26. package/dist/autonomous/incident-debugger.js.map +1 -0
  27. package/dist/autonomous/index.d.ts +15 -0
  28. package/dist/autonomous/index.d.ts.map +1 -0
  29. package/dist/autonomous/index.js +10 -0
  30. package/dist/autonomous/index.js.map +1 -0
  31. package/dist/autonomous/patch-tournament.d.ts +82 -0
  32. package/dist/autonomous/patch-tournament.d.ts.map +1 -0
  33. package/dist/autonomous/patch-tournament.js +150 -0
  34. package/dist/autonomous/patch-tournament.js.map +1 -0
  35. package/dist/autonomous/research-agent.d.ts +66 -0
  36. package/dist/autonomous/research-agent.d.ts.map +1 -0
  37. package/dist/autonomous/research-agent.js +210 -0
  38. package/dist/autonomous/research-agent.js.map +1 -0
  39. package/dist/autonomous/task-memory.d.ts +63 -0
  40. package/dist/autonomous/task-memory.d.ts.map +1 -0
  41. package/dist/autonomous/task-memory.js +143 -0
  42. package/dist/autonomous/task-memory.js.map +1 -0
  43. package/dist/budget-governor-v2.d.ts +93 -0
  44. package/dist/budget-governor-v2.d.ts.map +1 -0
  45. package/dist/budget-governor-v2.js +345 -0
  46. package/dist/budget-governor-v2.js.map +1 -0
  47. package/dist/capability-graph.d.ts +102 -0
  48. package/dist/capability-graph.d.ts.map +1 -0
  49. package/dist/capability-graph.js +397 -0
  50. package/dist/capability-graph.js.map +1 -0
  51. package/dist/capability-self-model.d.ts +144 -0
  52. package/dist/capability-self-model.d.ts.map +1 -0
  53. package/dist/capability-self-model.js +312 -0
  54. package/dist/capability-self-model.js.map +1 -0
  55. package/dist/checkpoint-manager.d.ts +94 -0
  56. package/dist/checkpoint-manager.d.ts.map +1 -0
  57. package/dist/checkpoint-manager.js +225 -0
  58. package/dist/checkpoint-manager.js.map +1 -0
  59. package/dist/continuation-engine.js +1 -1
  60. package/dist/continuation-engine.js.map +1 -1
  61. package/dist/dag-orchestrator.d.ts +0 -3
  62. package/dist/dag-orchestrator.d.ts.map +1 -1
  63. package/dist/dag-orchestrator.js +0 -1
  64. package/dist/dag-orchestrator.js.map +1 -1
  65. package/dist/evidence-chain.d.ts +99 -0
  66. package/dist/evidence-chain.d.ts.map +1 -0
  67. package/dist/evidence-chain.js +200 -0
  68. package/dist/evidence-chain.js.map +1 -0
  69. package/dist/execution-engine.d.ts.map +1 -1
  70. package/dist/execution-engine.js +0 -1
  71. package/dist/execution-engine.js.map +1 -1
  72. package/dist/failure-signature-memory.d.ts +61 -0
  73. package/dist/failure-signature-memory.d.ts.map +1 -0
  74. package/dist/failure-signature-memory.js +278 -0
  75. package/dist/failure-signature-memory.js.map +1 -0
  76. package/dist/index.d.ts +52 -5
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +48 -7
  79. package/dist/index.js.map +1 -1
  80. package/dist/language-detector.d.ts.map +1 -1
  81. package/dist/language-detector.js +122 -43
  82. package/dist/language-detector.js.map +1 -1
  83. package/dist/llm-client.d.ts +0 -7
  84. package/dist/llm-client.d.ts.map +1 -1
  85. package/dist/llm-client.js +15 -122
  86. package/dist/llm-client.js.map +1 -1
  87. package/dist/mcp-client.js +1 -1
  88. package/dist/mcp-client.js.map +1 -1
  89. package/dist/memory.d.ts.map +1 -1
  90. package/dist/memory.js +0 -15
  91. package/dist/memory.js.map +1 -1
  92. package/dist/meta-learning-collector.d.ts +64 -0
  93. package/dist/meta-learning-collector.d.ts.map +1 -0
  94. package/dist/meta-learning-collector.js +169 -0
  95. package/dist/meta-learning-collector.js.map +1 -0
  96. package/dist/meta-learning-engine.d.ts +61 -0
  97. package/dist/meta-learning-engine.d.ts.map +1 -0
  98. package/dist/meta-learning-engine.js +250 -0
  99. package/dist/meta-learning-engine.js.map +1 -0
  100. package/dist/overhead-governor.d.ts +105 -0
  101. package/dist/overhead-governor.d.ts.map +1 -0
  102. package/dist/overhead-governor.js +239 -0
  103. package/dist/overhead-governor.js.map +1 -0
  104. package/dist/playbook-library.d.ts +75 -0
  105. package/dist/playbook-library.d.ts.map +1 -0
  106. package/dist/playbook-library.js +241 -0
  107. package/dist/playbook-library.js.map +1 -0
  108. package/dist/project-executive.d.ts +97 -0
  109. package/dist/project-executive.d.ts.map +1 -0
  110. package/dist/project-executive.js +223 -0
  111. package/dist/project-executive.js.map +1 -0
  112. package/dist/research-loop.d.ts +79 -0
  113. package/dist/research-loop.d.ts.map +1 -0
  114. package/dist/research-loop.js +363 -0
  115. package/dist/research-loop.js.map +1 -0
  116. package/dist/resolve-memory-path.d.ts +32 -0
  117. package/dist/resolve-memory-path.d.ts.map +1 -0
  118. package/dist/resolve-memory-path.js +97 -0
  119. package/dist/resolve-memory-path.js.map +1 -0
  120. package/dist/safe-bounds.d.ts +101 -0
  121. package/dist/safe-bounds.d.ts.map +1 -0
  122. package/dist/safe-bounds.js +140 -0
  123. package/dist/safe-bounds.js.map +1 -0
  124. package/dist/sandbox-tiers.d.ts +5 -0
  125. package/dist/sandbox-tiers.d.ts.map +1 -1
  126. package/dist/sandbox-tiers.js +14 -6
  127. package/dist/sandbox-tiers.js.map +1 -1
  128. package/dist/security.d.ts.map +1 -1
  129. package/dist/security.js +3 -0
  130. package/dist/security.js.map +1 -1
  131. package/dist/self-improvement-loop.d.ts +64 -0
  132. package/dist/self-improvement-loop.d.ts.map +1 -0
  133. package/dist/self-improvement-loop.js +156 -0
  134. package/dist/self-improvement-loop.js.map +1 -0
  135. package/dist/session-persistence.d.ts +5 -0
  136. package/dist/session-persistence.d.ts.map +1 -1
  137. package/dist/session-persistence.js +19 -3
  138. package/dist/session-persistence.js.map +1 -1
  139. package/dist/skill-loader.d.ts +16 -9
  140. package/dist/skill-loader.d.ts.map +1 -1
  141. package/dist/skill-loader.js +52 -116
  142. package/dist/skill-loader.js.map +1 -1
  143. package/dist/skill-registry.d.ts +60 -0
  144. package/dist/skill-registry.d.ts.map +1 -0
  145. package/dist/skill-registry.js +162 -0
  146. package/dist/skill-registry.js.map +1 -0
  147. package/dist/stall-detector.d.ts +56 -0
  148. package/dist/stall-detector.d.ts.map +1 -0
  149. package/dist/stall-detector.js +142 -0
  150. package/dist/stall-detector.js.map +1 -0
  151. package/dist/strategy-learner.d.ts +57 -0
  152. package/dist/strategy-learner.d.ts.map +1 -0
  153. package/dist/strategy-learner.js +160 -0
  154. package/dist/strategy-learner.js.map +1 -0
  155. package/dist/strategy-market.d.ts +73 -0
  156. package/dist/strategy-market.d.ts.map +1 -0
  157. package/dist/strategy-market.js +200 -0
  158. package/dist/strategy-market.js.map +1 -0
  159. package/dist/sub-agent.d.ts +0 -3
  160. package/dist/sub-agent.d.ts.map +1 -1
  161. package/dist/sub-agent.js +0 -10
  162. package/dist/sub-agent.js.map +1 -1
  163. package/dist/system-prompt.d.ts +0 -2
  164. package/dist/system-prompt.d.ts.map +1 -1
  165. package/dist/system-prompt.js +97 -490
  166. package/dist/system-prompt.js.map +1 -1
  167. package/dist/task-classifier.d.ts.map +1 -1
  168. package/dist/task-classifier.js +2 -54
  169. package/dist/task-classifier.js.map +1 -1
  170. package/dist/tool-synthesizer.d.ts +149 -0
  171. package/dist/tool-synthesizer.d.ts.map +1 -0
  172. package/dist/tool-synthesizer.js +455 -0
  173. package/dist/tool-synthesizer.js.map +1 -0
  174. package/dist/trace-pattern-extractor.d.ts +76 -0
  175. package/dist/trace-pattern-extractor.d.ts.map +1 -0
  176. package/dist/trace-pattern-extractor.js +321 -0
  177. package/dist/trace-pattern-extractor.js.map +1 -0
  178. package/dist/trace-recorder.d.ts +38 -0
  179. package/dist/trace-recorder.d.ts.map +1 -0
  180. package/dist/trace-recorder.js +94 -0
  181. package/dist/trace-recorder.js.map +1 -0
  182. package/dist/trust-economics.d.ts +50 -0
  183. package/dist/trust-economics.d.ts.map +1 -0
  184. package/dist/trust-economics.js +148 -0
  185. package/dist/trust-economics.js.map +1 -0
  186. package/dist/types.d.ts +272 -3
  187. package/dist/types.d.ts.map +1 -1
  188. package/dist/types.js.map +1 -1
  189. package/dist/yuan-md-loader.d.ts +22 -0
  190. package/dist/yuan-md-loader.d.ts.map +1 -0
  191. package/dist/yuan-md-loader.js +75 -0
  192. package/dist/yuan-md-loader.js.map +1 -0
  193. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @module meta-learning-engine
3
+ * @description Orchestrator that combines MetaLearningCollector + StrategyLearner
4
+ * data to produce sophisticated `agent:policy_recommendation` events.
5
+ *
6
+ * ADVISORY ONLY — never writes to policy.json.
7
+ * All output is proposals only, not commands.
8
+ *
9
+ * Storage: ~/.yuan/strategy/meta-learning-reports.json — last 10 reports.
10
+ * Atomic writes (.tmp → renameSync).
11
+ */
12
+ import { EventEmitter } from "events";
13
+ import { MetaLearningCollector } from "./meta-learning-collector.js";
14
+ import { StrategyLearner } from "./strategy-learner.js";
15
+ export interface PolicyRecommendationDetail {
16
+ id: string;
17
+ type: "governor_tuning" | "playbook_preference" | "tool_ordering" | "iteration_budget";
18
+ description: string;
19
+ rationale: string;
20
+ suggestedValue?: unknown;
21
+ confidence: number;
22
+ supportingDataPoints: number;
23
+ generatedAt: string;
24
+ }
25
+ export interface MetaLearningReport {
26
+ generatedAt: string;
27
+ totalTasksAnalyzed: number;
28
+ recommendations: PolicyRecommendationDetail[];
29
+ topPlaybooks: Array<{
30
+ playbookId: string;
31
+ taskType: string;
32
+ score: number;
33
+ }>;
34
+ worstPerformingTaskTypes: string[];
35
+ avgIterationsPerTaskType: Record<string, number>;
36
+ }
37
+ export interface MetaLearningEngineConfig {
38
+ collector?: MetaLearningCollector;
39
+ strategyLearner?: StrategyLearner;
40
+ storageDir?: string;
41
+ minDataPoints?: number;
42
+ }
43
+ export declare class MetaLearningEngine extends EventEmitter {
44
+ private readonly collector;
45
+ private readonly strategyLearner;
46
+ private readonly storageFile;
47
+ private readonly storageDir;
48
+ private readonly minDataPoints;
49
+ private lastReport;
50
+ constructor(config?: MetaLearningEngineConfig);
51
+ /**
52
+ * Run analysis and produce recommendations.
53
+ * Emits `agent:policy_recommendation` event.
54
+ * ADVISORY ONLY — does not write to policy.json.
55
+ */
56
+ analyze(): Promise<MetaLearningReport>;
57
+ /** Get last report without re-analyzing. */
58
+ getLastReport(): MetaLearningReport | null;
59
+ private _saveReport;
60
+ }
61
+ //# sourceMappingURL=meta-learning-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-learning-engine.d.ts","sourceRoot":"","sources":["../src/meta-learning-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,eAAe,GAAG,kBAAkB,CAAC;IACvF,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,0BAA0B,EAAE,CAAC;IAC9C,YAAY,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7E,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAkBD,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,UAAU,CAAmC;gBAEzC,MAAM,GAAE,wBAA6B;IAWjD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAsL5C,4CAA4C;IAC5C,aAAa,IAAI,kBAAkB,GAAG,IAAI;IAM1C,OAAO,CAAC,WAAW;CA6BpB"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * @module meta-learning-engine
3
+ * @description Orchestrator that combines MetaLearningCollector + StrategyLearner
4
+ * data to produce sophisticated `agent:policy_recommendation` events.
5
+ *
6
+ * ADVISORY ONLY — never writes to policy.json.
7
+ * All output is proposals only, not commands.
8
+ *
9
+ * Storage: ~/.yuan/strategy/meta-learning-reports.json — last 10 reports.
10
+ * Atomic writes (.tmp → renameSync).
11
+ */
12
+ import { EventEmitter } from "events";
13
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "fs";
14
+ import { homedir } from "os";
15
+ import { join } from "path";
16
+ import { randomUUID } from "crypto";
17
+ import { MetaLearningCollector } from "./meta-learning-collector.js";
18
+ import { StrategyLearner } from "./strategy-learner.js";
19
+ // ─── Helpers ───
20
+ function stddev(values) {
21
+ if (values.length < 2)
22
+ return 0;
23
+ const mean = values.reduce((a, b) => a + b, 0) / values.length;
24
+ const variance = values.reduce((sum, v) => sum + (v - mean) ** 2, 0) / values.length;
25
+ return Math.sqrt(variance);
26
+ }
27
+ function mean(values) {
28
+ if (values.length === 0)
29
+ return 0;
30
+ return values.reduce((a, b) => a + b, 0) / values.length;
31
+ }
32
+ // ─── Class ───
33
+ export class MetaLearningEngine extends EventEmitter {
34
+ collector;
35
+ strategyLearner;
36
+ storageFile;
37
+ storageDir;
38
+ minDataPoints;
39
+ lastReport = null;
40
+ constructor(config = {}) {
41
+ super();
42
+ this.collector = config.collector ?? new MetaLearningCollector();
43
+ this.strategyLearner = config.strategyLearner ?? new StrategyLearner();
44
+ this.storageDir = config.storageDir ?? join(homedir(), ".yuan", "strategy");
45
+ this.storageFile = join(this.storageDir, "meta-learning-reports.json");
46
+ this.minDataPoints = config.minDataPoints ?? 10;
47
+ }
48
+ // ─── Public API ───
49
+ /**
50
+ * Run analysis and produce recommendations.
51
+ * Emits `agent:policy_recommendation` event.
52
+ * ADVISORY ONLY — does not write to policy.json.
53
+ */
54
+ async analyze() {
55
+ const now = new Date().toISOString();
56
+ const reportId = randomUUID();
57
+ const allStats = this.collector.getStats();
58
+ // Collect unique task types
59
+ const taskTypes = [...new Set(allStats.map((s) => s.taskType))];
60
+ // Compute avgIterations per taskType
61
+ const avgIterationsPerTaskType = {};
62
+ const iterationsByTaskType = {};
63
+ for (const stat of allStats) {
64
+ const arr = iterationsByTaskType[stat.taskType] ?? [];
65
+ arr.push(stat.iterationsUsed);
66
+ iterationsByTaskType[stat.taskType] = arr;
67
+ }
68
+ for (const taskType of taskTypes) {
69
+ avgIterationsPerTaskType[taskType] = mean(iterationsByTaskType[taskType] ?? []);
70
+ }
71
+ // Collect base report from collector (for taskTypeStats / success rates)
72
+ const collectorReport = this.collector.generateReport();
73
+ // Worst performing task types: success rate < 50%
74
+ const worstPerformingTaskTypes = [];
75
+ for (const [taskType, stats] of Object.entries(collectorReport.taskTypeStats)) {
76
+ const successRate = stats.total > 0 ? stats.success / stats.total : 0;
77
+ if (successRate < 0.5 && stats.total >= this.minDataPoints) {
78
+ worstPerformingTaskTypes.push(taskType);
79
+ }
80
+ }
81
+ const recommendations = [];
82
+ // ── 1. Governor Tuning Recommendations ──
83
+ for (const taskType of taskTypes) {
84
+ const iterations = iterationsByTaskType[taskType] ?? [];
85
+ const count = iterations.length;
86
+ if (count < this.minDataPoints)
87
+ continue;
88
+ const avg = avgIterationsPerTaskType[taskType];
89
+ if (avg > 15) {
90
+ recommendations.push({
91
+ id: randomUUID(),
92
+ type: "governor_tuning",
93
+ description: `Reduce maxIterations for taskType "${taskType}"`,
94
+ rationale: `Average iterations (${avg.toFixed(1)}) exceeds 15 — reducing to 12 may cut cost without losing quality.`,
95
+ suggestedValue: { maxIterations: 12, taskType },
96
+ confidence: Math.min(0.9, (avg - 15) / 10 + 0.5),
97
+ supportingDataPoints: count,
98
+ generatedAt: now,
99
+ });
100
+ }
101
+ else if (avg < 5) {
102
+ recommendations.push({
103
+ id: randomUUID(),
104
+ type: "governor_tuning",
105
+ description: `Increase maxIterations for taskType "${taskType}" to allow more exploration`,
106
+ rationale: `Average iterations (${avg.toFixed(1)}) is below 5 — the agent may be under-exploring. Increasing budget may improve quality.`,
107
+ suggestedValue: { maxIterations: 20, taskType },
108
+ confidence: Math.min(0.8, (5 - avg) / 5 + 0.4),
109
+ supportingDataPoints: count,
110
+ generatedAt: now,
111
+ });
112
+ }
113
+ }
114
+ // ── 2. Playbook Preference Recommendations ──
115
+ const topPlaybooks = [];
116
+ for (const taskType of taskTypes) {
117
+ const rankings = this.strategyLearner.rankPlaybooks(taskType);
118
+ if (rankings.length === 0)
119
+ continue;
120
+ const top = rankings[0];
121
+ topPlaybooks.push({ playbookId: top.playbookId, taskType: top.taskType, score: top.score });
122
+ // Get the metric for confidence check
123
+ const metric = this.strategyLearner.getMetric(top.playbookId);
124
+ const confidence = metric?.confidence ?? 0;
125
+ const totalRuns = (metric?.successCount ?? 0) + (metric?.failureCount ?? 0);
126
+ if (confidence > 0.7 && totalRuns >= this.minDataPoints) {
127
+ recommendations.push({
128
+ id: randomUUID(),
129
+ type: "playbook_preference",
130
+ description: `Prefer playbook "${top.playbookId}" for taskType "${taskType}"`,
131
+ rationale: `Playbook "${top.playbookId}" has confidence ${(confidence * 100).toFixed(1)}% over ${totalRuns} runs (score: ${top.score.toFixed(2)}).`,
132
+ suggestedValue: { playbookId: top.playbookId, taskType },
133
+ confidence,
134
+ supportingDataPoints: totalRuns,
135
+ generatedAt: now,
136
+ });
137
+ }
138
+ }
139
+ // ── 3. Tool Ordering Recommendations ──
140
+ for (const taskType of taskTypes) {
141
+ const successfulStats = allStats.filter((s) => s.taskType === taskType && s.success);
142
+ const totalSuccessful = successfulStats.length;
143
+ if (totalSuccessful < this.minDataPoints)
144
+ continue;
145
+ // Count tool appearances in successful runs
146
+ const toolCounts = new Map();
147
+ for (const stat of successfulStats) {
148
+ const seen = new Set();
149
+ for (const tool of stat.toolSequence) {
150
+ if (!seen.has(tool)) {
151
+ toolCounts.set(tool, (toolCounts.get(tool) ?? 0) + 1);
152
+ seen.add(tool);
153
+ }
154
+ }
155
+ }
156
+ for (const [tool, count] of toolCounts.entries()) {
157
+ const rate = count / totalSuccessful;
158
+ if (rate > 0.8) {
159
+ recommendations.push({
160
+ id: randomUUID(),
161
+ type: "tool_ordering",
162
+ description: `Always use tool "${tool}" early for taskType "${taskType}"`,
163
+ rationale: `Tool "${tool}" appears in ${(rate * 100).toFixed(1)}% of successful runs for "${taskType}" (${count}/${totalSuccessful}). Using it early may improve outcomes.`,
164
+ suggestedValue: { tool, taskType, position: "early" },
165
+ confidence: Math.min(0.95, rate),
166
+ supportingDataPoints: totalSuccessful,
167
+ generatedAt: now,
168
+ });
169
+ }
170
+ }
171
+ }
172
+ // ── 4. Iteration Budget Recommendations ──
173
+ for (const taskType of taskTypes) {
174
+ const iterations = iterationsByTaskType[taskType] ?? [];
175
+ if (iterations.length < this.minDataPoints)
176
+ continue;
177
+ const sd = stddev(iterations);
178
+ if (sd > 8) {
179
+ const avg = avgIterationsPerTaskType[taskType];
180
+ recommendations.push({
181
+ id: randomUUID(),
182
+ type: "iteration_budget",
183
+ description: `Use adaptive iteration budget for taskType "${taskType}"`,
184
+ rationale: `High variance in iteration counts (stddev: ${sd.toFixed(1)}, mean: ${avg.toFixed(1)}) across ${iterations.length} runs suggests a fixed budget is suboptimal. An adaptive budget (e.g. range ${Math.max(1, Math.round(avg - sd))}–${Math.round(avg + sd)}) may reduce wasted compute.`,
185
+ suggestedValue: {
186
+ taskType,
187
+ minIterations: Math.max(1, Math.round(avg - sd)),
188
+ maxIterations: Math.round(avg + sd),
189
+ adaptive: true,
190
+ },
191
+ confidence: Math.min(0.85, sd / 20 + 0.4),
192
+ supportingDataPoints: iterations.length,
193
+ generatedAt: now,
194
+ });
195
+ }
196
+ }
197
+ const report = {
198
+ generatedAt: now,
199
+ totalTasksAnalyzed: allStats.length,
200
+ recommendations,
201
+ topPlaybooks,
202
+ worstPerformingTaskTypes,
203
+ avgIterationsPerTaskType,
204
+ };
205
+ this.lastReport = report;
206
+ this._saveReport(report);
207
+ // Emit advisory event — PROPOSALS ONLY, not commands
208
+ this.emit("event", {
209
+ kind: "agent:policy_recommendation",
210
+ recommendations,
211
+ reportId,
212
+ timestamp: Date.now(),
213
+ });
214
+ return report;
215
+ }
216
+ /** Get last report without re-analyzing. */
217
+ getLastReport() {
218
+ return this.lastReport;
219
+ }
220
+ // ─── Internal ───
221
+ _saveReport(report) {
222
+ const tmpFile = `${this.storageFile}.tmp`;
223
+ try {
224
+ if (!existsSync(this.storageDir)) {
225
+ mkdirSync(this.storageDir, { recursive: true });
226
+ }
227
+ // Load existing reports (keep last 10)
228
+ let existing = [];
229
+ if (existsSync(this.storageFile)) {
230
+ try {
231
+ const raw = readFileSync(this.storageFile, "utf-8");
232
+ existing = JSON.parse(raw);
233
+ }
234
+ catch {
235
+ existing = [];
236
+ }
237
+ }
238
+ existing.push(report);
239
+ if (existing.length > 10) {
240
+ existing = existing.slice(existing.length - 10);
241
+ }
242
+ writeFileSync(tmpFile, JSON.stringify(existing, null, 2), "utf-8");
243
+ renameSync(tmpFile, this.storageFile);
244
+ }
245
+ catch {
246
+ // Non-fatal: storage failures should not crash the agent loop
247
+ }
248
+ }
249
+ }
250
+ //# sourceMappingURL=meta-learning-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-learning-engine.js","sourceRoot":"","sources":["../src/meta-learning-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @module overhead-governor
3
+ * @description 서브시스템 실행 정책 중앙 관리자.
4
+ *
5
+ * "Main loop is sacred. All secondary intelligence must earn the right to block."
6
+ *
7
+ * 모든 optional 서브시스템(AutoTSC, Debate, SelfReflection, QAPipeline 등)은
8
+ * 이 Governor의 결정 없이 blocking으로 실행될 수 없다.
9
+ *
10
+ * 모드:
11
+ * OFF — 실행 안 함
12
+ * SHADOW — 실제 실행 없이 "실행됐을 것" 로그만 남김
13
+ * BLOCKING — 실제 blocking 실행
14
+ */
15
+ export type GuardMode = "OFF" | "SHADOW" | "BLOCKING";
16
+ export type TaskPhase = "explore" | "implement" | "verify" | "finalize";
17
+ /**
18
+ * Governor가 결정할 때 사용하는 런타임 시그널.
19
+ */
20
+ export interface TriggerContext {
21
+ /** 이번 iteration에서 변경된 파일 목록 */
22
+ changedFiles: string[];
23
+ /** 마지막 verify 이후 write 횟수 */
24
+ writeCountSinceVerify: number;
25
+ /** 누적 tool 에러 횟수 */
26
+ failureCount: number;
27
+ /** 반복되는 에러 시그니처 (동일 에러 문자열) */
28
+ repeatedErrorSignature?: string;
29
+ /** planner 신뢰도 (0~1) */
30
+ plannerConfidence?: number;
31
+ /** 현재 컨텍스트 사용률 (0~1) */
32
+ contextUsageRatio: number;
33
+ /** 위험한 write (핵심 파일: tsconfig, package.json, public API 등) */
34
+ riskyWrite: boolean;
35
+ /** 현재 task phase */
36
+ taskPhase: TaskPhase;
37
+ /** 현재 iteration index */
38
+ iteration: number;
39
+ /** 이번 iteration에서 이미 verify가 실행됐는지 */
40
+ verifyRanThisIteration: boolean;
41
+ /** 이번 iteration에서 이미 summarize가 실행됐는지 */
42
+ summarizeRanThisIteration: boolean;
43
+ /** 이번 iteration에서 llmFixer가 실행된 횟수 */
44
+ llmFixerRunCount: number;
45
+ }
46
+ /**
47
+ * 각 서브시스템별 사용자 설정 (feature flags).
48
+ * 기본값은 GPT 권장 정책.
49
+ */
50
+ export interface OverheadGovernorConfig {
51
+ autoTsc?: GuardMode;
52
+ debate?: GuardMode;
53
+ deepVerify?: GuardMode;
54
+ quickVerify?: GuardMode;
55
+ qaPipeline?: GuardMode;
56
+ llmFixer?: GuardMode;
57
+ summarize?: GuardMode;
58
+ /** ResearchAgent — web/repo/docs search orchestration */
59
+ research?: GuardMode;
60
+ /** PatchTournamentExecutor — multi-candidate patch generation + selection */
61
+ tournament?: GuardMode;
62
+ /** IncidentDebugMode — log/trace/commit failure analysis */
63
+ debugMode?: GuardMode;
64
+ }
65
+ export declare class OverheadGovernor {
66
+ private readonly cfg;
67
+ /** Shadow mode 로그 콜백 (TUI로 보내거나 stdout) */
68
+ private readonly onShadow?;
69
+ constructor(config?: OverheadGovernorConfig, onShadow?: (subsystem: string, reason: string) => void);
70
+ /** Auto-TSC: TS 타입 체크 자동 실행 여부 */
71
+ shouldRunAutoTsc(ctx: TriggerContext): GuardMode;
72
+ /** DebateOrchestrator: 복잡한 태스크에서 multi-agent debate */
73
+ shouldRunDebate(ctx: TriggerContext): GuardMode;
74
+ /** SelfReflection.deepVerify: 완료 시점 심층 코드 검증 */
75
+ shouldRunDeepVerify(ctx: TriggerContext): GuardMode;
76
+ /** SelfReflection.quickVerify: 주기적 경량 검증 */
77
+ shouldRunQuickVerify(ctx: TriggerContext): GuardMode;
78
+ /** QAPipeline: write 후 코드 품질 검사 */
79
+ shouldRunQaPipeline(ctx: TriggerContext): GuardMode;
80
+ /** SelfDebugLoop.llmFixer: LLM 기반 에러 자동 수정 */
81
+ shouldRunLlmFixer(ctx: TriggerContext): GuardMode;
82
+ /** ContextBudgetManager.summarize: 컨텍스트 요약으로 공간 확보 */
83
+ shouldRunSummarize(ctx: TriggerContext): GuardMode;
84
+ /** ResearchAgent: only run when goal requires external information */
85
+ shouldRunResearch(ctx: TriggerContext): GuardMode;
86
+ /** PatchTournamentExecutor: only run for high-risk writes in finalize */
87
+ shouldRunTournament(ctx: TriggerContext): GuardMode;
88
+ /** IncidentDebugMode: only run when repeated errors detected */
89
+ shouldRunDebugMode(ctx: TriggerContext): GuardMode;
90
+ private _shadow;
91
+ /**
92
+ * 현재 설정 반환 (디버그용).
93
+ */
94
+ getConfig(): Required<OverheadGovernorConfig>;
95
+ /**
96
+ * Load overrides from a JSON file (e.g. ~/.yuan/policy.json).
97
+ * Only keys that exist in OverheadGovernorConfig are applied.
98
+ * Unknown keys are silently ignored — safe to call with arbitrary files.
99
+ *
100
+ * Example .yuan/policy.json:
101
+ * { "research": "BLOCKING", "tournament": "BLOCKING", "debugMode": "BLOCKING" }
102
+ */
103
+ static loadFromFile(filePath: string): OverheadGovernorConfig;
104
+ }
105
+ //# sourceMappingURL=overhead-governor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overhead-governor.d.ts","sourceRoot":"","sources":["../src/overhead-governor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,UAAU,EAAE,OAAO,CAAC;IACpB,oBAAoB;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,sBAAsB,EAAE,OAAO,CAAC;IAChC,yCAAyC;IACzC,yBAAyB,EAAE,OAAO,CAAC;IACnC,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAkBD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,2CAA2C;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA8C;gBAGtE,MAAM,CAAC,EAAE,sBAAsB,EAC/B,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI;IAQxD,kCAAkC;IAClC,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IA6BhD,uDAAuD;IACvD,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAmB/C,gDAAgD;IAChD,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAoBnD,4CAA4C;IAC5C,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAoBpD,mCAAmC;IACnC,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAanD,8CAA8C;IAC9C,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAgBjD,sDAAsD;IACtD,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAqBlD,sEAAsE;IACtE,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAWjD,yEAAyE;IACzE,mBAAmB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAWnD,gEAAgE;IAChE,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS;IAelD,OAAO,CAAC,OAAO;IAIf;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,sBAAsB,CAAC;IAI7C;;;;;;;OAOG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB;CAoB9D"}