@volter/teams 0.1.20 → 0.1.21
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/teams",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Volter Teams, the neutral team plane: machine identity and daemon core, the local door and server link, admission from machine grants, product doors, and the Teams server's neutral routes (company RFC 0008).",
|
|
6
6
|
"license": "MIT",
|
|
@@ -50,23 +50,25 @@ function normalizedSession(descriptor, messages) {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
|
-
* Mount one session into `element`. `update({ descriptor, messages, live, status, error,
|
|
54
|
-
* the session (messages are the captured normalized values, oldest first
|
|
53
|
+
* Mount one session into `element`. `update({ descriptor, messages, members, machines, live, status, error, sending })`
|
|
54
|
+
* renders the session (messages are the captured normalized values, oldest first; members and machines name its owner
|
|
55
|
+
* and machines); `control` (the token's scope) shows the composer; `onSend(text)` is called with a turn the
|
|
55
56
|
* member typed, and resolves once it was delivered or refused.
|
|
56
57
|
*/
|
|
57
|
-
export function mountSessionView(element, { onSend }) {
|
|
58
|
-
|
|
58
|
+
export function mountSessionView(element, { onSend, control = false }) {
|
|
59
|
+
// One badge, following the token's scope: fixed when mounted (the team view reads its labels once).
|
|
60
|
+
const labels = { readOnly: control ? 'Control' : 'Read-only' };
|
|
61
|
+
let current = { descriptor: null, messages: [], members: [], machines: [], live: false, status: 'loading', error: null, canSend: control, sending: false };
|
|
59
62
|
const adapter = {
|
|
60
63
|
onIntent: async (intent) => { if (intent?.action === 'send' && intent.text?.trim()) await onSend(intent.text.trim()); },
|
|
61
64
|
copyText: (text) => globalThis.navigator?.clipboard?.writeText(text),
|
|
62
65
|
};
|
|
63
66
|
const draw = () => {
|
|
64
|
-
const { descriptor, messages, live, status, error, canSend, sending } = current;
|
|
67
|
+
const { descriptor, messages, members, machines, live, status, error, canSend, sending } = current;
|
|
65
68
|
const transcript = descriptor ? withPeople(projectSubagentTranscript(normalizedSession(descriptor, messages), { prefix: descriptor.id, maxEntries: 500 }), messages) : [];
|
|
66
69
|
const composerState = normalizeUiState({ ...EMPTY_UI_STATE, startup: 'ready', harness: descriptor?.harness ?? '', canSend: canSend && !sending, busy: sending, transcript });
|
|
67
70
|
render(h('div', { class: 'session-view' },
|
|
68
|
-
|
|
69
|
-
h(TeamTranscript, { session: descriptor, transcript, live, status, error, adapter, labels: { readOnly: canSend ? 'Control' : 'Read-only' } }),
|
|
71
|
+
h(TeamTranscript, { session: descriptor, transcript, members, machines, live, status, error, adapter, labels }),
|
|
70
72
|
canSend ? h('div', { class: 'session-composer scui-root' }, h(Composer, { state: composerState, adapter })) : null,
|
|
71
73
|
), element);
|
|
72
74
|
};
|
package/viewer/session-view.mjs
CHANGED
|
@@ -36,4 +36,4 @@ ${c.truncatedMarker}`:""]})]})})]}):null]});else if(e.role==="request")h=l(ri,{e
|
|
|
36
36
|
`).map(u=>`+ ${u}`)].join(`
|
|
37
37
|
`);let i=/\*\*\* Begin Patch[\s\S]*?\*\*\* End Patch/.exec(n??"")?.[0];return i||(/^(?:diff --git|@@ |--- |\+\+\+ )/m.test(t??"")?t:"")}function Tl(e){let t=/^Script (?:completed|failed)\r?\nWall time ([0-9.]+) seconds\r?\nOutput:\r?\n([\s\S]*)$/.exec(e??"");if(!t)try{let r=JSON.parse(e??""),s=A(r);return{preview:typeof r=="string"?r:ce(s,["output","message","text","summary","result"])||e||"",value:s,durationMs:null}}catch{return{preview:e??"",value:null,durationMs:null}}let n=Number(t[1])*1e3;try{let r=A(JSON.parse(t[2]));return{preview:typeof r?.output=="string"?r.output:t[2],value:r,durationMs:Number.isFinite(n)?n:null}}catch{return{preview:t[2],value:null,durationMs:Number.isFinite(n)?n:null}}}function Dl(e,t,n){let r=e.toLocaleLowerCase();return t==="error"?n.preview:/^(?:agent|task)$|spawn.?agent/.test(r)&&n.preview?"Agent is working in the background.":/send.?message|followup.?task/.test(r)&&n.preview?/resumed from transcript|resumedAgentId/i.test(n.preview)?"Agent resumed in the background.":"Message delivered.":n.preview}function Il(e){let t="",n="",r=!1;for(let s of e){if(r){r=!1,t+=n?" ":s;continue}if(s==="\\"){r=!0,t+=n?" ":s;continue}if(n){s===n&&(n=""),t+=" ";continue}if(s==='"'||s==="'"||s==="`"){n=s,t+=" ";continue}t+=s}return/(?:^|[;&|]\s*)(?:(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:test|typecheck|lint|build)|cargo\s+(?:test|clippy|build|check|fmt)|npx\s+(?:vitest|tsc|eslint|playwright)|pytest\b|go\s+test\b)/i.test(t)}function Ml(e,t){let n=e.toLocaleLowerCase();return/write_stdin|^wait$/.test(n)?"command":/update.?plan|todo|checklist|taskcreate|taskupdate|create.?goal|update.?goal/.test(n)?"plan":/search.?replace|edit|write|patch|replace|create_file|apply_patch/.test(n)?"edit":/read|view|open_file|list_dir/.test(n)?"read":/web.?search|web.?fetch|fetch.?url/.test(n)?"web":/search|find|grep|glob|toolsearch/.test(n)?"search":/browser|web|fetch|url/.test(n)?"web":/agent|subagent|send.?message|delegate|followup.?task|taskstop|taskoutput|^task$/.test(n)?"agent":/test|typecheck|lint|build/.test(n)?"test":/terminal|bash|shell|command|exec|write_stdin|^wait$/.test(n)?Il(t)?"test":"command":"other"}function Fl(e,t,n,r){let s=e==="pending"?0:e==="error"?2:1;if(r.length>1)return[`Running ${r.length} actions`,`Ran ${r.length} actions`,`${r.length} actions failed`][s];let a=n.toLocaleLowerCase();return/send.?message|followup.?task/.test(a)?["Messaging agent","Messaged agent","Agent message failed"][s]:/taskstop|interrupt.?agent|kill_command_or_subagent/.test(a)?["Stopping agent","Stopped agent","Stop failed"][s]:/list.?agents|taskoutput|wait.?agent/.test(a)?["Checking agents","Checked agents","Agent check failed"][s]:/get_command_or_subagent_output|write_stdin|^wait$/.test(a)?["Waiting for","Checked","Check failed"][s]:/web.?search/.test(a)?["Searching web","Searched web","Web search failed"][s]:/web.?fetch|fetch.?url/.test(a)?["Fetching page","Fetched page","Page fetch failed"][s]:/^skill$|use.?skill|load.?skill/.test(a)?["Loading skill","Loaded skill","Skill load failed"][s]:/taskcreate/.test(a)?["Adding task","Added task","Task creation failed"][s]:/taskupdate/.test(a)?["Updating task","Updated task","Task update failed"][s]:/create.?goal/.test(a)?["Creating goal","Created goal","Goal creation failed"][s]:/update.?goal/.test(a)?["Updating goal","Updated goal","Goal update failed"][s]:{read:["Reading","Read","Read failed"],search:["Searching","Searched","Search failed"],edit:["Editing","Edited","Edit failed"],command:["Running command","Ran command","Command failed"],test:["Running tests","Ran tests","Tests failed"],web:["Browsing","Browsed","Browser action failed"],agent:["Starting agent","Started agent","Agent failed"],plan:["Updating plan","Updated plan","Plan update failed"]}[t]?.[s]??(e==="error"?`${n} failed`:n.replaceAll(/[_-]+/g," "))}function Zr(e){let t=kl(e),n=t.args,r=Tl(e.resultText),s=vl(t.source,["patch"])||t.source,a=ce(n,["command","cmd"])||Ye(t.callSource,["command","cmd"]),i=Ml(t.name,a||t.source||e.arguments||""),u=ce(n,["file_path","target_file","target_directory","path"])||Ye(t.callSource,["file_path","target_file","target_directory","path"])||wl(s),o=ce(n,["query","pattern"])||Ye(t.callSource,["query","pattern","q"]),c=ce(n,["url"])||Ye(t.callSource,["url","ref_id"]),f=ce(n,["subject","description","summary","task","objective","prompt"])||Ye(t.callSource,["subject","description","summary","task","objective","prompt"]),h=i==="agent"?ce(A(r.value),["command","name"])||ce(n,["target","task_name","taskId","task_id","agentId","agent_id","resume","team_name"])||Ye(t.callSource,["target","task_name","taskId","task_id","agentId","agent_id","resume","team_name"]):"",d=/^skill$|use.?skill|load.?skill/i.test(t.name)?ce(n,["skill","name"])||Ye(t.callSource,["skill","name"]):"",m=/get_command_or_subagent_output|kill_command_or_subagent/i.test(t.name)?"background task":/write_stdin|^wait$/i.test(t.name)?"background command":"",p=i==="agent"?Nl(t.name,r.preview):Al(n),g=ce(n,["taskId","task_id"]),b=i==="plan"?p.length?`${p.length} ${p.length===1?"item":"items"}`:g?`task ${g}`:"":"",x=u||a||o||c||f||h||d||m||b||(t.tools.length>1?`${t.tools.length} coordinated actions`:Kl(e.arguments)),y=i==="edit"?El(n,r.preview,s):i==="agent"?Dl(t.name,e.status??"completed",r):r.preview,v=A(e.resultContent),k=A(e.metadata),C=A(v?.metadata);return{name:_(t.name,120),action:_(Fl(e.status??"completed",i,t.name,t.tools),120),category:i,detail:Cl(i),target:_(x,300),command:_(a,xe),path:_(u,xe),query:_(o,xe),url:_(c,xe),subject:_(f,xe),preview:_(y,Ci),fields:Sl(n),items:p,tools:t.tools,exitCode:Mt([r.value,v,C,k],["exit_code","exitCode","pi_bash_exit_code"]),durationMs:Mt([r.value,v,C,k],["duration_ms","durationMs","elapsed_ms","elapsedMs","totalDurationMs"])??r.durationMs,additions:Mt([v,C,k],["additions","lines_added"]),deletions:Mt([v,C,k],["deletions","lines_removed"]),matches:Mt([v,C,k],["matches","match_count","result_count"])}}function Rl(e,t){let n=Zr(t),r=A(e);if(!r)return n;let s=Array.isArray(r.fields)?r.fields.flatMap(u=>{let o=A(u);return o&&typeof o.label=="string"&&typeof o.value=="string"?[{label:_(o.label,80),value:_(o.value,xe)}]:[]}).slice(0,wi):n.fields,a=Array.isArray(r.items)?r.items.flatMap(u=>{let o=A(u);return o&&typeof o.label=="string"?[{label:_(o.label,300),status:_(o.status,40)}]:[]}).slice(0,12):n.items,i=Array.isArray(r.tools)?r.tools.filter(u=>typeof u=="string").map(u=>_(u,120)).slice(0,8):n.tools;return{name:_(r.name,120)||n.name,action:_(r.action,120)||n.action,category:ol.has(r.category)?r.category:n.category,detail:cl.has(r.detail)?r.detail:n.detail,target:_(r.target,300)||n.target,command:_(r.command,xe)||n.command,path:_(r.path,xe)||n.path,query:_(r.query,xe)||n.query,url:_(r.url,xe)||n.url,subject:_(r.subject,xe)||n.subject,preview:_(r.preview,Ci)||n.preview,fields:s,items:a,tools:i,exitCode:Se(r.exitCode)??n.exitCode,durationMs:Se(r.durationMs)??n.durationMs,additions:Se(r.additions)??n.additions,deletions:Se(r.deletions)??n.deletions,matches:Se(r.matches)??n.matches}}var Gr=4e3;function Ll(e){let t=e.role==="opaque",n;if(t&&typeof e.raw=="string")n=e.raw;else try{n=JSON.stringify(e,null,2)??""}catch{n="[unserializable entry payload]"}let r=t&&typeof e.kind=="string"?e.kind:typeof e.role=="string"?e.role:"";return{id:e.id,role:"opaque",kind:_(r,120)||"unknown",text:typeof e.text=="string"?_(e.text,Gr):"",ts:Se(e.ts),truncated:e.truncated===!0||n.length>Gr,raw:_(n,Gr)}}function Ni(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){let r=A(n);if(!r||typeof r.id!="string")continue;if(typeof r.text!="string"||!sl.has(r.role)){t.push(Ll(r));continue}let s={id:r.id,role:r.role,text:r.text,ts:Se(r.ts),truncated:r.truncated===!0,...Number.isSafeInteger(r.messageIndex)&&r.messageIndex>0?{messageIndex:r.messageIndex}:{}};for(let u of["key","label","arguments","resultText","code"])typeof r[u]=="string"&&(s[u]=r[u]);["pending","completed","error"].includes(r.status)&&(s.status=r.status);let a=A(r.actor);a&&(typeof a.name=="string"||typeof a.image=="string")&&(s.actor={...typeof a.name=="string"&&a.name.trim()?{name:a.name.trim().slice(0,80)}:{},...typeof a.image=="string"&&/^https:\/\//.test(a.image)&&a.image.length<=2e3?{image:a.image}:{}}),r.role==="tool"&&(s.presentation=Rl(r.presentation,s)),typeof r.streaming=="boolean"&&(s.streaming=r.streaming),Array.isArray(r.context)&&(s.context=r.context.flatMap(u=>{let o=A(u);return o&&typeof o.label=="string"&&typeof o.detail=="string"?[{...typeof o.id=="string"?{id:o.id}:{},...typeof o.kind=="string"?{kind:o.kind}:{},label:o.label,detail:o.detail}]:[]})),Array.isArray(r.images)&&(s.images=r.images.flatMap(u=>{let o=A(u);return o&&typeof o.label=="string"?[{...typeof o.id=="string"?{id:o.id}:{},label:o.label,...typeof o.url=="string"?{url:o.url}:{},...typeof o.reference=="string"&&o.reference.length<=4e3?{reference:o.reference}:{},...typeof o.mediaType=="string"&&o.mediaType.startsWith("image/")&&o.mediaType.length<=100?{mediaType:o.mediaType}:{},...Number.isSafeInteger(o.byteSize)&&o.byteSize>=0?{byteSize:o.byteSize}:{}}]:[]}).slice(0,4));let i=A(r.request);i&&typeof i.requestKind=="string"&&typeof i.payloadText=="string"&&(s.request={requestId:i.requestId,requestKind:i.requestKind,payloadText:i.payloadText,options:Array.isArray(i.options)?i.options.flatMap(u=>{let o=A(u);return o&&typeof o.optionId=="string"&&typeof o.name=="string"?[{optionId:o.optionId,name:o.name,kind:ne(o.kind,"other")}]:[]}):[],cancellable:i.cancellable===!0,status:i.status==="responded"?"responded":"pending",resolution:A(i.resolution)}),t.push(s)}return t}function Ei(e){let t=A(e);return t?{kind:["local-user","foreign","unknown"].includes(t.kind)?t.kind:"unknown",label:typeof t.label=="string"&&t.label?_(t.label,200):null,origin:typeof t.origin=="string"&&t.origin?_(t.origin,100):null}:{kind:"local-user",label:null,origin:null}}function Ti(e,t=""){let n=A(e);return n&&["repo","none","channel"].includes(n.kind)?{kind:n.kind,value:n.kind==="none"?null:typeof n.value=="string"&&n.value?_(n.value,500):null}:t?{kind:"repo",value:_(t,500)}:{kind:"none",value:null}}function Jr(e){let t=A(e);return!t||typeof t.canonicalHarness!="string"||!t.canonicalHarness?null:{canonicalHarness:_(t.canonicalHarness,100),canonicalKey:typeof t.canonicalKey=="string"&&t.canonicalKey?_(t.canonicalKey,300):null,bounded:t.bounded===!0,truncated:t.truncated===!0,origin:typeof t.origin=="string"&&t.origin?_(t.origin,200):null}}function Pl(e){let t=A(e);if(!t)return null;let n=typeof t.surface=="string"&&t.surface?_(t.surface,100):null;return{surface:n,canTakeOver:t.canTakeOver===!0&&n!==null&&n!=="supercode"}}var Ol=["human","channel","cron","heartbeat","webhook","parent","api","unknown"];function vi(e){let t=A(e);if(!t)return null;let n=t.kind==="manual"?"human":t.kind;return{kind:Ol.includes(n)?n:"unknown",label:typeof t.label=="string"&&t.label?_(t.label,200):null,surface:typeof t.surface=="string"&&t.surface?_(t.surface,300):null}}function _i(e){let t=A(e);return!t||typeof t.state!="string"||!t.state?null:{state:_(t.state,100),platform:typeof t.platform=="string"&&t.platform?_(t.platform,100):null,error:typeof t.error=="string"&&t.error?_(t.error,500):null}}function xi(e){let t=A(e);if(!t||typeof t.groupKey!="string"||!t.groupKey)return null;let n=Number.isSafeInteger(t.runs)&&t.runs>0?t.runs:1;return{groupKey:_(t.groupKey,300),runs:n,lastStatus:["ok","failed","mixed"].includes(t.lastStatus)?t.lastStatus:null}}function Di(e){return Array.isArray(e)?e.flatMap(t=>{let n=A(t);return!n||typeof n.key!="string"||typeof n.harness!="string"?[]:[{key:n.key,harness:n.harness,name:ne(n.name),cwd:ne(n.cwd),title:ne(n.title),preview:ne(n.preview),age:ne(n.age),previewUpdatedAt:Se(n.previewUpdatedAt),updatedAt:Se(n.updatedAt),messages:Se(n.messages),active:n.active===!0,writable:n.writable===!0,live:n.live===!0,runtimeStatus:n.runtimeStatus==="running"||n.runtimeStatus==="busy"||n.runtimeStatus==="idle"?n.runtimeStatus:null,...Number.isSafeInteger(n.subagentCount)&&n.subagentCount>0?{subagentCount:n.subagentCount}:{},activity:Vl[n.activity]!==void 0?n.activity:void 0,...n.participant!==void 0?{participant:Ei(n.participant)}:{},workspaceRef:Ti(n.workspaceRef,ne(n.cwd)),...Jr(n.mirror)?{mirror:Jr(n.mirror)}:{},...vi(n.trigger)?{trigger:vi(n.trigger)}:{},...xi(n.recurring)?{recurring:xi(n.recurring)}:{},..._i(n.crossSurface)?{crossSurface:_i(n.crossSurface)}:{}}]}):[]}function Bl(e){let t=A(e);return!t||typeof t.parentKey!="string"||!t.parentKey?null:{parentKey:t.parentKey,parentTitle:_(ne(t.parentTitle),500),status:["loading","ready","error"].includes(t.status)?t.status:"loading",items:Di(t.items).slice(0,100),selectedKey:typeof t.selectedKey=="string"&&t.selectedKey?t.selectedKey:null,transcript:Ni(t.transcript).slice(-120),error:typeof t.error=="string"?_(t.error):null}}function ki(e){let t=A(e);return!t||typeof t.harness!="string"?null:{key:ne(t.key),harness:t.harness,name:ne(t.name),cwd:ne(t.cwd),title:ne(t.title)}}function ql(e){let t=A(e);return t?{source:["codex-update-plan","claude-tasks","opencode-todos"].includes(t.source)?t.source:"none",items:Array.isArray(t.items)?t.items.flatMap(n=>{let r=A(n);return!r||typeof r.id!="string"||typeof r.title!="string"?[]:[{id:r.id,title:r.title,status:["pending","in_progress","completed","cancelled","unknown"].includes(r.status)?r.status:"unknown",...typeof r.nativeStatus=="string"?{nativeStatus:r.nativeStatus}:{},...Array.isArray(r.blockedBy)?{blockedBy:r.blockedBy.filter(s=>typeof s=="string")}:{}}]}):[],residueCount:Qe(t.residueCount),observedAt:Se(t.observedAt)}:{...vn.taskPlan,items:[]}}function zl(e){let t=A(e);return t?{fidelity:bi.has(t.fidelity)?t.fidelity:null,residue:Array.isArray(t.residue)?t.residue.filter(n=>typeof n=="string"):[],residueCount:Qe(t.residueCount),parseErrors:Qe(t.parseErrors),rawRecords:Qe(t.rawRecords),subagents:Array.isArray(t.subagents)?t.subagents.flatMap(n=>{let r=A(n);return!r||typeof r.id!="string"||typeof r.source!="string"?[]:[{id:r.id,source:r.source,model:typeof r.model=="string"?r.model:null,messages:Qe(r.messages),fidelity:bi.has(r.fidelity)?r.fidelity:"semantic"}]}):[]}:{...vn.semantics,residue:[],subagents:[]}}function Hl(e){let t=A(e);return!t||typeof t.program!="string"||!t.program.trim()||!Array.isArray(t.arguments)||!t.arguments.every(n=>typeof n=="string")||typeof t.cwd!="string"?null:{program:t.program,arguments:[...t.arguments],cwd:t.cwd}}function $l(e){let t=A(e);return!t||typeof t.targetHarness!="string"||!["byte_lossless","value_lossless","semantic"].includes(t.fidelity)||typeof t.path!="string"||!t.path.trim()||!Number.isInteger(t.files)||t.files<1||!Number.isInteger(t.residueCount)||t.residueCount<0?null:{targetHarness:t.targetHarness,fidelity:t.fidelity,path:t.path,files:t.files,residueCount:t.residueCount}}function jl(e){let t=A(e);return!t||typeof t.sourceTokens!="number"||!Number.isFinite(t.sourceTokens)||typeof t.reducedTokens!="number"||!Number.isFinite(t.reducedTokens)||t.sourceTokens<=t.reducedTokens||t.reducedTokens<0||typeof t.ratio!="number"||!Number.isFinite(t.ratio)||t.ratio<=1||typeof t.sidecarId!="string"||!t.sidecarId.trim()||t.verified!==!0||t.reversible!==!0||typeof t.targetHarness!="string"||!t.targetHarness.trim()?null:{sourceTokens:t.sourceTokens,reducedTokens:t.reducedTokens,ratio:t.ratio,sidecarId:t.sidecarId,verified:!0,reversible:!0,targetHarness:t.targetHarness}}function Ul(e){let t=A(e);if(t?.schema!=="supercode.harness-interop-settings.v1"||typeof t.harness!="string"||typeof t.revision!="string"||!Array.isArray(t.controls)||!Array.isArray(t.advisories))return null;let n=t.controls.slice(0,20).flatMap(s=>{let a=A(s);return!a||typeof a.key!="string"||typeof a.label!="string"?[]:[{key:_(a.key,200),nativeKey:_(a.native_key??a.nativeKey,200),label:_(a.label,300),description:_(a.description),scope:["user","project","managed","command_line"].includes(a.scope)?a.scope:"user",sourcePath:_(a.source_path??a.sourcePath,4e3),configuredValue:typeof(a.configured_value??a.configuredValue)=="string"?_(a.configured_value??a.configuredValue,500):null,effectiveValue:typeof(a.effective_value??a.effectiveValue)=="string"?_(a.effective_value??a.effectiveValue,500):null,effectiveKnown:(a.effective_known??a.effectiveKnown)===!0,effectiveNote:_(a.effective_note??a.effectiveNote),choices:Array.isArray(a.choices)?a.choices.slice(0,20).flatMap(i=>{let u=A(i);return u&&typeof u.value=="string"&&typeof u.label=="string"?[{value:_(u.value,500),label:_(u.label,300),description:_(u.description),...typeof u.risk=="string"?{risk:_(u.risk)}:{}}]:[]}):[],writable:a.writable===!0,resettable:a.resettable===!0,requiresRestart:(a.requires_restart??a.requiresRestart)===!0}]}),r=t.advisories.slice(0,20).flatMap(s=>{let a=A(s),i=A(a?.recommendation),u=A(i?.change);return!a||!i||!u||typeof a.code!="string"||typeof a.title!="string"||typeof a.setting!="string"||typeof u.key!="string"?[]:[{code:_(a.code,200),severity:["info","warning","error"].includes(a.severity)?a.severity:"warning",title:_(a.title,500),message:_(a.message),setting:_(a.setting,200),recommendation:{label:_(i.label,500),description:_(i.description),consequence:_(i.consequence),change:{key:_(u.key,200),value:typeof u.value=="string"?_(u.value,500):null},command:_(i.command,4e3)}}]});return{schema:"supercode.harness-interop-settings.v1",harness:t.harness,revision:_(t.revision,500),controls:n,advisories:r}}function Xr(e){let t=A(e)??{},n=A(t.pill),r=A(t.history),s=A(t.attachError),a=t.canResume===!0,i=Array.isArray(t.continuationModes)?[...new Set(t.continuationModes.filter(u=>u==="headless"||u==="terminal"))]:a?["headless"]:[];return{pill:{tone:["live","warn","dead"].includes(n?.tone)?n.tone:"off",label:ne(n?.label,"connecting\u2026")},startup:ul.has(t.startup)?t.startup:"connecting",transcript:Ni(t.transcript),busy:t.busy===!0,operation:typeof t.operation=="string"?t.operation:null,needsInput:t.needsInput===!0,harness:ne(t.harness),mode:al.has(t.mode)?t.mode:"none",strategy:il.has(t.strategy)?t.strategy:null,canSend:t.canSend===!0,canSteer:t.canSteer===!0,canResume:a,supportsResume:t.supportsResume===!0,continuationModes:i,canBranch:t.canBranch===!0,supportsBranch:t.supportsBranch===!0,canAttach:t.canAttach===!0,supportsAttach:t.supportsAttach===!0,canDetach:t.canDetach===!0,canOpenTerminal:t.canOpenTerminal===!0,canExport:t.canExport===!0,canReduce:t.canReduce===!0,canInterrupt:t.canInterrupt===!0,canRespond:t.canRespond===!0,canConfigureSettings:t.canConfigureSettings===!0,messaging:t.messaging==="live_peer"?"live_peer":null,workspace:ne(t.workspace),workspaceRef:Ti(t.workspaceRef,ne(t.workspace)),participant:Ei(t.participant),mirror:Jr(t.mirror),holder:Pl(t.holder),taskPlan:ql(t.taskPlan),semantics:zl(t.semantics),terminalHandoff:Hl(t.terminalHandoff),exportBackTarget:typeof t.exportBackTarget=="string"?t.exportBackTarget:null,exportReceipt:$l(t.exportReceipt),reductionReceipt:jl(t.reductionReceipt),interopSettings:Ul(t.interopSettings),interopSettingsError:typeof t.interopSettingsError=="string"?_(t.interopSettingsError):null,harnessAuthentication:pl(t.harnessAuthentication),error:typeof t.error=="string"?t.error:null,recoverable:t.recoverable===!0,harnesses:Array.isArray(t.harnesses)?t.harnesses.flatMap(u=>{let o=A(u);if(!o||typeof o.id!="string")return[];let c=o.startable===!0,f=Array.isArray(o.launchModes)?[...new Set(o.launchModes.filter(m=>m==="headless"||m==="terminal"))]:c?["headless"]:[],h=f.includes(o.preferredLaunchMode)?o.preferredLaunchMode:f.includes("terminal")?"terminal":f[0]??null,d=A(o.capabilities);return[{id:o.id,label:ne(o.label,Wl(o.id)),installed:o.installed===!0,startable:c,reason:typeof o.reason=="string"?_(o.reason):null,auth:["ready","configured","required","unknown"].includes(o.auth)?o.auth:"unknown",runtime:["ready","degraded","unavailable"].includes(o.runtime)?o.runtime:c?"ready":"unavailable",protocol:_(o.protocol,100),repair:typeof o.repair=="string"?_(o.repair,4e3):null,capabilities:{start:d?.start===!0,resume:d?.resume===!0,attach:d?.attach===!0,send:d?.send===!0,interrupt:d?.interrupt===!0,steer:d?.steer===!0,respond:d?.respond===!0},launchModes:f,preferredLaunchMode:h}]}):[],history:{sessionLimit:Qe(r?.sessionLimit),hasMoreSessions:r?.hasMoreSessions===!0,transcriptLimit:Qe(r?.transcriptLimit,120),hasEarlier:r?.hasEarlier===!0},savedDraft:ne(t.savedDraft),attention:Array.isArray(t.attention)?t.attention.flatMap(u=>{let o=A(u);return o&&typeof o.key=="string"&&["unseen","finished","failed"].includes(o.kind)?[{key:o.key,kind:o.kind,...typeof o.preview=="string"?{preview:o.preview}:{},...Number.isSafeInteger(o.afterMessages)&&o.afterMessages>=0?{afterMessages:o.afterMessages}:{},...Number.isSafeInteger(o.unreadCount)&&o.unreadCount>0?{unreadCount:o.unreadCount}:{}}]:[]}):[],sessions:Di(t.sessions),subagentInspector:Bl(t.subagentInspector),attached:ki(t.attached),owned:ki(t.owned),attachError:s&&typeof s.key=="string"&&typeof s.message=="string"?{key:s.key,message:s.message}:null,agentPackage:gl(t.agentPackage),contributions:ml(t.contributions),agentPackageError:typeof t.agentPackageError=="string"?_(t.agentPackageError):null,agentPackageCapabilityState:bl(t.agentPackageCapabilityState),agentPackageCapabilityError:typeof t.agentPackageCapabilityError=="string"?_(t.agentPackageCapabilityError):null}}function Wl(e){return rl[e]??e}var Vl=Object.freeze({"needs-input":70,failed:60,working:50,unseen:40,finished:30,running:20,recent:10,idle:0});function Kl(e){if(!e)return"";try{let t=JSON.parse(e);for(let n of["file_path","target_file","path","command","cmd","query","pattern","url"])if(typeof t?.[n]=="string")return t[n]}catch{return e.length>120?`${e.slice(0,117)}\u2026`:e}return""}var vm=Ae();var Gm=Ae(),Jm=Ae(),Zm=Ae();var Xm=nt(null);function Ft(e){if(typeof e=="string")return e;if(!Array.isArray(e))return"";let t=[];for(let n of e)typeof n=="string"?t.push(n):n&&typeof n=="object"&&(typeof n.text=="string"?t.push(n.text):typeof n.content=="string"&&t.push(n.content));return t.join(`
|
|
38
38
|
`)}function td(e){return Array.isArray(e)?e.flatMap(t=>{if(!t||typeof t!="object")return[];let n=typeof t.image_url=="string"?t.image_url:typeof t.image_url?.url=="string"?t.image_url.url:null;return n&&(n.startsWith("data:image/")||n.startsWith("https://")||n.startsWith("http://"))?[n]:[]}):[]}function Mi(e){let t=e.trim();return/(^|\n)\s*(error|failed|failure|exception|denied)\b/i.test(t)||/"(?:is_?error|error)"\s*:\s*(?:true|"[^"\n]+")/i.test(t)||/\b(?:exit(?:ed)?|status)\s+(?:with\s+)?(?:code\s+)?[1-9]\d*\b/i.test(t)?"error":"completed"}var nd=new Set(["file","edited_text_file","nested_memory"]);function rd(e){return e?e.promptSource==="system"||e.isMeta==="true"||e.isCompactSummary==="true"||e.origin==="task-notification"||e.commandMode==="task-notification"||nd.has(e.attachmentType):!1}var sd=["<command-name>","<command-message>","<local-command-stdout>"];function ad(e,t){let n=t??Ft(e.content).trim();return e.role==="system"?!0:e.role!=="user"?!1:rd(e.metadata)||/^(# )?(?:AGENTS|CLAUDE)\.md instructions for .+\n\n<INSTRUCTIONS>/.test(n)||/^<recommended_plugins>[\s\S]*<\/(?:recommended_plugins)>\s*(?:# )?(?:AGENTS|CLAUDE)\.md instructions for .+\n\n<INSTRUCTIONS>/.test(n)||n.startsWith("<environment_context>")||n.startsWith("<user_info>")||n.startsWith("<system-reminder>")||sd.some(r=>n.startsWith(r))||e.metadata?.context==="true"}function id(e,t){let n=t??Ft(e.content).trim();if(e.role!=="user")return n;let r=n.match(/^<user_query>\s*([\s\S]*)\s*<\/user_query>(?=\s*(?:<supercode_context>|$))/);return r?r[1].trim():n}function Fi(e){return Array.isArray(e)?e.filter(t=>t&&typeof t.label=="string"&&typeof t.detail=="string").slice(0,32).map(t=>({...typeof t.id=="string"&&t.id?{id:t.id.slice(0,2e3)}:{},...typeof t.kind=="string"&&t.kind?{kind:t.kind.slice(0,100)}:{},label:t.label.slice(0,200),detail:t.detail.slice(0,2e4)})):[]}function ud(e,t){if(e?.role!=="user")return[];let r=(t??Ft(e.content).trim()).match(/^<user_query>\s*[\s\S]*?\s*<\/user_query>\s*<supercode_context>\s*([\s\S]*?)\s*<\/supercode_context>\s*$/);if(r)try{return Fi(JSON.parse(r[1]))}catch{return[]}if(typeof e.metadata?.context=="string")try{return Fi(JSON.parse(e.metadata.context))}catch{return[]}return[]}function od(e){let t=new Map;for(let n of e)n.role==="tool"&&n.tool_call_id&&t.set(n.tool_call_id,n);return t}function cd(e){let t=typeof e=="string"?e:JSON.stringify(e??null);return t.length<=512?t:`${t.slice(0,256)}:${t.length}:${t.slice(-256)}`}function Yr(e,t,...n){let r=n.map(cd).join(""),s=3735928559^r.length,a=1103547991^r.length;for(let i=0;i<r.length;i+=1){let u=r.charCodeAt(i);s=Math.imul(s^u,2654435761),a=Math.imul(a^u,1597334677)}return s=Math.imul(s^s>>>16,2246822507)^Math.imul(a^a>>>13,3266489909),a=Math.imul(a^a>>>16,2246822507)^Math.imul(s^s>>>13,3266489909),`${e}:${t}:${(s>>>0).toString(36)}${(a>>>0).toString(36)}`}function Ri(e,t,n){let r=t.metadata??{},s=["id","uuid","message_id","messageId","event_id","eventId","timestamp"].map(i=>r[i]).find(i=>typeof i=="string"&&i),a=(t.tool_calls??[]).map(i=>i.id).join(",");return Yr(e,"message",t.role,s??"",t.tool_call_id??"",a,n)}function Li(e,t={}){let n=t.prefix??e.session_id??"session",r=e.messages??[],s=od(r),a=new Set,i=[];for(let[u,o]of r.entries()){let c=Ft(o.content).trim(),f=id(o,c);if(o.role!=="tool"&&(f||o.content!==void 0)){let h=ud(o,c),d=td(o.content).map((m,p)=>({id:`${Ri(n,o,c)}:image:${p}`,label:`Image ${p+1}`,url:m}));i.push({id:Ri(n,o,c),kind:"message",messageIndex:u+1,role:o.role,text:f,content:o.content,metadata:{...o.metadata??{}},visibility:ad(o,c)?"context":"conversation",...h.length>0?{context:h}:{},...d.length>0?{images:d}:{}})}for(let[h,d]of(o.tool_calls??[]).entries()){let m=s.get(d.id);m&&a.add(d.id);let p=Ft(m?.content).trim();i.push({id:Yr(n,"tool",d.id||`${u}:${h}`),kind:"tool",messageIndex:u+1,callId:d.id,name:d.function?.name??null,arguments:d.function?.arguments??null,resultText:p,resultContent:m?.content,status:m?Mi(p):"pending",metadata:{...o.metadata??{},...m?.metadata??{}}})}o.role==="tool"&&!a.has(o.tool_call_id??"")&&(f||o.name||o.content!==void 0)&&i.push({id:Yr(n,"tool-result",o.tool_call_id??"",o.metadata?.timestamp??"",f),kind:"tool",messageIndex:u+1,callId:o.tool_call_id??null,name:o.name??null,arguments:null,resultText:f,resultContent:o.content,status:Mi(f),metadata:{...o.metadata??{}}})}return i}var ld=120,dd=16e3;var rg=Object.freeze({"needs-input":4,failed:3,working:2,running:1,recent:1,idle:0});function Bi(e,t={}){return yd(Li(e,{prefix:t.prefix??e?.session_id??"subagent"}),t,null)}function fd(e){if(typeof e=="string")return e;try{return JSON.stringify(e,null,2)}catch{return String(e??"")}}function es(e){return Array.isArray(e)?e.map(es):e!==null&&typeof e=="object"?Object.fromEntries(Object.entries(e).map(([t,n])=>[t,es(n)])):e}function Qr(e,t){return Number.isInteger(e)&&e>0?e:t}function et(e,t){let n=typeof e=="string"?e:"";if(n.length<=t)return{text:n,truncated:!1};let r=t,s=n.charCodeAt(r-1),a=n.charCodeAt(r);return s>=55296&&s<=56319&&a>=56320&&a<=57343&&(r-=1),{text:`${n.slice(0,r)}\u2026`,truncated:!0}}function Pi(e){if(!e||typeof e!="object"||Array.isArray(e))return null;for(let t of["timestamp","ts","time","created_at","createdAt","date"]){let n=e[t];if(typeof n!="string"||n==="")continue;if(/^\d+$/.test(n)){let s=Number(n);if(Number.isFinite(s)&&s>0)return s<1e11?s*1e3:s;continue}let r=Date.parse(n);if(Number.isFinite(r))return r}return null}function hd(e){if(!Array.isArray(e))return;let t=e.flatMap(n=>n&&typeof n=="object"&&typeof n.label=="string"&&typeof n.detail=="string"?[{...typeof n.id=="string"?{id:n.id}:{},...typeof n.kind=="string"?{kind:n.kind}:{},label:n.label,detail:n.detail}]:[]);return t.length?t:void 0}function pd(e){if(!e.startsWith("data:image/"))return{};let t=e.slice(5,256),n=t.indexOf(",");if(n<0)return{};let r=t.slice(0,n),s=r.split(";",1)[0].toLowerCase();if(!s.startsWith("image/"))return{};if(!r.toLowerCase().endsWith(";base64"))return{mediaType:s};let a=e.length-5-n-1,i=e.endsWith("==")?2:e.endsWith("=")?1:0;return{mediaType:s,byteSize:Math.max(0,Math.floor(a*3/4)-i)}}function md(e,t,n){return JSON.stringify([e,typeof t.id=="string"?t.id:null,n])}function gd(e,t,n){if(!Array.isArray(e))return;let r=e.flatMap((s,a)=>{if(!s||typeof s!="object"||typeof s.label!="string")return[];let i=typeof s.url=="string"?s.url:null,u=i!==null&&!i.endsWith(`
|
|
39
|
-
\u2026`),o=u?pd(i):{},c=u&&(!i.startsWith("data:image/")||i.length<=256e3)?i:null,f=null;return u&&i.startsWith("data:image/")&&!c&&n&&Number.isSafeInteger(o.byteSize)&&(f=md(t,s,a),n.set(f,{...typeof s.id=="string"?{id:s.id}:{},label:s.label,url:i,...o})),[{...typeof s.id=="string"?{id:s.id}:{},label:s.label,...o,...c?{url:c}:{},...f?{reference:f}:{}}]}).slice(0,4);return r.length?r:void 0}function bd(e){let t=Array.isArray(e.options)?e.options.map(r=>r?.name).filter(Boolean).join(" / "):"",n=e.resolution?.name?` \u2192 ${e.resolution.name}`:"";return t?`${e.requestKind}: ${t}${n}`:`${e.requestKind??"request"}${n}`}function Oi(e,t,n){if(!e||typeof e!="object"||typeof e.id!="string")return null;if(e.kind==="message"){if(e.visibility==="context")return null;let r=et(e.text,t),s=hd(e.context),a=gd(e.images,e.id,n);return{id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:e.role,...Number.isSafeInteger(e.messageIndex)&&e.messageIndex>0?{messageIndex:e.messageIndex}:{},text:r.text,ts:Pi(e.metadata),truncated:r.truncated,...s?{context:s}:{},...a?{images:a}:{}}}if(e.kind==="tool"){let r=et((e.arguments??"").trim(),t),s=et((e.resultText??"").trim(),t),a={id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:"tool",...Number.isSafeInteger(e.messageIndex)&&e.messageIndex>0?{messageIndex:e.messageIndex}:{},text:"",ts:Pi(e.metadata),truncated:r.truncated||s.truncated,label:e.name??"tool",arguments:r.text,resultText:s.text,status:e.status};return a.presentation=Zr({...a,arguments:(e.arguments??"").trim(),resultText:(e.resultText??"").trim(),resultContent:e.resultContent,metadata:e.metadata}),a}if(e.kind==="reasoning"){let r=et(e.text,t);return{id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:"reasoning",text:r.text,ts:null,truncated:r.truncated,streaming:e.streaming===!0}}if(e.kind==="request"){let r=et(bd(e),t),s=et(fd(e.payload),t);return{id:e.id,role:"request",text:r.text,ts:null,truncated:r.truncated||s.truncated,request:{requestId:es(e.requestId),requestKind:e.requestKind,payloadText:s.text,options:Array.isArray(e.options)?e.options.map(a=>({...a})):[],cancellable:e.cancellable===!0,status:e.status,resolution:e.resolution?{...e.resolution}:null}}}if(e.kind==="notice"){let r=et(e.text||e.code,t);return{id:e.id,role:"notice",text:r.text,ts:null,truncated:r.truncated,code:e.code}}return null}function yd(e,t,n){if(!Array.isArray(e))return[];let r=Qr(t.maxEntries,ld),s=Qr(t.maxEntryChars,dd),a=Qr(t.maxScanEntries,r*4),i=[],u=e.length-1,o=0;for(;u>=0&&i.length<r&&o<a;u-=1,o+=1){let c=Oi(e[u],s,n);c&&i.push(c)}if(i.at(-1)?.role!=="user")for(;u>=0&&o<a;u-=1,o+=1){let c=Oi(e[u],s,n);if(c?.role==="user"){i.length===r?i[i.length-1]=c:i.push(c);break}}return i.reverse(),i}var vd=(e="")=>`https://brand.volter.ai/runner/svg?seed=${encodeURIComponent(e)}&size=36&radius=18`;function _d(e,t){let n=new Map;for(let r of t){if(r?.role!=="user")continue;let s=Date.parse(r.metadata?.timestamp??"");Number.isFinite(s)&&n.set(s,r.metadata)}return e.map(r=>{if(r.role!=="user")return r;let s=n.get(r.ts)??{},a=s.source_name||null;return{...r,actor:{name:a??"Someone",image:vd(a?s.source_principal_id||a:"")}}})}var xd={"claude-code":"claude_code",codex:"codex",gemini:"gemini",goose:"goose",grok:"grok",opencode:"opencode",pi:"pi"};function kd(e,t){return{source:xd[e.harness]??"native",session_id:e.id,model:null,cwd:null,system_prompt:null,agent_id:null,parent_tool_use_id:null,lineage:{},trigger:"human",surface:null,messages:t}}function lg(e,{onSend:t}){let n={descriptor:null,messages:[],live:!1,status:"loading",error:null,canSend
|
|
39
|
+
\u2026`),o=u?pd(i):{},c=u&&(!i.startsWith("data:image/")||i.length<=256e3)?i:null,f=null;return u&&i.startsWith("data:image/")&&!c&&n&&Number.isSafeInteger(o.byteSize)&&(f=md(t,s,a),n.set(f,{...typeof s.id=="string"?{id:s.id}:{},label:s.label,url:i,...o})),[{...typeof s.id=="string"?{id:s.id}:{},label:s.label,...o,...c?{url:c}:{},...f?{reference:f}:{}}]}).slice(0,4);return r.length?r:void 0}function bd(e){let t=Array.isArray(e.options)?e.options.map(r=>r?.name).filter(Boolean).join(" / "):"",n=e.resolution?.name?` \u2192 ${e.resolution.name}`:"";return t?`${e.requestKind}: ${t}${n}`:`${e.requestKind??"request"}${n}`}function Oi(e,t,n){if(!e||typeof e!="object"||typeof e.id!="string")return null;if(e.kind==="message"){if(e.visibility==="context")return null;let r=et(e.text,t),s=hd(e.context),a=gd(e.images,e.id,n);return{id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:e.role,...Number.isSafeInteger(e.messageIndex)&&e.messageIndex>0?{messageIndex:e.messageIndex}:{},text:r.text,ts:Pi(e.metadata),truncated:r.truncated,...s?{context:s}:{},...a?{images:a}:{}}}if(e.kind==="tool"){let r=et((e.arguments??"").trim(),t),s=et((e.resultText??"").trim(),t),a={id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:"tool",...Number.isSafeInteger(e.messageIndex)&&e.messageIndex>0?{messageIndex:e.messageIndex}:{},text:"",ts:Pi(e.metadata),truncated:r.truncated||s.truncated,label:e.name??"tool",arguments:r.text,resultText:s.text,status:e.status};return a.presentation=Zr({...a,arguments:(e.arguments??"").trim(),resultText:(e.resultText??"").trim(),resultContent:e.resultContent,metadata:e.metadata}),a}if(e.kind==="reasoning"){let r=et(e.text,t);return{id:e.id,...typeof e.key=="string"&&e.key!==e.id?{key:e.key}:{},role:"reasoning",text:r.text,ts:null,truncated:r.truncated,streaming:e.streaming===!0}}if(e.kind==="request"){let r=et(bd(e),t),s=et(fd(e.payload),t);return{id:e.id,role:"request",text:r.text,ts:null,truncated:r.truncated||s.truncated,request:{requestId:es(e.requestId),requestKind:e.requestKind,payloadText:s.text,options:Array.isArray(e.options)?e.options.map(a=>({...a})):[],cancellable:e.cancellable===!0,status:e.status,resolution:e.resolution?{...e.resolution}:null}}}if(e.kind==="notice"){let r=et(e.text||e.code,t);return{id:e.id,role:"notice",text:r.text,ts:null,truncated:r.truncated,code:e.code}}return null}function yd(e,t,n){if(!Array.isArray(e))return[];let r=Qr(t.maxEntries,ld),s=Qr(t.maxEntryChars,dd),a=Qr(t.maxScanEntries,r*4),i=[],u=e.length-1,o=0;for(;u>=0&&i.length<r&&o<a;u-=1,o+=1){let c=Oi(e[u],s,n);c&&i.push(c)}if(i.at(-1)?.role!=="user")for(;u>=0&&o<a;u-=1,o+=1){let c=Oi(e[u],s,n);if(c?.role==="user"){i.length===r?i[i.length-1]=c:i.push(c);break}}return i.reverse(),i}var vd=(e="")=>`https://brand.volter.ai/runner/svg?seed=${encodeURIComponent(e)}&size=36&radius=18`;function _d(e,t){let n=new Map;for(let r of t){if(r?.role!=="user")continue;let s=Date.parse(r.metadata?.timestamp??"");Number.isFinite(s)&&n.set(s,r.metadata)}return e.map(r=>{if(r.role!=="user")return r;let s=n.get(r.ts)??{},a=s.source_name||null;return{...r,actor:{name:a??"Someone in the session",image:vd(a?s.source_principal_id||a:"")}}})}var xd={"claude-code":"claude_code",codex:"codex",gemini:"gemini",goose:"goose",grok:"grok",opencode:"opencode",pi:"pi"};function kd(e,t){return{source:xd[e.harness]??"native",session_id:e.id,model:null,cwd:null,system_prompt:null,agent_id:null,parent_tool_use_id:null,lineage:{},trigger:"human",surface:null,messages:t}}function lg(e,{onSend:t,control:n=!1}){let r={readOnly:n?"Control":"Read-only"},s={descriptor:null,messages:[],members:[],machines:[],live:!1,status:"loading",error:null,canSend:n,sending:!1},a={onIntent:async u=>{u?.action==="send"&&u.text?.trim()&&await t(u.text.trim())},copyText:u=>globalThis.navigator?.clipboard?.writeText(u)},i=()=>{let{descriptor:u,messages:o,members:c,machines:f,live:h,status:d,error:m,canSend:p,sending:g}=s,b=u?_d(Bi(kd(u,o),{prefix:u.id,maxEntries:500}),o):[],x=Xr({...vn,startup:"ready",harness:u?.harness??"",canSend:p&&!g,busy:g,transcript:b});Wt(tt("div",{class:"session-view"},tt(fi,{session:u,transcript:b,members:c,machines:f,live:h,status:d,error:m,adapter:a,labels:r}),p?tt("div",{class:"session-composer scui-root"},tt(It,{state:x,adapter:a})):null),e)};return i(),{update(u){s={...s,...u},i()},unmount(){Wt(null,e)}}}export{lg as mountSessionView};
|
package/viewer/viewer.mjs
CHANGED
|
@@ -42,8 +42,8 @@ async function main() {
|
|
|
42
42
|
const claims = claimsOf(token);
|
|
43
43
|
// A session token (a Room's session-backed Conversation) names one team session, not a surface.
|
|
44
44
|
if (claims.session?.id) {
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
// The session view's own header names the session and carries the one scope badge.
|
|
46
|
+
document.querySelector('body > header').hidden = true;
|
|
47
47
|
await showSession(claims.session, claims.scope === 'control');
|
|
48
48
|
ask('viewer-ready');
|
|
49
49
|
return;
|
|
@@ -73,6 +73,7 @@ async function showSession(session, control) {
|
|
|
73
73
|
const element = $('session');
|
|
74
74
|
element.hidden = false;
|
|
75
75
|
const view = mountSessionView(element, {
|
|
76
|
+
control,
|
|
76
77
|
onSend: async (text) => {
|
|
77
78
|
view.update({ sending: true });
|
|
78
79
|
try {
|
|
@@ -84,9 +85,8 @@ async function showSession(session, control) {
|
|
|
84
85
|
} catch (error) { status(`Not delivered: ${error.message}`); } finally { view.update({ sending: false }); }
|
|
85
86
|
},
|
|
86
87
|
});
|
|
87
|
-
view.update({ canSend: control });
|
|
88
88
|
const headers = async () => ({ Authorization: `Bearer ${await freshToken()}` });
|
|
89
|
-
const apply = (body) => view.update({ descriptor: body.descriptor, messages: body.messages.map((message) => message.value), status: 'ready', error: null });
|
|
89
|
+
const apply = (body) => view.update({ descriptor: body.descriptor, messages: body.messages.map((message) => message.value), members: body.names?.members ?? [], machines: body.names?.machines ?? [], status: 'ready', error: null });
|
|
90
90
|
let reading = null;
|
|
91
91
|
const read = () => (reading ??= (async () => {
|
|
92
92
|
try {
|