Spaces:
Running
Running
Update core/commands.mjs
Browse files- core/commands.mjs +3 -3
core/commands.mjs
CHANGED
|
@@ -48,7 +48,7 @@ export const APCommands = {
|
|
| 48 |
async ask(text,quiet=false,agent){
|
| 49 |
const who=['ALPHA','BETA','GAMMA'].includes(String(agent||'').toUpperCase())?String(agent).toUpperCase():'ALPHA';
|
| 50 |
const st=who.toLowerCase();
|
| 51 |
-
if(AP.busy||!AP.db)return;AP.busy=true;if(!quiet){AP.tab('chat');AP.append(text,'user');}AP.setAgentState(st,'Analizando',true);AP.note('Analizando con '+who+'...');
|
| 52 |
try{
|
| 53 |
const tools=[{type:'function',function:{name:'proponer_reposicion',description:'Crear una propuesta local de reposici贸n. La revisi贸n de cumplimiento actual la deja pendiente incluso en Aut贸nomo; no compra ni cambia stock.',parameters:{type:'object',properties:{sku:{type:'string'},reason:{type:'string'}},required:['sku','reason']}}}];
|
| 54 |
const ctx=AP.context(who);const req=String(text);
|
|
@@ -57,8 +57,8 @@ export const APCommands = {
|
|
| 57 |
const messages=[{role:'system',content:APCorePrompts[who]},{role:'user',content:'Modo actual: '+AP.mode+'. Datos vigentes: '+JSON.stringify(ctx)+'\nSolicitud: '+text}];
|
| 58 |
let m=await AP.modelCall(messages,who==='ALPHA'?tools:undefined);
|
| 59 |
if(who==='ALPHA'&&m.tool_calls?.length){messages.push(m);for(const c of m.tool_calls.slice(0,2)){let result;try{if(c.function.name!=='proponer_reposicion')throw Error('Herramienta no admitida');result=await AP.command({cmd:'propuesta_crear',payload:JSON.parse(c.function.arguments),actor:who});}catch(e){result='Error: '+e.message;}messages.push({role:'tool',tool_call_id:c.id,content:result});}m=await AP.modelCall(messages);}
|
| 60 |
-
if(!quiet)AP.append(m.content||'No hubo respuesta del agente.','ai');AP.audit(who,'analisis_completado','agent',who,{model:AP.activeModel||AP.model});await AP.persist();AP.render();AP.setAgentState(st,'Disponible',false);AP.note('An谩lisis finalizado 路 '+AP.query("SELECT count(*) AS n FROM approval_queue WHERE status='pendiente'")[0].n+' pendientes');
|
| 61 |
-
}catch(e){if(!quiet)AP.append('No se pudo contactar al agente. Tus datos y propuestas locales siguen disponibles.','ai');AP.setAgentState(st,'Sin respuesta',false);AP.note('Agente no disponible: '+e.message,true);}finally{AP.busy=false;}
|
| 62 |
},
|
| 63 |
async cycle(){
|
| 64 |
if(!AP.db||AP.cycleBusy||AP.busy||document.hidden||!AP.agentsOn)return;
|
|
|
|
| 48 |
async ask(text,quiet=false,agent){
|
| 49 |
const who=['ALPHA','BETA','GAMMA'].includes(String(agent||'').toUpperCase())?String(agent).toUpperCase():'ALPHA';
|
| 50 |
const st=who.toLowerCase();
|
| 51 |
+
if(AP.busy||!AP.db)return;AP.busy=true;if(!quiet){AP.tab('chat');AP.append(text,'user');AP.audit('USUARIO','pregunta_chat','chat',who,{text:String(text).slice(0,500)});}AP.setAgentState(st,'Analizando',true);AP.note('Analizando con '+who+'...');
|
| 52 |
try{
|
| 53 |
const tools=[{type:'function',function:{name:'proponer_reposicion',description:'Crear una propuesta local de reposici贸n. La revisi贸n de cumplimiento actual la deja pendiente incluso en Aut贸nomo; no compra ni cambia stock.',parameters:{type:'object',properties:{sku:{type:'string'},reason:{type:'string'}},required:['sku','reason']}}}];
|
| 54 |
const ctx=AP.context(who);const req=String(text);
|
|
|
|
| 57 |
const messages=[{role:'system',content:APCorePrompts[who]},{role:'user',content:'Modo actual: '+AP.mode+'. Datos vigentes: '+JSON.stringify(ctx)+'\nSolicitud: '+text}];
|
| 58 |
let m=await AP.modelCall(messages,who==='ALPHA'?tools:undefined);
|
| 59 |
if(who==='ALPHA'&&m.tool_calls?.length){messages.push(m);for(const c of m.tool_calls.slice(0,2)){let result;try{if(c.function.name!=='proponer_reposicion')throw Error('Herramienta no admitida');result=await AP.command({cmd:'propuesta_crear',payload:JSON.parse(c.function.arguments),actor:who});}catch(e){result='Error: '+e.message;}messages.push({role:'tool',tool_call_id:c.id,content:result});}m=await AP.modelCall(messages);}
|
| 60 |
+
if(!quiet)AP.append(m.content||'No hubo respuesta del agente.','ai');AP.audit(who,'analisis_completado','agent',who,{model:AP.activeModel||AP.model});if(!quiet)AP.audit(who,'respuesta_modelo','chat',who,{text:String(m.content||'').slice(0,500)});await AP.persist();AP.render();AP.setAgentState(st,'Disponible',false);AP.note('An谩lisis finalizado 路 '+AP.query("SELECT count(*) AS n FROM approval_queue WHERE status='pendiente'")[0].n+' pendientes');
|
| 61 |
+
}catch(e){if(!quiet)AP.append('No se pudo contactar al agente. Tus datos y propuestas locales siguen disponibles.','ai');if(!quiet)AP.audit(who,'chat_sin_respuesta','chat',who,{error:String(e&&e.message||e).slice(0,200)});AP.setAgentState(st,'Sin respuesta',false);AP.note('Agente no disponible: '+e.message,true);}finally{AP.busy=false;}
|
| 62 |
},
|
| 63 |
async cycle(){
|
| 64 |
if(!AP.db||AP.cycleBusy||AP.busy||document.hidden||!AP.agentsOn)return;
|