@robota-sdk/agent-transport 3.0.0-beta.100
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/CHANGELOG.md +1137 -0
- package/LICENSE +661 -0
- package/README.md +121 -0
- package/dist/browser/client.d.ts +2 -0
- package/dist/browser/client.js +1 -0
- package/dist/browser/index.d.ts +624 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/observer-messages-4fRQZU2D.d.ts +499 -0
- package/dist/browser/observer-messages-4fRQZU2D.d.ts.map +1 -0
- package/dist/browser/observer-messages-O8jTPEQO.js +2 -0
- package/dist/browser/observer-messages-O8jTPEQO.js.map +1 -0
- package/dist/node/index.cjs +1 -0
- package/dist/node/index.d.cts +1115 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.ts +1115 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +2 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/node.cjs +1 -0
- package/dist/node/node.d.cts +317 -0
- package/dist/node/node.d.cts.map +1 -0
- package/dist/node/node.d.ts +317 -0
- package/dist/node/node.d.ts.map +1 -0
- package/dist/node/node.js +2 -0
- package/dist/node/node.js.map +1 -0
- package/package.json +122 -0
- package/src/__tests__/__fixtures__/korean-text.json +6 -0
- package/src/__tests__/access-token-verifier.test.ts +672 -0
- package/src/__tests__/admission.test.ts +130 -0
- package/src/__tests__/app-tool-messages.test.ts +463 -0
- package/src/__tests__/bearer-resource-gate.test.ts +120 -0
- package/src/__tests__/channel-frames.test.ts +215 -0
- package/src/__tests__/driver-attribution-capability.test.ts +83 -0
- package/src/__tests__/file-transfer.test.ts +281 -0
- package/src/__tests__/handoff-chunking.test.ts +261 -0
- package/src/__tests__/handoff-manifest.test.ts +52 -0
- package/src/__tests__/history-attached-budget.test.ts +216 -0
- package/src/__tests__/message-decoders.test.ts +870 -0
- package/src/__tests__/outbound-delivery.test.ts +558 -0
- package/src/__tests__/peer-message-ledger.test.ts +200 -0
- package/src/__tests__/permission-summary.test.ts +18 -0
- package/src/__tests__/personal-usage-report.test.ts +193 -0
- package/src/__tests__/project-read-messages.test.ts +118 -0
- package/src/__tests__/resume-buffer.test.ts +93 -0
- package/src/__tests__/session-detail-loop-status.test.ts +169 -0
- package/src/__tests__/session-directory-messages.test.ts +322 -0
- package/src/__tests__/session-error-classification.test.ts +113 -0
- package/src/__tests__/session-event-delivery.test.ts +101 -0
- package/src/__tests__/session-history-wire.test.ts +364 -0
- package/src/__tests__/session-message-handler-e5.test.ts +99 -0
- package/src/__tests__/session-message-handler-observe.test.ts +223 -0
- package/src/__tests__/session-message-handler.test.ts +726 -0
- package/src/__tests__/session-resume-bridge.test.ts +472 -0
- package/src/__tests__/settings-messages.test.ts +193 -0
- package/src/__tests__/stdio-carrier.test.ts +85 -0
- package/src/__tests__/submit-prompt-shape.test.ts +78 -0
- package/src/__tests__/usage-report-carrier.test.ts +98 -0
- package/src/__tests__/ws-broadcast-events.test.ts +94 -0
- package/src/app-tool-messages.ts +140 -0
- package/src/background-messages.ts +169 -0
- package/src/channel-frames.ts +182 -0
- package/src/client.ts +17 -0
- package/src/handoff-chunking.ts +275 -0
- package/src/index.ts +135 -0
- package/src/loop-control-messages.ts +34 -0
- package/src/message-decoders.ts +485 -0
- package/src/message-parser.ts +33 -0
- package/src/node/access-token-verifier.ts +363 -0
- package/src/node/admission.ts +153 -0
- package/src/node/bearer-resource-gate.ts +331 -0
- package/src/node/file-transfer.ts +530 -0
- package/src/node/handoff-manifest.ts +77 -0
- package/src/node/index.ts +45 -0
- package/src/node/stdio-carrier.ts +59 -0
- package/src/observer-messages.ts +47 -0
- package/src/open-prompts.ts +76 -0
- package/src/outbound-delivery.ts +240 -0
- package/src/peer-message-ledger.ts +193 -0
- package/src/permission-summary.ts +18 -0
- package/src/project-read-messages.ts +74 -0
- package/src/protocol-session.ts +56 -0
- package/src/resume-buffer.ts +123 -0
- package/src/session-directory-messages.ts +162 -0
- package/src/session-error-classification.ts +91 -0
- package/src/session-events.ts +290 -0
- package/src/session-message-handler.ts +413 -0
- package/src/session-query-messages.ts +160 -0
- package/src/session-resume-bridge.ts +275 -0
- package/src/settings-messages.ts +103 -0
- package/src/usage-messages.ts +195 -0
- package/src/wire-messages.ts +436 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@robota-sdk/agent-interface-session"),t=require("@robota-sdk/agent-core");function n(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const r=e=>typeof e==`string`,i=e=>typeof e==`string`&&e.length>0,a=e=>typeof e==`boolean`,o=e=>typeof e==`number`&&Number.isFinite(e),s=e=>Number.isSafeInteger(e)&&e>=0,c=e=>t=>t===void 0||e(t),l=e=>Array.isArray(e)&&e.every(n),u=e=>e===null||n(e),d=e=>t=>typeof t==`string`&&e.includes(t),f={user:!0,"agent-wakeup":!0,peer:!0,external:!0},p=e=>n(e)&&r(e.id)&&r(e.timestamp)&&r(e.category)&&r(e.type),m=e=>Array.isArray(e)&&e.every(p),h=e=>n(e)&&r(e.name)&&r(e.description)&&r(e.definedIn),g=e=>Array.isArray(e)&&e.every(h),_=[`agent`,`process`,`scheduled`],v=[`foreground`,`background`],y=[`queued`,`running`,`waiting_permission`,`sleeping`,`paused`,`completed`,`failed`,`cancelled`],b=[`cancel`,`close`,`send`],x=e=>n(e)&&c(d(_))(e.kind)&&c(d(y))(e.status)&&c(d(v))(e.mode)&&c(a)(e.includeClosed),S=e=>n(e)&&c(r)(e.prompt)&&c(r)(e.stdin),C=e=>n(e)&&o(e.offset),w=e=>n(e)&&s(e.offset),T=e=>a(e)||e===`allow-session`||e===`allow-project`,E=e=>n(e)&&(e.type===`answer`&&Array.isArray(e.values)&&e.values.every(r)&&c(r)(e.text)||e.type===`cancelled`&&e.values===void 0&&e.text===void 0),D={language:{language:i},outputStyle:{styleId:i},preset:{presetId:i},permissionMode:{mode:i},sandbox:{enabled:a},removePermissionRule:{scope:i,kind:d([`allow`,`deny`,`ask`]),pattern:i},mcpServerEnabled:{serverId:i,enabled:a},reloadMcpServers:{},pluginEnabled:{pluginId:i,enabled:a},reloadPlugins:{},installPlugin:{pluginId:i},uninstallPlugin:{pluginId:i},providerProfile:{profileName:i},providerModel:{profileName:i,modelId:i},deleteProviderProfile:{profileName:i}},O=e=>{if(!n(e)||!r(e.field))return!1;let t=e.field;if(!Object.prototype.hasOwnProperty.call(D,t))return!1;let i=D[t];return Object.entries(i).every(([t,n])=>n(e[t]))},k={none:{},several:{message:r},stopped:{loopId:i,message:c(r)},failed:{loopId:c(i),message:r}},A=e=>{if(!n(e)||!r(e.kind))return!1;let t=e.kind;if(!Object.prototype.hasOwnProperty.call(k,t))return!1;let i=k[t];return Object.entries(i).every(([t,n])=>n(e[t]))};function j(e){return t=>{if(!n(t)||!r(t.kind))return!1;let i=Object.prototype.hasOwnProperty.call(e,t.kind)?e[t.kind]:void 0;return i!==void 0&&Object.entries(i).every(([e,n])=>n(t[e]))}}const ee=[`Added`,`Modified`,`Deleted`,`Renamed`,`Copied`,`Untracked`,`Conflicted`],te=e=>n(e)&&i(e.path)&&d(ee)(e.status)&&c(i)(e.renamedFrom)&&c(o)(e.added)&&c(o)(e.removed),ne=j({status:{branch:c(r),unborn:a,files:e=>Array.isArray(e)&&e.every(te),truncated:a},"not-a-repository":{},failed:{message:r}}),re=[`add`,`remove`,`context`,`hunk`],ie=e=>n(e)&&d(re)(e.type)&&r(e.text)&&o(e.lineNumber),ae=j({diff:{diffLines:e=>Array.isArray(e)&&e.every(ie),truncated:a},"not-a-repository":{},"outside-workspace":{},failed:{message:r}}),oe=j({memory:{content:r,path:i,truncated:a},unavailable:{message:r}}),se={submit:{prompt:i},command:{name:i,args:c(r),requestId:c(i)},abort:{},"cancel-queue":{},"get-messages":{},"get-history":{fromIndex:c(s)},"get-prompts":{},"get-context":{},"get-commands":{},"get-status":{},"list-models":{requestId:i},"get-agent-definitions":{requestId:i},"list-sessions":{requestId:i},"new-session":{requestId:c(i)},"switch-session":{sessionId:i,requestId:c(i)},"rename-session":{sessionId:i,name:i,requestId:i},"delete-session":{sessionId:i,requestId:i},"get-usage-report":{},"get-personal-usage-report":{requestId:i,period:d([`7d`,`30d`]),timezone:i},"get-stored-session-usage-report":{requestId:i,sessionId:i},"get-executing":{},"get-pending":{},"get-execution-workspace":{},"read-execution-detail":{requestId:i,entryId:i,cursor:c(w)},"stop-waiting-loop":{requestId:i},"project-status":{requestId:i},"project-diff":{requestId:i,path:i},"project-memory":{requestId:i},"call-app-tool":{requestId:i,viewId:i,name:i,arguments:n},"read-app-view":{requestId:i,viewId:i},"get-background-tasks":{filter:c(x)},"get-background-task":{taskId:i},"get-background-job-groups":{},"get-background-job-group":{groupId:i},"wait-background-job-group":{groupId:i},"cancel-background-task":{taskId:i,reason:c(r)},"close-background-task":{taskId:i},"send-background-task":{taskId:i,input:S},"read-background-task-log":{taskId:i,cursor:c(C)},"permission-response":{id:i,result:T},"ask-response":{id:i,response:E},resume:{lastSeq:o},ack:{seq:o},"get-settings":{requestId:i},"update-settings":{requestId:i,patch:O}},M={driverId:c(r)},ce={text_delta:{delta:r,...M},user_message:{content:r,...M},tool_start:{state:n,...M},tool_end:{state:n,...M},thinking:{isThinking:a,...M},complete:{result:n,...M},interrupted:{result:n,...M},error:{message:r,code:c(d([`auth`,`rate_limit`,`model_unavailable`,`network`,`provider`])),provider:c(r),retryAfterSeconds:c(o),model:c(r),...M},command_result:{name:r,message:r,success:a,requestId:c(r)},messages:{messages:l,display:c(l),...M},history:{startIndex:s,total:s,entries:m},context:{state:n},history_changed:{compact:c(e=>n(e)&&d([`auto`,`manual`])(e.trigger)&&o(e.beforeUsedPercentage)&&o(e.afterUsedPercentage))},turn_source:{source:d(Object.keys(f))},commands:{commands:l,skills:l},session_status:{status:n},model_list:{requestId:i,groups:l,currentProfile:c(r),currentModel:r},agent_definitions:{requestId:i,agents:g,current:i},sessions:{requestId:i,listing:n},sessions_error:{requestId:i,code:d([`not_available`,`list_failed`]),message:r},session_switched:{event:n},session_change_failed:{code:d(e.SESSION_CHANGE_REFUSAL_CODES),message:r,requestId:c(r)},session_renamed_in_list:{requestId:i,sessionId:r,name:r},session_rename_failed:{requestId:i,message:r},session_deleted:{requestId:i,sessionId:r},session_delete_failed:{requestId:i,code:d(e.SESSION_DELETE_REFUSAL_CODES),message:r},usage_report:{report:n},personal_usage_report:{requestId:i,report:n},personal_usage_report_error:{requestId:i,code:d([`not_available`,`report_failed`]),message:r},stored_session_usage_report:{requestId:i,sessionId:i,report:n},stored_session_usage_report_error:{requestId:i,sessionId:i,code:d([`not_available`,`report_failed`]),message:r},executing:{executing:a},pending:{pending:e=>e===null||r(e),pendingCount:c(s)},execution_workspace_event:{snapshot:n},execution_detail:{requestId:i,page:n},execution_detail_error:{requestId:i,message:r},waiting_loop_stop:{requestId:i,outcome:A},project_status:{requestId:i,result:ne},project_diff:{requestId:i,result:ae},project_memory:{requestId:i,result:oe},app_tool_result:{requestId:i,success:a,data:()=>!0,parts:c(l),error:c(r)},app_view:{requestId:i,view:n},background_task_event:{event:n},background_job_group_event:{event:n},plan_event:{event:n},context_file_refreshed:{event:n},branch_event:{event:n},background_tasks:{tasks:l},background_task:{taskId:r,task:u},background_job_groups:{groups:l},background_job_group:{groupId:r,group:u},background_task_log:{taskId:r,page:n},permission_request:{event:n},ask_request:{event:n},prompt_resolved:{event:n},ui_intent:{event:n},session_renamed:{event:n},history_cleared:{},background_task_control_result:{action:d(b),taskId:r,success:a,message:c(r)},protocol_error:{message:r,requestId:c(r)},resume_gap:{},settings:{requestId:i,settings:n},settings_error:{requestId:i,code:d([`not_available`,`invalid`,`refused`,`update_failed`]),message:r}};function le(e,t,i){if(!n(e))return{ok:!1,reason:`message must be a JSON object`};let a=e.type;if(!r(a))return{ok:!1,reason:`message type must be a string`};let o=Object.prototype.hasOwnProperty.call(t,a)?t[a]:void 0;if(o===void 0)return{ok:!1,reason:`Unknown message type: ${a}`};for(let[t,n]of Object.entries(o))if(!n(e[t]))return{ok:!1,reason:i(t)};return{ok:!0,message:e}}function N(e){return le(e,se,e=>e===`prompt`?`prompt must be a non-empty string`:`${e} has an invalid shape`)}function ue(e){return le(e,ce,e=>`${e} has an invalid shape`)}function P(e,t){if(e.length>4194304)return{ok:!1,reason:`Frame too large`};let n;try{n=JSON.parse(e)}catch{return{ok:!1,reason:`Invalid JSON`}}return t(n)}function de(e){return e.type===`call-app-tool`}function fe(e){return e.type===`read-app-view`}function pe(e){return e?.maxFrameBytes??4193280}function me(e,t){return new TextEncoder().encode(JSON.stringify(e)).byteLength<=t}function he(e,t,n,r,i){let{requestId:a}=n,o=e.readToolAppView(n.viewId);if(o===void 0){t({type:`protocol_error`,message:`This app view is no longer available.`,requestId:a});return}if(!Object.values(o.callableTools).includes(n.name)){t({type:`protocol_error`,message:`This tool is not available to this app view.`,requestId:a});return}let{signal:s}=i??{},c=pe(i);e.invokeRuntimeTool(n.name,n.arguments,{permissionInteraction:`interactive`,...r?{driverId:r}:{},...s?{signal:s}:{}}).then(e=>{if(s?.aborted)return;let n={type:`app_tool_result`,requestId:a,success:e.success,...e.result===void 0?{}:{data:e.result},...e.parts===void 0?{}:{parts:e.parts},...e.error===void 0?{}:{error:e.error}};me(n,c)?t(n):t({type:`protocol_error`,message:`This app tool result is too large to send.`,requestId:a})},e=>{s?.aborted||t({type:`protocol_error`,message:e instanceof Error?e.message:String(e),requestId:a})})}function ge(e,t,n,r){let{requestId:i}=n,a=e.readToolAppView(n.viewId);if(a===void 0){t({type:`protocol_error`,message:`This app view is no longer available.`,requestId:i});return}let o={type:`app_view`,requestId:i,view:a};if(!me(o,pe(r))){t({type:`protocol_error`,message:`This app view is too large to send.`,requestId:i});return}t(o)}function _e(e,t,n){if(n.type===`get-background-tasks`){t({type:`background_tasks`,tasks:e.listBackgroundTasks(n.filter)});return}if(n.type===`get-background-task`){ye(e,t,n);return}if(n.type===`get-background-job-groups`){t({type:`background_job_groups`,groups:e.listBackgroundJobGroups()});return}if(n.type===`get-background-job-group`){xe(e,t,n);return}if(n.type===`wait-background-job-group`){Se(e,t,n);return}be(e,t,n)}function ve(e,t,n){if(!n.taskId){t({type:`protocol_error`,message:`taskId is required`});return}if(n.type===`cancel-background-task`){F(t,`cancel`,n.taskId,e.cancelBackgroundTask(n.taskId,n.reason));return}if(n.type===`close-background-task`){F(t,`close`,n.taskId,e.closeBackgroundTask(n.taskId));return}Ce(e,t,n)}function ye(e,t,n){if(!n.taskId){t({type:`protocol_error`,message:`taskId is required`});return}t({type:`background_task`,taskId:n.taskId,task:e.getBackgroundTask(n.taskId)??null})}function be(e,t,n){if(!n.taskId){t({type:`protocol_error`,message:`taskId is required`});return}e.readBackgroundTaskLog(n.taskId,n.cursor).then(e=>t({type:`background_task_log`,taskId:n.taskId,page:e}),e=>t({type:`protocol_error`,message:e.message}))}function xe(e,t,n){if(!n.groupId){t({type:`protocol_error`,message:`groupId is required`});return}t({type:`background_job_group`,groupId:n.groupId,group:e.getBackgroundJobGroup(n.groupId)??null})}function Se(e,t,n){if(!n.groupId){t({type:`protocol_error`,message:`groupId is required`});return}e.waitBackgroundJobGroup(n.groupId).then(e=>t({type:`background_job_group`,groupId:n.groupId,group:e}),e=>t({type:`protocol_error`,message:e.message}))}function Ce(e,t,n){if(!n.input){t({type:`protocol_error`,message:`input is required`});return}F(t,`send`,n.taskId,e.sendBackgroundTask(n.taskId,n.input))}function F(e,t,n,r){r.then(()=>e({type:`background_task_control_result`,action:t,taskId:n,success:!0}),r=>e({type:`background_task_control_result`,action:t,taskId:n,success:!1,message:r.message}))}function we(e){return e.type===`stop-waiting-loop`}function Te(e,t,n){let{requestId:r}=n;e.stopWaitingSelfPacedLoop().then(e=>t({type:`waiting_loop_stop`,requestId:r,outcome:e}),e=>t({type:`waiting_loop_stop`,requestId:r,outcome:{kind:`failed`,message:Ee(e)}}))}function Ee(e){return e instanceof Error?e.message:String(e)}function De(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oe(e){return typeof e==`string`&&e.length>0?e:void 0}function ke(e){if(!(new TextEncoder().encode(e).byteLength>4194304))try{let t=JSON.parse(e);if(!De(t))return;let n=Oe(t.requestId);if(!n)return;if(t.type===`get-personal-usage-report`)return{type:`personal`,requestId:n};let r=Oe(t.sessionId);return t.type===`get-stored-session-usage-report`&&r?{type:`stored-session`,requestId:n,sessionId:r}:void 0}catch{return}}function Ae(e,t,n,r){return n.type===`get-personal-usage-report`?(Ne(t,n,r.personalUsageReporter),!0):n.type===`get-stored-session-usage-report`?(Me(t,n,r.storedSessionUsageReporter),!0):n.type===`get-usage-report`?(je(e,t,r.usageReporter),!0):!1}function je(e,t,n){if(!n){t({type:`protocol_error`,message:`Per-session usage reporting is not available on this host.`});return}try{Promise.resolve(n(e)).then(e=>t({type:`usage_report`,report:e}),e=>t({type:`protocol_error`,message:R(e)}))}catch(e){t({type:`protocol_error`,message:R(e instanceof Error?e:String(e))})}}function Me(e,t,n){if(!n){I(e,t,`not_available`,`Stored-session usage reporting is not available on this host.`);return}try{Promise.resolve(n(t.sessionId)).then(n=>e({type:`stored_session_usage_report`,requestId:t.requestId,sessionId:t.sessionId,report:n}),n=>I(e,t,`report_failed`,R(n)))}catch(n){I(e,t,`report_failed`,R(n instanceof Error?n:String(n)))}}function I(e,t,n,r){e({type:`stored_session_usage_report_error`,requestId:t.requestId,sessionId:t.sessionId,code:n,message:r})}function Ne(e,t,n){if(!n){L(e,t.requestId,`not_available`,`Personal usage reporting is not available on this host.`);return}try{Promise.resolve(n({period:t.period,timezone:t.timezone})).then(n=>e({type:`personal_usage_report`,requestId:t.requestId,report:n}),n=>L(e,t.requestId,`report_failed`,R(n)))}catch(n){L(e,t.requestId,`report_failed`,R(n instanceof Error?n:String(n)))}}function L(e,t,n,r){e({type:`personal_usage_report_error`,requestId:t,code:n,message:r})}function R(e){return e instanceof Error?e.message:String(e)}function Pe(e,t){let n=P(e,N);if(n.ok)return n.message;let r=ke(e);return r?.type===`personal`?(t({type:`personal_usage_report_error`,requestId:r.requestId,code:`report_failed`,message:`Invalid personal usage report request.`}),null):r?.type===`stored-session`?(t({type:`stored_session_usage_report_error`,requestId:r.requestId,sessionId:r.sessionId,code:`report_failed`,message:`Invalid stored-session usage report request.`}),null):(t({type:`protocol_error`,message:n.reason}),null)}const Fe=new Set([`get-messages`,`get-history`,`get-context`,`get-status`,`get-commands`,`list-models`,`get-executing`,`get-pending`,`get-execution-workspace`,`read-execution-detail`,`get-agent-definitions`,`get-usage-report`,`list-sessions`,`get-background-tasks`,`get-background-task`,`get-background-job-groups`,`get-background-job-group`,`wait-background-job-group`,`read-background-task-log`,`get-settings`,`project-status`,`project-diff`,`project-memory`]);function Ie(e){return Fe.has(e)}function Le(e){return e.type===`project-status`||e.type===`project-diff`||e.type===`project-memory`}function z(e,t){e({type:`protocol_error`,message:`This host does not support the Project panel.`,requestId:t})}function Re(e,t,n){let{requestId:r}=n;if(n.type===`project-status`){if(!e.readProjectStatus)return z(t,r);e.readProjectStatus().then(e=>t({type:`project_status`,requestId:r,result:e}),e=>t({type:`project_status`,requestId:r,result:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}))}else if(n.type===`project-diff`){if(!e.readProjectDiff)return z(t,r);e.readProjectDiff(n.path).then(e=>t({type:`project_diff`,requestId:r,result:e}),e=>t({type:`project_diff`,requestId:r,result:{kind:`failed`,message:e instanceof Error?e.message:String(e)}}))}else{if(!e.readProjectMemory)return z(t,r);e.readProjectMemory().then(e=>t({type:`project_memory`,requestId:r,result:e}),e=>t({type:`project_memory`,requestId:r,result:{kind:`unavailable`,message:e instanceof Error?e.message:String(e)}}))}}function ze(e){return e.type===`list-sessions`||e.type===`new-session`||e.type===`switch-session`}function Be(e){return e.type===`rename-session`}function Ve(e){return e.type===`delete-session`}function He(t,n,r){if(n.type===`list-sessions`){Ue(t,n.requestId,r);return}let i=n.requestId===void 0?{}:{requestId:n.requestId};if(!r){t({type:`session_change_failed`,code:`not_available`,message:`Sessions cannot be switched on this host.`,...i});return}Promise.resolve().then(()=>n.type===`new-session`?r.newSession():r.switchSession(n.sessionId)).catch(n=>t({type:`session_change_failed`,code:(0,e.isSessionChangeRefusal)(n)?n.code:`failed`,message:B(n),...i}))}function Ue(e,t,n){if(!n){e({type:`sessions_error`,requestId:t,code:`not_available`,message:`Session listing is not available on this host.`});return}try{e({type:`sessions`,requestId:t,listing:n.listSessions()})}catch(n){e({type:`sessions_error`,requestId:t,code:`list_failed`,message:B(n instanceof Error?n:String(n))})}}function B(e){return e instanceof Error?e.message:String(e)}function We(e,t,n){if(!n){e({type:`session_rename_failed`,requestId:t.requestId,message:`Sessions cannot be renamed on this host.`});return}n.renameSession(t.sessionId,t.name).then(()=>e({type:`session_renamed_in_list`,requestId:t.requestId,sessionId:t.sessionId,name:t.name}),n=>e({type:`session_rename_failed`,requestId:t.requestId,message:B(n)}))}function Ge(t,n,r){if(!r){t({type:`session_delete_failed`,requestId:n.requestId,code:`not_available`,message:`Sessions cannot be deleted on this host.`});return}r.deleteSession(n.sessionId).then(()=>t({type:`session_deleted`,requestId:n.requestId,sessionId:n.sessionId}),r=>t({type:`session_delete_failed`,requestId:n.requestId,code:(0,e.isSessionDeleteRefusal)(r)?r.code:`failed`,message:B(r)}))}const V=new WeakMap;function Ke(e){let t=V.get(e);t===void 0&&(t={frames:new Map,holders:0},V.set(e,t));let n=t;n.holders+=1;let r=!1;return{record:e=>{r||n.frames.set(e.event.id,e)},forget:e=>{n.frames.delete(e)},clear:()=>{n.frames.clear()},release:()=>{r||(r=!0,--n.holders,n.holders===0&&V.get(e)===n&&V.delete(e))}}}function qe(e){return[...V.get(e)?.frames.values()??[]]}function Je(e){let t=[],n=new Set,r=[e];for(let e=0;e<=8&&r.length>0;e++){let e=[];for(let i of r)if(!(i==null||n.has(i))&&(n.add(i),t.push(i),typeof i==`object`)){let t=i;e.push(t.originalError,t.cause)}r=e}return t}function Ye(e){let n;for(let r of Je(e)){if(r instanceof t.AuthenticationError)return{code:`auth`,...r.provider!==void 0&&{provider:r.provider}};if(r instanceof t.RateLimitError)return{code:`rate_limit`,...r.provider!==void 0&&{provider:r.provider},...r.retryAfter!==void 0&&{retryAfterSeconds:r.retryAfter}};if(r instanceof t.ModelNotAvailableError)return{code:`model_unavailable`,provider:r.provider,...r.model!==void 0&&{model:r.model}};if(r instanceof t.NetworkError)return{code:`network`,...r.provider!==void 0&&{provider:r.provider}};n===void 0&&r instanceof t.ProviderError&&(n={code:`provider`,provider:r.provider})}return n??{}}const Xe={text_delta:`forwarded`,tool_start:`forwarded`,tool_end:`forwarded`,thinking:`forwarded`,thinking_delta:`non-surface`,complete:`forwarded`,error:`forwarded`,context_update:`forwarded`,compact:`forwarded`,interrupted:`forwarded`,skill_activation:`forwarded`,background_task_event:`forwarded`,background_job_group_event:`forwarded`,execution_workspace_event:`forwarded`,user_message:`forwarded`,turn_source:`forwarded`,context_file_refreshed:`forwarded`,memory_event:`forwarded`,goal_event:`non-surface`,plan_event:`forwarded`,branch_event:`forwarded`,permission_request:`forwarded`,ask_request:`forwarded`,prompt_resolved:`forwarded`,ui_intent:`requester-routed`,session_renamed:`forwarded`,history_cleared:`forwarded`,session_switched:`forwarded`,status_changed:`forwarded`};function Ze(e,t,n={}){let r=()=>{let t=e.getActiveDriverId();return t?{driverId:t}:{}},i=e=>t({type:`user_message`,content:e,...r()}),a=e=>t({type:`text_delta`,delta:e,...r()}),o=e=>t({type:`tool_start`,state:e,...r()}),s=e=>t({type:`tool_end`,state:e,...r()}),c=e=>t({type:`thinking`,isThinking:e,...r()}),l=e=>t({type:`complete`,result:H(e),...r()}),u=e=>t({type:`interrupted`,result:H(e),...r()}),d=e=>t({type:`error`,message:e.message,...Ye(e),...r()}),f=e=>t({type:`background_task_event`,event:e}),p=e=>t({type:`background_job_group_event`,event:e}),m=e=>t({type:`execution_workspace_event`,snapshot:e.snapshot}),h=e=>t({type:`plan_event`,event:e}),g=e=>t({type:`context_file_refreshed`,event:e}),_=e=>t({type:`branch_event`,event:e}),v=n.receivePrompts??!0,y=v?Ke(e):void 0,b=e=>{let n={type:`permission_request`,event:e};y?.record(n),t(n)},x=e=>{let n={type:`ask_request`,event:e};y?.record(n),t(n)},S=e=>{y?.forget(e.id),t({type:`prompt_resolved`,event:e})},C=e=>{(e.requesterDriverId===void 0||e.requesterDriverId===n.getSurfaceDriverId?.())&&t({type:`ui_intent`,event:e})},w=e=>t({type:`session_renamed`,event:e}),T=()=>t({type:`history_cleared`}),E=e=>{y?.clear(),t({type:`session_switched`,event:e})},D=e=>t({type:`context`,state:e}),O=()=>t({type:`history_changed`}),k=e=>t({type:`history_changed`,compact:{trigger:e.trigger,beforeUsedPercentage:e.before.usedPercentage,afterUsedPercentage:e.after.usedPercentage}}),A=e=>t({type:`turn_source`,source:e}),j=e=>t({type:`session_status`,status:e});return e.on(`user_message`,i),e.on(`text_delta`,a),e.on(`tool_start`,o),e.on(`tool_end`,s),e.on(`thinking`,c),e.on(`complete`,l),e.on(`interrupted`,u),e.on(`error`,d),e.on(`background_task_event`,f),e.on(`background_job_group_event`,p),e.on(`execution_workspace_event`,m),e.on(`plan_event`,h),e.on(`context_file_refreshed`,g),e.on(`branch_event`,_),v&&(e.on(`permission_request`,b),e.on(`ask_request`,x)),e.on(`prompt_resolved`,S),e.on(`ui_intent`,C),e.on(`session_renamed`,w),e.on(`history_cleared`,T),e.on(`session_switched`,E),e.on(`context_update`,D),e.on(`compact`,k),e.on(`skill_activation`,O),e.on(`memory_event`,O),e.on(`turn_source`,A),e.on(`status_changed`,j),()=>{e.off(`user_message`,i),e.off(`text_delta`,a),e.off(`tool_start`,o),e.off(`tool_end`,s),e.off(`thinking`,c),e.off(`complete`,l),e.off(`interrupted`,u),e.off(`error`,d),e.off(`background_task_event`,f),e.off(`background_job_group_event`,p),e.off(`execution_workspace_event`,m),e.off(`plan_event`,h),e.off(`context_file_refreshed`,g),e.off(`branch_event`,_),v&&(e.off(`permission_request`,b),e.off(`ask_request`,x)),e.off(`prompt_resolved`,S),e.off(`ui_intent`,C),e.off(`session_renamed`,w),e.off(`history_cleared`,T),e.off(`session_switched`,E),e.off(`context_update`,D),e.off(`compact`,k),e.off(`skill_activation`,O),e.off(`memory_event`,O),e.off(`turn_source`,A),e.off(`status_changed`,j),y?.release()}}function H(e){let{history:t,...n}=e;return n}const Qe=new TextEncoder;function $e(e){return e.type===`get-messages`||e.type===`get-history`||e.type===`get-prompts`||e.type===`get-context`||e.type===`get-commands`||e.type===`get-status`||e.type===`list-models`||e.type===`get-agent-definitions`||e.type===`get-executing`||e.type===`get-pending`||e.type===`get-execution-workspace`||e.type===`read-execution-detail`}function et(e,t,n){if(n.type===`get-messages`)t({type:`messages`,messages:e.getMessages(),display:e.getMessagesDisplay()});else if(n.type===`get-history`)t(nt(e,n.fromIndex??0));else if(n.type===`get-prompts`)for(let n of qe(e))t(n);else if(n.type===`get-context`)t({type:`context`,state:e.getContextState()});else if(n.type===`get-commands`)t({type:`commands`,commands:e.listCommands(),skills:e.listSkills()});else if(n.type===`get-status`)t({type:`session_status`,status:e.getStatusSnapshot()});else if(n.type===`list-models`){let r=e.listModels();t({type:`model_list`,requestId:n.requestId,...r})}else n.type===`get-agent-definitions`?t({type:`agent_definitions`,requestId:n.requestId,agents:e.listAgentDefinitions(),current:e.getDefaultAgentType()}):n.type===`get-executing`?t({type:`executing`,executing:e.isExecuting()}):n.type===`get-execution-workspace`?t({type:`execution_workspace_event`,snapshot:e.getExecutionWorkspaceSnapshot()}):n.type===`read-execution-detail`?tt(e,t,n):t(U(e))}function tt(e,t,n){let{requestId:r}=n;e.readExecutionWorkspaceDetail(n.entryId,n.cursor).then(e=>t({type:`execution_detail`,requestId:r,page:e}),e=>t({type:`execution_detail_error`,requestId:r,message:e instanceof Error?e.message:String(e)}))}function U(e){return{type:`pending`,pending:e.getPendingPrompt(),pendingCount:e.getPendingCount()}}function nt(e,t){let n=e.getFullHistory(),r=n.length,i=Math.min(t,r),a=[],o=0;for(let e=i;e<r;e+=1){let t=rt(n[e]),r=Qe.encode(JSON.stringify(t)).byteLength;if(a.length>0&&o+r>262144)break;a.push(t),o+=r}return{type:`history`,startIndex:i,total:r,entries:a}}function rt(e){return{...e,timestamp:it(e.timestamp)}}function it(e){return typeof e==`string`?e:e.toISOString()}function W(e){return e.type===`get-settings`||e.type===`update-settings`}function G(e,t,n,r,i){if(!r){K(t,n.requestId,`not_available`,`Settings are not available on this host.`);return}try{if(n.type===`get-settings`){Promise.resolve(r.getSettings(e,i)).then(e=>t({type:`settings`,requestId:n.requestId,settings:e}),e=>K(t,n.requestId,`update_failed`,q(e)));return}Promise.resolve(r.updateSettings(e,n.patch,i)).then(e=>{e.ok?t({type:`settings`,requestId:n.requestId,settings:e.settings}):K(t,n.requestId,e.code,e.message)},e=>K(t,n.requestId,`update_failed`,q(e)))}catch(e){K(t,n.requestId,`update_failed`,q(e instanceof Error?e:String(e)))}}function K(e,t,n,r){e({type:`settings_error`,requestId:t,code:n,message:r})}function q(e){return e instanceof Error?e.message:String(e)}function at(e){let t=e.role??`drive`,n=Ze(e.session,e.deliver,{getSurfaceDriverId:()=>e.driverId,receivePrompts:t===`drive`}),r=new AbortController,i=()=>{r.abort(),n()};return{onMessage:ot(e.session,e.deliver,e.driverId,{personalUsageReporter:e.personalUsageReporter,usageReporter:e.usageReporter,storedSessionUsageReporter:e.storedSessionUsageReporter},e.surface,t,e.sessionDirectory,e.settingsReporter,e.commandSurfaceLocality,{signal:r.signal,...e.maxFrameBytes===void 0?{}:{maxFrameBytes:e.maxFrameBytes}}),cleanup:i}}function ot(e,t,n,r=st,i,a=`drive`,o,s,c,l){return u=>{let d=Pe(u,t);if(d){if(a===`observe`&&!Ie(d.type)){t({type:`protocol_error`,message:`Not permitted for an observer: ${d.type}`});return}ct(e,t,d,n,r,i,o,s,c,l)}}}const st={personalUsageReporter:void 0,usageReporter:void 0,storedSessionUsageReporter:void 0};function ct(e,t,n,r,i=st,a,o,s,c,l){if(Ae(e,t,n,i))return;if(ze(n)){He(t,n,o);return}if(W(n)){G(e,t,n,s,c);return}if(Be(n)){We(t,n,o);return}if(Ve(n)){Ge(t,n,o);return}if(lt(n)){mt(e,t,n,r,a,c);return}if(we(n)){Te(e,t,n);return}if($e(n)){et(e,t,n);return}if(Le(n)){Re(e,t,n);return}if(de(n)){he(e,t,n,r,l);return}if(fe(n)){ge(e,t,n,l);return}if(ut(n)){_e(e,t,n);return}if(dt(n)){ve(e,t,n);return}if(ft(n)){pt(e,n,r);return}let u=n.type;t({type:`protocol_error`,message:`Unknown message type: ${u}`})}function lt(e){return e.type===`submit`||e.type===`command`||e.type===`abort`||e.type===`cancel-queue`}function ut(e){return e.type===`get-background-tasks`||e.type===`get-background-task`||e.type===`read-background-task-log`||e.type===`get-background-job-groups`||e.type===`get-background-job-group`||e.type===`wait-background-job-group`}function dt(e){return e.type===`cancel-background-task`||e.type===`close-background-task`||e.type===`send-background-task`}function ft(e){return e.type===`permission-response`||e.type===`ask-response`}function pt(e,t,n){t.type===`permission-response`?e.resolvePermission(t.id,t.result,n):e.resolveAsk(t.id,t.response,n)}function mt(e,t,n,r,i,a){if(n.type===`submit`){if(typeof n.prompt!=`string`||n.prompt.length===0){t({type:`protocol_error`,message:`prompt must be a non-empty string`});return}let a={...r?{driverId:r}:{},...i?{surface:i}:{}};e.submit(n.prompt,void 0,void 0,Object.keys(a).length>0?a:void 0).then(()=>t(U(e)),e=>t({type:`protocol_error`,message:e.message}))}else if(n.type===`command`){let i=n.requestId===void 0?{}:{requestId:n.requestId};if(!n.name){t({type:`protocol_error`,message:`name is required`,...i});return}e.executeCommand(n.name,n.args??``,`remote`,r,a).then(e=>{t({type:`command_result`,name:n.name,message:e?.message??`Unknown command: ${n.name}`,success:e?.success??!1,data:e?.data,...i})},e=>{t({type:`protocol_error`,message:e.message,...i})})}else n.type===`abort`?e.abort():e.cancelQueue()}const J=8*1048576;function ht(e,t=J){return e!==void 0&&e>t}const gt=120*1e3;function _t(e=gt,t=Date.now){let n;return{maxPendingMs:e,observe(r){if(r===void 0)return;if(r===0){n=void 0;return}let i=t();n??=i;let a=i-n;return a>e?a:void 0}}}function Y(e,t,n,r=J,i=_t()){let a=!1,o=t=>{if(a)return;let o=n?.();if(ht(o,r)){a=!0,s(Error(`outbound backpressure budget exceeded: ${o} byte(s) pending, limit ${r}. The peer has accepted frames it is not reading.`),t.type);return}let c=i.observe(o);if(c!==void 0){a=!0,s(Error(`outbound drain budget exceeded: ${o} byte(s) pending for ${c} ms, limit ${i.maxPendingMs} ms. The peer is reading too slowly to ever drain what it accepted.`),t.type);return}try{e(t)}catch(e){a=!0,s(e instanceof Error?e:Error(String(e)),t.type)}};function s(e,n){try{t(e,n)}catch{}}return Object.assign(o,{pendingBytes:()=>n?.()})}var vt=class{frames=[];sizes=[];nextSeq=1;bytes=0;maxFrames;maxBytes;sizeOf;constructor(e={}){this.maxFrames=e.maxFrames??512,this.maxBytes=e.maxBytes??4194304,this.sizeOf=e.sizeOf??(e=>JSON.stringify(e).length)}append(e){let t=this.nextSeq;this.nextSeq+=1;let n=this.sizeOf(e);return this.frames.push({seq:t,message:e}),this.sizes.push(n),this.bytes+=n,this.evict(),t}ackThrough(e){let t=0;for(;t<this.frames.length&&this.frames[t].seq<=e;)t+=1;this.removeOldest(t)}tailAfter(e){return this.frames.length===0?e>=this.nextSeq-1?{kind:`tail`,frames:[]}:{kind:`overrun`}:e<this.frames[0].seq-1?{kind:`overrun`}:{kind:`tail`,frames:this.frames.filter(t=>t.seq>e)}}get lastSeq(){return this.nextSeq-1}get size(){return this.frames.length}evict(){let e=0,t=this.bytes;for(;this.frames.length-e>this.maxFrames||t>this.maxBytes&&this.frames.length-e>1;)t-=this.sizes[e],e+=1;this.removeOldest(e)}removeOldest(e){if(!(e<=0)){for(let t=0;t<e;t+=1)this.bytes-=this.sizes[t]??0;this.frames.splice(0,e),this.sizes.splice(0,e),this.frames.length===0&&(this.bytes=0)}}};const X=new TextEncoder,yt=new TextDecoder,Z=X.encode(`RBF`),bt=4294967295;function xt(e,t){let n=X.encode(e);if(n.byteLength===0||n.byteLength>255)throw Error(`channel name must be 1..255 UTF-8 bytes (got ${n.byteLength})`);if(!Number.isInteger(t)||t<0||t>bt)throw Error(`seq must be an integer in 0..${bt} (got ${t})`);return n}function Q(e,t,n,r){e.set(Z,0),e[3]=1,e[4]=t,e[5]=n.byteLength,e.set(n,6);let i=6+n.byteLength;return new DataView(e.buffer,e.byteOffset,e.byteLength).setUint32(i,r,!1),i+4}function St(e){let t=xt(e.channel,e.seq),n=new Uint8Array(6+t.byteLength+4+e.payload.byteLength),r=Q(n,1,t,e.seq);return n.set(e.payload,r),n}function Ct(e){let t=xt(e.channel,e.seq),n=X.encode(JSON.stringify({event:e.event,payload:e.payload})),r=new Uint8Array(6+t.byteLength+4+n.byteLength),i=Q(r,2,t,e.seq);return r.set(n,i),r}function wt(e){return e.byteLength<Z.length?!1:Z.every((t,n)=>e[n]===t)}function Tt(e){let t=yt.decode(e),n;try{n=JSON.parse(t)}catch{return{ok:!1,error:`channel frame: malformed JSON body`}}if(typeof n!=`object`||!n||Array.isArray(n))return{ok:!1,error:`channel frame: event body must be a JSON object`};let{event:r,payload:i}=n;return typeof r!=`string`||r.length===0?{ok:!1,error:"channel frame: event body is missing a non-empty `event` name"}:{ok:!0,event:r,payload:i??null}}function Et(e){if(!wt(e))return{ok:!1,error:`channel frame: bad magic (not a channel frame)`};if(e.byteLength<6)return{ok:!1,error:`channel frame: truncated header`};if(e[3]!==1)return{ok:!1,error:`channel frame: unsupported version ${String(e[3])}`};let t=e[4],n=e[5]??0;if(n===0)return{ok:!1,error:`channel frame: empty channel name`};let r=6+n,i=r+4;if(e.byteLength<i)return{ok:!1,error:`channel frame: truncated (header longer than the frame)`};let a=yt.decode(e.subarray(6,r)),o=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint32(r,!1),s=e.subarray(i);if(t===1)return{ok:!0,frame:{kind:`binary`,channel:a,seq:o,payload:Uint8Array.from(s)}};if(t===2){let e=Tt(s);return e.ok?{ok:!0,frame:{kind:`event`,channel:a,seq:o,event:e.event,payload:e.payload}}:{ok:!1,error:e.error}}return{ok:!1,error:`channel frame: unknown kind ${String(t)}`}}var Dt=class{session;buffer;driverId;reporters;surface;commandSurfaceLocality;maxFrameBytes;lifetime=new AbortController;unsubscribe;onDeliveryError;outbound;emitBoundary;disposed=!1;holding=!1;constructor(e){this.session=e.session,this.buffer=new vt(e.buffer),this.driverId=e.driverId,this.surface=e.surface,this.commandSurfaceLocality=e.commandSurfaceLocality,this.maxFrameBytes=e.maxFrameBytes,this.reporters={personalUsageReporter:e.personalUsageReporter,usageReporter:e.usageReporter,storedSessionUsageReporter:e.storedSessionUsageReporter},this.emitBoundary=Y(e=>this.emit(e),(e,t)=>this.reportDeliveryError(e,t)),this.unsubscribe=Ze(this.session,this.emitBoundary,{getSurfaceDriverId:()=>this.driverId})}attach(e,t){this.disposed||(this.onDeliveryError=t.onDeliveryError,this.outbound=Y(t=>e(JSON.stringify(t)),(e,t)=>this.reportDeliveryError(e,t),t.pendingBytes),this.holding=t.awaitResume===!0)}detach(){this.outbound=void 0,this.onDeliveryError=void 0}setDriverId(e){this.driverId=e}onClientMessage(e){if(this.disposed)return;let t=Pe(e,this.emitBoundary);if(t){if(t.type===`resume`){this.replay(t.lastSeq);return}if(t.type===`ack`){this.buffer.ackThrough(t.seq);return}ct(this.session,this.emitBoundary,t,this.driverId,this.reporters,this.surface,void 0,void 0,this.commandSurfaceLocality,{signal:this.lifetime.signal,...this.maxFrameBytes===void 0?{}:{maxFrameBytes:this.maxFrameBytes}})}}dispose(){this.disposed||(this.disposed=!0,this.lifetime.abort(),this.detach(),this.unsubscribe())}get lastSeq(){return this.buffer.lastSeq}emit(e){if(this.disposed)return;let t=this.buffer.append(e);this.holding||this.deliverFrame({...e,seq:t})}replay(e){let t=this.buffer.tailAfter(e);if(t.kind===`overrun`){this.deliverFrame({type:`resume_gap`}),this.holding=!1;return}for(let e of t.frames)this.deliverFrame({...e.message,seq:e.seq});this.holding=!1}deliverFrame(e){this.outbound?.(e)}reportDeliveryError(e,t){let n=this.onDeliveryError;this.detach();try{n?.(e,t)}catch{}}};function Ot(){return{origins:new Map}}function kt(e,t,n){let r=t.origin.sessionId,i=e.origins.get(r);i===void 0&&(i={highestSequence:0,delivered:new Set,issued:new Map},e.origins.set(r,i));let a=i.issued.get(t.id);if(a!==void 0)return{ack:{...a,state:`duplicate`},deliver:!1};if(n!==void 0){let e={id:t.id,sequence:t.sequence,state:n.state,reason:n.reason};return i.issued.set(t.id,e),{ack:e,deliver:!1}}if(i.delivered.has(t.sequence)){let e={id:t.id,sequence:t.sequence,state:`refused`,reason:`sequence ${t.sequence} was already delivered by this origin under a different message id. A retry must repeat its id; a new id on a delivered sequence cannot be ordered against what the receiver already has.`};return i.issued.set(t.id,e),{ack:e,deliver:!1}}let o=i.highestSequence+1,s=t.sequence>o?o:void 0,c={id:t.id,sequence:t.sequence,state:`delivered`};return i.issued.set(t.id,c),i.delivered.add(t.sequence),i.highestSequence=Math.max(i.highestSequence,t.sequence),s===void 0?{ack:c,deliver:!0}:{ack:c,deliver:!0,gapBefore:s}}function At(e,t,n){let r=e.origins.get(t),i=r?.issued.get(n);if(r===void 0||i===void 0||i.state!==`delivered`)return;let a={...i,state:`acknowledged`};return r.issued.set(n,a),a}function jt(e,t){e.origins.delete(t)}const Mt=[`command`,`filePath`,`file_path`,`path`,`url`,`pattern`,`query`];function Nt(e){for(let t of Mt){let n=e[t];if(typeof n==`string`&&n!==``)return n}}const $=16*1024,Pt=32768;function Ft(e){let t=``;for(let n=0;n<e.length;n+=Pt)t+=String.fromCharCode(...e.subarray(n,n+Pt));return btoa(t)}function It(e){let t;try{t=atob(e)}catch{return}let n=new Uint8Array(t.length);for(let e=0;e<t.length;e+=1)n[e]=t.charCodeAt(e);return n}function Lt(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function Rt(e,t,n=$){if(!Number.isInteger(n)||n<1)throw Error(`handoff chunking: maxChunkBytes must be a positive integer, got ${n}. A zero or negative budget produces an infinite sequence of empty chunks, which presents as a hang rather than as the configuration error it is.`);let r=new TextEncoder().encode(t),i=Math.max(1,Math.ceil(r.byteLength/n)),a=[];for(let t=0;t<i;t+=1){let o=r.subarray(t*n,(t+1)*n);a.push({handoffId:e,index:t,total:i,data:Ft(o)})}return a}var zt=class{handoffId;chunks=new Map;declaredTotal;constructor(e){this.handoffId=e}get received(){return this.chunks.size}get expected(){return this.declaredTotal}accept(e){let t=e=>({outcome:`refused`,rejection:e,received:this.chunks.size,...this.declaredTotal===void 0?{}:{expected:this.declaredTotal}});if(e.handoffId!==this.handoffId)return t(`wrong-handoff`);if(!Number.isInteger(e.total)||e.total<1||this.declaredTotal!==void 0&&e.total!==this.declaredTotal)return t(`inconsistent-total`);if(!Number.isInteger(e.index)||e.index<0||e.index>=e.total)return t(`out-of-range`);let n=It(e.data);if(n===void 0||Ft(n)!==e.data)return t(`undecodable`);this.declaredTotal=e.total;let r=this.chunks.get(e.index);return r===void 0?(this.chunks.set(e.index,n),this.chunks.size<e.total?{outcome:`accepted`,received:this.chunks.size,expected:e.total}:{outcome:`complete`,serialized:this.reassemble(e.total),received:this.chunks.size,expected:e.total}):Lt(r,n)?{outcome:`duplicate`,received:this.chunks.size,expected:e.total}:t(`inconsistent-total`)}missing(){if(this.declaredTotal===void 0)return[];let e=[];for(let t=0;t<this.declaredTotal;t+=1)this.chunks.has(t)||e.push(t);return e}discard(){this.chunks.clear(),this.declaredTotal=void 0}reassemble(e){let t=[];for(let n=0;n<e;n+=1){let r=this.chunks.get(n);if(r===void 0)throw Error(`handoff chunking: chunk ${n} of ${e} is missing at reassembly.`);t.push(r)}let n=new Uint8Array(t.reduce((e,t)=>e+t.length,0)),r=0;for(let e of t)n.set(e,r),r+=e.length;return new TextDecoder(`utf-8`,{ignoreBOM:!0}).decode(n)}};function Bt(e,t=$){return Math.max(1,Math.ceil(e.byteLength/t))}exports.ATTACHED_SURFACE_MAX_PENDING_BYTES=1048576,exports.CHANNEL_FRAME_MAGIC=Z,exports.CHANNEL_FRAME_VERSION=1,exports.DEFAULT_MAX_CHUNK_BYTES=$,exports.DEFAULT_MAX_PENDING_BYTES=J,exports.DEFAULT_MAX_PENDING_MS=gt,exports.HISTORY_PAGE_MAX_BYTES=262144,exports.HandoffChunkAssembler=zt,exports.MAX_INBOUND_FRAME_BYTES=4194304,exports.PROTOCOL_SESSION_EVENT_CLASSIFICATION=Xe,exports.ResumeBuffer=vt,exports.SessionResumeBridge=Dt,exports.acknowledgePeerMessage=At,exports.admitPeerMessage=kt,exports.chunkCountFor=Bt,exports.chunkHandoffPayload=Rt,exports.createOutboundDelivery=Y,exports.createPeerMessageLedger=Ot,exports.createPendingStallClock=_t,exports.createSessionMessageHandler=at,exports.decodeChannelFrame=Et,exports.decodeClientMessage=N,exports.decodeFrame=P,exports.decodeServerMessage=ue,exports.encodeBinaryFrame=St,exports.encodeChannelEventFrame=Ct,exports.forgetPeerOrigin=jt,exports.handleSettingsMessage=G,exports.isChannelFrame=wt,exports.isObserverMessageType=Ie,exports.isOverPendingBudget=ht,exports.isSettingsMessage=W,exports.permissionSummaryArgument=Nt;
|