bernard-agent 0.7.0 → 0.8.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 (45) hide show
  1. package/README.md +96 -50
  2. package/dist/agent.d.ts +7 -4
  3. package/dist/agent.js +88 -127
  4. package/dist/agent.js.map +1 -1
  5. package/dist/config.d.ts +13 -1
  6. package/dist/config.js +66 -4
  7. package/dist/config.js.map +1 -1
  8. package/dist/critic.d.ts +32 -0
  9. package/dist/critic.js +118 -0
  10. package/dist/critic.js.map +1 -0
  11. package/dist/cron/runner.js +54 -34
  12. package/dist/cron/runner.js.map +1 -1
  13. package/dist/output.d.ts +6 -4
  14. package/dist/output.js +31 -10
  15. package/dist/output.js.map +1 -1
  16. package/dist/overlap-checker.d.ts +61 -0
  17. package/dist/overlap-checker.js +106 -0
  18. package/dist/overlap-checker.js.map +1 -0
  19. package/dist/pac.d.ts +37 -0
  20. package/dist/pac.js +69 -0
  21. package/dist/pac.js.map +1 -0
  22. package/dist/rag-query.js +2 -1
  23. package/dist/rag-query.js.map +1 -1
  24. package/dist/rag-worker.js +4 -3
  25. package/dist/rag-worker.js.map +1 -1
  26. package/dist/repl.js +160 -4
  27. package/dist/repl.js.map +1 -1
  28. package/dist/specialist-candidates.d.ts +13 -0
  29. package/dist/specialist-candidates.js.map +1 -1
  30. package/dist/specialist-detector.d.ts +20 -5
  31. package/dist/specialist-detector.js +72 -9
  32. package/dist/specialist-detector.js.map +1 -1
  33. package/dist/specialist-matcher.d.ts +5 -0
  34. package/dist/specialist-matcher.js +1 -0
  35. package/dist/specialist-matcher.js.map +1 -1
  36. package/dist/tools/datetime.d.ts +6 -0
  37. package/dist/tools/datetime.js +38 -1
  38. package/dist/tools/datetime.js.map +1 -1
  39. package/dist/tools/mcp-url.js +1 -1
  40. package/dist/tools/mcp-url.js.map +1 -1
  41. package/dist/tools/specialist-run.js +37 -12
  42. package/dist/tools/specialist-run.js.map +1 -1
  43. package/dist/tools/subagent.js +37 -12
  44. package/dist/tools/subagent.js.map +1 -1
  45. package/package.json +1 -1
@@ -5,6 +5,7 @@ exports.detectSpecialistCandidate = detectSpecialistCandidate;
5
5
  const ai_1 = require("ai");
6
6
  const index_js_1 = require("./providers/index.js");
7
7
  const logger_js_1 = require("./logger.js");
8
+ const overlap_checker_js_1 = require("./overlap-checker.js");
8
9
  /** Minimum conversation length (chars) to bother analyzing. */
9
10
  const MIN_CONVERSATION_LENGTH = 500;
10
11
  /** Minimum confidence threshold to accept a candidate. */
@@ -24,9 +25,15 @@ Do NOT suggest a specialist for:
24
25
  - Simple tool usage without behavioral customization
25
26
  - Patterns already covered by an existing specialist
26
27
 
28
+ If a candidate significantly overlaps with an existing specialist:
29
+ - Set shouldCreate to false and shouldEnhance to true
30
+ - In enhancementTarget, specify which specialist to enhance and what to add
31
+ - Include merged guidelines that combine the existing specialist's strengths with the new pattern
32
+
27
33
  Respond with a JSON object (no markdown fences):
28
34
  {
29
35
  "shouldCreate": boolean,
36
+ "shouldEnhance": boolean,
30
37
  "candidate": {
31
38
  "draftId": "kebab-case-id",
32
39
  "name": "Display Name",
@@ -35,6 +42,12 @@ Respond with a JSON object (no markdown fences):
35
42
  "guidelines": ["Rule 1", "Rule 2"],
36
43
  "confidence": 0.0-1.0,
37
44
  "reasoning": "Why this specialist was proposed"
45
+ } | null,
46
+ "enhancementTarget": {
47
+ "existingSpecialistId": "string",
48
+ "mergedGuidelines": ["rule1", "rule2"],
49
+ "mergedDescription": "enhanced description",
50
+ "reasoning": "Why this should be merged"
38
51
  } | null
39
52
  }
