antri_cli 1.26.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 (171) hide show
  1. package/README.md +92 -0
  2. package/bin/antri.js +2 -0
  3. package/dist/cli/banner.d.ts +22 -0
  4. package/dist/cli/banner.d.ts.map +1 -0
  5. package/dist/cli/banner.js +133 -0
  6. package/dist/cli/banner.js.map +1 -0
  7. package/dist/cli/dialogs/filePicker.d.ts +23 -0
  8. package/dist/cli/dialogs/filePicker.d.ts.map +1 -0
  9. package/dist/cli/dialogs/filePicker.js +106 -0
  10. package/dist/cli/dialogs/filePicker.js.map +1 -0
  11. package/dist/cli/dialogs/modelPicker.d.ts +10 -0
  12. package/dist/cli/dialogs/modelPicker.d.ts.map +1 -0
  13. package/dist/cli/dialogs/modelPicker.js +205 -0
  14. package/dist/cli/dialogs/modelPicker.js.map +1 -0
  15. package/dist/cli/dialogs/profilePicker.d.ts +11 -0
  16. package/dist/cli/dialogs/profilePicker.d.ts.map +1 -0
  17. package/dist/cli/dialogs/profilePicker.js +185 -0
  18. package/dist/cli/dialogs/profilePicker.js.map +1 -0
  19. package/dist/cli/dialogs/providerPicker.d.ts +19 -0
  20. package/dist/cli/dialogs/providerPicker.d.ts.map +1 -0
  21. package/dist/cli/dialogs/providerPicker.js +205 -0
  22. package/dist/cli/dialogs/providerPicker.js.map +1 -0
  23. package/dist/cli/prompt.d.ts +3 -0
  24. package/dist/cli/prompt.d.ts.map +1 -0
  25. package/dist/cli/prompt.js +50 -0
  26. package/dist/cli/prompt.js.map +1 -0
  27. package/dist/cli/promptToolkit.d.ts +14 -0
  28. package/dist/cli/promptToolkit.d.ts.map +1 -0
  29. package/dist/cli/promptToolkit.js +389 -0
  30. package/dist/cli/promptToolkit.js.map +1 -0
  31. package/dist/cli/renderer.d.ts +21 -0
  32. package/dist/cli/renderer.d.ts.map +1 -0
  33. package/dist/cli/renderer.js +97 -0
  34. package/dist/cli/renderer.js.map +1 -0
  35. package/dist/cli/shortcuts.d.ts +13 -0
  36. package/dist/cli/shortcuts.d.ts.map +1 -0
  37. package/dist/cli/shortcuts.js +414 -0
  38. package/dist/cli/shortcuts.js.map +1 -0
  39. package/dist/core/agent.d.ts +15 -0
  40. package/dist/core/agent.d.ts.map +1 -0
  41. package/dist/core/agent.js +232 -0
  42. package/dist/core/agent.js.map +1 -0
  43. package/dist/core/citations.d.ts +19 -0
  44. package/dist/core/citations.d.ts.map +1 -0
  45. package/dist/core/citations.js +40 -0
  46. package/dist/core/citations.js.map +1 -0
  47. package/dist/core/config.d.ts +16 -0
  48. package/dist/core/config.d.ts.map +1 -0
  49. package/dist/core/config.js +172 -0
  50. package/dist/core/config.js.map +1 -0
  51. package/dist/core/crawler.d.ts +18 -0
  52. package/dist/core/crawler.d.ts.map +1 -0
  53. package/dist/core/crawler.js +83 -0
  54. package/dist/core/crawler.js.map +1 -0
  55. package/dist/core/debugger.d.ts +20 -0
  56. package/dist/core/debugger.d.ts.map +1 -0
  57. package/dist/core/debugger.js +105 -0
  58. package/dist/core/debugger.js.map +1 -0
  59. package/dist/core/dialectic.d.ts +23 -0
  60. package/dist/core/dialectic.d.ts.map +1 -0
  61. package/dist/core/dialectic.js +300 -0
  62. package/dist/core/dialectic.js.map +1 -0
  63. package/dist/core/goalLoop.d.ts +14 -0
  64. package/dist/core/goalLoop.d.ts.map +1 -0
  65. package/dist/core/goalLoop.js +104 -0
  66. package/dist/core/goalLoop.js.map +1 -0
  67. package/dist/core/history.d.ts +13 -0
  68. package/dist/core/history.d.ts.map +1 -0
  69. package/dist/core/history.js +53 -0
  70. package/dist/core/history.js.map +1 -0
  71. package/dist/core/metaOptimizer.d.ts +27 -0
  72. package/dist/core/metaOptimizer.d.ts.map +1 -0
  73. package/dist/core/metaOptimizer.js +98 -0
  74. package/dist/core/metaOptimizer.js.map +1 -0
  75. package/dist/core/sandbox.d.ts +29 -0
  76. package/dist/core/sandbox.d.ts.map +1 -0
  77. package/dist/core/sandbox.js +141 -0
  78. package/dist/core/sandbox.js.map +1 -0
  79. package/dist/core/scraper.d.ts +22 -0
  80. package/dist/core/scraper.d.ts.map +1 -0
  81. package/dist/core/scraper.js +180 -0
  82. package/dist/core/scraper.js.map +1 -0
  83. package/dist/core/search.d.ts +27 -0
  84. package/dist/core/search.d.ts.map +1 -0
  85. package/dist/core/search.js +222 -0
  86. package/dist/core/search.js.map +1 -0
  87. package/dist/core/skillSynthesizer.d.ts +43 -0
  88. package/dist/core/skillSynthesizer.d.ts.map +1 -0
  89. package/dist/core/skillSynthesizer.js +147 -0
  90. package/dist/core/skillSynthesizer.js.map +1 -0
  91. package/dist/core/tools.d.ts +12 -0
  92. package/dist/core/tools.d.ts.map +1 -0
  93. package/dist/core/tools.js +467 -0
  94. package/dist/core/tools.js.map +1 -0
  95. package/dist/core/updater.d.ts +9 -0
  96. package/dist/core/updater.d.ts.map +1 -0
  97. package/dist/core/updater.js +63 -0
  98. package/dist/core/updater.js.map +1 -0
  99. package/dist/index.d.ts +3 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +92 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/memory/consolidation.d.ts +17 -0
  104. package/dist/memory/consolidation.d.ts.map +1 -0
  105. package/dist/memory/consolidation.js +42 -0
  106. package/dist/memory/consolidation.js.map +1 -0
  107. package/dist/memory/episodic.d.ts +15 -0
  108. package/dist/memory/episodic.d.ts.map +1 -0
  109. package/dist/memory/episodic.js +97 -0
  110. package/dist/memory/episodic.js.map +1 -0
  111. package/dist/memory/manager.d.ts +24 -0
  112. package/dist/memory/manager.d.ts.map +1 -0
  113. package/dist/memory/manager.js +97 -0
  114. package/dist/memory/manager.js.map +1 -0
  115. package/dist/memory/profile.d.ts +21 -0
  116. package/dist/memory/profile.d.ts.map +1 -0
  117. package/dist/memory/profile.js +111 -0
  118. package/dist/memory/profile.js.map +1 -0
  119. package/dist/memory/semantic.d.ts +24 -0
  120. package/dist/memory/semantic.d.ts.map +1 -0
  121. package/dist/memory/semantic.js +102 -0
  122. package/dist/memory/semantic.js.map +1 -0
  123. package/dist/memory/types.d.ts +45 -0
  124. package/dist/memory/types.d.ts.map +1 -0
  125. package/dist/memory/types.js +2 -0
  126. package/dist/memory/types.js.map +1 -0
  127. package/dist/memory/vectorStore.d.ts +18 -0
  128. package/dist/memory/vectorStore.d.ts.map +1 -0
  129. package/dist/memory/vectorStore.js +103 -0
  130. package/dist/memory/vectorStore.js.map +1 -0
  131. package/dist/profiles/profileManager.d.ts +25 -0
  132. package/dist/profiles/profileManager.d.ts.map +1 -0
  133. package/dist/profiles/profileManager.js +205 -0
  134. package/dist/profiles/profileManager.js.map +1 -0
  135. package/dist/providers/anthropic.d.ts +14 -0
  136. package/dist/providers/anthropic.d.ts.map +1 -0
  137. package/dist/providers/anthropic.js +80 -0
  138. package/dist/providers/anthropic.js.map +1 -0
  139. package/dist/providers/base.d.ts +7 -0
  140. package/dist/providers/base.d.ts.map +1 -0
  141. package/dist/providers/base.js +2 -0
  142. package/dist/providers/base.js.map +1 -0
  143. package/dist/providers/gemini.d.ts +14 -0
  144. package/dist/providers/gemini.d.ts.map +1 -0
  145. package/dist/providers/gemini.js +77 -0
  146. package/dist/providers/gemini.js.map +1 -0
  147. package/dist/providers/index.d.ts +4 -0
  148. package/dist/providers/index.d.ts.map +1 -0
  149. package/dist/providers/index.js +65 -0
  150. package/dist/providers/index.js.map +1 -0
  151. package/dist/providers/mock.d.ts +8 -0
  152. package/dist/providers/mock.d.ts.map +1 -0
  153. package/dist/providers/mock.js +62 -0
  154. package/dist/providers/mock.js.map +1 -0
  155. package/dist/providers/models.d.ts +8 -0
  156. package/dist/providers/models.d.ts.map +1 -0
  157. package/dist/providers/models.js +403 -0
  158. package/dist/providers/models.js.map +1 -0
  159. package/dist/providers/openai.d.ts +18 -0
  160. package/dist/providers/openai.d.ts.map +1 -0
  161. package/dist/providers/openai.js +162 -0
  162. package/dist/providers/openai.js.map +1 -0
  163. package/dist/types.d.ts +116 -0
  164. package/dist/types.d.ts.map +1 -0
  165. package/dist/types.js +2 -0
  166. package/dist/types.js.map +1 -0
  167. package/dist/utils/logger.d.ts +23 -0
  168. package/dist/utils/logger.d.ts.map +1 -0
  169. package/dist/utils/logger.js +26 -0
  170. package/dist/utils/logger.js.map +1 -0
  171. package/package.json +57 -0
