agentic-api 2.0.314 → 2.0.491

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 (48) hide show
  1. package/dist/src/agents/prompts.d.ts +1 -1
  2. package/dist/src/agents/prompts.js +9 -7
  3. package/dist/src/agents/simulator.d.ts +7 -3
  4. package/dist/src/agents/simulator.executor.d.ts +9 -3
  5. package/dist/src/agents/simulator.executor.js +43 -17
  6. package/dist/src/agents/simulator.js +47 -19
  7. package/dist/src/agents/simulator.prompts.d.ts +9 -8
  8. package/dist/src/agents/simulator.prompts.js +68 -62
  9. package/dist/src/agents/simulator.types.d.ts +4 -1
  10. package/dist/src/agents/simulator.utils.js +0 -2
  11. package/dist/src/execute/helpers.d.ts +75 -0
  12. package/dist/src/execute/helpers.js +139 -0
  13. package/dist/src/execute/index.d.ts +11 -0
  14. package/dist/src/execute/index.js +44 -0
  15. package/dist/src/execute/legacy.d.ts +46 -0
  16. package/dist/src/{execute.js → execute/legacy.js} +130 -232
  17. package/dist/src/execute/modelconfig.d.ts +19 -0
  18. package/dist/src/execute/modelconfig.js +56 -0
  19. package/dist/src/execute/responses.d.ts +55 -0
  20. package/dist/src/execute/responses.js +594 -0
  21. package/dist/src/execute/shared.d.ts +83 -0
  22. package/dist/src/execute/shared.js +188 -0
  23. package/dist/src/index.js +1 -1
  24. package/dist/src/pricing.llm.d.ts +1 -1
  25. package/dist/src/pricing.llm.js +39 -18
  26. package/dist/src/rag/embeddings.js +8 -2
  27. package/dist/src/rag/rag.manager.js +27 -15
  28. package/dist/src/rules/git/git.e2e.helper.js +21 -2
  29. package/dist/src/rules/git/git.health.d.ts +4 -2
  30. package/dist/src/rules/git/git.health.js +58 -16
  31. package/dist/src/rules/git/index.d.ts +1 -1
  32. package/dist/src/rules/git/index.js +3 -2
  33. package/dist/src/rules/git/repo.d.ts +46 -3
  34. package/dist/src/rules/git/repo.js +264 -23
  35. package/dist/src/rules/git/repo.pr.js +117 -13
  36. package/dist/src/rules/types.d.ts +11 -0
  37. package/dist/src/rules/utils.matter.js +16 -7
  38. package/dist/src/scrapper.js +1 -0
  39. package/dist/src/stategraph/stategraph.d.ts +26 -1
  40. package/dist/src/stategraph/stategraph.js +43 -2
  41. package/dist/src/stategraph/stategraph.storage.js +4 -0
  42. package/dist/src/stategraph/types.d.ts +5 -0
  43. package/dist/src/types.d.ts +42 -7
  44. package/dist/src/types.js +8 -7
  45. package/dist/src/usecase.js +1 -1
  46. package/dist/src/utils.js +28 -4
  47. package/package.json +9 -7
  48. package/dist/src/execute.d.ts +0 -63
