analyzthis_design 2.0.0 → 2.0.1
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/HOW-TO-USE.md +436 -0
- package/README.md +20 -9
- package/dist/HOW-TO-USE.md +15 -3
- package/dist/README.md +20 -9
- package/dist/lib/chunk-executor.js +1 -1
- package/dist/lib/chunk-planner.js +1 -1
- package/dist/lib/chunk-run.js +1 -1
- package/dist/lib/evolve.js +1 -1
- package/dist/lib/orchestrator/run.js +1 -1
- package/dist/lib/reference-pack.js +1 -0
- package/dist/skills/design-reference/google-fonts.csv +1924 -1924
- package/dist/skills/design-reference/products.csv +162 -162
- package/dist/skills/design-reference/schema.json +159 -0
- package/dist/skills/design-reference/stacks/angular.csv +1 -1
- package/dist/skills/design-reference/stacks/astro.csv +1 -1
- package/dist/skills/design-reference/stacks/laravel.csv +2 -2
- package/dist/skills/design-reference/stacks/threejs.csv +54 -54
- package/dist/skills/design-reference/styles.csv +85 -85
- package/dist/skills/design-reference/typography.csv +75 -74
- package/dist/skills/design-reference/ui-reasoning.csv +1 -1
- package/package.json +6 -3
- package/scripts/validate-csvs.js +197 -0
- package/skills/design-reference/google-fonts.csv +1924 -1924
- package/skills/design-reference/products.csv +162 -162
- package/skills/design-reference/schema.json +159 -0
- package/skills/design-reference/stacks/angular.csv +1 -1
- package/skills/design-reference/stacks/astro.csv +1 -1
- package/skills/design-reference/stacks/laravel.csv +2 -2
- package/skills/design-reference/stacks/threejs.csv +54 -54
- package/skills/design-reference/styles.csv +85 -85
- package/skills/design-reference/typography.csv +75 -74
- package/skills/design-reference/ui-reasoning.csv +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var chunkModels=require('./chunk-models'),chunkRouter=require('./chunk-router'),telemetry=require('./chunk-telemetry');function buildChunkPrompt(a,b,c){var d='',e=a['depends_on']||[];if(e['length']){var f=[];for(var g=0x0;g<e['length'];g++){var h=e[g],k=null;for(var l=0x0;l<b['length'];l++){if(b[l]['chunk_id']===h){k=b[l];break;}}k&&f['push']('---\x20Output\x20from\x20chunk\x20\x22'+h+'\x22\x20---\x0a'+k['output']['slice'](0x0,0x5dc));}d=f['join']('\x0a\x0a');}var m=[a['user_prompt']||a['goal']];return d&&m['push']('','Prior\x20chunk\x20outputs\x20you\x20must\x20use:',d),c&&m['push']('','Original\x20task\x20context:',JSON['stringify'](c,null,0x2)['slice'](0x0,0x7d0)),{'system':a['system_prompt']||'You\x20are\x20the\x20'+a['persona']+'\x20persona.\x20'+a['goal'],'user':m['join']('\x0a')};}function parseStructured(a,b){var c={'grades':{},'score':null,'top_fixes':[],'verdict':null,'raw':a},d=a['match'](/(\d+(?:\.\d+)?)\s*\/\s*5/);if(d)c['score']=Number(d[0x1]);var e=a['match'](/(\w+)\[([A-F])\]/gi);if(e)for(var f=0x0;f<e['length'];f++){var h=e[f]['match'](/(\w+)\[([A-F])\]/i);if(h)c['grades'][h[0x1]['toLowerCase']()]=h[0x2]['toUpperCase']();}var i=a['match'](/Top\s*2\s*fixes:\s*1\.\s*([^\n]+)\s*2\.\s*([^\n]+)/i);i&&(c['top_fixes']=[i[0x1]['trim'](),i[0x2]['trim']()]);var j=a['match'](/verdict[\s:]*(SHIP|REVISE|BLOCK)/i);if(j)c['verdict']=j[0x1]['toUpperCase']();return c;}async function executeChunk(a){a=a||{};var b=a['chunk'],c=a['priorResults']||[],d=a['contextPack'],f=a['config']||chunkModels['loadConfig'](),
|
|
1
|
+
'use strict';var chunkModels=require('./chunk-models'),chunkRouter=require('./chunk-router'),telemetry=require('./chunk-telemetry'),referencePack=require('./reference-pack');function buildChunkPrompt(a,b,c){var d='',e=a['depends_on']||[];if(e['length']){var f=[];for(var g=0x0;g<e['length'];g++){var h=e[g],k=null;for(var l=0x0;l<b['length'];l++){if(b[l]['chunk_id']===h){k=b[l];break;}}k&&f['push']('---\x20Output\x20from\x20chunk\x20\x22'+h+'\x22\x20---\x0a'+k['output']['slice'](0x0,0x5dc));}d=f['join']('\x0a\x0a');}var m=[a['user_prompt']||a['goal']];return d&&m['push']('','Prior\x20chunk\x20outputs\x20you\x20must\x20use:',d),c&&m['push']('','Original\x20task\x20context:',JSON['stringify'](c,null,0x2)['slice'](0x0,0x7d0)),{'system':a['system_prompt']||'You\x20are\x20the\x20'+a['persona']+'\x20persona.\x20'+a['goal'],'user':m['join']('\x0a')};}function parseStructured(a,b){var c={'grades':{},'score':null,'top_fixes':[],'verdict':null,'raw':a},d=a['match'](/(\d+(?:\.\d+)?)\s*\/\s*5/);if(d)c['score']=Number(d[0x1]);var e=a['match'](/(\w+)\[([A-F])\]/gi);if(e)for(var f=0x0;f<e['length'];f++){var h=e[f]['match'](/(\w+)\[([A-F])\]/i);if(h)c['grades'][h[0x1]['toLowerCase']()]=h[0x2]['toUpperCase']();}var i=a['match'](/Top\s*2\s*fixes:\s*1\.\s*([^\n]+)\s*2\.\s*([^\n]+)/i);i&&(c['top_fixes']=[i[0x1]['trim'](),i[0x2]['trim']()]);var j=a['match'](/verdict[\s:]*(SHIP|REVISE|BLOCK)/i);if(j)c['verdict']=j[0x1]['toUpperCase']();return c;}async function executeChunk(a){a=a||{};var b=a['chunk'],c=a['priorResults']||[],d=a['contextPack'],f=a['state'],g=d&&d['task']||a['task']||'',h=a['config']||chunkModels['loadConfig'](),i=a['budget']||'auto',j=a['callLlmFn'],k=0x0,l=a['maxAttempts']||0x3;if(!j){var m=require('./orchestrator/run');j=m['callLlm'];}var n=null,o=![];if(f&&g&&b['persona'])try{n=await referencePack['buildReferencePack'](b['persona'],g,f,j);if(n&&n['cacheHit'])o=!![];}catch(z){}var p;try{var q=await chunkRouter['resolveChunkModel']({'effort':b['effort']||'standard','chunkType':b['id']+'/'+b['persona'],'persona':b['persona'],'budget':i,'config':h});p=q['ranked'];}catch(A){return{'chunk_id':b['id'],'success':![],'error':A['message'],'attempts':0x0,'output':''};}var r=null,s=0x0;while(s<p['length']&&k<l){var t=p[s];k++;var u=buildChunkPrompt(b,c,d);n&&n['citations']&&n['citations']['length']&&(u['user']+='\x0a\x0aRelevant\x20references\x20(cite\x20these\x20in\x20your\x20output):\x0a'+n['citations']['join']('\x0a'));var v=Date['now']();try{var w=await j({'provider':t['provider'],'model':t['model'],'system':u['system'],'user':u['user'],'maxTokens':t['context']>0x3e80?0x9c4:0x4b0,'personaId':b['persona']}),x=Math['ceil']((u['system']['length']+u['user']['length'])/0x4),y=Math['ceil'](w['length']/0x4);return telemetry['record']({'chunk_id':b['id'],'persona':b['persona'],'model':chunkModels['formatModelName'](t),'provider':t['provider'],'effort':b['effort']||'standard','input_tokens':x,'output_tokens':y,'cost':chunkModels['estimateCost'](t,x,y),'success':!![],'attempts':k,'at':new Date()['toISOString']()}),{'chunk_id':b['id'],'persona':b['persona'],'goal':b['goal'],'model_used':{'provider':t['provider'],'model':t['model'],'cost':t['cost']},'output':w,'structured_output':parseStructured(w,b['output_schema']),'tokens':{'input':x,'output':y},'cost':chunkModels['estimateCost'](t,x,y),'latency_ms':Date['now']()-v,'attempts':k,'cache_hit':o,'references':n&&n['citations']||[],'success':!![]};}catch(B){r=B['message'],telemetry['record']({'chunk_id':b['id'],'persona':b['persona'],'model':chunkModels['formatModelName'](t),'provider':t['provider'],'effort':b['effort']||'standard','success':![],'error':B['message'],'attempts':k,'at':new Date()['toISOString']()}),s++;}}return{'chunk_id':b['id'],'persona':b['persona'],'goal':b['goal'],'success':![],'error':r||'All\x20chunk\x20models\x20failed','attempts':k,'output':''};}module['exports']={'executeChunk':executeChunk,'buildChunkPrompt':buildChunkPrompt,'parseStructured':parseStructured};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var fs=require('fs'),path=require('path'),os=require('os'),session=require('./session'),knowledge=require('./knowledge'),chunkModels=require('./chunk-models'),{resolvePackageRoot}=require('./platforms'),PACKAGE_ROOT=resolvePackageRoot(__dirname),AGENTS_DIR=path['join'](PACKAGE_ROOT,'agents');function loadJson(a){if(!fs['existsSync'](a))return null;try{return JSON['parse'](fs['readFileSync'](a,'utf8'));}catch(b){return null;}}var CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch(a){return{};}}function loadManifest(a){return loadJson(path['join'](AGENTS_DIR,'manifests',a+'.json'));}function loadSkillOrCard(a){var b=loadManifest(a);if(!b)return'';var c=path['join'](PACKAGE_ROOT,b['system_card']||'');if(c&&fs['existsSync'](c))return fs['readFileSync'](c,'utf8');var d=path['join'](PACKAGE_ROOT,b['system_skill']||'');if(d&&fs['existsSync'](d))return fs['readFileSync'](d,'utf8')['slice'](0x0,0x1770);return'';}function buildContextPack(a,b,c){var d=(a['task_map']||[])['slice'](0x0,0x8),f=[];try{f=knowledge['getPersonaSliceForPrompt'](a,'arjun');}catch(g){}return{'task':b,'figma':c||a['figma_node']&&a['figma_node']['url']||'','task_map':d,'hierarchy_top3':a['digest']&&a['digest']['hierarchy_top3']||[],'ds_at_risk':a['digest']&&a['digest']['ds_at_risk']||[],'knowledge_bank_excerpt':f['slice'](0x0,0x3)['map'](function(
|
|
1
|
+
'use strict';var fs=require('fs'),path=require('path'),os=require('os'),session=require('./session'),knowledge=require('./knowledge'),chunkModels=require('./chunk-models'),{resolvePackageRoot}=require('./platforms'),PACKAGE_ROOT=resolvePackageRoot(__dirname),AGENTS_DIR=path['join'](PACKAGE_ROOT,'agents');function loadJson(a){if(!fs['existsSync'](a))return null;try{return JSON['parse'](fs['readFileSync'](a,'utf8'));}catch(b){return null;}}var CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch(a){return{};}}function loadManifest(a){return loadJson(path['join'](AGENTS_DIR,'manifests',a+'.json'));}function loadSkillOrCard(a){var b=loadManifest(a);if(!b)return'';var c=path['join'](PACKAGE_ROOT,b['system_card']||'');if(c&&fs['existsSync'](c))return fs['readFileSync'](c,'utf8');var d=path['join'](PACKAGE_ROOT,b['system_skill']||'');if(d&&fs['existsSync'](d))return fs['readFileSync'](d,'utf8')['slice'](0x0,0x1770);return'';}function buildContextPack(a,b,c){var d=(a['task_map']||[])['slice'](0x0,0x8),f=[];try{f=knowledge['getPersonaSliceForPrompt'](a,'arjun');}catch(o){}var g=[];try{var h=require('./reference-pack'),j=h['extractKeywords'](b);if(j['length']){var k=Object['keys'](h['REFERENCE_MAP']);for(var l=0x0;l<k['length'];l++){var m=h['getReferenceSpec'](k[l],a);if(!m)continue;try{var n=require('./retrieve')['retrieve']({'file':m['file'],'filters':[{'column':m['column'],'anyOf':j}],'limit':0x3});n['rows']['length']&&g['push'](k[l]+':\x20'+n['rows']['length']+'\x20rows\x20in\x20'+m['file']);}catch(p){}}}}catch(q){}return{'task':b,'figma':c||a['figma_node']&&a['figma_node']['url']||'','task_map':d,'hierarchy_top3':a['digest']&&a['digest']['hierarchy_top3']||[],'ds_at_risk':a['digest']&&a['digest']['ds_at_risk']||[],'knowledge_bank_excerpt':f['slice'](0x0,0x3)['map'](function(r){return r['title']+':\x20'+r['content']['slice'](0x0,0x190);})['join']('\x0a\x0a'),'reference_hints':g,'mode':a['mode']||'assess_only'};}function plannerSystemPrompt(){return['You\x20are\x20the\x20Task\x20Planner\x20for\x20a\x20team\x20of\x20design\x20personas.','Your\x20job\x20is\x20to\x20break\x20a\x20design\x20task\x20into\x20small,\x20sequential,\x20independently\x20executable\x20chunks.','Each\x20chunk\x20targets\x20one\x20persona\x20and\x20has\x20a\x20clear\x20goal,\x20prompts,\x20effort\x20level,\x20and\x20dependencies.','You\x20must\x20output\x20ONLY\x20a\x20JSON\x20object\x20inside\x20a\x20```json\x20code\x20fence.','','Allowed\x20personas:\x20arjun\x20(UX/visual),\x20meera\x20(business),\x20priya\x20(feasibility),\x20zara\x20(delight),\x20noor\x20(minimalist\x20IA),\x20anuj\x20(dense\x20power-user),\x20raj\x20(strategy/arbitration).','','Effort\x20levels:','-\x20trivial:\x20simple\x20extraction\x20or\x20structured\x20scoring','-\x20standard:\x20a\x20full\x20persona\x20output\x20block','-\x20hard:\x20synthesis,\x20arbitration,\x20or\x20ambiguous\x20multi-constraint\x20tasks','','Output\x20schema:','{','\x20\x20\x22plan_id\x22:\x20\x22short-unique-id\x22,','\x20\x20\x22task_summary\x22:\x20\x22one-line\x20summary\x22,','\x20\x20\x22chunks\x22:\x20[','\x20\x20\x20\x20{','\x20\x20\x20\x20\x20\x20\x22id\x22:\x20\x22ia\x22,','\x20\x20\x20\x20\x20\x20\x22persona\x22:\x20\x22noor\x22,','\x20\x20\x20\x20\x20\x20\x22goal\x22:\x20\x22define\x20information\x20hierarchy\x22,','\x20\x20\x20\x20\x20\x20\x22system_prompt\x22:\x20\x22...\x22,','\x20\x20\x20\x20\x20\x20\x22user_prompt\x22:\x20\x22...\x22,','\x20\x20\x20\x20\x20\x20\x22effort\x22:\x20\x22standard\x22,','\x20\x20\x20\x20\x20\x20\x22depends_on\x22:\x20[],','\x20\x20\x20\x20\x20\x20\x22output_schema\x22:\x20\x22hierarchy_list\x22','\x20\x20\x20\x20}','\x20\x20],','\x20\x20\x22synthesis\x22:\x20{','\x20\x20\x20\x20\x22persona\x22:\x20\x22raj\x22,','\x20\x20\x20\x20\x22goal\x22:\x20\x22resolve\x20conflicts\x20and\x20produce\x20final\x20verdict\x22,','\x20\x20\x20\x20\x22system_prompt\x22:\x20\x22...\x22,','\x20\x20\x20\x20\x22user_prompt\x22:\x20\x22...\x22','\x20\x20}','}']['join']('\x0a');}function plannerUserPrompt(a,b,c,d){return['Task:\x20'+a,b?'Figma:\x20'+b:'','','Context\x20pack:',JSON['stringify'](c,null,0x2)['slice'](0x0,0xfa0),'','Design\x20a\x20chunk\x20plan\x20with\x20at\x20most\x20'+d+'\x20chunks.','Prefer\x20sequential\x20dependencies.\x20Use\x20depends_on\x20to\x20declare\x20which\x20chunk\x20outputs\x20are\x20inputs.','Keep\x20each\x20chunk\x20focused\x20on\x20one\x20persona\x20lens.','','The\x20final\x20synthesis\x20chunk\x20should\x20merge\x20all\x20outputs\x20into\x20a\x20verdict\x20(SHIP\x20/\x20REVISE\x20/\x20BLOCK),\x20composite\x20score,\x20and\x20Top\x203\x20actionable\x20changes.']['join']('\x0a');}function parsePlan(a){var b={'plan_id':'','task_summary':'','chunks':[],'synthesis':{'persona':'raj','goal':'','system_prompt':'','user_prompt':''}};if(!a)return{'plan':b,'parse_error':'empty'};var c=a['match'](/```json\s*([\s\S]*?)```/i),d=c?c[0x1]['trim']():a['trim']();try{var f=JSON['parse'](d);if(!f['chunks']||!Array['isArray'](f['chunks']))return{'plan':b,'parse_error':'missing\x20chunks\x20array'};return{'plan':f,'parse_error':null};}catch(g){return{'plan':b,'parse_error':g['message']};}}function topologicalSort(a){var b={};for(var c=0x0;c<a['length'];c++)b[a[c]['id']]=a[c];var d={},e=[];function f(h,l){if(l['indexOf'](h)!==-0x1)throw new Error('Circular\x20dependency\x20in\x20chunk\x20plan:\x20'+h);if(d[h])return;d[h]=!![];var m=b[h];if(!m)throw new Error('Unknown\x20chunk\x20dependency:\x20'+h);var n=m['depends_on']||[];for(var o=0x0;o<n['length'];o++)f(n[o],l['concat']([h]));e['push'](m);}for(var g=0x0;g<a['length'];g++)f(a[g]['id'],[]);return e;}async function createPlan(a){a=a||{};var b=a['task']||'',c=a['figma']||'',d=a['project']||session['getProjectId'](),f=a['config']||loadConfig(),g=a['maxChunks']||f['chunk_models']&&f['chunk_models']['max_chunks']||0x6,h=session['show']({'project':d})||session['init']({'project':d}),i=buildContextPack(h,b,c),j=chunkModels['resolvePlannerModel'](f),k=null;if(j['provider']==='host'){var l=h&&h['host_run']||{};if(a['continueRun']&&l['run_dir']&&fs['existsSync'](l['run_dir']))k={'runId':l['run_id'],'runDir':l['run_dir'],'manifest':require('./host-llm')['loadManifest'](l['run_dir'])};else{k=require('./host-llm')['createRun']({'projectId':d,'task':b});try{session['update']({'project':d,'patch':{'host_run':{'run_id':k['runId'],'run_dir':k['runDir'],'task':b,'status':'in_progress','last_pending':null,'checkpoint':null,'started_at':new Date()['toISOString']()}}});}catch(y){}}}else{if(j['provider']==='ollama'){}}var m=null;if(j['provider']==='host'&&k&&k['manifest']&&a['continueRun']){var n=require('./host-llm'),o=(k['manifest']['completed_steps']||[])['slice']()['reverse']();for(var p=0x0;p<o['length'];p++){if(o[p]['indexOf']('chunk-planner')===-0x1)continue;try{m=n['readResponse'](k['runDir'],o[p]);if(m)break;}catch(z){m=null;}}if(!m){var q=String(k['manifest']['step_counter'])['padStart'](0x3,'0')+'-chunk-planner';try{m=n['readResponse'](k['runDir'],q),m&&!k['manifest']['completed_steps']['includes'](q)&&(k['manifest']['completed_steps']['push'](q),n['saveManifest'](k['runDir'],k['manifest']));}catch(A){m=null;}}}var r=plannerSystemPrompt(),s=plannerUserPrompt(b,c,i,g),t=m||'',u=a['callLlmFn'];if(!u){var v=require('./orchestrator/run');u=v['callLlm'];}if(!t)try{t=await u({'provider':j['provider'],'model':j['model'],'system':r,'user':s,'maxTokens':0x9c4,'personaId':'chunk-planner','hostContext':j['provider']==='host'?k:undefined});}catch(B){if(B&&B['name']==='HostLlmPendingError')return{'plan':null,'planner_model':j,'context_pack':i,'planner_warning':j['fallback_warning']?'No\x20frontier\x20API\x20key\x20found.\x20Planner\x20fell\x20back\x20to\x20host/Devi;\x20chunk\x20quality\x20depends\x20on\x20the\x20host\x20model.':null,'host_pending':{'run_dir':B['runDir'],'step_id':B['stepId'],'message':'The\x20chunk\x20planner\x20prompt\x20has\x20been\x20written\x20to\x20the\x20host\x20queue.\x20Respond\x20via\x20/devi,\x20then\x20rerun\x20with\x20--continue.'},'planner_model':j,'planner_warning':j['fallback_warning']?'No\x20frontier\x20API\x20key\x20found.\x20Planner\x20fell\x20back\x20to\x20host/Devi;\x20chunk\x20quality\x20depends\x20on\x20the\x20host\x20model.':null};throw new Error('Planner\x20failed:\x20'+(B&&B['message']?B['message']:String(B)));}var w=parsePlan(t);if(w['parse_error'])throw new Error('Planner\x20produced\x20invalid\x20JSON:\x20'+w['parse_error']);var x=w['plan'];return x['chunks']=topologicalSort(x['chunks']),{'plan':x,'planner_model':j,'context_pack':i,'planner_warning':j['fallback_warning']?'No\x20frontier\x20API\x20key\x20found.\x20Planner\x20fell\x20back\x20to\x20host/Devi;\x20chunk\x20quality\x20depends\x20on\x20the\x20host\x20model.':null};}module['exports']={'createPlan':createPlan,'parsePlan':parsePlan,'topologicalSort':topologicalSort,'plannerSystemPrompt':plannerSystemPrompt,'plannerUserPrompt':plannerUserPrompt};
|
package/dist/lib/chunk-run.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var fs=require('fs'),os=require('os'),path=require('path'),session=require('./session'),planner=require('./chunk-planner'),executor=require('./chunk-executor'),synthesis=require('./chunk-synthesis'),chunkModels=require('./chunk-models'),CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch(a){return{};}}async function runChunked(a){a=a||{};var b=a['task']||'',c=a['figma']||'',d=a['project']||session['getProjectId'](),f=a['config']||loadConfig(),g=a['budget']||f['chunk_models']&&f['chunk_models']['budget']||'auto',h=a['sequential']!==![],j=a['maxChunks']||f['chunk_models']&&f['chunk_models']['max_chunks']||0x6,k=!!a['dryRun'],l=a['callLlmFn'];if(!b)throw new Error('--task\x20is\x20required');var m=session['show']({'project':d})||session['init']({'project':d}),n;try{n=await planner['createPlan']({'task':b,'figma':c,'project':d,'config':f,'maxChunks':j,'callLlmFn':l,'continueRun':!!a['continueRun']});}catch(
|
|
1
|
+
'use strict';var fs=require('fs'),os=require('os'),path=require('path'),session=require('./session'),planner=require('./chunk-planner'),executor=require('./chunk-executor'),synthesis=require('./chunk-synthesis'),chunkModels=require('./chunk-models'),CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch(a){return{};}}async function runChunked(a){a=a||{};var b=a['task']||'',c=a['figma']||'',d=a['project']||session['getProjectId'](),f=a['config']||loadConfig(),g=a['budget']||f['chunk_models']&&f['chunk_models']['budget']||'auto',h=a['sequential']!==![],j=a['maxChunks']||f['chunk_models']&&f['chunk_models']['max_chunks']||0x6,k=!!a['dryRun'],l=a['callLlmFn'];if(!b)throw new Error('--task\x20is\x20required');var m=session['show']({'project':d})||session['init']({'project':d}),n;try{n=await planner['createPlan']({'task':b,'figma':c,'project':d,'config':f,'maxChunks':j,'callLlmFn':l,'continueRun':!!a['continueRun']});}catch(E){throw new Error('Chunk\x20planner\x20failed:\x20'+E['message']);}if(n['host_pending'])return{'project_id':d,'task':b,'host_pending':n['host_pending'],'planner_model':n['planner_model'],'planner_warning':n['planner_warning'],'mode':'host_pending'};if(k)return{'project_id':d,'task':b,'plan':n['plan'],'planner_model':n['planner_model'],'planner_warning':n['planner_warning'],'mode':'chunked_dry_run'};var o=[],p=0x0,q=0x0,r=0x0,s=[],t=[],u=0x0,v=n['plan']['chunks']||[];for(var w=0x0;w<v['length'];w++){var x=v[w],y=await executor['executeChunk']({'chunk':x,'priorResults':o,'contextPack':n['context_pack'],'state':m,'task':b,'config':f,'budget':g,'callLlmFn':l});o['push'](y);if(y['success']){var z=chunkModels['formatModelName'](y['model_used']);if(s['indexOf'](z)===-0x1)s['push'](z);p+=y['cost']||0x0,q+=y['tokens']['input'],r+=y['tokens']['output'];if(y['cache_hit'])u++;}else t['push']({'id':x['id'],'error':y['error']});}var A=await synthesis['synthesize']({'plan':n['plan'],'results':o,'contextPack':n['context_pack'],'config':f,'budget':g,'callLlmFn':l});p+=A['cost']||0x0,q+=A['tokens']?A['tokens']['input']:0x0,r+=A['tokens']?A['tokens']['output']:0x0;if(A['model_used']){var B=chunkModels['formatModelName'](A['model_used']);if(s['indexOf'](B)===-0x1)s['push'](B);}var C={'plan':n['plan'],'planner_model':n['planner_model'],'planner_warning':n['planner_warning'],'results':o,'synthesis':A,'total_cost':Number(p['toFixed'](0x6)),'total_tokens':{'input':q,'output':r},'models_used':s,'failed_chunks':t,'cache_hits':u,'budget':g,'mode':h?'sequential':'parallel'},D=session['update']({'project':d,'patch':{'chunk_run':C,'task_type':m['task_type']||'chunked_run','mode':'assess_only','digest':Object['assign']({},m['digest']||{},{'task_map_summary':b['slice'](0x0,0xf0),'experts':v['map'](function(F){return F['persona'];}),'mode':'assess_only'}),'metrics':{'llm_calls':o['length']+0x1,'experts_run':v['map'](function(F){return F['persona'];}),'input_tokens_est':q,'output_tokens_est':r,'cost_usd':Number(p['toFixed'](0x6)),'mode':'chunked','cache_hits':u,'effort_log':o['map'](function(F){return{'persona':F['persona'],'effort':F['chunk']?F['chunk']['effort']:'standard','model':F['model_used']?chunkModels['formatModelName'](F['model_used']):null,'scoped_mode':null};})}}});return{'project_id':d,'task':b,'plan':n['plan'],'chunk_run':C,'session':D};}module['exports']={'runChunked':runChunked};
|
package/dist/lib/evolve.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var fs=require('fs'),path=require('path'),os=require('os'),crypto=require('crypto'),session=require('./session'),lessons=require('./lessons'),outcome=require('./outcome'),EVOLUTION_DIR=path['join'](os['homedir'](),'.analyzthis_design','evolution');function ensureEvolutionDir(){fs['mkdirSync'](EVOLUTION_DIR,{'recursive':!![]});}function generatePatchId(){return crypto['randomBytes'](0x6)['toString']('hex');}function loadCard(a){var {resolvePackageRoot:b}=require('./platforms'),c=b(__dirname),d=path['join'](c,'agents','cards',a+'.md');if(!fs['existsSync'](d))return'';return fs['readFileSync'](d,'utf8');}function loadSkill(a){var {resolvePackageRoot:b}=require('./platforms'),c=b(__dirname),d=path['join'](c,'skills',a,'SKILL.md');if(!fs['existsSync'](d))return'';return fs['readFileSync'](d,'utf8');}function clusterLessons(a){var b=[];for(var d=0x0;d<a['length'];d++){var e=a[d],f=(e['pattern']||'')['toLowerCase']()['split'](/\W+/)['filter'](function(n){return n['length']>0x3;}),g=![];for(var h=0x0;h<b['length'];h++){var k=b[h],m=f['filter'](function(n){return(k['centerWords']||[])['indexOf'](n)!==-0x1;})['length'];if(m>=0x2){k['items']['push'](e),g=!![];break;}}!g&&b['push']({'centerWords':f['slice'](0x0,0x5),'items':[e]});}return b['filter'](function(n){return n['items']['length']>=0x2;});}function proposePromptPatch(a,b,c){var d=clusterLessons(b);if(!d['length'])return null;var e=d['sort'](function(l,m){return m['items']['length']-l['items']['length'];})[0x0],f=e['items']['map'](function(m){return m['pattern'];})['slice'](0x0,0x3),g=e['items']['map'](function(m){return m['fix'];})['slice'](0x0,0x3),h=loadCard(a),i=loadSkill(a),j='-\x20**'+f[0x0]+'**\x20—\x20'+g['join'](';\x20')+'\x20(lesson\x20cluster\x20'+e['items']['length']+'x)',k={'id':generatePatchId(),'type':'prompt','persona':a,'description':'Add\x20canonical\x20failure\x20pattern\x20based\x20on\x20'+e['items']['length']+'\x20lessons','target_files':['skills/'+a+'/SKILL.md','agents/cards/'+a+'.md'],'card_original':h['slice'](0x0,0x7d0),'card_addition':j,'skill_original':i['slice'](0x0,0x7d0),'skill_addition':j,'dry_run':c};return ensureEvolutionDir(),fs['writeFileSync'](path['join'](EVOLUTION_DIR,k['id']+'.json'),JSON['stringify'](k,null,0x2)),k;}function proposeReferenceRow(a,b,c){if(!b['length'])return null;var d={'arjun':'styles.csv','zara':'colors.csv','meera':'products.csv','noor':'ux-guidelines.csv','anuj':'ux-guidelines.csv','priya':'react-performance.csv'},
|
|
1
|
+
'use strict';var fs=require('fs'),path=require('path'),os=require('os'),crypto=require('crypto'),session=require('./session'),lessons=require('./lessons'),outcome=require('./outcome'),EVOLUTION_DIR=path['join'](os['homedir'](),'.analyzthis_design','evolution');function ensureEvolutionDir(){fs['mkdirSync'](EVOLUTION_DIR,{'recursive':!![]});}function generatePatchId(){return crypto['randomBytes'](0x6)['toString']('hex');}function loadCard(a){var {resolvePackageRoot:b}=require('./platforms'),c=b(__dirname),d=path['join'](c,'agents','cards',a+'.md');if(!fs['existsSync'](d))return'';return fs['readFileSync'](d,'utf8');}function loadSkill(a){var {resolvePackageRoot:b}=require('./platforms'),c=b(__dirname),d=path['join'](c,'skills',a,'SKILL.md');if(!fs['existsSync'](d))return'';return fs['readFileSync'](d,'utf8');}function clusterLessons(a){var b=[];for(var d=0x0;d<a['length'];d++){var e=a[d],f=(e['pattern']||'')['toLowerCase']()['split'](/\W+/)['filter'](function(n){return n['length']>0x3;}),g=![];for(var h=0x0;h<b['length'];h++){var k=b[h],m=f['filter'](function(n){return(k['centerWords']||[])['indexOf'](n)!==-0x1;})['length'];if(m>=0x2){k['items']['push'](e),g=!![];break;}}!g&&b['push']({'centerWords':f['slice'](0x0,0x5),'items':[e]});}return b['filter'](function(n){return n['items']['length']>=0x2;});}function proposePromptPatch(a,b,c){var d=clusterLessons(b);if(!d['length'])return null;var e=d['sort'](function(l,m){return m['items']['length']-l['items']['length'];})[0x0],f=e['items']['map'](function(m){return m['pattern'];})['slice'](0x0,0x3),g=e['items']['map'](function(m){return m['fix'];})['slice'](0x0,0x3),h=loadCard(a),i=loadSkill(a),j='-\x20**'+f[0x0]+'**\x20—\x20'+g['join'](';\x20')+'\x20(lesson\x20cluster\x20'+e['items']['length']+'x)',k={'id':generatePatchId(),'type':'prompt','persona':a,'description':'Add\x20canonical\x20failure\x20pattern\x20based\x20on\x20'+e['items']['length']+'\x20lessons','target_files':['skills/'+a+'/SKILL.md','agents/cards/'+a+'.md'],'card_original':h['slice'](0x0,0x7d0),'card_addition':j,'skill_original':i['slice'](0x0,0x7d0),'skill_addition':j,'dry_run':c};return ensureEvolutionDir(),fs['writeFileSync'](path['join'](EVOLUTION_DIR,k['id']+'.json'),JSON['stringify'](k,null,0x2)),k;}function proposeReferenceRow(a,b,c){if(!b['length'])return null;var d={'arjun':'styles.csv','zara':'colors.csv','meera':'products.csv','noor':'ux-guidelines.csv','anuj':'ux-guidelines.csv','priya':'react-performance.csv','raj':'products.csv'},f=d[a];if(!f)return null;var g=b[0x0],i=[];try{var j=require('./retrieve'),k=j['loadCsv'](f);i=k['header'];}catch(t){return null;}var l={};for(var m=0x0;m<i['length'];m++){var n=i[m]['trim']();l[n]='';}if(l['No']!==undefined)l['No']='auto';var o=g['pattern']||'',p=g['fix']||'',q=g['task_type']||'general',r=g['outcome']||'';if(l['Product\x20Type']!==undefined)l['Product\x20Type']=q;if(l['Category']!==undefined)l['Category']=q;if(l['Style\x20Category']!==undefined)l['Style\x20Category']='Learned:\x20'+q;if(l['Issue']!==undefined)l['Issue']=o;if(l['Description']!==undefined)l['Description']=o+'\x20(outcome:\x20'+r+')';if(l['Do']!==undefined)l['Do']=p;if(l['Don\x27t']!==undefined)l['Don\x27t']=o;if(l['Key\x20Considerations']!==undefined)l['Key\x20Considerations']=p+'\x20(outcome:\x20'+r+')';if(l['Best\x20For']!==undefined)l['Best\x20For']=q;if(l['Keywords']!==undefined)l['Keywords']=q+',\x20'+o['slice'](0x0,0x28);if(l['Notes']!==undefined)l['Notes']=p+'\x20(outcome:\x20'+r+')';if(l['Severity']!==undefined)l['Severity']=r==='missed'?'High':'Medium';var s={'id':generatePatchId(),'type':'reference','persona':a,'description':'Propose\x20new\x20reference\x20row\x20in\x20'+f,'target_file':'skills/design-reference/'+f,'row':l,'dry_run':c};return ensureEvolutionDir(),fs['writeFileSync'](path['join'](EVOLUTION_DIR,s['id']+'.json'),JSON['stringify'](s,null,0x2)),s;}function proposeRouterPatch(a,b){if(!a||!a['length'])return[];var c={};for(var d=0x0;d<a['length'];d++){var e=a[d];if(!c[e['task_type']])c[e['task_type']]={};if(!c[e['task_type']][e['persona']])c[e['task_type']][e['persona']]={'good':0x0,'bad':0x0};if(e['outcome']==='shipped'||e['outcome']==='blocked_correctly'||e['outcome']==='revised')c[e['task_type']][e['persona']]['good']++;else e['outcome']==='missed'&&c[e['task_type']][e['persona']]['bad']++;}var f=[],g=Object['keys'](c);for(var h=0x0;h<g['length'];h++){var j=g[h],k=Object['keys'](c[j]),l=null,m=-0x1;for(var n=0x0;n<k['length'];n++){var q=k[n],r=c[j][q]['good']-c[j][q]['bad'];r>m&&(m=r,l=q);}if(l){var s={'id':generatePatchId(),'type':'router','task_type':j,'description':'Route\x20'+j+'\x20primarily\x20to\x20'+l+'\x20based\x20on\x20outcomes','suggested_route_to':[l],'dry_run':b};ensureEvolutionDir(),fs['writeFileSync'](path['join'](EVOLUTION_DIR,s['id']+'.json'),JSON['stringify'](s,null,0x2)),f['push'](s);}}return f;}function collectOutcomes(){var a=session['listProjects'](),b=[];for(var c=0x0;c<a['length'];c++){var d=a[c],e=session['show']({'project':d});if(!e||!e['outcome'])continue;var f=Object['keys'](e['persona_outputs']||{});for(var g=0x0;g<f['length'];g++){var h=f[g],j=e['outcome']['confirmed']&&e['outcome']['confirmed'][h]||e['outcome']['inferred']&&e['outcome']['inferred'][h];j&&b['push']({'project_id':d,'persona':h,'task_type':e['task_type']||'','outcome':j['value']});}}return b;}function runEvolution(a){a=a||{};var b=a['windowDays']||0x7,c=a['dryRun']!==![],d=lessons['extractAllLessons']({'windowDays':b}),e=outcome['inferAllOutcomes']({'windowDays':b}),f=[],g=[],h=['arjun','meera','priya','zara','noor','anuj','raj'];for(var j=0x0;j<h['length'];j++){var k=h[j],l=lessons['loadLessons']?lessons['loadLessons'](k):[];!l['length']&&lessons['retrieveLessons']&&(l=lessons['retrieveLessons']({'task':'','personaId':k,'limit':0x64})['lessons']);if(l['length']>=0x5){var m=proposePromptPatch(k,l,c);if(m)f['push'](m);var n=proposeReferenceRow(k,l,c);if(n)g['push'](n);}}var o=collectOutcomes(),p=proposeRouterPatch(o,c);return{'extracted_lessons':d['extracted'],'inferred_outcomes':e['inferred'],'prompt_patches':f,'reference_proposals':g,'router_patches':p,'dry_run':c};}function applyPatch(a){a=a||{};var b=a['patchId'],c=!!a['dryRun'];if(!b)throw new Error('--apply\x20requires\x20a\x20patch\x20id');var d=path['join'](EVOLUTION_DIR,b+'.json');if(!fs['existsSync'](d))throw new Error('Patch\x20not\x20found:\x20'+b);var f=JSON['parse'](fs['readFileSync'](d,'utf8')),{resolvePackageRoot:g}=require('./platforms'),i=g(__dirname);if(f['type']==='prompt'){var j=path['join'](i,'skills',f['persona'],'SKILL.md'),k=fs['existsSync'](j)?fs['readFileSync'](j,'utf8'):'',l=k['indexOf']('##\x20Failure\x20modes\x20to\x20avoid');if(l===-0x1)l=k['length'];var m=k['slice'](0x0,l)+'\x0a\x0a##\x20Canonical\x20failure\x20pattern\x20(auto-suggested)\x0a\x0a'+f['skill_addition']+'\x0a\x0a'+k['slice'](l);if(!c)fs['writeFileSync'](j,m);return{'applied':!c,'targetFile':j,'preview':c?m:null};}if(f['type']==='reference'){var n=path['join'](i,f['target_file']),o=f['row'],p=[],q=[];try{var r=require('./retrieve'),s=r['loadCsv'](path['basename'](n));p=s['header'],q=s['rows'];}catch(A){return{'applied':![],'error':'Cannot\x20read\x20target\x20CSV:\x20'+A['message']};}var t=q['length']+0x1,u=[];for(var v=0x0;v<p['length'];v++){var w=p[v]['trim'](),x=o[w]!==undefined?o[w]:'';if(x==='auto')x=String(t);u['push'](x);}var y=u['map'](function(B){if(B['indexOf'](',')!==-0x1||B['indexOf']('\x22')!==-0x1||B['indexOf']('\x0a')!==-0x1)return'\x22'+B['replace'](/"/g,'\x22\x22')+'\x22';return B;}),z=y['join'](',')+'\x0a';if(!c)fs['appendFileSync'](n,z);return{'applied':!c,'targetFile':n,'preview':c?z:null};}if(f['type']==='router')return{'applied':![],'message':'Router\x20patches\x20require\x20manual\x20review.\x20Suggested\x20route_to\x20for\x20'+f['task_type']+':\x20'+f['suggested_route_to']['join'](',\x20')};return{'applied':![],'message':'Unknown\x20patch\x20type'};}module['exports']={'runEvolution':runEvolution,'proposePromptPatch':proposePromptPatch,'proposeReferenceRow':proposeReferenceRow,'proposeRouterPatch':proposeRouterPatch,'applyPatch':applyPatch,'EVOLUTION_DIR':EVOLUTION_DIR};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';const fs=require('fs'),path=require('path'),os=require('os'),https=require('https'),session=require('../session'),retrieve=require('../retrieve'),cache=require('../cache'),deliberation=require('../deliberation'),lessons=require('../lessons'),queryExpander=require('../query-expander'),ranker=require('../ranker'),knowledge=require('../knowledge'),chunkRun=require('../chunk-run'),chunkModels=require('../chunk-models'),{callHostLlm,createRun,HostLlmPendingError,printDeviInstructions,findLatestRun,loadManifest:loadHostManifest}=require('../host-llm'),{resolveDefaultProvider,resolveTierProvider}=require('../provider'),synthesis=require('../synthesis'),{enforceOutputCap,enforceSystemCap}=require('../token-gate'),{resolvePackageRoot}=require('../platforms'),PACKAGE_ROOT=resolvePackageRoot(__dirname),AGENTS_DIR=path['join'](PACKAGE_ROOT,'agents'),CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadJson(a){return JSON['parse'](fs['readFileSync'](a,'utf8'));}function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch{return{};}}function loadManifest(a){const b=path['join'](AGENTS_DIR,'manifests',a+'.json');if(!fs['existsSync'](b))throw new Error('Manifest\x20not\x20found:\x20'+a);return loadJson(b);}function loadSkill(a){const b=path['join'](PACKAGE_ROOT,a['system_skill']);if(!fs['existsSync'](b))return'(skill\x20missing:\x20'+a['system_skill']+')';return fs['readFileSync'](b,'utf8');}function loadCard(a,b){if(a['system_card']){const c=path['join'](PACKAGE_ROOT,a['system_card']);if(fs['existsSync'](c))return fs['readFileSync'](c,'utf8');}return loadSkill(a)['slice'](0x0,0xfa0);}const PRODUCT_KEYWORDS=['saas','b2b','b2c','dashboard','analytics','e-commerce','ecommerce','fintech','healthcare','crm','marketplace','admin','enterprise','consumer','mobile','productivity','social','education','finance'];function extractKeywords(a){const b=(a||'')['toLowerCase']();return PRODUCT_KEYWORDS['filter'](c=>b['includes'](c));}const REFERENCE_MAP={'arjun':{'file':'styles.csv','column':'Best\x20For','limit':0x3},'zara':{'file':'colors.csv','column':'Product\x20Type','limit':0x3},'meera':{'file':'products.csv','column':'Product\x20Type','limit':0x3},'noor':{'file':'ux-guidelines.csv','column':'Category','limit':0x3},'anuj':{'file':'ux-guidelines.csv','column':'Category','limit':0x3},'priya':{'file':'react-performance.csv','column':'Category','limit':0x3}};function detectStack(a){if(!a||!fs['existsSync'](path['join'](a,'Tech')))return null;const b=fs['readdirSync'](path['join'](a,'Tech'))['map'](d=>d['toLowerCase']()),c=['nextjs','react','shadcn','vue','angular','svelte','nuxtjs','astro'];for(const d of c){if(b['some'](e=>e['includes'](d)))return d;}return null;}function getReferenceSpec(a,b){const c=REFERENCE_MAP[a];if(!c)return null;if(a==='priya'){const d=detectStack(b['vault_path']);if(d)return{'file':'stacks/'+d+'.csv','column':'Category','limit':0x3};}return c;}async function buildReferencePack(a,b,c){const d=getReferenceSpec(a,c);if(!d)return null;let e=extractKeywords(b);try{const f=await queryExpander['expandQuery']({'task':b,'personaId':a,'callLlmFn':callLlm,'provider':'host','model':'devi'});f&&f['terms']&&f['terms']['length']&&(e=f['terms']);}catch{}if(!e['length'])return null;try{const g=retrieve['retrieve']({'file':d['file'],'filters':[{'column':d['column'],'anyOf':e}],'limit':0xa});if(!g['rows']['length'])return null;const h=[];for(const i of g['rows']){h['push']({'type':'reference','source':d['file'],'row':i['__no'],'content':i[d['column']]||''});}try{const j=knowledge['getPersonaSliceForPrompt'](c,a);for(const k of j['slice'](0x0,0x5)){h['push']({'type':'knowledge','source':k['title'],'row':0x0,'content':k['content']['slice'](0x0,0xc8)});}}catch{}try{const l=await ranker['rankCandidates']({'personaId':a,'task':b,'candidates':h,'callLlmFn':callLlm,'provider':'host','model':'devi'});return{'cacheHit':g['cacheHit'],'citations':l['ranked']['slice'](0x0,0x5)['map'](m=>'['+m['source']+(m['row']?',\x20row\x20'+m['row']:'')+':\x20\x22'+m['content']+'\x22]')};}catch{return{'cacheHit':g['cacheHit'],'citations':g['rows']['slice'](0x0,0x5)['map'](m=>retrieve['cite'](d['file'],m,d['column']))};}}catch{return null;}}function classifyProblems(a){const b=loadJson(path['join'](AGENTS_DIR,'router.json')),c=(a||'')['toLowerCase'](),d=b['rules']['filter'](e=>e['signals']['some'](f=>c['includes'](f['toLowerCase']())));if(d['length']===0x0){const e=b['rules']['find'](f=>f['problem_type']==='full_screen_review')||b['rules'][0x0];return[e];}return d;}function classifyProblem(a){return classifyProblems(a)[0x0];}function resolveExpertsForRules(a,b,{mode:mode='lite',explicitExperts:explicitExperts=null}={}){if(explicitExperts&&explicitExperts['length'])return{'experts':explicitExperts['filter'](h=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',h+'.json'))),'full_chain':![],'ideation_chain':![]};const c=a['some'](h=>h['problem_type']==='ideation_wireframe'||(h['route_to']||[])['includes']('ideation_chain'));if(c){const h=new Set(),i=[];for(const j of b['ideation_chain']||[]){!h['has'](j['persona'])&&(h['add'](j['persona']),i['push'](j['persona']));}return{'experts':i['filter'](k=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',k+'.json'))),'full_chain':![],'ideation_chain':!![]};}const d=a['some'](k=>k['problem_type']==='full_screen_review'||(k['route_to']||[])['includes']('design-critic_chain'));if(d&&mode==='full')return{'experts':b['default_chain']['map'](k=>k['persona']),'full_chain':!![],'ideation_chain':![]};const e=[],f=new Set();for(const k of a){for(const l of k['never_route_to']||[])f['add'](l);}for(const m of a){const n=d&&mode!=='full'?['arjun','meera']:m['route_to']||[];for(const o of n){if(o==='design-critic_chain')continue;if(o==='ds_gate'||o==='arjun_color_system_only'){if(!e['includes']('arjun'))e['push']('arjun');}else{if(o!=='direct_noor_without_gate'&&o!=='noor_alone'){if(!e['includes'](o))e['push'](o);}}}}const g=e['filter'](p=>!f['has'](p));return{'experts':g['filter'](p=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',p+'.json'))),'full_chain':![],'ideation_chain':![]};}function resolveExperts(a){const b=loadJson(path['join'](AGENTS_DIR,'chain.json'));return resolveExpertsForRules([a],b,{'mode':'full'})['experts'];}function classifyEffort({routing:a,digest:b,manifest:c,scopedMode:d,fullChain:e,isDeltaFollowUp:f}={}){if(d)return'trivial';if(e)return'hard';if(a&&/full_screen_review/['test'](a['problem_type']))return'hard';if(a&&/stalemate/['test'](a['problem_type']))return'hard';if(b&&Array['isArray'](b['ds_at_risk'])&&b['ds_at_risk']['length'])return'hard';if(f)return'trivial';if(c&&c['tier']==='structured')return'trivial';if(c&&c['tier']==='arbitrate')return'standard';return'standard';}function resolveModel({manifest:a,effort:b,chain:c,config:d,defaultProvider:e,defaultModel:f,gateName:g}){let h=b;const i=c['gate_override'];g&&i&&(i['applies_to']||[])['includes'](g)&&(h=i['use_effort']||'hard');const j=a['effort_overrides']&&a['effort_overrides'][h]||{},k=c['effort_matrix']&&c['effort_matrix'][h]||{},l=d['orchestrator']?.['tiers']&&d['orchestrator']?.['tiers'][a['tier']]||{},m=j['provider']||k['provider']||l['provider']||e,n=j['model']||k['model']||l['model']||f,o=resolveTierProvider(m,e),p=j['max_output_tokens']||k['max_output_tokens']||d['orchestrator']?.['max_tokens']?.[a['tier']]||a['max_output_tokens'];return{'provider':o,'model':n,'maxTokens':p,'effort':h};}function ollamaJson(a,b,c,d,e){return new Promise(function(f,g){var h=a['indexOf']('https:')===0x0?require('https'):require('http'),i=new URL('/api/chat',a),j=JSON['stringify']({'model':b,'messages':[{'role':'system','content':c},{'role':'user','content':d}],'stream':![],'options':{'num_predict':e||0x4b0}}),k=h['request'](i['toString'](),{'method':'POST','headers':{'Content-Type':'application/json','Content-Length':Buffer['byteLength'](j)},'timeout':0xea60},function(l){var m=[];l['on']('data',function(n){m['push'](n);}),l['on']('end',function(){var n=Buffer['concat'](m)['toString']('utf8');try{var o=JSON['parse'](n);l['statusCode']>=0x190?g(new Error(o['error']||'Ollama\x20HTTP\x20'+l['statusCode'])):f(o);}catch(p){g(new Error('Bad\x20JSON\x20from\x20Ollama:\x20'+n['slice'](0x0,0xc8)));}});});k['on']('error',g),k['on']('timeout',function(){k['destroy'](),g(new Error('Ollama\x20timeout'));}),k['write'](j),k['end']();});}function httpsJson(a,b,c,d){return new Promise((e,f)=>{const g=JSON['stringify'](d),h=https['request']({'hostname':a,'path':b,'method':'POST','headers':{...c,'Content-Type':'application/json','Content-Length':Buffer['byteLength'](g)}},i=>{const j=[];i['on']('data',k=>j['push'](k)),i['on']('end',()=>{const k=Buffer['concat'](j)['toString']('utf8');try{const l=JSON['parse'](k);i['statusCode']>=0x190?f(new Error(l['error']?.['message']||l['message']||'HTTP\x20'+i['statusCode']+':\x20'+k['slice'](0x0,0xc8))):e(l);}catch(m){f(new Error('Bad\x20JSON\x20from\x20'+a+':\x20'+k['slice'](0x0,0xc8)));}});});h['on']('error',f),h['write'](g),h['end']();});}async function callLlm({provider:a,model:b,system:c,user:d,maxTokens:e,personaId:f,hostContext:g}){if(a==='host'){const i=await callHostLlm({'personaId':f,'system':c,'user':d,'maxTokens':e,'runContext':g});return enforceOutputCap(i,e);}let h='';if(a==='anthropic'){const j=process.env.ANTHROPIC_API_KEY;if(!j)throw new Error('ANTHROPIC_API_KEY\x20not\x20set');const k=await httpsJson('api.anthropic.com','/v1/messages',{'x-api-key':j,'anthropic-version':'2023-06-01'},{'model':b||'claude-sonnet-4-20250514','max_tokens':e||0x1000,'system':c,'messages':[{'role':'user','content':d}]});h=k['content']?.['map'](l=>l['text'])['join']('\x0a')||'';}else{if(a==='openai'){const l=process.env.OPENAI_API_KEY;if(!l)throw new Error('OPENAI_API_KEY\x20not\x20set');const m=await httpsJson('api.openai.com','/v1/chat/completions',{'Authorization':'Bearer\x20'+l},{'model':b||'gpt-4o','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=m['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='google'){const n=process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY;if(!n)throw new Error('GEMINI_API_KEY\x20not\x20set');const o=await httpsJson('generativelanguage.googleapis.com','/v1beta/openai/chat/completions',{'Authorization':'Bearer\x20'+n},{'model':b||'gemini-2.5-flash','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=o['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='zai'){const p=process.env.ZAI_API_KEY||process.env.ZHIPU_API_KEY;if(!p)throw new Error('ZAI_API_KEY\x20not\x20set');const q=await httpsJson('open.bigmodel.cn','/api/paas/v4/chat/completions',{'Authorization':'Bearer\x20'+p},{'model':b||'glm-4.5-flash','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=q['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='ollama'){const r=process.env.OLLAMA_BASE_URL||'http://localhost:11434',s=await ollamaJson(r,b||'llama3.1',c,d,e);h=s['message']?.['content']||s['response']||'';}else{if(a==='groq'){const t=process.env.GROQ_API_KEY;if(!t)throw new Error('GROQ_API_KEY\x20not\x20set');const u=await httpsJson('api.groq.com','/openai/v1/chat/completions',{'Authorization':'Bearer\x20'+t},{'model':b||'llama-3.1-8b-instant','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=u['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='together'){const v=process.env.TOGETHER_API_KEY;if(!v)throw new Error('TOGETHER_API_KEY\x20not\x20set');const w=await httpsJson('api.together.xyz','/v1/chat/completions',{'Authorization':'Bearer\x20'+v},{'model':b||'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=w['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='openrouter'){const x=process.env.OPENROUTER_API_KEY;if(!x)throw new Error('OPENROUTER_API_KEY\x20not\x20set');const y=await httpsJson('openrouter.ai','/api/v1/chat/completions',{'Authorization':'Bearer\x20'+x,'HTTP-Referer':'https://github.com/joshirishi/analyzthis_design','X-Title':'analyzthis_design'},{'model':b||'meta-llama/llama-3.1-8b-instruct:free','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=y['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='deepseek'){const z=process.env.DEEPSEEK_API_KEY;if(!z)throw new Error('DEEPSEEK_API_KEY\x20not\x20set');const A=await httpsJson('api.deepseek.com','/chat/completions',{'Authorization':'Bearer\x20'+z},{'model':b||'deepseek-chat','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=A['choices']?.[0x0]?.['message']?.['content']||'';}else throw new Error('Unknown\x20provider\x20\x22'+a+'\x22.\x20Use\x20anthropic,\x20openai,\x20google,\x20zai,\x20ollama,\x20groq,\x20together,\x20openrouter,\x20deepseek,\x20or\x20host.');}}}}}}}}return enforceOutputCap(h,e);}async function runUnchunked(a={}){const {task:b,figma:figma='',dryRun:dryRun=![],project:c,output:d,experts:e=null,noDeliberate:noDeliberate=![],deliberate:deliberate=null,maxRounds:maxRounds=null,satisfaction:satisfaction=null,continueRun:continueRun=![],hostResponder:hostResponder=null}=a;if(!b)throw new Error('--task\x20is\x20required');const f=loadConfig(),g=deliberation['loadDeliberationConfig'](f),h=resolveDefaultProvider(f,a['provider']||f['orchestrator']?.['provider']||'auto'),i=a['model']||f['orchestrator']?.['model'],j=f['orchestrator']?.['mode']||'lite',k=a['full']?'full':a['lite']?'lite':j,l=noDeliberate?![]:deliberate!=null?deliberate:g['default_mode']!=='legacy';let m=session['show']({'project':c});if(!m){const O=session['init']({'project':c});m=session['show']({'project':O['projectId']});}const n=m['project_id'];let o=null;if(h==='host'&&!dryRun){if(continueRun&&m['host_run']?.['run_dir']){const P=loadHostManifest(m['host_run']['run_dir']);o={'runDir':m['host_run']['run_dir'],'manifest':P,'hostResponder':hostResponder};}else{if(!continueRun){const Q=createRun({'projectId':n,'task':b});o={'runDir':Q['runDir'],'manifest':Q['manifest'],'hostResponder':hostResponder},session['update']({'project':n,'patch':{'host_run':{'run_id':Q['runId'],'run_dir':Q['runDir'],'task':b,'status':'in_progress','started_at':new Date()['toISOString']()}}});}}}const p=loadJson(path['join'](AGENTS_DIR,'chain.json')),q=classifyProblems(b),{experts:r,full_chain:s,ideation_chain:t}=resolveExpertsForRules(q,p,{'mode':k,'explicitExperts':e}),u=[...new Set(q['flatMap'](R=>R['never_route_to']||[]))],v={'problem_type':q['map'](R=>R['problem_type'])['join']('+'),'experts':r,'never_route_to':u,'reason':e&&e['length']?'Explicit\x20--experts\x20override:\x20'+e['join'](',\x20'):'Matched\x20'+q['length']+'\x20rule(s)\x20['+q['map'](R=>R['problem_type'])['join'](',\x20')+']\x20in\x20\x22'+k+'\x22\x20mode'},w=Object['entries'](m['ds_checklist']||{})['filter'](([,R])=>R===![])['map'](([R])=>R),x=deliberation['getDeliberationGroups'](p,{'full_chain':s,'ideation_chain':t,'experts':r,'mode':k});session['update']({'project':n,'patch':{'routing_decision':v,'figma_node':figma?{'url':figma,'confirmed':![]}:m['figma_node'],'mode':'assess_only','task_map':m['task_map']?.['length']?m['task_map']:[{'task':b,'frequency':'unknown','priority':'P0'}],'digest':{...m['digest']||{},'task_map_summary':b['slice'](0x0,0xf0),'ds_at_risk':w,'experts':r,'mode':'assess_only'}}});const y={'project_id':n,'task':b,'figma':figma,'mode':k,'routing':v,'chain':r,'full_chain':s,'ideation_chain':t,'deliberation':l?{'mode':'adversarial','groups':x,'max_rounds':maxRounds??g['max_rounds'],'satisfaction_threshold':satisfaction??g['satisfaction_threshold']}:{'mode':'legacy'},'dry_run':dryRun,'provider':dryRun?null:h,'host_mode':h==='host'};if(dryRun)return console['log']('\x0a──\x20Dry\x20run\x20(no\x20LLM\x20calls)\x20──────────────────────────'),console['log'](JSON['stringify'](y,null,0x2)),console['log'](''),y;const z=k!=='full'&&!t,A=new Set(['noor','anuj']),B=!!(m['digest']&&m['digest']['prior_scores']&&Object['keys'](m['digest']['prior_scores']||{})['length']);let C=0x0,D=0x0;async function E(R,{isProduceRound:S,isObjectionRound:T}){const U=loadManifest(R),V=t&&A['has'](R),W=T&&!S,X=W?loadCard(U,R):s||V||S?loadSkill(U)['slice'](0x0,0x2ee0):loadCard(U,R),Y=W||z&&!V,Z=T?'\x0aDELIBERATION\x20REVIEW\x20MODE:\x20Read\x20prior\x20outputs\x20critically.\x20Low\x20satisfaction\x20default.\x20'+deliberation['DELIBERATION_JSON_HINT']:'',a0=['You\x20are\x20the\x20\x22'+R+'\x22\x20persona.\x20Follow\x20the\x20card/skill\x20instructions\x20exactly.','Allowed\x20jobs:\x20'+(U['allowed_jobs']||[])['join'](';\x20'),'Forbidden\x20jobs:\x20'+(U['forbidden_jobs']||[])['join'](';\x20'),'Assess-only\x20mode\x20is\x20ON\x20—\x20do\x20not\x20propose\x20code\x20edits\x20as\x20applied;\x20output\x20critique\x20only.',Y?'Use\x20the\x20LITE\x20objection\x20schema\x20—\x20short\x20grounding,\x20objections,\x20questions,\x20JSON\x20block.':S?'Use\x20the\x20DEEP\x20output\x20schema\x20(full\x20blocks\x20as\x20in\x20your\x20SKILL.md)\x20plus\x20deliberation\x20JSON.':'REVIEW\x20MODE:\x20object\x20to\x20prior\x20claims\x20with\x20evidence;\x20include\x20deliberation\x20JSON\x20block.',Z,'',X],a1=W?enforceSystemCap(a0['join']('\x0a'),0x157c):a0['join']('\x0a'),a2=classifyEffort({'routing':v,'digest':m['digest'],'manifest':U,'scopedMode':null,'fullChain':s,'isDeltaFollowUp':B}),a3=resolveModel({'manifest':U,'effort':T?'trivial':a2,'chain':p,'config':f,'defaultProvider':h,'defaultModel':i,'gateName':null});let a4=a1;try{const a5=lessons['retrieveLessons']({'task':b,'personaId':R,'limit':0x3});a5&&a5['lessons']&&a5['lessons']['length']&&(a4=a4+'\x0a\x0a'+lessons['buildLessonsInjection'](a5['lessons']));}catch{}return{'system':a4,'manifest':U,'effort':a3['effort'],'callProvider':a3['provider'],'callModel':a3['model'],'maxTokens':a3['maxTokens']};}function F(R,S){const T={'grades':{},'score':null,'top_fixes':[]},U=R['match'](/(\d+(?:\.\d+)?)\s*\/\s*5/);if(U)T['score']=Number(U[0x1]);const V=R['match'](/(\w+)\[([A-F])\]/gi);if(V)for(const X of V){const Y=X['match'](/(\w+)\[([A-F])\]/i);if(Y)T['grades'][Y[0x1]['toLowerCase']()]=Y[0x2]['toUpperCase']();}const W=R['match'](/Top\s*2\s*fixes:\s*1\.\s*([^\n]+)\s*2\.\s*([^\n]+)/i);return W&&(T['top_fixes']=[W[0x1]['trim'](),W[0x2]['trim']()]),T;}async function G(R,S,T,U){console['log']('\x0a⏳\x20Running\x20persona:\x20'+R+'...');const V=await callLlm({'provider':U['provider'],'model':U['model'],'system':S,'user':T,'maxTokens':U['maxTokens'],'personaId':R,'hostContext':o}),W=Math['ceil']((S['length']+T['length'])/0x4),X=Math['ceil'](V['length']/0x4),Y=f['pricing']&&f['pricing'][U['model']];return Y&&(D+=W/0xf4240*(Y['input_per_m']||0x0)+X/0xf4240*(Y['output_per_m']||0x0)),console['log']('✅\x20'+R+'\x20complete\x20('+V['length']+'\x20chars,\x20'+(U['effort']||'standard')+')'),{'text':V,'input_tokens_est':W,'output_tokens_est':X,'structured_output':F(V,R),'full_prompt':{'system':S,'user':T},'effort_log_entry':{'persona':R,'effort':U['effort']||'standard','model':U['model'],'scoped_mode':null}};}m=session['show']({'project':n})||m;let H;try{H=await deliberation['runDeliberation']({'chain':p,'experts':r,'full_chain':s,'ideation_chain':t,'mode':k,'task':b,'routing':v,'state':m,'figma':figma,'config':f,'callPersona':G,'loadPersonaContext':E,'buildReferencePack':async(R,S)=>{const T=await buildReferencePack(R,S,m);if(T?.['cacheHit'])C+=0x1;return T;},'noDeliberate':!l,'satisfaction_threshold':satisfaction!=null?Number(satisfaction):undefined,'max_rounds':maxRounds!=null?Number(maxRounds):undefined,'resume_checkpoint':continueRun?m['host_run']?.['checkpoint']:null});}catch(R){if(R['name']==='HostLlmPendingError'){session['update']({'project':n,'patch':{'persona_outputs':R['checkpoint']?.['persona_outputs']||m['persona_outputs'],'host_run':{...m['host_run']||{},'status':'pending_devi','last_pending':{'step_id':R['stepId'],'persona':R['personaId']},'checkpoint':R['checkpoint']||null}}}),printDeviInstructions(R);throw R;}throw R;}const I=synthesis['buildSynthesis'](H['persona_outputs'],{'deliberation':H['deliberation']}),J=figma?{'primary_task':'not_run','screenshots':[],'reason':'browser\x20automation\x20unavailable\x20in\x20standalone\x20runtime'}:{'primary_task':'not_run','screenshots':[],'reason':'assess_only,\x20no\x20URL'},K=Object['keys'](H['persona_outputs']),L={},M={};for(const [S,T]of Object['entries'](H['persona_outputs']||{})){if(T['full_prompt'])L[S]=T['full_prompt'];if(T['structured_output'])M[S]=T['structured_output'];}const N=session['update']({'project':n,'patch':{'persona_outputs':H['persona_outputs'],'full_prompts':L,'structured_outputs':M,'covered_points':H['covered_points']||[],'task_type':m['task_type']||classifyProblem(b)?.['problem_type']||'','deliberation':H['deliberation'],'synthesis':I['composite'],'synthesis_markdown':I['markdown'],'verify_results':J,'host_run':h==='host'?{...m['host_run']||{},'status':'complete','completed_at':new Date()['toISOString'](),'checkpoint':null}:m['host_run'],'digest':{...m['digest']||{},...H['digest_patch'],'experts':r},'metrics':{'llm_calls':H['metrics']['llm_calls'],'experts_run':K,'input_tokens_est':H['metrics']['input_tokens_est'],'output_tokens_est':H['metrics']['output_tokens_est'],'cache_hits':C,'mode':k,'effort_log':H['metrics']['effort_log'],'cost_usd':Number(D['toFixed'](0x6)),'deliberation_rounds':H['metrics']['deliberation_rounds'],'objections_raised':H['metrics']['objections_raised'],'objections_resolved':H['metrics']['objections_resolved'],'raj_escalations':H['metrics']['raj_escalations']}}});d&&(fs['writeFileSync'](path['resolve'](d),JSON['stringify'](N,null,0x2)),console['log']('\x0a✅\x20Wrote\x20session\x20state\x20to\x20'+path['resolve'](d)));console['log']('\x0a✅\x20Orchestrator\x20run\x20complete.\x20Experts\x20('+k+'):\x20'+r['join'](',\x20')),console['log']('\x20\x20\x20Provider:\x20'+h+(h==='host'?'\x20(Devi\x20host\x20bridge)':'')),console['log']('\x20\x20\x20Deliberation:\x20'+H['deliberation']['mode']+',\x20rounds='+H['metrics']['deliberation_rounds']+',\x20consensus='+H['deliberation']['consensus_reached']);if(H['deliberation']['raj_escalated'])console['log']('\x20\x20\x20Raj\x20escalated:\x20yes');console['log']('\x20\x20\x20Verdict:\x20'+I['composite']['verdict']+'\x20('+I['composite']['total']+'/'+I['composite']['max_total']+')'),console['log']('\x20\x20\x20Est.\x20tokens:\x20'+H['metrics']['input_tokens_est']+'\x20in\x20/\x20'+H['metrics']['output_tokens_est']+'\x20out');if(D)console['log']('\x20\x20\x20Est.\x20cost:\x20\x20\x20$'+D['toFixed'](0x4));return console['log']('\x20\x20\x20Session:\x20'+session['sessionPath'](n)),console['log']('\x0a──\x20Synthesis\x20──────────────────────────────────────'),console['log'](I['markdown']),console['log'](''),N;}async function run(a={}){if(a['unchunked'])return runUnchunked(a);const b=await chunkRun['runChunked'](a);if(b['mode']==='host_pending'||b['host_pending'])return b;if(b['mode']==='chunked_dry_run'||a['dryRun'])return b;const c=b['chunk_run']||b,d=c['synthesis'];console['log']('\x0a✅\x20Chunked\x20orchestrator\x20run\x20complete.');c['planner_warning']&&console['log']('\x20\x20\x20⚠\x20Planner:\x20'+c['planner_warning']);c['planner_model']&&console['log']('\x20\x20\x20Planner:\x20'+chunkModels['formatModelName'](c['planner_model']));console['log']('\x20\x20\x20Chunks:\x20\x20'+(c['results']||[])['length']),console['log']('\x20\x20\x20Failed:\x20\x20'+(c['failed_chunks']||[])['length']);c['models_used']&&c['models_used']['length']&&console['log']('\x20\x20\x20Models:\x20\x20'+c['models_used']['join'](',\x20'));console['log']('\x20\x20\x20Cost:\x20\x20\x20\x20$'+(c['total_cost']||0x0)['toFixed'](0x4));const e=c['total_tokens']||{'input':0x0,'output':0x0};return console['log']('\x20\x20\x20Tokens:\x20\x20'+e['input']+'\x20in\x20/\x20'+e['output']+'\x20out'),d&&console['log']('\x20\x20\x20Verdict:\x20'+(d['verdict']||'n/a')+'\x20('+(d['total']||0x0)+'/'+(d['max_total']||0x0)+')'),console['log']('\x20\x20\x20Session:\x20'+session['sessionPath'](b['project_id']||session['getProjectId']())),b['session'];}module['exports']={'run':run,'runUnchunked':runUnchunked,'classifyProblem':classifyProblem,'classifyProblems':classifyProblems,'resolveExperts':resolveExperts,'resolveExpertsForRules':resolveExpertsForRules,'loadManifest':loadManifest,'classifyEffort':classifyEffort,'resolveModel':resolveModel,'callLlm':callLlm,'loadConfig':loadConfig};if(require['main']===module){const args=process['argv']['slice'](0x2),get=a=>{const b=args['find'](d=>d['startsWith']('--'+a+'='));if(b)return b['split']('=')['slice'](0x1)['join']('=');const c=args['indexOf']('--'+a);if(c!==-0x1&&args[c+0x1]&&!args[c+0x1]['startsWith']('--'))return args[c+0x1];return null;},expertsArg=get('experts');run({'task':get('task'),'figma':get('figma')||'','provider':get('provider'),'model':get('model'),'dryRun':args['includes']('--dry-run'),'lite':args['includes']('--lite'),'full':args['includes']('--full'),'noDeliberate':args['includes']('--no-deliberate'),'deliberate':args['includes']('--deliberate')?!![]:null,'maxRounds':get('max-rounds'),'satisfaction':get('satisfaction'),'continueRun':args['includes']('--continue'),'experts':expertsArg?expertsArg['split'](',')['map'](a=>a['trim']())['filter'](Boolean):null,'project':get('project'),'output':get('output')})['catch'](a=>{console['error']('\x0a\x20\x20✗\x20\x20'+a['message']+'\x0a'),process['exit'](0x1);});}
|
|
2
|
+
'use strict';const fs=require('fs'),path=require('path'),os=require('os'),https=require('https'),session=require('../session'),retrieve=require('../retrieve'),cache=require('../cache'),deliberation=require('../deliberation'),lessons=require('../lessons'),queryExpander=require('../query-expander'),ranker=require('../ranker'),knowledge=require('../knowledge'),chunkRun=require('../chunk-run'),chunkModels=require('../chunk-models'),referencePack=require('../reference-pack'),{callHostLlm,createRun,HostLlmPendingError,printDeviInstructions,findLatestRun,loadManifest:loadHostManifest}=require('../host-llm'),{resolveDefaultProvider,resolveTierProvider}=require('../provider'),synthesis=require('../synthesis'),{enforceOutputCap,enforceSystemCap}=require('../token-gate'),{resolvePackageRoot}=require('../platforms'),PACKAGE_ROOT=resolvePackageRoot(__dirname),AGENTS_DIR=path['join'](PACKAGE_ROOT,'agents'),CONFIG_FILE=path['join'](os['homedir'](),'.analyzthis_design','config.json');function loadJson(a){return JSON['parse'](fs['readFileSync'](a,'utf8'));}function loadConfig(){if(!fs['existsSync'](CONFIG_FILE))return{};try{return JSON['parse'](fs['readFileSync'](CONFIG_FILE,'utf8'));}catch{return{};}}function loadManifest(a){const b=path['join'](AGENTS_DIR,'manifests',a+'.json');if(!fs['existsSync'](b))throw new Error('Manifest\x20not\x20found:\x20'+a);return loadJson(b);}function loadSkill(a){const b=path['join'](PACKAGE_ROOT,a['system_skill']);if(!fs['existsSync'](b))return'(skill\x20missing:\x20'+a['system_skill']+')';return fs['readFileSync'](b,'utf8');}function loadCard(a,b){if(a['system_card']){const c=path['join'](PACKAGE_ROOT,a['system_card']);if(fs['existsSync'](c))return fs['readFileSync'](c,'utf8');}return loadSkill(a)['slice'](0x0,0xfa0);}async function buildReferencePack(a,b,c){return referencePack['buildReferencePack'](a,b,c,callLlm);}function classifyProblems(a){const b=loadJson(path['join'](AGENTS_DIR,'router.json')),c=(a||'')['toLowerCase'](),d=b['rules']['filter'](e=>e['signals']['some'](f=>c['includes'](f['toLowerCase']())));if(d['length']===0x0){const e=b['rules']['find'](f=>f['problem_type']==='full_screen_review')||b['rules'][0x0];return[e];}return d;}function classifyProblem(a){return classifyProblems(a)[0x0];}function resolveExpertsForRules(a,b,{mode:mode='lite',explicitExperts:explicitExperts=null}={}){if(explicitExperts&&explicitExperts['length'])return{'experts':explicitExperts['filter'](h=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',h+'.json'))),'full_chain':![],'ideation_chain':![]};const c=a['some'](h=>h['problem_type']==='ideation_wireframe'||(h['route_to']||[])['includes']('ideation_chain'));if(c){const h=new Set(),i=[];for(const j of b['ideation_chain']||[]){!h['has'](j['persona'])&&(h['add'](j['persona']),i['push'](j['persona']));}return{'experts':i['filter'](k=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',k+'.json'))),'full_chain':![],'ideation_chain':!![]};}const d=a['some'](k=>k['problem_type']==='full_screen_review'||(k['route_to']||[])['includes']('design-critic_chain'));if(d&&mode==='full')return{'experts':b['default_chain']['map'](k=>k['persona']),'full_chain':!![],'ideation_chain':![]};const e=[],f=new Set();for(const k of a){for(const l of k['never_route_to']||[])f['add'](l);}for(const m of a){const n=d&&mode!=='full'?['arjun','meera']:m['route_to']||[];for(const o of n){if(o==='design-critic_chain')continue;if(o==='ds_gate'||o==='arjun_color_system_only'){if(!e['includes']('arjun'))e['push']('arjun');}else{if(o!=='direct_noor_without_gate'&&o!=='noor_alone'){if(!e['includes'](o))e['push'](o);}}}}const g=e['filter'](p=>!f['has'](p));return{'experts':g['filter'](p=>fs['existsSync'](path['join'](AGENTS_DIR,'manifests',p+'.json'))),'full_chain':![],'ideation_chain':![]};}function resolveExperts(a){const b=loadJson(path['join'](AGENTS_DIR,'chain.json'));return resolveExpertsForRules([a],b,{'mode':'full'})['experts'];}function classifyEffort({routing:a,digest:b,manifest:c,scopedMode:d,fullChain:e,isDeltaFollowUp:f}={}){if(d)return'trivial';if(e)return'hard';if(a&&/full_screen_review/['test'](a['problem_type']))return'hard';if(a&&/stalemate/['test'](a['problem_type']))return'hard';if(b&&Array['isArray'](b['ds_at_risk'])&&b['ds_at_risk']['length'])return'hard';if(f)return'trivial';if(c&&c['tier']==='structured')return'trivial';if(c&&c['tier']==='arbitrate')return'standard';return'standard';}function resolveModel({manifest:a,effort:b,chain:c,config:d,defaultProvider:e,defaultModel:f,gateName:g}){let h=b;const i=c['gate_override'];g&&i&&(i['applies_to']||[])['includes'](g)&&(h=i['use_effort']||'hard');const j=a['effort_overrides']&&a['effort_overrides'][h]||{},k=c['effort_matrix']&&c['effort_matrix'][h]||{},l=d['orchestrator']?.['tiers']&&d['orchestrator']?.['tiers'][a['tier']]||{},m=j['provider']||k['provider']||l['provider']||e,n=j['model']||k['model']||l['model']||f,o=resolveTierProvider(m,e),p=j['max_output_tokens']||k['max_output_tokens']||d['orchestrator']?.['max_tokens']?.[a['tier']]||a['max_output_tokens'];return{'provider':o,'model':n,'maxTokens':p,'effort':h};}function ollamaJson(a,b,c,d,e){return new Promise(function(f,g){var h=a['indexOf']('https:')===0x0?require('https'):require('http'),i=new URL('/api/chat',a),j=JSON['stringify']({'model':b,'messages':[{'role':'system','content':c},{'role':'user','content':d}],'stream':![],'options':{'num_predict':e||0x4b0}}),k=h['request'](i['toString'](),{'method':'POST','headers':{'Content-Type':'application/json','Content-Length':Buffer['byteLength'](j)},'timeout':0xea60},function(l){var m=[];l['on']('data',function(n){m['push'](n);}),l['on']('end',function(){var n=Buffer['concat'](m)['toString']('utf8');try{var o=JSON['parse'](n);l['statusCode']>=0x190?g(new Error(o['error']||'Ollama\x20HTTP\x20'+l['statusCode'])):f(o);}catch(p){g(new Error('Bad\x20JSON\x20from\x20Ollama:\x20'+n['slice'](0x0,0xc8)));}});});k['on']('error',g),k['on']('timeout',function(){k['destroy'](),g(new Error('Ollama\x20timeout'));}),k['write'](j),k['end']();});}function httpsJson(a,b,c,d){return new Promise((e,f)=>{const g=JSON['stringify'](d),h=https['request']({'hostname':a,'path':b,'method':'POST','headers':{...c,'Content-Type':'application/json','Content-Length':Buffer['byteLength'](g)}},i=>{const j=[];i['on']('data',k=>j['push'](k)),i['on']('end',()=>{const k=Buffer['concat'](j)['toString']('utf8');try{const l=JSON['parse'](k);i['statusCode']>=0x190?f(new Error(l['error']?.['message']||l['message']||'HTTP\x20'+i['statusCode']+':\x20'+k['slice'](0x0,0xc8))):e(l);}catch(m){f(new Error('Bad\x20JSON\x20from\x20'+a+':\x20'+k['slice'](0x0,0xc8)));}});});h['on']('error',f),h['write'](g),h['end']();});}async function callLlm({provider:a,model:b,system:c,user:d,maxTokens:e,personaId:f,hostContext:g}){if(a==='host'){const i=await callHostLlm({'personaId':f,'system':c,'user':d,'maxTokens':e,'runContext':g});return enforceOutputCap(i,e);}let h='';if(a==='anthropic'){const j=process.env.ANTHROPIC_API_KEY;if(!j)throw new Error('ANTHROPIC_API_KEY\x20not\x20set');const k=await httpsJson('api.anthropic.com','/v1/messages',{'x-api-key':j,'anthropic-version':'2023-06-01'},{'model':b||'claude-sonnet-4-20250514','max_tokens':e||0x1000,'system':c,'messages':[{'role':'user','content':d}]});h=k['content']?.['map'](l=>l['text'])['join']('\x0a')||'';}else{if(a==='openai'){const l=process.env.OPENAI_API_KEY;if(!l)throw new Error('OPENAI_API_KEY\x20not\x20set');const m=await httpsJson('api.openai.com','/v1/chat/completions',{'Authorization':'Bearer\x20'+l},{'model':b||'gpt-4o','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=m['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='google'){const n=process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY;if(!n)throw new Error('GEMINI_API_KEY\x20not\x20set');const o=await httpsJson('generativelanguage.googleapis.com','/v1beta/openai/chat/completions',{'Authorization':'Bearer\x20'+n},{'model':b||'gemini-2.5-flash','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=o['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='zai'){const p=process.env.ZAI_API_KEY||process.env.ZHIPU_API_KEY;if(!p)throw new Error('ZAI_API_KEY\x20not\x20set');const q=await httpsJson('open.bigmodel.cn','/api/paas/v4/chat/completions',{'Authorization':'Bearer\x20'+p},{'model':b||'glm-4.5-flash','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=q['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='ollama'){const r=process.env.OLLAMA_BASE_URL||'http://localhost:11434',s=await ollamaJson(r,b||'llama3.1',c,d,e);h=s['message']?.['content']||s['response']||'';}else{if(a==='groq'){const t=process.env.GROQ_API_KEY;if(!t)throw new Error('GROQ_API_KEY\x20not\x20set');const u=await httpsJson('api.groq.com','/openai/v1/chat/completions',{'Authorization':'Bearer\x20'+t},{'model':b||'llama-3.1-8b-instant','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=u['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='together'){const v=process.env.TOGETHER_API_KEY;if(!v)throw new Error('TOGETHER_API_KEY\x20not\x20set');const w=await httpsJson('api.together.xyz','/v1/chat/completions',{'Authorization':'Bearer\x20'+v},{'model':b||'meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=w['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='openrouter'){const x=process.env.OPENROUTER_API_KEY;if(!x)throw new Error('OPENROUTER_API_KEY\x20not\x20set');const y=await httpsJson('openrouter.ai','/api/v1/chat/completions',{'Authorization':'Bearer\x20'+x,'HTTP-Referer':'https://github.com/joshirishi/analyzthis_design','X-Title':'analyzthis_design'},{'model':b||'meta-llama/llama-3.1-8b-instruct:free','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=y['choices']?.[0x0]?.['message']?.['content']||'';}else{if(a==='deepseek'){const z=process.env.DEEPSEEK_API_KEY;if(!z)throw new Error('DEEPSEEK_API_KEY\x20not\x20set');const A=await httpsJson('api.deepseek.com','/chat/completions',{'Authorization':'Bearer\x20'+z},{'model':b||'deepseek-chat','max_tokens':e||undefined,'messages':[{'role':'system','content':c},{'role':'user','content':d}]});h=A['choices']?.[0x0]?.['message']?.['content']||'';}else throw new Error('Unknown\x20provider\x20\x22'+a+'\x22.\x20Use\x20anthropic,\x20openai,\x20google,\x20zai,\x20ollama,\x20groq,\x20together,\x20openrouter,\x20deepseek,\x20or\x20host.');}}}}}}}}return enforceOutputCap(h,e);}async function runUnchunked(a={}){const {task:b,figma:figma='',dryRun:dryRun=![],project:c,output:d,experts:e=null,noDeliberate:noDeliberate=![],deliberate:deliberate=null,maxRounds:maxRounds=null,satisfaction:satisfaction=null,continueRun:continueRun=![],hostResponder:hostResponder=null}=a;if(!b)throw new Error('--task\x20is\x20required');const f=loadConfig(),g=deliberation['loadDeliberationConfig'](f),h=resolveDefaultProvider(f,a['provider']||f['orchestrator']?.['provider']||'auto'),i=a['model']||f['orchestrator']?.['model'],j=f['orchestrator']?.['mode']||'lite',k=a['full']?'full':a['lite']?'lite':j,l=noDeliberate?![]:deliberate!=null?deliberate:g['default_mode']!=='legacy';let m=session['show']({'project':c});if(!m){const O=session['init']({'project':c});m=session['show']({'project':O['projectId']});}const n=m['project_id'];let o=null;if(h==='host'&&!dryRun){if(continueRun&&m['host_run']?.['run_dir']){const P=loadHostManifest(m['host_run']['run_dir']);o={'runDir':m['host_run']['run_dir'],'manifest':P,'hostResponder':hostResponder};}else{if(!continueRun){const Q=createRun({'projectId':n,'task':b});o={'runDir':Q['runDir'],'manifest':Q['manifest'],'hostResponder':hostResponder},session['update']({'project':n,'patch':{'host_run':{'run_id':Q['runId'],'run_dir':Q['runDir'],'task':b,'status':'in_progress','started_at':new Date()['toISOString']()}}});}}}const p=loadJson(path['join'](AGENTS_DIR,'chain.json')),q=classifyProblems(b),{experts:r,full_chain:s,ideation_chain:t}=resolveExpertsForRules(q,p,{'mode':k,'explicitExperts':e}),u=[...new Set(q['flatMap'](R=>R['never_route_to']||[]))],v={'problem_type':q['map'](R=>R['problem_type'])['join']('+'),'experts':r,'never_route_to':u,'reason':e&&e['length']?'Explicit\x20--experts\x20override:\x20'+e['join'](',\x20'):'Matched\x20'+q['length']+'\x20rule(s)\x20['+q['map'](R=>R['problem_type'])['join'](',\x20')+']\x20in\x20\x22'+k+'\x22\x20mode'},w=Object['entries'](m['ds_checklist']||{})['filter'](([,R])=>R===![])['map'](([R])=>R),x=deliberation['getDeliberationGroups'](p,{'full_chain':s,'ideation_chain':t,'experts':r,'mode':k});session['update']({'project':n,'patch':{'routing_decision':v,'figma_node':figma?{'url':figma,'confirmed':![]}:m['figma_node'],'mode':'assess_only','task_map':m['task_map']?.['length']?m['task_map']:[{'task':b,'frequency':'unknown','priority':'P0'}],'digest':{...m['digest']||{},'task_map_summary':b['slice'](0x0,0xf0),'ds_at_risk':w,'experts':r,'mode':'assess_only'}}});const y={'project_id':n,'task':b,'figma':figma,'mode':k,'routing':v,'chain':r,'full_chain':s,'ideation_chain':t,'deliberation':l?{'mode':'adversarial','groups':x,'max_rounds':maxRounds??g['max_rounds'],'satisfaction_threshold':satisfaction??g['satisfaction_threshold']}:{'mode':'legacy'},'dry_run':dryRun,'provider':dryRun?null:h,'host_mode':h==='host'};if(dryRun)return console['log']('\x0a──\x20Dry\x20run\x20(no\x20LLM\x20calls)\x20──────────────────────────'),console['log'](JSON['stringify'](y,null,0x2)),console['log'](''),y;const z=k!=='full'&&!t,A=new Set(['noor','anuj']),B=!!(m['digest']&&m['digest']['prior_scores']&&Object['keys'](m['digest']['prior_scores']||{})['length']);let C=0x0,D=0x0;async function E(R,{isProduceRound:S,isObjectionRound:T}){const U=loadManifest(R),V=t&&A['has'](R),W=T&&!S,X=W?loadCard(U,R):s||V||S?loadSkill(U)['slice'](0x0,0x2ee0):loadCard(U,R),Y=W||z&&!V,Z=T?'\x0aDELIBERATION\x20REVIEW\x20MODE:\x20Read\x20prior\x20outputs\x20critically.\x20Low\x20satisfaction\x20default.\x20'+deliberation['DELIBERATION_JSON_HINT']:'',a0=['You\x20are\x20the\x20\x22'+R+'\x22\x20persona.\x20Follow\x20the\x20card/skill\x20instructions\x20exactly.','Allowed\x20jobs:\x20'+(U['allowed_jobs']||[])['join'](';\x20'),'Forbidden\x20jobs:\x20'+(U['forbidden_jobs']||[])['join'](';\x20'),'Assess-only\x20mode\x20is\x20ON\x20—\x20do\x20not\x20propose\x20code\x20edits\x20as\x20applied;\x20output\x20critique\x20only.',Y?'Use\x20the\x20LITE\x20objection\x20schema\x20—\x20short\x20grounding,\x20objections,\x20questions,\x20JSON\x20block.':S?'Use\x20the\x20DEEP\x20output\x20schema\x20(full\x20blocks\x20as\x20in\x20your\x20SKILL.md)\x20plus\x20deliberation\x20JSON.':'REVIEW\x20MODE:\x20object\x20to\x20prior\x20claims\x20with\x20evidence;\x20include\x20deliberation\x20JSON\x20block.',Z,'',X],a1=W?enforceSystemCap(a0['join']('\x0a'),0x157c):a0['join']('\x0a'),a2=classifyEffort({'routing':v,'digest':m['digest'],'manifest':U,'scopedMode':null,'fullChain':s,'isDeltaFollowUp':B}),a3=resolveModel({'manifest':U,'effort':T?'trivial':a2,'chain':p,'config':f,'defaultProvider':h,'defaultModel':i,'gateName':null});let a4=a1;try{const a5=lessons['retrieveLessons']({'task':b,'personaId':R,'limit':0x3});a5&&a5['lessons']&&a5['lessons']['length']&&(a4=a4+'\x0a\x0a'+lessons['buildLessonsInjection'](a5['lessons']));}catch{}return{'system':a4,'manifest':U,'effort':a3['effort'],'callProvider':a3['provider'],'callModel':a3['model'],'maxTokens':a3['maxTokens']};}function F(R,S){const T={'grades':{},'score':null,'top_fixes':[]},U=R['match'](/(\d+(?:\.\d+)?)\s*\/\s*5/);if(U)T['score']=Number(U[0x1]);const V=R['match'](/(\w+)\[([A-F])\]/gi);if(V)for(const X of V){const Y=X['match'](/(\w+)\[([A-F])\]/i);if(Y)T['grades'][Y[0x1]['toLowerCase']()]=Y[0x2]['toUpperCase']();}const W=R['match'](/Top\s*2\s*fixes:\s*1\.\s*([^\n]+)\s*2\.\s*([^\n]+)/i);return W&&(T['top_fixes']=[W[0x1]['trim'](),W[0x2]['trim']()]),T;}async function G(R,S,T,U){console['log']('\x0a⏳\x20Running\x20persona:\x20'+R+'...');const V=await callLlm({'provider':U['provider'],'model':U['model'],'system':S,'user':T,'maxTokens':U['maxTokens'],'personaId':R,'hostContext':o}),W=Math['ceil']((S['length']+T['length'])/0x4),X=Math['ceil'](V['length']/0x4),Y=f['pricing']&&f['pricing'][U['model']];return Y&&(D+=W/0xf4240*(Y['input_per_m']||0x0)+X/0xf4240*(Y['output_per_m']||0x0)),console['log']('✅\x20'+R+'\x20complete\x20('+V['length']+'\x20chars,\x20'+(U['effort']||'standard')+')'),{'text':V,'input_tokens_est':W,'output_tokens_est':X,'structured_output':F(V,R),'full_prompt':{'system':S,'user':T},'effort_log_entry':{'persona':R,'effort':U['effort']||'standard','model':U['model'],'scoped_mode':null}};}m=session['show']({'project':n})||m;let H;try{H=await deliberation['runDeliberation']({'chain':p,'experts':r,'full_chain':s,'ideation_chain':t,'mode':k,'task':b,'routing':v,'state':m,'figma':figma,'config':f,'callPersona':G,'loadPersonaContext':E,'buildReferencePack':async(R,S)=>{const T=await buildReferencePack(R,S,m);if(T?.['cacheHit'])C+=0x1;return T;},'noDeliberate':!l,'satisfaction_threshold':satisfaction!=null?Number(satisfaction):undefined,'max_rounds':maxRounds!=null?Number(maxRounds):undefined,'resume_checkpoint':continueRun?m['host_run']?.['checkpoint']:null});}catch(R){if(R['name']==='HostLlmPendingError'){session['update']({'project':n,'patch':{'persona_outputs':R['checkpoint']?.['persona_outputs']||m['persona_outputs'],'host_run':{...m['host_run']||{},'status':'pending_devi','last_pending':{'step_id':R['stepId'],'persona':R['personaId']},'checkpoint':R['checkpoint']||null}}}),printDeviInstructions(R);throw R;}throw R;}const I=synthesis['buildSynthesis'](H['persona_outputs'],{'deliberation':H['deliberation']}),J=figma?{'primary_task':'not_run','screenshots':[],'reason':'browser\x20automation\x20unavailable\x20in\x20standalone\x20runtime'}:{'primary_task':'not_run','screenshots':[],'reason':'assess_only,\x20no\x20URL'},K=Object['keys'](H['persona_outputs']),L={},M={};for(const [S,T]of Object['entries'](H['persona_outputs']||{})){if(T['full_prompt'])L[S]=T['full_prompt'];if(T['structured_output'])M[S]=T['structured_output'];}const N=session['update']({'project':n,'patch':{'persona_outputs':H['persona_outputs'],'full_prompts':L,'structured_outputs':M,'covered_points':H['covered_points']||[],'task_type':m['task_type']||classifyProblem(b)?.['problem_type']||'','deliberation':H['deliberation'],'synthesis':I['composite'],'synthesis_markdown':I['markdown'],'verify_results':J,'host_run':h==='host'?{...m['host_run']||{},'status':'complete','completed_at':new Date()['toISOString'](),'checkpoint':null}:m['host_run'],'digest':{...m['digest']||{},...H['digest_patch'],'experts':r},'metrics':{'llm_calls':H['metrics']['llm_calls'],'experts_run':K,'input_tokens_est':H['metrics']['input_tokens_est'],'output_tokens_est':H['metrics']['output_tokens_est'],'cache_hits':C,'mode':k,'effort_log':H['metrics']['effort_log'],'cost_usd':Number(D['toFixed'](0x6)),'deliberation_rounds':H['metrics']['deliberation_rounds'],'objections_raised':H['metrics']['objections_raised'],'objections_resolved':H['metrics']['objections_resolved'],'raj_escalations':H['metrics']['raj_escalations']}}});d&&(fs['writeFileSync'](path['resolve'](d),JSON['stringify'](N,null,0x2)),console['log']('\x0a✅\x20Wrote\x20session\x20state\x20to\x20'+path['resolve'](d)));console['log']('\x0a✅\x20Orchestrator\x20run\x20complete.\x20Experts\x20('+k+'):\x20'+r['join'](',\x20')),console['log']('\x20\x20\x20Provider:\x20'+h+(h==='host'?'\x20(Devi\x20host\x20bridge)':'')),console['log']('\x20\x20\x20Deliberation:\x20'+H['deliberation']['mode']+',\x20rounds='+H['metrics']['deliberation_rounds']+',\x20consensus='+H['deliberation']['consensus_reached']);if(H['deliberation']['raj_escalated'])console['log']('\x20\x20\x20Raj\x20escalated:\x20yes');console['log']('\x20\x20\x20Verdict:\x20'+I['composite']['verdict']+'\x20('+I['composite']['total']+'/'+I['composite']['max_total']+')'),console['log']('\x20\x20\x20Est.\x20tokens:\x20'+H['metrics']['input_tokens_est']+'\x20in\x20/\x20'+H['metrics']['output_tokens_est']+'\x20out');if(D)console['log']('\x20\x20\x20Est.\x20cost:\x20\x20\x20$'+D['toFixed'](0x4));return console['log']('\x20\x20\x20Session:\x20'+session['sessionPath'](n)),console['log']('\x0a──\x20Synthesis\x20──────────────────────────────────────'),console['log'](I['markdown']),console['log'](''),N;}async function run(a={}){if(a['unchunked'])return runUnchunked(a);const b=await chunkRun['runChunked'](a);if(b['mode']==='host_pending'||b['host_pending'])return b;if(b['mode']==='chunked_dry_run'||a['dryRun'])return b;const c=b['chunk_run']||b,d=c['synthesis'];console['log']('\x0a✅\x20Chunked\x20orchestrator\x20run\x20complete.');c['planner_warning']&&console['log']('\x20\x20\x20⚠\x20Planner:\x20'+c['planner_warning']);c['planner_model']&&console['log']('\x20\x20\x20Planner:\x20'+chunkModels['formatModelName'](c['planner_model']));console['log']('\x20\x20\x20Chunks:\x20\x20'+(c['results']||[])['length']),console['log']('\x20\x20\x20Failed:\x20\x20'+(c['failed_chunks']||[])['length']);c['models_used']&&c['models_used']['length']&&console['log']('\x20\x20\x20Models:\x20\x20'+c['models_used']['join'](',\x20'));console['log']('\x20\x20\x20Cost:\x20\x20\x20\x20$'+(c['total_cost']||0x0)['toFixed'](0x4));const e=c['total_tokens']||{'input':0x0,'output':0x0};return console['log']('\x20\x20\x20Tokens:\x20\x20'+e['input']+'\x20in\x20/\x20'+e['output']+'\x20out'),d&&console['log']('\x20\x20\x20Verdict:\x20'+(d['verdict']||'n/a')+'\x20('+(d['total']||0x0)+'/'+(d['max_total']||0x0)+')'),console['log']('\x20\x20\x20Session:\x20'+session['sessionPath'](b['project_id']||session['getProjectId']())),b['session'];}module['exports']={'run':run,'runUnchunked':runUnchunked,'classifyProblem':classifyProblem,'classifyProblems':classifyProblems,'resolveExperts':resolveExperts,'resolveExpertsForRules':resolveExpertsForRules,'loadManifest':loadManifest,'classifyEffort':classifyEffort,'resolveModel':resolveModel,'callLlm':callLlm,'loadConfig':loadConfig};if(require['main']===module){const args=process['argv']['slice'](0x2),get=a=>{const b=args['find'](d=>d['startsWith']('--'+a+'='));if(b)return b['split']('=')['slice'](0x1)['join']('=');const c=args['indexOf']('--'+a);if(c!==-0x1&&args[c+0x1]&&!args[c+0x1]['startsWith']('--'))return args[c+0x1];return null;},expertsArg=get('experts');run({'task':get('task'),'figma':get('figma')||'','provider':get('provider'),'model':get('model'),'dryRun':args['includes']('--dry-run'),'lite':args['includes']('--lite'),'full':args['includes']('--full'),'noDeliberate':args['includes']('--no-deliberate'),'deliberate':args['includes']('--deliberate')?!![]:null,'maxRounds':get('max-rounds'),'satisfaction':get('satisfaction'),'continueRun':args['includes']('--continue'),'experts':expertsArg?expertsArg['split'](',')['map'](a=>a['trim']())['filter'](Boolean):null,'project':get('project'),'output':get('output')})['catch'](a=>{console['error']('\x0a\x20\x20✗\x20\x20'+a['message']+'\x0a'),process['exit'](0x1);});}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var fs=require('fs'),path=require('path'),retrieve=require('./retrieve'),knowledge=require('./knowledge'),queryExpander=require('./query-expander'),ranker=require('./ranker'),PRODUCT_KEYWORDS=['saas','b2b','b2c','dashboard','analytics','e-commerce','ecommerce','fintech','healthcare','crm','marketplace','admin','enterprise','consumer','mobile','productivity','social','education','finance'],REFERENCE_MAP={'arjun':[{'file':'styles.csv','column':'Best\x20For\x20Tags','limit':0x3},{'file':'ux-guidelines.csv','column':'Category','limit':0x3},{'file':'ui-reasoning.csv','column':'UI\x20Category','limit':0x3},{'file':'charts.csv','column':'Data\x20Type','limit':0x3}],'zara':[{'file':'colors.csv','column':'Product\x20Type','limit':0x3},{'file':'typography.csv','column':'Best\x20For\x20Tags','limit':0x3},{'file':'styles.csv','column':'Best\x20For\x20Tags','limit':0x3},{'file':'landing.csv','column':'Keywords','limit':0x3},{'file':'icons.csv','column':'Keywords','limit':0x3}],'meera':[{'file':'products.csv','column':'Product\x20Type','limit':0x3},{'file':'ui-reasoning.csv','column':'UI\x20Category','limit':0x3},{'file':'landing.csv','column':'Keywords','limit':0x3}],'noor':[{'file':'ux-guidelines.csv','column':'Category','limit':0x3},{'file':'ui-reasoning.csv','column':'UI\x20Category','limit':0x3},{'file':'app-interface.csv','column':'Keywords','limit':0x3},{'file':'icons.csv','column':'Keywords','limit':0x3}],'anuj':[{'file':'ux-guidelines.csv','column':'Category','limit':0x3},{'file':'app-interface.csv','column':'Keywords','limit':0x3},{'file':'stacks/shadcn.csv','column':'Category','limit':0x3}],'priya':[{'file':'react-performance.csv','column':'Category','limit':0x3}],'raj':[{'file':'products.csv','column':'Product\x20Type','limit':0x3},{'file':'landing.csv','column':'Keywords','limit':0x3}]};function extractKeywords(a){var b=(a||'')['toLowerCase']();return PRODUCT_KEYWORDS['filter'](function(c){return b['indexOf'](c)!==-0x1;});}function detectStack(a){if(!a||!fs['existsSync'](path['join'](a,'Tech')))return null;var b=fs['readdirSync'](path['join'](a,'Tech'))['map'](function(e){return e['toLowerCase']();}),c=['nuxt-ui','nuxtjs','nextjs','shadcn','react-native','react','vue','angular','svelte','astro','html-tailwind','flutter','swiftui','jetpack-compose','laravel','threejs'];for(var d=0x0;d<c['length'];d++){if(b['some'](function(e){return e['indexOf'](c[d])!==-0x1;}))return c[d];}return null;}function getReferenceSpec(a,b){var c=REFERENCE_MAP[a];if(!c)return null;if(!Array['isArray'](c))c=[c];if(a==='priya'){var d=detectStack(b&&b['vault_path']);if(d)return[{'file':'stacks/'+d+'.csv','column':'Category','limit':0x3}];}return c;}async function buildReferencePack(a,b,c,d){var f=getReferenceSpec(a,c);if(!f||!f['length'])return null;var g=extractKeywords(b);if(!d)try{d=require('./orchestrator/run')['callLlm'];}catch(v){d=null;}if(d)try{var h=await queryExpander['expandQuery']({'task':b,'personaId':a,'callLlmFn':d,'provider':'host','model':'devi'});h&&h['terms']&&h['terms']['length']&&(g=h['terms']);}catch(w){}if(!g['length'])return null;var k=[],l=![];for(var m=0x0;m<f['length'];m++){var n=f[m];try{var o=retrieve['retrieve']({'file':n['file'],'filters':[{'column':n['column'],'anyOf':g}],'limit':0xa});if(o['cacheHit'])l=!![];if(!o['rows']['length'])continue;for(var p=0x0;p<o['rows']['length'];p++){var q=o['rows'][p];k['push']({'type':'reference','source':n['file'],'row':q['__no'],'content':q[n['column']]||''});}}catch(x){}}try{var r=knowledge['getPersonaSliceForPrompt'](c,a);for(var t=0x0;t<Math['min'](r['length'],0x5);t++){k['push']({'type':'knowledge','source':r[t]['title'],'row':0x0,'content':r[t]['content']['slice'](0x0,0xc8)});}}catch(y){}if(!k['length'])return null;if(d)try{var u=await ranker['rankCandidates']({'personaId':a,'task':b,'candidates':k,'callLlmFn':d,'provider':'host','model':'devi'});return{'cacheHit':l,'citations':u['ranked']['slice'](0x0,0x5)['map'](function(z){return'['+z['source']+(z['row']?',\x20row\x20'+z['row']:'')+':\x20\x22'+z['content']+'\x22]';})};}catch(z){}return{'cacheHit':l,'citations':k['slice'](0x0,0x5)['map'](function(A){return'['+A['source']+(A['row']?',\x20row\x20'+A['row']:'')+':\x20\x22'+A['content']+'\x22]';})};}module['exports']={'buildReferencePack':buildReferencePack,'getReferenceSpec':getReferenceSpec,'extractKeywords':extractKeywords,'detectStack':detectStack,'REFERENCE_MAP':REFERENCE_MAP,'PRODUCT_KEYWORDS':PRODUCT_KEYWORDS};
|