@@ -0,0 +1,20 @@
1
+ import { AntriConfig, ToolCall, ToolResult } from '../types.js';
2
+ export interface DebugRepairResult {
3
+ repaired: boolean;
4
+ attempts: number;
5
+ rootCause: string;
6
+ repairedArgs?: Record<string, any>;
7
+ repairedResult?: ToolResult;
8
+ fixSummary: string;
9
+ }
10
+ export declare class SelfDebugger {
11
+ /**
12
+ * Autonomous Self-Debugging Loop: Diagnoses failures, generates patches, and auto-retries
13
+ */
14
+ static autoDebugAndRepair(toolCall: ToolCall, failedResult: ToolResult, config: AntriConfig, executeFn: (name: string, args: Record<string, any>, callId: string) => Promise<ToolResult>, maxRetries?: number): Promise<DebugRepairResult>;
15
+ /**
16
+ * Runs diagnostic reasoning to pinpoint failure cause and generate fixed parameters
17
+ */
18
+ private static diagnoseRootCause;
19
+ }
20
+ //# sourceMappingURL=debugger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../src/core/debugger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB;;OAEG;WACiB,kBAAkB,CACpC,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,EAC3F,UAAU,SAAI,GACb,OAAO,CAAC,iBAAiB,CAAC;IAsD7B;;OAEG;mBACkB,iBAAiB;CA+DvC"}
@@ -0,0 +1,105 @@
1
+ import chalk from 'chalk';
2
+ import { createProvider } from '../providers/index.js';
3
+ import { log } from '../utils/logger.js';
4
+ export class SelfDebugger {
5
+ /**
6
+ * Autonomous Self-Debugging Loop: Diagnoses failures, generates patches, and auto-retries
7
+ */
8
+ static async autoDebugAndRepair(toolCall, failedResult, config, executeFn, maxRetries = 2) {
9
+ log.info(`๐Ÿ› ๏ธ [Self-Debugger] Intercepted failure in tool '${toolCall.function.name}'. Starting root cause diagnosis...`);
10
+ let currentArgs = {};
11
+ try {
12
+ currentArgs = JSON.parse(toolCall.function.arguments || '{}');
13
+ }
14
+ catch {
15
+ currentArgs = {};
16
+ }
17
+ let lastError = failedResult.output;
18
+ let attempts = 0;
19
+ while (attempts < maxRetries) {
20
+ attempts++;
21
+ console.log(chalk.hex('#f59e0b')(`๐Ÿ”„ [Self-Debugger Iteration ${attempts}/${maxRetries}] Generating patch for '${toolCall.function.name}'...`));
22
+ const diagnosis = await this.diagnoseRootCause(toolCall.function.name, currentArgs, lastError, config);
23
+ if (!diagnosis.patchArgs) {
24
+ break;
25
+ }
26
+ console.log(chalk.hex('#38bdf8')(`๐Ÿ’ก [Self-Debugger] Root cause: ${diagnosis.rootCause}`));
27
+ console.log(chalk.hex('#818cf8')(`๐Ÿ”ง [Self-Debugger] Applying patch: ${diagnosis.fixSummary}`));
28
+ currentArgs = diagnosis.patchArgs;
29
+ // Re-execute with patched arguments
30
+ const retryResult = await executeFn(toolCall.function.name, currentArgs, toolCall.id);
31
+ if (!retryResult.error) {
32
+ log.success(`โœจ [Self-Debugger] Successfully self-healed '${toolCall.function.name}' on attempt ${attempts}!`);
33
+ return {
34
+ repaired: true,
35
+ attempts,
36
+ rootCause: diagnosis.rootCause,
37
+ repairedArgs: currentArgs,
38
+ repairedResult: retryResult,
39
+ fixSummary: diagnosis.fixSummary,
40
+ };
41
+ }
42
+ lastError = retryResult.output;
43
+ }
44
+ return {
45
+ repaired: false,
46
+ attempts,
47
+ rootCause: 'Unable to automatically heal after ' + attempts + ' attempts',
48
+ fixSummary: 'Manual inspection required',
49
+ };
50
+ }
51
+ /**
52
+ * Runs diagnostic reasoning to pinpoint failure cause and generate fixed parameters
53
+ */
54
+ static async diagnoseRootCause(toolName, args, errorMessage, config) {
55
+ const provider = createProvider(config);
56
+ const prompt = `You are the Autonomous Self-Debugger for an AI coding agent.
57
+ A tool execution failed with an error.
58
+
59
+ Tool: "${toolName}"
60
+ Arguments Used: ${JSON.stringify(args, null, 2)}
61
+ Error Output:
62
+ """
63
+ ${errorMessage.slice(0, 1500)}
64
+ """
65
+
66
+ Your task:
67
+ 1. Identify the precise root cause (e.g. invalid file path, missing syntax in command, wrong flag, bad JSON format, Windows vs Linux path separator).
68
+ 2. Generate the corrected parameters object as valid JSON.
69
+
70
+ Respond in this exact JSON format:
71
+ {
72
+ "rootCause": "<1-sentence explanation of why it failed>",
73
+ "fixSummary": "<1-sentence explanation of the fix applied>",
74
+ "patchArgs": { ...corrected arguments object... }
75
+ }`;
76
+ try {
77
+ const response = await provider.sendMessageStream([{ role: 'user', content: prompt }], [], { onToken: () => { } });
78
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
79
+ if (jsonMatch) {
80
+ const parsed = JSON.parse(jsonMatch[0]);
81
+ return {
82
+ rootCause: parsed.rootCause || 'Parameter or runtime discrepancy',
83
+ fixSummary: parsed.fixSummary || 'Corrected parameters',
84
+ patchArgs: parsed.patchArgs || args,
85
+ };
86
+ }
87
+ }
88
+ catch { }
89
+ // Fallback heuristic patches
90
+ if (toolName === 'run_command' && args.command) {
91
+ if (args.command.startsWith('ls') && process.platform === 'win32') {
92
+ return {
93
+ rootCause: "'ls' command not native on Windows shell",
94
+ fixSummary: "Changed 'ls' to 'dir'",
95
+ patchArgs: { command: 'dir' },
96
+ };
97
+ }
98
+ }
99
+ return {
100
+ rootCause: 'Unresolved error',
101
+ fixSummary: 'Retry failed',
102
+ };
103
+ }
104
+ }
105
+ //# sourceMappingURL=debugger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/core/debugger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { AntriConfig, DebateDepth, DialecticResult } from '../types.js';
2
+ export declare class DialecticEngine {
3
+ private config;
4
+ private toolExecutor;
5
+ private citationEngine;
6
+ constructor(config: AntriConfig);
7
+ /**
8
+ * Executes the full Dialectic Reasoning Pipeline with visual rendering
9
+ */
10
+ debate(query: string, depth?: DebateDepth): Promise<DialecticResult>;
11
+ /**
12
+ * Runs an individual persona without tools
13
+ */
14
+ private runPersona;
15
+ /**
16
+ * Runs the Researcher persona with full autonomous tool calling
17
+ */
18
+ private runPersonaWithTools;
19
+ private renderHeader;
20
+ private renderPersonaBanner;
21
+ private renderConsensusFooter;
22
+ }
23
+ //# sourceMappingURL=dialectic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialectic.d.ts","sourceRoot":"","sources":["../../src/core/dialectic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAe,WAAW,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAM/G,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,cAAc,CAAiB;gBAE3B,MAAM,EAAE,WAAW;IAM/B;;OAEG;IACU,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,WAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6JzF;;OAEG;YACW,UAAU;IA2CxB;;OAEG;YACW,mBAAmB;IAoEjC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,qBAAqB;CAa9B"}
@@ -0,0 +1,300 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import { createProvider } from '../providers/index.js';
4
+ import { AVAILABLE_TOOLS, ToolExecutor } from './tools.js';
5
+ import { TerminalRenderer } from '../cli/renderer.js';
6
+ import { CitationEngine } from './citations.js';
7
+ export class DialecticEngine {
8
+ config;
9
+ toolExecutor;
10
+ citationEngine;
11
+ constructor(config) {
12
+ this.config = config;
13
+ this.toolExecutor = new ToolExecutor(config.workingDir);
14
+ this.citationEngine = new CitationEngine();
15
+ }
16
+ /**
17
+ * Executes the full Dialectic Reasoning Pipeline with visual rendering
18
+ */
19
+ async debate(query, depth = 'deep') {
20
+ this.citationEngine.clear();
21
+ const stages = [];
22
+ this.renderHeader(query, depth);
23
+ // ==========================================
24
+ // STAGE 1: The Proposer (Thesis)
25
+ // ==========================================
26
+ this.renderPersonaBanner('๐Ÿ’ก The Proposer (Thesis)', '#34d399', 'Generating primary hypothesis and architectural solution...');
27
+ const thesisPrompt = `You are The Proposer in a dialectic consensus engine.
28
+ User Query: "${query}"
29
+
30
+ Your task:
31
+ 1. Provide a comprehensive, creative, and well-structured initial solution, code implementation, or hypothesis.
32
+ 2. Outline key architectural decisions and assumptions.
33
+ 3. Be clear, precise, and practical.`;
34
+ const thesisContent = await this.runPersona('proposer', thesisPrompt, []);
35
+ stages.push({
36
+ persona: 'proposer',
37
+ title: 'Initial Thesis & Solution',
38
+ content: thesisContent,
39
+ });
40
+ // ==========================================
41
+ // STAGE 2: The Adversary / Critic (Antithesis)
42
+ // ==========================================
43
+ this.renderPersonaBanner('โš”๏ธ The Adversary / Critic (Antithesis)', '#f87171', 'Stress-testing thesis for vulnerabilities, flaws, and edge cases...');
44
+ const antithesisPrompt = `You are The Adversary and Security/Logic Critic in a dialectic consensus engine.
45
+ User Query: "${query}"
46
+
47
+ Proposer's Thesis:
48
+ """
49
+ ${thesisContent}
50
+ """
51
+
52
+ Your task:
53
+ 1. Ruthlessly challenge the Proposer's assumptions and solution.
54
+ 2. Hunt for edge cases, performance bottlenecks, concurrency/race conditions, security vulnerabilities, or API misuse.
55
+ 3. Identify potential real-world failure points.
56
+ 4. Be rigorous, objective, and constructive.`;
57
+ const antithesisContent = await this.runPersona('adversary', antithesisPrompt, []);
58
+ stages.push({
59
+ persona: 'adversary',
60
+ title: 'Critical Antithesis & Edge-Case Analysis',
61
+ content: antithesisContent,
62
+ });
63
+ let verificationContent = '';
64
+ let revisedThesisContent = '';
65
+ // ==========================================
66
+ // STAGE 3: The Researcher / Verifier (Deep & Rigorous)
67
+ // ==========================================
68
+ if (depth === 'deep' || depth === 'rigorous') {
69
+ this.renderPersonaBanner('๐Ÿ”ฌ The Researcher / Verifier', '#38bdf8', 'Autonomously deploying Level 2 web & workspace tools to verify contested claims...');
70
+ const researchPrompt = `You are The Researcher and Empirical Verifier.
71
+ User Query: "${query}"
72
+
73
+ Thesis:
74
+ """
75
+ ${thesisContent}
76
+ """
77
+
78
+ Antithesis Criticisms:
79
+ """
80
+ ${antithesisContent}
81
+ """
82
+
83
+ Your task:
84
+ 1. Fact-check disputed claims between Thesis and Antithesis.
85
+ 2. Use tools (web_search, scrape_url, run_command, read_file) if needed to verify documentation, library versions, or empirical behaviors.
86
+ 3. Deliver a concise verification report summarizing what holds true and what is debunked.`;
87
+ verificationContent = await this.runPersonaWithTools('researcher', researchPrompt);
88
+ stages.push({
89
+ persona: 'researcher',
90
+ title: 'Empirical Fact-Check & Tool Verification',
91
+ content: verificationContent,
92
+ });
93
+ }
94
+ // ==========================================
95
+ // STAGE 4 (Rigorous Only): Second Round Debate
96
+ // ==========================================
97
+ if (depth === 'rigorous') {
98
+ this.renderPersonaBanner('๐Ÿ’ก The Proposer (Refined Thesis - Round 2)', '#34d399', 'Refining solution against adversarial critiques and empirical data...');
99
+ const round2ProposerPrompt = `You are The Proposer incorporating feedback.
100
+ User Query: "${query}"
101
+ Criticisms:
102
+ """
103
+ ${antithesisContent}
104
+ """
105
+ Verification Results:
106
+ """
107
+ ${verificationContent}
108
+ """
109
+
110
+ Your task:
111
+ Provide an updated, hardened revision of the solution addressing all valid points while defending key design choices.`;
112
+ revisedThesisContent = await this.runPersona('proposer', round2ProposerPrompt, []);
113
+ stages.push({
114
+ persona: 'proposer',
115
+ title: 'Hardened Revised Thesis',
116
+ content: revisedThesisContent,
117
+ });
118
+ }
119
+ // ==========================================
120
+ // FINAL STAGE: The Judge / Synthesizer (Synthesis)
121
+ // ==========================================
122
+ this.renderPersonaBanner('โš–๏ธ The Judge / Synthesizer (Final Consensus)', '#c084fc', 'Merging valid counterpoints, resolving contradictions, delivering final consensus...');
123
+ const judgePrompt = `You are The Judge and Master Synthesizer.
124
+ User Query: "${query}"
125
+
126
+ 1. Original Thesis:
127
+ """
128
+ ${thesisContent}
129
+ """
130
+
131
+ 2. Adversarial Critique:
132
+ """
133
+ ${antithesisContent}
134
+ """
135
+
136
+ ${verificationContent ? `3. Empirical Verification:\n"""\n${verificationContent}\n"""\n` : ''}
137
+ ${revisedThesisContent ? `4. Revised Hardened Proposal:\n"""\n${revisedThesisContent}\n"""\n` : ''}
138
+
139
+ Your task:
140
+ 1. Deliver the authoritative, battle-tested FINAL SOLUTION and consensus answer.
141
+ 2. Clearly explain which criticisms were integrated, which were resolved, and why the final design is robust.
142
+ 3. Provide production-ready, clean code and architecture.`;
143
+ const synthesisContent = await this.runPersona('judge', judgePrompt, []);
144
+ stages.push({
145
+ persona: 'judge',
146
+ title: 'Supreme Consensus & Battle-Tested Synthesis',
147
+ content: synthesisContent,
148
+ });
149
+ this.renderConsensusFooter(stages, depth);
150
+ return {
151
+ query,
152
+ depth,
153
+ thesis: thesisContent,
154
+ antithesis: antithesisContent,
155
+ verification: verificationContent || undefined,
156
+ synthesis: synthesisContent,
157
+ stages,
158
+ sources: this.citationEngine.getSources().map((s) => s.url),
159
+ };
160
+ }
161
+ /**
162
+ * Runs an individual persona without tools
163
+ */
164
+ async runPersona(persona, promptText, chatHistory) {
165
+ const provider = createProvider(this.config);
166
+ const messages = [
167
+ ...chatHistory,
168
+ { role: 'user', content: promptText },
169
+ ];
170
+ let spinner = ora({
171
+ text: chalk.hex('#94a3b8')(`Persona [${persona}] generating thoughts...`),
172
+ spinner: 'dots',
173
+ color: 'magenta',
174
+ }).start();
175
+ let hasStreamed = false;
176
+ let fullOutput = '';
177
+ try {
178
+ fullOutput = await provider.sendMessageStream(messages, [], {
179
+ onToken: (token) => {
180
+ if (spinner) {
181
+ spinner.stop();
182
+ spinner = null;
183
+ }
184
+ if (!hasStreamed) {
185
+ hasStreamed = true;
186
+ }
187
+ TerminalRenderer.printToken(token);
188
+ },
189
+ });
190
+ if (spinner)
191
+ spinner.stop();
192
+ if (hasStreamed) {
193
+ console.log();
194
+ console.log();
195
+ }
196
+ return fullOutput;
197
+ }
198
+ catch (err) {
199
+ if (spinner)
200
+ spinner.stop();
201
+ console.log(chalk.red(`\nPersona execution error: ${err.message}`));
202
+ return `[Error in ${persona}: ${err.message}]`;
203
+ }
204
+ }
205
+ /**
206
+ * Runs the Researcher persona with full autonomous tool calling
207
+ */
208
+ async runPersonaWithTools(persona, promptText, depth = 0) {
209
+ if (depth > 4)
210
+ return '';
211
+ const provider = createProvider(this.config);
212
+ const messages = [{ role: 'user', content: promptText }];
213
+ let spinner = ora({
214
+ text: chalk.hex('#38bdf8')('Researcher investigating with live tools...'),
215
+ spinner: 'dots',
216
+ color: 'blue',
217
+ }).start();
218
+ const pendingToolCalls = [];
219
+ let hasStreamed = false;
220
+ let fullOutput = '';
221
+ try {
222
+ fullOutput = await provider.sendMessageStream(messages, AVAILABLE_TOOLS, {
223
+ onToken: (token) => {
224
+ if (spinner) {
225
+ spinner.stop();
226
+ spinner = null;
227
+ }
228
+ if (!hasStreamed) {
229
+ hasStreamed = true;
230
+ }
231
+ TerminalRenderer.printToken(token);
232
+ },
233
+ onToolCall: (tc) => {
234
+ if (spinner) {
235
+ spinner.stop();
236
+ spinner = null;
237
+ }
238
+ pendingToolCalls.push(tc);
239
+ },
240
+ });
241
+ if (spinner)
242
+ spinner.stop();
243
+ if (hasStreamed) {
244
+ console.log();
245
+ console.log();
246
+ }
247
+ if (pendingToolCalls.length > 0) {
248
+ for (const tc of pendingToolCalls) {
249
+ let parsedArgs = {};
250
+ try {
251
+ parsedArgs = JSON.parse(tc.function.arguments || '{}');
252
+ }
253
+ catch {
254
+ parsedArgs = {};
255
+ }
256
+ const result = await this.toolExecutor.execute(tc.function.name, parsedArgs, tc.id);
257
+ TerminalRenderer.printToolCompact(tc, result);
258
+ if (tc.function.name === 'web_search' && parsedArgs.query) {
259
+ this.citationEngine.addSource(`Debate Verification: ${parsedArgs.query}`, `https://duckduckgo.com/?q=${encodeURIComponent(parsedArgs.query)}`, undefined, 'DuckDuckGo');
260
+ }
261
+ }
262
+ }
263
+ return fullOutput;
264
+ }
265
+ catch (err) {
266
+ if (spinner)
267
+ spinner.stop();
268
+ return `[Researcher error: ${err.message}]`;
269
+ }
270
+ }
271
+ // Visual formatting utilities
272
+ renderHeader(query, depth) {
273
+ const divider = chalk.hex('#475569')('โ”'.repeat(Math.min(process.stdout.columns || 80, 80)));
274
+ console.log();
275
+ console.log(divider);
276
+ console.log(chalk.bold.hex('#c084fc')(' ๐Ÿง  DIALECTIC ENGINE ') +
277
+ chalk.hex('#94a3b8')('ยท Multi-Persona Self-Debate & Consensus'));
278
+ console.log(chalk.hex('#64748b')(` Depth: `) + chalk.bold.cyan(depth.toUpperCase()) + chalk.hex('#64748b')(` ยท Topic: "${query}"`));
279
+ console.log(divider);
280
+ console.log();
281
+ }
282
+ renderPersonaBanner(personaTitle, hexColor, subtitle) {
283
+ const badge = chalk.bgHex(hexColor).bold.black(` ${personaTitle} `);
284
+ console.log(badge + ' ' + chalk.hex('#94a3b8')(subtitle));
285
+ console.log(chalk.hex('#334155')('โ”€'.repeat(Math.min(process.stdout.columns || 80, 80))));
286
+ }
287
+ renderConsensusFooter(stages, depth) {
288
+ const divider = chalk.hex('#475569')('โ”'.repeat(Math.min(process.stdout.columns || 80, 80)));
289
+ console.log(divider);
290
+ console.log(chalk.bold.hex('#4ade80')(' โœ” DIALECTIC CONSENSUS REACHED'));
291
+ console.log(chalk.hex('#94a3b8')(` Stages Completed: ${stages.length} ยท Protocol: ${depth.toUpperCase()}`));
292
+ const citations = this.citationEngine.generateBibliography();
293
+ if (citations) {
294
+ console.log(citations);
295
+ }
296
+ console.log(divider);
297
+ console.log();
298
+ }
299
+ }
300
+ //# sourceMappingURL=dialectic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialectic.js","sourceRoot":"","sources":["../../src/core/dialectic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AntriConfig } from '../types.js';
2
+ export interface GoalIterationResult {
3
+ iteration: number;
4
+ type: 'draft' | 'review' | 'refinement';
5
+ content: string;
6
+ qualityScore?: number;
7
+ }
8
+ export declare class GoalLoopEngine {
9
+ private config;
10
+ private toolExecutor;
11
+ constructor(config: AntriConfig);
12
+ runGoal(goalPrompt: string, maxIterations?: number): Promise<string>;
13
+ }
14
+ //# sourceMappingURL=goalLoop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goalLoop.d.ts","sourceRoot":"","sources":["../../src/core/goalLoop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AAQvD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAe;gBAEvB,MAAM,EAAE,WAAW;IAKlB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAwG7E"}
@@ -0,0 +1,104 @@
1
+ import chalk from 'chalk';
2
+ import { createProvider } from '../providers/index.js';
3
+ import { TerminalRenderer } from '../cli/renderer.js';
4
+ import { getAllActiveTools, ToolExecutor } from './tools.js';
5
+ import { memoryManager } from '../memory/manager.js';
6
+ import { profileManager } from '../profiles/profileManager.js';
7
+ export class GoalLoopEngine {
8
+ config;
9
+ toolExecutor;
10
+ constructor(config) {
11
+ this.config = config;
12
+ this.toolExecutor = new ToolExecutor(config.workingDir);
13
+ }
14
+ async runGoal(goalPrompt, maxIterations = 3) {
15
+ const startTime = Date.now();
16
+ const activeProfile = profileManager.getActiveProfileName();
17
+ console.log();
18
+ console.log(chalk.bgRgb(67, 56, 202).bold.white(` ๐ŸŽฏ AUTONOMOUS GOAL LOOP ยท OBJECTIVE `));
19
+ console.log(chalk.hex('#c7d2fe')(`"${goalPrompt}"`));
20
+ console.log(chalk.hex('#4338ca')('โ•'.repeat(74)));
21
+ console.log(chalk.hex('#94a3b8')(`Iterating until optimal quality ยท Active Profile: ${activeProfile}`));
22
+ console.log();
23
+ const provider = createProvider(this.config);
24
+ const activeTools = this.config.autoExecuteTools ? getAllActiveTools() : [];
25
+ let currentDraft = '';
26
+ let currentCritique = '';
27
+ let finalSolution = '';
28
+ // ==========================================
29
+ // ITERATION 1: PLAN & INITIAL SOLUTION
30
+ // ==========================================
31
+ console.log(chalk.bold.hex('#10b981')('๐Ÿ“ [Iter 1/3: Formulate Initial Solution & Strategy]'));
32
+ console.log(chalk.hex('#064e3b')('โ”€'.repeat(74)));
33
+ const iter1Messages = [
34
+ {
35
+ role: 'system',
36
+ content: `You are ANTRI Goal Loop Agent.
37
+ Objective: Formulate a thorough, complete, production-ready initial implementation or answer for the goal.
38
+ Be specific, write clean code, and address the core requirements.`,
39
+ },
40
+ {
41
+ role: 'user',
42
+ content: `Goal: ${goalPrompt}\n\nDeliver the initial working implementation with clear architecture.`,
43
+ },
44
+ ];
45
+ currentDraft = await provider.sendMessageStream(iter1Messages, activeTools, {
46
+ onToken: (t) => TerminalRenderer.printToken(t),
47
+ });
48
+ console.log('\n');
49
+ // ==========================================
50
+ // ITERATION 2: ADVERSARIAL SELF-REVIEW & CRITIQUE
51
+ // ==========================================
52
+ console.log(chalk.bold.hex('#f43f5e')('๐Ÿ” [Iter 2/3: Adversarial Self-Review, Flaw Detection & Quality Scoring]'));
53
+ console.log(chalk.hex('#881337')('โ”€'.repeat(74)));
54
+ const iter2Messages = [
55
+ {
56
+ role: 'system',
57
+ content: `You are the Adversarial Goal Reviewer.
58
+ Evaluate the draft solution against the original goal with ruthless precision.
59
+ 1. Find any edge cases, bugs, performance bottlenecks, security risks, or missing features.
60
+ 2. Assign a Quality Score from 0 to 100%.
61
+ 3. Provide a numbered list of concrete improvements required.`,
62
+ },
63
+ {
64
+ role: 'user',
65
+ content: `Goal: ${goalPrompt}\n\nDraft Solution:\n"""\n${currentDraft}\n"""\n\nPerform full review and score quality.`,
66
+ },
67
+ ];
68
+ currentCritique = await provider.sendMessageStream(iter2Messages, [], {
69
+ onToken: (t) => TerminalRenderer.printToken(t),
70
+ });
71
+ console.log('\n');
72
+ // ==========================================
73
+ // ITERATION 3: REFINEMENT, HARDENING & SYNTHESIS
74
+ // ==========================================
75
+ console.log(chalk.bold.hex('#a855f7')('โœจ [Iter 3/3: Hardening & Final Optimal Solution Delivery]'));
76
+ console.log(chalk.hex('#581c87')('โ”€'.repeat(74)));
77
+ const iter3Messages = [
78
+ {
79
+ role: 'system',
80
+ content: `You are the Master Synthesizer.
81
+ Take the initial draft and the adversarial critique to generate the ultimate, polished, battle-tested final solution.
82
+ Ensure every single critique and edge case is resolved with flawless code and explanations.`,
83
+ },
84
+ {
85
+ role: 'user',
86
+ content: `Goal: ${goalPrompt}\n\nInitial Draft:\n"""\n${currentDraft}\n"""\n\nCritique & Improvements:\n"""\n${currentCritique}\n"""\n\nDeliver the final production-ready solution now.`,
87
+ },
88
+ ];
89
+ finalSolution = await provider.sendMessageStream(iter3Messages, activeTools, {
90
+ onToken: (t) => TerminalRenderer.printToken(t),
91
+ });
92
+ console.log('\n');
93
+ // Record learning into memory
94
+ const duration = ((Date.now() - startTime) / 1000).toFixed(1);
95
+ memoryManager.recordInteraction(`[Goal Loop]: ${goalPrompt}`, finalSolution);
96
+ profileManager.appendNoteToActiveProfile(`Accomplished Goal: "${goalPrompt.slice(0, 80)}" via 3-step loop.`);
97
+ console.log(chalk.hex('#4338ca')('โ•'.repeat(74)));
98
+ console.log(chalk.bold.hex('#c084fc')(`๐Ÿ Goal Loop Completed in ${duration}s ยท Convergence Reached ยท Ready for Production`));
99
+ console.log(chalk.hex('#4338ca')('โ•'.repeat(74)));
100
+ console.log();
101
+ return finalSolution;
102
+ }
103
+ }
104
+ //# sourceMappingURL=goalLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goalLoop.js","sourceRoot":"","sources":["../../src/core/goalLoop.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ChatMessage } from '../types.js';
2
+ export declare class ConversationHistory {
3
+ private messages;
4
+ private maxHistoryTokens;
5
+ constructor();
6
+ addMessage(message: ChatMessage): void;
7
+ getMessages(): ChatMessage[];
8
+ getLastUserMessage(): ChatMessage | undefined;
9
+ clear(): void;
10
+ length(): number;
11
+ exportMarkdown(filePath?: string): string;
12
+ }
13
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/core/history.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,gBAAgB,CAAiB;;IAMlC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAOtC,WAAW,IAAI,WAAW,EAAE;IAI5B,kBAAkB,IAAI,WAAW,GAAG,SAAS;IAS7C,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,MAAM;IAIhB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;CAsBjD"}