@agimon-ai/doompi-computer-use 0.0.1-alpha.2 → 0.0.1-alpha.8
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/README.md +6 -3
- package/dist/adapters/computerUseApi.cjs +1 -1
- package/dist/adapters/computerUseApi.cjs.map +1 -1
- package/dist/adapters/computerUseApi.d.cts +9 -5
- package/dist/adapters/computerUseApi.d.cts.map +1 -1
- package/dist/adapters/computerUseApi.d.mts +9 -5
- package/dist/adapters/computerUseApi.d.mts.map +1 -1
- package/dist/adapters/computerUseApi.mjs +1 -1
- package/dist/adapters/computerUseApi.mjs.map +1 -1
- package/dist/adapters/pi/computerScriptRunner.cjs +45 -0
- package/dist/adapters/pi/computerScriptRunner.cjs.map +1 -0
- package/dist/adapters/pi/computerScriptRunner.d.cts +12 -0
- package/dist/adapters/pi/computerScriptRunner.d.cts.map +1 -0
- package/dist/adapters/pi/computerScriptRunner.d.mts +12 -0
- package/dist/adapters/pi/computerScriptRunner.d.mts.map +1 -0
- package/dist/adapters/pi/computerScriptRunner.mjs +45 -0
- package/dist/adapters/pi/computerScriptRunner.mjs.map +1 -0
- package/dist/adapters/pi/extension.cjs +2 -2
- package/dist/adapters/pi/extension.cjs.map +1 -1
- package/dist/adapters/pi/extension.d.cts +4 -4
- package/dist/adapters/pi/extension.d.cts.map +1 -1
- package/dist/adapters/pi/extension.d.mts +4 -4
- package/dist/adapters/pi/extension.d.mts.map +1 -1
- package/dist/adapters/pi/extension.mjs +2 -2
- package/dist/adapters/pi/extension.mjs.map +1 -1
- package/dist/adapters/pi/sessionApiClient.d.cts +3 -4
- package/dist/adapters/pi/sessionApiClient.d.cts.map +1 -1
- package/dist/adapters/pi/sessionApiClient.d.mts +3 -4
- package/dist/adapters/pi/sessionApiClient.d.mts.map +1 -1
- package/dist/adapters/webComputerUseChannel.cjs +1 -1
- package/dist/adapters/webComputerUseChannel.cjs.map +1 -1
- package/dist/adapters/webComputerUseChannel.d.cts +3 -3
- package/dist/adapters/webComputerUseChannel.d.cts.map +1 -1
- package/dist/adapters/webComputerUseChannel.d.mts +3 -3
- package/dist/adapters/webComputerUseChannel.d.mts.map +1 -1
- package/dist/adapters/webComputerUseChannel.mjs +1 -1
- package/dist/adapters/webComputerUseChannel.mjs.map +1 -1
- package/dist/container/index.cjs +1 -1
- package/dist/container/index.cjs.map +1 -1
- package/dist/container/index.d.cts +2 -2
- package/dist/container/index.d.cts.map +1 -1
- package/dist/container/index.d.mts +2 -2
- package/dist/container/index.d.mts.map +1 -1
- package/dist/container/index.mjs +1 -1
- package/dist/container/index.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +4 -2
- package/dist/index.d.mts +4 -2
- package/dist/index.mjs +1 -1
- package/dist/services/extensionService.d.cts +1 -2
- package/dist/services/extensionService.d.cts.map +1 -1
- package/dist/services/extensionService.d.mts +1 -2
- package/dist/services/extensionService.d.mts.map +1 -1
- package/dist/services/sessionController.d.cts +2 -3
- package/dist/services/sessionController.d.cts.map +1 -1
- package/dist/services/sessionController.d.mts +2 -3
- package/dist/services/sessionController.d.mts.map +1 -1
- package/dist/services/traceRedaction.d.cts +3 -4
- package/dist/services/traceRedaction.d.cts.map +1 -1
- package/dist/services/traceRedaction.d.mts +3 -4
- package/dist/services/traceRedaction.d.mts.map +1 -1
- package/dist/types/computerScript.d.cts +38 -0
- package/dist/types/computerScript.d.cts.map +1 -0
- package/dist/types/computerScript.d.mts +38 -0
- package/dist/types/computerScript.d.mts.map +1 -0
- package/dist/types/computerUse.d.cts +14 -14
- package/dist/types/computerUse.d.cts.map +1 -1
- package/dist/types/computerUse.d.mts +14 -14
- package/dist/types/computerUse.d.mts.map +1 -1
- package/dist/types/computerUseApi.cjs.map +1 -1
- package/dist/types/computerUseApi.d.cts +22 -19
- package/dist/types/computerUseApi.d.cts.map +1 -1
- package/dist/types/computerUseApi.d.mts +22 -19
- package/dist/types/computerUseApi.d.mts.map +1 -1
- package/dist/types/computerUseApi.mjs.map +1 -1
- package/dist/types/extension.d.cts +7 -5
- package/dist/types/extension.d.cts.map +1 -1
- package/dist/types/extension.d.mts +7 -5
- package/dist/types/extension.d.mts.map +1 -1
- package/docs/computer-scripts.md +37 -0
- package/llms.txt +1 -0
- package/package.json +14 -12
- package/src/prompts/doompi-use-computer-use/SKILL.md +1 -1
- package/src/types/computerUse.ts +3 -2
- package/src/types/computerUseApi.ts +1 -0
- package/src/web/{ComputerActionToolCard.tsx → components/ComputerActionToolCard.tsx} +1 -1
- package/src/web/components/ComputerExecToolCard.tsx +44 -0
- package/src/web/{ComputerStateToolCard.tsx → components/ComputerStateToolCard.tsx} +1 -1
- package/src/web/{ComputerUsePanel.tsx → components/ComputerUsePanel.tsx} +14 -5
- package/src/web/index.ts +12 -6
- package/src/web/lib/computerExecToolRender.ts +14 -0
- package/src/web/lib/computerUseSettings.ts +17 -0
- package/src/web/{computerUseStore.ts → stores/computerUseStore.ts} +2 -2
- /package/src/web/{computerActionToolRender.ts → lib/computerActionToolRender.ts} +0 -0
- /package/src/web/{computerStateToolRender.ts → lib/computerStateToolRender.ts} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{API_BASE_PATH as e,COMPUTER_USE_ROUTES as t,computerUseChannelType as n}from"../types/computerUseApi.mjs";import{MissingComputerUseApiError as r,computerUseSessionApiError as i,missingComputerUseApiRetryAt as a}from"./webComputerUseAvailability.mjs";function
|
|
1
|
+
import{API_BASE_PATH as e,COMPUTER_USE_ROUTES as t,computerUseChannelType as n}from"../types/computerUseApi.mjs";import{MissingComputerUseApiError as r,computerUseSessionApiError as i,missingComputerUseApiRetryAt as a}from"./webComputerUseAvailability.mjs";import{randomUUID as o}from"node:crypto";function s(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function c(e){let t=s(e);return t?.action===`status`||t?.action===`targets`||t?.action===`stop`||t?.action===`artifacts`?{action:t.action}:void 0}async function l(e){let t=await e.json();if(!e.ok)throw i(e.status,t);return t}function u(i={}){let u;return{frameType:n,lifecycle:`hub`,start(n){let d=new Map,f=new Map,p=new Map,m=new Map,h=new Set,g=new Map,_,v=!1,y=async(t,r,i=`GET`,a)=>n.requestSessionApi(t,{basePath:e,path:r,method:i,...a===void 0?{}:{body:JSON.stringify(a)}}),b=(e,t)=>{let r={state:t,targets:p.get(e.sessionId)??[],..._!==void 0&&_!==e.sessionId?{busy:!0}:{}};f.set(e.sessionId,r),n.publish(e.sessionId,r)},x=async e=>{let n=await l(await y(e,t.hubState));if(n.phase===`active`||n.phase===`activating`||n.phase===`stopping`){if(_=e.sessionId,n.phase===`active`&&!m.has(e.sessionId)){let n=await l(await y(e,t.hubAuthorization));n!==null&&m.set(e.sessionId,n.grantId)}}else _===e.sessionId&&(_=void 0),m.delete(e.sessionId);return g.delete(e.sessionId),b(e,n),n},S=async(e,r)=>{if(!n.computerUse?.available)throw Error(`DoomPi Desktop computer use is unavailable.`);try{let i=await n.computerUse.request(e,{operation:r.operation,payload:r.operation===`act`?{grantId:r.grantId,sequence:r.sequence,action:r.payload}:{grantId:r.grantId}});await l(await y(e,t.hubComplete,`POST`,{id:r.id,result:i}))}catch(n){await l(await y(e,t.hubComplete,`POST`,{id:r.id,error:n instanceof Error?n.message:String(n)}))}},C=async e=>{let r=await l(await y(e,t.hubAuthorization)),i;if(r!==null&&n.computerUse?.available)try{i=await n.computerUse.request(e,{operation:`stop`,payload:{grantId:r.grantId}})}catch(e){let t=e instanceof Error?e.message:String(e);i={artifactId:o(),status:`failed`,failure:{code:`recording_failed`,message:t.slice(0,512)}},n.onNotice(`computer-use Desktop stop was already unavailable (${t})`)}await l(await y(e,t.hubStop,`POST`,{artifact:i})),m.delete(e.sessionId),_===e.sessionId&&(_=void 0)},w=async e=>{if(!(v||h.has(e.sessionId))&&!((g.get(e.sessionId)??0)>Date.now())){h.add(e.sessionId);try{let r=await x(e);if(r.phase===`active`){let t=typeof r.expiresAt==`number`&&r.expiresAt<=Date.now(),i=!1;if(!t&&n.computerUse?.available)try{i=s(await n.computerUse.request(e,{operation:`status`}))?.ownedBySession===!0}catch{i=!0}if(t||!i){await C(e),await x(e);return}}if(r.phase===`awaiting_confirmation`&&(_===void 0||_===e.sessionId)){if(!n.computerUse?.available)throw Error(`DoomPi Desktop computer use is unavailable.`);let r=await l(await y(e,t.hubActivation));if(r!==null){_=e.sessionId;try{let i=await n.computerUse.request(e,{operation:`activate`,payload:r});await l(await y(e,t.hubStop,`POST`,{host:i}));let a=s(i)?.grantId;typeof a==`string`&&m.set(e.sessionId,a)}catch(n){_=void 0,await l(await y(e,t.hubStop,`POST`,{error:n instanceof Error?n.message:String(n)}))}await x(e)}}r.phase===`stopping`&&(await C(e),await x(e));let i=await l(await y(e,t.hubNext));i!==null&&await S(e,i)}catch(t){t instanceof r?(g.set(e.sessionId,a(Date.now())),f.delete(e.sessionId)):n.onNotice(`computer-use poll failed for ${e.sessionId} (${t instanceof Error?t.message:String(t)})`)}finally{h.delete(e.sessionId)}}};u=(e,t)=>{let i=c(t);i!==void 0&&(g.delete(e.sessionId),(async()=>{try{if(i.action===`targets`){if(!n.computerUse?.available)throw Error(`DoomPi Desktop computer use is unavailable.`);let t=await n.computerUse.request(e,{operation:`targets`});p.set(e.sessionId,Array.isArray(t)?t.filter(e=>s(e)!==void 0):[])}else i.action===`stop`&&await C(e);await x(e)}catch(t){t instanceof r?(g.set(e.sessionId,a(Date.now())),f.delete(e.sessionId)):n.onNotice(`computer-use command failed for ${e.sessionId} (${t instanceof Error?t.message:String(t)})`)}})())};let T=setInterval(()=>{for(let e of d.values())w(e)},i.pollMs??250);return{payloadFor:e=>f.get(e.sessionId),sessionAdded(e){d.set(e.sessionId,e),w(e)},sessionRemoved(e){let t=d.get(e),r=m.get(e);t!==void 0&&r!==void 0&&n.computerUse?.available&&n.computerUse.request(t,{operation:`stop`,payload:{grantId:r}}).catch(e=>n.onNotice(`computer-use session cleanup failed (${e instanceof Error?e.message:String(e)})`)),d.delete(e),f.delete(e),p.delete(e),m.delete(e),h.delete(e),g.delete(e),_===e&&(_=void 0)},close(){if(v=!0,clearInterval(T),n.computerUse?.available)for(let[e,t]of m){let r=d.get(e);r!==void 0&&n.computerUse.request(r,{operation:`stop`,payload:{grantId:t}}).catch(()=>void 0)}d.clear(),f.clear(),p.clear(),m.clear(),g.clear()}}},receive(e,t){u?.(e,t)}}}const d=[u()];export{n as computerUseChannelType,u as createComputerUseChannel,d as webHubChannels};
|
|
2
2
|
//# sourceMappingURL=webComputerUseChannel.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webComputerUseChannel.mjs","names":[],"sources":["../../src/adapters/webComputerUseChannel.ts"],"sourcesContent":["import type { HubChannelSource, HubSessionScope, WebHubChannel } from '@agimon-ai/doompi-web-contracts';\nimport {\n API_BASE_PATH,\n computerUseChannelType,\n COMPUTER_USE_ROUTES,\n type ComputerUseActivationRequest,\n type ComputerUseBrokerRequest,\n type ComputerUseBrowserCommand,\n type ComputerUseChannelPayload,\n type ComputerUseSessionView,\n} from '../types/computerUseApi.ts';\nimport {\n computerUseSessionApiError,\n MissingComputerUseApiError,\n missingComputerUseApiRetryAt,\n} from './webComputerUseAvailability.ts';\nexport { computerUseChannelType };\n\nconst POLL_MS = 250;\n\nfunction record(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction command(value: unknown): ComputerUseBrowserCommand | undefined {\n const input = record(value);\n return input?.action === 'status' ||\n input?.action === 'targets' ||\n input?.action === 'stop' ||\n input?.action === 'artifacts'\n ? { action: input.action }\n : undefined;\n}\n\nasync function responseJson(response: Response): Promise<unknown> {\n const value = await response.json();\n if (!response.ok) throw computerUseSessionApiError(response.status, value);\n return value;\n}\n\nexport function createComputerUseChannel(options: { pollMs?: number } = {}): WebHubChannel {\n let receiveCommand: ((scope: HubSessionScope, payload: unknown) => void) | undefined;\n return {\n frameType: computerUseChannelType,\n lifecycle: 'hub',\n start(host) {\n const scopes = new Map<string, HubSessionScope>();\n const latest = new Map<string, ComputerUseChannelPayload>();\n const targets = new Map<string, readonly Record<string, unknown>[]>();\n const grants = new Map<string, string>();\n const processing = new Set<string>();\n const unavailableUntil = new Map<string, number>();\n let activeSessionId: string | undefined;\n let closed = false;\n\n const sessionRequest = async (scope: HubSessionScope, path: string, method = 'GET', value?: unknown) =>\n host.requestSessionApi(scope, {\n basePath: API_BASE_PATH,\n path,\n method,\n ...(value === undefined ? {} : { body: JSON.stringify(value) }),\n });\n\n const publish = (scope: HubSessionScope, state: ComputerUseSessionView): void => {\n const payload: ComputerUseChannelPayload = {\n state,\n targets: targets.get(scope.sessionId) ?? [],\n ...(activeSessionId !== undefined && activeSessionId !== scope.sessionId ? { busy: true } : {}),\n };\n latest.set(scope.sessionId, payload);\n host.publish(scope.sessionId, payload);\n };\n\n const refresh = async (scope: HubSessionScope): Promise<ComputerUseSessionView> => {\n const state = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubState),\n )) as ComputerUseSessionView;\n if (state.phase === 'active' || state.phase === 'activating' || state.phase === 'stopping') {\n activeSessionId = scope.sessionId;\n if (state.phase === 'active' && !grants.has(scope.sessionId)) {\n const authorization = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization),\n )) as { grantId: string } | null;\n if (authorization !== null) grants.set(scope.sessionId, authorization.grantId);\n }\n } else {\n if (activeSessionId === scope.sessionId) activeSessionId = undefined;\n grants.delete(scope.sessionId);\n }\n unavailableUntil.delete(scope.sessionId);\n publish(scope, state);\n return state;\n };\n\n const completePending = async (scope: HubSessionScope, pending: ComputerUseBrokerRequest): Promise<void> => {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n try {\n const result = await host.computerUse.request(scope, {\n operation: pending.operation,\n payload:\n pending.operation === 'act'\n ? { grantId: pending.grantId, sequence: pending.sequence, action: pending.payload }\n : { grantId: pending.grantId },\n });\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, 'POST', { id: pending.id, result }),\n );\n } catch (error) {\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, 'POST', {\n id: pending.id,\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n };\n\n const stopSession = async (scope: HubSessionScope): Promise<void> => {\n const authorization = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization),\n )) as { grantId: string } | null;\n let artifact: unknown;\n if (authorization !== null && host.computerUse?.available) {\n try {\n artifact = await host.computerUse.request(scope, {\n operation: 'stop',\n payload: { grantId: authorization.grantId },\n });\n } catch (error) {\n host.onNotice(\n `computer-use Desktop stop was already unavailable (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n }\n await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', { artifact }));\n grants.delete(scope.sessionId);\n if (activeSessionId === scope.sessionId) activeSessionId = undefined;\n };\n const pollScope = async (scope: HubSessionScope): Promise<void> => {\n if (closed || processing.has(scope.sessionId)) return;\n if ((unavailableUntil.get(scope.sessionId) ?? 0) > Date.now()) return;\n processing.add(scope.sessionId);\n try {\n const state = await refresh(scope);\n if (state.phase === 'active') {\n const expired = typeof state.expiresAt === 'number' && state.expiresAt <= Date.now();\n let owned = false;\n if (!expired && host.computerUse?.available) {\n try {\n const hostStatus = record(await host.computerUse.request(scope, { operation: 'status' }));\n owned = hostStatus?.ownedBySession === true;\n } catch {\n owned = true;\n }\n }\n if (expired || !owned) {\n await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST'));\n grants.delete(scope.sessionId);\n if (activeSessionId === scope.sessionId) activeSessionId = undefined;\n await refresh(scope);\n return;\n }\n }\n if (\n state.phase === 'awaiting_confirmation' &&\n (activeSessionId === undefined || activeSessionId === scope.sessionId)\n ) {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n const activation = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubActivation),\n )) as ComputerUseActivationRequest | null;\n if (activation !== null) {\n activeSessionId = scope.sessionId;\n try {\n const hostResult = await host.computerUse.request(scope, {\n operation: 'activate',\n payload: activation,\n });\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', { host: hostResult }),\n );\n const grantId = record(hostResult)?.grantId;\n if (typeof grantId === 'string') grants.set(scope.sessionId, grantId);\n } catch (error) {\n activeSessionId = undefined;\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', {\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n await refresh(scope);\n }\n }\n if (state.phase === 'stopping') {\n await stopSession(scope);\n await refresh(scope);\n }\n const pending = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubNext),\n )) as ComputerUseBrokerRequest | null;\n if (pending !== null) await completePending(scope, pending);\n } catch (error) {\n if (error instanceof MissingComputerUseApiError) {\n unavailableUntil.set(scope.sessionId, missingComputerUseApiRetryAt(Date.now()));\n latest.delete(scope.sessionId);\n } else {\n host.onNotice(\n `computer-use poll failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n } finally {\n processing.delete(scope.sessionId);\n }\n };\n\n receiveCommand = (scope, payload) => {\n const parsed = command(payload);\n if (parsed === undefined) return;\n unavailableUntil.delete(scope.sessionId);\n void (async () => {\n try {\n if (parsed.action === 'targets') {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n const result = await host.computerUse.request(scope, { operation: 'targets' });\n targets.set(\n scope.sessionId,\n Array.isArray(result)\n ? result.filter((item): item is Record<string, unknown> => record(item) !== undefined)\n : [],\n );\n } else if (parsed.action === 'stop') {\n await stopSession(scope);\n }\n await refresh(scope);\n } catch (error) {\n if (error instanceof MissingComputerUseApiError) {\n unavailableUntil.set(scope.sessionId, missingComputerUseApiRetryAt(Date.now()));\n latest.delete(scope.sessionId);\n } else {\n host.onNotice(\n `computer-use command failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n }\n })();\n };\n\n const timer: ReturnType<typeof setInterval> = setInterval(() => {\n for (const scope of scopes.values()) void pollScope(scope);\n }, options.pollMs ?? POLL_MS);\n\n const source: HubChannelSource = {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n scopes.set(scope.sessionId, scope);\n void pollScope(scope);\n },\n sessionRemoved(sessionId) {\n const scope = scopes.get(sessionId);\n const grantId = grants.get(sessionId);\n if (scope !== undefined && grantId !== undefined && host.computerUse?.available) {\n void host.computerUse\n .request(scope, { operation: 'stop', payload: { grantId } })\n .catch((error: unknown) =>\n host.onNotice(\n `computer-use session cleanup failed (${error instanceof Error ? error.message : String(error)})`,\n ),\n );\n }\n scopes.delete(sessionId);\n latest.delete(sessionId);\n targets.delete(sessionId);\n grants.delete(sessionId);\n processing.delete(sessionId);\n unavailableUntil.delete(sessionId);\n if (activeSessionId === sessionId) activeSessionId = undefined;\n },\n close() {\n closed = true;\n clearInterval(timer);\n if (host.computerUse?.available) {\n for (const [sessionId, grantId] of grants) {\n const scope = scopes.get(sessionId);\n if (scope !== undefined)\n void host.computerUse\n .request(scope, { operation: 'stop', payload: { grantId } })\n .catch(() => undefined);\n }\n }\n scopes.clear();\n latest.clear();\n targets.clear();\n grants.clear();\n unavailableUntil.clear();\n },\n };\n return source;\n },\n receive(scope, payload) {\n receiveCommand?.(scope, payload);\n },\n };\n}\n\nexport const webHubChannels: readonly WebHubChannel[] = [createComputerUseChannel()];\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webComputerUseChannel.mjs","names":[],"sources":["../../src/adapters/webComputerUseChannel.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport type { HubChannelSource, HubSessionScope, WebHubChannel } from '@agimon-ai/doompi-web-contracts';\nimport {\n API_BASE_PATH,\n computerUseChannelType,\n COMPUTER_USE_ROUTES,\n type ComputerUseActivationRequest,\n type ComputerUseBrokerRequest,\n type ComputerUseBrowserCommand,\n type ComputerUseChannelPayload,\n type ComputerUseSessionView,\n} from '../types/computerUseApi.ts';\nimport {\n computerUseSessionApiError,\n MissingComputerUseApiError,\n missingComputerUseApiRetryAt,\n} from './webComputerUseAvailability.ts';\nexport { computerUseChannelType };\n\nconst POLL_MS = 250;\n\nfunction record(value: unknown): Record<string, unknown> | undefined {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction command(value: unknown): ComputerUseBrowserCommand | undefined {\n const input = record(value);\n return input?.action === 'status' ||\n input?.action === 'targets' ||\n input?.action === 'stop' ||\n input?.action === 'artifacts'\n ? { action: input.action }\n : undefined;\n}\n\nasync function responseJson(response: Response): Promise<unknown> {\n const value = await response.json();\n if (!response.ok) throw computerUseSessionApiError(response.status, value);\n return value;\n}\n\nexport function createComputerUseChannel(options: { pollMs?: number } = {}): WebHubChannel {\n let receiveCommand: ((scope: HubSessionScope, payload: unknown) => void) | undefined;\n return {\n frameType: computerUseChannelType,\n lifecycle: 'hub',\n start(host) {\n const scopes = new Map<string, HubSessionScope>();\n const latest = new Map<string, ComputerUseChannelPayload>();\n const targets = new Map<string, readonly Record<string, unknown>[]>();\n const grants = new Map<string, string>();\n const processing = new Set<string>();\n const unavailableUntil = new Map<string, number>();\n let activeSessionId: string | undefined;\n let closed = false;\n\n const sessionRequest = async (scope: HubSessionScope, path: string, method = 'GET', value?: unknown) =>\n host.requestSessionApi(scope, {\n basePath: API_BASE_PATH,\n path,\n method,\n ...(value === undefined ? {} : { body: JSON.stringify(value) }),\n });\n\n const publish = (scope: HubSessionScope, state: ComputerUseSessionView): void => {\n const payload: ComputerUseChannelPayload = {\n state,\n targets: targets.get(scope.sessionId) ?? [],\n ...(activeSessionId !== undefined && activeSessionId !== scope.sessionId ? { busy: true } : {}),\n };\n latest.set(scope.sessionId, payload);\n host.publish(scope.sessionId, payload);\n };\n\n const refresh = async (scope: HubSessionScope): Promise<ComputerUseSessionView> => {\n const state = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubState),\n )) as ComputerUseSessionView;\n if (state.phase === 'active' || state.phase === 'activating' || state.phase === 'stopping') {\n activeSessionId = scope.sessionId;\n if (state.phase === 'active' && !grants.has(scope.sessionId)) {\n const authorization = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization),\n )) as { grantId: string } | null;\n if (authorization !== null) grants.set(scope.sessionId, authorization.grantId);\n }\n } else {\n if (activeSessionId === scope.sessionId) activeSessionId = undefined;\n grants.delete(scope.sessionId);\n }\n unavailableUntil.delete(scope.sessionId);\n publish(scope, state);\n return state;\n };\n\n const completePending = async (scope: HubSessionScope, pending: ComputerUseBrokerRequest): Promise<void> => {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n try {\n const result = await host.computerUse.request(scope, {\n operation: pending.operation,\n payload:\n pending.operation === 'act'\n ? { grantId: pending.grantId, sequence: pending.sequence, action: pending.payload }\n : { grantId: pending.grantId },\n });\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, 'POST', { id: pending.id, result }),\n );\n } catch (error) {\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, 'POST', {\n id: pending.id,\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n };\n\n const stopSession = async (scope: HubSessionScope): Promise<void> => {\n const authorization = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization),\n )) as { grantId: string } | null;\n let artifact: unknown;\n if (authorization !== null && host.computerUse?.available) {\n try {\n artifact = await host.computerUse.request(scope, {\n operation: 'stop',\n payload: { grantId: authorization.grantId },\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n artifact = {\n artifactId: randomUUID(),\n status: 'failed',\n failure: { code: 'recording_failed', message: message.slice(0, 512) },\n };\n host.onNotice(`computer-use Desktop stop was already unavailable (${message})`);\n }\n }\n await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', { artifact }));\n grants.delete(scope.sessionId);\n if (activeSessionId === scope.sessionId) activeSessionId = undefined;\n };\n const pollScope = async (scope: HubSessionScope): Promise<void> => {\n if (closed || processing.has(scope.sessionId)) return;\n if ((unavailableUntil.get(scope.sessionId) ?? 0) > Date.now()) return;\n processing.add(scope.sessionId);\n try {\n const state = await refresh(scope);\n if (state.phase === 'active') {\n const expired = typeof state.expiresAt === 'number' && state.expiresAt <= Date.now();\n let owned = false;\n if (!expired && host.computerUse?.available) {\n try {\n const hostStatus = record(await host.computerUse.request(scope, { operation: 'status' }));\n owned = hostStatus?.ownedBySession === true;\n } catch {\n owned = true;\n }\n }\n if (expired || !owned) {\n await stopSession(scope);\n await refresh(scope);\n return;\n }\n }\n if (\n state.phase === 'awaiting_confirmation' &&\n (activeSessionId === undefined || activeSessionId === scope.sessionId)\n ) {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n const activation = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubActivation),\n )) as ComputerUseActivationRequest | null;\n if (activation !== null) {\n activeSessionId = scope.sessionId;\n try {\n const hostResult = await host.computerUse.request(scope, {\n operation: 'activate',\n payload: activation,\n });\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', { host: hostResult }),\n );\n const grantId = record(hostResult)?.grantId;\n if (typeof grantId === 'string') grants.set(scope.sessionId, grantId);\n } catch (error) {\n activeSessionId = undefined;\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', {\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n await refresh(scope);\n }\n }\n if (state.phase === 'stopping') {\n await stopSession(scope);\n await refresh(scope);\n }\n const pending = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubNext),\n )) as ComputerUseBrokerRequest | null;\n if (pending !== null) await completePending(scope, pending);\n } catch (error) {\n if (error instanceof MissingComputerUseApiError) {\n unavailableUntil.set(scope.sessionId, missingComputerUseApiRetryAt(Date.now()));\n latest.delete(scope.sessionId);\n } else {\n host.onNotice(\n `computer-use poll failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n } finally {\n processing.delete(scope.sessionId);\n }\n };\n\n receiveCommand = (scope, payload) => {\n const parsed = command(payload);\n if (parsed === undefined) return;\n unavailableUntil.delete(scope.sessionId);\n void (async () => {\n try {\n if (parsed.action === 'targets') {\n if (!host.computerUse?.available) throw new Error('DoomPi Desktop computer use is unavailable.');\n const result = await host.computerUse.request(scope, { operation: 'targets' });\n targets.set(\n scope.sessionId,\n Array.isArray(result)\n ? result.filter((item): item is Record<string, unknown> => record(item) !== undefined)\n : [],\n );\n } else if (parsed.action === 'stop') {\n await stopSession(scope);\n }\n await refresh(scope);\n } catch (error) {\n if (error instanceof MissingComputerUseApiError) {\n unavailableUntil.set(scope.sessionId, missingComputerUseApiRetryAt(Date.now()));\n latest.delete(scope.sessionId);\n } else {\n host.onNotice(\n `computer-use command failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n }\n })();\n };\n\n const timer: ReturnType<typeof setInterval> = setInterval(() => {\n for (const scope of scopes.values()) void pollScope(scope);\n }, options.pollMs ?? POLL_MS);\n\n const source: HubChannelSource = {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n scopes.set(scope.sessionId, scope);\n void pollScope(scope);\n },\n sessionRemoved(sessionId) {\n const scope = scopes.get(sessionId);\n const grantId = grants.get(sessionId);\n if (scope !== undefined && grantId !== undefined && host.computerUse?.available) {\n void host.computerUse\n .request(scope, { operation: 'stop', payload: { grantId } })\n .catch((error: unknown) =>\n host.onNotice(\n `computer-use session cleanup failed (${error instanceof Error ? error.message : String(error)})`,\n ),\n );\n }\n scopes.delete(sessionId);\n latest.delete(sessionId);\n targets.delete(sessionId);\n grants.delete(sessionId);\n processing.delete(sessionId);\n unavailableUntil.delete(sessionId);\n if (activeSessionId === sessionId) activeSessionId = undefined;\n },\n close() {\n closed = true;\n clearInterval(timer);\n if (host.computerUse?.available) {\n for (const [sessionId, grantId] of grants) {\n const scope = scopes.get(sessionId);\n if (scope !== undefined)\n void host.computerUse\n .request(scope, { operation: 'stop', payload: { grantId } })\n .catch(() => undefined);\n }\n }\n scopes.clear();\n latest.clear();\n targets.clear();\n grants.clear();\n unavailableUntil.clear();\n },\n };\n return source;\n },\n receive(scope, payload) {\n receiveCommand?.(scope, payload);\n },\n };\n}\n\nexport const webHubChannels: readonly WebHubChannel[] = [createComputerUseChannel()];\n"],"mappings":"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"}
|
package/dist/container/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("../adapters/pi/sessionApiClient.cjs"),
|
|
1
|
+
const e=require("../_virtual/_rolldown/runtime.cjs"),t=require("../adapters/pi/sessionApiClient.cjs"),n=require("../adapters/pi/computerScriptRunner.cjs"),r=require("../services/extensionService.cjs");let i=require("node:path");i=e.__toESM(i,1);let a=require("@agimon-ai/doompi-config");function o(e={}){let o=e.client??t.createComputerUseSessionClient(),s=(process.env.DOOMPI_COMPUTER_USE_SCRIPT_PATHS??``).split(i.default.delimiter).filter(e=>e.length>0);return{service:e.service??new r.DefaultComputerUseExtensionService(o),enabled:e.enabled??(()=>(0,a.loadDoomConfig)(process.env.PI_PROJECT_ROOT??process.cwd()).computerUse?.enabled===!0),...o===void 0?{}:{client:o},...e.scriptRunner===void 0?o===void 0?{}:{scriptRunner:new n.ComputerScriptRunner({client:o,allowedScriptPaths:s})}:{scriptRunner:e.scriptRunner}}}exports.COMPUTER_USE_SCRIPT_PATHS_ENV=`DOOMPI_COMPUTER_USE_SCRIPT_PATHS`,exports.createComputerUseContainer=o;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["createComputerUseSessionClient","DefaultComputerUseExtensionService"],"sources":["../../src/container/index.ts"],"sourcesContent":["import { createComputerUseSessionClient } from '../adapters/pi/sessionApiClient.ts';\nimport { DefaultComputerUseExtensionService } from '../services/extensionService.ts';\nimport type { ComputerUseExtensionDependencies } from '../types/extension.ts';\n\nexport function createComputerUseContainer(\n overrides: Partial<ComputerUseExtensionDependencies> = {},\n): ComputerUseExtensionDependencies {\n const client = overrides.client ?? createComputerUseSessionClient();\n return {\n service: overrides.service ?? new DefaultComputerUseExtensionService(client),\n ...(client === undefined ? {} : { client }),\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["createComputerUseSessionClient","path","DefaultComputerUseExtensionService","loadDoomConfig","ComputerScriptRunner"],"sources":["../../src/container/index.ts"],"sourcesContent":["import path from 'node:path';\nimport { loadDoomConfig } from '@agimon-ai/doompi-config';\nimport { createComputerUseSessionClient } from '../adapters/pi/sessionApiClient.ts';\nimport { ComputerScriptRunner } from '../adapters/pi/computerScriptRunner.ts';\nimport { DefaultComputerUseExtensionService } from '../services/extensionService.ts';\nimport type { ComputerUseExtensionDependencies } from '../types/extension.ts';\n\nexport const COMPUTER_USE_SCRIPT_PATHS_ENV = 'DOOMPI_COMPUTER_USE_SCRIPT_PATHS';\nexport function createComputerUseContainer(\n overrides: Partial<ComputerUseExtensionDependencies> = {},\n): ComputerUseExtensionDependencies {\n const client = overrides.client ?? createComputerUseSessionClient();\n const allowedScriptPaths = (process.env[COMPUTER_USE_SCRIPT_PATHS_ENV] ?? '')\n .split(path.delimiter)\n .filter((entry) => entry.length > 0);\n return {\n service: overrides.service ?? new DefaultComputerUseExtensionService(client),\n enabled:\n overrides.enabled ??\n (() => loadDoomConfig(process.env.PI_PROJECT_ROOT ?? process.cwd()).computerUse?.enabled === true),\n ...(client === undefined ? {} : { client }),\n ...(overrides.scriptRunner !== undefined\n ? { scriptRunner: overrides.scriptRunner }\n : client === undefined\n ? {}\n : { scriptRunner: new ComputerScriptRunner({ client, allowedScriptPaths }) }),\n };\n}\n"],"mappings":"+RAQA,SAAgB,EACd,EAAuD,CAAC,EACtB,CAClC,IAAM,EAAS,EAAU,QAAUA,EAAAA,+BAA+B,EAC5D,GAAsB,QAAQ,IAAA,kCAAsC,GAAA,CACvE,MAAMC,EAAAA,QAAK,SAAS,CAAC,CACrB,OAAQ,GAAU,EAAM,OAAS,CAAC,EACrC,MAAO,CACL,QAAS,EAAU,SAAW,IAAIC,EAAAA,mCAAmC,CAAM,EAC3E,QACE,EAAU,eAAA,EACHC,EAAAA,eAAAA,CAAe,QAAQ,IAAI,iBAAmB,QAAQ,IAAI,CAAC,CAAC,CAAC,aAAa,UAAY,IAC/F,GAAI,IAAW,IAAA,GAAY,CAAC,EAAI,CAAE,QAAO,EACzC,GAAI,EAAU,eAAiB,IAAA,GAE3B,IAAW,IAAA,GACT,CAAC,EACD,CAAE,aAAc,IAAIC,EAAAA,qBAAqB,CAAE,SAAQ,oBAAmB,CAAC,CAAE,EAH3E,CAAE,aAAc,EAAU,YAAa,CAI7C,CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComputerUseExtensionDependencies } from "../types/extension.cjs";
|
|
2
2
|
//#region src/container/index.d.ts
|
|
3
|
-
declare
|
|
3
|
+
export declare const COMPUTER_USE_SCRIPT_PATHS_ENV = "DOOMPI_COMPUTER_USE_SCRIPT_PATHS";
|
|
4
|
+
export declare function createComputerUseContainer(overrides?: Partial<ComputerUseExtensionDependencies>): ComputerUseExtensionDependencies;
|
|
4
5
|
//#endregion
|
|
5
|
-
export { createComputerUseContainer };
|
|
6
6
|
//# sourceMappingURL=index.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/container/index.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../../src/container/index.ts"],"mappings":";;qBAOa;wBACG,2BACd,YAAW,QAAQ,oCAClB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComputerUseExtensionDependencies } from "../types/extension.mjs";
|
|
2
2
|
//#region src/container/index.d.ts
|
|
3
|
-
declare
|
|
3
|
+
export declare const COMPUTER_USE_SCRIPT_PATHS_ENV = "DOOMPI_COMPUTER_USE_SCRIPT_PATHS";
|
|
4
|
+
export declare function createComputerUseContainer(overrides?: Partial<ComputerUseExtensionDependencies>): ComputerUseExtensionDependencies;
|
|
4
5
|
//#endregion
|
|
5
|
-
export { createComputerUseContainer };
|
|
6
6
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/container/index.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/container/index.ts"],"mappings":";;qBAOa;wBACG,2BACd,YAAW,QAAQ,oCAClB"}
|
package/dist/container/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{createComputerUseSessionClient as e}from"../adapters/pi/sessionApiClient.mjs";import{
|
|
1
|
+
import{createComputerUseSessionClient as e}from"../adapters/pi/sessionApiClient.mjs";import{ComputerScriptRunner as t}from"../adapters/pi/computerScriptRunner.mjs";import{DefaultComputerUseExtensionService as n}from"../services/extensionService.mjs";import r from"node:path";import{loadDoomConfig as i}from"@agimon-ai/doompi-config";const a=`DOOMPI_COMPUTER_USE_SCRIPT_PATHS`;function o(a={}){let o=a.client??e(),s=(process.env.DOOMPI_COMPUTER_USE_SCRIPT_PATHS??``).split(r.delimiter).filter(e=>e.length>0);return{service:a.service??new n(o),enabled:a.enabled??(()=>i(process.env.PI_PROJECT_ROOT??process.cwd()).computerUse?.enabled===!0),...o===void 0?{}:{client:o},...a.scriptRunner===void 0?o===void 0?{}:{scriptRunner:new t({client:o,allowedScriptPaths:s})}:{scriptRunner:a.scriptRunner}}}export{a as COMPUTER_USE_SCRIPT_PATHS_ENV,o as createComputerUseContainer};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/container/index.ts"],"sourcesContent":["import { createComputerUseSessionClient } from '../adapters/pi/sessionApiClient.ts';\nimport { DefaultComputerUseExtensionService } from '../services/extensionService.ts';\nimport type { ComputerUseExtensionDependencies } from '../types/extension.ts';\n\nexport function createComputerUseContainer(\n overrides: Partial<ComputerUseExtensionDependencies> = {},\n): ComputerUseExtensionDependencies {\n const client = overrides.client ?? createComputerUseSessionClient();\n return {\n service: overrides.service ?? new DefaultComputerUseExtensionService(client),\n ...(client === undefined ? {} : { client }),\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/container/index.ts"],"sourcesContent":["import path from 'node:path';\nimport { loadDoomConfig } from '@agimon-ai/doompi-config';\nimport { createComputerUseSessionClient } from '../adapters/pi/sessionApiClient.ts';\nimport { ComputerScriptRunner } from '../adapters/pi/computerScriptRunner.ts';\nimport { DefaultComputerUseExtensionService } from '../services/extensionService.ts';\nimport type { ComputerUseExtensionDependencies } from '../types/extension.ts';\n\nexport const COMPUTER_USE_SCRIPT_PATHS_ENV = 'DOOMPI_COMPUTER_USE_SCRIPT_PATHS';\nexport function createComputerUseContainer(\n overrides: Partial<ComputerUseExtensionDependencies> = {},\n): ComputerUseExtensionDependencies {\n const client = overrides.client ?? createComputerUseSessionClient();\n const allowedScriptPaths = (process.env[COMPUTER_USE_SCRIPT_PATHS_ENV] ?? '')\n .split(path.delimiter)\n .filter((entry) => entry.length > 0);\n return {\n service: overrides.service ?? new DefaultComputerUseExtensionService(client),\n enabled:\n overrides.enabled ??\n (() => loadDoomConfig(process.env.PI_PROJECT_ROOT ?? process.cwd()).computerUse?.enabled === true),\n ...(client === undefined ? {} : { client }),\n ...(overrides.scriptRunner !== undefined\n ? { scriptRunner: overrides.scriptRunner }\n : client === undefined\n ? {}\n : { scriptRunner: new ComputerScriptRunner({ client, allowedScriptPaths }) }),\n };\n}\n"],"mappings":"6UAOA,MAAa,EAAgC,mCAC7C,SAAgB,EACd,EAAuD,CAAC,EACtB,CAClC,IAAM,EAAS,EAAU,QAAU,EAA+B,EAC5D,GAAsB,QAAQ,IAAA,kCAAsC,GAAA,CACvE,MAAM,EAAK,SAAS,CAAC,CACrB,OAAQ,GAAU,EAAM,OAAS,CAAC,EACrC,MAAO,CACL,QAAS,EAAU,SAAW,IAAI,EAAmC,CAAM,EAC3E,QACE,EAAU,cACH,EAAe,QAAQ,IAAI,iBAAmB,QAAQ,IAAI,CAAC,CAAC,CAAC,aAAa,UAAY,IAC/F,GAAI,IAAW,IAAA,GAAY,CAAC,EAAI,CAAE,QAAO,EACzC,GAAI,EAAU,eAAiB,IAAA,GAE3B,IAAW,IAAA,GACT,CAAC,EACD,CAAE,aAAc,IAAI,EAAqB,CAAE,SAAQ,oBAAmB,CAAC,CAAE,EAH3E,CAAE,aAAc,EAAU,YAAa,CAI7C,CACF"}
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./types/computerUseApi.cjs"),t=require("./adapters/pi/sessionApiClient.cjs"),n=require("./services/extensionService.cjs"),
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./types/computerUseApi.cjs"),t=require("./adapters/pi/sessionApiClient.cjs"),n=require("./adapters/pi/computerScriptRunner.cjs"),r=require("./services/extensionService.cjs"),i=require("./container/index.cjs"),a=require("./adapters/pi/extension.cjs"),o=require("./services/sessionController.cjs"),s=require("./services/traceRedaction.cjs");exports.COMPUTER_USE_GUIDANCE=a.COMPUTER_USE_GUIDANCE,exports.COMPUTER_USE_MODE_ID=e.COMPUTER_USE_MODE_ID,exports.COMPUTER_USE_SCRIPT_PATHS_ENV=i.COMPUTER_USE_SCRIPT_PATHS_ENV,exports.COMPUTER_USE_TOOL_NAMES=a.COMPUTER_USE_TOOL_NAMES,exports.ComputerScriptRunner=n.ComputerScriptRunner,exports.DefaultComputerUseExtensionService=r.DefaultComputerUseExtensionService,exports.UnixComputerUseSessionClient=t.UnixComputerUseSessionClient,exports.activateComputerUseExtension=a.activateComputerUseExtension,exports.createComputerUseContainer=i.createComputerUseContainer,exports.createComputerUseSessionClient=t.createComputerUseSessionClient,exports.initialComputerUseState=o.initialComputerUseState,exports.redactComputerUseTrace=s.redactComputerUseTrace,exports.reduceComputerUseState=o.reduceComputerUseState;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { API_BASE_PATH, COMPUTER_USE_CONFIRMATION_WINDOW_MS, COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, COMPUTER_USE_MODE_STATUS_KEY, COMPUTER_USE_ROUTES, COMPUTER_USE_STATUS_KEY, COMPUTER_USE_WAKE_LIMIT, ComputerUseActivationRequest, ComputerUseArtifactView, ComputerUseBrokerRequest, ComputerUseBrowserCommand, ComputerUseChannelPayload, ComputerUseSessionView, SESSION_QUERY_PARAM, activationUrl, computerUseChannelType } from "./types/computerUseApi.cjs";
|
|
2
2
|
import { COMPUTER_USE_PHASES, ComputerUseAction, ComputerUseActionKind, ComputerUseElement, ComputerUseFailureCode, ComputerUseGrant, ComputerUseObservation, ComputerUsePhase, ComputerUseSessionIdentity, ComputerUseState, ComputerUseStateEvent, ComputerUseTarget } from "./types/computerUse.cjs";
|
|
3
3
|
import { ComputerUseSessionClient, UnixComputerUseSessionClient, createComputerUseSessionClient } from "./adapters/pi/sessionApiClient.cjs";
|
|
4
|
+
import { ComputerScriptExecutionResult, ComputerScriptExecutor, ComputerScriptLogger, ComputerScriptProgram, ComputerScriptRun, ComputerScriptRunContext, ComputerScriptRunnerOptions } from "./types/computerScript.cjs";
|
|
4
5
|
import { ComputerUseExtensionDependencies, ComputerUseExtensionResult, ComputerUseExtensionService, ComputerUseNotificationLevel } from "./types/extension.cjs";
|
|
5
6
|
import { COMPUTER_USE_GUIDANCE, COMPUTER_USE_TOOL_NAMES, activateComputerUseExtension } from "./adapters/pi/extension.cjs";
|
|
6
|
-
import { createComputerUseContainer } from "./container/index.cjs";
|
|
7
|
+
import { COMPUTER_USE_SCRIPT_PATHS_ENV, createComputerUseContainer } from "./container/index.cjs";
|
|
8
|
+
import { ComputerScriptRunner } from "./adapters/pi/computerScriptRunner.cjs";
|
|
7
9
|
import { DefaultComputerUseExtensionService } from "./services/extensionService.cjs";
|
|
8
10
|
import { initialComputerUseState, reduceComputerUseState } from "./services/sessionController.cjs";
|
|
9
11
|
import { redactComputerUseTrace } from "./services/traceRedaction.cjs";
|
|
10
|
-
export { type API_BASE_PATH, type COMPUTER_USE_CONFIRMATION_WINDOW_MS, type COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_GUIDANCE, type COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, type COMPUTER_USE_MODE_STATUS_KEY, type COMPUTER_USE_PHASES, type COMPUTER_USE_ROUTES, type COMPUTER_USE_STATUS_KEY, COMPUTER_USE_TOOL_NAMES, type COMPUTER_USE_WAKE_LIMIT, type ComputerUseAction, type ComputerUseActionKind, type ComputerUseActivationRequest, type ComputerUseArtifactView, type ComputerUseBrokerRequest, type ComputerUseBrowserCommand, type ComputerUseChannelPayload, type ComputerUseElement, type ComputerUseExtensionDependencies, type ComputerUseExtensionResult, type ComputerUseExtensionService, type ComputerUseFailureCode, type ComputerUseGrant, type ComputerUseNotificationLevel, type ComputerUseObservation, type ComputerUsePhase, type ComputerUseSessionClient, type ComputerUseSessionIdentity, type ComputerUseSessionView, type ComputerUseState, type ComputerUseStateEvent, type ComputerUseTarget, DefaultComputerUseExtensionService, type SESSION_QUERY_PARAM, UnixComputerUseSessionClient, activateComputerUseExtension, type activationUrl, type computerUseChannelType, createComputerUseContainer, createComputerUseSessionClient, initialComputerUseState, redactComputerUseTrace, reduceComputerUseState };
|
|
12
|
+
export { type API_BASE_PATH, type COMPUTER_USE_CONFIRMATION_WINDOW_MS, type COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_GUIDANCE, type COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, type COMPUTER_USE_MODE_STATUS_KEY, type COMPUTER_USE_PHASES, type COMPUTER_USE_ROUTES, COMPUTER_USE_SCRIPT_PATHS_ENV, type COMPUTER_USE_STATUS_KEY, COMPUTER_USE_TOOL_NAMES, type COMPUTER_USE_WAKE_LIMIT, type ComputerScriptExecutionResult, type ComputerScriptExecutor, type ComputerScriptLogger, type ComputerScriptProgram, type ComputerScriptRun, type ComputerScriptRunContext, ComputerScriptRunner, type ComputerScriptRunnerOptions, type ComputerUseAction, type ComputerUseActionKind, type ComputerUseActivationRequest, type ComputerUseArtifactView, type ComputerUseBrokerRequest, type ComputerUseBrowserCommand, type ComputerUseChannelPayload, type ComputerUseElement, type ComputerUseExtensionDependencies, type ComputerUseExtensionResult, type ComputerUseExtensionService, type ComputerUseFailureCode, type ComputerUseGrant, type ComputerUseNotificationLevel, type ComputerUseObservation, type ComputerUsePhase, type ComputerUseSessionClient, type ComputerUseSessionIdentity, type ComputerUseSessionView, type ComputerUseState, type ComputerUseStateEvent, type ComputerUseTarget, DefaultComputerUseExtensionService, type SESSION_QUERY_PARAM, UnixComputerUseSessionClient, activateComputerUseExtension, type activationUrl, type computerUseChannelType, createComputerUseContainer, createComputerUseSessionClient, initialComputerUseState, redactComputerUseTrace, reduceComputerUseState };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { API_BASE_PATH, COMPUTER_USE_CONFIRMATION_WINDOW_MS, COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, COMPUTER_USE_MODE_STATUS_KEY, COMPUTER_USE_ROUTES, COMPUTER_USE_STATUS_KEY, COMPUTER_USE_WAKE_LIMIT, ComputerUseActivationRequest, ComputerUseArtifactView, ComputerUseBrokerRequest, ComputerUseBrowserCommand, ComputerUseChannelPayload, ComputerUseSessionView, SESSION_QUERY_PARAM, activationUrl, computerUseChannelType } from "./types/computerUseApi.mjs";
|
|
2
2
|
import { COMPUTER_USE_PHASES, ComputerUseAction, ComputerUseActionKind, ComputerUseElement, ComputerUseFailureCode, ComputerUseGrant, ComputerUseObservation, ComputerUsePhase, ComputerUseSessionIdentity, ComputerUseState, ComputerUseStateEvent, ComputerUseTarget } from "./types/computerUse.mjs";
|
|
3
3
|
import { ComputerUseSessionClient, UnixComputerUseSessionClient, createComputerUseSessionClient } from "./adapters/pi/sessionApiClient.mjs";
|
|
4
|
+
import { ComputerScriptExecutionResult, ComputerScriptExecutor, ComputerScriptLogger, ComputerScriptProgram, ComputerScriptRun, ComputerScriptRunContext, ComputerScriptRunnerOptions } from "./types/computerScript.mjs";
|
|
4
5
|
import { ComputerUseExtensionDependencies, ComputerUseExtensionResult, ComputerUseExtensionService, ComputerUseNotificationLevel } from "./types/extension.mjs";
|
|
5
6
|
import { COMPUTER_USE_GUIDANCE, COMPUTER_USE_TOOL_NAMES, activateComputerUseExtension } from "./adapters/pi/extension.mjs";
|
|
6
|
-
import { createComputerUseContainer } from "./container/index.mjs";
|
|
7
|
+
import { COMPUTER_USE_SCRIPT_PATHS_ENV, createComputerUseContainer } from "./container/index.mjs";
|
|
8
|
+
import { ComputerScriptRunner } from "./adapters/pi/computerScriptRunner.mjs";
|
|
7
9
|
import { DefaultComputerUseExtensionService } from "./services/extensionService.mjs";
|
|
8
10
|
import { initialComputerUseState, reduceComputerUseState } from "./services/sessionController.mjs";
|
|
9
11
|
import { redactComputerUseTrace } from "./services/traceRedaction.mjs";
|
|
10
|
-
export { type API_BASE_PATH, type COMPUTER_USE_CONFIRMATION_WINDOW_MS, type COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_GUIDANCE, type COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, type COMPUTER_USE_MODE_STATUS_KEY, type COMPUTER_USE_PHASES, type COMPUTER_USE_ROUTES, type COMPUTER_USE_STATUS_KEY, COMPUTER_USE_TOOL_NAMES, type COMPUTER_USE_WAKE_LIMIT, type ComputerUseAction, type ComputerUseActionKind, type ComputerUseActivationRequest, type ComputerUseArtifactView, type ComputerUseBrokerRequest, type ComputerUseBrowserCommand, type ComputerUseChannelPayload, type ComputerUseElement, type ComputerUseExtensionDependencies, type ComputerUseExtensionResult, type ComputerUseExtensionService, type ComputerUseFailureCode, type ComputerUseGrant, type ComputerUseNotificationLevel, type ComputerUseObservation, type ComputerUsePhase, type ComputerUseSessionClient, type ComputerUseSessionIdentity, type ComputerUseSessionView, type ComputerUseState, type ComputerUseStateEvent, type ComputerUseTarget, DefaultComputerUseExtensionService, type SESSION_QUERY_PARAM, UnixComputerUseSessionClient, activateComputerUseExtension, type activationUrl, type computerUseChannelType, createComputerUseContainer, createComputerUseSessionClient, initialComputerUseState, redactComputerUseTrace, reduceComputerUseState };
|
|
12
|
+
export { type API_BASE_PATH, type COMPUTER_USE_CONFIRMATION_WINDOW_MS, type COMPUTER_USE_DEFAULT_DURATION_MS, COMPUTER_USE_GUIDANCE, type COMPUTER_USE_MAX_DURATION_MS, COMPUTER_USE_MODE_ID, type COMPUTER_USE_MODE_STATUS_KEY, type COMPUTER_USE_PHASES, type COMPUTER_USE_ROUTES, COMPUTER_USE_SCRIPT_PATHS_ENV, type COMPUTER_USE_STATUS_KEY, COMPUTER_USE_TOOL_NAMES, type COMPUTER_USE_WAKE_LIMIT, type ComputerScriptExecutionResult, type ComputerScriptExecutor, type ComputerScriptLogger, type ComputerScriptProgram, type ComputerScriptRun, type ComputerScriptRunContext, ComputerScriptRunner, type ComputerScriptRunnerOptions, type ComputerUseAction, type ComputerUseActionKind, type ComputerUseActivationRequest, type ComputerUseArtifactView, type ComputerUseBrokerRequest, type ComputerUseBrowserCommand, type ComputerUseChannelPayload, type ComputerUseElement, type ComputerUseExtensionDependencies, type ComputerUseExtensionResult, type ComputerUseExtensionService, type ComputerUseFailureCode, type ComputerUseGrant, type ComputerUseNotificationLevel, type ComputerUseObservation, type ComputerUsePhase, type ComputerUseSessionClient, type ComputerUseSessionIdentity, type ComputerUseSessionView, type ComputerUseState, type ComputerUseStateEvent, type ComputerUseTarget, DefaultComputerUseExtensionService, type SESSION_QUERY_PARAM, UnixComputerUseSessionClient, activateComputerUseExtension, type activationUrl, type computerUseChannelType, createComputerUseContainer, createComputerUseSessionClient, initialComputerUseState, redactComputerUseTrace, reduceComputerUseState };
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{COMPUTER_USE_MODE_ID as e}from"./types/computerUseApi.mjs";import{UnixComputerUseSessionClient as t,createComputerUseSessionClient as n}from"./adapters/pi/sessionApiClient.mjs";import{
|
|
1
|
+
import{COMPUTER_USE_MODE_ID as e}from"./types/computerUseApi.mjs";import{UnixComputerUseSessionClient as t,createComputerUseSessionClient as n}from"./adapters/pi/sessionApiClient.mjs";import{ComputerScriptRunner as r}from"./adapters/pi/computerScriptRunner.mjs";import{DefaultComputerUseExtensionService as i}from"./services/extensionService.mjs";import{COMPUTER_USE_SCRIPT_PATHS_ENV as a,createComputerUseContainer as o}from"./container/index.mjs";import{COMPUTER_USE_GUIDANCE as s,COMPUTER_USE_TOOL_NAMES as c,activateComputerUseExtension as l}from"./adapters/pi/extension.mjs";import{initialComputerUseState as u,reduceComputerUseState as d}from"./services/sessionController.mjs";import{redactComputerUseTrace as f}from"./services/traceRedaction.mjs";export{s as COMPUTER_USE_GUIDANCE,e as COMPUTER_USE_MODE_ID,a as COMPUTER_USE_SCRIPT_PATHS_ENV,c as COMPUTER_USE_TOOL_NAMES,r as ComputerScriptRunner,i as DefaultComputerUseExtensionService,t as UnixComputerUseSessionClient,l as activateComputerUseExtension,o as createComputerUseContainer,n as createComputerUseSessionClient,u as initialComputerUseState,f as redactComputerUseTrace,d as reduceComputerUseState};
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ComputerUseSessionClient } from "../adapters/pi/sessionApiClient.cjs";
|
|
2
2
|
import { ComputerUseExtensionResult, ComputerUseExtensionService } from "../types/extension.cjs";
|
|
3
3
|
//#region src/services/extensionService.d.ts
|
|
4
|
-
declare class DefaultComputerUseExtensionService implements ComputerUseExtensionService {
|
|
4
|
+
export declare class DefaultComputerUseExtensionService implements ComputerUseExtensionService {
|
|
5
5
|
private readonly client?;
|
|
6
6
|
constructor(client?: ComputerUseSessionClient | undefined);
|
|
7
7
|
execute(): Promise<ComputerUseExtensionResult>;
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
|
-
export { DefaultComputerUseExtensionService };
|
|
11
10
|
//# sourceMappingURL=extensionService.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensionService.d.cts","names":[],"sources":["../../src/services/extensionService.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"extensionService.d.cts","names":[],"sources":["../../src/services/extensionService.ts"],"mappings":";;;qBAGa,8CAA8C;mBACrB;EAApC,YAAoC,SAAS;EAEhC,WAAW,QAAQ"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { ComputerUseSessionClient } from "../adapters/pi/sessionApiClient.mjs";
|
|
2
2
|
import { ComputerUseExtensionResult, ComputerUseExtensionService } from "../types/extension.mjs";
|
|
3
3
|
//#region src/services/extensionService.d.ts
|
|
4
|
-
declare class DefaultComputerUseExtensionService implements ComputerUseExtensionService {
|
|
4
|
+
export declare class DefaultComputerUseExtensionService implements ComputerUseExtensionService {
|
|
5
5
|
private readonly client?;
|
|
6
6
|
constructor(client?: ComputerUseSessionClient | undefined);
|
|
7
7
|
execute(): Promise<ComputerUseExtensionResult>;
|
|
8
8
|
}
|
|
9
9
|
//#endregion
|
|
10
|
-
export { DefaultComputerUseExtensionService };
|
|
11
10
|
//# sourceMappingURL=extensionService.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensionService.d.mts","names":[],"sources":["../../src/services/extensionService.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"extensionService.d.mts","names":[],"sources":["../../src/services/extensionService.ts"],"mappings":";;;qBAGa,8CAA8C;mBACrB;EAApC,YAAoC,SAAS;EAEhC,WAAW,QAAQ"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ComputerUseState, ComputerUseStateEvent } from "../types/computerUse.cjs";
|
|
2
2
|
//#region src/services/sessionController.d.ts
|
|
3
|
-
declare function initialComputerUseState(identity: ComputerUseState['identity']): ComputerUseState;
|
|
4
|
-
declare function reduceComputerUseState(state: ComputerUseState, event: ComputerUseStateEvent): ComputerUseState;
|
|
3
|
+
export declare function initialComputerUseState(identity: ComputerUseState['identity']): ComputerUseState;
|
|
4
|
+
export declare function reduceComputerUseState(state: ComputerUseState, event: ComputerUseStateEvent): ComputerUseState;
|
|
5
5
|
//#endregion
|
|
6
|
-
export { initialComputerUseState, reduceComputerUseState };
|
|
7
6
|
//# sourceMappingURL=sessionController.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionController.d.cts","names":[],"sources":["../../src/services/sessionController.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sessionController.d.cts","names":[],"sources":["../../src/services/sessionController.ts"],"mappings":";;wBAcgB,wBAAwB,UAAU,+BAA+B;wBAIjE,uBAAuB,OAAO,kBAAkB,OAAO,wBAAwB"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { ComputerUseState, ComputerUseStateEvent } from "../types/computerUse.mjs";
|
|
2
2
|
//#region src/services/sessionController.d.ts
|
|
3
|
-
declare function initialComputerUseState(identity: ComputerUseState['identity']): ComputerUseState;
|
|
4
|
-
declare function reduceComputerUseState(state: ComputerUseState, event: ComputerUseStateEvent): ComputerUseState;
|
|
3
|
+
export declare function initialComputerUseState(identity: ComputerUseState['identity']): ComputerUseState;
|
|
4
|
+
export declare function reduceComputerUseState(state: ComputerUseState, event: ComputerUseStateEvent): ComputerUseState;
|
|
5
5
|
//#endregion
|
|
6
|
-
export { initialComputerUseState, reduceComputerUseState };
|
|
7
6
|
//# sourceMappingURL=sessionController.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionController.d.mts","names":[],"sources":["../../src/services/sessionController.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sessionController.d.mts","names":[],"sources":["../../src/services/sessionController.ts"],"mappings":";;wBAcgB,wBAAwB,UAAU,+BAA+B;wBAIjE,uBAAuB,OAAO,kBAAkB,OAAO,wBAAwB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComputerUseAction, ComputerUseFailureCode } from "../types/computerUse.cjs";
|
|
2
2
|
//#region src/services/traceRedaction.d.ts
|
|
3
|
-
interface ComputerUseTraceInput {
|
|
3
|
+
export interface ComputerUseTraceInput {
|
|
4
4
|
readonly sequence: number;
|
|
5
5
|
readonly timestamp: number;
|
|
6
6
|
readonly runId: string;
|
|
@@ -11,7 +11,7 @@ interface ComputerUseTraceInput {
|
|
|
11
11
|
readonly outcome: 'succeeded' | 'failed' | 'uncertain';
|
|
12
12
|
readonly errorCode?: ComputerUseFailureCode;
|
|
13
13
|
}
|
|
14
|
-
interface ComputerUseTraceRecord {
|
|
14
|
+
export interface ComputerUseTraceRecord {
|
|
15
15
|
readonly sequence: number;
|
|
16
16
|
readonly timestamp: number;
|
|
17
17
|
readonly runId: string;
|
|
@@ -23,7 +23,6 @@ interface ComputerUseTraceRecord {
|
|
|
23
23
|
readonly outcome: ComputerUseTraceInput['outcome'];
|
|
24
24
|
readonly errorCode?: ComputerUseFailureCode;
|
|
25
25
|
}
|
|
26
|
-
declare function redactComputerUseTrace(input: ComputerUseTraceInput): ComputerUseTraceRecord;
|
|
26
|
+
export declare function redactComputerUseTrace(input: ComputerUseTraceInput): ComputerUseTraceRecord;
|
|
27
27
|
//#endregion
|
|
28
|
-
export { ComputerUseTraceInput, ComputerUseTraceRecord, redactComputerUseTrace };
|
|
29
28
|
//# sourceMappingURL=traceRedaction.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceRedaction.d.cts","names":[],"sources":["../../src/services/traceRedaction.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"traceRedaction.d.cts","names":[],"sources":["../../src/services/traceRedaction.ts"],"mappings":";;iBAEiB;WACN;WACA;WACA;WACA;WACA,QAAQ;WACR;WACA;WACA;WACA,YAAY;;iBAGN;WACN;WACA;WACA;WACA;WACA,YAAY;WACZ;WACA;WACA;WACA,SAAS;WACT,YAAY;;wBAGP,uBAAuB,OAAO,wBAAwB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComputerUseAction, ComputerUseFailureCode } from "../types/computerUse.mjs";
|
|
2
2
|
//#region src/services/traceRedaction.d.ts
|
|
3
|
-
interface ComputerUseTraceInput {
|
|
3
|
+
export interface ComputerUseTraceInput {
|
|
4
4
|
readonly sequence: number;
|
|
5
5
|
readonly timestamp: number;
|
|
6
6
|
readonly runId: string;
|
|
@@ -11,7 +11,7 @@ interface ComputerUseTraceInput {
|
|
|
11
11
|
readonly outcome: 'succeeded' | 'failed' | 'uncertain';
|
|
12
12
|
readonly errorCode?: ComputerUseFailureCode;
|
|
13
13
|
}
|
|
14
|
-
interface ComputerUseTraceRecord {
|
|
14
|
+
export interface ComputerUseTraceRecord {
|
|
15
15
|
readonly sequence: number;
|
|
16
16
|
readonly timestamp: number;
|
|
17
17
|
readonly runId: string;
|
|
@@ -23,7 +23,6 @@ interface ComputerUseTraceRecord {
|
|
|
23
23
|
readonly outcome: ComputerUseTraceInput['outcome'];
|
|
24
24
|
readonly errorCode?: ComputerUseFailureCode;
|
|
25
25
|
}
|
|
26
|
-
declare function redactComputerUseTrace(input: ComputerUseTraceInput): ComputerUseTraceRecord;
|
|
26
|
+
export declare function redactComputerUseTrace(input: ComputerUseTraceInput): ComputerUseTraceRecord;
|
|
27
27
|
//#endregion
|
|
28
|
-
export { ComputerUseTraceInput, ComputerUseTraceRecord, redactComputerUseTrace };
|
|
29
28
|
//# sourceMappingURL=traceRedaction.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traceRedaction.d.mts","names":[],"sources":["../../src/services/traceRedaction.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"traceRedaction.d.mts","names":[],"sources":["../../src/services/traceRedaction.ts"],"mappings":";;iBAEiB;WACN;WACA;WACA;WACA;WACA,QAAQ;WACR;WACA;WACA;WACA,YAAY;;iBAGN;WACN;WACA;WACA;WACA;WACA,YAAY;WACZ;WACA;WACA;WACA,SAAS;WACT,YAAY;;wBAGP,uBAAuB,OAAO,wBAAwB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ComputerUseAction, ComputerUseObservation } from "./computerUse.cjs";
|
|
2
|
+
import { ComputerUseSessionClient } from "../adapters/pi/sessionApiClient.cjs";
|
|
3
|
+
//#region src/types/computerScript.d.ts
|
|
4
|
+
export interface ComputerScriptProgram {
|
|
5
|
+
observe(): Promise<ComputerUseObservation>;
|
|
6
|
+
act(action: ComputerUseAction): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface ComputerScriptLogger {
|
|
9
|
+
debug(message: string): void;
|
|
10
|
+
info(message: string): void;
|
|
11
|
+
warn(message: string): void;
|
|
12
|
+
error(message: string): void;
|
|
13
|
+
}
|
|
14
|
+
export interface ComputerScriptRunContext {
|
|
15
|
+
context: {
|
|
16
|
+
program: ComputerScriptProgram;
|
|
17
|
+
};
|
|
18
|
+
input: unknown;
|
|
19
|
+
logger: ComputerScriptLogger;
|
|
20
|
+
signal: AbortSignal;
|
|
21
|
+
}
|
|
22
|
+
export type ComputerScriptRun = (options: ComputerScriptRunContext) => Promise<unknown>;
|
|
23
|
+
export interface ComputerScriptExecutionResult {
|
|
24
|
+
result?: unknown;
|
|
25
|
+
observation: ComputerUseObservation;
|
|
26
|
+
logs: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export interface ComputerScriptExecutor {
|
|
29
|
+
execute(scriptPath: string, input: unknown, signal?: AbortSignal): Promise<ComputerScriptExecutionResult>;
|
|
30
|
+
}
|
|
31
|
+
export interface ComputerScriptRunnerOptions {
|
|
32
|
+
readonly client: ComputerUseSessionClient;
|
|
33
|
+
readonly allowedScriptPaths: readonly string[];
|
|
34
|
+
readonly timeoutMs?: number;
|
|
35
|
+
readonly maxOutputBytes?: number;
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//# sourceMappingURL=computerScript.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computerScript.d.cts","names":[],"sources":["../../src/types/computerScript.ts"],"mappings":";;;iBAGiB;EACf,WAAW,QAAQ;EACnB,IAAI,QAAQ,oBAAoB;;iBAGjB;EACf,MAAM;EACN,KAAK;EACL,KAAK;EACL,MAAM;;iBAGS;EACf;IAAW,SAAS;;EACpB;EACA,QAAQ;EACR,QAAQ;;YAGE,qBAAqB,SAAS,6BAA6B;iBAEtD;EACf;EACA,aAAa;EACb;;iBAGe;EACf,QAAQ,oBAAoB,gBAAgB,SAAS,cAAc,QAAQ;;iBAG5D;WACN,QAAQ;WACR;WACA;WACA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ComputerUseAction, ComputerUseObservation } from "./computerUse.mjs";
|
|
2
|
+
import { ComputerUseSessionClient } from "../adapters/pi/sessionApiClient.mjs";
|
|
3
|
+
//#region src/types/computerScript.d.ts
|
|
4
|
+
export interface ComputerScriptProgram {
|
|
5
|
+
observe(): Promise<ComputerUseObservation>;
|
|
6
|
+
act(action: ComputerUseAction): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface ComputerScriptLogger {
|
|
9
|
+
debug(message: string): void;
|
|
10
|
+
info(message: string): void;
|
|
11
|
+
warn(message: string): void;
|
|
12
|
+
error(message: string): void;
|
|
13
|
+
}
|
|
14
|
+
export interface ComputerScriptRunContext {
|
|
15
|
+
context: {
|
|
16
|
+
program: ComputerScriptProgram;
|
|
17
|
+
};
|
|
18
|
+
input: unknown;
|
|
19
|
+
logger: ComputerScriptLogger;
|
|
20
|
+
signal: AbortSignal;
|
|
21
|
+
}
|
|
22
|
+
export type ComputerScriptRun = (options: ComputerScriptRunContext) => Promise<unknown>;
|
|
23
|
+
export interface ComputerScriptExecutionResult {
|
|
24
|
+
result?: unknown;
|
|
25
|
+
observation: ComputerUseObservation;
|
|
26
|
+
logs: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
export interface ComputerScriptExecutor {
|
|
29
|
+
execute(scriptPath: string, input: unknown, signal?: AbortSignal): Promise<ComputerScriptExecutionResult>;
|
|
30
|
+
}
|
|
31
|
+
export interface ComputerScriptRunnerOptions {
|
|
32
|
+
readonly client: ComputerUseSessionClient;
|
|
33
|
+
readonly allowedScriptPaths: readonly string[];
|
|
34
|
+
readonly timeoutMs?: number;
|
|
35
|
+
readonly maxOutputBytes?: number;
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
//# sourceMappingURL=computerScript.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computerScript.d.mts","names":[],"sources":["../../src/types/computerScript.ts"],"mappings":";;;iBAGiB;EACf,WAAW,QAAQ;EACnB,IAAI,QAAQ,oBAAoB;;iBAGjB;EACf,MAAM;EACN,KAAK;EACL,KAAK;EACL,MAAM;;iBAGS;EACf;IAAW,SAAS;;EACpB;EACA,QAAQ;EACR,QAAQ;;YAGE,qBAAqB,SAAS,6BAA6B;iBAEtD;EACf;EACA,aAAa;EACb;;iBAGe;EACf,QAAQ,oBAAoB,gBAAgB,SAAS,cAAc,QAAQ;;iBAG5D;WACN,QAAQ;WACR;WACA;WACA"}
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
//#region src/types/computerUse.d.ts
|
|
2
|
-
declare const COMPUTER_USE_PHASES: readonly ['inactive', 'requesting', 'awaiting_confirmation', 'activating', 'active', 'stopping', 'failed'];
|
|
3
|
-
type ComputerUsePhase = (typeof COMPUTER_USE_PHASES)[number];
|
|
4
|
-
interface ComputerUseSessionIdentity {
|
|
2
|
+
export declare const COMPUTER_USE_PHASES: readonly ['inactive', 'requesting', 'awaiting_confirmation', 'activating', 'active', 'stopping', 'failed'];
|
|
3
|
+
export type ComputerUsePhase = (typeof COMPUTER_USE_PHASES)[number];
|
|
4
|
+
export interface ComputerUseSessionIdentity {
|
|
5
5
|
readonly sessionId: string;
|
|
6
6
|
readonly runtimeId: string;
|
|
7
7
|
readonly modeEpoch: string;
|
|
8
8
|
}
|
|
9
|
-
interface ComputerUseTarget {
|
|
9
|
+
export interface ComputerUseTarget {
|
|
10
10
|
readonly bundleId: string;
|
|
11
11
|
readonly applicationName: string;
|
|
12
12
|
readonly processId: number;
|
|
13
13
|
readonly windowId: string;
|
|
14
14
|
readonly windowTitle: string;
|
|
15
15
|
}
|
|
16
|
-
interface ComputerUseGrant {
|
|
16
|
+
export interface ComputerUseGrant {
|
|
17
17
|
readonly runId: string;
|
|
18
18
|
readonly grantId: string;
|
|
19
19
|
readonly hostGeneration: string;
|
|
20
20
|
readonly targetGeneration: string;
|
|
21
21
|
readonly expiresAt: number;
|
|
22
22
|
}
|
|
23
|
-
interface ComputerUseElement {
|
|
23
|
+
export interface ComputerUseElement {
|
|
24
24
|
readonly ref: string;
|
|
25
25
|
readonly role: string;
|
|
26
26
|
readonly label?: string;
|
|
27
|
+
readonly value?: string;
|
|
27
28
|
readonly enabled: boolean;
|
|
28
29
|
readonly secure: boolean;
|
|
29
30
|
readonly actions: readonly ComputerUseActionKind[];
|
|
30
31
|
}
|
|
31
|
-
interface ComputerUseObservation {
|
|
32
|
+
export interface ComputerUseObservation {
|
|
32
33
|
readonly runId: string;
|
|
33
34
|
readonly snapshotId: string;
|
|
34
35
|
readonly targetGeneration: string;
|
|
@@ -41,9 +42,9 @@ interface ComputerUseObservation {
|
|
|
41
42
|
readonly data: string;
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
|
-
type ComputerUseActionKind = 'press' | 'set_value' | 'scroll';
|
|
45
|
-
type ComputerUseAction = {
|
|
46
|
-
readonly kind: 'press';
|
|
45
|
+
export type ComputerUseActionKind = 'press' | 'focus' | 'set_value' | 'scroll';
|
|
46
|
+
export type ComputerUseAction = {
|
|
47
|
+
readonly kind: 'press' | 'focus';
|
|
47
48
|
readonly snapshotId: string;
|
|
48
49
|
readonly elementRef: string;
|
|
49
50
|
} | {
|
|
@@ -58,8 +59,8 @@ type ComputerUseAction = {
|
|
|
58
59
|
readonly direction: 'up' | 'down' | 'left' | 'right';
|
|
59
60
|
readonly amount: 'line' | 'page';
|
|
60
61
|
};
|
|
61
|
-
type ComputerUseFailureCode = 'busy_in_another_session' | 'desktop_unavailable' | 'permission_required_on_mac' | 'confirmation_denied' | 'confirmation_expired' | 'target_invalid' | 'target_lost' | 'recording_failed' | 'trace_failed' | 'grant_expired' | 'stale_request' | 'outcome_uncertain' | 'internal_error';
|
|
62
|
-
interface ComputerUseState {
|
|
62
|
+
export type ComputerUseFailureCode = 'busy_in_another_session' | 'desktop_unavailable' | 'permission_required_on_mac' | 'confirmation_denied' | 'confirmation_expired' | 'target_invalid' | 'target_lost' | 'recording_failed' | 'trace_failed' | 'grant_expired' | 'stale_request' | 'outcome_uncertain' | 'internal_error';
|
|
63
|
+
export interface ComputerUseState {
|
|
63
64
|
readonly revision: number;
|
|
64
65
|
readonly phase: ComputerUsePhase;
|
|
65
66
|
readonly identity: ComputerUseSessionIdentity;
|
|
@@ -71,7 +72,7 @@ interface ComputerUseState {
|
|
|
71
72
|
readonly message: string;
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
|
-
type ComputerUseStateEvent = {
|
|
75
|
+
export type ComputerUseStateEvent = {
|
|
75
76
|
readonly type: 'request';
|
|
76
77
|
readonly requestId: string;
|
|
77
78
|
readonly target: ComputerUseTarget;
|
|
@@ -100,5 +101,4 @@ type ComputerUseStateEvent = {
|
|
|
100
101
|
readonly type: 'reset';
|
|
101
102
|
};
|
|
102
103
|
//#endregion
|
|
103
|
-
export { COMPUTER_USE_PHASES, ComputerUseAction, ComputerUseActionKind, ComputerUseElement, ComputerUseFailureCode, ComputerUseGrant, ComputerUseObservation, ComputerUsePhase, ComputerUseSessionIdentity, ComputerUseState, ComputerUseStateEvent, ComputerUseTarget };
|
|
104
104
|
//# sourceMappingURL=computerUse.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computerUse.d.cts","names":[],"sources":["../../src/types/computerUse.ts"],"mappings":";
|
|
1
|
+
{"version":3,"file":"computerUse.d.cts","names":[],"sources":["../../src/types/computerUse.ts"],"mappings":";qBAAa;YAUD,2BAA2B;iBAEtB;WACN;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;;iBAGM;WACN;WACA;WACA;WACA;WACA;WACA;WACA,kBAAkB;;iBAGZ;WACN;WACA;WACA;WACA;WACA;WACA;WACA,mBAAmB;WACnB;aACE;aACA;;;YAID;YAEA;WAEG;WACA;WACA;;WAGA;WACA;WACA;WACA;;WAGA;WACA;WACA;WACA;WACA;;YAGH;iBAeK;WACN;WACA,OAAO;WACP,UAAU;WACV;WACA,SAAS;WACT,QAAQ;WACR;aACE,MAAM;aACN;;;YAID;WACG;WAA0B;WAA4B,QAAQ;;WAC9D;WAAqC;;WACrC;WAA0B;;WAC1B;WAAuB;;WACvB;WAA4B;WAA4B,OAAO;;WAC/D;;WACA;;WACA;WAAuB,MAAM;WAAiC;;WAC9D"}
|