vibebusiness 1.2.84 → 1.2.87
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-build-manifest.json +25 -25
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/config/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/epics/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/kpis/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/goals/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/hypotheses/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/card/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/comments/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/implement/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/[id]/transition/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ideas/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/implementations/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/kpis/refresh/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/[id]/publish/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/[id]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/goals/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/goals/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/hypotheses/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/ideas/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/investors/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/investors/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/roadmap/public/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/roadmap/public/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/sessions/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +1 -1
- package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/social.html +1 -1
- package/.next/standalone/.next/server/app/social.rsc +1 -1
- package/.next/standalone/.next/server/app/updates/[id]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/updates/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/updates/new/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/updates/new.html +1 -1
- package/.next/standalone/.next/server/app/updates/new.rsc +1 -1
- package/.next/standalone/.next/server/app/updates/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/updates/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +11 -11
- package/.next/standalone/.next/server/chunks/6299.js +1 -1
- package/.next/standalone/.next/server/chunks/7151.js +10 -10
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/data/business-context.json +1 -1
- package/.next/standalone/data/goals.json +1 -1
- package/.next/standalone/data/ideas.json +25 -8
- package/.next/standalone/data/implementations.json +40 -2
- package/.next/standalone/data/reports/visuals/idea-3f4595f7-card.png +0 -0
- package/.next/standalone/data/reports/visuals/idea-4rxt3mkj-card.png +0 -0
- package/.next/standalone/data/reports/visuals/idea-6631456b-card.png +0 -0
- package/.next/standalone/data/reports/visuals/idea-boot-001-card.png +0 -0
- package/.next/standalone/data/reports/visuals/idea-fb3eba74-card.png +0 -0
- package/.next/standalone/data/reports/visuals/idea-prqf3lob-card.png +0 -0
- package/.next/standalone/package.json +1 -1
- package/.next/static/chunks/app/page-d325a95479e7c453.js +1 -0
- package/dist/bin/vibebusiness.js +2 -0
- package/dist/scripts/heartbeat.js +120 -6
- package/dist/scripts/scan.js +3 -0
- package/dist/scripts/social-routine.js +3 -0
- package/package.json +1 -1
- package/.next/static/chunks/app/page-01dbe60c967e1d7e.js +0 -1
- /package/.next/static/{wNtgcOjGe3Ddj1fZJp4v3 → kgtR3Ls8MG4aQqwp3I0UE}/_buildManifest.js +0 -0
- /package/.next/static/{wNtgcOjGe3Ddj1fZJp4v3 → kgtR3Ls8MG4aQqwp3I0UE}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=6299,exports.ids=[6299],exports.modules={9576:(t,e,a)=>{a.d(e,{Z:()=>l});var i=a(4770),n=a.n(i);let s={randomUUID:n().randomUUID},r=new Uint8Array(256),o=r.length,d=[];for(let t=0;t<256;++t)d.push((t+256).toString(16).slice(1));let l=function(t,e,a){if(s.randomUUID&&!e&&!t)return s.randomUUID();let i=(t=t||{}).random||(t.rng||function(){return o>r.length-16&&(n().randomFillSync(r),o=0),r.slice(o,o+=16)})();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){a=a||0;for(let t=0;t<16;++t)e[a+t]=i[t];return e}return function(t,e=0){return d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]}(i)}},6299:(t,e,a)=>{a.d(e,{BK:()=>ti,BM:()=>M,B_:()=>T,DT:()=>ta,Ge:()=>J,HX:()=>h,HZ:()=>D,Ir:()=>y,Iw:()=>_,KG:()=>tt,LB:()=>b,M6:()=>S,N0:()=>Y,NY:()=>I,Pk:()=>E,QV:()=>$,Rx:()=>j,Xe:()=>L,Z0:()=>te,_1:()=>B,a9:()=>v,ad:()=>x,b_:()=>f,c5:()=>Z,dZ:()=>O,iE:()=>P,k4:()=>A,kU:()=>U,lo:()=>X,pG:()=>m,pL:()=>w,rF:()=>V,rK:()=>K,s6:()=>k,t:()=>g,uQ:()=>d,x5:()=>H,zg:()=>G});var i=a(2048),n=a(5315),s=a.n(n),r=a(9576),o=a(2114);function d(){return process.env.AI_ANALYST_DATA_DIR||s().join(process.cwd(),"data")}function l(t){return s().join(d(),t)}async function c(){try{await i.promises.access(d())}catch{await i.promises.mkdir(d(),{recursive:!0})}}async function u(t,e){try{let e=await i.promises.readFile(t,"utf-8");return JSON.parse(e)}catch{return e}}async function p(t,e){await c(),await i.promises.writeFile(t,JSON.stringify(e,null,2),"utf-8")}async function _(){let t=await u(l("ideas.json"),{ideas:[]}),e=["critical","high","medium","low"],a=["xs","s","m","l","xl"];return t.ideas.map(t=>({...t,stage:t.stage??t.status??"inbox",priority:e.includes(t.priority)?t.priority:"medium",impact:a.includes(t.impact)?t.impact:"m",effort:a.includes(t.effort)?t.effort:"s",epic_id:t.epic_id??null,implementation:{...t.implementation,sub_tasks:t.implementation?.sub_tasks||[]}}))}async function f(t){return(await _()).find(e=>e.id===t)||null}async function g(t){let e=await _(),a=new Date().toISOString(),i={id:`idea-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,summary:t.summary,category:t.category,priority:t.priority,effort:t.effort,impact:t.impact,context:t.context,rationale:t.rationale,implementation_plan:t.implementation_plan,success_metrics:t.success_metrics,stage:"inbox",source:t.source,implementation:{branch_name:null,pr_url:null,pr_number:null,commits:[],started_at:null,completed_at:null,sub_tasks:[]},comments:[],tags:t.tags||[],related_ideas:[],goal_id:t.goal_id||null,expected_impact:t.expected_impact||null,hypothesis_id:t.hypothesis_id||null,epic_id:t.epic_id||null,prerequisites:t.prerequisites};return e.push(i),await p(l("ideas.json"),{ideas:e}),i.hypothesis_id&&await F(i.hypothesis_id,i.id),i}async function m(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("ideas.json"),{ideas:a}),n}async function w(t,e,a){let i=await _(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n],d=new Date().toISOString();if(a){let t={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:d,author:"human",author_name:"Founder",content:a};s.comments.push(t)}if(s.stage=e,s.updated_at=d,"in_progress"!==e||s.implementation.started_at){if("shipped"===e){s.implementation.completed_at=d;let t=[];if(s.goal_id){let e=(await S()).find(t=>t.id===s.goal_id);if(e)for(let a of e.kpis)t.push({goal_id:e.id,kpi_id:a.id,kpi_name:a.name,value:a.current_value,date:d})}s.verification={...o.Lu,kpi_snapshot_at_ship:t}}}else s.implementation.started_at=d;return i[n]=s,await p(l("ideas.json"),{ideas:i}),s}async function y(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:new Date().toISOString(),author:e.author,author_name:e.author_name,content:e.content};return a[i].comments.push(n),a[i].updated_at=new Date().toISOString(),await p(l("ideas.json"),{ideas:a}),n}async function h(t){let e=await _(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("ideas.json"),{ideas:e}),!0)}async function j(){return(await u(l("sessions.json"),{sessions:[]})).sessions}async function x(){return(await u(l("implementations.json"),{implementations:[]})).implementations}async function I(t){return(await x()).find(e=>e.idea_id===t&&"failed"!==e.status)||null}async function S(){return(await u(l("goals.json"),{goals:[]})).goals}async function v(t){return(await S()).find(e=>e.id===t)||null}async function D(t){let e=await S(),a=new Date().toISOString(),i=(t.kpis||[]).map((t,e)=>({...t,id:`kpi-${(0,r.Z)().slice(0,8)}`,history:[]})),n={id:`goal-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,target_value:t.target_value,target_unit:t.target_unit,current_value:null,baseline_value:t.baseline_value||0,deadline:t.deadline,status:"on_track",kpis:i,related_ideas:[]};return e.push(n),await p(l("goals.json"),{goals:e}),n}async function b(t,e){let a=await S(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("goals.json"),{goals:a}),n}async function k(t){let e=await S(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("goals.json"),{goals:e}),!0)}async function O(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={...i[n].kpis[s],...a};return i[n].kpis[s]=r,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),r}async function $(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={date:a.date||new Date().toISOString().split("T")[0],value:a.value};return i[n].kpis[s].history.push(r),i[n].kpis[s].current_value=a.value,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),i[n].kpis[s]}async function Z(){return(await u(l("hypotheses.json"),{hypotheses:[]})).hypotheses}async function U(t){return(await Z()).find(e=>e.id===t)||null}async function M(t){let e=await Z(),a=new Date().toISOString(),i=`hyp-${(0,r.Z)().slice(0,8)}`;if(e.some(t=>t.id===i))throw console.error(`[createHypothesis] Hypothesis ID collision detected: ${i}`),Error(`Hypothesis ID collision detected: ${i}`);console.debug(`[createHypothesis] created id=${i}`);let n={id:i,created_at:a,updated_at:a,title:t.title,statement:t.statement,description:t.description,funnel_stage:t.funnel_stage,priority:t.priority,status:"stated",evidence_for:[],evidence_against:[],validation_criteria:[],validation_ideas:[],reference_model:t.reference_model,effort_to_test:t.effort_to_test,tags:t.tags||[]};return e.push(n),await p(l("hypotheses.json"),{hypotheses:e}),n}async function A(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("hypotheses.json"),{hypotheses:a}),n}async function H(t){let e=await Z(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("hypotheses.json"),{hypotheses:e}),!0)}async function F(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);return -1===i?null:(a[i].validation_ideas.includes(e)||(a[i].validation_ideas.push(e),a[i].updated_at=new Date().toISOString(),await p(l("hypotheses.json"),{hypotheses:a})),a[i])}let N={xs:1,s:2,m:3,l:5,xl:8};function L(t,e){let a=e.filter(e=>t.idea_ids.includes(e.id)),i={},n=0,s=0;for(let t of a){i[t.stage]=(i[t.stage]||0)+1;let e=N[t.effort]||3;n+=e,"shipped"===t.stage&&(s+=e)}let r=i.shipped||0,o=a.length;return{total_ideas:o,by_stage:i,shipped_count:r,progress_pct:o>0?Math.round(r/o*100):0,effort_total:n,effort_completed:s}}function q(t,e){if(t.status_override)return t.status;let a=e.filter(e=>t.idea_ids.includes(e.id));return 0===a.length?"planned":a.every(t=>"shipped"===t.stage||"rejected"===t.stage)?"completed":a.some(t=>"in_progress"===t.stage||"testing"===t.stage)?"active":"planned"}async function B(){let t=await u(l("roadmap.json"),{epics:[]}),e=await _();return t.epics.map(t=>({...t,status:q(t,e)}))}async function G(t){return(await B()).find(e=>e.id===t)||null}async function T(t){let e=await u(l("roadmap.json"),{epics:[]}),a=new Date().toISOString(),i={id:`epic-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,goal_id:t.goal_id??null,hypothesis_id:t.hypothesis_id??null,idea_ids:t.idea_ids||[],target_start:t.target_start??null,target_end:t.target_end??null,status:"planned",status_override:!1,depends_on:t.depends_on||[],sort_order:t.sort_order??e.epics.length,auto_generated:t.auto_generated??!1,rationale:t.rationale??null,tags:t.tags||[]};if(e.epics.push(i),await p(l("roadmap.json"),e),i.idea_ids.length>0){let t=await _(),e=!1;for(let a of t)i.idea_ids.includes(a.id)&&a.epic_id!==i.id&&(a.epic_id=i.id,e=!0);e&&await p(l("ideas.json"),{ideas:t})}return i}async function K(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a.epics[i],...e,updated_at:new Date().toISOString()};a.epics[i]=n,await p(l("roadmap.json"),a);let s=await _();return n.status=q(n,s),n}async function Y(t){let e=await u(l("roadmap.json"),{epics:[]}),a=e.epics.findIndex(e=>e.id===t);if(-1===a)return!1;let i=e.epics[a];if(e.epics.splice(a,1),await p(l("roadmap.json"),e),i.idea_ids.length>0){let e=await _(),a=!1;for(let i of e)i.epic_id===t&&(i.epic_id=null,a=!0);a&&await p(l("ideas.json"),{ideas:e})}return!0}async function E(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;a.epics[i].idea_ids.includes(e)||(a.epics[i].idea_ids.push(e),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let n=await _(),s=n.find(t=>t.id===e);return s&&s.epic_id!==t&&(s.epic_id=t,await p(l("ideas.json"),{ideas:n})),a.epics[i]}async function J(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n=a.epics[i].idea_ids.indexOf(e);-1!==n&&(a.epics[i].idea_ids.splice(n,1),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let s=await _(),r=s.find(t=>t.id===e);return r&&r.epic_id===t&&(r.epic_id=null,await p(l("ideas.json"),{ideas:s})),a.epics[i]}function Q(t,e){let a=new Date(t),i=0;for(;i<e;){a.setDate(a.getDate()+1);let t=a.getDay();0!==t&&6!==t&&i++}return a}function R(t){let[e,a,i]=t.split("-").map(Number);return new Date(e,a-1,i)}function X(t,e,a){let i=new Map,n=new Date;n.setHours(0,0,0,0);let s=new Map;for(let e of[...t].sort((t,e)=>t.sort_order-e.sort_order)){let t=e.goal_id,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[,t]of Array.from(s.entries())){let a=new Date(n);for(let n of t){if(n.target_start&&n.target_end){i.set(n.id,{start:n.target_start,end:n.target_end});let t=R(n.target_end);t>=a&&(a=Q(t,1));continue}let t=e.filter(t=>n.idea_ids.includes(t.id)),s=0;for(let e of t)s+=N[e.effort]||3;let r=Math.max(1,Math.ceil(s/4)),o=n.target_start||z(a),d=n.target_start?R(n.target_start):new Date(a),l=n.target_end?R(n.target_end):Q(d,r),c=n.target_end||z(l);i.set(n.id,{start:o,end:c}),a=Q(l,1)}}return i}function z(t){let e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${i}`}let C={repos:[],workspace_dir:"",schedules:{quick:{focus:["recent_changes","todos","errors","fixme"],max_ideas:5},deep:{focus:["architecture","tech_debt","security","patterns","dependencies"],max_ideas:15},metrics:{focus:["funnels","dropoffs","conversions","performance"],max_ideas:10},seo:{focus:["blog_performance","technical_seo","content_gaps","backlinks"],max_ideas:8}}};async function P(){return u(l("config.json"),C)}async function V(t){await p(l("config.json"),t)}async function W(){try{await i.promises.access(l("config.json"))}catch{await p(l("config.json"),C)}}async function tt(){await c(),await W();try{await i.promises.access(l("ideas.json"))}catch{await p(l("ideas.json"),{ideas:[]})}try{await i.promises.access(l("sessions.json"))}catch{await p(l("sessions.json"),{sessions:[]})}try{await i.promises.access(l("implementations.json"))}catch{await p(l("implementations.json"),{implementations:[]})}try{await i.promises.access(l("goals.json"))}catch{await p(l("goals.json"),{goals:[]})}try{await i.promises.access(l("hypotheses.json"))}catch{await p(l("hypotheses.json"),{hypotheses:[]})}try{await i.promises.access(l("roadmap.json"))}catch{await p(l("roadmap.json"),{epics:[]})}try{await i.promises.access(l("investor-updates.json"))}catch{await p(l("investor-updates.json"),{updates:[]})}}async function te(){return(await u(l("investor-updates.json"),{updates:[]})).updates.sort((t,e)=>e.period_end.localeCompare(t.period_end))}async function ta(t){return(await te()).find(e=>e.id===t)||null}async function ti(t,e){let a=await u(l("investor-updates.json"),{updates:[]}),i=a.updates.findIndex(e=>e.id===t);return -1===i?null:(a.updates[i].status=e,await p(l("investor-updates.json"),a),a.updates[i])}},2114:(t,e,a)=>{a.d(e,{Lu:()=>n,pG:()=>i});let i={product:"bg-blue-100 text-blue-800",ux_design:"bg-purple-100 text-purple-800",growth:"bg-green-100 text-green-800",performance:"bg-orange-100 text-orange-800",tech_debt:"bg-yellow-100 text-yellow-800",security:"bg-red-100 text-red-800",infrastructure:"bg-gray-100 text-gray-800",content:"bg-pink-100 text-pink-800",analytics:"bg-cyan-100 text-cyan-800",integration:"bg-indigo-100 text-indigo-800"},n={status:"pending",first_evaluated_at:null,last_evaluated_at:null,evaluation_count:0,next_evaluation_after:null,summary:null,metric_evaluations:[],confidence:null,follow_up_idea_ids:[],requires_human_review:!1,human_review_reason:null,kpi_snapshot_at_ship:[]}}};
|
|
1
|
+
"use strict";exports.id=6299,exports.ids=[6299],exports.modules={9576:(t,e,a)=>{a.d(e,{Z:()=>l});var i=a(4770),n=a.n(i);let s={randomUUID:n().randomUUID},r=new Uint8Array(256),o=r.length,d=[];for(let t=0;t<256;++t)d.push((t+256).toString(16).slice(1));let l=function(t,e,a){if(s.randomUUID&&!e&&!t)return s.randomUUID();let i=(t=t||{}).random||(t.rng||function(){return o>r.length-16&&(n().randomFillSync(r),o=0),r.slice(o,o+=16)})();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){a=a||0;for(let t=0;t<16;++t)e[a+t]=i[t];return e}return function(t,e=0){return d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]}(i)}},6299:(t,e,a)=>{a.d(e,{BK:()=>ti,BM:()=>M,B_:()=>T,DT:()=>ta,Ge:()=>J,HX:()=>h,HZ:()=>D,Ir:()=>y,Iw:()=>_,KG:()=>tt,LB:()=>b,M6:()=>S,N0:()=>Y,NY:()=>I,Pk:()=>E,QV:()=>$,Rx:()=>j,Xe:()=>L,Z0:()=>te,_1:()=>B,a9:()=>v,ad:()=>x,b_:()=>f,c5:()=>Z,dZ:()=>O,iE:()=>P,k4:()=>A,kU:()=>U,lo:()=>X,pG:()=>m,pL:()=>w,rF:()=>V,rK:()=>K,s6:()=>k,t:()=>g,uQ:()=>d,x5:()=>H,zg:()=>G});var i=a(2048),n=a(5315),s=a.n(n),r=a(9576),o=a(2114);function d(){return process.env.AI_ANALYST_DATA_DIR||s().join(process.cwd(),"data")}function l(t){return s().join(d(),t)}async function c(){try{await i.promises.access(d())}catch{await i.promises.mkdir(d(),{recursive:!0})}}async function u(t,e){try{let e=await i.promises.readFile(t,"utf-8");return JSON.parse(e)}catch{return e}}async function p(t,e){await c(),await i.promises.writeFile(t,JSON.stringify(e,null,2),"utf-8")}async function _(){let t=await u(l("ideas.json"),{ideas:[]}),e=["critical","high","medium","low"],a=["xs","s","m","l","xl"];return t.ideas.map(t=>({...t,stage:t.stage??t.status??"inbox",priority:e.includes(t.priority)?t.priority:"medium",impact:a.includes(t.impact)?t.impact:"m",effort:a.includes(t.effort)?t.effort:"s",comments:t.comments??[],tags:t.tags??[],epic_id:t.epic_id??null,implementation:{...t.implementation,sub_tasks:t.implementation?.sub_tasks||[]}}))}async function f(t){return(await _()).find(e=>e.id===t)||null}async function g(t){let e=await _(),a=new Date().toISOString(),i={id:`idea-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,summary:t.summary,category:t.category,priority:t.priority,effort:t.effort,impact:t.impact,context:t.context,rationale:t.rationale,implementation_plan:t.implementation_plan,success_metrics:t.success_metrics,stage:"inbox",source:t.source,implementation:{branch_name:null,pr_url:null,pr_number:null,commits:[],started_at:null,completed_at:null,sub_tasks:[]},comments:[],tags:t.tags||[],related_ideas:[],goal_id:t.goal_id||null,expected_impact:t.expected_impact||null,hypothesis_id:t.hypothesis_id||null,epic_id:t.epic_id||null,prerequisites:t.prerequisites};return e.push(i),await p(l("ideas.json"),{ideas:e}),i.hypothesis_id&&await F(i.hypothesis_id,i.id),i}async function m(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("ideas.json"),{ideas:a}),n}async function w(t,e,a){let i=await _(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n],d=new Date().toISOString();if(a){let t={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:d,author:"human",author_name:"Founder",content:a};s.comments.push(t)}if(s.stage=e,s.updated_at=d,"in_progress"!==e||s.implementation.started_at){if("shipped"===e){s.implementation.completed_at=d;let t=[];if(s.goal_id){let e=(await S()).find(t=>t.id===s.goal_id);if(e)for(let a of e.kpis)t.push({goal_id:e.id,kpi_id:a.id,kpi_name:a.name,value:a.current_value,date:d})}s.verification={...o.Lu,kpi_snapshot_at_ship:t}}}else s.implementation.started_at=d;return i[n]=s,await p(l("ideas.json"),{ideas:i}),s}async function y(t,e){let a=await _(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={id:`comment-${(0,r.Z)().slice(0,8)}`,created_at:new Date().toISOString(),author:e.author,author_name:e.author_name,content:e.content};return a[i].comments.push(n),a[i].updated_at=new Date().toISOString(),await p(l("ideas.json"),{ideas:a}),n}async function h(t){let e=await _(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("ideas.json"),{ideas:e}),!0)}async function j(){return(await u(l("sessions.json"),{sessions:[]})).sessions}async function x(){return(await u(l("implementations.json"),{implementations:[]})).implementations}async function I(t){return(await x()).find(e=>e.idea_id===t&&"failed"!==e.status)||null}async function S(){return(await u(l("goals.json"),{goals:[]})).goals}async function v(t){return(await S()).find(e=>e.id===t)||null}async function D(t){let e=await S(),a=new Date().toISOString(),i=(t.kpis||[]).map((t,e)=>({...t,id:`kpi-${(0,r.Z)().slice(0,8)}`,history:[]})),n={id:`goal-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,target_value:t.target_value,target_unit:t.target_unit,current_value:null,baseline_value:t.baseline_value||0,deadline:t.deadline,status:"on_track",kpis:i,related_ideas:[]};return e.push(n),await p(l("goals.json"),{goals:e}),n}async function b(t,e){let a=await S(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("goals.json"),{goals:a}),n}async function k(t){let e=await S(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("goals.json"),{goals:e}),!0)}async function O(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={...i[n].kpis[s],...a};return i[n].kpis[s]=r,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),r}async function $(t,e,a){let i=await S(),n=i.findIndex(e=>e.id===t);if(-1===n)return null;let s=i[n].kpis.findIndex(t=>t.id===e);if(-1===s)return null;let r={date:a.date||new Date().toISOString().split("T")[0],value:a.value};return i[n].kpis[s].history.push(r),i[n].kpis[s].current_value=a.value,i[n].updated_at=new Date().toISOString(),await p(l("goals.json"),{goals:i}),i[n].kpis[s]}async function Z(){return(await u(l("hypotheses.json"),{hypotheses:[]})).hypotheses}async function U(t){return(await Z()).find(e=>e.id===t)||null}async function M(t){let e=await Z(),a=new Date().toISOString(),i=`hyp-${(0,r.Z)().slice(0,8)}`;if(e.some(t=>t.id===i))throw console.error(`[createHypothesis] Hypothesis ID collision detected: ${i}`),Error(`Hypothesis ID collision detected: ${i}`);console.debug(`[createHypothesis] created id=${i}`);let n={id:i,created_at:a,updated_at:a,title:t.title,statement:t.statement,description:t.description,funnel_stage:t.funnel_stage,priority:t.priority,status:"stated",evidence_for:[],evidence_against:[],validation_criteria:[],validation_ideas:[],reference_model:t.reference_model,effort_to_test:t.effort_to_test,tags:t.tags||[]};return e.push(n),await p(l("hypotheses.json"),{hypotheses:e}),n}async function A(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a[i],...e,updated_at:new Date().toISOString()};return a[i]=n,await p(l("hypotheses.json"),{hypotheses:a}),n}async function H(t){let e=await Z(),a=e.findIndex(e=>e.id===t);return -1!==a&&(e.splice(a,1),await p(l("hypotheses.json"),{hypotheses:e}),!0)}async function F(t,e){let a=await Z(),i=a.findIndex(e=>e.id===t);return -1===i?null:(a[i].validation_ideas.includes(e)||(a[i].validation_ideas.push(e),a[i].updated_at=new Date().toISOString(),await p(l("hypotheses.json"),{hypotheses:a})),a[i])}let N={xs:1,s:2,m:3,l:5,xl:8};function L(t,e){let a=e.filter(e=>t.idea_ids.includes(e.id)),i={},n=0,s=0;for(let t of a){i[t.stage]=(i[t.stage]||0)+1;let e=N[t.effort]||3;n+=e,"shipped"===t.stage&&(s+=e)}let r=i.shipped||0,o=a.length;return{total_ideas:o,by_stage:i,shipped_count:r,progress_pct:o>0?Math.round(r/o*100):0,effort_total:n,effort_completed:s}}function q(t,e){if(t.status_override)return t.status;let a=e.filter(e=>t.idea_ids.includes(e.id));return 0===a.length?"planned":a.every(t=>"shipped"===t.stage||"rejected"===t.stage)?"completed":a.some(t=>"in_progress"===t.stage||"testing"===t.stage)?"active":"planned"}async function B(){let t=await u(l("roadmap.json"),{epics:[]}),e=await _();return t.epics.map(t=>({...t,status:q(t,e)}))}async function G(t){return(await B()).find(e=>e.id===t)||null}async function T(t){let e=await u(l("roadmap.json"),{epics:[]}),a=new Date().toISOString(),i={id:`epic-${(0,r.Z)().slice(0,8)}`,created_at:a,updated_at:a,title:t.title,description:t.description,category:t.category,goal_id:t.goal_id??null,hypothesis_id:t.hypothesis_id??null,idea_ids:t.idea_ids||[],target_start:t.target_start??null,target_end:t.target_end??null,status:"planned",status_override:!1,depends_on:t.depends_on||[],sort_order:t.sort_order??e.epics.length,auto_generated:t.auto_generated??!1,rationale:t.rationale??null,tags:t.tags||[]};if(e.epics.push(i),await p(l("roadmap.json"),e),i.idea_ids.length>0){let t=await _(),e=!1;for(let a of t)i.idea_ids.includes(a.id)&&a.epic_id!==i.id&&(a.epic_id=i.id,e=!0);e&&await p(l("ideas.json"),{ideas:t})}return i}async function K(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n={...a.epics[i],...e,updated_at:new Date().toISOString()};a.epics[i]=n,await p(l("roadmap.json"),a);let s=await _();return n.status=q(n,s),n}async function Y(t){let e=await u(l("roadmap.json"),{epics:[]}),a=e.epics.findIndex(e=>e.id===t);if(-1===a)return!1;let i=e.epics[a];if(e.epics.splice(a,1),await p(l("roadmap.json"),e),i.idea_ids.length>0){let e=await _(),a=!1;for(let i of e)i.epic_id===t&&(i.epic_id=null,a=!0);a&&await p(l("ideas.json"),{ideas:e})}return!0}async function E(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;a.epics[i].idea_ids.includes(e)||(a.epics[i].idea_ids.push(e),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let n=await _(),s=n.find(t=>t.id===e);return s&&s.epic_id!==t&&(s.epic_id=t,await p(l("ideas.json"),{ideas:n})),a.epics[i]}async function J(t,e){let a=await u(l("roadmap.json"),{epics:[]}),i=a.epics.findIndex(e=>e.id===t);if(-1===i)return null;let n=a.epics[i].idea_ids.indexOf(e);-1!==n&&(a.epics[i].idea_ids.splice(n,1),a.epics[i].updated_at=new Date().toISOString(),await p(l("roadmap.json"),a));let s=await _(),r=s.find(t=>t.id===e);return r&&r.epic_id===t&&(r.epic_id=null,await p(l("ideas.json"),{ideas:s})),a.epics[i]}function Q(t,e){let a=new Date(t),i=0;for(;i<e;){a.setDate(a.getDate()+1);let t=a.getDay();0!==t&&6!==t&&i++}return a}function R(t){let[e,a,i]=t.split("-").map(Number);return new Date(e,a-1,i)}function X(t,e,a){let i=new Map,n=new Date;n.setHours(0,0,0,0);let s=new Map;for(let e of[...t].sort((t,e)=>t.sort_order-e.sort_order)){let t=e.goal_id,a=s.get(t);a?a.push(e):s.set(t,[e])}for(let[,t]of Array.from(s.entries())){let a=new Date(n);for(let n of t){if(n.target_start&&n.target_end){i.set(n.id,{start:n.target_start,end:n.target_end});let t=R(n.target_end);t>=a&&(a=Q(t,1));continue}let t=e.filter(t=>n.idea_ids.includes(t.id)),s=0;for(let e of t)s+=N[e.effort]||3;let r=Math.max(1,Math.ceil(s/4)),o=n.target_start||z(a),d=n.target_start?R(n.target_start):new Date(a),l=n.target_end?R(n.target_end):Q(d,r),c=n.target_end||z(l);i.set(n.id,{start:o,end:c}),a=Q(l,1)}}return i}function z(t){let e=t.getFullYear(),a=String(t.getMonth()+1).padStart(2,"0"),i=String(t.getDate()).padStart(2,"0");return`${e}-${a}-${i}`}let C={repos:[],workspace_dir:"",schedules:{quick:{focus:["recent_changes","todos","errors","fixme"],max_ideas:5},deep:{focus:["architecture","tech_debt","security","patterns","dependencies"],max_ideas:15},metrics:{focus:["funnels","dropoffs","conversions","performance"],max_ideas:10},seo:{focus:["blog_performance","technical_seo","content_gaps","backlinks"],max_ideas:8}}};async function P(){return u(l("config.json"),C)}async function V(t){await p(l("config.json"),t)}async function W(){try{await i.promises.access(l("config.json"))}catch{await p(l("config.json"),C)}}async function tt(){await c(),await W();try{await i.promises.access(l("ideas.json"))}catch{await p(l("ideas.json"),{ideas:[]})}try{await i.promises.access(l("sessions.json"))}catch{await p(l("sessions.json"),{sessions:[]})}try{await i.promises.access(l("implementations.json"))}catch{await p(l("implementations.json"),{implementations:[]})}try{await i.promises.access(l("goals.json"))}catch{await p(l("goals.json"),{goals:[]})}try{await i.promises.access(l("hypotheses.json"))}catch{await p(l("hypotheses.json"),{hypotheses:[]})}try{await i.promises.access(l("roadmap.json"))}catch{await p(l("roadmap.json"),{epics:[]})}try{await i.promises.access(l("investor-updates.json"))}catch{await p(l("investor-updates.json"),{updates:[]})}}async function te(){return(await u(l("investor-updates.json"),{updates:[]})).updates.sort((t,e)=>e.period_end.localeCompare(t.period_end))}async function ta(t){return(await te()).find(e=>e.id===t)||null}async function ti(t,e){let a=await u(l("investor-updates.json"),{updates:[]}),i=a.updates.findIndex(e=>e.id===t);return -1===i?null:(a.updates[i].status=e,await p(l("investor-updates.json"),a),a.updates[i])}},2114:(t,e,a)=>{a.d(e,{Lu:()=>n,pG:()=>i});let i={product:"bg-blue-100 text-blue-800",ux_design:"bg-purple-100 text-purple-800",growth:"bg-green-100 text-green-800",performance:"bg-orange-100 text-orange-800",tech_debt:"bg-yellow-100 text-yellow-800",security:"bg-red-100 text-red-800",infrastructure:"bg-gray-100 text-gray-800",content:"bg-pink-100 text-pink-800",analytics:"bg-cyan-100 text-cyan-800",integration:"bg-indigo-100 text-indigo-800"},n={status:"pending",first_evaluated_at:null,last_evaluated_at:null,evaluation_count:0,next_evaluation_after:null,summary:null,metric_evaluations:[],confidence:null,follow_up_idea_ids:[],requires_human_review:!1,human_review_reason:null,kpi_snapshot_at_ship:[]}}};
|