@@ -0,0 +1,75 @@
1
+ import { AgentStateGraph } from '../stategraph';
2
+ import { AgentConfig, AgenticContext, ExecutionAction } from '../types';
3
+ /**
4
+ * OPTIM: Accumule l'usage des tokens et met à jour stateGraph + discussion.usage
5
+ *
6
+ * Centralise la logique d'accumulation des tokens qui était dupliquée
7
+ * à plusieurs endroits dans le code original
8
+ *
9
+ * @param stateGraph - Instance du StateGraph
10
+ * @param discussion - Discussion courante
11
+ * @param agentName - Nom de l'agent (discussionRootAgent)
12
+ * @param model - Nom du modèle (pour calcul du coût)
13
+ * @param usage - Usage retourné par l'API (prompt_tokens, completion_tokens, total_tokens)
14
+ */
15
+ export declare function accumulateUsageTokens(stateGraph: AgentStateGraph, discussion: any, agentName: string, model: string, usage: any): void;
16
+ /**
17
+ * OPTIM: Convertit les steps du stateGraph en actions ExecutionResult
18
+ *
19
+ * Centralise la logique de conversion qui était dupliquée
20
+ * à plusieurs endroits dans le code original
21
+ *
22
+ * TODO/FIXME [Phase 3 - Normalisation]: Normaliser l'interface ExecutionAction
23
+ * Actuellement on fait un mapping manuel (tool→action, context→content, reason→feedback)
24
+ * À terme, utiliser directement le type StepTrail (tool, context, reason) partout
25
+ * au lieu d'ExecutionAction (action, content, feedback).
26
+ * Cela simplifiera le code et évitera les conversions répétées.
27
+ *
28
+ * @param stateGraph - Instance du StateGraph
29
+ * @param agentName - Nom de l'agent (discussionRootAgent)
30
+ * @returns Array d'actions pour ExecutionResult
31
+ */
32
+ export declare function stepsToActions(stateGraph: AgentStateGraph, agentName: string): ExecutionAction[];
33
+ /**
34
+ * OPTIM: Traite tous les tool calls en batch et retourne les résultats
35
+ *
36
+ * Exploite parallel_tool_calls pour optimiser les follow-ups :
37
+ * - Parse tous les arguments JSON une seule fois
38
+ * - Traite tous les tool calls
39
+ * - Accumule les messages pour un seul follow-up stream
40
+ *
41
+ * Au lieu de :
42
+ * for (toolCall) {
43
+ * handleTransferCall(toolCall)
44
+ * followUpStream() // ← Un stream par tool call (séquentiel)
45
+ * }
46
+ *
47
+ * On fait :
48
+ * batchProcessToolCalls(allToolCalls)
49
+ * followUpStream() // ← Un seul stream pour tous les résultats (batch)
50
+ *
51
+ * ✅ NEW: Support de submitToolOutputs (Responses API)
52
+ * Si responseId et openai sont fournis, utilise submitToolOutputs pour
53
+ * soumettre les résultats directement à l'API au lieu de les accumuler
54
+ * dans le stateGraph. Sinon, utilise l'approche classique (fallback).
55
+ *
56
+ * @param toolCalls - Array de tool calls retournés par l'API
57
+ * @param agents - Liste de tous les agents
58
+ * @param stateGraph - Instance du StateGraph
59
+ * @param agentName - Nom de l'agent (discussionRootAgent)
60
+ * @param context - Context (AgenticContext, doit contenir discussionRootAgent, currentAgent et stateGraph)
61
+ * @param responseId - (Optional) Response ID pour submitToolOutputs (Responses API)
62
+ * @param verbose - (Optional) Mode verbose pour logs
63
+ * @returns Résultats de tous les tool calls + flag needsFollowUp + parsedCalls (avec args parsés)
64
+ */
65
+ export declare function batchProcessToolCalls(toolCalls: any[], agents: AgentConfig[], stateGraph: AgentStateGraph, agentName: string, context: AgenticContext, responseId?: string, verbose?: boolean): Promise<{
66
+ results: any[];
67
+ needsFollowUp: boolean;
68
+ parsedCalls: any[];
69
+ transferAgentName: string;
70
+ hasTransfer: boolean;
71
+ toolOutputs: Array<{
72
+ call_id: string;
73
+ output: string;
74
+ }>;
75
+ }>;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accumulateUsageTokens = accumulateUsageTokens;
4
+ exports.stepsToActions = stepsToActions;
5
+ exports.batchProcessToolCalls = batchProcessToolCalls;
6
+ const pricing_llm_1 = require("../pricing.llm");
7
+ const utils_1 = require("../utils");
8
+ /**
9
+ * OPTIM: Accumule l'usage des tokens et met à jour stateGraph + discussion.usage
10
+ *
11
+ * Centralise la logique d'accumulation des tokens qui était dupliquée
12
+ * à plusieurs endroits dans le code original
13
+ *
14
+ * @param stateGraph - Instance du StateGraph
15
+ * @param discussion - Discussion courante
16
+ * @param agentName - Nom de l'agent (discussionRootAgent)
17
+ * @param model - Nom du modèle (pour calcul du coût)
18
+ * @param usage - Usage retourné par l'API (prompt_tokens, completion_tokens, total_tokens)
19
+ */
20
+ function accumulateUsageTokens(stateGraph, discussion, agentName, model, usage) {
21
+ (0, pricing_llm_1.accumulateCost)(discussion.usage, model, usage);
22
+ stateGraph.updateTokens(agentName, {
23
+ prompt: usage?.prompt_tokens || 0,
24
+ completion: usage?.completion_tokens || 0,
25
+ total: usage?.total_tokens || 0,
26
+ cost: 0 // Already accumulated in discussion.usage
27
+ });
28
+ }
29
+ /**
30
+ * OPTIM: Convertit les steps du stateGraph en actions ExecutionResult
31
+ *
32
+ * Centralise la logique de conversion qui était dupliquée
33
+ * à plusieurs endroits dans le code original
34
+ *
35
+ * TODO/FIXME [Phase 3 - Normalisation]: Normaliser l'interface ExecutionAction
36
+ * Actuellement on fait un mapping manuel (tool→action, context→content, reason→feedback)
37
+ * À terme, utiliser directement le type StepTrail (tool, context, reason) partout
38
+ * au lieu d'ExecutionAction (action, content, feedback).
39
+ * Cela simplifiera le code et évitera les conversions répétées.
40
+ *
41
+ * @param stateGraph - Instance du StateGraph
42
+ * @param agentName - Nom de l'agent (discussionRootAgent)
43
+ * @returns Array d'actions pour ExecutionResult
44
+ */
45
+ function stepsToActions(stateGraph, agentName) {
46
+ return stateGraph.steps(agentName).map(step => ({
47
+ action: step.tool,
48
+ content: step.context,
49
+ feedback: step.reason
50
+ }));
51
+ }
52
+ /**
53
+ * OPTIM: Traite tous les tool calls en batch et retourne les résultats
54
+ *
55
+ * Exploite parallel_tool_calls pour optimiser les follow-ups :
56
+ * - Parse tous les arguments JSON une seule fois
57
+ * - Traite tous les tool calls
58
+ * - Accumule les messages pour un seul follow-up stream
59
+ *
60
+ * Au lieu de :
61
+ * for (toolCall) {
62
+ * handleTransferCall(toolCall)
63
+ * followUpStream() // ← Un stream par tool call (séquentiel)
64
+ * }
65
+ *
66
+ * On fait :
67
+ * batchProcessToolCalls(allToolCalls)
68
+ * followUpStream() // ← Un seul stream pour tous les résultats (batch)
69
+ *
70
+ * ✅ NEW: Support de submitToolOutputs (Responses API)
71
+ * Si responseId et openai sont fournis, utilise submitToolOutputs pour
72
+ * soumettre les résultats directement à l'API au lieu de les accumuler
73
+ * dans le stateGraph. Sinon, utilise l'approche classique (fallback).
74
+ *
75
+ * @param toolCalls - Array de tool calls retournés par l'API
76
+ * @param agents - Liste de tous les agents
77
+ * @param stateGraph - Instance du StateGraph
78
+ * @param agentName - Nom de l'agent (discussionRootAgent)
79
+ * @param context - Context (AgenticContext, doit contenir discussionRootAgent, currentAgent et stateGraph)
80
+ * @param responseId - (Optional) Response ID pour submitToolOutputs (Responses API)
81
+ * @param verbose - (Optional) Mode verbose pour logs
82
+ * @returns Résultats de tous les tool calls + flag needsFollowUp + parsedCalls (avec args parsés)
83
+ */
84
+ async function batchProcessToolCalls(toolCalls, agents, stateGraph, agentName, context, responseId, verbose) {
85
+ const results = [];
86
+ let needsFollowUp = false;
87
+ let transferAgentName = '';
88
+ let hasTransfer = false; // ✅ Flag pour détecter les transfers
89
+ //
90
+ // ✅ Récupérer discussion depuis stateGraph
91
+ const discussion = stateGraph.createOrRestore(agentName);
92
+ //
93
+ // ✅ Créer currentAgentRef depuis agentName (référence mutable pour handleTransferCall)
94
+ const currentAgentRef = { name: agentName };
95
+ //
96
+ // OPTIM: Parse tous les args une seule fois
97
+ const parsedCalls = toolCalls.map(tc => ({
98
+ ...tc,
99
+ args: JSON.parse(tc?.function?.arguments || '{}')
100
+ }));
101
+ //
102
+ // ✅ Préparer les tool_outputs pour submitToolOutputs
103
+ const toolOutputs = [];
104
+ //
105
+ // Traiter tous les tool calls
106
+ for (const toolCall of parsedCalls) {
107
+ const result = await (0, utils_1.handleTransferCall)(discussion, currentAgentRef, agents, toolCall, context);
108
+ results.push(result);
109
+ // ✅ Détecter les transfers
110
+ if (result.did_transfer && result.destination_agent) {
111
+ hasTransfer = true;
112
+ transferAgentName = result.destination_agent;
113
+ }
114
+ //
115
+ // Accumuler les messages pour le follow-up
116
+ // ✅ IMPORTANT: Toujours ajouter l'output même si content est undefined
117
+ // Car un ToolContractOutput peut ne pas avoir de content mais avoir rawResult
118
+ if (result.content || result.did_transfer || result.rawResult) {
119
+ needsFollowUp = true;
120
+ // ✅ Préparer les outputs pour function_call_output
121
+ // Si content existe, l'utiliser (texte formaté)
122
+ // Sinon, sérialiser rawResult si présent (ToolContractOutput), sinon result complet
123
+ toolOutputs.push({
124
+ call_id: toolCall.id,
125
+ // ⚠️ ATTENTION: rawResult contient le résultat brut du tool (ToolContractOutput)
126
+ // Si content est undefined, on sérialise rawResult pour préserver la structure JSON complète
127
+ // Sinon, on utilise result complet comme fallback
128
+ output: result.content || JSON.stringify(result.rawResult || result)
129
+ });
130
+ }
131
+ //
132
+ // ✅ Les steps sont ajoutés APRÈS le follow-up dans readCompletionsStream
133
+ // pour éviter que le LLM pense que l'outil a déjà été exécuté
134
+ }
135
+ // ✅ NOTE: On ne gère PAS submitToolOutputs ici
136
+ // C'est readCompletionsStream qui décide selon hasTransfer
137
+ // On retourne juste les données nécessaires
138
+ return { results, needsFollowUp, parsedCalls, transferAgentName, hasTransfer, toolOutputs };
139
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @fileoverview Point d'entrée du module execute avec feature toggle
3
+ *
4
+ * Feature toggle : basculer entre Chat Completions (legacy) et Responses API
5
+ * Contrôlé par la variable d'environnement USE_RESPONSES_API
6
+ */
7
+ export declare const USE_RESPONSES_API: boolean;
8
+ export * from './shared';
9
+ export * from './helpers';
10
+ export * from './modelconfig';
11
+ export * from './responses';
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Point d'entrée du module execute avec feature toggle
4
+ *
5
+ * Feature toggle : basculer entre Chat Completions (legacy) et Responses API
6
+ * Contrôlé par la variable d'environnement USE_RESPONSES_API
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.USE_RESPONSES_API = void 0;
24
+ //
25
+ // Feature toggle: basculer entre legacy et responses
26
+ // Par défaut : Responses API (meilleur support reasoning models)
27
+ // Pour revenir à legacy : USE_RESPONSES_API=false
28
+ exports.USE_RESPONSES_API = process.env.USE_RESPONSES_API !== 'false';
29
+ //
30
+ // Exports des utilitaires partagés
31
+ __exportStar(require("./shared"), exports);
32
+ __exportStar(require("./helpers"), exports);
33
+ __exportStar(require("./modelconfig"), exports);
34
+ //
35
+ // Exports conditionnels selon le feature flag
36
+ // Par défaut : responses.ts (Responses API)
37
+ // Si USE_RESPONSES_API=false → legacy.ts (Chat Completions)
38
+ // const implementation = USE_RESPONSES_API
39
+ // ? require('./responses')
40
+ // : require('./legacy');
41
+ __exportStar(require("./responses"), exports);
42
+ // export const executeQuery = implementation.executeQuery;
43
+ // export const executeAgent = implementation.executeAgent;
44
+ // export const executeAgentSet = implementation.executeAgentSet;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Legacy Implementation - Chat Completions API (beta.chat.completions)
3
+ *
4
+ * ⚠️ Cette implémentation utilise openai.beta.chat.completions.stream (ancienne API)
5
+ * Pour les nouveaux projets, Responses API (responses.ts) est recommandée.
6
+ *
7
+ * Code optimisé depuis execute.ts original avec les améliorations suivantes:
8
+ * - OPTIM: Helpers centralisés (accumulateUsageTokens, stepsToActions)
9
+ * - BUG FIX: executionResultMerge fusionne actions correctement (corrigé dans types.ts)
10
+ * - BUG FIX: moreThinkin supprimé (obsolète, reasoning_effort fait le job)
11
+ * - BUG FIX: Suppression de la boucle do...while(moreThinkin)
12
+ * - BUG FIX: Suppression de la ligne reasoning_effort dupliquée (ligne 425 originale)
13
+ *
14
+ * TODO [Optimisation future]: Remplacer la boucle for séquentielle par batchProcessToolCalls
15
+ * pour exploiter pleinement parallel_tool_calls et réduire la latence
16
+ */
17
+ import { AgentConfig, AgenticContext, ExecuteAgentResult, ExecutionResult } from "../types";
18
+ import { ReadCompletionsStreamOptions, ExecuteAgentSetParams } from "./shared";
19
+ export declare function readCompletionsStream(params: ReadCompletionsStreamOptions): Promise<ExecutionResult>;
20
+ /**
21
+ * Parameters for executing an agent set
22
+ */
23
+ export interface ExecuteAgentSetParamsLegacy {
24
+ enrichWithMemory?: (role: string, agent: AgentConfig, context: AgenticContext) => Promise<string>;
25
+ query: string;
26
+ home?: string;
27
+ thinking?: boolean;
28
+ model?: string;
29
+ stdout: any;
30
+ messages?: any[];
31
+ verbose?: boolean;
32
+ json?: boolean;
33
+ schema?: any;
34
+ debug?: boolean;
35
+ }
36
+ /**
37
+ * Executes a set of agents to process a user query
38
+ *
39
+ * OPTIMIZED: Sans boucle do...while(moreThinkin), reasoning_effort fait le job
40
+ */
41
+ export declare function executeAgentSet(agentSet: AgentConfig[], context: AgenticContext, params: ExecuteAgentSetParams): Promise<ExecutionResult>;
42
+ export declare function executeAgent(agentSet: AgentConfig[], params: ExecuteAgentSetParams): Promise<ExecuteAgentResult>;
43
+ /**
44
+ * Executes a simple query without agent orchestration or tool handling
45
+ */
46
+ export declare function executeQuery(params: ExecuteAgentSetParams): Promise<ExecuteAgentResult>;