@pushpalsdev/cli 1.0.72 → 1.0.73

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.
@@ -1539,6 +1539,28 @@ function resolveGitStateFilePath(repoRoot, fileName) {
1539
1539
 
1540
1540
  // ../shared/src/session_event_visibility.ts
1541
1541
  var HEARTBEAT_STATUS_RE = /\bheartbeat\b/i;
1542
+ var ALWAYS_VISIBLE_EVENT_TYPES = new Set(["question_asked"]);
1543
+ function isRecord(value) {
1544
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
1545
+ }
1546
+ function isAutonomyMarker(value) {
1547
+ return String(value ?? "").trim().toLowerCase() === "autonomy";
1548
+ }
1549
+ function hasAutonomyPayloadMarker(value) {
1550
+ if (!isRecord(value))
1551
+ return false;
1552
+ if (isAutonomyMarker(value.origin))
1553
+ return true;
1554
+ if (isAutonomyMarker(value.createdBy))
1555
+ return true;
1556
+ if (isRecord(value.autonomy))
1557
+ return true;
1558
+ if (Array.isArray(value.tags) && value.tags.some(isAutonomyMarker))
1559
+ return true;
1560
+ if (isRecord(value.params) && hasAutonomyPayloadMarker(value.params))
1561
+ return true;
1562
+ return false;
1563
+ }
1542
1564
  function isHeartbeatStatusSessionEvent(event) {
1543
1565
  const type = String(event?.type ?? "").trim().toLowerCase();
1544
1566
  if (type !== "status")
@@ -1549,8 +1571,19 @@ function isHeartbeatStatusSessionEvent(event) {
1549
1571
  return HEARTBEAT_STATUS_RE.test(detail) || HEARTBEAT_STATUS_RE.test(message);
1550
1572
  }
1551
1573
  function shouldDisplayInteractiveSessionEvent(event) {
1574
+ const type = String(event?.type ?? "").trim().toLowerCase();
1575
+ if (ALWAYS_VISIBLE_EVENT_TYPES.has(type))
1576
+ return true;
1577
+ if (isAutonomyOriginSessionEvent(event))
1578
+ return false;
1552
1579
  return !isHeartbeatStatusSessionEvent(event);
1553
1580
  }
1581
+ function isAutonomyOriginSessionEvent(event) {
1582
+ const from = String(event?.from ?? "").toLowerCase();
1583
+ if (/(^|[/:._-])autonomy($|[/:._-])/.test(from))
1584
+ return true;
1585
+ return hasAutonomyPayloadMarker(event?.payload);
1586
+ }
1554
1587
 
1555
1588
  // ../../scripts/pushpals-cli.ts
1556
1589
  var DEFAULT_MONITOR_PORT = 8081;
@@ -435,5 +435,5 @@ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-web
435
435
  @keyframes r-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
436
436
  @keyframes r-imtty0{0%{opacity:0;}100%{opacity:1;}}
437
437
  @keyframes r-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
438
- @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"></div></div><script src="/_expo/static/js/web/entry-d69cc703f72afa383e4108efd6e0f726.js" defer></script>
438
+ @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"></div></div><script src="/_expo/static/js/web/entry-c6862f701ea52ccf8692a6c9e749af5c.js" defer></script>
439
439
  </body></html>
@@ -1034,7 +1034,7 @@ __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e
1034
1034
  __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.RequestsPane=function(e){const o=(0,t.c)(34),{theme:x,rows:h,counts:S,pendingSnapshot:b}=e;let j;o[0]!==b?(j=new Map(b.map(p)),o[0]=b,o[1]=j):j=o[1];const q=j;let M;o[2]!==S?(M=(0,u.queueValue)(S,"pending"),o[2]=S,o[3]=M):M=o[3];const T=String(M);let B,w;o[4]!==T||o[5]!==x?(B=(0,f.jsx)(c.MetricTile,{title:"Pending",value:T,tone:"warning",theme:x}),o[4]=T,o[5]=x,o[6]=B):B=o[6];o[7]!==S?(w=(0,u.queueValue)(S,"claimed"),o[7]=S,o[8]=w):w=o[8];const F=String(w);let k,C;o[9]!==F||o[10]!==x?(k=(0,f.jsx)(c.MetricTile,{title:"Claimed",value:F,tone:"accent",theme:x}),o[9]=F,o[10]=x,o[11]=k):k=o[11];o[12]!==S?(C=(0,u.queueValue)(S,"completed"),o[12]=S,o[13]=C):C=o[13];const z=String(C);let A,P;o[14]!==z||o[15]!==x?(A=(0,f.jsx)(c.MetricTile,{title:"Completed",value:z,tone:"positive",theme:x}),o[14]=z,o[15]=x,o[16]=A):A=o[16];o[17]!==S?(P=(0,u.queueValue)(S,"failed"),o[17]=S,o[18]=P):P=o[18];const $=String(P);let v,W,R,_;o[19]!==$||o[20]!==x?(v=(0,f.jsx)(c.MetricTile,{title:"Failed",value:$,tone:"danger",theme:x}),o[19]=$,o[20]=x,o[21]=v):v=o[21];o[22]!==A||o[23]!==v||o[24]!==B||o[25]!==k?(W=(0,f.jsxs)(s.default,{style:y.metricRow,children:[B,k,A,v]}),o[22]=A,o[23]=v,o[24]=B,o[25]=k,o[26]=W):W=o[26];o[27]!==q||o[28]!==h||o[29]!==x?(R=0===h.length?(0,f.jsxs)(s.default,{style:y.emptyState,children:[(0,f.jsx)(n.default,{style:[y.emptyTitle,{color:x.text,fontFamily:x.fontSans}],children:"No requests yet"}),(0,f.jsx)(n.default,{style:[y.emptySubtitle,{color:x.textMuted,fontFamily:x.fontSans}],children:"Session requests will appear here with full lifecycle status."})]}):h.map(e=>{const t=(0,u.statusColor)(x,e.status),l=(0,u.parseJsonText)(e.result),o=(0,u.parseJsonText)(e.error),c=q.get(e.id),p=e.priority??"normal",h=[e.enqueuedAt?`enq ${(0,u.prettyTs)(e.enqueuedAt)}`:null,e.claimedAt?`claim ${(0,u.prettyTs)(e.claimedAt)}`:null,e.completedAt?`done ${(0,u.prettyTs)(e.completedAt)}`:null,e.failedAt?`fail ${(0,u.prettyTs)(e.failedAt)}`:null].filter(Boolean),S="pending"===e.status&&c?`queue #${c.position} (eta ${(0,u.formatEtaMs)(c.etaMs)})`:null!=e.durationMs?`elapsed ${(0,u.formatDuration)(e.durationMs)}`:"in progress";return(0,f.jsxs)(s.default,{style:[y.card,{borderColor:x.border,backgroundColor:x.panel}],children:[(0,f.jsxs)(s.default,{style:y.rowBetween,children:[(0,f.jsx)(n.default,{style:[y.requestId,{color:x.text,fontFamily:x.fontMono}],children:e.id.slice(0,8)}),(0,f.jsx)(s.default,{style:[y.statusPill,{backgroundColor:`${t}22`,borderColor:`${t}66`}],children:(0,f.jsx)(n.default,{style:[y.statusPillText,{color:t,fontFamily:x.fontSans}],children:e.status})})]}),(0,f.jsx)(n.default,{style:[y.requestPrompt,{color:x.text,fontFamily:x.fontSans}],children:(0,u.clip)(e.prompt,260)}),(0,f.jsxs)(n.default,{style:[y.requestSubline,{color:x.textMuted,fontFamily:x.fontSans}],children:["priority ",p," | ",S]}),(0,f.jsxs)(n.default,{style:[y.requestSubline,{color:x.textMuted,fontFamily:x.fontSans}],children:["agent ",e.agentId??"--"," | created ",(0,u.prettyTs)(e.createdAt)," | updated"," ",(0,u.relativeMs)(e.updatedAt)]}),h.length>0?(0,f.jsx)(n.default,{style:[y.requestPhaseLine,{color:x.textMuted,fontFamily:x.fontMono}],children:h.join(" | ")}):null,null!=e.queueWaitBudgetMs?(0,f.jsxs)(n.default,{style:[y.requestSubline,{color:x.textMuted,fontFamily:x.fontSans}],children:["queue budget ",(0,u.formatDuration)(e.queueWaitBudgetMs)]}):null,null!=e.durationMs?(0,f.jsxs)(n.default,{style:[y.requestSubline,{color:x.textMuted,fontFamily:x.fontSans}],children:["request duration ",(0,u.formatDuration)(e.durationMs)]}):null,l?(0,f.jsxs)(s.default,{style:[y.codeBlock,{borderColor:x.border,backgroundColor:x.panelAlt}],children:[(0,f.jsx)(n.default,{style:[y.codeBlockLabel,{color:x.positive,fontFamily:x.fontSans}],children:"result"}),(0,f.jsx)(n.default,{style:[y.codeBlockText,{color:x.text,fontFamily:x.fontMono}],children:(0,u.clip)(l,600)})]}):null,o?(0,f.jsxs)(s.default,{style:[y.codeBlock,{borderColor:`${x.danger}77`,backgroundColor:`${x.danger}14`}],children:[(0,f.jsx)(n.default,{style:[y.codeBlockLabel,{color:x.danger,fontFamily:x.fontSans}],children:"error"}),(0,f.jsx)(n.default,{style:[y.codeBlockText,{color:x.text,fontFamily:x.fontMono}],children:(0,u.clip)(o,600)})]}):null]},e.id)}),o[27]=q,o[28]=h,o[29]=x,o[30]=R):R=o[30];o[31]!==W||o[32]!==R?(_=(0,f.jsxs)(l.default,{style:y.fill,contentContainerStyle:y.content,children:[W,R]}),o[31]=W,o[32]=R,o[33]=_):_=o[33];return _};var t=r(d[0]);r(d[1]);var l=e(r(d[2])),o=e(r(d[3])),n=e(r(d[4])),s=e(r(d[5])),u=r(d[6]),c=r(d[7]),f=r(d[8]);function p(e){return[e.id,e]}const y=o.default.create({fill:{flex:1},content:{paddingHorizontal:20,paddingBottom:18},metricRow:{flexDirection:"row",flexWrap:"wrap",paddingBottom:10},emptyState:{borderRadius:16,padding:16,alignItems:"flex-start"},emptyTitle:{fontSize:18,fontWeight:"700",marginBottom:4},emptySubtitle:{fontSize:13,lineHeight:19},card:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},rowBetween:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},requestId:{fontSize:12,fontWeight:"700"},requestPrompt:{fontSize:14,lineHeight:20,marginTop:7},requestSubline:{fontSize:12,marginTop:6},requestPhaseLine:{fontSize:11,marginTop:6},statusPill:{borderWidth:1,borderRadius:999,paddingHorizontal:9,paddingVertical:3},statusPillText:{fontSize:11,fontWeight:"700",textTransform:"uppercase"},codeBlock:{marginTop:8,borderWidth:1,borderRadius:10,padding:8},codeBlockLabel:{fontSize:11,fontWeight:"700",textTransform:"uppercase",marginBottom:4},codeBlockText:{fontSize:12,lineHeight:17}})},1023,[1134,21,317,136,123,310,1014,1015,2]);
1035
1035
  __d(function(g,r,i,a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.SegmentedTabs=function(e){const o=(0,t.c)(19),{tabs:b,active:f,onSelect:p,theme:x}=e;let y,S,h;o[0]!==x.border||o[1]!==x.panelAlt?(y=[u.segmentWrap,{backgroundColor:x.panelAlt,borderColor:x.border}],o[0]=x.border,o[1]=x.panelAlt,o[2]=y):y=o[2];if(o[3]!==f||o[4]!==p||o[5]!==b||o[6]!==x.accent||o[7]!==x.fontSans||o[8]!==x.textMuted){let e;o[10]!==f||o[11]!==p||o[12]!==x.accent||o[13]!==x.fontSans||o[14]!==x.textMuted?(e=e=>{const t=e.id===f;return(0,c.jsx)(n.default,{onPress:()=>p(e.id),style:[u.segmentBtn,t&&{backgroundColor:x.accent,borderColor:x.accent}],accessibilityRole:"button",accessibilityLabel:`${e.label} tab`,accessibilityHint:"Switches dashboard section.",accessibilityState:{selected:t},children:(0,c.jsxs)(l.default,{style:[u.segmentText,{color:t?"#FFFFFF":x.textMuted,fontFamily:x.fontSans}],numberOfLines:1,children:[e.label,"number"==typeof e.count?` (${e.count})`:""]})},e.id)},o[10]=f,o[11]=p,o[12]=x.accent,o[13]=x.fontSans,o[14]=x.textMuted,o[15]=e):e=o[15],S=b.map(e),o[3]=f,o[4]=p,o[5]=b,o[6]=x.accent,o[7]=x.fontSans,o[8]=x.textMuted,o[9]=S}else S=o[9];o[16]!==y||o[17]!==S?(h=(0,c.jsx)(s.default,{style:y,children:S}),o[16]=y,o[17]=S,o[18]=h):h=o[18];return h};var t=r(d[0]);r(d[1]);var n=e(r(d[2])),o=e(r(d[3])),l=e(r(d[4])),s=e(r(d[5])),c=r(d[6]);const u=o.default.create({segmentWrap:{marginHorizontal:20,marginBottom:10,borderWidth:1,borderRadius:14,flexDirection:"row",padding:3},segmentBtn:{flex:1,borderRadius:10,borderWidth:1,borderColor:"transparent",paddingVertical:8,paddingHorizontal:10,alignItems:"center",justifyContent:"center"},segmentText:{fontSize:12,fontWeight:"700"}})},1024,[1134,21,417,136,123,310,2]);
