agentic-flow 1.5.2 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.5.4] - 2025-10-11
9
+
10
+ ### Fixed
11
+ - **Critical:** Added prompts directory to npm package build
12
+ - Updated build script to copy `src/reasoningbank/prompts/` to `dist/reasoningbank/prompts/`
13
+ - Resolves "ENOENT" errors when loading prompt JSON files from installed package
14
+ - All ReasoningBank features now work correctly when installed via npm/npx
15
+
16
+ ### Technical Details
17
+ - Build script now includes: `tsc -p config/tsconfig.json && cp -r src/reasoningbank/prompts dist/reasoningbank/`
18
+ - Ensures judge.json, distill-success.json, distill-failure.json, and matts-aggregate.json are included in package
19
+
20
+ ## [1.5.3] - 2025-10-11
21
+
22
+ ### Fixed
23
+ - **Critical:** Fixed path resolution for prompt template loading when running via npx
24
+ - Updated judge.ts, distill.ts, and matts.ts to use `__dirname` instead of `process.cwd()`
25
+ - Resolves "ENOENT: no such file or directory" errors when loading prompt JSON files
26
+ - Demo and all ReasoningBank CLI commands now work correctly when installed globally
27
+ - Files load correctly from npm package structure
28
+
29
+ ### Technical Details
30
+ - Added proper ES module path resolution: `fileURLToPath(import.meta.url)` and `dirname()`
31
+ - Changed prompt paths from `join(process.cwd(), 'src', 'reasoningbank', 'prompts', ...)`
32
+ to `join(__dirname, '../prompts', ...)`
33
+ - Ensures prompts load from installed npm package location, not current working directory
34
+
8
35
  ## [1.5.2] - 2025-10-11
9
36
 
10
37
  ### Fixed
@@ -3,12 +3,15 @@
3
3
  * Algorithm 3 from ReasoningBank paper
4
4
  */
5
5
  import { readFileSync } from 'fs';
6
- import { join } from 'path';
6
+ import { join, dirname } from 'path';
7
+ import { fileURLToPath } from 'url';
7
8
  import { ulid } from 'ulid';
8
9
  import { loadConfig } from '../utils/config.js';
9
10
  import { scrubMemory } from '../utils/pii-scrubber.js';
10
11
  import { computeEmbedding } from '../utils/embeddings.js';
11
12
  import * as db from '../db/queries.js';
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
12
15
  /**
13
16
  * Distill memories from a trajectory
14
17
  */
@@ -18,7 +21,7 @@ export async function distillMemories(trajectory, verdict, query, options = {})
18
21
  console.log(`[INFO] Distilling memories from ${verdict.label} trajectory`);
19
22
  // Select appropriate prompt template
20
23
  const templateName = verdict.label === 'Success' ? 'distill-success.json' : 'distill-failure.json';
21
- const promptPath = join(process.cwd(), 'src', 'reasoningbank', 'prompts', templateName);
24
+ const promptPath = join(__dirname, '../prompts', templateName);
22
25
  const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));
23
26
  const maxItems = verdict.label === 'Success'
24
27
  ? config.distill.max_items_success
@@ -3,8 +3,11 @@
3
3
  * Algorithm 2 from ReasoningBank paper
4
4
  */
5
5
  import { readFileSync } from 'fs';
6
- import { join } from 'path';
6
+ import { join, dirname } from 'path';
7
+ import { fileURLToPath } from 'url';
7
8
  import { loadConfig } from '../utils/config.js';
9
+ const __filename = fileURLToPath(import.meta.url);
10
+ const __dirname = dirname(__filename);
8
11
  /**
9
12
  * Judge a task trajectory using LLM evaluation
10
13
  */
@@ -12,8 +15,8 @@ export async function judgeTrajectory(trajectory, query, options = {}) {
12
15
  const config = loadConfig();
13
16
  const startTime = Date.now();
14
17
  console.log(`[INFO] Judging trajectory for query: ${query.substring(0, 100)}...`);
15
- // Load judge prompt template
16
- const promptPath = join(process.cwd(), 'src', 'reasoningbank', 'prompts', 'judge.json');
18
+ // Load judge prompt template (relative to this file)
19
+ const promptPath = join(__dirname, '../prompts/judge.json');
17
20
  const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));
18
21
  // Format trajectory for judgment
19
22
  const trajectoryText = formatTrajectory(trajectory);