40
53
 
@@ -44,8 +57,7 @@ Be conservative — only suggest specialists for clear, recurring patterns with
44
57
  * Analyze a serialized conversation for recurring delegation patterns
45
58
  * that would benefit from a saved specialist agent.
46
59
  *
47
- * Returns a candidate draft ready for `CandidateStore.create()`, or `null`
48
- * if no strong pattern was detected.
60
+ * Returns a discriminated union: a new candidate, an enhancement suggestion, or null.
49
61
  */
50
62
  async function detectSpecialistCandidate(serializedText, config, existingSpecialists, pendingCandidates) {
51
63
  // Skip trivial conversations
@@ -75,6 +87,21 @@ async function detectSpecialistCandidate(serializedText, config, existingSpecial
75
87
  // Parse JSON — handle markdown code fences
76
88
  const jsonStr = text.replace(/^```(?:json)?\s*/m, '').replace(/\s*```$/m, '');
77
89
  const parsed = JSON.parse(jsonStr);
90
+ // Handle enhancement suggestion
91
+ if (parsed.shouldEnhance && parsed.enhancementTarget) {
92
+ const { existingSpecialistId, mergedGuidelines, mergedDescription, reasoning } = parsed.enhancementTarget;
93
+ if (existingSpecialistId && Array.isArray(mergedGuidelines)) {
94
+ return {
95
+ type: 'enhance-existing',
96
+ enhancement: {
97
+ existingSpecialistId,
98
+ mergedGuidelines,
99
+ mergedDescription,
100
+ reasoning: reasoning || '',
101
+ },
102
+ };
103
+ }
104
+ }
78
105
  if (!parsed.shouldCreate || !parsed.candidate)
79
106
  return null;
80
107
  if (parsed.candidate.confidence < MIN_CONFIDENCE)
@@ -83,7 +110,31 @@ async function detectSpecialistCandidate(serializedText, config, existingSpecial
83
110
  // Validate required fields
84
111
  if (!draftId || !name || !systemPrompt)
85
112
  return null;
86
- // Duplicate check against existing specialists
113
+ // Run overlap check against existing specialists and pending candidates
114
+ const overlapResult = (0, overlap_checker_js_1.checkOverlaps)({
115
+ name,
116
+ description: description || '',
117
+ systemPrompt,
118
+ guidelines: Array.isArray(guidelines) ? guidelines : [],
119
+ }, existingSpecialists.map((s) => ({
120
+ id: s.id,
121
+ name: s.name,
122
+ description: s.description,
123
+ systemPrompt: 'systemPrompt' in s ? s.systemPrompt : undefined,
124
+ guidelines: 'guidelines' in s ? s.guidelines : undefined,
125
+ })), pendingCandidates.map((c) => ({
126
+ draftId: c.draftId,
127
+ name: c.name,
128
+ description: c.description,
129
+ systemPrompt: c.systemPrompt,
130
+ guidelines: c.guidelines,
131
+ })));
132
+ // If overlap exceeds threshold, reject the candidate
133
+ if (overlapResult.maxScore > overlap_checker_js_1.OVERLAP_THRESHOLD) {
134
+ (0, logger_js_1.debugLog)('specialist-detector', `Overlap detected: "${draftId}" overlaps with ${overlapResult.details} (score: ${overlapResult.maxScore.toFixed(2)} > threshold ${overlap_checker_js_1.OVERLAP_THRESHOLD})`);
135
+ return null;
136
+ }
137
+ // Duplicate check against existing specialists (strict ID/name match)
87
138
  const normalizedName = name.toLowerCase();
88
139
  const normalizedDraftId = draftId.toLowerCase();
89
140
  for (const s of existingSpecialists) {
@@ -106,14 +157,26 @@ async function detectSpecialistCandidate(serializedText, config, existingSpecial
106
157
  return null;
107
158
  }
108
159
  }
109
- return {
110
- draftId,
111
- name,
112
- description: description || '',
160
+ // Compute composite confidence using overlap data
161
+ const compositeConfidence = (0, overlap_checker_js_1.computeConfidence)(confidence, overlapResult.maxScore, {
113
162
  systemPrompt,
114
163
  guidelines: Array.isArray(guidelines) ? guidelines : [],
115
- confidence,
116
- reasoning: reasoning || '',
164
+ description: description || '',
165
+ draftId,
166
+ }, serializedText.length);
167
+ return {
168
+ type: 'new-candidate',
169
+ candidate: {
170
+ draftId,
171
+ name,
172
+ description: description || '',
173
+ systemPrompt,
174
+ guidelines: Array.isArray(guidelines) ? guidelines : [],
175
+ confidence: compositeConfidence,
176
+ reasoning: reasoning || '',
177
+ overlapScore: overlapResult.maxScore,
178
+ overlapsWithId: overlapResult.bestMatch?.id,
179
+ },
117
180
  };
118
181
  }
119
182
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"specialist-detector.js","sourceRoot":"","sources":["../src/specialist-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specialist-detector.js","sourceRoot":"","sources":["../src/specialist-detector.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,11 @@ export interface SpecialistMatch {
8
8
  * Tokenizes text: lowercase, split on non-alphanumeric, remove stop words and short/numeric tokens.
9
9
  */
10
10
  export declare function tokenize(text: string): string[];
11
+ /**
12
+ * Stem-prefix match: exact match for any length, prefix matching requires both tokens >= 3 chars.
13
+ * This means 2-char tokens like "pr" only match exactly, while "review" can prefix-match "reviewer".
14
+ */
15
+ export declare function stemMatch(a: string, b: string): boolean;
11
16
  /**
12
17
  * Scores user input against specialist metadata and returns matches with score >= 0.4.
13
18
  * Results are sorted by score descending.
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.tokenize = tokenize;
4
+ exports.stemMatch = stemMatch;
4
5
  exports.matchSpecialists = matchSpecialists;
5
6
  const STOP_WORDS = new Set([
6
7
  'the',
@@ -1 +1 @@
1
- {"version":3,"file":"specialist-matcher.js","sourceRoot":"","sources":["../src/specialist-matcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specialist-matcher.js","sourceRoot":"","sources":["../src/specialist-matcher.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,9 @@ import { z } from 'zod';
3
3
  export declare function createDateTimeTool(): import("ai").Tool<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>, string> & {
4
4
  execute: (args: {}, options: import("ai").ToolExecutionOptions) => PromiseLike<string>;
5
5
  };
6
+ /** Returns a human-readable date+time string for use in system prompts. */
7
+ export declare function formatCurrentDateTime(): string;
8
+ /** Wraps user input with a local ISO 8601 timestamp prefix. */
9
+ export declare function timestampUserMessage(userInput: string): string;
10
+ /** Strips a leading [ISO-timestamp] prefix from a message string. */
11
+ export declare function stripTimestamp(text: string): string;
@@ -1,12 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createDateTimeTool = createDateTimeTool;
4
+ exports.formatCurrentDateTime = formatCurrentDateTime;
5
+ exports.timestampUserMessage = timestampUserMessage;
6
+ exports.stripTimestamp = stripTimestamp;
4
7
  const ai_1 = require("ai");
5
8
  const zod_1 = require("zod");
9
+ /** Regex matching the [ISO-8601] prefix produced by timestampUserMessage. */
10
+ const TIMESTAMP_PREFIX_RE = /^\[\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}\] /;
6
11
  /** Creates a tool that returns the current local date and time as a human-readable string. */
7
12
  function createDateTimeTool() {
8
13
  return (0, ai_1.tool)({
9
- description: 'Get the current date and time including hours and minutes. Use this when the user asks for the current time or when you need a precise timestamp.',
14
+ description: 'Get the current date and time including hours and minutes. Timestamps are automatically attached to user messages, so use this only when you need a precise mid-turn timestamp (e.g., after a long-running tool call).',
10
15
  parameters: zod_1.z.object({}),
11
16
  execute: async () => {
12
17
  const now = new Date();
@@ -23,4 +28,36 @@ function createDateTimeTool() {
23
28
  },
24
29
  });
25
30
  }
31
+ /** Returns a human-readable date+time string for use in system prompts. */
32
+ function formatCurrentDateTime() {
33
+ const now = new Date();
34
+ const date = now.toLocaleDateString('en-US', {
35
+ weekday: 'long',
36
+ year: 'numeric',
37
+ month: 'long',
38
+ day: 'numeric',
39
+ });
40
+ const time = now.toLocaleTimeString('en-US', {
41
+ hour: 'numeric',
42
+ minute: '2-digit',
43
+ timeZoneName: 'short',
44
+ });
45
+ return `${date} at ${time}`;
46
+ }
47
+ /** Wraps user input with a local ISO 8601 timestamp prefix. */
48
+ function timestampUserMessage(userInput) {
49
+ const now = new Date();
50
+ const tzOffset = -now.getTimezoneOffset();
51
+ const sign = tzOffset >= 0 ? '+' : '-';
52
+ const hh = String(Math.floor(Math.abs(tzOffset) / 60)).padStart(2, '0');
53
+ const mm = String(Math.abs(tzOffset) % 60).padStart(2, '0');
54
+ const localISO = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}` +
55
+ `T${String(now.getHours()).padStart(2, '0')}:${String(now.getMinutes()).padStart(2, '0')}:${String(now.getSeconds()).padStart(2, '0')}` +
56
+ `${sign}${hh}:${mm}`;
57
+ return `[${localISO}] ${userInput}`;
58
+ }
59
+ /** Strips a leading [ISO-timestamp] prefix from a message string. */
60
+ function stripTimestamp(text) {
61
+ return text.replace(TIMESTAMP_PREFIX_RE, '');
62
+ }
26
63
  //# sourceMappingURL=datetime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/tools/datetime.ts"],"names":[],"mappings":";;AAIA,gDAmBC;AAvBD,2BAA0B;AAC1B,6BAAwB;AAExB,8FAA8F;AAC9F,SAAgB,kBAAkB;IAChC,OAAO,IAAA,SAAI,EAAC;QACV,WAAW,EACT,mJAAmJ;QACrJ,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,IAAqB,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE;gBACjC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"datetime.js","sourceRoot":"","sources":["../../src/tools/datetime.ts"],"names":[],"mappings":";;AAOA,gDAmBC;AAGD,sDAcC;AAGD,oDAWC;AAGD,wCAEC;AA9DD,2BAA0B;AAC1B,6BAAwB;AAExB,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,0DAA0D,CAAC;AAEvF,8FAA8F;AAC9F,SAAgB,kBAAkB;IAChC,OAAO,IAAA,SAAI,EAAC;QACV,WAAW,EACT,wNAAwN;QAC1N,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,IAAqB,EAAE;YACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE;gBACjC,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;gBACjB,YAAY,EAAE,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,2EAA2E;AAC3E,SAAgB,qBAAqB;IACnC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC3C,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE;QAC3C,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,OAAO;KACtB,CAAC,CAAC;IACH,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED,+DAA+D;AAC/D,SAAgB,oBAAoB,CAAC,SAAiB;IACpD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,QAAQ,GACZ,GAAG,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QAC/G,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACvI,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;IACvB,OAAO,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,qEAAqE;AACrE,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -19,7 +19,7 @@ function createMCPAddUrlTool() {
19
19
  }),
20
20
  execute: async ({ key, url }) => {
21
21
  try {
22
- const type = url.endsWith('/sse') ? 'sse' : 'sse';
22
+ const type = url.endsWith('/sse') ? 'sse' : 'http';
23
23
  (0, mcp_js_1.addMCPUrlServer)(key, url, type);
24
24
  return `MCP server added:\n Key: ${key}\n URL: ${url}\n Transport: ${type}\n\nRestart Bernard for the server to connect.`;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-url.js","sourceRoot":"","sources":["../../src/tools/mcp-url.ts"],"names":[],"mappings":";;AAUA,kDAmBC;AA7BD,2BAA0B;AAC1B,6BAAwB;AACxB,sCAA4C;AAE5C;;;;;GAKG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAA,SAAI,EAAC;QACV,WAAW,EACT,yIAAyI;QAC3I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACtE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;SACrF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAmB,EAAE;YAC/C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAE,KAAe,CAAC;gBACxE,IAAA,wBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,6BAA6B,GAAG,YAAY,GAAG,kBAAkB,IAAI,gDAAgD,CAAC;YAC/H,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,wBAAwB,GAAG,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"mcp-url.js","sourceRoot":"","sources":["../../src/tools/mcp-url.ts"],"names":[],"mappings":";;AAUA,kDAmBC;AA7BD,2BAA0B;AAC1B,6BAAwB;AACxB,sCAA4C;AAE5C;;;;;GAKG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAA,SAAI,EAAC;QACV,WAAW,EACT,yIAAyI;QAC3I,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC;YACnB,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACtE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;SACrF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAmB,EAAE;YAC/C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAE,MAAgB,CAAC;gBACzE,IAAA,wBAAe,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,OAAO,6BAA6B,GAAG,YAAY,GAAG,kBAAkB,IAAI,gDAAgD,CAAC;YAC/H,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,wBAAwB,GAAG,EAAE,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -10,6 +10,7 @@ const logger_js_1 = require("../logger.js");
10
10
  const memory_context_js_1 = require("../memory-context.js");
11
11
  const agent_pool_js_1 = require("./agent-pool.js");
12
12
  const config_js_1 = require("../config.js");
13
+ const pac_js_1 = require("../pac.js");
13
14
  const SPECIALIST_EXECUTION_RULES = `
14
15
 
15
16
  Rules:
@@ -109,26 +110,50 @@ function createSpecialistRunTool(config, options, memoryStore, specialistStore,
109
110
  ragResults,
110
111
  includeScratch: true,
111
112
  });
113
+ const onStepFinish = ({ text, toolCalls, toolResults }) => {
114
+ for (const tc of toolCalls ?? []) {
115
+ (0, output_js_1.printToolCall)(tc.toolName, tc.args, prefix);
116
+ }
117
+ for (const tr of toolResults ?? []) {
118
+ (0, output_js_1.printToolResult)(tr.toolName, tr.result, prefix);
119
+ }
120
+ if (text) {
121
+ (0, output_js_1.printAssistantText)(text, prefix);
122
+ }
123
+ };
112
124
  const result = await (0, ai_1.generateText)({
113
125
  model: (0, index_js_1.getModel)(resolvedProvider, resolvedModel),
114
126
  tools: baseTools,
115
- maxSteps: 10,
127
+ maxSteps: Math.ceil(config.maxSteps * 0.5),
116
128
  maxTokens: config.maxTokens,
117
129
  system: systemPrompt,
118
130
  messages: [{ role: 'user', content: userMessage }],
119
131
  abortSignal: execOptions.abortSignal,
120
- onStepFinish: ({ text, toolCalls, toolResults }) => {
121
- for (const tc of toolCalls) {
122
- (0, output_js_1.printToolCall)(tc.toolName, tc.args, prefix);
123
- }
124
- for (const tr of toolResults) {
125
- (0, output_js_1.printToolResult)(tr.toolName, tr.result, prefix);
126
- }
127
- if (text) {
128
- (0, output_js_1.printAssistantText)(text, prefix);
129
- }
130
- },
132
+ onStepFinish,
131
133
  });
134
+ if (config.criticMode) {
135
+ const pacResult = await (0, pac_js_1.runPACLoop)({
136
+ config,
137
+ userInput: userMessage,
138
+ initialResult: result,
139
+ regenerate: async (extraMessages) => {
140
+ return (0, ai_1.generateText)({
141
+ model: (0, index_js_1.getModel)(resolvedProvider, resolvedModel),
142
+ tools: baseTools,
143
+ maxSteps: 10,
144
+ maxTokens: config.maxTokens,
145
+ system: systemPrompt,
146
+ messages: [{ role: 'user', content: userMessage }, ...extraMessages],
147
+ abortSignal: execOptions.abortSignal,
148
+ onStepFinish,
149
+ });
150
+ },
151
+ prefix,
152
+ abortSignal: execOptions.abortSignal,
153
+ });
154
+ (0, output_js_1.printSpecialistEnd)(id);
155
+ return pacResult.finalText;
156
+ }
132
157
  (0, output_js_1.printSpecialistEnd)(id);
133
158
  return result.text;
134
159
  }
@@ -1 +1 @@
1
- {"version":3,"file":"specialist-run.js","sourceRoot":"","sources":["../../src/tools/specialist-run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specialist-run.js","sourceRoot":"","sources":["../../src/tools/specialist-run.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ const logger_js_1 = require("../logger.js");
11
11
  const memory_context_js_1 = require("../memory-context.js");
12
12
  const agent_pool_js_1 = require("./agent-pool.js");
13
13
  const config_js_1 = require("../config.js");
14
+ const pac_js_1 = require("../pac.js");
14
15
  const SUB_AGENT_SYSTEM_PROMPT = `You are a sub-agent of Bernard, a CLI AI assistant. You have been delegated a specific, scoped task.
15
16
 
16
17
  Objective: Complete the assigned task efficiently and return a concise report to the main agent.
@@ -105,26 +106,50 @@ function createSubAgentTool(config, options, memoryStore, mcpTools, ragStore) {
105
106
  ragResults,
106
107
  includeScratch: true,
107
108
  });
109
+ const onStepFinish = ({ text, toolCalls, toolResults }) => {
110
+ for (const tc of toolCalls ?? []) {
111
+ (0, output_js_1.printToolCall)(tc.toolName, tc.args, prefix);
112
+ }
113
+ for (const tr of toolResults ?? []) {
114
+ (0, output_js_1.printToolResult)(tr.toolName, tr.result, prefix);
115
+ }
116
+ if (text) {
117
+ (0, output_js_1.printAssistantText)(text, prefix);
118
+ }
119
+ };
108
120
  const result = await (0, ai_1.generateText)({
109
121
  model: (0, index_js_1.getModel)(resolvedProvider, resolvedModel),
110
122
  tools: baseTools,
111
- maxSteps: 10,
123
+ maxSteps: Math.ceil(config.maxSteps * 0.5),
112
124
  maxTokens: config.maxTokens,
113
125
  system: enrichedPrompt,
114
126
  messages: [{ role: 'user', content: userMessage }],
115
127
  abortSignal: execOptions.abortSignal,
116
- onStepFinish: ({ text, toolCalls, toolResults }) => {
117
- for (const tc of toolCalls) {
118
- (0, output_js_1.printToolCall)(tc.toolName, tc.args, prefix);
119
- }
120
- for (const tr of toolResults) {
121
- (0, output_js_1.printToolResult)(tr.toolName, tr.result, prefix);
122
- }
123
- if (text) {
124
- (0, output_js_1.printAssistantText)(text, prefix);
125
- }
126
- },
128
+ onStepFinish,
127
129
  });
130
+ if (config.criticMode) {
131
+ const pacResult = await (0, pac_js_1.runPACLoop)({
132
+ config,
133
+ userInput: userMessage,
134
+ initialResult: result,
135
+ regenerate: async (extraMessages) => {
136
+ return (0, ai_1.generateText)({
137
+ model: (0, index_js_1.getModel)(resolvedProvider, resolvedModel),
138
+ tools: baseTools,
139
+ maxSteps: 10,
140
+ maxTokens: config.maxTokens,
141
+ system: enrichedPrompt,
142
+ messages: [{ role: 'user', content: userMessage }, ...extraMessages],
143
+ abortSignal: execOptions.abortSignal,
144
+ onStepFinish,
145
+ });
146
+ },
147
+ prefix,
148
+ abortSignal: execOptions.abortSignal,
149
+ });
150
+ (0, output_js_1.printSubAgentEnd)(id);
151
+ return pacResult.finalText;
152
+ }
128
153
  (0, output_js_1.printSubAgentEnd)(id);
129
154
  return result.text;
130
155
  }
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../src/tools/subagent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bernard-agent",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Local CLI AI agent with multi-provider support",
5
5
  "main": "dist/index.js",
6
6
  "bin": {