@electric-agent/agent 1.4.3 → 1.4.6

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 (94) hide show
  1. package/dist/scaffold/index.js +3 -3
  2. package/package.json +3 -3
  3. package/dist/agents/clarifier.d.ts +0 -16
  4. package/dist/agents/clarifier.d.ts.map +0 -1
  5. package/dist/agents/clarifier.js +0 -158
  6. package/dist/agents/clarifier.js.map +0 -1
  7. package/dist/agents/coder.d.ts +0 -14
  8. package/dist/agents/coder.d.ts.map +0 -1
  9. package/dist/agents/coder.js +0 -126
  10. package/dist/agents/coder.js.map +0 -1
  11. package/dist/agents/planner.d.ts +0 -6
  12. package/dist/agents/planner.d.ts.map +0 -1
  13. package/dist/agents/planner.js +0 -69
  14. package/dist/agents/planner.js.map +0 -1
  15. package/dist/agents/prompts.d.ts +0 -9
  16. package/dist/agents/prompts.d.ts.map +0 -1
  17. package/dist/agents/prompts.js +0 -231
  18. package/dist/agents/prompts.js.map +0 -1
  19. package/dist/cli/headless.d.ts +0 -9
  20. package/dist/cli/headless.d.ts.map +0 -1
  21. package/dist/cli/headless.js +0 -506
  22. package/dist/cli/headless.js.map +0 -1
  23. package/dist/engine/message-parser.d.ts +0 -8
  24. package/dist/engine/message-parser.d.ts.map +0 -1
  25. package/dist/engine/message-parser.js +0 -106
  26. package/dist/engine/message-parser.js.map +0 -1
  27. package/dist/engine/orchestrator.d.ts +0 -50
  28. package/dist/engine/orchestrator.d.ts.map +0 -1
  29. package/dist/engine/orchestrator.js +0 -492
  30. package/dist/engine/orchestrator.js.map +0 -1
  31. package/dist/engine/stdio-adapter.d.ts +0 -24
  32. package/dist/engine/stdio-adapter.d.ts.map +0 -1
  33. package/dist/engine/stdio-adapter.js +0 -139
  34. package/dist/engine/stdio-adapter.js.map +0 -1
  35. package/dist/engine/stream-adapter.d.ts +0 -45
  36. package/dist/engine/stream-adapter.d.ts.map +0 -1
  37. package/dist/engine/stream-adapter.js +0 -154
  38. package/dist/engine/stream-adapter.js.map +0 -1
  39. package/dist/hooks/block-bash.d.ts +0 -7
  40. package/dist/hooks/block-bash.d.ts.map +0 -1
  41. package/dist/hooks/block-bash.js +0 -15
  42. package/dist/hooks/block-bash.js.map +0 -1
  43. package/dist/hooks/dependency-guard.d.ts +0 -7
  44. package/dist/hooks/dependency-guard.d.ts.map +0 -1
  45. package/dist/hooks/dependency-guard.js +0 -43
  46. package/dist/hooks/dependency-guard.js.map +0 -1
  47. package/dist/hooks/guardrail-inject.d.ts +0 -17
  48. package/dist/hooks/guardrail-inject.d.ts.map +0 -1
  49. package/dist/hooks/guardrail-inject.js +0 -69
  50. package/dist/hooks/guardrail-inject.js.map +0 -1
  51. package/dist/hooks/import-validation.d.ts +0 -7
  52. package/dist/hooks/import-validation.d.ts.map +0 -1
  53. package/dist/hooks/import-validation.js +0 -192
  54. package/dist/hooks/import-validation.js.map +0 -1
  55. package/dist/hooks/index.d.ts +0 -15
  56. package/dist/hooks/index.d.ts.map +0 -1
  57. package/dist/hooks/index.js +0 -42
  58. package/dist/hooks/index.js.map +0 -1
  59. package/dist/hooks/migration-validation.d.ts +0 -9
  60. package/dist/hooks/migration-validation.d.ts.map +0 -1
  61. package/dist/hooks/migration-validation.js +0 -62
  62. package/dist/hooks/migration-validation.js.map +0 -1
  63. package/dist/hooks/schema-consistency.d.ts +0 -12
  64. package/dist/hooks/schema-consistency.d.ts.map +0 -1
  65. package/dist/hooks/schema-consistency.js +0 -72
  66. package/dist/hooks/schema-consistency.js.map +0 -1
  67. package/dist/hooks/write-protection.d.ts +0 -7
  68. package/dist/hooks/write-protection.d.ts.map +0 -1
  69. package/dist/hooks/write-protection.js +0 -33
  70. package/dist/hooks/write-protection.js.map +0 -1
  71. package/dist/progress/reporter.d.ts +0 -15
  72. package/dist/progress/reporter.d.ts.map +0 -1
  73. package/dist/progress/reporter.js +0 -133
  74. package/dist/progress/reporter.js.map +0 -1
  75. package/dist/tools/build.d.ts +0 -3
  76. package/dist/tools/build.d.ts.map +0 -1
  77. package/dist/tools/build.js +0 -84
  78. package/dist/tools/build.js.map +0 -1
  79. package/dist/tools/playbook.d.ts +0 -14
  80. package/dist/tools/playbook.d.ts.map +0 -1
  81. package/dist/tools/playbook.js +0 -239
  82. package/dist/tools/playbook.js.map +0 -1
  83. package/dist/tools/server.d.ts +0 -3
  84. package/dist/tools/server.d.ts.map +0 -1
  85. package/dist/tools/server.js +0 -13
  86. package/dist/tools/server.js.map +0 -1
  87. package/dist/working-memory/errors.d.ts +0 -14
  88. package/dist/working-memory/errors.d.ts.map +0 -1
  89. package/dist/working-memory/errors.js +0 -89
  90. package/dist/working-memory/errors.js.map +0 -1
  91. package/dist/working-memory/session.d.ts +0 -12
  92. package/dist/working-memory/session.d.ts.map +0 -1
  93. package/dist/working-memory/session.js +0 -71
  94. package/dist/working-memory/session.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/progress/reporter.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ProgressReporter } from "../progress/reporter.js";
