@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.
- package/dist/pushpals-cli.js +33 -0
- package/monitor-ui/+not-found.html +1 -1
- package/monitor-ui/_expo/static/js/web/{entry-d69cc703f72afa383e4108efd6e0f726.js → entry-c6862f701ea52ccf8692a6c9e749af5c.js} +2 -2
- package/monitor-ui/_sitemap.html +1 -1
- package/monitor-ui/index.html +1 -1
- package/monitor-ui/modal.html +1 -1
- package/package.json +1 -1
- package/runtime/protocol/schemas/events.schema.json +4 -1
- package/runtime/sandbox/.pushpals-remotebuddy-fallback.js +70 -23
- package/runtime/sandbox/apps/workerpals/src/workerpals_main.ts +33 -7
- package/runtime/sandbox/package.json +1 -1
- package/runtime/sandbox/packages/protocol/src/schemas/events.schema.json +4 -1
- package/runtime/sandbox/packages/protocol/src/types.ts +2 -1
- package/runtime/sandbox/packages/shared/src/session_event_visibility.ts +35 -0
- package/runtime/sandbox/protocol/schemas/events.schema.json +4 -1
package/dist/pushpals-cli.js
CHANGED
|
@@ -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-
|
|
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=
|
|
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"}});
|
package/monitor-ui/_sitemap.html
CHANGED
|
@@ -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-
|
|
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>
|
package/monitor-ui/index.html
CHANGED
|
@@ -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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Current repo:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(84,112,134,1.00);font-family:'IBM Plex Mono', 'JetBrains Mono', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Snapshot:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(17,34,48,1.00);font-family:'IBM Plex Mono', 'JetBrains Mono', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Disconnected</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">--</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Requests<!-- --> (0)</div></button><button aria-label="Jobs & 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Jobs & 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Current repo:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(84,112,134,1.00);font-family:'IBM Plex Mono', 'JetBrains Mono', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Snapshot:<!-- --> <span class="css-1jxf684 r-1enofrn" style="color:rgba(17,34,48,1.00);font-family:'IBM Plex Mono', 'JetBrains Mono', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Disconnected</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">--</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Requests<!-- --> (0)</div></button><button aria-label="Jobs & 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">Jobs & 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', sans-serif">0</div><div dir="auto" class="css-146c3p1 r-1enofrn r-19qrga8" style="color:rgba(84,112,134,1.00);font-family:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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:'Space Grotesk', 'Avenir Next', 'Trebuchet MS', 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>
|
package/monitor-ui/modal.html
CHANGED
|
@@ -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, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";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-
|
|
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, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";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
|
@@ -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
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
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
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
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
|
-
|
|
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, {
|
|
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(
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
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:
|
|
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:
|
|
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
|
}
|