@yuaone/core 0.1.3 → 0.3.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 (95) hide show
  1. package/dist/agent-loop.d.ts +152 -0
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +893 -9
  4. package/dist/agent-loop.js.map +1 -1
  5. package/dist/benchmark-runner.d.ts +141 -0
  6. package/dist/benchmark-runner.d.ts.map +1 -0
  7. package/dist/benchmark-runner.js +526 -0
  8. package/dist/benchmark-runner.js.map +1 -0
  9. package/dist/codebase-context.d.ts +49 -0
  10. package/dist/codebase-context.d.ts.map +1 -1
  11. package/dist/codebase-context.js +146 -0
  12. package/dist/codebase-context.js.map +1 -1
  13. package/dist/constants.d.ts.map +1 -1
  14. package/dist/constants.js +8 -0
  15. package/dist/constants.js.map +1 -1
  16. package/dist/context-budget.d.ts +1 -1
  17. package/dist/context-budget.d.ts.map +1 -1
  18. package/dist/context-budget.js +4 -2
  19. package/dist/context-budget.js.map +1 -1
  20. package/dist/context-compressor.d.ts +1 -1
  21. package/dist/context-compressor.d.ts.map +1 -1
  22. package/dist/context-compressor.js +5 -3
  23. package/dist/context-compressor.js.map +1 -1
  24. package/dist/context-manager.d.ts +7 -1
  25. package/dist/context-manager.d.ts.map +1 -1
  26. package/dist/context-manager.js +34 -2
  27. package/dist/context-manager.js.map +1 -1
  28. package/dist/continuation-engine.d.ts +168 -0
  29. package/dist/continuation-engine.d.ts.map +1 -0
  30. package/dist/continuation-engine.js +421 -0
  31. package/dist/continuation-engine.js.map +1 -0
  32. package/dist/cost-optimizer.d.ts +159 -0
  33. package/dist/cost-optimizer.d.ts.map +1 -0
  34. package/dist/cost-optimizer.js +406 -0
  35. package/dist/cost-optimizer.js.map +1 -0
  36. package/dist/execution-engine.d.ts.map +1 -1
  37. package/dist/execution-engine.js +9 -4
  38. package/dist/execution-engine.js.map +1 -1
  39. package/dist/execution-policy-engine.d.ts +133 -0
  40. package/dist/execution-policy-engine.d.ts.map +1 -0
  41. package/dist/execution-policy-engine.js +367 -0
  42. package/dist/execution-policy-engine.js.map +1 -0
  43. package/dist/failure-recovery.d.ts +228 -0
  44. package/dist/failure-recovery.d.ts.map +1 -0
  45. package/dist/failure-recovery.js +664 -0
  46. package/dist/failure-recovery.js.map +1 -0
  47. package/dist/hierarchical-planner.d.ts +69 -1
  48. package/dist/hierarchical-planner.d.ts.map +1 -1
  49. package/dist/hierarchical-planner.js +117 -0
  50. package/dist/hierarchical-planner.js.map +1 -1
  51. package/dist/impact-analyzer.d.ts +92 -0
  52. package/dist/impact-analyzer.d.ts.map +1 -0
  53. package/dist/impact-analyzer.js +615 -0
  54. package/dist/impact-analyzer.js.map +1 -0
  55. package/dist/index.d.ts +28 -3
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +27 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/llm-client.d.ts +1 -1
  60. package/dist/llm-client.d.ts.map +1 -1
  61. package/dist/llm-client.js +74 -7
  62. package/dist/llm-client.js.map +1 -1
  63. package/dist/memory-updater.d.ts +189 -0
  64. package/dist/memory-updater.d.ts.map +1 -0
  65. package/dist/memory-updater.js +481 -0
  66. package/dist/memory-updater.js.map +1 -0
  67. package/dist/prompt-defense.d.ts +59 -0
  68. package/dist/prompt-defense.d.ts.map +1 -0
  69. package/dist/prompt-defense.js +311 -0
  70. package/dist/prompt-defense.js.map +1 -0
  71. package/dist/reflexion.d.ts +211 -0
  72. package/dist/reflexion.d.ts.map +1 -0
  73. package/dist/reflexion.js +559 -0
  74. package/dist/reflexion.js.map +1 -0
  75. package/dist/system-prompt.d.ts +19 -3
  76. package/dist/system-prompt.d.ts.map +1 -1
  77. package/dist/system-prompt.js +203 -38
  78. package/dist/system-prompt.js.map +1 -1
  79. package/dist/task-classifier.d.ts +92 -0
  80. package/dist/task-classifier.d.ts.map +1 -0
  81. package/dist/task-classifier.js +566 -0
  82. package/dist/task-classifier.js.map +1 -0
  83. package/dist/token-budget.d.ts +131 -0
  84. package/dist/token-budget.d.ts.map +1 -0
  85. package/dist/token-budget.js +321 -0
  86. package/dist/token-budget.js.map +1 -0
  87. package/dist/types.d.ts +20 -2
  88. package/dist/types.d.ts.map +1 -1
  89. package/dist/types.js +18 -1
  90. package/dist/types.js.map +1 -1
  91. package/dist/world-state.d.ts +87 -0
  92. package/dist/world-state.d.ts.map +1 -0
  93. package/dist/world-state.js +435 -0
  94. package/dist/world-state.js.map +1 -0
  95. package/package.json +11 -21
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @module world-state
3
+ * @description Collects current project state (git, build, test, deps, files, errors)
4
+ * for injection into the agent's system prompt. Pure data collector — no events emitted.
5
+ */
6
+ export interface WorldStateSnapshot {
7
+ git: {
8
+ branch: string;
9
+ status: "clean" | "dirty";
10
+ uncommittedFiles: string[];
11
+ recentCommits: Array<{
12
+ hash: string;
13
+ message: string;
14
+ date: string;
15
+ }>;
16
+ hasConflicts: boolean;
17
+ };
18
+ build: {
19
+ lastResult: "pass" | "fail" | "unknown";
20
+ errors: string[];
21
+ buildTool: "tsc" | "webpack" | "vite" | "esbuild" | "unknown";
22
+ };
23
+ test: {
24
+ lastResult: "pass" | "fail" | "unknown";
25
+ failingTests: string[];
26
+ testRunner: "jest" | "vitest" | "mocha" | "node:test" | "unknown";
27
+ };
28
+ deps: {
29
+ packageManager: "npm" | "pnpm" | "yarn" | "bun" | "unknown";
30
+ outdated: string[];
31
+ missing: string[];
32
+ };
33
+ files: {
34
+ recentlyChanged: string[];
35
+ totalFiles: number;
36
+ };
37
+ errors: {
38
+ recentRuntimeErrors: string[];
39
+ };
40
+ collectedAt: string;
41
+ }
42
+ export interface WorldStateConfig {
43
+ projectPath: string;
44
+ maxRecentCommits?: number;
45
+ maxRecentFiles?: number;
46
+ skipBuild?: boolean;
47
+ skipTest?: boolean;
48
+ skipDeps?: boolean;
49
+ timeoutMs?: number;
50
+ }
51
+ export declare class WorldStateCollector {
52
+ private readonly projectPath;
53
+ private readonly maxRecentCommits;
54
+ private readonly maxRecentFiles;
55
+ private readonly skipBuild;
56
+ private readonly skipTest;
57
+ private readonly skipDeps;
58
+ private readonly timeoutMs;
59
+ constructor(config: WorldStateConfig);
60
+ /**
61
+ * Collect all project state. Never throws — failed collectors return defaults.
62
+ */
63
+ collect(): Promise<WorldStateSnapshot>;
64
+ /**
65
+ * Format snapshot as compact markdown for system prompt injection.
66
+ */
67
+ formatForPrompt(state: WorldStateSnapshot): string;
68
+ collectGit(): Promise<WorldStateSnapshot["git"]>;
69
+ collectBuild(): Promise<WorldStateSnapshot["build"]>;
70
+ collectTest(): Promise<WorldStateSnapshot["test"]>;
71
+ collectDeps(): Promise<WorldStateSnapshot["deps"]>;
72
+ collectFiles(): Promise<WorldStateSnapshot["files"]>;
73
+ private detectBuildTool;
74
+ /**
75
+ * Check common build output locations for errors without running a build.
76
+ * Looks for tsbuildinfo, .next/error, dist/.error, etc.
77
+ */
78
+ private checkBuildArtifacts;
79
+ private detectTestRunner;
80
+ private detectPackageManager;
81
+ /**
82
+ * Quick scan for missing dependencies by checking node_modules existence.
83
+ * Does NOT parse imports — that would be too slow for a state snapshot.
84
+ */
85
+ private findMissingDeps;
86
+ }
87
+ //# sourceMappingURL=world-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-state.d.ts","sourceRoot":"","sources":["../src/world-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC;QAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,aAAa,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACtE,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IACF,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;KAC/D,CAAC;IACF,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;KACnE,CAAC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;QAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IACF,KAAK,EAAE;QACL,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE;QACN,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+DD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,gBAAgB;IAUpC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAoB5C;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM;IAqE5C,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAiEhD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAUpD,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IASlD,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAUlD,YAAY,IAAI,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAoC5C,eAAe;IAwB7B;;;OAGG;YACW,mBAAmB;YAuDnB,gBAAgB;YA0BhB,oBAAoB;IA2BlC;;;OAGG;YACW,eAAe;CA8B9B"}
@@ -0,0 +1,435 @@
1
+ /**
2
+ * @module world-state
3
+ * @description Collects current project state (git, build, test, deps, files, errors)
4
+ * for injection into the agent's system prompt. Pure data collector — no events emitted.
5
+ */
6
+ import { execFile } from "node:child_process";
7
+ import { promisify } from "node:util";
8
+ import { access, readFile } from "node:fs/promises";
9
+ import { join } from "node:path";
10
+ const execFileAsync = promisify(execFile);
11
+ // ─── Defaults ───
12
+ const DEFAULT_MAX_RECENT_COMMITS = 10;
13
+ const DEFAULT_MAX_RECENT_FILES = 20;
14
+ const DEFAULT_TIMEOUT_MS = 10_000;
15
+ // ─── Helpers ───
16
+ /**
17
+ * Run a command with timeout via Promise.race.
18
+ * Returns stdout on success, null on any failure.
19
+ */
20
+ async function runCmd(cmd, args, cwd, timeoutMs) {
21
+ try {
22
+ const result = await Promise.race([
23
+ execFileAsync(cmd, args, {
24
+ cwd,
25
+ maxBuffer: 1024 * 1024, // 1 MB
26
+ timeout: timeoutMs,
27
+ }),
28
+ new Promise((_, reject) => setTimeout(() => reject(new Error("timeout")), timeoutMs)),
29
+ ]);
30
+ return result.stdout;
31
+ }
32
+ catch {
33
+ return null;
34
+ }
35
+ }
36
+ /**
37
+ * Check if a file exists at the given path.
38
+ */
39
+ async function fileExists(path) {
40
+ try {
41
+ await access(path);
42
+ return true;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ /**
49
+ * Safely read and parse a JSON file. Returns null on failure.
50
+ */
51
+ async function readJson(path) {
52
+ try {
53
+ const raw = await readFile(path, "utf-8");
54
+ return JSON.parse(raw);
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ }
60
+ // ─── WorldStateCollector ───
61
+ export class WorldStateCollector {
62
+ projectPath;
63
+ maxRecentCommits;
64
+ maxRecentFiles;
65
+ skipBuild;
66
+ skipTest;
67
+ skipDeps;
68
+ timeoutMs;
69
+ constructor(config) {
70
+ this.projectPath = config.projectPath;
71
+ this.maxRecentCommits = config.maxRecentCommits ?? DEFAULT_MAX_RECENT_COMMITS;
72
+ this.maxRecentFiles = config.maxRecentFiles ?? DEFAULT_MAX_RECENT_FILES;
73
+ this.skipBuild = config.skipBuild ?? false;
74
+ this.skipTest = config.skipTest ?? true;
75
+ this.skipDeps = config.skipDeps ?? false;
76
+ this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
77
+ }
78
+ /**
79
+ * Collect all project state. Never throws — failed collectors return defaults.
80
+ */
81
+ async collect() {
82
+ const [git, build, test, deps, files] = await Promise.all([
83
+ this.collectGit(),
84
+ this.skipBuild ? defaultBuild() : this.collectBuild(),
85
+ this.skipTest ? defaultTest() : this.collectTest(),
86
+ this.skipDeps ? defaultDeps() : this.collectDeps(),
87
+ this.collectFiles(),
88
+ ]);
89
+ return {
90
+ git,
91
+ build,
92
+ test,
93
+ deps,
94
+ files,
95
+ errors: { recentRuntimeErrors: [] },
96
+ collectedAt: new Date().toISOString(),
97
+ };
98
+ }
99
+ /**
100
+ * Format snapshot as compact markdown for system prompt injection.
101
+ */
102
+ formatForPrompt(state) {
103
+ const lines = ["## Project State"];
104
+ // Git
105
+ const uncommittedCount = state.git.uncommittedFiles.length;
106
+ const branchInfo = uncommittedCount > 0
107
+ ? `${state.git.branch} (${state.git.status}, ${uncommittedCount} uncommitted file${uncommittedCount !== 1 ? "s" : ""})`
108
+ : `${state.git.branch} (${state.git.status})`;
109
+ lines.push(`- **Branch:** ${branchInfo}`);
110
+ // Build
111
+ if (state.build.buildTool !== "unknown" || state.build.lastResult !== "unknown") {
112
+ const buildStr = state.build.buildTool !== "unknown"
113
+ ? `${state.build.buildTool} — last: ${state.build.lastResult}`
114
+ : `last: ${state.build.lastResult}`;
115
+ lines.push(`- **Build:** ${buildStr}`);
116
+ if (state.build.errors.length > 0) {
117
+ lines.push(` - Errors: ${state.build.errors.length} (${state.build.errors.slice(0, 3).join("; ")}${state.build.errors.length > 3 ? "…" : ""})`);
118
+ }
119
+ }
120
+ // Tests
121
+ const testSuffix = state.test.lastResult === "unknown" ? " (not run)" : "";
122
+ if (state.test.testRunner !== "unknown" || state.test.lastResult !== "unknown") {
123
+ const testStr = state.test.testRunner !== "unknown"
124
+ ? `${state.test.testRunner} — last: ${state.test.lastResult}${testSuffix}`
125
+ : `last: ${state.test.lastResult}${testSuffix}`;
126
+ lines.push(`- **Tests:** ${testStr}`);
127
+ if (state.test.failingTests.length > 0) {
128
+ lines.push(` - Failing: ${state.test.failingTests.slice(0, 5).join(", ")}${state.test.failingTests.length > 5 ? "…" : ""}`);
129
+ }
130
+ }
131
+ // Deps
132
+ if (state.deps.packageManager !== "unknown") {
133
+ let depStr = state.deps.packageManager;
134
+ if (state.deps.outdated.length > 0) {
135
+ depStr += ` — ${state.deps.outdated.length} outdated`;
136
+ }
137
+ if (state.deps.missing.length > 0) {
138
+ depStr += ` — ${state.deps.missing.length} missing`;
139
+ }
140
+ lines.push(`- **Deps:** ${depStr}`);
141
+ }
142
+ // Files
143
+ if (state.files.recentlyChanged.length > 0) {
144
+ lines.push(`- **Recent changes:** ${state.files.recentlyChanged.length} file${state.files.recentlyChanged.length !== 1 ? "s" : ""} changed in last 5 commits`);
145
+ }
146
+ // Conflicts
147
+ if (state.git.hasConflicts) {
148
+ lines.push("- **Conflicts:** YES — resolve before proceeding");
149
+ }
150
+ else {
151
+ lines.push("- **Conflicts:** none");
152
+ }
153
+ // Runtime errors
154
+ if (state.errors.recentRuntimeErrors.length > 0) {
155
+ lines.push(`- **Runtime errors:** ${state.errors.recentRuntimeErrors.length}`);
156
+ }
157
+ return lines.join("\n");
158
+ }
159
+ // ─── Individual Collectors ───
160
+ async collectGit() {
161
+ try {
162
+ // Run all git commands in parallel
163
+ const [branchOut, statusOut, logOut, conflictOut] = await Promise.all([
164
+ runCmd("git", ["rev-parse", "--abbrev-ref", "HEAD"], this.projectPath, this.timeoutMs),
165
+ runCmd("git", ["status", "--porcelain"], this.projectPath, this.timeoutMs),
166
+ runCmd("git", ["log", `--oneline`, `--format=%H|%s|%aI`, `-${this.maxRecentCommits}`], this.projectPath, this.timeoutMs),
167
+ runCmd("git", ["diff", "--name-only", "--diff-filter=U"], this.projectPath, this.timeoutMs),
168
+ ]);
169
+ // Branch
170
+ const branch = branchOut?.trim() || "unknown";
171
+ // Uncommitted files from porcelain status
172
+ const uncommittedFiles = [];
173
+ if (statusOut) {
174
+ for (const line of statusOut.split("\n")) {
175
+ const trimmed = line.trim();
176
+ if (trimmed.length > 0) {
177
+ // porcelain format: XY filename (first 3 chars are status + space)
178
+ const file = line.length > 3 ? line.substring(3).trim() : trimmed;
179
+ uncommittedFiles.push(file);
180
+ }
181
+ }
182
+ }
183
+ const status = uncommittedFiles.length > 0 ? "dirty" : "clean";
184
+ // Recent commits
185
+ const recentCommits = [];
186
+ if (logOut) {
187
+ for (const line of logOut.split("\n")) {
188
+ const trimmed = line.trim();
189
+ if (!trimmed)
190
+ continue;
191
+ const parts = trimmed.split("|");
192
+ if (parts.length >= 3) {
193
+ recentCommits.push({
194
+ hash: parts[0].substring(0, 12),
195
+ message: parts[1],
196
+ date: parts[2],
197
+ });
198
+ }
199
+ }
200
+ }
201
+ // Merge conflicts
202
+ const hasConflicts = conflictOut != null && conflictOut.trim().length > 0;
203
+ return { branch, status, uncommittedFiles, recentCommits, hasConflicts };
204
+ }
205
+ catch {
206
+ return {
207
+ branch: "unknown",
208
+ status: "clean",
209
+ uncommittedFiles: [],
210
+ recentCommits: [],
211
+ hasConflicts: false,
212
+ };
213
+ }
214
+ }
215
+ async collectBuild() {
216
+ try {
217
+ const buildTool = await this.detectBuildTool();
218
+ const { lastResult, errors } = await this.checkBuildArtifacts(buildTool);
219
+ return { lastResult, errors, buildTool };
220
+ }
221
+ catch {
222
+ return defaultBuild();
223
+ }
224
+ }
225
+ async collectTest() {
226
+ try {
227
+ const testRunner = await this.detectTestRunner();
228
+ return { lastResult: "unknown", failingTests: [], testRunner };
229
+ }
230
+ catch {
231
+ return defaultTest();
232
+ }
233
+ }
234
+ async collectDeps() {
235
+ try {
236
+ const packageManager = await this.detectPackageManager();
237
+ const missing = await this.findMissingDeps();
238
+ return { packageManager, outdated: [], missing };
239
+ }
240
+ catch {
241
+ return defaultDeps();
242
+ }
243
+ }
244
+ async collectFiles() {
245
+ try {
246
+ const [diffOut, countOut] = await Promise.all([
247
+ runCmd("git", ["diff", "--name-only", `HEAD~5..HEAD`], this.projectPath, this.timeoutMs),
248
+ runCmd("git", ["ls-files"], this.projectPath, this.timeoutMs),
249
+ ]);
250
+ const recentlyChanged = [];
251
+ if (diffOut) {
252
+ for (const line of diffOut.split("\n")) {
253
+ const trimmed = line.trim();
254
+ if (trimmed && recentlyChanged.length < this.maxRecentFiles) {
255
+ recentlyChanged.push(trimmed);
256
+ }
257
+ }
258
+ }
259
+ // Count tracked files
260
+ let totalFiles = 0;
261
+ if (countOut) {
262
+ totalFiles = countOut.split("\n").filter((l) => l.trim().length > 0).length;
263
+ }
264
+ return { recentlyChanged, totalFiles };
265
+ }
266
+ catch {
267
+ return { recentlyChanged: [], totalFiles: 0 };
268
+ }
269
+ }
270
+ // ─── Detection Helpers ───
271
+ async detectBuildTool() {
272
+ const checks = await Promise.all([
273
+ fileExists(join(this.projectPath, "tsconfig.json")),
274
+ fileExists(join(this.projectPath, "vite.config.ts")).then((r) => r ? r : fileExists(join(this.projectPath, "vite.config.js"))),
275
+ fileExists(join(this.projectPath, "webpack.config.js")).then((r) => r ? r : fileExists(join(this.projectPath, "webpack.config.ts"))),
276
+ fileExists(join(this.projectPath, "esbuild.config.js")).then((r) => r ? r : fileExists(join(this.projectPath, "esbuild.config.mjs"))),
277
+ ]);
278
+ const [hasTsConfig, hasVite, hasWebpack, hasEsbuild] = checks;
279
+ // Prefer more specific build tool over tsc
280
+ if (hasVite)
281
+ return "vite";
282
+ if (hasWebpack)
283
+ return "webpack";
284
+ if (hasEsbuild)
285
+ return "esbuild";
286
+ if (hasTsConfig)
287
+ return "tsc";
288
+ return "unknown";
289
+ }
290
+ /**
291
+ * Check common build output locations for errors without running a build.
292
+ * Looks for tsbuildinfo, .next/error, dist/.error, etc.
293
+ */
294
+ async checkBuildArtifacts(buildTool) {
295
+ const errors = [];
296
+ // Check tsconfig.tsbuildinfo for last tsc run
297
+ if (buildTool === "tsc") {
298
+ const tsBuildInfo = join(this.projectPath, "tsconfig.tsbuildinfo");
299
+ if (await fileExists(tsBuildInfo)) {
300
+ // tsbuildinfo exists means last incremental build passed
301
+ return { lastResult: "pass", errors: [] };
302
+ }
303
+ }
304
+ // Check .next directory for Next.js build errors
305
+ const nextBuildId = join(this.projectPath, ".next", "BUILD_ID");
306
+ if (await fileExists(nextBuildId)) {
307
+ return { lastResult: "pass", errors: [] };
308
+ }
309
+ // Check for dist directory as sign of successful build
310
+ const distDir = join(this.projectPath, "dist");
311
+ if (await fileExists(distDir)) {
312
+ return { lastResult: "pass", errors: [] };
313
+ }
314
+ // Try running a quick tsc --noEmit to check types (only for tsc)
315
+ if (buildTool === "tsc") {
316
+ const tscOut = await runCmd("npx", ["tsc", "--noEmit", "--pretty", "false"], this.projectPath, this.timeoutMs);
317
+ if (tscOut === null) {
318
+ // tsc failed or timed out — try to get error output
319
+ return { lastResult: "unknown", errors: [] };
320
+ }
321
+ if (tscOut.trim().length === 0) {
322
+ return { lastResult: "pass", errors: [] };
323
+ }
324
+ // Parse tsc errors (first 10)
325
+ const errLines = tscOut
326
+ .split("\n")
327
+ .filter((l) => l.includes("error TS"))
328
+ .slice(0, 10);
329
+ return {
330
+ lastResult: errLines.length > 0 ? "fail" : "pass",
331
+ errors: errLines,
332
+ };
333
+ }
334
+ return { lastResult: "unknown", errors };
335
+ }
336
+ async detectTestRunner() {
337
+ const pkgJson = await readJson(join(this.projectPath, "package.json"));
338
+ if (!pkgJson)
339
+ return "unknown";
340
+ // Check scripts.test
341
+ const scripts = pkgJson.scripts;
342
+ if (scripts?.test) {
343
+ const testScript = scripts.test.toLowerCase();
344
+ if (testScript.includes("vitest"))
345
+ return "vitest";
346
+ if (testScript.includes("jest"))
347
+ return "jest";
348
+ if (testScript.includes("mocha"))
349
+ return "mocha";
350
+ if (testScript.includes("node --test") || testScript.includes("node:test"))
351
+ return "node:test";
352
+ }
353
+ // Check devDependencies
354
+ const devDeps = (pkgJson.devDependencies ?? {});
355
+ const deps = (pkgJson.dependencies ?? {});
356
+ const allDeps = { ...deps, ...devDeps };
357
+ if ("vitest" in allDeps)
358
+ return "vitest";
359
+ if ("jest" in allDeps)
360
+ return "jest";
361
+ if ("mocha" in allDeps)
362
+ return "mocha";
363
+ return "unknown";
364
+ }
365
+ async detectPackageManager() {
366
+ // 1. Check package.json packageManager field
367
+ const pkgJson = await readJson(join(this.projectPath, "package.json"));
368
+ if (pkgJson?.packageManager) {
369
+ const pm = pkgJson.packageManager.toLowerCase();
370
+ if (pm.startsWith("pnpm"))
371
+ return "pnpm";
372
+ if (pm.startsWith("yarn"))
373
+ return "yarn";
374
+ if (pm.startsWith("npm"))
375
+ return "npm";
376
+ if (pm.startsWith("bun"))
377
+ return "bun";
378
+ }
379
+ // 2. Check lock files
380
+ const lockChecks = await Promise.all([
381
+ fileExists(join(this.projectPath, "pnpm-lock.yaml")),
382
+ fileExists(join(this.projectPath, "yarn.lock")),
383
+ fileExists(join(this.projectPath, "package-lock.json")),
384
+ fileExists(join(this.projectPath, "bun.lockb")),
385
+ ]);
386
+ if (lockChecks[0])
387
+ return "pnpm";
388
+ if (lockChecks[1])
389
+ return "yarn";
390
+ if (lockChecks[2])
391
+ return "npm";
392
+ if (lockChecks[3])
393
+ return "bun";
394
+ return "unknown";
395
+ }
396
+ /**
397
+ * Quick scan for missing dependencies by checking node_modules existence.
398
+ * Does NOT parse imports — that would be too slow for a state snapshot.
399
+ */
400
+ async findMissingDeps() {
401
+ const missing = [];
402
+ const nodeModulesPath = join(this.projectPath, "node_modules");
403
+ if (!(await fileExists(nodeModulesPath))) {
404
+ missing.push("(node_modules missing — run install)");
405
+ return missing;
406
+ }
407
+ // Check a few key deps from package.json
408
+ const pkgJson = await readJson(join(this.projectPath, "package.json"));
409
+ if (!pkgJson)
410
+ return missing;
411
+ const deps = (pkgJson.dependencies ?? {});
412
+ const depNames = Object.keys(deps).slice(0, 20); // Check first 20
413
+ const checks = await Promise.all(depNames.map(async (name) => {
414
+ const depPath = join(nodeModulesPath, name);
415
+ const exists = await fileExists(depPath);
416
+ return exists ? null : name;
417
+ }));
418
+ for (const name of checks) {
419
+ if (name)
420
+ missing.push(name);
421
+ }
422
+ return missing;
423
+ }
424
+ }
425
+ // ─── Default State Factories ───
426
+ function defaultBuild() {
427
+ return { lastResult: "unknown", errors: [], buildTool: "unknown" };
428
+ }
429
+ function defaultTest() {
430
+ return { lastResult: "unknown", failingTests: [], testRunner: "unknown" };
431
+ }
432
+ function defaultDeps() {
433
+ return { packageManager: "unknown", outdated: [], missing: [] };
434
+ }
435
+ //# sourceMappingURL=world-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world-state.js","sourceRoot":"","sources":["../src/world-state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,12 @@
1
1
  {
2
2
  "name": "@yuaone/core",
3
- "version": "0.1.3",
3
+ "version": "0.3.0",
4
4
  "description": "YUAN Agent Core Runtime",
5
5
  "license": "AGPL-3.0",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
8
8
  "types": "dist/index.d.ts",
9
- "files": [
10
- "dist/",
11
- "README.md",
12
- "LICENSE"
13
- ],
9
+ "files": ["dist/", "README.md", "LICENSE"],
14
10
  "publishConfig": {
15
11
  "access": "public"
16
12
  },
@@ -23,16 +19,17 @@
23
19
  "bugs": {
24
20
  "url": "https://github.com/yuaone/yuan/issues"
25
21
  },
26
- "keywords": [
27
- "coding-agent",
28
- "ai",
29
- "autonomous",
30
- "agent-loop",
31
- "llm"
32
- ],
22
+ "keywords": ["coding-agent", "ai", "autonomous", "agent-loop", "llm"],
33
23
  "engines": {
34
24
  "node": ">=18"
35
25
  },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "dev": "tsc --watch",
29
+ "clean": "rm -rf dist",
30
+ "lint": "tsc --noEmit",
31
+ "test": "node --test dist/__tests__/*.test.js"
32
+ },
36
33
  "dependencies": {
37
34
  "chokidar": "^5.0.0",
38
35
  "openai": "^6.27.0",
@@ -40,12 +37,5 @@
40
37
  },
41
38
  "devDependencies": {
42
39
  "typescript": "^5.7.0"
43
- },
44
- "scripts": {
45
- "build": "tsc",
46
- "dev": "tsc --watch",
47
- "clean": "rm -rf dist",
48
- "lint": "tsc --noEmit",
49
- "test": "node --test dist/__tests__/*.test.js"
50
40
  }
51
- }
41
+ }