2
- export declare function createBuildTool(projectDir: string, reporter?: ProgressReporter): import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{}>;
3
- //# sourceMappingURL=build.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE/D,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,qEAsF9E"}
@@ -1,84 +0,0 @@
1
- import { execSync } from "node:child_process";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
- import { tool } from "@anthropic-ai/claude-agent-sdk";
5
- export function createBuildTool(projectDir, reporter) {
6
- return tool("build", "Run pnpm build and pnpm check (Biome lint) in the project. Returns build output including any TypeScript or lint errors.", {}, async () => {
7
- let buildOutput = "";
8
- let checkOutput = "";
9
- let success = true;
10
- const errors = [];
11
- try {
12
- buildOutput = execSync("pnpm run build 2>&1", {
13
- encoding: "utf-8",
14
- timeout: 120_000,
15
- cwd: projectDir,
16
- });
17
- }
18
- catch (e) {
19
- success = false;
20
- buildOutput =
21
- e?.stdout || (e instanceof Error ? e.message : "Build failed");
22
- errors.push("build");
23
- }
24
- try {
25
- checkOutput = execSync("pnpm run check 2>&1", {
26
- encoding: "utf-8",
27
- timeout: 60_000,
28
- cwd: projectDir,
29
- });
30
- }
31
- catch (e) {
32
- success = false;
33
- checkOutput =
34
- e?.stdout || (e instanceof Error ? e.message : "Check failed");
35
- errors.push("check");
36
- }
37
- // Run smoke tests if tests/ directory exists
38
- let testOutput = "";
39
- const testsDir = path.join(projectDir, "tests");
40
- if (fs.existsSync(testsDir)) {
41
- try {
42
- testOutput = execSync("pnpm test 2>&1", {
43
- encoding: "utf-8",
44
- timeout: 120_000,
45
- cwd: projectDir,
46
- });
47
- }
48
- catch (e) {
49
- success = false;
50
- testOutput =
51
- e?.stdout ||
52
- (e instanceof Error ? e.message : "Tests failed");
53
- errors.push("test");
54
- }
55
- }
56
- const outputParts = [
57
- "=== pnpm run build ===",
58
- buildOutput.trim(),
59
- "",
60
- "=== pnpm run check ===",
61
- checkOutput.trim(),
62
- ];
63
- if (testOutput) {
64
- outputParts.push("", "=== pnpm test ===", testOutput.trim());
65
- }
66
- const output = outputParts.join("\n");
67
- if (reporter?.verboseMode) {
68
- reporter.log("verbose", `[build output]\n${output}`);
69
- }
70
- return {
71
- content: [
72
- {
73
- type: "text",
74
- text: JSON.stringify({
75
- success,
76
- output: output.slice(0, 10_000),
77
- errors: errors.join(", ") || "none",
78
- }),
79
- },
80
- ],
81
- };
82
- });
83
- }
84
- //# sourceMappingURL=build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Validate that all required playbook skills are installed in the project.
4
- * Throws if any are missing so generation fails fast.
5
- */
6
- export declare function validatePlaybooks(projectDir: string): void;
7
- export declare function createPlaybookTools(projectDir: string): {
8
- readPlaybookTool: import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
9
- name: z.ZodString;
10
- include_references: z.ZodOptional<z.ZodBoolean>;
11
- }>;
12
- listPlaybooksTool: import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{}>;
13
- };
14
- //# sourceMappingURL=playbook.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playbook.d.ts","sourceRoot":"","sources":["../../src/tools/playbook.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAwGvB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA2B1D;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM;;;;;;EAsJrD"}
@@ -1,239 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { tool } from "@anthropic-ai/claude-agent-sdk";
5
- import { z } from "zod";
6
- /**
7
- * Parse YAML frontmatter from a SKILL.md file.
8
- * Extracts name, description, and triggers without a YAML library.
9
- */
10
- function parseFrontmatter(content) {
11
- const match = content.match(/^---\n([\s\S]*?)\n---/);
12
- if (!match)
13
- return {};
14
- const yaml = match[1];
15
- const result = {};
16
- // Extract description (handles both single-line and multi-line block scalar)
17
- const descMatch = yaml.match(/description:\s*\|?\s*\n([\s\S]*?)(?=\n\w|\n---|\ntriggers:|\nmetadata:)/s);
18
- if (descMatch) {
19
- result.description = descMatch[1]
20
- .split("\n")
21
- .map((line) => line.trim())
22
- .filter(Boolean)
23
- .join(" ");
24
- }
25
- else {
26
- const inlineDesc = yaml.match(/description:\s*(.+)/);
27
- if (inlineDesc) {
28
- result.description = inlineDesc[1].trim();
29
- }
30
- }
31
- // Extract triggers (YAML list)
32
- const triggersMatch = yaml.match(/triggers:\s*\n((?:\s+-\s+.+\n?)*)/);
33
- if (triggersMatch) {
34
- result.triggers = triggersMatch[1]
35
- .split("\n")
36
- .map((line) => line.replace(/^\s*-\s*/, "").trim())
37
- .filter(Boolean);
38
- }
39
- return result;
40
- }
41
- const PLAYBOOK_PACKAGES = [
42
- { pkg: "@electric-sql/playbook", prefix: "electric" },
43
- { pkg: "@tanstack/db-playbook", prefix: "tanstack-db" },
44
- { pkg: "@durable-streams/playbook", prefix: "durable-streams" },
45
- ];
46
- /**
47
- * Resolve the bundled playbook directory that ships with electric-agent.
48
- * Contains project-specific patterns not covered by external playbook packages.
49
- */
50
- function getBundledPlaybookDir() {
51
- // Try compiled path first, then source path
52
- const compiled = path.resolve(__dirname, "../../playbooks");
53
- if (fs.existsSync(compiled))
54
- return compiled;
55
- const source = path.resolve(__dirname, "../playbooks");
56
- if (fs.existsSync(source))
57
- return source;
58
- return compiled; // fallback
59
- }
60
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
61
- /**
62
- * Find a skill directory by name. Supports:
63
- * - Direct match: skills/<name>/SKILL.md
64
- * - Nested match: skills/<parent>/<name>/SKILL.md (e.g., tanstack-db/collections)
65
- * - Bundled skills: playbooks/<name>/SKILL.md (shipped with electric-agent)
66
- */
67
- function findPlaybookSkillDir(skillName, projectDir) {
68
- for (const { pkg } of PLAYBOOK_PACKAGES) {
69
- const skillsDir = path.join(projectDir, "node_modules", pkg, "skills");
70
- if (!fs.existsSync(skillsDir))
71
- continue;
72
- // Direct match
73
- const direct = path.join(skillsDir, skillName);
74
- if (fs.existsSync(path.join(direct, "SKILL.md")))
75
- return direct;
76
- // Nested one level: skills/<parent>/<name>
77
- for (const entry of fs.readdirSync(skillsDir, { withFileTypes: true })) {
78
- if (entry.isDirectory()) {
79
- const nested = path.join(skillsDir, entry.name, skillName);
80
- if (fs.existsSync(path.join(nested, "SKILL.md")))
81
- return nested;
82
- }
83
- }
84
- }
85
- // Check bundled playbooks
86
- const bundledDir = getBundledPlaybookDir();
87
- const bundled = path.join(bundledDir, skillName);
88
- if (fs.existsSync(path.join(bundled, "SKILL.md")))
89
- return bundled;
90
- return null;
91
- }
92
- /**
93
- * Required playbook skills that must be present for code generation to work.
94
- * Each entry is a skill name that must be findable via findPlaybookSkillDir.
95
- */
96
- const REQUIRED_SKILLS = ["live-queries", "collections", "mutations", "schemas"];
97
- /**
98
- * Validate that all required playbook skills are installed in the project.
99
- * Throws if any are missing so generation fails fast.
100
- */
101
- export function validatePlaybooks(projectDir) {
102
- const missing = [];
103
- for (const skill of REQUIRED_SKILLS) {
104
- if (!findPlaybookSkillDir(skill, projectDir)) {
105
- missing.push(skill);
106
- }
107
- }
108
- if (missing.length > 0) {
109
- const installed = PLAYBOOK_PACKAGES.filter(({ pkg }) => fs.existsSync(path.join(projectDir, "node_modules", pkg, "skills"))).map(({ pkg }) => pkg);
110
- const notInstalled = PLAYBOOK_PACKAGES.filter(({ pkg }) => !fs.existsSync(path.join(projectDir, "node_modules", pkg, "skills"))).map(({ pkg }) => pkg);
111
- const lines = [
112
- `Required playbook skills missing: ${missing.join(", ")}`,
113
- installed.length > 0 ? `Installed playbook packages: ${installed.join(", ")}` : "",
114
- notInstalled.length > 0 ? `Missing playbook packages: ${notInstalled.join(", ")}` : "",
115
- "Run 'pnpm install' in the project directory to install playbook packages.",
116
- ].filter(Boolean);
117
- throw new Error(lines.join("\n"));
118
- }
119
- }
120
- export function createPlaybookTools(projectDir) {
121
- const readPlaybookTool = tool("read_playbook", "Read a playbook skill file (SKILL.md) and optionally its reference files. Use list_playbooks first to see available skill names.", {
122
- name: z
123
- .string()
124
- .describe("Name of the playbook skill to read (e.g., 'collections', 'mutations', 'electric-quickstart')"),
125
- include_references: z
126
- .boolean()
127
- .optional()
128
- .describe("Whether to include reference files from the references/ subdirectory"),
129
- }, async (args) => {
130
- const skillDir = findPlaybookSkillDir(args.name, projectDir);
131
- if (!skillDir) {
132
- return {
133
- content: [
134
- {
135
- type: "text",
136
- text: `Playbook skill "${args.name}" not found. Use list_playbooks to see available skills.`,
137
- },
138
- ],
139
- };
140
- }
141
- const parts = [];
142
- // Read SKILL.md
143
- const skillFile = path.join(skillDir, "SKILL.md");
144
- if (fs.existsSync(skillFile)) {
145
- parts.push(`# ${args.name}\n\n${fs.readFileSync(skillFile, "utf-8")}`);
146
- }
147
- // Read references if requested
148
- if (args.include_references) {
149
- const refsDir = path.join(skillDir, "references");
150
- if (fs.existsSync(refsDir)) {
151
- for (const entry of fs.readdirSync(refsDir, { withFileTypes: true })) {
152
- if (entry.isFile() && entry.name.endsWith(".md")) {
153
- const refContent = fs.readFileSync(path.join(refsDir, entry.name), "utf-8");
154
- parts.push(`\n## Reference: ${entry.name}\n\n${refContent}`);
155
- }
156
- }
157
- }
158
- }
159
- return {
160
- content: [
161
- {
162
- type: "text",
163
- text: parts.join("\n\n---\n\n") || `No content found for skill "${args.name}"`,
164
- },
165
- ],
166
- };
167
- });
168
- const listPlaybooksTool = tool("list_playbooks", "List all available playbook skills with descriptions and triggers. Router skills (no parent) contain routing tables — read them first to discover which sub-skill you need.", {}, async () => {
169
- const skills = [];
170
- for (const { pkg } of PLAYBOOK_PACKAGES) {
171
- const skillsDir = path.join(projectDir, "node_modules", pkg, "skills");
172
- if (!fs.existsSync(skillsDir))
173
- continue;
174
- const scanDir = (dir, parent) => {
175
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
176
- if (entry.isDirectory()) {
177
- const entryDir = path.join(dir, entry.name);
178
- const skillFile = path.join(entryDir, "SKILL.md");
179
- if (fs.existsSync(skillFile)) {
180
- const refsDir = path.join(entryDir, "references");
181
- const frontmatter = parseFrontmatter(fs.readFileSync(skillFile, "utf-8"));
182
- skills.push({
183
- name: entry.name,
184
- pkg,
185
- parent,
186
- hasReferences: fs.existsSync(refsDir),
187
- description: frontmatter.description,
188
- triggers: frontmatter.triggers,
189
- });
190
- }
191
- // Always recurse to find nested skills
192
- scanDir(entryDir, entry.name);
193
- }
194
- }
195
- };
196
- scanDir(skillsDir);
197
- }
198
- // Scan bundled playbooks (shipped with electric-agent)
199
- const bundledDir = getBundledPlaybookDir();
200
- if (fs.existsSync(bundledDir)) {
201
- for (const entry of fs.readdirSync(bundledDir, { withFileTypes: true })) {
202
- if (entry.isDirectory()) {
203
- const entryDir = path.join(bundledDir, entry.name);
204
- const skillFile = path.join(entryDir, "SKILL.md");
205
- if (fs.existsSync(skillFile)) {
206
- const refsDir = path.join(entryDir, "references");
207
- const frontmatter = parseFrontmatter(fs.readFileSync(skillFile, "utf-8"));
208
- skills.push({
209
- name: entry.name,
210
- pkg: "electric-agent (built-in)",
211
- hasReferences: fs.existsSync(refsDir),
212
- description: frontmatter.description,
213
- triggers: frontmatter.triggers,
214
- });
215
- }
216
- }
217
- }
218
- }
219
- const output = skills
220
- .map((s) => {
221
- const indent = s.parent ? " " : "";
222
- const refs = s.hasReferences ? " [has references]" : "";
223
- const desc = s.description ? ` — ${s.description}` : "";
224
- const triggers = s.triggers && s.triggers.length > 0 ? ` (triggers: ${s.triggers.join(", ")})` : "";
225
- return `${indent}- ${s.name}${desc}${triggers}${refs}`;
226
- })
227
- .join("\n");
228
- return {
229
- content: [
230
- {
231
- type: "text",
232
- text: output || "No playbook skills found. Ensure playbook packages are installed.",
233
- },
234
- ],
235
- };
236
- });
237
- return { readPlaybookTool, listPlaybooksTool };
238
- }
239
- //# sourceMappingURL=playbook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"playbook.js","sourceRoot":"","sources":["../../src/tools/playbook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAA;AACrD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe;IAIxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;IACpD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IAErB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACrB,MAAM,MAAM,GAAkD,EAAE,CAAA;IAEhE,6EAA6E;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC3B,0EAA0E,CAC1E,CAAA;IACD,IAAI,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC;aAC/B,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;SAAM,CAAC;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;QACpD,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1C,CAAC;IACF,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACrE,IAAI,aAAa,EAAE,CAAC;QACnB,MAAM,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;aAChC,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aAClD,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC;AAED,MAAM,iBAAiB,GAAG;IACzB,EAAE,GAAG,EAAE,wBAAwB,EAAE,MAAM,EAAE,UAAU,EAAE;IACrD,EAAE,GAAG,EAAE,uBAAuB,EAAE,MAAM,EAAE,aAAa,EAAE;IACvD,EAAE,GAAG,EAAE,2BAA2B,EAAE,MAAM,EAAE,iBAAiB,EAAE;CAC/D,CAAA;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAC7B,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IACxC,OAAO,QAAQ,CAAA,CAAC,WAAW;AAC5B,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;AAE9D;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;IAClE,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAQ;QAEvC,eAAe;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAAE,OAAO,MAAM,CAAA;QAE/D,2CAA2C;QAC3C,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACxE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;gBAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;oBAAE,OAAO,MAAM,CAAA;YAChE,CAAC;QACF,CAAC;IACF,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAAE,OAAO,OAAO,CAAA;IAEjE,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAE/E;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAkB;IACnD,MAAM,OAAO,GAAa,EAAE,CAAA;IAE5B,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;IACF,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CACtD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CACnE,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAEvB,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAC5C,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CACjF,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QAEvB,MAAM,KAAK,GAAG;YACb,qCAAqC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzD,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YAClF,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACtF,2EAA2E;SAC3E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAEjB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACrD,MAAM,gBAAgB,GAAG,IAAI,CAC5B,eAAe,EACf,kIAAkI,EAClI;QACC,IAAI,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,CACR,8FAA8F,CAC9F;QACF,kBAAkB,EAAE,CAAC;aACnB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,sEAAsE,CAAC;KAClF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACd,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QAE5D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO;gBACN,OAAO,EAAE;oBACR;wBACC,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,mBAAmB,IAAI,CAAC,IAAI,0DAA0D;qBAC5F;iBACD;aACD,CAAA;QACF,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAA;QAE1B,gBAAgB;QAChB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QACvE,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;YACjD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBACtE,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClD,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAA;wBAC3E,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,OAAO,UAAU,EAAE,CAAC,CAAA;oBAC7D,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO;YACN,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,+BAA+B,IAAI,CAAC,IAAI,GAAG;iBAC9E;aACD;SACD,CAAA;IACF,CAAC,CACD,CAAA;IAED,MAAM,iBAAiB,GAAG,IAAI,CAC7B,gBAAgB,EAChB,6KAA6K,EAC7K,EAAE,EACF,KAAK,IAAI,EAAE;QACV,MAAM,MAAM,GAOP,EAAE,CAAA;QAEP,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;YACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,SAAQ;YAEvC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,MAAe,EAAE,EAAE;gBAChD,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;oBAClE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;wBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;wBACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;4BACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;4BACzE,MAAM,CAAC,IAAI,CAAC;gCACX,IAAI,EAAE,KAAK,CAAC,IAAI;gCAChB,GAAG;gCACH,MAAM;gCACN,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;gCACrC,WAAW,EAAE,WAAW,CAAC,WAAW;gCACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ;6BAC9B,CAAC,CAAA;wBACH,CAAC;wBACD,uCAAuC;wBACvC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;oBAC9B,CAAC;gBACF,CAAC;YACF,CAAC,CAAA;YAED,OAAO,CAAC,SAAS,CAAC,CAAA;QACnB,CAAC;QAED,uDAAuD;QACvD,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBACzE,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;oBAClD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;oBACjD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;wBACjD,MAAM,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;wBACzE,MAAM,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,GAAG,EAAE,2BAA2B;4BAChC,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;4BACrC,WAAW,EAAE,WAAW,CAAC,WAAW;4BACpC,QAAQ,EAAE,WAAW,CAAC,QAAQ;yBAC9B,CAAC,CAAA;oBACH,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM;aACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACV,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAA;YACvD,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YACvD,MAAM,QAAQ,GACb,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;YACnF,OAAO,GAAG,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAA;QACvD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QAEZ,OAAO;YACN,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,MAAM,IAAI,mEAAmE;iBACnF;aACD;SACD,CAAA;IACF,CAAC,CACD,CAAA;IAED,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAA;AAC/C,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ProgressReporter } from "../progress/reporter.js";
2
- export declare function createToolServer(projectDir: string, reporter?: ProgressReporter): import("@anthropic-ai/claude-agent-sdk").McpSdkServerConfigWithInstance;
3
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/tools/server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI/D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,2EAS/E"}
@@ -1,13 +0,0 @@
1
- import { createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
2
- import { createBuildTool } from "./build.js";
3
- import { createPlaybookTools } from "./playbook.js";
4
- export function createToolServer(projectDir, reporter) {
5
- const buildTool = createBuildTool(projectDir, reporter);
6
- const { readPlaybookTool, listPlaybooksTool } = createPlaybookTools(projectDir);
7
- return createSdkMcpServer({
8
- name: "electric-agent-tools",
9
- version: "1.0.0",
10
- tools: [buildTool, readPlaybookTool, listPlaybooksTool],
11
- });
12
- }
13
- //# sourceMappingURL=server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/tools/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEnD,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,QAA2B;IAC/E,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACvD,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAE/E,OAAO,kBAAkB,CAAC;QACzB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,CAAC;KACvD,CAAC,CAAA;AACH,CAAC"}
@@ -1,14 +0,0 @@
1
- export interface ErrorEntry {
2
- timestamp: string;
3
- errorClass: string;
4
- file: string;
5
- message: string;
6
- attemptedFix: string;
7
- outcome?: string;
8
- }
9
- export declare function readErrors(projectDir: string): ErrorEntry[];
10
- export declare function logError(projectDir: string, entry: Omit<ErrorEntry, "timestamp">): void;
11
- export declare function logOutcome(projectDir: string, entryIndex: number, outcome: string): void;
12
- export declare function hasFailedAttempt(projectDir: string, errorClass: string, file: string, message: string): boolean;
13
- export declare function consecutiveIdenticalFailures(projectDir: string): boolean;
14
- //# sourceMappingURL=errors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/working-memory/errors.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAQD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,EAAE,CA+B3D;AAED,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAgBvF;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmBxF;AAED,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACb,OAAO,CAST;AAED,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAcxE"}
@@ -1,89 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- const ERRORS_FILE = "_agent/errors.md";
4
- function errorsPath(projectDir) {
5
- return path.join(projectDir, ERRORS_FILE);
6
- }
7
- export function readErrors(projectDir) {
8
- const filePath = errorsPath(projectDir);
9
- if (!fs.existsSync(filePath))
10
- return [];
11
- const content = fs.readFileSync(filePath, "utf-8");
12
- const entries = [];
13
- const blocks = content.split("\n## Error ");
14
- for (const block of blocks.slice(1)) {
15
- const lines = block.trim().split("\n");
16
- const entry = {};
17
- for (const line of lines) {
18
- if (line.startsWith("- **Timestamp:**"))
19
- entry.timestamp = line.replace("- **Timestamp:**", "").trim();
20
- if (line.startsWith("- **Class:**"))
21
- entry.errorClass = line.replace("- **Class:**", "").trim();
22
- if (line.startsWith("- **File:**"))
23
- entry.file = line.replace("- **File:**", "").trim();
24
- if (line.startsWith("- **Message:**"))
25
- entry.message = line.replace("- **Message:**", "").trim();
26
- if (line.startsWith("- **Fix:**"))
27
- entry.attemptedFix = line.replace("- **Fix:**", "").trim();
28
- if (line.startsWith("- **Outcome:**"))
29
- entry.outcome = line.replace("- **Outcome:**", "").trim();
30
- }
31
- if (entry.errorClass && entry.message) {
32
- entries.push(entry);
33
- }
34
- }
35
- return entries;
36
- }
37
- export function logError(projectDir, entry) {
38
- const filePath = errorsPath(projectDir);
39
- const errors = readErrors(projectDir);
40
- const index = errors.length + 1;
41
- const timestamp = new Date().toISOString();
42
- const block = `
43
- ## Error ${index}
44
- - **Timestamp:** ${timestamp}
45
- - **Class:** ${entry.errorClass}
46
- - **File:** ${entry.file}
47
- - **Message:** ${entry.message}
48
- - **Fix:** ${entry.attemptedFix}
49
- `;
50
- fs.appendFileSync(filePath, block, "utf-8");
51
- }
52
- export function logOutcome(projectDir, entryIndex, outcome) {
53
- const filePath = errorsPath(projectDir);
54
- if (!fs.existsSync(filePath))
55
- return;
56
- let content = fs.readFileSync(filePath, "utf-8");
57
- const marker = `## Error ${entryIndex}`;
58
- const idx = content.indexOf(marker);
59
- if (idx === -1)
60
- return;
61
- // Find the next error block or end of file
62
- const nextIdx = content.indexOf("\n## Error ", idx + marker.length);
63
- const insertPos = nextIdx === -1 ? content.length : nextIdx;
64
- content =
65
- content.slice(0, insertPos).trimEnd() +
66
- `\n- **Outcome:** ${outcome}\n` +
67
- content.slice(insertPos);
68
- fs.writeFileSync(filePath, content, "utf-8");
69
- }
70
- export function hasFailedAttempt(projectDir, errorClass, file, message) {
71
- const errors = readErrors(projectDir);
72
- return errors.some((e) => e.errorClass === errorClass &&
73
- e.file === file &&
74
- e.message === message &&
75
- e.outcome !== "resolved");
76
- }
77
- export function consecutiveIdenticalFailures(projectDir) {
78
- const errors = readErrors(projectDir);
79
- if (errors.length < 2)
80
- return false;
81
- const last = errors[errors.length - 1];
82
- const prev = errors[errors.length - 2];
83
- return (last.errorClass === prev.errorClass &&
84
- last.file === prev.file &&
85
- last.message === prev.message &&
86
- last.outcome !== "resolved" &&
87
- prev.outcome !== "resolved");
88
- }
89
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/working-memory/errors.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export interface SessionState {
2
- appName: string;
3
- currentPhase: string;
4
- currentTask: string;
5
- buildStatus: string;
6
- totalBuilds: number;
7
- totalErrors: number;
8
- escalations: number;
9
- }
10
- export declare function readSession(projectDir: string): Promise<SessionState>;
11
- export declare function updateSession(projectDir: string, data: Partial<SessionState>): Promise<void>;
12
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/working-memory/session.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACnB;AAkBD,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAwC3E;AAED,wBAAsB,aAAa,CAClC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GACzB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -1,71 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- const SESSION_FILE = "_agent/session.md";
4
- const DEFAULTS = {
5
- appName: "unknown",
6
- currentPhase: "init",
7
- currentTask: "none",
8
- buildStatus: "pending",
9
- totalBuilds: 0,
10
- totalErrors: 0,
11
- escalations: 0,
12
- };
13
- function sessionPath(projectDir) {
14
- return path.join(projectDir, SESSION_FILE);
15
- }
16
- export async function readSession(projectDir) {
17
- const filePath = sessionPath(projectDir);
18
- if (!fs.existsSync(filePath))
19
- return { ...DEFAULTS };
20
- const content = fs.readFileSync(filePath, "utf-8");
21
- const state = { ...DEFAULTS };
22
- for (const line of content.split("\n")) {
23
- const match = line.match(/^- \*\*(.+?):\*\*\s*(.+)$/);
24
- if (match) {
25
- const key = match[1];
26
- const value = match[2].trim();
27
- switch (key) {
28
- case "App Name":
29
- state.appName = value;
30
- break;
31
- case "Current Phase":
32
- state.currentPhase = value;
33
- break;
34
- case "Current Task":
35
- state.currentTask = value;
36
- break;
37
- case "Build Status":
38
- state.buildStatus = value;
39
- break;
40
- case "Total Builds":
41
- state.totalBuilds = parseInt(value, 10) || 0;
42
- break;
43
- case "Total Errors":
44
- state.totalErrors = parseInt(value, 10) || 0;
45
- break;
46
- case "Escalations":
47
- state.escalations = parseInt(value, 10) || 0;
48
- break;
49
- }
50
- }
51
- }
52
- return state;
53
- }
54
- export async function updateSession(projectDir, data) {
55
- const current = await readSession(projectDir);
56
- const updated = { ...current, ...data };
57
- const content = `# Session State
58
-
59
- - **App Name:** ${updated.appName}
60
- - **Current Phase:** ${updated.currentPhase}
61
- - **Current Task:** ${updated.currentTask}
62
- - **Build Status:** ${updated.buildStatus}
63
- - **Total Builds:** ${updated.totalBuilds}
64
- - **Total Errors:** ${updated.totalErrors}
65
- - **Escalations:** ${updated.escalations}
66
- `;
67
- const filePath = sessionPath(projectDir);
68
- fs.mkdirSync(path.dirname(filePath), { recursive: true });
69
- fs.writeFileSync(filePath, content, "utf-8");
70
- }
71
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/working-memory/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAY5B,MAAM,YAAY,GAAG,mBAAmB,CAAA;AAExC,MAAM,QAAQ,GAAiB;IAC9B,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACd,CAAA;AAED,SAAS,WAAW,CAAC,UAAkB;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB;IACnD,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAA;IAEpD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAClD,MAAM,KAAK,GAAG,EAAE,GAAG,QAAQ,EAAkB,CAAA;IAE7C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;QACrD,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAE7B,QAAQ,GAAG,EAAE,CAAC;gBACb,KAAK,UAAU;oBACd,KAAK,CAAC,OAAO,GAAG,KAAK,CAAA;oBACrB,MAAK;gBACN,KAAK,eAAe;oBACnB,KAAK,CAAC,YAAY,GAAG,KAAK,CAAA;oBAC1B,MAAK;gBACN,KAAK,cAAc;oBAClB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAA;oBACzB,MAAK;gBACN,KAAK,cAAc;oBAClB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAA;oBACzB,MAAK;gBACN,KAAK,cAAc;oBAClB,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;oBAC5C,MAAK;gBACN,KAAK,cAAc;oBAClB,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;oBAC5C,MAAK;gBACN,KAAK,aAAa;oBACjB,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;oBAC5C,MAAK;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,KAAqB,CAAA;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,UAAkB,EAClB,IAA2B;IAE3B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,EAAE,CAAA;IAEvC,MAAM,OAAO,GAAG;;kBAEC,OAAO,CAAC,OAAO;uBACV,OAAO,CAAC,YAAY;sBACrB,OAAO,CAAC,WAAW;sBACnB,OAAO,CAAC,WAAW;sBACnB,OAAO,CAAC,WAAW;sBACnB,OAAO,CAAC,WAAW;qBACpB,OAAO,CAAC,WAAW;CACvC,CAAA;IAEA,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IACxC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAC7C,CAAC"}