1036
1036
  __d(function(g,r,i,_a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.SystemPane=function({theme:e,events:l,connected:j,workers:C,systemSummary:M,autonomyInsights:k,autonomyQuestions:T,autonomyAnswerResults:v,autonomyAnswerInFlight:F,onSubmitAutonomyAnswer:R,autonomyActionResults:A,autonomyActionInFlight:B,onApplyAutonomyQuestionAction:$,autonomySafetyInFlight:z,onUpdateAutonomySafety:P,lastRefresh:q}){const W=(0,t.useRef)(null);j?null==W.current&&(W.current=Date.now()):W.current=null;const I=j&&null!=W.current&&Date.now()-W.current<9e4,L=(0,t.useMemo)(()=>{const e={LocalBuddy:void 0,RemoteBuddy:void 0,WorkerPals:void 0,SourceControlManager:void 0},t=(e,t)=>t.some(t=>e.includes(t));for(const o of l){const n=(o.from??"").toLowerCase(),l=o.payload,s=`${n} ${"string"==typeof l?.agentId?l.agentId.toLowerCase():""}`;t(s,["localbuddy","local_buddy","local buddy"])&&(e.LocalBuddy=o.ts),t(s,["remotebuddy","remote_buddy","remote buddy"])&&(e.RemoteBuddy=o.ts),t(s,["workerpal","workerpals","worker_pal","worker pals","worker"])&&(e.WorkerPals=o.ts),t(s,["source_control_manager","sourcecontrolmanager","source control manager","source-control-manager","scm"])&&(e.SourceControlManager=o.ts)}return e},[l]),D=C.filter(e=>e.isOnline).length,H=(0,t.useMemo)(()=>l.filter(e=>(0,y.shouldDisplayInteractiveSessionEvent)(e)).slice(-40).reverse(),[l]),_=M.slo?.requests,E=M.slo?.jobs,N=M.llmUsage,V=M.runtime,O=M.clients,U=M.autonomy??k.opsSummary,J=U?.safetyState??null,K=U?.latestEvaluatorScorecard??k.latestEvaluatorScorecard,G=U?.recentAlerts??[],Q=k.trustedInspirationShortlist.slice(0,6),X=k.archivedInspirationSources.slice(0,4),Y=k.engineSourceStats.filter(e=>"watchlist"===e.curationStatus).length,[Z,ee]=(0,t.useState)({}),te=T.filter(e=>"open"===e.status||"invalid"===e.status).length,oe=T.filter(e=>"invalid"===e.status).length,ne=(0,t.useMemo)(()=>[...T].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)).slice(0,20),[T]),le=(0,t.useMemo)(()=>{const e=["remotebuddy","workerpals"],t=new Map((N?.services??[]).map(e=>[e.service.toLowerCase(),e]));for(const o of e)t.has(o)||t.set(o,{service:o,promptTokens:0,completionTokens:0,totalTokens:0,callCount:0,avgTokensPerHour:0,avgTokensPerCall:null,estimatedCallCount:0,lastCallAt:null});return[...t.values()].sort((e,t)=>t.totalTokens!==e.totalTokens?t.totalTokens-e.totalTokens:b(e.service).localeCompare(b(t.service)))},[N]),se=(0,t.useMemo)(()=>O?.items??[],[O]),re=(0,t.useMemo)(()=>!!L.LocalBuddy||(!!(N?.services??[]).some(e=>"localbuddy"===e.service.toLowerCase()&&(e.callCount>0||e.totalTokens>0))||se.some(e=>{const t=`${String(e.clientId??"")} ${String(e.label??"")}`.toLowerCase();return t.includes("localbuddy")||t.includes("local buddy")})),[se,L.LocalBuddy,N?.services]),ae=(0,t.useMemo)(()=>{const e=Object.entries(O?.byKind??{}).sort((e,t)=>t[1]!==e[1]?t[1]-e[1]:e[0].localeCompare(t[0]));return 0===e.length?"no clients":e.map(([e,t])=>`${e} ${t}`).join(" | ")},[O]);(0,t.useEffect)(()=>{ee(e=>{const t={};for(const o of T)"string"!=typeof e[o.id]?"invalid"!==o.status||null==o.answer?"open"===o.status&&(t[o.id]=S(o)):t[o.id]=p(o.answer,2e3):t[o.id]=e[o.id];return t})},[T]);const ie=(0,t.useCallback)(async e=>{const t=Z[e.id]??"",o=await R({id:e.id,sessionId:e.sessionId},t);o.ok&&"valid"===o.status&&ee(t=>({...t,[e.id]:""}))},[R,Z]),de=(0,t.useCallback)(async(e,t)=>{const o=(Z[e.id]??"").trim();await $({id:e.id,sessionId:e.sessionId},t,o||void 0),"escalate"!==t&&ee(t=>({...t,[e.id]:""}))},[$,Z]),ue=[{name:"Server Stream",status:j?"connected":"disconnected",detail:j?"session event stream live":"not connected",ts:M.ts},...re?[{name:"LocalBuddy",status:L.LocalBuddy?"active":I?"initializing":"unknown",detail:L.LocalBuddy?`last event ${(0,c.relativeMs)(L.LocalBuddy)}`:I?"waiting for first status event":"no events yet",ts:L.LocalBuddy}]:[],{name:"RemoteBuddy",status:L.RemoteBuddy?"active":I?"initializing":"unknown",detail:L.RemoteBuddy?`last event ${(0,c.relativeMs)(L.RemoteBuddy)}`:I?"waiting for first status event":"no events yet",ts:L.RemoteBuddy},{name:"WorkerPals",status:D>0?"online":"offline",detail:`${D}/${C.length} online`,ts:C[0]?.lastHeartbeat},{name:"SourceControlManager",status:L.SourceControlManager?"active":I?"initializing":"unknown",detail:L.SourceControlManager?`last event ${(0,c.relativeMs)(L.SourceControlManager)}`:I?"waiting for first status event":"no events yet",ts:L.SourceControlManager}];return(0,h.jsxs)(n.default,{style:w.fill,contentContainerStyle:w.content,children:[(0,h.jsxs)(u.default,{style:w.metricRow,children:[(0,h.jsx)(f.MetricTile,{title:"Online Workers",value:String(M.workers?.online??D),detail:`${M.workers?.busy??C.filter(e=>"busy"===e.status).length} busy`,tone:"accent",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Pending Requests",value:String((0,c.queueValue)(M.queues?.requests,"pending")),tone:"warning",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Pending Completions",value:String((0,c.queueValue)(M.queues?.completions,"pending")),tone:"warning",theme:e}),(0,h.jsx)(f.MetricTile,{title:`LLM Tokens (${N?.windowHours??24}h)`,value:(0,c.formatTokenCount)(N?.totalTokens),detail:`${N?.callCount??0} calls | ${(0,c.formatTokenCount)(N?.avgTokensPerHour)} /h`,tone:N&&N.callCount>0?"accent":"warning",theme:e}),(0,h.jsx)(f.MetricTile,{title:"System Uptime",value:(0,c.formatUptime)(V?.uptimeMs),detail:V?.startedAt?`started ${(0,c.prettyTs)(V.startedAt)}`:"--",tone:"accent",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Connected Clients",value:String(O?.connected??0),detail:`${O?.total??0} tracked | ${ae}`,tone:(O?.connected??0)>0?"accent":"warning",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Trusted Sources",value:String(k.trustedInspirationShortlist.length),detail:`watchlist ${Y} | archived ${k.archivedInspirationSources.length}`,tone:"positive",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Actionable Questions",value:String(te),detail:`invalid ${oe} | tracked ${T.length}`,tone:te>0?"warning":"positive",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Refresh",value:q?(0,c.relativeMs)(q):"--",detail:q?(0,c.prettyTs)(q):"no sync",theme:e}),(0,h.jsx)(f.MetricTile,{title:"Request SLO (24h)",value:(0,c.formatPercent)(_?.successRate),detail:`p95 wait ${(0,c.formatDuration)(_?.queueWaitMs?.p95)}`,theme:e}),(0,h.jsx)(f.MetricTile,{title:"Job SLO (24h)",value:(0,c.formatPercent)(E?.successRate),detail:`timeout ${(0,c.formatPercent)(E?.timeoutRate)} | p95 run ${(0,c.formatDuration)(E?.durationMs?.p95)}`,theme:e})]}),(0,h.jsxs)(u.default,{style:[w.insightPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"LLM Usage"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[N?.windowHours??24,"h window | ",N?.callCount??0," calls"]})]}),(0,h.jsxs)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["total ",(0,c.formatTokenCount)(N?.totalTokens)," tokens | prompt"," ",(0,c.formatTokenCount)(N?.promptTokens)," | completion"," ",(0,c.formatTokenCount)(N?.completionTokens)," | avg"," ",(0,c.formatTokenCount)(N?.avgTokensPerCall)," per call |"," ",(0,c.formatTokenCount)(N?.avgTokensPerHour)," per hour"]}),N&&N.estimatedCallCount>0?(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[N.estimatedCallCount," call",1===N.estimatedCallCount?"":"s"," using estimated token counts."]}):null,(0,h.jsx)(u.default,{style:w.systemGrid,children:le.map(t=>(0,h.jsxs)(u.default,{style:[w.systemCard,{borderColor:e.border,backgroundColor:e.panelAlt}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.systemTitle,{color:e.text,fontFamily:e.fontSans}],children:b(t.service)}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:t.callCount>0?e.accent:e.textMuted,fontFamily:e.fontMono}],children:[t.callCount," call",1===t.callCount?"":"s"]})]}),(0,h.jsx)(s.default,{style:[w.tokenValue,{color:t.totalTokens>0?e.accent:e.textMuted,fontFamily:e.fontSans}],children:(0,c.formatTokenCount)(t.totalTokens)}),(0,h.jsxs)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["avg ",(0,c.formatTokenCount)(t.avgTokensPerCall)," / call"]}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[(0,c.formatTokenCount)(t.avgTokensPerHour)," / hour"]}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:["in ",(0,c.formatTokenCount)(t.promptTokens)," | out"," ",(0,c.formatTokenCount)(t.completionTokens)]}),(0,h.jsx)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:t.lastCallAt?`last call ${(0,c.relativeMs)(t.lastCallAt)}`:"no usage recorded"}),t.estimatedCallCount>0?(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["estimated ",t.estimatedCallCount," call",1===t.estimatedCallCount?"":"s"]}):null]},`llm-${t.service}`))})]}),(0,h.jsxs)(u.default,{style:[w.safetyPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Autonomy Safety Controls"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["alerts ",G.length]})]}),(0,h.jsxs)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["kill switch ",J?.killSwitchEnabled?"enabled":"disabled"," | frozen"," ",J?.isFrozen?"yes":"no",J?.freezeUntil?` until ${(0,c.prettyTs)(J.freezeUntil)}`:""]}),J?.freezeReason?(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["freeze reason: ",J.freezeReason]}):null,(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["evaluator ",K?.recommendation??"unknown"," | success"," ","number"==typeof K?.successRate?`${(100*K.successRate).toFixed(1)}%`:"--"," ","| regret"," ","number"==typeof K?.regretRate?`${(100*K.regretRate).toFixed(1)}%`:"--"," ","| samples ",K?.sampleCount??0]}),(0,h.jsxs)(u.default,{style:w.safetyActionsRow,children:[(0,h.jsx)(o.default,{style:[w.answerButton,{borderColor:e.border,backgroundColor:z?e.panelAlt:J?.killSwitchEnabled?`${e.warning}33`:e.accentSoft,opacity:z?.7:1}],disabled:z,onPress:()=>{P({killSwitchEnabled:!Boolean(J?.killSwitchEnabled)})},children:(0,h.jsx)(s.default,{style:[w.answerButtonText,{color:e.accentText,fontFamily:e.fontSans}],children:J?.killSwitchEnabled?"Disable Kill Switch":"Enable Kill Switch"})}),(0,h.jsx)(o.default,{style:[w.answerButton,{borderColor:e.border,backgroundColor:z?e.panelAlt:J?.isFrozen?`${e.positive}22`:`${e.warning}22`,opacity:z?.7:1}],disabled:z,onPress:()=>{P(J?.isFrozen?{unfreeze:!0}:{freezeForMs:18e5,freezeReason:"manual_freeze_ui"})},children:(0,h.jsx)(s.default,{style:[w.answerButtonText,{color:e.accentText,fontFamily:e.fontSans}],children:J?.isFrozen?"Unfreeze":"Freeze 30m"})})]}),G.slice(0,3).map(t=>(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:"critical"===t.severity?e.danger:"warning"===t.severity?e.warning:e.textMuted,fontFamily:e.fontSans}],children:[(0,c.prettyTs)(t.createdAt)," | ",t.alertType,": ",(0,c.clip)(t.message,180)]},t.id))]}),(0,h.jsx)(u.default,{style:w.systemGrid,children:ue.map(t=>{const o=(0,c.statusColor)(e,t.status);return(0,h.jsxs)(u.default,{style:[w.systemCard,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.systemTitle,{color:e.text,fontFamily:e.fontSans}],children:t.name}),(0,h.jsx)(u.default,{style:[w.statusPill,{backgroundColor:`${o}22`,borderColor:`${o}66`}],children:(0,h.jsx)(s.default,{style:[w.statusPillText,{color:o,fontFamily:e.fontSans}],children:t.status})})]}),(0,h.jsx)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:t.detail}),(0,h.jsx)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:t.ts?`updated ${(0,c.prettyTs)(t.ts)}`:"no timestamp"})]},t.name)})}),(0,h.jsxs)(u.default,{style:[w.insightPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Connected Clients"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[O?.connected??0," connected / ",O?.total??0," tracked"]})]}),(0,h.jsx)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:ae}),0===se.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No client interfaces have registered yet."}):(0,h.jsx)(u.default,{style:w.systemGrid,children:se.map(t=>{const o=(0,c.statusColor)(e,t.status),n=t.connectedTransports.length>0?t.connectedTransports.join(", "):"no live transport";return(0,h.jsxs)(u.default,{style:[w.systemCard,{borderColor:e.border,backgroundColor:e.panelAlt}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.systemTitle,{color:e.text,fontFamily:e.fontSans}],children:t.label||t.kind}),(0,h.jsx)(u.default,{style:[w.statusPill,{backgroundColor:`${o}22`,borderColor:`${o}66`}],children:(0,h.jsx)(s.default,{style:[w.statusPillText,{color:o,fontFamily:e.fontSans}],children:t.status})})]}),(0,h.jsxs)(s.default,{style:[w.systemDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:[t.kind," | session ",t.sessionId]}),(0,h.jsx)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:n}),t.version||t.platform?(0,h.jsx)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[t.version,t.platform].filter(Boolean).join(" | ")}):null,t.repoRoot?(0,h.jsx)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:(0,c.clip)(t.repoRoot,120)}):null,(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["last seen ",(0,c.relativeMs)(t.lastSeenAt)]})]},t.clientId)})})]}),(0,h.jsxs)(u.default,{style:[w.insightPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Autonomy Source Curation"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[k.engineSourceStats.length," tracked"]})]}),(0,h.jsxs)(u.default,{style:w.insightColumns,children:[(0,h.jsxs)(u.default,{style:w.insightCol,children:[(0,h.jsx)(s.default,{style:[w.insightSectionTitle,{color:e.positive,fontFamily:e.fontSans}],children:"Trusted Shortlist"}),0===Q.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No trusted sources yet."}):Q.map(t=>(0,h.jsxs)(u.default,{style:[w.insightRow,{borderColor:e.border}],children:[(0,h.jsx)(s.default,{style:[w.insightLabel,{color:e.text,fontFamily:e.fontSans}],children:t.sourceLabel||t.algorithm}),(0,h.jsxs)(s.default,{style:[w.insightMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:["trust ",t.trustScore.toFixed(2)," | fresh ",t.freshnessScore.toFixed(2)," | samples ",t.sampleCount]}),t.curationReason?(0,h.jsx)(s.default,{style:[w.insightReason,{color:e.textMuted,fontFamily:e.fontSans}],children:t.curationReason}):null]},`trusted-${t.sourceKey}`))]}),(0,h.jsxs)(u.default,{style:w.insightCol,children:[(0,h.jsx)(s.default,{style:[w.insightSectionTitle,{color:e.warning,fontFamily:e.fontSans}],children:"Archived Sources"}),0===X.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No archived sources."}):X.map(t=>(0,h.jsxs)(u.default,{style:[w.insightRow,{borderColor:e.border}],children:[(0,h.jsx)(s.default,{style:[w.insightLabel,{color:e.text,fontFamily:e.fontSans}],children:t.sourceLabel||t.algorithm}),(0,h.jsxs)(s.default,{style:[w.insightMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:["trust ",t.trustScore.toFixed(2)," | fresh ",t.freshnessScore.toFixed(2)," | samples ",t.sampleCount]}),t.curationReason?(0,h.jsx)(s.default,{style:[w.insightReason,{color:e.textMuted,fontFamily:e.fontSans}],children:t.curationReason}):null]},`archived-${t.sourceKey}`))]})]})]}),(0,h.jsxs)(u.default,{style:[w.questionPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Autonomy Questions"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[te," actionable / ",T.length," total"]})]}),0===ne.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No autonomy questions available yet."}):ne.map(t=>{const n="open"===t.status||"invalid"===t.status,l="answered"===t.status?e.positive:"invalid"===t.status?e.warning:"closed"===t.status?e.textMuted:e.accent,f=v[t.id],y=Boolean(F[t.id]),x=A[t.id],b=Boolean(B[t.id]),S=p(t.expectedAnswerSchema,260),j=p(t.context,260),C=p(t.answer,260),M="number"==typeof t.expiresInMs&&Number.isFinite(t.expiresInMs)?t.expiresInMs:(()=>{const e=Date.parse(t.expiresAt);return Number.isFinite(e)?Math.max(0,e-Date.now()):null})(),k=Boolean(t.isExpired)||"number"==typeof M&&M<=0,T=!k&&"number"==typeof M&&M<=9e5,R=k?e.danger:T?e.warning:e.textMuted;return(0,h.jsxs)(u.default,{style:[w.questionRow,{borderColor:e.border}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.questionTitle,{color:e.text,fontFamily:e.fontSans}],children:t.question||"Untitled question"}),(0,h.jsx)(u.default,{style:[w.statusPill,{backgroundColor:`${l}22`,borderColor:`${l}66`}],children:(0,h.jsx)(s.default,{style:[w.statusPillText,{color:l,fontFamily:e.fontSans}],children:t.status})})]}),(0,h.jsxs)(s.default,{style:[w.questionMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:[t.id.slice(0,8)," | type ",t.questionType||"unknown"," | objective"," ",t.objectiveId.slice(0,8)||"--"]}),(0,h.jsxs)(s.default,{style:[w.questionMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:["created ",(0,c.prettyTs)(t.createdAt)," | expires"," ",t.expiresAt?(0,c.prettyTs)(t.expiresAt):"--"]}),(0,h.jsx)(s.default,{style:[w.questionMeta,{color:R,fontFamily:e.fontSans}],children:k?"expired":T?`expires soon (${(0,c.formatDuration)(M)})`:"number"==typeof M?`expires in ${(0,c.formatDuration)(M)}`:"expiry unknown"}),S?(0,h.jsxs)(s.default,{style:[w.questionDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["expected: ",S]}):null,j&&"{}"!==j?(0,h.jsxs)(s.default,{style:[w.questionDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["context: ",j]}):null,t.validationError?(0,h.jsxs)(s.default,{style:[w.questionValidation,{color:e.warning,fontFamily:e.fontSans}],children:["validation: ",t.validationError]}):null,C?(0,h.jsxs)(s.default,{style:[w.questionDetail,{color:e.textMuted,fontFamily:e.fontSans}],children:["answer: ",C]}):null,n?(0,h.jsxs)(u.default,{style:w.questionActionRow,children:[(0,h.jsx)(a.default,{style:[w.questionInput,{borderColor:e.border,backgroundColor:e.panelAlt,color:e.text,fontFamily:e.fontMono}],multiline:!0,placeholder:"Answer as plain text or JSON",placeholderTextColor:e.textMuted,value:Z[t.id]??"",onChangeText:e=>ee(o=>({...o,[t.id]:e}))}),(0,h.jsx)(o.default,{style:[w.answerButton,{borderColor:e.border,backgroundColor:y?e.panelAlt:e.accentSoft,opacity:y?.7:1}],disabled:y,onPress:()=>{ie(t)},children:(0,h.jsx)(s.default,{style:[w.answerButtonText,{color:e.accentText,fontFamily:e.fontSans}],children:y?"Submitting...":"Submit Answer"})}),(0,h.jsxs)(u.default,{style:w.questionSecondaryActions,children:[(0,h.jsx)(o.default,{style:[w.miniActionButton,{borderColor:e.border,backgroundColor:b?e.panelAlt:`${e.warning}22`,opacity:b?.7:1}],disabled:b,onPress:()=>{de(t,"skip")},children:(0,h.jsx)(s.default,{style:[w.miniActionText,{color:e.warning,fontFamily:e.fontSans}],children:"Skip"})}),(0,h.jsx)(o.default,{style:[w.miniActionButton,{borderColor:e.border,backgroundColor:b?e.panelAlt:`${e.textMuted}22`,opacity:b?.7:1}],disabled:b,onPress:()=>{de(t,"close")},children:(0,h.jsx)(s.default,{style:[w.miniActionText,{color:e.textMuted,fontFamily:e.fontSans}],children:"Close"})}),(0,h.jsx)(o.default,{style:[w.miniActionButton,{borderColor:e.border,backgroundColor:b?e.panelAlt:`${e.danger}22`,opacity:b?.7:1}],disabled:b,onPress:()=>{de(t,"escalate")},children:(0,h.jsx)(s.default,{style:[w.miniActionText,{color:e.danger,fontFamily:e.fontSans}],children:"Escalate"})})]})]}):null,f?(0,h.jsxs)(u.default,{style:[w.answerResult,{borderColor:e.border,backgroundColor:f.ok?"invalid"===f.status?`${e.warning}22`:`${e.positive}22`:`${e.danger}22`}],children:[(0,h.jsx)(s.default,{style:[w.answerResultLine,{color:f.ok?e.text:e.danger,fontFamily:e.fontSans}],children:f.ok?`answer ${f.status??"accepted"}`:`answer failed: ${f.reason??"unknown error"}`}),f.reason&&f.ok?(0,h.jsx)(s.default,{style:[w.answerResultLine,{color:e.textMuted,fontFamily:e.fontSans}],children:f.reason}):null,f.resumedRequestId?(0,h.jsxs)(s.default,{style:[w.answerResultLine,{color:e.textMuted,fontFamily:e.fontMono}],children:["resumed request ",f.resumedRequestId]}):null,f.resumeError?(0,h.jsxs)(s.default,{style:[w.answerResultLine,{color:e.danger,fontFamily:e.fontSans}],children:["resume error: ",f.resumeError]}):null]}):null,x?(0,h.jsx)(u.default,{style:[w.answerResult,{borderColor:e.border,backgroundColor:x.ok?`${e.positive}22`:`${e.danger}22`}],children:(0,h.jsx)(s.default,{style:[w.answerResultLine,{color:x.ok?e.text:e.danger,fontFamily:e.fontSans}],children:x.ok?`action ${x.action??"applied"}`:`action failed: ${x.reason??"unknown error"}`})}):null]},t.id)})]}),(0,h.jsxs)(u.default,{style:[w.workerPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Worker Fleet"}),0===C.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No workers reported yet."}):C.map(t=>{const o=(0,c.statusColor)(e,t.status);return(0,h.jsxs)(u.default,{style:[w.workerRow,{borderColor:e.border}],children:[(0,h.jsx)(u.default,{style:[w.jobDot,{backgroundColor:o}]}),(0,h.jsxs)(u.default,{style:w.workerTextCol,children:[(0,h.jsx)(s.default,{style:[w.workerName,{color:e.text,fontFamily:e.fontSans}],children:t.workerId}),(0,h.jsxs)(s.default,{style:[w.workerMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[t.status," | job ",t.currentJobId?.slice(0,8)??"--"," | heartbeat"," ",(0,c.relativeMs)(t.lastHeartbeat)]})]})]},t.workerId)})]}),(0,h.jsxs)(u.default,{style:[w.eventPanel,{borderColor:e.border,backgroundColor:e.panel}],children:[(0,h.jsxs)(u.default,{style:w.rowBetween,children:[(0,h.jsx)(s.default,{style:[w.sectionTitle,{color:e.text,fontFamily:e.fontSans}],children:"Recent Event Stream"}),(0,h.jsxs)(s.default,{style:[w.systemMeta,{color:e.textMuted,fontFamily:e.fontSans}],children:[H.length," latest"]})]}),0===H.length?(0,h.jsx)(s.default,{style:[w.emptySubtitle,{color:e.textMuted,fontFamily:e.fontSans}],children:"No events yet."}):H.map(t=>{const o=(0,c.statusColor)(e,t.type);return(0,h.jsxs)(u.default,{style:[w.eventRow,{borderColor:e.border}],children:[(0,h.jsxs)(u.default,{style:w.eventMain,children:[(0,h.jsxs)(s.default,{style:[w.eventMeta,{color:e.textMuted,fontFamily:e.fontMono}],children:[(0,c.prettyTs)(t.ts)," | ",t.from??"unknown"]}),(0,h.jsx)(s.default,{style:[w.eventSummary,{color:e.text,fontFamily:e.fontSans}],children:x(t)})]}),(0,h.jsx)(u.default,{style:[w.statusPill,{backgroundColor:`${o}22`,borderColor:`${o}66`}],children:(0,h.jsx)(s.default,{style:[w.statusPillText,{color:o,fontFamily:e.fontSans}],children:t.type})})]},t.id)})]})]})};var t=r(d[0]),o=e(r(d[1])),n=e(r(d[2])),l=e(r(d[3])),s=e(r(d[4])),a=e(r(d[5])),u=e(r(d[6])),c=r(d[7]),f=r(d[8]),y=r(d[9]),h=r(d[10]);function x(e){const t=e.payload??{},o=["message","summary","title","detail","error","status","kind","jobId","taskId","requestId"];for(const e of o){const o=t[e];if("string"==typeof o&&o.trim())return(0,c.clip)(o,140)}return"object"==typeof t&&t&&Object.keys(t).length>0?(0,c.clip)(JSON.stringify(t),140):"No payload details"}function p(e,t=320){if(null==e)return"";if("string"==typeof e)return(0,c.clip)(e,t);if("number"==typeof e||"boolean"==typeof e)return String(e);try{return(0,c.clip)(JSON.stringify(e),t)}catch{return(0,c.clip)(String(e),t)}}function b(e){const t=e.trim().toLowerCase();return"localbuddy"===t?"LocalBuddy":"remotebuddy"===t?"RemoteBuddy":"workerpals"===t?"WorkerPals":e||"Unknown"}function S(e){const t=e.expectedAnswerSchema??{};if("single_choice"===e.questionType){const e=(Array.isArray(t.choices)?t.choices:[]).find(e=>"string"==typeof e&&e.trim());return"string"==typeof e?e:""}if("multi_choice"===e.questionType){const e=(Array.isArray(t.choices)?t.choices:[]).find(e=>"string"==typeof e&&e.trim());return"string"==typeof e?JSON.stringify([e]):"[]"}if("json_payload"===e.questionType){const e=Array.isArray(t.required_keys)?t.required_keys:[],o={};for(const t of e)"string"==typeof t&&t.trim()&&(o[t]="");return Object.keys(o).length>0?JSON.stringify(o,null,2):"{}"}return""}const w=l.default.create({fill:{flex:1},content:{paddingHorizontal:20,paddingBottom:18},metricRow:{flexDirection:"row",flexWrap:"wrap",paddingBottom:10},sectionTitle:{fontSize:16,fontWeight:"700",marginBottom:8},rowBetween:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},statusPill:{borderWidth:1,borderRadius:999,paddingHorizontal:9,paddingVertical:3},statusPillText:{fontSize:11,fontWeight:"700",textTransform:"uppercase"},emptySubtitle:{fontSize:13,lineHeight:19},systemGrid:{flexDirection:"row",flexWrap:"wrap",marginBottom:6},systemCard:{width:"48%",minWidth:240,borderWidth:1,borderRadius:14,padding:11,marginRight:8,marginBottom:8},systemTitle:{fontSize:14,fontWeight:"700"},tokenValue:{fontSize:24,fontWeight:"700",marginTop:6},systemDetail:{fontSize:12,marginTop:7},systemMeta:{fontSize:11,marginTop:5},workerPanel:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},insightPanel:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},safetyPanel:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},questionPanel:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},insightColumns:{flexDirection:"row",flexWrap:"wrap",gap:10},insightCol:{flex:1,minWidth:280},insightSectionTitle:{fontSize:13,fontWeight:"700",marginBottom:6},insightRow:{borderWidth:1,borderRadius:10,paddingHorizontal:10,paddingVertical:8,marginBottom:8},insightLabel:{fontSize:13,fontWeight:"700"},insightMeta:{fontSize:11,marginTop:3},insightReason:{fontSize:12,marginTop:5,lineHeight:17},questionRow:{borderWidth:1,borderRadius:12,paddingHorizontal:10,paddingVertical:9,marginBottom:8},questionTitle:{flex:1,fontSize:13,fontWeight:"700",marginRight:8},questionMeta:{fontSize:11,marginTop:3},questionDetail:{fontSize:12,marginTop:4,lineHeight:17},questionValidation:{fontSize:12,marginTop:4,lineHeight:17,fontWeight:"600"},questionActionRow:{marginTop:7},questionSecondaryActions:{marginTop:7,flexDirection:"row",flexWrap:"wrap",gap:6},questionInput:{borderWidth:1,borderRadius:10,paddingHorizontal:10,paddingVertical:8,minHeight:70,textAlignVertical:"top",fontSize:12},answerButton:{marginTop:7,alignSelf:"flex-start",borderWidth:1,borderRadius:9,paddingHorizontal:11,paddingVertical:7},answerButtonText:{fontSize:11,fontWeight:"700",textTransform:"uppercase",letterSpacing:.3},miniActionButton:{borderWidth:1,borderRadius:8,paddingHorizontal:10,paddingVertical:6},miniActionText:{fontSize:10,fontWeight:"700",textTransform:"uppercase",letterSpacing:.3},safetyActionsRow:{flexDirection:"row",flexWrap:"wrap",gap:8,marginTop:8,marginBottom:4},answerResult:{marginTop:7,borderWidth:1,borderRadius:10,paddingHorizontal:9,paddingVertical:7},answerResultLine:{fontSize:11,lineHeight:16},workerRow:{flexDirection:"row",alignItems:"center",borderBottomWidth:1,paddingVertical:9},jobDot:{width:8,height:8,borderRadius:4,marginRight:10},workerTextCol:{flex:1},workerName:{fontSize:13,fontWeight:"700"},workerMeta:{fontSize:12,marginTop:2},eventPanel:{borderWidth:1,borderRadius:16,padding:12,marginBottom:10},eventRow:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",borderBottomWidth:1,paddingVertical:8,gap:8},eventMain:{flex:1},eventMeta:{fontSize:11},eventSummary:{fontSize:13,marginTop:2,lineHeight:18}})},1025,[21,417,317,136,123,427,310,1014,1015,1026,2]);