@@ -7,13 +7,16 @@
7
7
  * - Sequential: r iterative refinements with check-and-correct
8
8
  */
9
9
  import { readFileSync } from 'fs';
10
- import { join } from 'path';
10
+ import { join, dirname } from 'path';
11
+ import { fileURLToPath } from 'url';
11
12
  import { ulid } from 'ulid';
12
13
  import { loadConfig } from '../utils/config.js';
13
14
  import { retrieveMemories } from './retrieve.js';
14
15
  import { judgeTrajectory } from './judge.js';
15
16
  import { distillMemories } from './distill.js';
16
17
  import * as db from '../db/queries.js';
18
+ const __filename = fileURLToPath(import.meta.url);
19
+ const __dirname = dirname(__filename);
17
20
  /**
18
21
  * Run MaTTS in parallel mode
19
22
  * Execute k independent rollouts and aggregate via self-contrast
@@ -164,7 +167,7 @@ export async function mattsSequential(taskFn, query, options = {}) {
164
167
  async function aggregateMemories(trajectories, query, options) {
165
168
  console.log('[INFO] Aggregating memories via self-contrast');
166
169
  // Load aggregation prompt
167
- const promptPath = join(process.cwd(), 'src', 'reasoningbank', 'prompts', 'matts-aggregate.json');
170
+ const promptPath = join(__dirname, '../prompts', 'matts-aggregate.json');
168
171
  const promptTemplate = JSON.parse(readFileSync(promptPath, 'utf-8'));
169
172
  // Format trajectories for comparison
170
173
  const trajectoryTexts = trajectories.map((t, i) => ({
@@ -0,0 +1,111 @@
1
+ {
2
+ "name": "reasoning_bank_distill_failure",
3
+ "version": "1.0.0",
4
+ "description": "Extract failure guardrails and preventative patterns from failed trajectories. Creates counterfactual memories.",
5
+ "model": "claude-sonnet-4-5-20250929",
6
+ "temperature": 0.3,
7
+ "max_tokens": 2048,
8
+ "system": "You are a failure analysis specialist. Your role is to analyze failed task trajectories and extract guardrails, pitfalls, and recovery strategies. Focus on preventable errors and how to detect/avoid them.",
9
+ "template": "Given a task and its failed trajectory, extract up to {{max_items}} failure guardrail principles.\n\nTask: {{task_query}}\n\nFailed Trajectory:\n{{trajectory}}\n\nExtract guardrail items with this schema:\n- title: Brief title describing the failure mode (5-10 words)\n- description: One-sentence summary of the pitfall\n- content: 3-8 numbered steps covering detection, avoidance, and recovery\n\nGuidelines:\n1. Focus on WHY the failure occurred and HOW to prevent it\n2. Include early warning signs and detection criteria\n3. Specify checks to perform before risky operations\n4. Provide recovery steps if failure is detected\n5. Generalize the pattern (avoid task-specific details)\n\nRespond with JSON:\n{\n \"memories\": [\n {\n \"title\": \"Guardrail title\",\n \"description\": \"One-sentence summary of pitfall\",\n \"content\": \"1) Detection: How to identify risk. 2) Prevention: Steps to avoid. 3) Recovery: What to do if encountered.\",\n \"tags\": [\"failure\", \"tag1\", \"tag2\"],\n \"domain\": \"optional domain hint\"\n }\n ]\n}",
10
+ "examples": [
11
+ {
12
+ "task": "Login to admin panel and extract user list",
13
+ "trajectory": {
14
+ "steps": [
15
+ {
16
+ "action": "navigate",
17
+ "url": "https://admin.example.com/login"
18
+ },
19
+ {
20
+ "action": "fill_form",
21
+ "fields": {
22
+ "username": "admin",
23
+ "password": "***"
24
+ },
25
+ "note": "Missing CSRF token"
26
+ },
27
+ {
28
+ "action": "submit",
29
+ "result": "403 Forbidden"
30
+ },
31
+ {
32
+ "action": "retry",
33
+ "result": "403 Forbidden"
34
+ }
35
+ ]
36
+ },
37
+ "expected_response": {
38
+ "memories": [
39
+ {
40
+ "title": "Avoid 403 errors by handling CSRF tokens",
41
+ "description": "Missing CSRF tokens cause repeated 403 Forbidden errors on POST requests.",
42
+ "content": "1) Detection: 403 error on form submission despite correct credentials. 2) Prevention: Always check for CSRF token requirements (meta tag, form input, or cookie) before POST. 3) Recovery: Refresh page to get new token and retry with token included. 4) Validation: Verify token is present in request before submitting.",
43
+ "tags": [
44
+ "failure",
45
+ "csrf",
46
+ "403",
47
+ "web"
48
+ ],
49
+ "domain": "webarena.admin"
50
+ },
51
+ {
52
+ "title": "Detect infinite retry loops and stop",
53
+ "description": "Retrying the same failing operation without changing approach causes loops.",
54
+ "content": "1) Detection: Same error occurs 2+ times with identical parameters. 2) Prevention: After first failure, analyze error response and adjust approach. 3) Recovery: Stop after 2 failures, log diagnostic info, and try alternative method or request human intervention. 4) Never retry more than 3 times without changing strategy.",
55
+ "tags": [
56
+ "failure",
57
+ "retry",
58
+ "loop"
59
+ ],
60
+ "domain": "general"
61
+ }
62
+ ]
63
+ }
64
+ },
65
+ {
66
+ "task": "Extract product prices from infinite scroll page",
67
+ "trajectory": {
68
+ "steps": [
69
+ {
70
+ "action": "scroll_down",
71
+ "new_items": 20
72
+ },
73
+ {
74
+ "action": "scroll_down",
75
+ "new_items": 20
76
+ },
77
+ {
78
+ "action": "scroll_down",
79
+ "new_items": 20
80
+ },
81
+ {
82
+ "note": "Repeated indefinitely, never reached end"
83
+ }
84
+ ]
85
+ },
86
+ "expected_response": {
87
+ "memories": [
88
+ {
89
+ "title": "Prevent infinite pagination loops",
90
+ "description": "Infinite scroll pages can cause endless loops if end condition is not detected.",
91
+ "content": "1) Detection: Track number of scrolls and items loaded. If scroll_count > 50 or no new items after 3 consecutive scrolls, likely at end. 2) Prevention: Set hard limit (e.g., max 100 scrolls) and monitor for repeated DOM states. 3) Recovery: Stop scrolling, summarize partial results, and report limited dataset. 4) Use sentinel values or page metadata when available.",
92
+ "tags": [
93
+ "failure",
94
+ "pagination",
95
+ "infinite-scroll",
96
+ "web"
97
+ ],
98
+ "domain": "webarena.shopping"
99
+ }
100
+ ]
101
+ }
102
+ }
103
+ ],
104
+ "notes": [
105
+ "Failure memories are equally valuable as success memories",
106
+ "Focus on root cause, not symptoms",
107
+ "Include both detection and recovery strategies",
108
+ "Tag with 'failure' to distinguish from success-derived memories",
109
+ "Lower confidence prior (0.60) reflects need for validation"
110
+ ]
111
+ }
@@ -0,0 +1,74 @@
1
+ {
2
+ "name": "reasoning_bank_distill_success",
3
+ "version": "1.0.0",
4
+ "description": "Extract reusable strategy principles from successful trajectories. Creates title/description/content memories.",
5
+ "model": "claude-sonnet-4-5-20250929",
6
+ "temperature": 0.3,
7
+ "max_tokens": 2048,
8
+ "system": "You are a knowledge extraction specialist. Your role is to analyze successful task trajectories and extract reusable, generalizable strategy principles. Each principle should be concise, actionable, and avoid task-specific details like URLs, IDs, or PII.",
9
+ "template": "Given a task and its successful trajectory, extract up to {{max_items}} reusable strategy principles.\n\nTask: {{task_query}}\n\nTrajectory:\n{{trajectory}}\n\nExtract memory items with this schema:\n- title: Brief, descriptive title (5-10 words)\n- description: One-sentence summary of the strategy\n- content: 3-8 numbered steps with clear decision criteria and recovery actions\n\nGuidelines:\n1. Generalize beyond this specific task (avoid URLs, IDs, constants)\n2. Focus on transferable patterns and decision logic\n3. Include preconditions, main steps, and error recovery\n4. Use imperative voice (\"Load page\", \"Verify token\", etc.)\n5. Highlight critical checks and validation steps\n\nRespond with JSON:\n{\n \"memories\": [\n {\n \"title\": \"Strategy title\",\n \"description\": \"One-sentence summary\",\n \"content\": \"1) Step one with decision criteria. 2) Step two with validation. 3) Recovery if failure.\",\n \"tags\": [\"tag1\", \"tag2\"],\n \"domain\": \"optional domain hint\"\n }\n ]\n}",
10
+ "examples": [
11
+ {
12
+ "task": "Login to admin panel with CSRF protection and extract user list",
13
+ "trajectory": {
14
+ "steps": [
15
+ {
16
+ "action": "navigate",
17
+ "url": "https://admin.example.com/login"
18
+ },
19
+ {
20
+ "action": "extract_csrf",
21
+ "selector": "meta[name=csrf-token]",
22
+ "value": "abc123"
23
+ },
24
+ {
25
+ "action": "fill_form",
26
+ "fields": {
27
+ "username": "admin",
28
+ "password": "***",
29
+ "csrf_token": "abc123"
30
+ }
31
+ },
32
+ {
33
+ "action": "submit_and_verify",
34
+ "success": true
35
+ }
36
+ ]
37
+ },
38
+ "expected_response": {
39
+ "memories": [
40
+ {
41
+ "title": "Handle login flows with CSRF tokens",
42
+ "description": "Always fetch and include CSRF token before POST to avoid 403 errors.",
43
+ "content": "1) Load login page and parse CSRF from form input, meta tag, or cookie. 2) Include token in POST request as form field or header. 3) If 403 or 419 error, refresh page and retry with new token. 4) Verify successful authentication before proceeding.",
44
+ "tags": [
45
+ "web",
46
+ "auth",
47
+ "csrf",
48
+ "security"
49
+ ],
50
+ "domain": "webarena.admin"
51
+ },
52
+ {
53
+ "title": "Verify authentication state before data extraction",
54
+ "description": "Check for authentication indicators before attempting protected operations.",
55
+ "content": "1) After login, verify presence of session cookie or auth token. 2) Check for redirect to dashboard or user-specific content. 3) Look for logout button or user menu as positive signal. 4) If still on login page or see auth error, retry login flow.",
56
+ "tags": [
57
+ "web",
58
+ "auth",
59
+ "verification"
60
+ ],
61
+ "domain": "webarena"
62
+ }
63
+ ]
64
+ }
65
+ }
66
+ ],
67
+ "notes": [
68
+ "Use temperature=0.3 for some creativity while maintaining structure",
69
+ "Aim for 1-3 memories per trajectory, not more unless truly distinct",
70
+ "Content should be 3-8 steps, not a paragraph",
71
+ "Tags help with retrieval filtering",
72
+ "Domain hints improve retrieval precision for specialized tasks"
73
+ ]
74
+ }
@@ -0,0 +1,101 @@
1
+ {
2
+ "name": "reasoning_bank_judge",
3
+ "version": "1.0.0",
4
+ "description": "LLM-as-judge for trajectory evaluation. Returns Success or Failure with confidence score.",
5
+ "model": "claude-sonnet-4-5-20250929",
6
+ "temperature": 0,
7
+ "max_tokens": 512,
8
+ "system": "You are a strict evaluator for task completion. Your role is to judge whether a task trajectory achieved its goal based on the final state and outputs. Be conservative: only label Success if the acceptance criteria are clearly met. Respond with pure JSON.",
9
+ "template": "Task: {{task_query}}\n\nTrajectory:\n{{trajectory}}\n\nEvaluate if the final state meets the acceptance criteria for this task.\n\nConsider:\n1. Was the stated goal achieved?\n2. Are all required outputs present and correct?\n3. Did the trajectory avoid critical errors or incomplete steps?\n4. Does the final state satisfy implicit requirements (e.g., proper authentication, data consistency)?\n\nRespond with JSON:\n{\n \"label\": \"Success\" or \"Failure\",\n \"confidence\": 0.0 to 1.0,\n \"reasons\": [\"reason 1\", \"reason 2\", ...]\n}",
10
+ "examples": [
11
+ {
12
+ "task": "Login to admin panel and extract user list",
13
+ "trajectory": {
14
+ "steps": [
15
+ {
16
+ "action": "navigate",
17
+ "url": "https://admin.example.com/login"
18
+ },
19
+ {
20
+ "action": "fill_form",
21
+ "fields": {
22
+ "username": "admin",
23
+ "password": "***"
24
+ }
25
+ },
26
+ {
27
+ "action": "click",
28
+ "selector": "button[type=submit]"
29
+ },
30
+ {
31
+ "action": "navigate",
32
+ "url": "https://admin.example.com/users"
33
+ },
34
+ {
35
+ "action": "extract",
36
+ "data": [
37
+ {
38
+ "id": 1,
39
+ "name": "Alice"
40
+ },
41
+ {
42
+ "id": 2,
43
+ "name": "Bob"
44
+ }
45
+ ]
46
+ }
47
+ ]
48
+ },
49
+ "expected_response": {
50
+ "label": "Success",
51
+ "confidence": 0.95,
52
+ "reasons": [
53
+ "Successfully authenticated as admin",
54
+ "Navigated to users page",
55
+ "Extracted user list with expected fields"
56
+ ]
57
+ }
58
+ },
59
+ {
60
+ "task": "Login to admin panel and extract user list",
61
+ "trajectory": {
62
+ "steps": [
63
+ {
64
+ "action": "navigate",
65
+ "url": "https://admin.example.com/login"
66
+ },
67
+ {
68
+ "action": "fill_form",
69
+ "fields": {
70
+ "username": "admin",
71
+ "password": "wrong"
72
+ }
73
+ },
74
+ {
75
+ "action": "click",
76
+ "selector": "button[type=submit]"
77
+ },
78
+ {
79
+ "action": "observe",
80
+ "content": "Invalid credentials"
81
+ }
82
+ ]
83
+ },
84
+ "expected_response": {
85
+ "label": "Failure",
86
+ "confidence": 0.98,
87
+ "reasons": [
88
+ "Authentication failed with invalid credentials",
89
+ "Did not reach users page",
90
+ "No user list extracted"
91
+ ]
92
+ }
93
+ }
94
+ ],
95
+ "notes": [
96
+ "Use temperature=0 for deterministic evaluation",
97
+ "Be conservative: prefer Failure when ambiguous",
98
+ "Confidence should reflect certainty of judgment based on available evidence",
99
+ "If trajectory is malformed or incomplete, return Failure with low confidence"
100
+ ]
101
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "name": "reasoning_bank_matts_aggregate",
3
+ "version": "1.0.0",
4
+ "description": "Self-contrast aggregation for parallel MaTTS. Compares multiple trajectories to extract high-quality, generalizable memories.",
5
+ "model": "claude-sonnet-4-5-20250929",
6
+ "temperature": 0.2,
7
+ "max_tokens": 3072,
8
+ "system": "You are a meta-learning specialist analyzing multiple attempts at the same task. Your role is to identify patterns that distinguish successful approaches from failures, and extract robust, generalizable strategies.",
9
+ "template": "We have {{k}} independent trajectories for the same task. Compare and contrast them to extract high-quality memory items.\n\nTask: {{task_query}}\n\nTrajectories:\n{{trajectories}}\n\nAnalyze:\n1. Patterns present in most successful attempts but absent in failures\n2. Pitfalls present in failures but not in successes\n3. Critical decision points where trajectories diverged\n4. Common suboptimal approaches even in successes\n\nExtract 1-3 distilled memory items that:\n- Generalize across successful attempts\n- Avoid task-specific details (URLs, IDs, etc.)\n- Capture robust decision criteria\n- Include failure modes to avoid\n\nRespond with JSON:\n{\n \"memories\": [\n {\n \"title\": \"Strategy title\",\n \"description\": \"One-sentence summary\",\n \"content\": \"1) Step with decision criteria. 2) Validation check. 3) Recovery if needed.\",\n \"confidence_boost\": 0.0 to 0.2,\n \"evidence\": [\"trajectory_id_1\", \"trajectory_id_2\"],\n \"tags\": [\"tag1\", \"tag2\"]\n }\n ],\n \"insights\": [\n \"Key observation 1 from comparison\",\n \"Key observation 2 from comparison\"\n ]\n}",
10
+ "examples": [
11
+ {
12
+ "task": "Login to admin panel and extract user list",
13
+ "trajectories": [
14
+ {
15
+ "id": "traj_1",
16
+ "label": "Success",
17
+ "confidence": 0.95,
18
+ "steps": [
19
+ "Navigate to login",
20
+ "Extract CSRF token from meta tag",
21
+ "Fill form with token",
22
+ "Submit and verify redirect",
23
+ "Navigate to users page",
24
+ "Extract user list"
25
+ ]
26
+ },
27
+ {
28
+ "id": "traj_2",
29
+ "label": "Success",
30
+ "confidence": 0.92,
31
+ "steps": [
32
+ "Navigate to login",
33
+ "Extract CSRF token from hidden input",
34
+ "Fill form with token",
35
+ "Submit and check for auth cookie",
36
+ "Navigate to users page",
37
+ "Extract user list"
38
+ ]
39
+ },
40
+ {
41
+ "id": "traj_3",
42
+ "label": "Failure",
43
+ "confidence": 0.88,
44
+ "steps": [
45
+ "Navigate to login",
46
+ "Fill form without token",
47
+ "Submit",
48
+ "Receive 403 error",
49
+ "Retry without token",
50
+ "Fail again"
51
+ ]
52
+ },
53
+ {
54
+ "id": "traj_4",
55
+ "label": "Success",
56
+ "confidence": 0.90,
57
+ "steps": [
58
+ "Navigate to login",
59
+ "Extract CSRF from cookie",
60
+ "Fill form with token",
61
+ "Submit and wait for dashboard",
62
+ "Navigate to users",
63
+ "Extract list"
64
+ ]
65
+ }
66
+ ],
67
+ "expected_response": {
68
+ "memories": [
69
+ {
70
+ "title": "CSRF token extraction is critical for protected forms",
71
+ "description": "All successful attempts extracted and included CSRF token; failure did not.",
72
+ "content": "1) Before submitting protected forms, search for CSRF token in: meta tags (name=csrf-token), hidden form inputs (name=_token or csrf), or cookies (XSRF-TOKEN). 2) Include token in request as form field or X-CSRF-TOKEN header. 3) If 403/419 error, token is likely missing or stale—refresh page and retry. 4) Verify token extraction succeeded before submission.",
73
+ "confidence_boost": 0.15,
74
+ "evidence": [
75
+ "traj_1",
76
+ "traj_2",
77
+ "traj_4"
78
+ ],
79
+ "tags": [
80
+ "csrf",
81
+ "web",
82
+ "auth",
83
+ "critical"
84
+ ]
85
+ },
86
+ {
87
+ "title": "Multiple CSRF token locations require flexible parsing",
88
+ "description": "Successful attempts used different token sources (meta, input, cookie).",
89
+ "content": "1) CSRF tokens may appear in multiple locations: meta tags, hidden inputs, cookies, or response headers. 2) Try common locations in order: meta[name=csrf-token], input[name=_token], document.cookie XSRF-TOKEN. 3) If first location fails, check alternatives before giving up. 4) Cache token location for subsequent requests to same domain.",
90
+ "confidence_boost": 0.10,
91
+ "evidence": [
92
+ "traj_1",
93
+ "traj_2",
94
+ "traj_4"
95
+ ],
96
+ "tags": [
97
+ "csrf",
98
+ "parsing",
99
+ "flexibility"
100
+ ]
101
+ }
102
+ ],
103
+ "insights": [
104
+ "All successes extracted CSRF token before submission; failure did not",
105
+ "Token sources varied (meta, input, cookie) but all successes found it",
106
+ "Failure retried without changing approach, demonstrating need for error analysis",
107
+ "Verification step (redirect, cookie, dashboard) was present in all successes"
108
+ ]
109
+ }
110
+ }
111
+ ],
112
+ "notes": [
113
+ "Use temperature=0.2 for focused analysis with minimal creativity",
114
+ "Confidence boost (0-0.2) reflects strength of cross-trajectory evidence",
115
+ "Evidence array links memory to supporting trajectories",
116
+ "Insights provide debugging context for future analysis",
117
+ "Aim for 1-3 memories, not more—quality over quantity"
118
+ ]
119
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentic-flow",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "description": "Production-ready AI agent orchestration platform with 66 specialized agents, 213 MCP tools, ReasoningBank learning memory, and autonomous multi-agent swarms. Built by @ruvnet with Claude Agent SDK, neural networks, memory persistence, GitHub integration, and distributed consensus protocols.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "scripts": {
11
11
  "start": "node --enable-source-maps dist/index.js",
12
- "build": "tsc -p config/tsconfig.json",
12
+ "build": "tsc -p config/tsconfig.json && cp -r src/reasoningbank/prompts dist/reasoningbank/",
13
13
  "dev": "tsx src/index.ts",
14
14
  "prepublishOnly": "npm run build",
15
15
  "test": "npm run test:retry && npm run test:logging",