1037
- __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.isHeartbeatStatusSessionEvent=s,e.shouldDisplayInteractiveSessionEvent=function(t){return!s(t)};const t=/\bheartbeat\b/i;function s(s){if("status"!==String(s?.type??"").trim().toLowerCase())return!1;const n=s?.payload??{},o="string"==typeof n.detail?n.detail.trim():"",u="string"==typeof n.message?n.message.trim():"";return t.test(o)||t.test(u)}},1026,[]);
1037
+ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.isHeartbeatStatusSessionEvent=y,e.shouldDisplayInteractiveSessionEvent=function(t){const o=String(t?.type??"").trim().toLowerCase();return!!n.has(o)||!c(t)&&!y(t)},e.isAutonomyOriginSessionEvent=c;const t=/\bheartbeat\b/i,n=new Set(["question_asked"]);function o(t){return Boolean(t&&"object"==typeof t&&!Array.isArray(t))}function s(t){return"autonomy"===String(t??"").trim().toLowerCase()}function u(t){return!!o(t)&&(!!s(t.origin)||(!!s(t.createdBy)||(!!o(t.autonomy)||(!(!Array.isArray(t.tags)||!t.tags.some(s))||!(!o(t.params)||!u(t.params))))))}function y(n){if("status"!==String(n?.type??"").trim().toLowerCase())return!1;const o=n?.payload??{},s="string"==typeof o.detail?o.detail.trim():"",u="string"==typeof o.message?o.message.trim():"";return t.test(s)||t.test(u)}function c(t){const n=String(t?.from??"").toLowerCase();return!!/(^|[/:._-])autonomy($|[/:._-])/.test(n)||u(t?.payload)}},1026,[]);
1038
1038
  __d(function(g,r,i,_a,m,_e,d){"use strict";function e(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(_e,'__esModule',{value:!0}),_e.ConfigPane=function({baseUrl:e,authToken:l,theme:C}){const[S,j]=(0,t.useState)(!1),[k,v]=(0,t.useState)(!1),[w,F]=(0,t.useState)(null),[R,T]=(0,t.useState)(null),[M,A]=(0,t.useState)(null),[z,W]=(0,t.useState)({}),[L,P]=(0,t.useState)("toml"),[$,H]=(0,t.useState)(""),[V,_]=(0,t.useState)(""),[B,D]=(0,t.useState)(""),[E,O]=(0,t.useState)(!0),q=(0,t.useCallback)(async()=>{j(!0),F(null),T(null);const t=await(0,f.fetchRuntimeConfig)(e,l);if(!t)return F("Failed to load runtime config. Check auth token/server."),void j(!1);A(t.config),W(t.files??{}),j(!1)},[l,e]),I=Boolean(M&&"object"==typeof M&&M.localbuddy&&"object"==typeof M.localbuddy&&M.localbuddy.enabled),N=(0,t.useCallback)(async()=>{const t=$.trim();if(t){v(!0),F(null),T(null);try{const o="env"===L?V:h(V,E),n={scope:L,key:t,value:o},a=await(0,f.updateRuntimeConfig)(e,[n],l);if(!a)return F("Failed to update runtime config."),void v(!1);A(a.config),W(a.files??{});const s=a.warnings.length>0?` Warnings: ${a.warnings.join(" | ")}`:"",u=a.restartRequired?" Restart required for some keys.":"";T(`Applied ${a.applied.length} update(s).${u}${s}`)}catch(e){const t=e instanceof Error?e.message:String(e);F(`Invalid value format: ${t}`)}finally{v(!1)}}else F("Key is required.")},[l,e,$,E,L,V]),U=(0,t.useCallback)(async()=>{v(!0),F(null),T(null);try{const t=await(0,f.updateRuntimeConfig)(e,[{scope:"toml",key:"localbuddy.enabled",value:!I}],l);if(!t)return F("Failed to update runtime config."),void v(!1);A(t.config),W(t.files??{});const o=t.warnings.length>0?` Warnings: ${t.warnings.join(" | ")}`:"";T(`LocalBuddy ${I?"disabled":"enabled"}.${t.restartRequired?" Restart required for some keys.":" Applies live when managed by bun run start or the VS Code stack manager."}${o}`)}finally{v(!1)}},[l,e,I]),J=(0,t.useMemo)(()=>{const e=p(M??{}),t=B.trim().toLowerCase();return t?e.filter(e=>e.key.toLowerCase().includes(t)).sort((e,t)=>e.key.localeCompare(t.key)):e.sort((e,t)=>e.key.localeCompare(t.key))},[M,B]);return(0,t.useEffect)(()=>{q()},[q]),(0,y.jsxs)(c.default,{style:x.container,children:[(0,y.jsxs)(c.default,{style:[x.headerCard,{backgroundColor:C.panel,borderColor:C.border}],children:[(0,y.jsx)(s.default,{style:[x.title,{color:C.text,fontFamily:C.fontSans}],children:"Runtime Config"}),(0,y.jsxs)(s.default,{style:[x.meta,{color:C.textMuted,fontFamily:C.fontSans}],children:["env: ",z.envPath??"--"," | local.toml: ",z.localTomlPath??"--"]}),(0,y.jsxs)(c.default,{style:x.row,children:[(0,y.jsx)(o.default,{onPress:q,style:[x.button,{backgroundColor:C.panelAlt,borderColor:C.border},S&&x.buttonDisabled],disabled:S,children:(0,y.jsx)(s.default,{style:[x.buttonText,{color:C.text,fontFamily:C.fontSans}],children:S?"Loading...":"Reload"})}),(0,y.jsx)(o.default,{onPress:U,style:[x.button,{backgroundColor:I?C.accentSoft:C.panelAlt,borderColor:I?C.accent:C.border},k&&x.buttonDisabled],disabled:k||S||!M,children:(0,y.jsx)(s.default,{style:[x.buttonText,{color:I?C.accentText:C.text,fontFamily:C.fontSans}],children:k?"Applying...":I?"Disable LocalBuddy":"Enable LocalBuddy"})})]}),R?(0,y.jsx)(s.default,{style:[x.notice,{color:C.positive,fontFamily:C.fontSans}],children:R}):null,w?(0,y.jsx)(s.default,{style:[x.notice,{color:C.danger,fontFamily:C.fontSans}],children:w}):null]}),(0,y.jsxs)(c.default,{style:[x.editorCard,{backgroundColor:C.panel,borderColor:C.border}],children:[(0,y.jsx)(s.default,{style:[x.label,{color:C.textMuted,fontFamily:C.fontSans}],children:"Update"}),(0,y.jsxs)(c.default,{style:x.row,children:[(0,y.jsx)(o.default,{onPress:()=>P("toml"),style:[x.scopeButton,{backgroundColor:"toml"===L?C.accentSoft:C.panelAlt,borderColor:"toml"===L?C.accent:C.border}],children:(0,y.jsx)(s.default,{style:[x.scopeText,{color:"toml"===L?C.accentText:C.textMuted,fontFamily:C.fontSans}],children:"TOML"})}),(0,y.jsx)(o.default,{onPress:()=>P("env"),style:[x.scopeButton,{backgroundColor:"env"===L?C.accentSoft:C.panelAlt,borderColor:"env"===L?C.accent:C.border}],children:(0,y.jsx)(s.default,{style:[x.scopeText,{color:"env"===L?C.accentText:C.textMuted,fontFamily:C.fontSans}],children:"ENV"})}),(0,y.jsxs)(c.default,{style:x.switchWrap,children:[(0,y.jsx)(s.default,{style:[x.switchLabel,{color:C.textMuted,fontFamily:C.fontSans}],children:"JSON parse"}),(0,y.jsx)(a.default,{value:E,onValueChange:O})]})]}),(0,y.jsx)(u.default,{value:$,onChangeText:H,placeholder:"env"===L?"PUSHPALS_SERVER_URL":"remotebuddy.autonomy.tick_interval_ms",placeholderTextColor:C.textMuted,style:[x.input,{color:C.text,backgroundColor:C.panelAlt,borderColor:C.border,fontFamily:C.fontMono}],autoCapitalize:"none"}),(0,y.jsx)(u.default,{value:V,onChangeText:_,placeholder:E?'"string" | 120000 | true | [1,2]':"raw string",placeholderTextColor:C.textMuted,style:[x.input,x.valueInput,{color:C.text,backgroundColor:C.panelAlt,borderColor:C.border,fontFamily:C.fontMono}],autoCapitalize:"none",multiline:!0}),(0,y.jsx)(c.default,{style:x.row,children:(0,y.jsx)(o.default,{onPress:N,style:[x.button,{backgroundColor:C.accentSoft,borderColor:C.accent},k&&x.buttonDisabled],disabled:k,children:(0,y.jsx)(s.default,{style:[x.buttonText,{color:C.accentText,fontFamily:C.fontSans}],children:k?"Applying...":"Apply"})})})]}),(0,y.jsxs)(c.default,{style:[x.listCard,{backgroundColor:C.panel,borderColor:C.border}],children:[(0,y.jsx)(u.default,{value:B,onChangeText:D,placeholder:"Filter keys...",placeholderTextColor:C.textMuted,style:[x.input,{color:C.text,backgroundColor:C.panelAlt,borderColor:C.border,fontFamily:C.fontSans}],autoCapitalize:"none"}),(0,y.jsxs)(n.default,{style:x.list,contentContainerStyle:x.listContent,children:[J.slice(0,300).map(e=>(0,y.jsxs)(o.default,{onPress:()=>{P("toml"),H(e.key),_(b(e.value))},style:[x.entryRow,{borderColor:C.border}],children:[(0,y.jsx)(s.default,{style:[x.entryKey,{color:C.text,fontFamily:C.fontMono}],children:e.key}),(0,y.jsx)(s.default,{style:[x.entryValue,{color:C.textMuted,fontFamily:C.fontMono}],children:b(e.value)})]},e.key)),J.length>300?(0,y.jsx)(s.default,{style:[x.meta,{color:C.textMuted,fontFamily:C.fontSans}],children:"Showing first 300 keys. Use filter to narrow further."}):null,0===J.length?(0,y.jsx)(s.default,{style:[x.meta,{color:C.textMuted,fontFamily:C.fontSans}],children:"No keys matched."}):null]})]})]})};var t=r(d[0]),o=e(r(d[1])),n=e(r(d[2])),l=e(r(d[3])),a=e(r(d[4])),s=e(r(d[5])),u=e(r(d[6])),c=e(r(d[7])),f=r(d[8]),y=r(d[9]);function p(e,t=""){if(!e||"object"!=typeof e||Array.isArray(e))return t?[{key:t,value:e}]:[];const o=[];for(const[n,l]of Object.entries(e)){const e=t?`${t}.${n}`:n;!l||"object"!=typeof l||Array.isArray(l)?o.push({key:e,value:l}):o.push(...p(l,e))}return o}function b(e){if("string"==typeof e)return e;const t=JSON.stringify(e);return void 0===t?String(e):t}function h(e,t){if(!t)return e;const o=e.trim();return o?JSON.parse(o):""}const x=l.default.create({container:{flex:1,minHeight:0,paddingHorizontal:20,paddingBottom:20,gap:10},headerCard:{borderWidth:1,borderRadius:14,padding:12,gap:6},editorCard:{borderWidth:1,borderRadius:14,padding:12,gap:8},listCard:{borderWidth:1,borderRadius:14,padding:12,flex:1,minHeight:0,gap:8},title:{fontSize:18,fontWeight:"700"},meta:{fontSize:12},label:{fontSize:12,fontWeight:"700",textTransform:"uppercase",letterSpacing:.8},row:{flexDirection:"row",alignItems:"center",gap:8,flexWrap:"wrap"},scopeButton:{borderWidth:1,borderRadius:8,paddingHorizontal:10,paddingVertical:6},scopeText:{fontSize:12,fontWeight:"700"},switchWrap:{flexDirection:"row",alignItems:"center",marginLeft:"auto",gap:6},switchLabel:{fontSize:12},input:{borderWidth:1,borderRadius:8,paddingHorizontal:10,paddingVertical:8,fontSize:12},valueInput:{minHeight:72,textAlignVertical:"top"},button:{borderWidth:1,borderRadius:8,paddingHorizontal:12,paddingVertical:8},buttonDisabled:{opacity:.65},buttonText:{fontSize:12,fontWeight:"700"},notice:{fontSize:12,lineHeight:18},list:{flex:1,minHeight:0},listContent:{gap:6,paddingBottom:6},entryRow:{borderWidth:1,borderRadius:8,padding:8,gap:4},entryKey:{fontSize:11},entryValue:{fontSize:11}})},1027,[21,417,317,136,425,123,427,310,1028,2]);
1039
1039
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.buildSessionEventsUrl=o,e.buildSessionWebSocketUrl=s,e.buildSessionMessageUrl=c,e.subscribeEvents=function(t,n,o,s="auto",c=0,u,f){const S=l(s);return console.log(`[PushPals] Subscribing to session ${n} via ${S} (after=${c})`),"sse"===S?p(t,n,o,c,u,f):y(t,n,o,c,u,f)},e.createSession=async function(t,n,o,s){try{const c=await fetch(`${t}/sessions`,{method:"POST",headers:{"Content-Type":"application/json",...f(o)},body:JSON.stringify({...n?{sessionId:n}:{},...s?{client:s}:{}})});if(!c.ok)return console.error("Failed to create session:",c.status),null;const u=await c.json(),l=201===c.status;return u.sessionId&&"string"==typeof u.sessionId?{sessionId:u.sessionId,created:l}:null}catch(t){return console.error("Error creating session:",t),null}},e.sendSessionMessage=async function(t,n,o){try{const s=await fetch(c(t,n),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:o})});if(!s.ok){const t=await s.text().catch(()=>"");return console.error(`Error sending message: ${s.status} ${s.statusText}${t?` ${t}`:""}`),!1}return!0}catch(t){return console.error("Error sending message:",t),!1}},e.submitApprovalDecision=async function(t,n,o,s){try{return(await fetch(`${t}/approvals/${n}`,{method:"POST",headers:{"Content-Type":"application/json",...f(s)},body:JSON.stringify({decision:o})})).ok}catch(t){return console.error("Error submitting approval decision:",t),!1}},e.fetchWorkers=async function(t,n){try{const o=await fetch(`${t}/workers`,{headers:f(n)});if(!o.ok)return[];const s=await o.json();return Array.isArray(s.workers)?s.workers:[]}catch(t){return console.error("Error fetching workers:",t),[]}},e.fetchRequestsSnapshot=async function(t,n){try{const o=await fetch(`${t}/requests?limit=250`,{headers:f(n)});if(!o.ok)return{requests:[],counts:{},priorityCounts:{},pendingSnapshot:[]};const s=await o.json();return{requests:Array.isArray(s.requests)?s.requests:[],counts:s.counts??{},priorityCounts:s.priorityCounts??{},pendingSnapshot:Array.isArray(s.pendingSnapshot)?s.pendingSnapshot:[],slo:s.slo}}catch(t){return console.error("Error fetching requests snapshot:",t),{requests:[],counts:{},priorityCounts:{},pendingSnapshot:[]}}},e.fetchJobsSnapshot=async function(t,n){try{const o=await fetch(`${t}/jobs?limit=250`,{headers:f(n)});if(!o.ok)return{jobs:[],counts:{},priorityCounts:{},pendingSnapshot:[]};const s=await o.json();return{jobs:Array.isArray(s.jobs)?s.jobs:[],counts:s.counts??{},priorityCounts:s.priorityCounts??{},pendingSnapshot:Array.isArray(s.pendingSnapshot)?s.pendingSnapshot:[],slo:s.slo}}catch(t){return console.error("Error fetching jobs snapshot:",t),{jobs:[],counts:{},priorityCounts:{},pendingSnapshot:[]}}},e.fetchCompletionsSnapshot=async function(t,n){try{const o=await fetch(`${t}/completions?limit=250`,{headers:f(n)});if(!o.ok)return{completions:[],counts:{}};const s=await o.json();return{completions:Array.isArray(s.completions)?s.completions:[],counts:s.counts??{}}}catch(t){return console.error("Error fetching completions snapshot:",t),{completions:[],counts:{}}}},e.fetchSystemStatus=async function(t,n){try{const o=await fetch(`${t}/system/status`,{headers:f(n)});if(!o.ok)return{};const s=await o.json();return{workers:s.workers,queues:s.queues,slo:s.slo,llmUsage:s.llmUsage,autonomy:s.autonomy,repo:s.repo,runtime:s.runtime,clients:s.clients,ts:s.ts}}catch(t){return console.error("Error fetching system status:",t),{}}},e.fetchAutonomyInsights=async function(t,n,o=40){const s={engineSourceStats:[],trustedInspirationShortlist:[],archivedInspirationSources:[],latestEvaluatorScorecard:null,opsSummary:null};try{const c=new URLSearchParams({limit:String(Math.max(1,Math.min(200,Math.floor(o)))),feedbackLimit:"10"}),u=await fetch(`${t}/autonomy/insights?${c.toString()}`,{headers:f(n)});if(!u.ok)return s;const l=await u.json();if(!l.ok)return s;const p=l.latestEvaluatorScorecard&&"object"==typeof l.latestEvaluatorScorecard?l.latestEvaluatorScorecard:null,y=p?{id:String(p.id??""),windowHours:Number(p.windowHours??0),sampleCount:Number(p.sampleCount??0),successRate:Number.isFinite(Number(p.successRate))?Number(p.successRate):null,regretRate:Number.isFinite(Number(p.regretRate))?Number(p.regretRate):null,avgLatencyMs:Number.isFinite(Number(p.avgLatencyMs))?Number(p.avgLatencyMs):null,dispatchCount:Number(p.dispatchCount??0),recommendation:"pause"===String(p.recommendation??"").toLowerCase()?"pause":"constrain"===String(p.recommendation??"").toLowerCase()?"constrain":"healthy",createdAt:String(p.createdAt??"")}:null,S=l.opsSummary&&"object"==typeof l.opsSummary?l.opsSummary:null,h=S?{safetyState:{killSwitchEnabled:Boolean(S.safetyState?.killSwitchEnabled),freezeUntil:"string"==typeof S.safetyState?.freezeUntil?String(S.safetyState.freezeUntil):null,freezeReason:"string"==typeof S.safetyState?.freezeReason?String(S.safetyState.freezeReason):null,isFrozen:Boolean(S.safetyState?.isFrozen),updatedAt:"string"==typeof S.safetyState?.updatedAt?String(S.safetyState.updatedAt):null},latestEvaluatorScorecard:y,recentAlerts:Array.isArray(S.recentAlerts)?S.recentAlerts.filter(t=>t&&"object"==typeof t).map(t=>{const n=t,o=String(n.severity??"").toLowerCase();return{id:String(n.id??""),alertType:String(n.alertType??n.alert_type??"generic"),severity:"critical"===o?"critical":"warning"===o?"warning":"info",message:String(n.message??""),details:n.details&&"object"==typeof n.details&&!Array.isArray(n.details)?n.details:{},createdAt:String(n.createdAt??n.created_at??"")}}):[],staleDeadLetterCount24h:Number(S.staleDeadLetterCount24h??0),lastStaleSweepAt:"string"==typeof S.lastStaleSweepAt?String(S.lastStaleSweepAt):null}:null;return{engineSourceStats:Array.isArray(l.engineSourceStats)?l.engineSourceStats:[],trustedInspirationShortlist:Array.isArray(l.trustedInspirationShortlist)?l.trustedInspirationShortlist:[],archivedInspirationSources:Array.isArray(l.archivedInspirationSources)?l.archivedInspirationSources:[],latestEvaluatorScorecard:y,opsSummary:h}}catch(t){return console.error("Error fetching autonomy insights:",t),s}},e.fetchAutonomyQuestions=async function(t,n,o){try{const s=new URLSearchParams;o?.sessionId&&s.set("sessionId",o.sessionId),o?.status&&s.set("status",o.status),"number"==typeof o?.limit&&Number.isFinite(o.limit)&&s.set("limit",String(Math.max(1,Math.min(500,Math.floor(o.limit)))));const c=s.toString(),u=await fetch(`${t}/questions${c?`?${c}`:""}`,{headers:f(n)});if(!u.ok)return[];const l=await u.json();return l.ok&&Array.isArray(l.questions)?l.questions.filter(t=>t&&"object"==typeof t&&!Array.isArray(t)).map(t=>{const n=t,o=String(n.status??"").toLowerCase(),s="answered"===o||"invalid"===o||"closed"===o?o:"open",c=n.expected_answer_schema&&"object"==typeof n.expected_answer_schema&&!Array.isArray(n.expected_answer_schema)?n.expected_answer_schema:{},u=n.context&&"object"==typeof n.context&&!Array.isArray(n.context)?n.context:{};return{id:String(n.id??""),objectiveId:String(n.objective_id??n.objectiveId??""),sessionId:String(n.session_id??n.sessionId??""),question:String(n.question??""),questionType:String(n.question_type??n.questionType??""),expectedAnswerSchema:c,context:u,status:s,answer:n.answer??null,answerValidationStatus:String(n.answer_validation_status??""),validationError:String(n.validation_error??""),createdAt:String(n.created_at??""),answeredAt:String(n.answered_at??""),expiresAt:String(n.expires_at??""),expiresInMs:Number.isFinite(Number(n.expires_in_ms))?Number(n.expires_in_ms):null,isExpired:Boolean(n.is_expired),closedReason:String(n.closed_reason??"")}}):[]}catch(t){return console.error("Error fetching autonomy questions:",t),[]}},e.answerAutonomyQuestion=async function(t,n,o,s,c){try{const u={"Content-Type":"application/json"};s&&(u.Authorization=`Bearer ${s}`);const l=await fetch(`${t}/questions/${encodeURIComponent(n)}/answer`,{method:"POST",headers:u,body:JSON.stringify({answer:o,...c?{sessionId:c}:{}})});if(!l.ok){const t=await l.json().catch(()=>({}));return{ok:!1,reason:"string"==typeof t.reason?t.reason:"Failed to answer question"}}const p=await l.json(),y=String(p.status??"").toLowerCase();return{ok:Boolean(p.ok),status:"valid"===y||"invalid"===y?y:void 0,reason:"string"==typeof p.reason?p.reason:void 0,objectiveId:"string"==typeof p.objectiveId?p.objectiveId:"string"==typeof p.objective_id?p.objective_id:void 0,resumedRequestId:"string"==typeof p.resumedRequestId?p.resumedRequestId:void 0,resumeError:"string"==typeof p.resumeError?p.resumeError:void 0}}catch(t){return console.error("Error answering autonomy question:",t),{ok:!1,reason:String(t)}}},e.actOnAutonomyQuestion=async function(t,n,o,s,c,u){try{const l={"Content-Type":"application/json"};s&&(l.Authorization=`Bearer ${s}`);const p=await fetch(`${t}/questions/${encodeURIComponent(n)}/action`,{method:"POST",headers:l,body:JSON.stringify({action:o,...c?{note:c}:{},...u?{sessionId:u}:{}})}),y=await p.json().catch(()=>({}));return{ok:Boolean(y.ok),action:"skip"===String(y.action??"").toLowerCase()||"close"===String(y.action??"").toLowerCase()||"escalate"===String(y.action??"").toLowerCase()?String(y.action).toLowerCase():void 0,objectiveId:"string"==typeof y.objectiveId?y.objectiveId:"string"==typeof y.objective_id?y.objective_id:void 0,reason:"string"==typeof y.reason?y.reason:void 0}}catch(t){return console.error("Error applying autonomy question action:",t),{ok:!1,reason:String(t)}}},e.fetchAutonomySafety=async function(t,n){try{const o=await fetch(`${t}/autonomy/safety`,{headers:f(n)});if(!o.ok)return null;const s=await o.json();if(!s.ok||!s.state||"object"!=typeof s.state)return null;const c=s.state;return{killSwitchEnabled:Boolean(c.killSwitchEnabled),freezeUntil:"string"==typeof c.freezeUntil?c.freezeUntil:null,freezeReason:"string"==typeof c.freezeReason?c.freezeReason:null,isFrozen:Boolean(c.isFrozen),updatedAt:"string"==typeof c.updatedAt?c.updatedAt:null}}catch(t){return console.error("Error fetching autonomy safety:",t),null}},e.updateAutonomySafety=async function(t,n,o){try{const s={"Content-Type":"application/json"};o&&(s.Authorization=`Bearer ${o}`);const c=await fetch(`${t}/autonomy/safety`,{method:"POST",headers:s,body:JSON.stringify(n)}),u=await c.json().catch(()=>({})),l=u.state&&"object"==typeof u.state?u.state:null;return{ok:Boolean(u.ok),reason:"string"==typeof u.reason?u.reason:void 0,state:l?{killSwitchEnabled:Boolean(l.killSwitchEnabled),freezeUntil:"string"==typeof l.freezeUntil?String(l.freezeUntil):null,freezeReason:"string"==typeof l.freezeReason?String(l.freezeReason):null,isFrozen:Boolean(l.isFrozen),updatedAt:"string"==typeof l.updatedAt?String(l.updatedAt):null}:void 0}}catch(t){return console.error("Error updating autonomy safety:",t),{ok:!1,reason:String(t)}}},e.fetchRuntimeConfig=async function(t,n){try{const o=await fetch(`${t}/config/runtime`,{headers:f(n)});if(!o.ok)return null;const s=await o.json();return s&&"object"==typeof s&&s.config?{config:s.config,files:s.files}:null}catch(t){return console.error("Error fetching runtime config:",t),null}},e.updateRuntimeConfig=async function(t,n,o){try{const s={"Content-Type":"application/json"};o&&(s.Authorization=`Bearer ${o}`);const c=await fetch(`${t}/config/runtime`,{method:"POST",headers:s,body:JSON.stringify({updates:n})});if(!c.ok)return null;const u=await c.json();return u&&"object"==typeof u&&u.config?{config:u.config,files:u.files,applied:Array.isArray(u.applied)?u.applied:[],warnings:Array.isArray(u.warnings)?u.warnings:[],touchedFiles:Array.isArray(u.touchedFiles)?u.touchedFiles:[],restartRequired:Boolean(u.restartRequired),restartRequiredKeys:Array.isArray(u.restartRequiredKeys)?u.restartRequiredKeys.map(t=>String(t)):[]}:null}catch(t){return console.error("Error updating runtime config:",t),null}},e.sendCommand=async function(t,n,o,s){try{const c={"Content-Type":"application/json"};s&&(c.Authorization=`Bearer ${s}`);const u=await fetch(`${t}/sessions/${n}/command`,{method:"POST",headers:c,body:JSON.stringify(o)});return u.ok?await u.json():{ok:!1}}catch(t){return console.error("Error sending command:",t),{ok:!1}}};var t=r(d[0]);function n(t=0,n,o){const s=new URLSearchParams;t>0&&s.set("after",String(t)),o&&(s.set("clientId",o.clientId),s.set("clientKind",o.kind),o.label&&s.set("clientLabel",o.label),o.version&&s.set("clientVersion",o.version),o.platform&&s.set("clientPlatform",o.platform),o.repoRoot&&s.set("clientRepoRoot",o.repoRoot));const c=s.toString();return c?`?${c}`:""}function o(t,o,s=0,c,u){return`${t}/sessions/${encodeURIComponent(o)}/events${n(s,0,u)}`}function s(t,o,s=0,c,u){return`${t.startsWith("https")?"wss":"ws"}://${t.replace(/^https?:\/\//,"")}/sessions/${encodeURIComponent(o)}/ws${n(s,0,u)}`}function c(t,n){return`${t}/sessions/${encodeURIComponent(n)}/message`}function u(n,o){return{protocolVersion:t.PROTOCOL_VERSION,id:"function"==typeof globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`client-${Date.now()}-${Math.random().toString(16).slice(2)}`,ts:(new Date).toISOString(),sessionId:n,type:"error",from:"client:transport",payload:{message:o}}}function l(t){if("auto"!==t)return t;return"undefined"!=typeof window&&"undefined"!=typeof EventSource?"sse":"ws"}function p(n,s,c,l=0,p,y){let f=!1,S=null,h=null,w=l;return(function l(){f||(S=new EventSource(o(n,s,w,0,y)),S.addEventListener("message",n=>{try{const o=JSON.parse(n.data),l=o?.envelope,p=(0,t.validateEventEnvelope)(l);if(!p.ok)return void c(u(s,`[Protocol error] ${p.errors?.join("; ")}`),w);const y="number"==typeof o?.cursor?o.cursor:parseInt(n.lastEventId,10)||0;y>w&&(w=y),c(l,y)}catch(t){c(u(s,`[Parse error] Failed to parse event: ${String(t)}`),w)}}),S.onerror=()=>{c(u(s,"[SSE] Connection lost, reconnecting..."),w),S?.close(),S=null,f||(h=setTimeout(l,3e3))})})(),()=>{f=!0,h&&clearTimeout(h),S?.close()}}function y(n,o,c,l=0,p,y){let f=!1,S=null,h=null,w=l;return(function l(){f||(S=new WebSocket(s(n,o,w,0,y)),S.onmessage=n=>{try{const s=JSON.parse(n.data),l=s?.envelope,p="number"==typeof s.cursor?s.cursor:0,y=(0,t.validateEventEnvelope)(l);if(!y.ok)return void c(u(o,`[Protocol error] ${y.errors?.join("; ")}`),w);p>w&&(w=p),c(l,p)}catch(t){c(u(o,`[Parse error] Failed to parse event: ${String(t)}`),w)}},S.onerror=()=>{c(u(o,"[WebSocket] Connection error"),w)},S.onclose=()=>{S=null,f||(c(u(o,"[WebSocket] Connection lost, reconnecting..."),w),h=setTimeout(l,3e3))})})(),()=>{f=!0,h&&clearTimeout(h),S&&S.readyState===WebSocket.OPEN&&S.close()}}function f(t){const n={};return t&&(n.Authorization=`Bearer ${t}`),n}},1028,[1029]);
1040
1040
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),Object.defineProperty(e,"PROTOCOL_VERSION",{enumerable:!0,get:function(){return t.PROTOCOL_VERSION}}),Object.defineProperty(e,"validateEventEnvelope",{enumerable:!0,get:function(){return n.validateEventEnvelope}}),Object.defineProperty(e,"validateMessageRequest",{enumerable:!0,get:function(){return n.validateMessageRequest}}),Object.defineProperty(e,"validateMessageResponse",{enumerable:!0,get:function(){return n.validateMessageResponse}}),Object.defineProperty(e,"validateApprovalDecisionRequest",{enumerable:!0,get:function(){return n.validateApprovalDecisionRequest}}),Object.defineProperty(e,"validateApprovalDecisionResponse",{enumerable:!0,get:function(){return n.validateApprovalDecisionResponse}}),Object.defineProperty(e,"validateCommandRequest",{enumerable:!0,get:function(){return n.validateCommandRequest}});var t=r(d[0]),n=r(d[1])},1029,[1030,1031]);
@@ -1117,7 +1117,7 @@ __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{v
1117
1117
  __d(function(g,r,i,a,m,_e,d){"use strict";function f(f,t){return{validate:f,compare:t}}function t(f){return f%4==0&&(f%100!=0||f%400==0)}Object.defineProperty(_e,"__esModule",{value:!0}),_e.formatNames=_e.fastFormats=_e.fullFormats=void 0,_e.fullFormats={date:f(u,o),time:f(s(!0),$),"date-time":f(_(!0),v),"iso-time":f(s(),c),"iso-date-time":f(_(),p),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:function(f){return b.test(f)&&x.test(f)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:function(f){if(j.test(f))return!1;try{return new RegExp(f),!0}catch(f){return!1}},uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:function(f){return y.lastIndex=0,y.test(f)},int32:{type:"number",validate:function(f){return Number.isInteger(f)&&f<=F&&f>=w}},int64:{type:"number",validate:function(f){return Number.isInteger(f)}},float:{type:"number",validate:O},double:{type:"number",validate:O},password:!0,binary:!0},_e.fastFormats={..._e.fullFormats,date:f(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,o),time:f(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,$),"date-time":f(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,v),"iso-time":f(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,c),"iso-date-time":f(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,p),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i},_e.formatNames=Object.keys(_e.fullFormats);const e=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,n=[0,31,28,31,30,31,30,31,31,30,31,30,31];function u(f){const u=e.exec(f);if(!u)return!1;const o=+u[1],z=+u[2],s=+u[3];return z>=1&&z<=12&&s>=1&&s<=(2===z&&t(o)?29:n[z])}function o(f,t){if(f&&t)return f>t?1:f<t?-1:0}const z=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function s(f){return function(t){const e=z.exec(t);if(!e)return!1;const n=+e[1],u=+e[2],o=+e[3],s=e[4],$="-"===e[5]?-1:1,c=+(e[6]||0),l=+(e[7]||0);if(c>23||l>59||f&&!s)return!1;if(n<=23&&u<=59&&o<60)return!0;const _=u-l*$,v=n-c*$-(_<0?1:0);return(23===v||-1===v)&&(59===_||-1===_)&&o<61}}function $(f,t){if(!f||!t)return;const e=new Date("2020-01-01T"+f).valueOf(),n=new Date("2020-01-01T"+t).valueOf();return e&&n?e-n:void 0}function c(f,t){if(!f||!t)return;const e=z.exec(f),n=z.exec(t);return e&&n?(f=e[1]+e[2]+e[3])>(t=n[1]+n[2]+n[3])?1:f<t?-1:0:void 0}const l=/t|\s/i;function _(f){const t=s(f);return function(f){const e=f.split(l);return 2===e.length&&u(e[0])&&t(e[1])}}function v(f,t){if(!f||!t)return;const e=new Date(f).valueOf(),n=new Date(t).valueOf();return e&&n?e-n:void 0}function p(f,t){if(!f||!t)return;const[e,n]=f.split(l),[u,z]=t.split(l),s=o(e,u);return void 0!==s?s||$(n,z):void 0}const b=/\/|:/,x=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;const y=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;const w=-2147483648,F=2147483647;function O(){return!0}const j=/[^\\]\\Z/},1100,[]);
1118
1118
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.formatLimitDefinition=void 0;const o=r(d[0]),t=r(d[1]),f=t.operators,n={formatMaximum:{okStr:"<=",ok:f.LTE,fail:f.GT},formatMinimum:{okStr:">=",ok:f.GTE,fail:f.LT},formatExclusiveMaximum:{okStr:"<",ok:f.LT,fail:f.GTE},formatExclusiveMinimum:{okStr:">",ok:f.GT,fail:f.LTE}},s={message:({keyword:o,schemaCode:f})=>t.str`should be ${n[o].okStr} ${f}`,params:({keyword:o,schemaCode:f})=>t._`{comparison: ${n[o].okStr}, limit: ${f}}`};e.formatLimitDefinition={keyword:Object.keys(n),type:"string",schemaType:"string",$data:!0,error:s,code(f){const{gen:s,data:c,schemaCode:u,keyword:p,it:$}=f,{opts:l,self:k}=$;if(!l.validateFormats)return;const y=new o.KeywordCxt($,k.RULES.all.format.definition,"format");function _(o){return t._`${o}.compare(${c}, ${u}) ${n[p].fail} 0`}y.$data?(function(){const o=s.scopeValue("formats",{ref:k.formats,code:l.code.formats}),n=s.const("fmt",t._`${o}[${y.schemaCode}]`);f.fail$data((0,t.or)(t._`typeof ${n} != "object"`,t._`${n} instanceof RegExp`,t._`typeof ${n}.compare != "function"`,_(n)))})():(function(){const o=y.schema,n=k.formats[o];if(!n||!0===n)return;if("object"!=typeof n||n instanceof RegExp||"function"!=typeof n.compare)throw new Error(`"${p}": format "${o}" does not define "compare" function`);const c=s.scopeValue("formats",{key:o,ref:n,code:l.code.formats?t._`${l.code.formats}${(0,t.getProperty)(o)}`:void 0});f.fail$data(_(c))})()},dependencies:["format"]};e.default=o=>(o.addKeyword(e.formatLimitDefinition),o)},1101,[1032,1037]);
1119
1119
  __d(function(e,t,o,s,i,r,n){i.exports={$schema:"http://json-schema.org/draft-07/schema#",title:"EventEnvelope",type:"object",required:["protocolVersion","id","ts","sessionId","type","payload"],properties:{protocolVersion:{type:"string",const:"0.1.0",description:"Protocol version must be 0.1.0"},id:{type:"string",description:"Unique event identifier (e.g., UUID)"},ts:{type:"string",format:"date-time",description:"ISO-8601 timestamp"},sessionId:{type:"string",description:"Session identifier"},type:{type:"string",enum:["log","scan_result","suggestions","diff_ready","approval_required","approved","denied","committed","assistant_message","error","done","agent_status","task_created","task_started","task_progress","task_completed","task_failed","tool_call","tool_result","delegate_request","delegate_response","job_enqueued","job_claimed","job_completed","job_failed","message","job_log","status","autonomy_cycle_started","autonomy_candidates_generated","autonomy_objective_dispatched","autonomy_objective_blocked","autonomy_feedback_recorded","question_asked","question_answered"],description:"Event type discriminator"},traceId:{type:"string",description:"Optional trace ID for debugging"},from:{type:"string",description:"Originator identifier (e.g. client, agent:local1, worker:lint)"},to:{type:"string",description:"Destination identifier (e.g. broadcast, agent:local1, worker:queue:default)"},correlationId:{type:"string",description:"Threads a whole conversation turn together"},parentId:{type:"string",description:"Links tool calls/results under their parent task event"},turnId:{type:"string",description:"One per user message; groups all downstream events"},payload:{type:"object",description:"Payload depends on event type"}},additionalProperties:!1}},1102,[]);
1120
- __d(function(e,t,r,i,p,o,a){p.exports={$schema:"http://json-schema.org/draft-07/schema#",title:"EventTypePayloads",definitions:{artifact:{type:"object",required:["kind"],properties:{kind:{type:"string"},uri:{type:"string"},text:{type:"string"}},additionalProperties:!1}},oneOf:[{type:"object",required:["type","payload"],properties:{type:{const:"log"},payload:{type:"object",required:["level","message"],properties:{level:{type:"string",enum:["debug","info","warn","error"]},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"scan_result"},payload:{type:"object",required:["summary","filesRead","gitStatusPorcelain","gitDiff"],properties:{summary:{type:"string"},filesRead:{type:"array",items:{type:"string"}},gitStatusPorcelain:{type:"string"},gitDiff:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"suggestions"},payload:{type:"object",required:["items"],properties:{items:{type:"array",items:{type:"object",required:["id","title","detail","effort"],properties:{id:{type:"string"},title:{type:"string"},detail:{type:"string"},effort:{type:"string",enum:["S","M","L"]}},additionalProperties:!1}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"assistant_message"},payload:{type:"object",required:["text"],properties:{text:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"diff_ready"},payload:{type:"object",required:["unifiedDiff","diffStat","branch"],properties:{unifiedDiff:{type:"string"},diffStat:{type:"string"},branch:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"approval_required"},payload:{type:"object",required:["approvalId","action","summary","details"],properties:{approvalId:{type:"string"},action:{type:"string",enum:["git.commit","git.push","other"]},summary:{type:"string"},details:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"approved"},payload:{type:"object",required:["approvalId"],properties:{approvalId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"denied"},payload:{type:"object",required:["approvalId"],properties:{approvalId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"committed"},payload:{type:"object",required:["branch","commitHash","message"],properties:{branch:{type:"string"},commitHash:{type:"string"},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"error"},payload:{type:"object",required:["message"],properties:{message:{type:"string"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"done"},payload:{type:"object",required:["ok"],properties:{ok:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"agent_status"},payload:{type:"object",required:["agentId","status"],properties:{agentId:{type:"string"},status:{type:"string",enum:["idle","busy","error"]},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_created"},payload:{type:"object",required:["taskId","title","description","createdBy"],properties:{taskId:{type:"string"},title:{type:"string"},description:{type:"string"},createdBy:{type:"string"},priority:{type:"string"},tags:{type:"array",items:{type:"string"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_started"},payload:{type:"object",required:["taskId"],properties:{taskId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_progress"},payload:{type:"object",required:["taskId","message"],properties:{taskId:{type:"string"},message:{type:"string"},percent:{type:"number",minimum:0,maximum:100}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_completed"},payload:{type:"object",required:["taskId","summary"],properties:{taskId:{type:"string"},summary:{type:"string"},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_failed"},payload:{type:"object",required:["taskId","message"],properties:{taskId:{type:"string"},message:{type:"string"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"tool_call"},payload:{type:"object",required:["toolCallId","tool","args"],properties:{toolCallId:{type:"string"},taskId:{type:"string"},tool:{type:"string"},args:{type:"object",additionalProperties:!0},requiresApproval:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"tool_result"},payload:{type:"object",required:["toolCallId","ok"],properties:{toolCallId:{type:"string"},taskId:{type:"string"},ok:{type:"boolean"},stdout:{type:"string"},stderr:{type:"string"},exitCode:{type:"integer"},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"delegate_request"},payload:{type:"object",required:["requestId","toAgentId","input"],properties:{requestId:{type:"string"},toAgentId:{type:"string"},input:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"delegate_response"},payload:{type:"object",required:["requestId","ok"],properties:{requestId:{type:"string"},ok:{type:"boolean"},output:{type:"object",additionalProperties:!0},error:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_enqueued"},payload:{type:"object",required:["jobId","taskId","kind","params"],properties:{jobId:{type:"string"},taskId:{type:"string"},kind:{type:"string"},params:{type:"object",additionalProperties:!0},origin:{type:"string",enum:["user","autonomy"]},autonomy:{type:"object",properties:{objectiveId:{type:"string"},runId:{type:"string"},snapshotId:{type:"string"},patternKey:{type:"string"}},additionalProperties:!1}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_claimed"},payload:{type:"object",required:["jobId","workerId"],properties:{jobId:{type:"string"},workerId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_completed"},payload:{type:"object",required:["jobId"],properties:{jobId:{type:"string"},summary:{type:"string"},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_failed"},payload:{type:"object",required:["jobId","message"],properties:{jobId:{type:"string"},message:{type:"string"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"message"},payload:{type:"object",required:["text"],properties:{text:{type:"string"},intent:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_log"},payload:{type:"object",required:["jobId","stream","seq","line"],properties:{jobId:{type:"string"},stream:{type:"string",enum:["stdout","stderr"]},seq:{type:"integer",minimum:1},line:{type:"string"},ts:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"status"},payload:{type:"object",required:["agentId","state"],properties:{agentId:{type:"string"},state:{type:"string",enum:["idle","busy","error","shutting_down"]},uptimeMs:{type:"number"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_cycle_started"},payload:{type:"object",required:["runId","snapshotId"],properties:{runId:{type:"string"},snapshotId:{type:"string"},phase:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_candidates_generated"},payload:{type:"object",required:["runId","snapshotId","candidateCount"],properties:{runId:{type:"string"},snapshotId:{type:"string"},candidateCount:{type:"integer",minimum:0},topCandidateIds:{type:"array",items:{type:"string"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_objective_dispatched"},payload:{type:"object",required:["runId","snapshotId","objectiveId","requestId","patternKey"],properties:{runId:{type:"string"},snapshotId:{type:"string"},objectiveId:{type:"string"},requestId:{type:"string"},patternKey:{type:"string"},origin:{type:"string",enum:["autonomy"]}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_objective_blocked"},payload:{type:"object",required:["runId","snapshotId","objectiveId","reason"],properties:{runId:{type:"string"},snapshotId:{type:"string"},objectiveId:{type:"string"},reason:{type:"string"},questionId:{type:"string"},patternKey:{type:"string"},origin:{type:"string",enum:["autonomy"]}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_feedback_recorded"},payload:{type:"object",required:["objectiveId","patternKey","outcome","success"],properties:{objectiveId:{type:"string"},patternKey:{type:"string"},outcome:{type:"string"},success:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"question_asked"},payload:{type:"object",required:["questionId","objectiveId","question","questionType"],properties:{questionId:{type:"string"},objectiveId:{type:"string"},question:{type:"string"},questionType:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"question_answered"},payload:{type:"object",required:["questionId","objectiveId","status"],properties:{questionId:{type:"string"},objectiveId:{type:"string"},status:{type:"string",enum:["valid","invalid"]},answerSummary:{type:"string"}},additionalProperties:!1}},additionalProperties:!1}]}},1103,[]);
1120
+ __d(function(e,t,r,i,p,o,a){p.exports={$schema:"http://json-schema.org/draft-07/schema#",title:"EventTypePayloads",definitions:{artifact:{type:"object",required:["kind"],properties:{kind:{type:"string"},uri:{type:"string"},text:{type:"string"}},additionalProperties:!1}},oneOf:[{type:"object",required:["type","payload"],properties:{type:{const:"log"},payload:{type:"object",required:["level","message"],properties:{level:{type:"string",enum:["debug","info","warn","error"]},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"scan_result"},payload:{type:"object",required:["summary","filesRead","gitStatusPorcelain","gitDiff"],properties:{summary:{type:"string"},filesRead:{type:"array",items:{type:"string"}},gitStatusPorcelain:{type:"string"},gitDiff:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"suggestions"},payload:{type:"object",required:["items"],properties:{items:{type:"array",items:{type:"object",required:["id","title","detail","effort"],properties:{id:{type:"string"},title:{type:"string"},detail:{type:"string"},effort:{type:"string",enum:["S","M","L"]}},additionalProperties:!1}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"assistant_message"},payload:{type:"object",required:["text"],properties:{text:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"diff_ready"},payload:{type:"object",required:["unifiedDiff","diffStat","branch"],properties:{unifiedDiff:{type:"string"},diffStat:{type:"string"},branch:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"approval_required"},payload:{type:"object",required:["approvalId","action","summary","details"],properties:{approvalId:{type:"string"},action:{type:"string",enum:["git.commit","git.push","other"]},summary:{type:"string"},details:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"approved"},payload:{type:"object",required:["approvalId"],properties:{approvalId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"denied"},payload:{type:"object",required:["approvalId"],properties:{approvalId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"committed"},payload:{type:"object",required:["branch","commitHash","message"],properties:{branch:{type:"string"},commitHash:{type:"string"},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"error"},payload:{type:"object",required:["message"],properties:{message:{type:"string"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"done"},payload:{type:"object",required:["ok"],properties:{ok:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"agent_status"},payload:{type:"object",required:["agentId","status"],properties:{agentId:{type:"string"},status:{type:"string",enum:["idle","busy","error"]},message:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_created"},payload:{type:"object",required:["taskId","title","description","createdBy"],properties:{taskId:{type:"string"},title:{type:"string"},description:{type:"string"},createdBy:{type:"string"},priority:{type:"string"},tags:{type:"array",items:{type:"string"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_started"},payload:{type:"object",required:["taskId"],properties:{taskId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_progress"},payload:{type:"object",required:["taskId","message"],properties:{taskId:{type:"string"},message:{type:"string"},percent:{type:"number",minimum:0,maximum:100}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_completed"},payload:{type:"object",required:["taskId","summary"],properties:{taskId:{type:"string"},summary:{type:"string"},origin:{type:"string",enum:["user","autonomy"]},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"task_failed"},payload:{type:"object",required:["taskId","message"],properties:{taskId:{type:"string"},message:{type:"string"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"tool_call"},payload:{type:"object",required:["toolCallId","tool","args"],properties:{toolCallId:{type:"string"},taskId:{type:"string"},tool:{type:"string"},args:{type:"object",additionalProperties:!0},requiresApproval:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"tool_result"},payload:{type:"object",required:["toolCallId","ok"],properties:{toolCallId:{type:"string"},taskId:{type:"string"},ok:{type:"boolean"},stdout:{type:"string"},stderr:{type:"string"},exitCode:{type:"integer"},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"delegate_request"},payload:{type:"object",required:["requestId","toAgentId","input"],properties:{requestId:{type:"string"},toAgentId:{type:"string"},input:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"delegate_response"},payload:{type:"object",required:["requestId","ok"],properties:{requestId:{type:"string"},ok:{type:"boolean"},output:{type:"object",additionalProperties:!0},error:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_enqueued"},payload:{type:"object",required:["jobId","taskId","kind","params"],properties:{jobId:{type:"string"},taskId:{type:"string"},kind:{type:"string"},params:{type:"object",additionalProperties:!0},origin:{type:"string",enum:["user","autonomy"]},autonomy:{type:"object",properties:{objectiveId:{type:"string"},runId:{type:"string"},snapshotId:{type:"string"},patternKey:{type:"string"}},additionalProperties:!1}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_claimed"},payload:{type:"object",required:["jobId","workerId"],properties:{jobId:{type:"string"},workerId:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_completed"},payload:{type:"object",required:["jobId"],properties:{jobId:{type:"string"},summary:{type:"string"},origin:{type:"string",enum:["user","autonomy"]},artifacts:{type:"array",items:{$ref:"#/definitions/artifact"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_failed"},payload:{type:"object",required:["jobId","message"],properties:{jobId:{type:"string"},message:{type:"string"},detail:{type:"string"},origin:{type:"string",enum:["user","autonomy"]}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"message"},payload:{type:"object",required:["text"],properties:{text:{type:"string"},intent:{type:"object",additionalProperties:!0}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"job_log"},payload:{type:"object",required:["jobId","stream","seq","line"],properties:{jobId:{type:"string"},stream:{type:"string",enum:["stdout","stderr"]},seq:{type:"integer",minimum:1},line:{type:"string"},ts:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"status"},payload:{type:"object",required:["agentId","state"],properties:{agentId:{type:"string"},state:{type:"string",enum:["idle","busy","error","shutting_down"]},uptimeMs:{type:"number"},detail:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_cycle_started"},payload:{type:"object",required:["runId","snapshotId"],properties:{runId:{type:"string"},snapshotId:{type:"string"},phase:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_candidates_generated"},payload:{type:"object",required:["runId","snapshotId","candidateCount"],properties:{runId:{type:"string"},snapshotId:{type:"string"},candidateCount:{type:"integer",minimum:0},topCandidateIds:{type:"array",items:{type:"string"}}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_objective_dispatched"},payload:{type:"object",required:["runId","snapshotId","objectiveId","requestId","patternKey"],properties:{runId:{type:"string"},snapshotId:{type:"string"},objectiveId:{type:"string"},requestId:{type:"string"},patternKey:{type:"string"},origin:{type:"string",enum:["autonomy"]}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_objective_blocked"},payload:{type:"object",required:["runId","snapshotId","objectiveId","reason"],properties:{runId:{type:"string"},snapshotId:{type:"string"},objectiveId:{type:"string"},reason:{type:"string"},questionId:{type:"string"},patternKey:{type:"string"},origin:{type:"string",enum:["autonomy"]}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"autonomy_feedback_recorded"},payload:{type:"object",required:["objectiveId","patternKey","outcome","success"],properties:{objectiveId:{type:"string"},patternKey:{type:"string"},outcome:{type:"string"},success:{type:"boolean"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"question_asked"},payload:{type:"object",required:["questionId","objectiveId","question","questionType"],properties:{questionId:{type:"string"},objectiveId:{type:"string"},question:{type:"string"},questionType:{type:"string"}},additionalProperties:!1}},additionalProperties:!1},{type:"object",required:["type","payload"],properties:{type:{const:"question_answered"},payload:{type:"object",required:["questionId","objectiveId","status"],properties:{questionId:{type:"string"},objectiveId:{type:"string"},status:{type:"string",enum:["valid","invalid"]},answerSummary:{type:"string"}},additionalProperties:!1}},additionalProperties:!1}]}},1103,[]);
1121
1121
  __d(function(g,r,i,a,m,e,d){"use strict";Object.defineProperty(e,'__esModule',{value:!0}),e.usePushPalsSession=function(p="http://localhost:3001"){const v="string"==typeof p?{baseUrl:p}:p??{},f=String(v.baseUrl??"http://localhost:3001").trim().replace(/\/+$/,""),y=String(v.sessionId??"dev").trim()||"dev",I=String(v.authToken??"").trim()||void 0,b=v.clientInfo,[k,h]=(0,t.useState)({sessionId:null,events:[],isConnected:!1,error:null}),[S,_]=(0,t.useReducer)(o.eventReducer,(0,o.initialState)()),[w,C]=(0,t.useState)({}),M=(0,t.useRef)(null),j=(0,t.useRef)(0),R=(0,t.useRef)(null);(0,t.useEffect)(()=>((async()=>{try{const t=await(0,n.resolveClientRegistration)(b,y);R.current=t;const o=await(0,s.createSession)(f,y,I,t);if(!o)return void h(t=>({...t,error:"Failed to create session"}));const c=o.sessionId;h(t=>({...t,sessionId:c,isConnected:!0}));const p=o.created?0:await l(c);j.current=p,o.created&&(0,u.setItem)(`pushpals:cursor:${c}`,"0");const v=(0,s.subscribeEvents)(f,c,(t,s)=>{h(s=>({...s,events:[...s.events,t]})),_({type:"event",envelope:t,cursor:s}),s>j.current&&(j.current=s,(0,u.setItem)(`pushpals:cursor:${c}`,String(s)))},void 0,p,I,t);M.current=v}catch(t){h(s=>({...s,error:String(t)}))}})(),()=>{M.current&&M.current()}),[I,f,y]);const A=(0,t.useCallback)(async t=>!!k.sessionId&&(0,s.sendSessionMessage)(f,k.sessionId,t),[f,k.sessionId]),E=(0,t.useCallback)(async t=>(0,s.submitApprovalDecision)(f,t,"approve",I),[I,f]),F=(0,t.useCallback)(async t=>(0,s.submitApprovalDecision)(f,t,"deny",I),[I,f]),T=(0,t.useMemo)(()=>{const t=new Set;for(const s of k.events)s.from&&t.add(s.from);return Array.from(t).sort()},[k.events]),$=(0,t.useMemo)(()=>{const t=new Set;for(const s of k.events)s.turnId&&t.add(s.turnId);return Array.from(t)},[k.events]),D=(0,t.useMemo)(()=>{const t=new Map,s=new Map;for(const n of k.events){const o=n.payload,u="string"==typeof o?.taskId?o.taskId:void 0,c="string"==typeof o?.jobId?o.jobId:void 0;"job_enqueued"===n.type&&u&&c&&s.set(c,u);const l=u??("job_failed"===n.type&&c?s.get(c):void 0);if(!l)continue;t.has(l)||t.set(l,{taskId:l,title:o.title??l,status:"created",events:[]});const p=t.get(l);p.events.push(n),p.title&&p.title!==l||"string"!=typeof o?.title||!o.title.trim()||(p.title=o.title),"task_started"===n.type?p.status="started":"task_progress"===n.type?p.status="in_progress":"task_completed"===n.type?p.status="completed":("task_failed"===n.type||"job_failed"===n.type&&"completed"!==p.status)&&(p.status="failed")}return Array.from(t.values())},[k.events]),P=(0,t.useMemo)(()=>k.events.filter(t=>{if(!(0,c.shouldDisplayInteractiveSessionEvent)(t))return!1;if(w.agentFrom&&t.from!==w.agentFrom)return!1;if(w.turnId&&t.turnId!==w.turnId)return!1;if(w.taskId){const s=t.payload;if(s?.taskId!==w.taskId)return!1}return!(w.eventTypes&&w.eventTypes.length>0&&!w.eventTypes.includes(t.type))}),[k.events,w]);return{sessionId:k.sessionId,events:k.events,filteredEvents:P,isConnected:k.isConnected,error:k.error,send:A,approve:E,deny:F,tasks:D,agents:T,turnIds:$,filters:w,setFilters:C,state:S}};var t=r(d[0]),s=r(d[1]),n=r(d[2]),o=r(d[3]),u=r(d[4]),c=r(d[5]);async function l(t){const s=await(0,u.getItem)(`pushpals:cursor:${t}`);return s&&Number(s)||0}},1104,[21,1028,1105,1114,1106,1026]);
1122
1122
  __d(function(g,r,i,a,m,e,d){"use strict";async function t(t){const n=await r(d[1])(d[0],d.paths);return await n.getItem(t)}async function n(t,n){const o=await r(d[1])(d[0],d.paths);await o.setItem(t,n)}function o(t,n){const o=String(t??"").trim();return o?o.length<=n?o:o.slice(0,n):""}function c(t){switch(t){case"cli_monitor":return"CLI Monitor";case"web":return"Web Client";case"vscode":return"VS Code";case"cli":return"CLI";default:return t||"Client"}}function l(t){const n=o(t,48).toLowerCase();return n&&n.replace(/[^a-z0-9._-]+/g,"_")||"web"}function s(t,n){return`pushpals:client-id:${l(t)}:${o(n,128)||"dev"}`}function u(t){return"function"==typeof globalThis.crypto?.randomUUID?`${t}-${globalThis.crypto.randomUUID()}`:`${t}-${Date.now()}-${Math.random().toString(16).slice(2)}`}Object.defineProperty(e,'__esModule',{value:!0}),e.normalizeClientKind=l,e.buildClientIdentityStorageKey=s,e.defaultClientIdFactory=u,e.resolveClientRegistration=async function(f,p,w={}){const I=l(f?.kind),y=o(f?.clientId,128),C=w.read??t,b=w.write??n,h=w.createId??u;let $=y;if(!$){const t=s(I,p);$=o(await C(t),128),$||($=h(I),await b(t,$))}const _=o(f?.label,120)||c(I),v=o(f?.version,64),S=o(f?.platform,120),U=o(f?.repoRoot,400);return{clientId:$,kind:I,label:_,...v?{version:v}:{},...S?{platform:S}:{},...U?{repoRoot:U}:{}}}},1105,{"0":1106,"1":1112,"paths":{}});
1123
1123
  __d(function(g,r,i,a,m,e,d){"use strict";let t;Object.defineProperty(e,'__esModule',{value:!0}),e.getItem=async function(t){try{return window.localStorage?.getItem(t)??null}catch{return null}try{const n=await s();return n?await n.getItem(t)??null:null}catch{return null}},e.setItem=async function(t,n){try{window.localStorage?.setItem(t,n)}catch{}return},r(d[0]);let n=null,l=!1;async function s(){return void 0!==t?t:n||(n=(async()=>{try{const n=await r(d[2])(d[1],d.paths,"@react-native-async-storage/async-storage"),l=n.default??n;if(!l?.getItem||!l?.setItem)throw new Error("module loaded but getItem/setItem missing");return t=l,t}catch{return t=null,l||(l=!0,console.warn("[PushPals] @react-native-async-storage/async-storage is not available. Cursor persistence disabled on native. Install with: bun add @react-native-async-storage/async-storage")),null}finally{n=null}})(),n)}},1106,{"0":114,"1":1201,"2":1112,"paths":{"1201":"/_expo/static/js/web/index-6013f9ebc87a963a55bb9137af1a5a06.js"}});
@@ -435,5 +435,5 @@ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-web
435
435
  @keyframes r-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
436
436
  @keyframes r-imtty0{0%{opacity:0;}100%{opacity:1;}}
437
437
  @keyframes r-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
438
- @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"></div></div><script src="/_expo/static/js/web/entry-d69cc703f72afa383e4108efd6e0f726.js" defer></script>
438
+ @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"></div></div><script src="/_expo/static/js/web/entry-c6862f701ea52ccf8692a6c9e749af5c.js" defer></script>
439
439
  </body></html>
@@ -435,5 +435,5 @@ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-web
435
435
  @keyframes r-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
436
436
  @keyframes r-imtty0{0%{opacity:0;}100%{opacity:1;}}
437
437
  @keyframes r-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
438
- @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"><!--$--><div style="position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;visibility:hidden"></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0 r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af" style="background-color:rgba(242,242,242,1.00);display:flex"><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0"><!--$--><div class="css-g5y9jx r-13awgt0" style="background-color:rgba(236,242,245,1.00)"><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-15zx4ds r-a4e7m4 r-j33s3c r-1ovo9ad" style="background-color:rgba(0,126,119,0.13)"></div><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-5fjp4n r-9s5a0n r-1hy2ut r-9dcw1g" style="background-color:rgba(199,133,30,0.09)"></div><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-1iuttuq r-pbsvq8 r-1b0pg27 r-1sxiqef" style="background-color:rgba(22,154,88,0.09)"></div><div class="css-g5y9jx r-150rngu r-eqz5dr r-16y2uox r-1wbh5a2 r-11yh6sk r-1rnoaur r-agouwx r-13awgt0"><div class="css-g5y9jx r-16y2uox r-2llsf r-kzbkwu"><div class="css-g5y9jx r-16uyjmq r-rs99b7 r-13awgt0 r-hv52eu r-ifefl9 r-1udh08x" style="background-color:rgba(247,250,252,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);opacity:0;transform:translateY(18px)"><div class="css-g5y9jx r-1habvwh r-18u37iz r-1wtj0ep r-kzbkwu r-u9wvl5 r-131miar"><div class="css-g5y9jx r-13awgt0 r-j2kj52"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1q67n59 r-15zivkp r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">pushpals operations console</div><div dir="auto" class="css-146c3p1 r-1ra0lkn r-b88u0q r-zl2h9q" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Mission Control</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo r-1cmskyw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Coordinate your edits with autonomous buddy execution across planning, jobs, and integration in one live board.</div><div dir="auto" class="css-146c3p1 r-1enofrn r-5fcqz0 r-kc8jnq" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Current repo:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(84,112,134,1.00);font-family:&#x27;IBM Plex Mono&#x27;, &#x27;JetBrains Mono&#x27;, monospace">unavailable</span></div><div dir="auto" class="css-146c3p1 r-1enofrn r-5fcqz0 r-14gqq1x" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Snapshot:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(17,34,48,1.00);font-family:&#x27;IBM Plex Mono&#x27;, &#x27;JetBrains Mono&#x27;, monospace">waiting for /system/status</span></div></div><div class="css-g5y9jx r-k200y r-1q9bdsx r-rs99b7 r-18u37iz r-1udh08x" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><button aria-label="Set theme mode to auto" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" style="background-color:rgba(217,244,241,1.00)" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(2,92,86,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">auto</div></button><button aria-label="Set theme mode to light" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">light</div></button><button aria-label="Set theme mode to dark" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">dark</div></button></div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-15d164r r-bhtmuz r-ytbthy r-1ubuhtd" style="background-color:rgba(244,248,251,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00)"><div class="css-g5y9jx r-150rngu r-18u37iz r-16y2uox r-1wbh5a2 r-lltvgl r-buy8e9 r-agouwx r-2eszeu"><div class="css-g5y9jx r-18u37iz"><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(199,133,30,0.40);border-right-color:rgba(199,133,30,0.40);border-bottom-color:rgba(199,133,30,0.40);border-left-color:rgba(199,133,30,0.40);background-color:rgba(199,133,30,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(199,133,30,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">1. You</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Awaiting input</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(0,126,119,0.40);border-right-color:rgba(0,126,119,0.40);border-bottom-color:rgba(0,126,119,0.40);border-left-color:rgba(0,126,119,0.40);background-color:rgba(0,126,119,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">2. Session</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Ready</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(22,154,88,0.40);border-right-color:rgba(22,154,88,0.40);border-bottom-color:rgba(22,154,88,0.40);border-left-color:rgba(22,154,88,0.40);background-color:rgba(22,154,88,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">3. RemoteBuddy</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 pending, 0 claimed</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(22,154,88,0.40);border-right-color:rgba(22,154,88,0.40);border-bottom-color:rgba(22,154,88,0.40);border-left-color:rgba(22,154,88,0.40);background-color:rgba(22,154,88,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">4. WorkerPals</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 online, 0 busy, 0 queued</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(0,126,119,0.40);border-right-color:rgba(0,126,119,0.40);border-bottom-color:rgba(0,126,119,0.40);border-left-color:rgba(0,126,119,0.40);background-color:rgba(0,126,119,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">5. SCM</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 ready, 0 pending</div></div></div></div></div></div><div class="css-g5y9jx r-18u37iz r-1w6e6rj r-1mi0q7o r-u9wvl5"><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Connection</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(214,69,83,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Disconnected</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 events</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Pending Work</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 requests | 0 jobs</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Active Workers</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 busy</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Last Sync</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">--</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">waiting</div></div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-18u37iz r-15d164r r-bhtmuz r-146eth8" style="background-color:rgba(244,248,251,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00)"><button aria-label="Coordination tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" style="background-color:rgba(0,126,119,1.00);border-top-color:rgba(0,126,119,1.00);border-right-color:rgba(0,126,119,1.00);border-bottom-color:rgba(0,126,119,1.00);border-left-color:rgba(0,126,119,1.00)" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(255,255,255,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Coordination<!-- --> (0)</div></button><button aria-label="Chat tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Chat<!-- --> (0)</div></button><button aria-label="Requests tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Requests<!-- --> (0)</div></button><button aria-label="Jobs &amp; Traces tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Jobs &amp; Traces<!-- --> (0)</div></button><button aria-label="System tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">System<!-- --> (0)</div></button><button aria-label="Config tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Config</div></button></div><div class="css-g5y9jx r-13awgt0 r-ifefl9" style="opacity:1;transform:translateY(0px)"><div class="css-g5y9jx r-150rngu r-eqz5dr r-16y2uox r-1wbh5a2 r-11yh6sk r-1rnoaur r-agouwx r-13awgt0"><div class="css-g5y9jx r-1t2hasf r-u9wvl5"><div class="css-g5y9jx r-18u37iz r-1w6e6rj r-1mi0q7o"><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Ready For Review</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 processed completions</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Active Handoffs</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 running jobs</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Awaiting Remote</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 pending requests</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Blocked</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 failed jobs</div></div></div><div class="css-g5y9jx r-eqz5dr"><div class="css-g5y9jx r-1867qdf r-rs99b7 r-k3250r r-15d164r r-xyw6el" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(255,255,255,1.00)"><div class="css-g5y9jx r-1awozwy r-18u37iz r-1wtj0ep"><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Change Coordination Board</div><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1g94qm0" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0<!-- --> latest requests</div></div><div class="css-g5y9jx r-1habvwh r-1867qdf r-nsbfu8"><div dir="auto" class="css-146c3p1 r-1i10wst r-b88u0q r-15zivkp" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Nothing to coordinate yet</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Send a task from chat and this board will trace the full handoff from request to integration.</div></div></div><div class="css-g5y9jx r-1867qdf r-rs99b7 r-jprt8p r-15d164r r-11wrixw r-xyw6el" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(255,255,255,1.00)"><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Review Queue</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">No processed completions yet.</div><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif;margin-top:14px">Needs Attention</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">No failed coordination chains.</div></div></div></div></div></div></div></div></div></div></div><!--/$--></div></div></div></div><!--/$--></div></div><script src="/_expo/static/js/web/entry-d69cc703f72afa383e4108efd6e0f726.js" defer></script>
438
+ @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"><!--$--><div style="position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;visibility:hidden"></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0 r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af" style="background-color:rgba(242,242,242,1.00);display:flex"><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0"><!--$--><div class="css-g5y9jx r-13awgt0" style="background-color:rgba(236,242,245,1.00)"><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-15zx4ds r-a4e7m4 r-j33s3c r-1ovo9ad" style="background-color:rgba(0,126,119,0.13)"></div><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-5fjp4n r-9s5a0n r-1hy2ut r-9dcw1g" style="background-color:rgba(199,133,30,0.09)"></div><div class="css-g5y9jx r-cpet4d r-u8s1d r-g7s1ez r-1iuttuq r-pbsvq8 r-1b0pg27 r-1sxiqef" style="background-color:rgba(22,154,88,0.09)"></div><div class="css-g5y9jx r-150rngu r-eqz5dr r-16y2uox r-1wbh5a2 r-11yh6sk r-1rnoaur r-agouwx r-13awgt0"><div class="css-g5y9jx r-16y2uox r-2llsf r-kzbkwu"><div class="css-g5y9jx r-16uyjmq r-rs99b7 r-13awgt0 r-hv52eu r-ifefl9 r-1udh08x" style="background-color:rgba(247,250,252,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);opacity:0;transform:translateY(18px)"><div class="css-g5y9jx r-1habvwh r-18u37iz r-1wtj0ep r-kzbkwu r-u9wvl5 r-131miar"><div class="css-g5y9jx r-13awgt0 r-j2kj52"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1q67n59 r-15zivkp r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">pushpals operations console</div><div dir="auto" class="css-146c3p1 r-1ra0lkn r-b88u0q r-zl2h9q" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Mission Control</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo r-1cmskyw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Coordinate your edits with autonomous buddy execution across planning, jobs, and integration in one live board.</div><div dir="auto" class="css-146c3p1 r-1enofrn r-5fcqz0 r-kc8jnq" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Current repo:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(84,112,134,1.00);font-family:&#x27;IBM Plex Mono&#x27;, &#x27;JetBrains Mono&#x27;, monospace">unavailable</span></div><div dir="auto" class="css-146c3p1 r-1enofrn r-5fcqz0 r-14gqq1x" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Snapshot:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(17,34,48,1.00);font-family:&#x27;IBM Plex Mono&#x27;, &#x27;JetBrains Mono&#x27;, monospace">waiting for /system/status</span></div></div><div class="css-g5y9jx r-k200y r-1q9bdsx r-rs99b7 r-18u37iz r-1udh08x" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><button aria-label="Set theme mode to auto" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" style="background-color:rgba(217,244,241,1.00)" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(2,92,86,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">auto</div></button><button aria-label="Set theme mode to light" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">light</div></button><button aria-label="Set theme mode to dark" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1yd117h r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-1enofrn r-1kfrs79 r-1ozqkpa" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">dark</div></button></div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-15d164r r-bhtmuz r-ytbthy r-1ubuhtd" style="background-color:rgba(244,248,251,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00)"><div class="css-g5y9jx r-150rngu r-18u37iz r-16y2uox r-1wbh5a2 r-lltvgl r-buy8e9 r-agouwx r-2eszeu"><div class="css-g5y9jx r-18u37iz"><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(199,133,30,0.40);border-right-color:rgba(199,133,30,0.40);border-bottom-color:rgba(199,133,30,0.40);border-left-color:rgba(199,133,30,0.40);background-color:rgba(199,133,30,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(199,133,30,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">1. You</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Awaiting input</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(0,126,119,0.40);border-right-color:rgba(0,126,119,0.40);border-bottom-color:rgba(0,126,119,0.40);border-left-color:rgba(0,126,119,0.40);background-color:rgba(0,126,119,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">2. Session</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Ready</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(22,154,88,0.40);border-right-color:rgba(22,154,88,0.40);border-bottom-color:rgba(22,154,88,0.40);border-left-color:rgba(22,154,88,0.40);background-color:rgba(22,154,88,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">3. RemoteBuddy</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 pending, 0 claimed</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(22,154,88,0.40);border-right-color:rgba(22,154,88,0.40);border-bottom-color:rgba(22,154,88,0.40);border-left-color:rgba(22,154,88,0.40);background-color:rgba(22,154,88,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">4. WorkerPals</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 online, 0 busy, 0 queued</div></div><div class="css-g5y9jx r-109y4c4 r-8dgmk1 r-12ym1je" style="background-color:rgba(207,218,226,0.80)"></div></div><div class="css-g5y9jx r-1awozwy r-18u37iz"><div class="css-g5y9jx r-1q9bdsx r-rs99b7 r-1s5swlz r-1ubuhtd r-13i4ljo" style="border-top-color:rgba(0,126,119,0.40);border-right-color:rgba(0,126,119,0.40);border-bottom-color:rgba(0,126,119,0.40);border-left-color:rgba(0,126,119,0.40);background-color:rgba(0,126,119,0.09)"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1gkfh8e r-b88u0q r-1dpkw9 r-tsynxw" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">5. SCM</div><div dir="auto" class="css-146c3p1 r-8akbws r-krxsd3 r-dnmrzs r-1qsk4np r-1udbk01 r-1enofrn r-1cwl3u0 r-14gqq1x" style="-webkit-line-clamp:2;color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 ready, 0 pending</div></div></div></div></div></div><div class="css-g5y9jx r-18u37iz r-1w6e6rj r-1mi0q7o r-u9wvl5"><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Connection</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(214,69,83,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Disconnected</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 events</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Pending Work</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 requests | 0 jobs</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Active Workers</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 busy</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Last Sync</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">--</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">waiting</div></div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-18u37iz r-15d164r r-bhtmuz r-146eth8" style="background-color:rgba(244,248,251,1.00);border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00)"><button aria-label="Coordination tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" style="background-color:rgba(0,126,119,1.00);border-top-color:rgba(0,126,119,1.00);border-right-color:rgba(0,126,119,1.00);border-bottom-color:rgba(0,126,119,1.00);border-left-color:rgba(0,126,119,1.00)" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(255,255,255,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Coordination<!-- --> (0)</div></button><button aria-label="Chat tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Chat<!-- --> (0)</div></button><button aria-label="Requests tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Requests<!-- --> (0)</div></button><button aria-label="Jobs &amp; Traces tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Jobs &amp; Traces<!-- --> (0)</div></button><button aria-label="System tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">System<!-- --> (0)</div></button><button aria-label="Config tab" role="button" tabindex="0" class="css-g5y9jx r-1loqt21 r-1otgn73 r-1awozwy r-42olwf r-1dzdj1l r-rs99b7 r-13awgt0 r-1777fci r-11f147o r-1ubuhtd" type="button"><div dir="auto" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1enofrn r-b88u0q" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Config</div></button></div><div class="css-g5y9jx r-13awgt0 r-ifefl9" style="opacity:1;transform:translateY(0px)"><div class="css-g5y9jx r-150rngu r-eqz5dr r-16y2uox r-1wbh5a2 r-11yh6sk r-1rnoaur r-agouwx r-13awgt0"><div class="css-g5y9jx r-1t2hasf r-u9wvl5"><div class="css-g5y9jx r-18u37iz r-1w6e6rj r-1mi0q7o"><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Ready For Review</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 processed completions</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Active Handoffs</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(0,126,119,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 running jobs</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Awaiting Remote</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 pending requests</div></div><div class="css-g5y9jx r-t23y2h r-rs99b7 r-16y2uox r-5oul0u r-1kb76zh r-bgnin r-ytbthy r-3o4zer" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(244,248,251,1.00)"><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1cm7zt9 r-tsynxw" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Blocked</div><div dir="auto" class="css-146c3p1 r-evnaw r-b88u0q r-19qrga8" style="color:rgba(22,154,88,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0 failed jobs</div></div></div><div class="css-g5y9jx r-eqz5dr"><div class="css-g5y9jx r-1867qdf r-rs99b7 r-k3250r r-15d164r r-xyw6el" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(255,255,255,1.00)"><div class="css-g5y9jx r-1awozwy r-18u37iz r-1wtj0ep"><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Change Coordination Board</div><div dir="auto" class="css-146c3p1 r-1gkfh8e r-1g94qm0" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">0<!-- --> latest requests</div></div><div class="css-g5y9jx r-1habvwh r-1867qdf r-nsbfu8"><div dir="auto" class="css-146c3p1 r-1i10wst r-b88u0q r-15zivkp" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Nothing to coordinate yet</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Send a task from chat and this board will trace the full handoff from request to integration.</div></div></div><div class="css-g5y9jx r-1867qdf r-rs99b7 r-jprt8p r-15d164r r-11wrixw r-xyw6el" style="border-top-color:rgba(207,218,226,1.00);border-right-color:rgba(207,218,226,1.00);border-bottom-color:rgba(207,218,226,1.00);border-left-color:rgba(207,218,226,1.00);background-color:rgba(255,255,255,1.00)"><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">Review Queue</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">No processed completions yet.</div><div dir="auto" class="css-146c3p1 r-ubezar r-b88u0q r-5oul0u" style="color:rgba(17,34,48,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif;margin-top:14px">Needs Attention</div><div dir="auto" class="css-146c3p1 r-n6v787 r-hjklzo" style="color:rgba(84,112,134,1.00);font-family:&#x27;Space Grotesk&#x27;, &#x27;Avenir Next&#x27;, &#x27;Trebuchet MS&#x27;, sans-serif">No failed coordination chains.</div></div></div></div></div></div></div></div></div></div></div><!--/$--></div></div></div></div><!--/$--></div></div><script src="/_expo/static/js/web/entry-c6862f701ea52ccf8692a6c9e749af5c.js" defer></script>
439
439
  </body></html>
@@ -435,5 +435,5 @@ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-web
435
435
  @keyframes r-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
436
436
  @keyframes r-imtty0{0%{opacity:0;}100%{opacity:1;}}
437
437
  @keyframes r-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
438
- @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"><!--$--><div style="position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;visibility:hidden"></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0 r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af" style="background-color:rgba(242,242,242,1.00);display:flex"><div class="css-g5y9jx r-184en5c r-12vffkv"><div class="css-g5y9jx r-12vffkv" style="height:64px"><div class="css-g5y9jx r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af r-12vffkv"><div class="css-g5y9jx r-qklmqi r-13awgt0 r-105ug2t" style="background-color:rgba(255,255,255,1.00);border-bottom-color:rgba(216,216,216,1.00)"></div></div><div class="css-g5y9jx r-633pao" style="height:0px"></div><div class="css-g5y9jx r-1oszu61 r-13awgt0 r-18u37iz r-12vffkv"><div class="css-g5y9jx r-1awozwy r-18u37iz r-1h0z5md r-12vffkv" style="margin-left:0px"></div><div class="css-g5y9jx r-1777fci r-12vffkv" style="max-width:-32px;margin-right:16px;margin-left:16px"><h1 dir="auto" aria-level="1" role="heading" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1i10wst" style="color:rgba(28,28,30,1.00);font-family:system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-weight:500">Modal</h1></div><div class="css-g5y9jx r-1awozwy r-18u37iz r-17s6mgv r-1iusvr4 r-16y2uox r-12vffkv" style="margin-right:0px"></div></div></div></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0"><!--$--><div class="css-g5y9jx r-1awozwy r-13awgt0 r-1777fci r-1pcd2l5" style="background-color:rgba(255,255,255,1.00)"><div dir="auto" class="css-146c3p1 r-1ui5ee8 r-vw2c0b r-37tt59" style="color:rgba(17,24,28,1.00)">This is a modal</div><a href="/" dir="auto" role="link" class="css-146c3p1 r-19h5ruw r-1d7mnkm r-1loqt21"><span class="css-1jxf684 r-1v78gzs r-ubezar r-17rnw9f">Go to home screen</span></a></div><!--/$--></div></div></div></div><!--/$--></div></div><script src="/_expo/static/js/web/entry-d69cc703f72afa383e4108efd6e0f726.js" defer></script>
438
+ @keyframes r-t2lo5v{0%{opacity:1;}100%{opacity:0;}}</style><script type="module">globalThis.__EXPO_ROUTER_HYDRATE__=true;</script><link rel="icon" href="/favicon.ico" /></head><body><div id="root"><div class="css-g5y9jx r-13awgt0"><!--$--><div style="position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;visibility:hidden"></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0 r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af" style="background-color:rgba(242,242,242,1.00);display:flex"><div class="css-g5y9jx r-184en5c r-12vffkv"><div class="css-g5y9jx r-12vffkv" style="height:64px"><div class="css-g5y9jx r-1p0dtai r-1d2f490 r-u8s1d r-zchlnj r-ipm5af r-12vffkv"><div class="css-g5y9jx r-qklmqi r-13awgt0 r-105ug2t" style="background-color:rgba(255,255,255,1.00);border-bottom-color:rgba(216,216,216,1.00)"></div></div><div class="css-g5y9jx r-633pao" style="height:0px"></div><div class="css-g5y9jx r-1oszu61 r-13awgt0 r-18u37iz r-12vffkv"><div class="css-g5y9jx r-1awozwy r-18u37iz r-1h0z5md r-12vffkv" style="margin-left:0px"></div><div class="css-g5y9jx r-1777fci r-12vffkv" style="max-width:-32px;margin-right:16px;margin-left:16px"><h1 dir="auto" aria-level="1" role="heading" class="css-146c3p1 r-dnmrzs r-1udh08x r-1udbk01 r-3s2u2q r-1iln25a r-1i10wst" style="color:rgba(28,28,30,1.00);font-family:system-ui, &quot;Segoe UI&quot;, Roboto, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-weight:500">Modal</h1></div><div class="css-g5y9jx r-1awozwy r-18u37iz r-17s6mgv r-1iusvr4 r-16y2uox r-12vffkv" style="margin-right:0px"></div></div></div></div><div class="css-g5y9jx r-13awgt0"><div class="css-g5y9jx r-13awgt0"><!--$--><div class="css-g5y9jx r-1awozwy r-13awgt0 r-1777fci r-1pcd2l5" style="background-color:rgba(255,255,255,1.00)"><div dir="auto" class="css-146c3p1 r-1ui5ee8 r-vw2c0b r-37tt59" style="color:rgba(17,24,28,1.00)">This is a modal</div><a href="/" dir="auto" role="link" class="css-146c3p1 r-19h5ruw r-1d7mnkm r-1loqt21"><span class="css-1jxf684 r-1v78gzs r-ubezar r-17rnw9f">Go to home screen</span></a></div><!--/$--></div></div></div></div><!--/$--></div></div><script src="/_expo/static/js/web/entry-c6862f701ea52ccf8692a6c9e749af5c.js" defer></script>
439
439
  </body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushpalsdev/cli",
3
- "version": "1.0.72",
3
+ "version": "1.0.73",
4
4
  "description": "PushPals terminal CLI for LocalBuddy -> RemoteBuddy orchestration",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -286,6 +286,7 @@
286
286
  "properties": {
287
287
  "taskId": { "type": "string" },
288
288
  "summary": { "type": "string" },
289
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
289
290
  "artifacts": {
290
291
  "type": "array",
291
292
  "items": { "$ref": "#/definitions/artifact" }
@@ -454,6 +455,7 @@
454
455
  "properties": {
455
456
  "jobId": { "type": "string" },
456
457
  "summary": { "type": "string" },
458
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
457
459
  "artifacts": {
458
460
  "type": "array",
459
461
  "items": { "$ref": "#/definitions/artifact" }
@@ -475,7 +477,8 @@
475
477
  "properties": {
476
478
  "jobId": { "type": "string" },
477
479
  "message": { "type": "string" },
478
- "detail": { "type": "string" }
480
+ "detail": { "type": "string" },
481
+ "origin": { "type": "string", "enum": ["user", "autonomy"] }
479
482
  },
480
483
  "additionalProperties": false
481
484
  }
@@ -1725,6 +1725,8 @@ function extractVisionKeyItems(markdown) {
1725
1725
  governance: dedupeAndClamp(buckets.governance)
1726
1726
  };
1727
1727
  }
1728
+ // packages/shared/src/session_event_visibility.ts
1729
+ var ALWAYS_VISIBLE_EVENT_TYPES = new Set(["question_asked"]);
1728
1730
  // packages/shared/src/localbuddy_runtime.ts
1729
1731
  var TRUTHY2 = new Set(["1", "true", "yes", "on"]);
1730
1732
  var FALSY2 = new Set(["0", "false", "no", "off"]);
@@ -7521,6 +7523,19 @@ function asObject2(value) {
7521
7523
  return null;
7522
7524
  return value;
7523
7525
  }
7526
+ function sessionEventOrigin(payload) {
7527
+ const record = asObject2(payload);
7528
+ if (!record)
7529
+ return "user";
7530
+ if (record.origin === "autonomy")
7531
+ return "autonomy";
7532
+ if (asObject2(record.autonomy))
7533
+ return "autonomy";
7534
+ if (asObject2(record.params) && sessionEventOrigin(record.params) === "autonomy") {
7535
+ return "autonomy";
7536
+ }
7537
+ return "user";
7538
+ }
7524
7539
  function normalizeMetadataTargetPaths(value, maxItems = 48) {
7525
7540
  if (!Array.isArray(value))
7526
7541
  return [];
@@ -7898,6 +7913,7 @@ class RemoteBuddyOrchestrator {
7898
7913
  fatalSessionMonitors = new Set;
7899
7914
  seenJobFailures = new Set;
7900
7915
  seenJobCompletions = new Set;
7916
+ jobOriginById = new Map;
7901
7917
  seenAutonomyFeedbackEvents = new Set;
7902
7918
  seenQuestionEvents = new Set;
7903
7919
  eventMonitorStartedAt = Date.now();
@@ -8022,7 +8038,7 @@ class RemoteBuddyOrchestrator {
8022
8038
  if (Date.now() >= startupDeadlineMs)
8023
8039
  break;
8024
8040
  await Bun.sleep(1000);
8025
- this.statusSessionReady = await this.ensureSessionWithRetry(3, 400, 2500);
8041
+ this.statusSessionReady = await this.ensureSessionWithRetry(undefined, 3, 400, 2500);
8026
8042
  }
8027
8043
  if (!startupStatusOk) {
8028
8044
  console.warn("[RemoteBuddy] Failed to emit startup status event");
@@ -8036,7 +8052,7 @@ class RemoteBuddyOrchestrator {
8036
8052
  return;
8037
8053
  (async () => {
8038
8054
  if (!this.statusSessionReady) {
8039
- this.statusSessionReady = await this.ensureSessionWithRetry(3, 400, 2500);
8055
+ this.statusSessionReady = await this.ensureSessionWithRetry(undefined, 3, 400, 2500);
8040
8056
  }
8041
8057
  const ok = await this.comm.status(this.agentId, "idle", "RemoteBuddy heartbeat");
8042
8058
  if (!ok) {
@@ -8080,6 +8096,7 @@ class RemoteBuddyOrchestrator {
8080
8096
  async sendCommand(sessionId, cmd) {
8081
8097
  try {
8082
8098
  const ok = await this.comm.emitToSession(sessionId, cmd.type, cmd.payload, {
8099
+ from: cmd.from,
8083
8100
  to: cmd.to,
8084
8101
  correlationId: cmd.correlationId,
8085
8102
  turnId: cmd.turnId,
@@ -8287,13 +8304,20 @@ ${tail.join(`
8287
8304
  });
8288
8305
  }
8289
8306
  handleSessionEvent(envelope) {
8290
- if (envelope.type !== "job_failed" && envelope.type !== "job_completed" && envelope.type !== "autonomy_feedback_recorded" && envelope.type !== "question_asked" && envelope.type !== "question_answered") {
8307
+ if (envelope.type !== "job_failed" && envelope.type !== "job_completed" && envelope.type !== "job_enqueued" && envelope.type !== "autonomy_feedback_recorded" && envelope.type !== "question_asked" && envelope.type !== "question_answered") {
8291
8308
  return;
8292
8309
  }
8293
8310
  const tsMs = Date.parse(String(envelope.ts ?? ""));
8294
8311
  if (Number.isFinite(tsMs) && tsMs + 2000 < this.eventMonitorStartedAt)
8295
8312
  return;
8296
8313
  const eventSessionId = String(envelope.sessionId ?? "").trim() || this.sessionId;
8314
+ if (envelope.type === "job_enqueued") {
8315
+ const payload2 = envelope.payload;
8316
+ const jobId2 = String(payload2.jobId ?? "").trim();
8317
+ if (jobId2)
8318
+ this.jobOriginById.set(jobId2, sessionEventOrigin(payload2));
8319
+ return;
8320
+ }
8297
8321
  if (envelope.type === "question_asked") {
8298
8322
  if (!this.markQuestionEventSeen(String(envelope.id ?? "")))
8299
8323
  return;
@@ -8351,6 +8375,7 @@ ${tail.join(`
8351
8375
  const detail = toSingleLine(payload2.detail, 220);
8352
8376
  if (!jobId2 || !message)
8353
8377
  return;
8378
+ const origin2 = sessionEventOrigin(payload2) === "autonomy" || this.jobOriginById.get(jobId2) === "autonomy" ? "autonomy" : "user";
8354
8379
  const dedupeKey = `${jobId2}:${message}`;
8355
8380
  if (this.seenJobFailures.has(dedupeKey))
8356
8381
  return;
@@ -8359,6 +8384,8 @@ ${tail.join(`
8359
8384
  this.pushContext(failureLine, eventSessionId);
8360
8385
  this.rememberPersistentMemory("job_failed", `Job ${jobId2.slice(0, 8)} failed: ${toSingleLine(`${message}${detail ? ` (${detail})` : ""}`, 360)}`, null, eventSessionId);
8361
8386
  console.warn(`[RemoteBuddy] Observed WorkerPal failure ${jobId2}: ${message}`);
8387
+ if (origin2 === "autonomy")
8388
+ return;
8362
8389
  this.handleObservedJobFailure(eventSessionId, envelope, jobId2, message, detail);
8363
8390
  return;
8364
8391
  }
@@ -8367,6 +8394,7 @@ ${tail.join(`
8367
8394
  const summary = toSingleLine(payload.summary, 240) || "Job completed";
8368
8395
  if (!jobId)
8369
8396
  return;
8397
+ const origin = sessionEventOrigin(payload) === "autonomy" || this.jobOriginById.get(jobId) === "autonomy" ? "autonomy" : "user";
8370
8398
  if (/startup warmup completed/i.test(summary))
8371
8399
  return;
8372
8400
  if (this.seenJobCompletions.has(jobId))
@@ -8374,6 +8402,8 @@ ${tail.join(`
8374
8402
  this.seenJobCompletions.add(jobId);
8375
8403
  this.pushContext(`[job_completed ${jobId}] ${summary}`, eventSessionId);
8376
8404
  this.rememberPersistentMemory("job_completed", `Job ${jobId.slice(0, 8)} completed: ${toSingleLine(summary, 360)}`, null, eventSessionId);
8405
+ if (origin === "autonomy")
8406
+ return;
8377
8407
  const shortJob = jobId.slice(0, 8);
8378
8408
  const clarificationQuestion = extractClarificationFromCompletionSummary(summary);
8379
8409
  const note = clarificationQuestion ? `WorkerPal job ${shortJob} needs clarification before making changes: ${clarificationQuestion}
@@ -8977,6 +9007,7 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
8977
9007
  const priority = normalizeRequestPriority(request.priority);
8978
9008
  const queueWaitBudgetMs = Math.max(5000, Number.isFinite(Number(request.queueWaitBudgetMs)) ? Number(request.queueWaitBudgetMs) : priority === "interactive" ? 20000 : priority === "background" ? 240000 : 90000);
8979
9009
  const turnId = randomUUID2();
9010
+ const eventFrom = autonomyMetadata ? `agent:${this.agentId}/autonomy` : undefined;
8980
9011
  const planningContext = this.buildPlanningContext(priority, requestSessionId);
8981
9012
  this.rememberPersistentMemory("request", `priority=${priority} prompt=${toSingleLine(prompt, 520)}`, requestId, requestSessionId);
8982
9013
  try {
@@ -9058,14 +9089,16 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9058
9089
 
9059
9090
  `).trim();
9060
9091
  if (queueWaitMs > queueWaitBudgetMs) {
9061
- await this.assistantMessage(requestSessionId, `Request ${requestId.slice(0, 8)} waited ${Math.floor(queueWaitMs / 1000)}s in queue (budget ${Math.floor(queueWaitBudgetMs / 1000)}s). Prioritizing execution now.`, { turnId, correlationId: requestId });
9092
+ await this.assistantMessage(requestSessionId, `Request ${requestId.slice(0, 8)} waited ${Math.floor(queueWaitMs / 1000)}s in queue (budget ${Math.floor(queueWaitBudgetMs / 1000)}s). Prioritizing execution now.`, { turnId, correlationId: requestId, from: eventFrom });
9062
9093
  }
9063
9094
  if (!requiresWorker) {
9064
- await this.sendCommand(requestSessionId, {
9065
- type: "assistant_message",
9066
- payload: { text: plan.assistant_message },
9067
- turnId
9068
- });
9095
+ if (!autonomyMetadata) {
9096
+ await this.sendCommand(requestSessionId, {
9097
+ type: "assistant_message",
9098
+ payload: { text: plan.assistant_message },
9099
+ turnId
9100
+ });
9101
+ }
9069
9102
  if (plan.intent !== "chat" && plan.intent !== "status") {
9070
9103
  if (autonomyMetadata && CONFIG.remotebuddy.autonomy.enabled) {
9071
9104
  const workerInstruction = canonicalizeInstructionTextForBun(String(plan.worker_instruction ?? "").trim() || plan.assistant_message);
@@ -9076,7 +9109,7 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9076
9109
  console.warn(`[RemoteBuddy] Non-chat intent (${plan.intent}) from engine: enqueueFromAnalysis returned null (engine disabled or enqueue failed)`);
9077
9110
  }
9078
9111
  } else if (!autonomyMetadata) {
9079
- await this.assistantMessage(requestSessionId, "Should I have a WorkerPal implement this? Reply to confirm and I'll enqueue the work, or clarify what you'd like focused on.", { turnId, correlationId: requestId });
9112
+ await this.assistantMessage(requestSessionId, "Should I have a WorkerPal implement this? Reply to confirm and I'll enqueue the work, or clarify what you'd like focused on.", { turnId, correlationId: requestId, from: eventFrom });
9080
9113
  }
9081
9114
  }
9082
9115
  await fetch(`${this.server}/requests/${requestId}/complete`, {
@@ -9107,7 +9140,8 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9107
9140
  console.warn(`[RemoteBuddy] ${userMessage}`);
9108
9141
  await this.assistantMessage(requestSessionId, userMessage, {
9109
9142
  turnId,
9110
- correlationId: requestId
9143
+ correlationId: requestId,
9144
+ from: eventFrom
9111
9145
  });
9112
9146
  await fetch(`${this.server}/requests/${requestId}/fail`, {
9113
9147
  method: "POST",
@@ -9120,10 +9154,12 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9120
9154
  return;
9121
9155
  }
9122
9156
  }
9123
- await this.assistantMessage(requestSessionId, "Understood. I am delegating this to a WorkerPal now.", {
9124
- turnId,
9125
- correlationId: requestId
9126
- });
9157
+ if (!autonomyMetadata) {
9158
+ await this.assistantMessage(requestSessionId, "Understood. I am delegating this to a WorkerPal now.", {
9159
+ turnId,
9160
+ correlationId: requestId
9161
+ });
9162
+ }
9127
9163
  const executionBudgetMs = this.executionBudgetForPriority(priority);
9128
9164
  const strictTargetPaths = targetPaths.filter((entry) => entry && entry !== ".");
9129
9165
  const baseParams = {
@@ -9188,15 +9224,18 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9188
9224
  taskId: effectiveTaskId,
9189
9225
  title: `Execute request: ${toSingleLine(prompt, 64) || "user request"}`,
9190
9226
  description: lane === "deterministic" ? "Deterministic execution lane (fast path)" : "Agentic worker execution lane",
9191
- createdBy: `agent:${this.agentId}`,
9227
+ createdBy: autonomyMetadata ? "autonomy" : `agent:${this.agentId}`,
9228
+ ...autonomyMetadata ? { tags: ["autonomy"] } : {},
9192
9229
  priority
9193
9230
  },
9194
- turnId
9231
+ turnId,
9232
+ from: eventFrom
9195
9233
  });
9196
9234
  await this.sendCommand(requestSessionId, {
9197
9235
  type: "task_started",
9198
9236
  payload: { taskId: effectiveTaskId },
9199
- turnId
9237
+ turnId,
9238
+ from: eventFrom
9200
9239
  });
9201
9240
  }
9202
9241
  await this.sendCommand(requestSessionId, {
@@ -9205,9 +9244,12 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9205
9244
  taskId: effectiveTaskId,
9206
9245
  message: enqueueResult.deduped ? "Reused active WorkerPal task for the same targeted file scope" : targetWorkerId ? `Assigned to WorkerPal ${targetWorkerId} (${lane} lane)` : "No idle WorkerPal available; queued for first available WorkerPal"
9207
9246
  },
9208
- turnId
9247
+ turnId,
9248
+ from: eventFrom
9209
9249
  });
9210
- await this.assistantMessage(requestSessionId, enqueueResult.deduped ? "A matching WorkerPal task is already in progress for the same targeted file scope. Reusing that task instead of queuing a duplicate." : targetWorkerId ? `Assigned this request to WorkerPal ${targetWorkerId} (${lane} lane).` : "No idle WorkerPal right now; request is queued and waiting for the next available WorkerPal.", { turnId, correlationId: requestId });
9250
+ if (!autonomyMetadata) {
9251
+ await this.assistantMessage(requestSessionId, enqueueResult.deduped ? "A matching WorkerPal task is already in progress for the same targeted file scope. Reusing that task instead of queuing a duplicate." : targetWorkerId ? `Assigned this request to WorkerPal ${targetWorkerId} (${lane} lane).` : "No idle WorkerPal right now; request is queued and waiting for the next available WorkerPal.", { turnId, correlationId: requestId });
9252
+ }
9211
9253
  this.rememberPersistentMemory(enqueueResult.deduped ? "job_reused" : "job_enqueued", `job=${enqueueResult.jobId.slice(0, 8)} lane=${lane} intent=${plan.intent} worker=${targetWorkerId ?? "queue"} deduped=${enqueueResult.deduped ? "yes" : "no"}`, requestId, requestSessionId);
9212
9254
  if (!enqueueResult.deduped) {
9213
9255
  await this.sendCommand(requestSessionId, {
@@ -9227,11 +9269,12 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9227
9269
  }
9228
9270
  } : {}
9229
9271
  },
9230
- turnId
9272
+ turnId,
9273
+ from: eventFrom
9231
9274
  });
9232
9275
  }
9233
9276
  } else {
9234
- await this.assistantMessage(requestSessionId, "I could not queue this WorkerPal task. No task was started.", { turnId, correlationId: requestId });
9277
+ await this.assistantMessage(requestSessionId, "I could not queue this WorkerPal task. No task was started.", { turnId, correlationId: requestId, from: eventFrom });
9235
9278
  this.rememberPersistentMemory("job_enqueue_failed", `enqueue_failed lane=${lane} intent=${plan.intent}`, requestId, requestSessionId);
9236
9279
  }
9237
9280
  await fetch(`${this.server}/requests/${requestId}/complete`, {
@@ -9260,7 +9303,11 @@ Please reply with the missing details and I will enqueue a follow-up request.` :
9260
9303
  const message = `RemoteBuddy planning failed: ${toSingleLine(err, 220) || "unknown error"}`;
9261
9304
  console.error(`[RemoteBuddy] ${message}`);
9262
9305
  this.rememberPersistentMemory("planning_failed", message, requestId, requestSessionId);
9263
- await this.assistantMessage(requestSessionId, message, { turnId, correlationId: requestId });
9306
+ await this.assistantMessage(requestSessionId, message, {
9307
+ turnId,
9308
+ correlationId: requestId,
9309
+ from: eventFrom
9310
+ });
9264
9311
  await fetch(`${this.server}/requests/${requestId}/fail`, {
9265
9312
  method: "POST",
9266
9313
  headers: this.authHeaders(),
@@ -867,6 +867,15 @@ function failNoChangeReviewFixJob(jobId: string, result: WorkerJobResult): Worke
867
867
  };
868
868
  }
869
869
 
870
+ function taskExecuteOrigin(params: Record<string, unknown> | undefined): "user" | "autonomy" {
871
+ if (!params) return "user";
872
+ if (params.origin === "autonomy") return "autonomy";
873
+ const autonomy = params.autonomy;
874
+ return autonomy && typeof autonomy === "object" && !Array.isArray(autonomy)
875
+ ? "autonomy"
876
+ : "user";
877
+ }
878
+
870
879
  async function enqueueCompletion(
871
880
  server: string,
872
881
  headers: Record<string, string>,
@@ -902,6 +911,7 @@ async function enqueueCompletion(
902
911
  const response = await postJsonWithTimeout(`${server}/completions/enqueue`, headers, {
903
912
  jobId: job.id,
904
913
  sessionId: job.sessionId,
914
+ origin: taskExecuteOrigin(job.params),
905
915
  commitSha: commit.sha,
906
916
  branch: commit.branch,
907
917
  message: `${job.kind}: ${job.taskId} (worker PR metadata attached)`,
@@ -1475,6 +1485,7 @@ async function workerLoop(
1475
1485
  }
1476
1486
 
1477
1487
  if (job.sessionId) {
1488
+ const jobOrigin = taskExecuteOrigin(parsedParams);
1478
1489
  const responseMode = String(parsedParams.responseMode ?? "")
1479
1490
  .trim()
1480
1491
  .toLowerCase();
@@ -1492,11 +1503,18 @@ async function workerLoop(
1492
1503
  ? `${rawText.slice(0, maxResponseChars - 3)}...`
1493
1504
  : rawText;
1494
1505
  if (assistantText) {
1495
- await transport.queueSessionCommand(job.sessionId, {
1496
- type: "assistant_message",
1497
- payload: { text: assistantText },
1498
- from: `worker:${opts.workerId}`,
1499
- }, { priority: "high" });
1506
+ await transport.queueSessionCommand(
1507
+ job.sessionId,
1508
+ {
1509
+ type: "assistant_message",
1510
+ payload: { text: assistantText },
1511
+ from:
1512
+ jobOrigin === "autonomy"
1513
+ ? `worker:${opts.workerId}/autonomy`
1514
+ : `worker:${opts.workerId}`,
1515
+ },
1516
+ { priority: "high" },
1517
+ );
1500
1518
  }
1501
1519
  }
1502
1520
 
@@ -1507,11 +1525,15 @@ async function workerLoop(
1507
1525
  payload: {
1508
1526
  jobId: job.id,
1509
1527
  summary: result.summary,
1528
+ origin: jobOrigin,
1510
1529
  artifacts: result.stdout
1511
1530
  ? [{ kind: "log" as const, text: result.stdout }]
1512
1531
  : undefined,
1513
1532
  },
1514
- from: `worker:${opts.workerId}`,
1533
+ from:
1534
+ jobOrigin === "autonomy"
1535
+ ? `worker:${opts.workerId}/autonomy`
1536
+ : `worker:${opts.workerId}`,
1515
1537
  }
1516
1538
  : {
1517
1539
  type: "job_failed" as const,
@@ -1519,8 +1541,12 @@ async function workerLoop(
1519
1541
  jobId: job.id,
1520
1542
  message: result.summary,
1521
1543
  detail: redactSensitiveText(result.stderr ?? ""),
1544
+ origin: jobOrigin,
1522
1545
  },
1523
- from: `worker:${opts.workerId}`,
1546
+ from:
1547
+ jobOrigin === "autonomy"
1548
+ ? `worker:${opts.workerId}/autonomy`
1549
+ : `worker:${opts.workerId}`,
1524
1550
  };
1525
1551
 
1526
1552
  await transport.queueSessionCommand(job.sessionId, eventCmd, {
@@ -44,7 +44,7 @@
44
44
  "format:check": "prettier --check .",
45
45
  "test:prompt-policy": "bun test tests/prompt-policy.enforcement.test.ts",
46
46
  "test:cli:integration": "bun test tests/cli.invocation-logging.test.ts tests/cli.runtime-bootstrap.test.ts tests/client.runtime-bootstrap.test.ts tests/shared.client-preflight.test.ts",
47
- "test:cli:e2e": "bun test ./tests/integration/cli.e2e.ts",
47
+ "test:cli:e2e": "bun test ./tests/integration/cli.e2e.ts ./tests/integration/cli.session-stream-visibility.e2e.ts",
48
48
  "test:workerpals:e2e": "bun test ./tests/integration/workerpals.control-plane.e2e.ts",
49
49
  "test:start:e2e": "bun test ./tests/integration/start.e2e.ts",
50
50
  "test:root": "bun test tests",
@@ -286,6 +286,7 @@
286
286
  "properties": {
287
287
  "taskId": { "type": "string" },
288
288
  "summary": { "type": "string" },
289
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
289
290
  "artifacts": {
290
291
  "type": "array",
291
292
  "items": { "$ref": "#/definitions/artifact" }
@@ -454,6 +455,7 @@
454
455
  "properties": {
455
456
  "jobId": { "type": "string" },
456
457
  "summary": { "type": "string" },
458
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
457
459
  "artifacts": {
458
460
  "type": "array",
459
461
  "items": { "$ref": "#/definitions/artifact" }
@@ -475,7 +477,8 @@
475
477
  "properties": {
476
478
  "jobId": { "type": "string" },
477
479
  "message": { "type": "string" },
478
- "detail": { "type": "string" }
480
+ "detail": { "type": "string" },
481
+ "origin": { "type": "string", "enum": ["user", "autonomy"] }
479
482
  },
480
483
  "additionalProperties": false
481
484
  }
@@ -111,8 +111,9 @@ export interface EventTypePayloadMap {
111
111
  jobId: string;
112
112
  summary?: string;
113
113
  artifacts?: Artifact[];
114
+ origin?: "user" | "autonomy";
114
115
  };
115
- job_failed: { jobId: string; message: string; detail?: string };
116
+ job_failed: { jobId: string; message: string; detail?: string; origin?: "user" | "autonomy" };
116
117
  // ── Streaming / lifecycle events ──────────────────────────────────────
117
118
  /** User-facing chat message (from client to server) */
118
119
  message: { text: string; intent?: Record<string, unknown> };
@@ -1,9 +1,31 @@
1
1
  type SessionEventLike = {
2
2
  type?: string | null;
3
+ from?: string | null;
3
4
  payload?: Record<string, unknown> | null;
4
5
  };
5
6
 
6
7
  const HEARTBEAT_STATUS_RE = /\bheartbeat\b/i;
8
+ const ALWAYS_VISIBLE_EVENT_TYPES = new Set(["question_asked"]);
9
+
10
+ function isRecord(value: unknown): value is Record<string, unknown> {
11
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
12
+ }
13
+
14
+ function isAutonomyMarker(value: unknown): boolean {
15
+ return String(value ?? "")
16
+ .trim()
17
+ .toLowerCase() === "autonomy";
18
+ }
19
+
20
+ function hasAutonomyPayloadMarker(value: unknown): boolean {
21
+ if (!isRecord(value)) return false;
22
+ if (isAutonomyMarker(value.origin)) return true;
23
+ if (isAutonomyMarker(value.createdBy)) return true;
24
+ if (isRecord(value.autonomy)) return true;
25
+ if (Array.isArray(value.tags) && value.tags.some(isAutonomyMarker)) return true;
26
+ if (isRecord(value.params) && hasAutonomyPayloadMarker(value.params)) return true;
27
+ return false;
28
+ }
7
29
 
8
30
  export function isHeartbeatStatusSessionEvent(event: SessionEventLike | null | undefined): boolean {
9
31
  const type = String(event?.type ?? "")
@@ -21,5 +43,18 @@ export function isHeartbeatStatusSessionEvent(event: SessionEventLike | null | u
21
43
  export function shouldDisplayInteractiveSessionEvent(
22
44
  event: SessionEventLike | null | undefined,
23
45
  ): boolean {
46
+ const type = String(event?.type ?? "")
47
+ .trim()
48
+ .toLowerCase();
49
+ if (ALWAYS_VISIBLE_EVENT_TYPES.has(type)) return true;
50
+ if (isAutonomyOriginSessionEvent(event)) return false;
24
51
  return !isHeartbeatStatusSessionEvent(event);
25
52
  }
53
+
54
+ export function isAutonomyOriginSessionEvent(
55
+ event: SessionEventLike | null | undefined,
56
+ ): boolean {
57
+ const from = String(event?.from ?? "").toLowerCase();
58
+ if (/(^|[/:._-])autonomy($|[/:._-])/.test(from)) return true;
59
+ return hasAutonomyPayloadMarker(event?.payload);
60
+ }
@@ -286,6 +286,7 @@
286
286
  "properties": {
287
287
  "taskId": { "type": "string" },
288
288
  "summary": { "type": "string" },
289
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
289
290
  "artifacts": {
290
291
  "type": "array",
291
292
  "items": { "$ref": "#/definitions/artifact" }
@@ -454,6 +455,7 @@
454
455
  "properties": {
455
456
  "jobId": { "type": "string" },
456
457
  "summary": { "type": "string" },
458
+ "origin": { "type": "string", "enum": ["user", "autonomy"] },
457
459
  "artifacts": {
458
460
  "type": "array",
459
461
  "items": { "$ref": "#/definitions/artifact" }
@@ -475,7 +477,8 @@
475
477
  "properties": {
476
478
  "jobId": { "type": "string" },
477
479
  "message": { "type": "string" },
478
- "detail": { "type": "string" }
480
+ "detail": { "type": "string" },
481
+ "origin": { "type": "string", "enum": ["user", "autonomy"] }
479
482
  },
480
483
  "additionalProperties": false
481
484
  }