@agimon-ai/doompi-computer-use 0.0.1-alpha.2 → 0.0.1-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -4
- package/dist/_virtual/_rolldown/runtime.cjs +23 -1
- package/dist/api-contracts.cjs +7 -0
- package/dist/api-contracts.d.cts +2 -0
- package/dist/api-contracts.d.mts +2 -0
- package/dist/api-contracts.mjs +2 -0
- package/dist/extensions/mcp.cjs +56 -0
- package/dist/extensions/mcp.cjs.map +1 -0
- package/dist/extensions/mcp.d.cts +5 -0
- package/dist/extensions/mcp.d.cts.map +1 -0
- package/dist/extensions/mcp.d.mts +5 -0
- package/dist/extensions/mcp.d.mts.map +1 -0
- package/dist/extensions/mcp.mjs +51 -0
- package/dist/extensions/mcp.mjs.map +1 -0
- package/dist/extensions/pi.cjs +51 -1
- package/dist/extensions/pi.cjs.map +1 -0
- package/dist/extensions/pi.d.cts +7 -2
- package/dist/extensions/pi.d.cts.map +1 -0
- package/dist/extensions/pi.d.mts +7 -2
- package/dist/extensions/pi.d.mts.map +1 -0
- package/dist/extensions/pi.mjs +46 -1
- package/dist/extensions/pi.mjs.map +1 -0
- package/dist/extensions/server.cjs +72 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.cts +5 -0
- package/dist/extensions/server.d.cts.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +67 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/extensions/web.mjs +625 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/index.cjs +18 -1
- package/dist/index.d.cts +12 -10
- package/dist/index.d.mts +12 -10
- package/dist/index.mjs +8 -1
- package/dist/src/constants/computerUse.cjs +17 -0
- package/dist/src/constants/computerUse.cjs.map +1 -0
- package/dist/src/constants/computerUse.d.cts +5 -0
- package/dist/src/constants/computerUse.d.cts.map +1 -0
- package/dist/src/constants/computerUse.d.mts +5 -0
- package/dist/src/constants/computerUse.d.mts.map +1 -0
- package/dist/src/constants/computerUse.mjs +14 -0
- package/dist/src/constants/computerUse.mjs.map +1 -0
- package/dist/src/extensions/(backend)/channel/computer-use.server.cjs +7 -0
- package/dist/src/extensions/(backend)/channel/computer-use.server.cjs.map +1 -0
- package/dist/src/extensions/(backend)/channel/computer-use.server.mjs +8 -0
- package/dist/src/extensions/(backend)/channel/computer-use.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.cli.cjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.cli.mjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.server.cjs +11 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.server.mjs +11 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_runtime/index.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/api/computer-use/route.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/api/computer-use/route.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/api/computer-use/route.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/api/computer-use/route.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/computer-use.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/before-agent-start.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-shutdown.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/session-start.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +15 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +16 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +17 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +18 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/00-computer-state.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/10-computer-action.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool/20-computer-exec.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.server.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.server.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/tool-restriction/computer-use.server.mjs.map +1 -0
- package/dist/src/models/computerUseMode.cjs +43 -0
- package/dist/src/models/computerUseMode.cjs.map +1 -0
- package/dist/src/models/computerUseMode.mjs +42 -0
- package/dist/src/models/computerUseMode.mjs.map +1 -0
- package/dist/src/models/computerUseState.cjs +89 -0
- package/dist/src/models/computerUseState.cjs.map +1 -0
- package/dist/src/models/computerUseState.d.cts +6 -0
- package/dist/src/models/computerUseState.d.cts.map +1 -0
- package/dist/src/models/computerUseState.d.mts +6 -0
- package/dist/src/models/computerUseState.d.mts.map +1 -0
- package/dist/src/models/computerUseState.mjs +88 -0
- package/dist/src/models/computerUseState.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.cjs +194 -0
- package/dist/src/schemas/apiContracts.cjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.cts +53 -0
- package/dist/src/schemas/apiContracts.d.cts.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +53 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/apiContracts.mjs +191 -0
- package/dist/src/schemas/apiContracts.mjs.map +1 -0
- package/dist/src/services/computerScriptRunner/index.cjs +171 -0
- package/dist/src/services/computerScriptRunner/index.cjs.map +1 -0
- package/dist/src/services/computerScriptRunner/index.d.cts +12 -0
- package/dist/src/services/computerScriptRunner/index.d.cts.map +1 -0
- package/dist/src/services/computerScriptRunner/index.d.mts +12 -0
- package/dist/src/services/computerScriptRunner/index.d.mts.map +1 -0
- package/dist/src/services/computerScriptRunner/index.mjs +171 -0
- package/dist/src/services/computerScriptRunner/index.mjs.map +1 -0
- package/dist/src/services/computerUseApi/index.cjs +291 -0
- package/dist/src/services/computerUseApi/index.cjs.map +1 -0
- package/dist/src/services/computerUseApi/index.mjs +289 -0
- package/dist/src/services/computerUseApi/index.mjs.map +1 -0
- package/dist/src/services/computerUseCommand/index.cjs +15 -0
- package/dist/src/services/computerUseCommand/index.cjs.map +1 -0
- package/dist/src/services/computerUseCommand/index.mjs +15 -0
- package/dist/src/services/computerUseCommand/index.mjs.map +1 -0
- package/dist/src/services/computerUseRuntime/index.cjs +300 -0
- package/dist/src/services/computerUseRuntime/index.cjs.map +1 -0
- package/dist/src/services/computerUseRuntime/index.mjs +299 -0
- package/dist/src/services/computerUseRuntime/index.mjs.map +1 -0
- package/dist/src/services/computerUseServer/index.cjs +350 -0
- package/dist/src/services/computerUseServer/index.cjs.map +1 -0
- package/dist/src/services/computerUseServer/index.mjs +348 -0
- package/dist/src/services/computerUseServer/index.mjs.map +1 -0
- package/dist/src/services/dependencies/index.cjs +27 -0
- package/dist/src/services/dependencies/index.cjs.map +1 -0
- package/dist/src/services/dependencies/index.d.cts +6 -0
- package/dist/src/services/dependencies/index.d.cts.map +1 -0
- package/dist/src/services/dependencies/index.d.mts +6 -0
- package/dist/src/services/dependencies/index.d.mts.map +1 -0
- package/dist/src/services/dependencies/index.mjs +24 -0
- package/dist/src/services/dependencies/index.mjs.map +1 -0
- package/dist/src/services/extensionService/index.cjs +21 -0
- package/dist/src/services/extensionService/index.cjs.map +1 -0
- package/dist/src/services/extensionService/index.d.cts +10 -0
- package/dist/src/services/extensionService/index.d.cts.map +1 -0
- package/dist/src/services/extensionService/index.d.mts +10 -0
- package/dist/src/services/extensionService/index.d.mts.map +1 -0
- package/dist/src/services/extensionService/index.mjs +21 -0
- package/dist/src/services/extensionService/index.mjs.map +1 -0
- package/dist/src/services/mcpTools/index.cjs +17 -0
- package/dist/src/services/mcpTools/index.cjs.map +1 -0
- package/dist/src/services/mcpTools/index.mjs +16 -0
- package/dist/src/services/mcpTools/index.mjs.map +1 -0
- package/dist/src/services/sessionApiClient/index.cjs +9 -0
- package/dist/src/services/sessionApiClient/index.cjs.map +1 -0
- package/dist/src/services/sessionApiClient/index.d.cts +15 -0
- package/dist/src/services/sessionApiClient/index.d.cts.map +1 -0
- package/dist/src/services/sessionApiClient/index.d.mts +15 -0
- package/dist/src/services/sessionApiClient/index.d.mts.map +1 -0
- package/dist/src/services/sessionApiClient/index.mjs +9 -0
- package/dist/src/services/sessionApiClient/index.mjs.map +1 -0
- package/dist/src/services/traceRedaction/index.cjs +19 -0
- package/dist/src/services/traceRedaction/index.cjs.map +1 -0
- package/dist/{services/traceRedaction.d.mts → src/services/traceRedaction/index.d.cts} +6 -7
- package/dist/src/services/traceRedaction/index.d.cts.map +1 -0
- package/dist/{services/traceRedaction.d.cts → src/services/traceRedaction/index.d.mts} +6 -7
- package/dist/src/services/traceRedaction/index.d.mts.map +1 -0
- package/dist/src/services/traceRedaction/index.mjs +19 -0
- package/dist/src/services/traceRedaction/index.mjs.map +1 -0
- package/dist/src/services/webComputerUseAvailability/index.cjs +13 -0
- package/dist/src/services/webComputerUseAvailability/index.cjs.map +1 -0
- package/dist/src/services/webComputerUseAvailability/index.mjs +12 -0
- package/dist/src/services/webComputerUseAvailability/index.mjs.map +1 -0
- package/dist/src/services/webComputerUseChannel/index.cjs +251 -0
- package/dist/src/services/webComputerUseChannel/index.cjs.map +1 -0
- package/dist/src/services/webComputerUseChannel/index.mjs +250 -0
- package/dist/src/services/webComputerUseChannel/index.mjs.map +1 -0
- package/dist/src/types/apiRoutes.cjs +84 -0
- package/dist/src/types/apiRoutes.cjs.map +1 -0
- package/dist/src/types/apiRoutes.mjs +84 -0
- package/dist/src/types/apiRoutes.mjs.map +1 -0
- package/dist/src/types/computerScript.d.cts +38 -0
- package/dist/src/types/computerScript.d.cts.map +1 -0
- package/dist/src/types/computerScript.d.mts +38 -0
- package/dist/src/types/computerScript.d.mts.map +1 -0
- package/dist/{types → src/types}/computerUse.d.cts +14 -14
- package/dist/src/types/computerUse.d.cts.map +1 -0
- package/dist/{types → src/types}/computerUse.d.mts +14 -14
- package/dist/src/types/computerUse.d.mts.map +1 -0
- package/dist/src/types/computerUseApi.cjs +41 -0
- package/dist/src/types/computerUseApi.cjs.map +1 -0
- package/dist/{types → src/types}/computerUseApi.d.cts +28 -20
- package/dist/src/types/computerUseApi.d.cts.map +1 -0
- package/dist/{types → src/types}/computerUseApi.d.mts +28 -20
- package/dist/src/types/computerUseApi.d.mts.map +1 -0
- package/dist/src/types/computerUseApi.mjs +33 -0
- package/dist/src/types/computerUseApi.mjs.map +1 -0
- package/dist/src/types/extension.d.cts +19 -0
- package/dist/src/types/extension.d.cts.map +1 -0
- package/dist/src/types/extension.d.mts +19 -0
- package/dist/src/types/extension.d.mts.map +1 -0
- package/docs/computer-scripts.md +37 -0
- package/llms.txt +1 -0
- package/package.json +55 -33
- package/src/prompts/doompi-use-computer-use/SKILL.md +1 -1
- package/src/types/computerUse.ts +3 -2
- package/src/types/computerUseApi.ts +9 -6
- package/dist/adapters/computerUseApi.cjs +0 -2
- package/dist/adapters/computerUseApi.cjs.map +0 -1
- package/dist/adapters/computerUseApi.d.cts +0 -37
- package/dist/adapters/computerUseApi.d.cts.map +0 -1
- package/dist/adapters/computerUseApi.d.mts +0 -37
- package/dist/adapters/computerUseApi.d.mts.map +0 -1
- package/dist/adapters/computerUseApi.mjs +0 -2
- package/dist/adapters/computerUseApi.mjs.map +0 -1
- package/dist/adapters/pi/extension.cjs +0 -3
- package/dist/adapters/pi/extension.cjs.map +0 -1
- package/dist/adapters/pi/extension.d.cts +0 -12
- package/dist/adapters/pi/extension.d.cts.map +0 -1
- package/dist/adapters/pi/extension.d.mts +0 -12
- package/dist/adapters/pi/extension.d.mts.map +0 -1
- package/dist/adapters/pi/extension.mjs +0 -3
- package/dist/adapters/pi/extension.mjs.map +0 -1
- package/dist/adapters/pi/sessionApiClient.cjs +0 -2
- package/dist/adapters/pi/sessionApiClient.cjs.map +0 -1
- package/dist/adapters/pi/sessionApiClient.d.cts +0 -26
- package/dist/adapters/pi/sessionApiClient.d.cts.map +0 -1
- package/dist/adapters/pi/sessionApiClient.d.mts +0 -26
- package/dist/adapters/pi/sessionApiClient.d.mts.map +0 -1
- package/dist/adapters/pi/sessionApiClient.mjs +0 -2
- package/dist/adapters/pi/sessionApiClient.mjs.map +0 -1
- package/dist/adapters/webComputerUseAvailability.cjs +0 -2
- package/dist/adapters/webComputerUseAvailability.cjs.map +0 -1
- package/dist/adapters/webComputerUseAvailability.mjs +0 -2
- package/dist/adapters/webComputerUseAvailability.mjs.map +0 -1
- package/dist/adapters/webComputerUseChannel.cjs +0 -2
- package/dist/adapters/webComputerUseChannel.cjs.map +0 -1
- package/dist/adapters/webComputerUseChannel.d.cts +0 -10
- package/dist/adapters/webComputerUseChannel.d.cts.map +0 -1
- package/dist/adapters/webComputerUseChannel.d.mts +0 -10
- package/dist/adapters/webComputerUseChannel.d.mts.map +0 -1
- package/dist/adapters/webComputerUseChannel.mjs +0 -2
- package/dist/adapters/webComputerUseChannel.mjs.map +0 -1
- package/dist/commands/computerUseCommand.cjs +0 -2
- package/dist/commands/computerUseCommand.cjs.map +0 -1
- package/dist/commands/computerUseCommand.mjs +0 -2
- package/dist/commands/computerUseCommand.mjs.map +0 -1
- package/dist/container/index.cjs +0 -2
- package/dist/container/index.cjs.map +0 -1
- package/dist/container/index.d.cts +0 -6
- package/dist/container/index.d.cts.map +0 -1
- package/dist/container/index.d.mts +0 -6
- package/dist/container/index.d.mts.map +0 -1
- package/dist/container/index.mjs +0 -2
- package/dist/container/index.mjs.map +0 -1
- package/dist/services/extensionService.cjs +0 -2
- package/dist/services/extensionService.cjs.map +0 -1
- package/dist/services/extensionService.d.cts +0 -11
- package/dist/services/extensionService.d.cts.map +0 -1
- package/dist/services/extensionService.d.mts +0 -11
- package/dist/services/extensionService.d.mts.map +0 -1
- package/dist/services/extensionService.mjs +0 -2
- package/dist/services/extensionService.mjs.map +0 -1
- package/dist/services/sessionController.cjs +0 -2
- package/dist/services/sessionController.cjs.map +0 -1
- package/dist/services/sessionController.d.cts +0 -7
- package/dist/services/sessionController.d.cts.map +0 -1
- package/dist/services/sessionController.d.mts +0 -7
- package/dist/services/sessionController.d.mts.map +0 -1
- package/dist/services/sessionController.mjs +0 -2
- package/dist/services/sessionController.mjs.map +0 -1
- package/dist/services/traceRedaction.cjs +0 -2
- package/dist/services/traceRedaction.cjs.map +0 -1
- package/dist/services/traceRedaction.d.cts.map +0 -1
- package/dist/services/traceRedaction.d.mts.map +0 -1
- package/dist/services/traceRedaction.mjs +0 -2
- package/dist/services/traceRedaction.mjs.map +0 -1
- package/dist/sessionApi.cjs +0 -1
- package/dist/sessionApi.d.cts +0 -2
- package/dist/sessionApi.d.mts +0 -2
- package/dist/sessionApi.mjs +0 -1
- package/dist/types/computerUse.d.cts.map +0 -1
- package/dist/types/computerUse.d.mts.map +0 -1
- package/dist/types/computerUseApi.cjs +0 -2
- package/dist/types/computerUseApi.cjs.map +0 -1
- package/dist/types/computerUseApi.d.cts.map +0 -1
- package/dist/types/computerUseApi.d.mts.map +0 -1
- package/dist/types/computerUseApi.mjs +0 -2
- package/dist/types/computerUseApi.mjs.map +0 -1
- package/dist/types/extension.d.cts +0 -17
- package/dist/types/extension.d.cts.map +0 -1
- package/dist/types/extension.d.mts +0 -17
- package/dist/types/extension.d.mts.map +0 -1
- package/dist/webHub.cjs +0 -1
- package/dist/webHub.d.cts +0 -3
- package/dist/webHub.d.mts +0 -3
- package/dist/webHub.mjs +0 -1
- package/src/exports/webClient.ts +0 -2
- package/src/web/ComputerActionToolCard.tsx +0 -51
- package/src/web/ComputerStateToolCard.tsx +0 -51
- package/src/web/ComputerUsePanel.tsx +0 -136
- package/src/web/computerActionToolRender.ts +0 -20
- package/src/web/computerStateToolRender.ts +0 -18
- package/src/web/computerUseStore.ts +0 -26
- package/src/web/index.ts +0 -41
- package/src/web/tsconfig.json +0 -28
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { API_BASE_PATH, COMPUTER_USE_ROUTES, computerUseChannelType } from "../../types/computerUseApi.mjs";
|
|
2
|
+
import { MissingComputerUseApiError, computerUseSessionApiError } from "../webComputerUseAvailability/index.mjs";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
//#region src/services/webComputerUseChannel/index.ts
|
|
5
|
+
/** Computer use runs on the DoomPi Desktop host, so every other client declines it. */
|
|
6
|
+
const DESKTOP_UNAVAILABLE = "DoomPi Desktop computer use is unavailable.";
|
|
7
|
+
function record(value) {
|
|
8
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
9
|
+
}
|
|
10
|
+
function command(value) {
|
|
11
|
+
const input = record(value);
|
|
12
|
+
return input?.action === "status" || input?.action === "targets" || input?.action === "stop" || input?.action === "artifacts" ? { action: input.action } : void 0;
|
|
13
|
+
}
|
|
14
|
+
async function responseJson(response) {
|
|
15
|
+
const value = await response.json();
|
|
16
|
+
if (!response.ok) throw computerUseSessionApiError(response.status, value);
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
function sessionState(value) {
|
|
20
|
+
const input = record(value);
|
|
21
|
+
if (typeof input?.sessionId !== "string" || typeof input.revision !== "number" || typeof input.wake !== "number" || ![
|
|
22
|
+
"inactive",
|
|
23
|
+
"awaiting_confirmation",
|
|
24
|
+
"activating",
|
|
25
|
+
"active",
|
|
26
|
+
"stopping",
|
|
27
|
+
"failed"
|
|
28
|
+
].includes(input.phase)) return void 0;
|
|
29
|
+
return input;
|
|
30
|
+
}
|
|
31
|
+
function createComputerUseChannel() {
|
|
32
|
+
let receiveCommand;
|
|
33
|
+
return {
|
|
34
|
+
frameType: computerUseChannelType,
|
|
35
|
+
lifecycle: "hub",
|
|
36
|
+
start(host) {
|
|
37
|
+
const scopes = /* @__PURE__ */ new Map();
|
|
38
|
+
const latest = /* @__PURE__ */ new Map();
|
|
39
|
+
const targets = /* @__PURE__ */ new Map();
|
|
40
|
+
const grants = /* @__PURE__ */ new Map();
|
|
41
|
+
const subscriptions = /* @__PURE__ */ new Map();
|
|
42
|
+
const processing = /* @__PURE__ */ new Set();
|
|
43
|
+
let activeSessionId;
|
|
44
|
+
let closed = false;
|
|
45
|
+
const sessionRequest = async (scope, path, method = "GET", value) => host.requestSessionApi(scope, {
|
|
46
|
+
basePath: API_BASE_PATH,
|
|
47
|
+
path,
|
|
48
|
+
method,
|
|
49
|
+
...value === void 0 ? {} : { body: JSON.stringify(value) }
|
|
50
|
+
});
|
|
51
|
+
const publish = (scope, state) => {
|
|
52
|
+
if (state.phase === "active" || state.phase === "activating" || state.phase === "stopping") activeSessionId = scope.sessionId;
|
|
53
|
+
else if (activeSessionId === scope.sessionId) {
|
|
54
|
+
activeSessionId = void 0;
|
|
55
|
+
grants.delete(scope.sessionId);
|
|
56
|
+
}
|
|
57
|
+
const payload = {
|
|
58
|
+
state,
|
|
59
|
+
targets: targets.get(scope.sessionId) ?? [],
|
|
60
|
+
...activeSessionId !== void 0 && activeSessionId !== scope.sessionId ? { busy: true } : {}
|
|
61
|
+
};
|
|
62
|
+
latest.set(scope.sessionId, payload);
|
|
63
|
+
host.publish(scope.sessionId, payload);
|
|
64
|
+
};
|
|
65
|
+
const refresh = async (scope) => {
|
|
66
|
+
const state = sessionState(await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubState)));
|
|
67
|
+
if (state === void 0) throw new Error("Computer-use API returned an invalid session state.");
|
|
68
|
+
publish(scope, state);
|
|
69
|
+
return state;
|
|
70
|
+
};
|
|
71
|
+
const completePending = async (scope, pending) => {
|
|
72
|
+
if (!host.computerUse?.available) throw new Error(DESKTOP_UNAVAILABLE);
|
|
73
|
+
try {
|
|
74
|
+
const result = await host.computerUse.request(scope, {
|
|
75
|
+
operation: pending.operation,
|
|
76
|
+
payload: pending.operation === "act" ? {
|
|
77
|
+
grantId: pending.grantId,
|
|
78
|
+
sequence: pending.sequence,
|
|
79
|
+
action: pending.payload
|
|
80
|
+
} : { grantId: pending.grantId }
|
|
81
|
+
});
|
|
82
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, "POST", {
|
|
83
|
+
id: pending.id,
|
|
84
|
+
result
|
|
85
|
+
}));
|
|
86
|
+
} catch (error) {
|
|
87
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubComplete, "POST", {
|
|
88
|
+
id: pending.id,
|
|
89
|
+
error: error instanceof Error ? error.message : String(error)
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const stopSession = async (scope) => {
|
|
94
|
+
const authorization = await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization));
|
|
95
|
+
let artifact;
|
|
96
|
+
if (authorization !== null && host.computerUse?.available) try {
|
|
97
|
+
artifact = await host.computerUse.request(scope, {
|
|
98
|
+
operation: "stop",
|
|
99
|
+
payload: { grantId: authorization.grantId }
|
|
100
|
+
});
|
|
101
|
+
} catch (error) {
|
|
102
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
103
|
+
artifact = {
|
|
104
|
+
artifactId: randomUUID(),
|
|
105
|
+
status: "failed",
|
|
106
|
+
failure: {
|
|
107
|
+
code: "recording_failed",
|
|
108
|
+
message: message.slice(0, 512)
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
host.onNotice(`computer-use Desktop stop was already unavailable (${message})`);
|
|
112
|
+
}
|
|
113
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, "POST", { artifact }));
|
|
114
|
+
grants.delete(scope.sessionId);
|
|
115
|
+
if (activeSessionId === scope.sessionId) activeSessionId = void 0;
|
|
116
|
+
};
|
|
117
|
+
const processScope = async (scope, announced) => {
|
|
118
|
+
if (closed || processing.has(scope.sessionId)) return;
|
|
119
|
+
processing.add(scope.sessionId);
|
|
120
|
+
try {
|
|
121
|
+
const state = announced ?? await refresh(scope);
|
|
122
|
+
if (state.phase === "active") {
|
|
123
|
+
if (!grants.has(scope.sessionId)) {
|
|
124
|
+
const authorization = await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubAuthorization));
|
|
125
|
+
if (authorization !== null) grants.set(scope.sessionId, authorization.grantId);
|
|
126
|
+
}
|
|
127
|
+
const expired = typeof state.expiresAt === "number" && state.expiresAt <= Date.now();
|
|
128
|
+
let owned = false;
|
|
129
|
+
if (!expired && host.computerUse?.available) try {
|
|
130
|
+
owned = record(await host.computerUse.request(scope, { operation: "status" }))?.ownedBySession === true;
|
|
131
|
+
} catch {
|
|
132
|
+
owned = true;
|
|
133
|
+
}
|
|
134
|
+
if (expired || !owned) {
|
|
135
|
+
await stopSession(scope);
|
|
136
|
+
await refresh(scope);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (state.phase === "awaiting_confirmation" && (activeSessionId === void 0 || activeSessionId === scope.sessionId)) {
|
|
141
|
+
const activation = await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubActivation));
|
|
142
|
+
if (activation !== null && !host.computerUse?.available) {
|
|
143
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, "POST", { error: DESKTOP_UNAVAILABLE }));
|
|
144
|
+
await refresh(scope);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (activation !== null && host.computerUse?.available) {
|
|
148
|
+
activeSessionId = scope.sessionId;
|
|
149
|
+
try {
|
|
150
|
+
const hostResult = await host.computerUse.request(scope, {
|
|
151
|
+
operation: "activate",
|
|
152
|
+
payload: activation
|
|
153
|
+
});
|
|
154
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, "POST", { host: hostResult }));
|
|
155
|
+
const grantId = record(hostResult)?.grantId;
|
|
156
|
+
if (typeof grantId === "string") grants.set(scope.sessionId, grantId);
|
|
157
|
+
} catch (error) {
|
|
158
|
+
activeSessionId = void 0;
|
|
159
|
+
await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, "POST", { error: error instanceof Error ? error.message : String(error) }));
|
|
160
|
+
}
|
|
161
|
+
await refresh(scope);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (state.phase === "stopping") {
|
|
165
|
+
await stopSession(scope);
|
|
166
|
+
await refresh(scope);
|
|
167
|
+
}
|
|
168
|
+
const pending = await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubNext));
|
|
169
|
+
if (pending !== null) await completePending(scope, pending);
|
|
170
|
+
} catch (error) {
|
|
171
|
+
if (error instanceof MissingComputerUseApiError) latest.delete(scope.sessionId);
|
|
172
|
+
else host.onNotice(`computer-use state handling failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`);
|
|
173
|
+
} finally {
|
|
174
|
+
processing.delete(scope.sessionId);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const onState = (scope, payload) => {
|
|
178
|
+
const state = sessionState(payload);
|
|
179
|
+
if (state === void 0 || state.sessionId !== scope.sessionId) return;
|
|
180
|
+
publish(scope, state);
|
|
181
|
+
processScope(scope, state);
|
|
182
|
+
};
|
|
183
|
+
receiveCommand = (scope, payload) => {
|
|
184
|
+
const parsed = command(payload);
|
|
185
|
+
if (parsed === void 0) return;
|
|
186
|
+
(async () => {
|
|
187
|
+
try {
|
|
188
|
+
if (parsed.action === "targets") {
|
|
189
|
+
const result = host.computerUse?.available ? await host.computerUse.request(scope, { operation: "targets" }) : [];
|
|
190
|
+
targets.set(scope.sessionId, Array.isArray(result) ? result.filter((item) => record(item) !== void 0) : []);
|
|
191
|
+
} else if (parsed.action === "stop") await stopSession(scope);
|
|
192
|
+
await refresh(scope);
|
|
193
|
+
processScope(scope);
|
|
194
|
+
} catch (error) {
|
|
195
|
+
if (error instanceof MissingComputerUseApiError) latest.delete(scope.sessionId);
|
|
196
|
+
else host.onNotice(`computer-use command failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`);
|
|
197
|
+
}
|
|
198
|
+
})();
|
|
199
|
+
};
|
|
200
|
+
return {
|
|
201
|
+
payloadFor: (scope) => latest.get(scope.sessionId),
|
|
202
|
+
sessionAdded(scope) {
|
|
203
|
+
scopes.set(scope.sessionId, scope);
|
|
204
|
+
const unsubscribe = host.directEvents.subscribe(computerUseChannelType, scope.sessionId, (payload) => onState(scope, payload), { replayLatest: true });
|
|
205
|
+
subscriptions.set(scope.sessionId, unsubscribe);
|
|
206
|
+
processScope(scope);
|
|
207
|
+
},
|
|
208
|
+
sessionRemoved(sessionId) {
|
|
209
|
+
const scope = scopes.get(sessionId);
|
|
210
|
+
const grantId = grants.get(sessionId);
|
|
211
|
+
subscriptions.get(sessionId)?.();
|
|
212
|
+
subscriptions.delete(sessionId);
|
|
213
|
+
if (scope !== void 0 && grantId !== void 0 && host.computerUse?.available) host.computerUse.request(scope, {
|
|
214
|
+
operation: "stop",
|
|
215
|
+
payload: { grantId }
|
|
216
|
+
}).catch((error) => host.onNotice(`computer-use session cleanup failed (${error instanceof Error ? error.message : String(error)})`));
|
|
217
|
+
scopes.delete(sessionId);
|
|
218
|
+
latest.delete(sessionId);
|
|
219
|
+
targets.delete(sessionId);
|
|
220
|
+
grants.delete(sessionId);
|
|
221
|
+
processing.delete(sessionId);
|
|
222
|
+
if (activeSessionId === sessionId) activeSessionId = void 0;
|
|
223
|
+
},
|
|
224
|
+
close() {
|
|
225
|
+
closed = true;
|
|
226
|
+
for (const unsubscribe of subscriptions.values()) unsubscribe();
|
|
227
|
+
subscriptions.clear();
|
|
228
|
+
if (host.computerUse?.available) for (const [sessionId, grantId] of grants) {
|
|
229
|
+
const scope = scopes.get(sessionId);
|
|
230
|
+
if (scope !== void 0) host.computerUse.request(scope, {
|
|
231
|
+
operation: "stop",
|
|
232
|
+
payload: { grantId }
|
|
233
|
+
}).catch(() => void 0);
|
|
234
|
+
}
|
|
235
|
+
scopes.clear();
|
|
236
|
+
latest.clear();
|
|
237
|
+
targets.clear();
|
|
238
|
+
grants.clear();
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
},
|
|
242
|
+
receive(scope, payload) {
|
|
243
|
+
receiveCommand?.(scope, payload);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
//#endregion
|
|
248
|
+
export { computerUseChannelType, createComputerUseChannel };
|
|
249
|
+
|
|
250
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/services/webComputerUseChannel/index.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { DoomHubChannelSource, DoomHubSessionScope, DoomHubChannel } from '@agimon-ai/doompi-core/hub-channel';\n\nimport { computerUseSessionApiError, MissingComputerUseApiError } from '../../services/webComputerUseAvailability';\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';\nexport { computerUseChannelType };\n\n/** Computer use runs on the DoomPi Desktop host, so every other client declines it. */\nconst DESKTOP_UNAVAILABLE = 'DoomPi Desktop computer use is unavailable.';\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\nfunction sessionState(value: unknown): ComputerUseSessionView | undefined {\n const input = record(value);\n if (\n typeof input?.sessionId !== 'string' ||\n typeof input.revision !== 'number' ||\n typeof input.wake !== 'number' ||\n !['inactive', 'awaiting_confirmation', 'activating', 'active', 'stopping', 'failed'].includes(input.phase as string)\n )\n return undefined;\n return input as unknown as ComputerUseSessionView;\n}\n\nexport function createComputerUseChannel(): DoomHubChannel {\n let receiveCommand: ((scope: DoomHubSessionScope, payload: unknown) => void) | undefined;\n return {\n frameType: computerUseChannelType,\n lifecycle: 'hub',\n start(host) {\n const scopes = new Map<string, DoomHubSessionScope>();\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 subscriptions = new Map<string, () => void>();\n const processing = new Set<string>();\n let activeSessionId: string | undefined;\n let closed = false;\n\n const sessionRequest = async (scope: DoomHubSessionScope, 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: DoomHubSessionScope, state: ComputerUseSessionView): void => {\n if (state.phase === 'active' || state.phase === 'activating' || state.phase === 'stopping') {\n activeSessionId = scope.sessionId;\n } else if (activeSessionId === scope.sessionId) {\n activeSessionId = undefined;\n grants.delete(scope.sessionId);\n }\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: DoomHubSessionScope): Promise<ComputerUseSessionView> => {\n const state = sessionState(await responseJson(await sessionRequest(scope, COMPUTER_USE_ROUTES.hubState)));\n if (state === undefined) throw new Error('Computer-use API returned an invalid session state.');\n publish(scope, state);\n return state;\n };\n\n const completePending = async (scope: DoomHubSessionScope, pending: ComputerUseBrokerRequest): Promise<void> => {\n if (!host.computerUse?.available) throw new Error(DESKTOP_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: DoomHubSessionScope): 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\n const processScope = async (scope: DoomHubSessionScope, announced?: ComputerUseSessionView): Promise<void> => {\n if (closed || processing.has(scope.sessionId)) return;\n processing.add(scope.sessionId);\n try {\n const state = announced ?? (await refresh(scope));\n if (state.phase === 'active') {\n if (!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 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 const activation = (await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubActivation),\n )) as ComputerUseActivationRequest | null;\n if (activation !== null && !host.computerUse?.available) {\n // No desktop host: decline through the API's own failure path so the browser\n // shows why, instead of leaving the request pending or raising a server error.\n await responseJson(\n await sessionRequest(scope, COMPUTER_USE_ROUTES.hubStop, 'POST', { error: DESKTOP_UNAVAILABLE }),\n );\n await refresh(scope);\n return;\n }\n if (activation !== null && host.computerUse?.available) {\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 latest.delete(scope.sessionId);\n } else {\n host.onNotice(\n `computer-use state handling failed for ${scope.sessionId} (${error instanceof Error ? error.message : String(error)})`,\n );\n }\n } finally {\n processing.delete(scope.sessionId);\n }\n };\n\n const onState = (scope: DoomHubSessionScope, payload: unknown): void => {\n const state = sessionState(payload);\n if (state === undefined || state.sessionId !== scope.sessionId) return;\n publish(scope, state);\n void processScope(scope, state);\n };\n\n receiveCommand = (scope, payload) => {\n const parsed = command(payload);\n if (parsed === undefined) return;\n void (async () => {\n try {\n if (parsed.action === 'targets') {\n // Without a desktop host there is nothing to capture, so the browser sees an\n // empty target list rather than an error it cannot act on.\n const result = host.computerUse?.available\n ? await host.computerUse.request(scope, { operation: 'targets' })\n : [];\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 void processScope(scope);\n } catch (error) {\n if (error instanceof MissingComputerUseApiError) {\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 source: DoomHubChannelSource = {\n payloadFor: (scope) => latest.get(scope.sessionId),\n sessionAdded(scope) {\n scopes.set(scope.sessionId, scope);\n const unsubscribe = host.directEvents.subscribe(\n computerUseChannelType,\n scope.sessionId,\n (payload) => onState(scope, payload),\n { replayLatest: true },\n );\n subscriptions.set(scope.sessionId, unsubscribe);\n void processScope(scope);\n },\n sessionRemoved(sessionId) {\n const scope = scopes.get(sessionId);\n const grantId = grants.get(sessionId);\n subscriptions.get(sessionId)?.();\n subscriptions.delete(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 if (activeSessionId === sessionId) activeSessionId = undefined;\n },\n close() {\n closed = true;\n for (const unsubscribe of subscriptions.values()) unsubscribe();\n subscriptions.clear();\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 },\n };\n return source;\n },\n receive(scope, payload) {\n receiveCommand?.(scope, payload);\n },\n };\n}\n"],"mappings":";;;;;AAkBA,MAAM,sBAAsB;AAE5B,SAAS,OAAO,OAAqD;CACnE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD,KAAA;AACN;AAEA,SAAS,QAAQ,OAAuD;CACtE,MAAM,QAAQ,OAAO,KAAK;CAC1B,OAAO,OAAO,WAAW,YACvB,OAAO,WAAW,aAClB,OAAO,WAAW,UAClB,OAAO,WAAW,cAChB,EAAE,QAAQ,MAAM,OAAO,IACvB,KAAA;AACN;AAEA,eAAe,aAAa,UAAsC;CAChE,MAAM,QAAQ,MAAM,SAAS,KAAK;CAClC,IAAI,CAAC,SAAS,IAAI,MAAM,2BAA2B,SAAS,QAAQ,KAAK;CACzE,OAAO;AACT;AAEA,SAAS,aAAa,OAAoD;CACxE,MAAM,QAAQ,OAAO,KAAK;CAC1B,IACE,OAAO,OAAO,cAAc,YAC5B,OAAO,MAAM,aAAa,YAC1B,OAAO,MAAM,SAAS,YACtB,CAAC;EAAC;EAAY;EAAyB;EAAc;EAAU;EAAY;CAAQ,CAAC,CAAC,SAAS,MAAM,KAAe,GAEnH,OAAO,KAAA;CACT,OAAO;AACT;AAEA,SAAgB,2BAA2C;CACzD,IAAI;CACJ,OAAO;EACL,WAAW;EACX,WAAW;EACX,MAAM,MAAM;GACV,MAAM,yBAAS,IAAI,IAAiC;GACpD,MAAM,yBAAS,IAAI,IAAuC;GAC1D,MAAM,0BAAU,IAAI,IAAgD;GACpE,MAAM,yBAAS,IAAI,IAAoB;GACvC,MAAM,gCAAgB,IAAI,IAAwB;GAClD,MAAM,6BAAa,IAAI,IAAY;GACnC,IAAI;GACJ,IAAI,SAAS;GAEb,MAAM,iBAAiB,OAAO,OAA4B,MAAc,SAAS,OAAO,UACtF,KAAK,kBAAkB,OAAO;IAC5B,UAAU;IACV;IACA;IACA,GAAI,UAAU,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,KAAK,EAAE;GAC/D,CAAC;GAEH,MAAM,WAAW,OAA4B,UAAwC;IACnF,IAAI,MAAM,UAAU,YAAY,MAAM,UAAU,gBAAgB,MAAM,UAAU,YAC9E,kBAAkB,MAAM;SACnB,IAAI,oBAAoB,MAAM,WAAW;KAC9C,kBAAkB,KAAA;KAClB,OAAO,OAAO,MAAM,SAAS;IAC/B;IACA,MAAM,UAAqC;KACzC;KACA,SAAS,QAAQ,IAAI,MAAM,SAAS,KAAK,CAAC;KAC1C,GAAI,oBAAoB,KAAA,KAAa,oBAAoB,MAAM,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/F;IACA,OAAO,IAAI,MAAM,WAAW,OAAO;IACnC,KAAK,QAAQ,MAAM,WAAW,OAAO;GACvC;GAEA,MAAM,UAAU,OAAO,UAAgE;IACrF,MAAM,QAAQ,aAAa,MAAM,aAAa,MAAM,eAAe,OAAO,oBAAoB,QAAQ,CAAC,CAAC;IACxG,IAAI,UAAU,KAAA,GAAW,MAAM,IAAI,MAAM,qDAAqD;IAC9F,QAAQ,OAAO,KAAK;IACpB,OAAO;GACT;GAEA,MAAM,kBAAkB,OAAO,OAA4B,YAAqD;IAC9G,IAAI,CAAC,KAAK,aAAa,WAAW,MAAM,IAAI,MAAM,mBAAmB;IACrE,IAAI;KACF,MAAM,SAAS,MAAM,KAAK,YAAY,QAAQ,OAAO;MACnD,WAAW,QAAQ;MACnB,SACE,QAAQ,cAAc,QAClB;OAAE,SAAS,QAAQ;OAAS,UAAU,QAAQ;OAAU,QAAQ,QAAQ;MAAQ,IAChF,EAAE,SAAS,QAAQ,QAAQ;KACnC,CAAC;KACD,MAAM,aACJ,MAAM,eAAe,OAAO,oBAAoB,aAAa,QAAQ;MAAE,IAAI,QAAQ;MAAI;KAAO,CAAC,CACjG;IACF,SAAS,OAAO;KACd,MAAM,aACJ,MAAM,eAAe,OAAO,oBAAoB,aAAa,QAAQ;MACnE,IAAI,QAAQ;MACZ,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;KAC9D,CAAC,CACH;IACF;GACF;GAEA,MAAM,cAAc,OAAO,UAA8C;IACvE,MAAM,gBAAiB,MAAM,aAC3B,MAAM,eAAe,OAAO,oBAAoB,gBAAgB,CAClE;IACA,IAAI;IACJ,IAAI,kBAAkB,QAAQ,KAAK,aAAa,WAC9C,IAAI;KACF,WAAW,MAAM,KAAK,YAAY,QAAQ,OAAO;MAC/C,WAAW;MACX,SAAS,EAAE,SAAS,cAAc,QAAQ;KAC5C,CAAC;IACH,SAAS,OAAO;KACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;KACrE,WAAW;MACT,YAAY,WAAW;MACvB,QAAQ;MACR,SAAS;OAAE,MAAM;OAAoB,SAAS,QAAQ,MAAM,GAAG,GAAG;MAAE;KACtE;KACA,KAAK,SAAS,sDAAsD,QAAQ,EAAE;IAChF;IAEF,MAAM,aAAa,MAAM,eAAe,OAAO,oBAAoB,SAAS,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjG,OAAO,OAAO,MAAM,SAAS;IAC7B,IAAI,oBAAoB,MAAM,WAAW,kBAAkB,KAAA;GAC7D;GAEA,MAAM,eAAe,OAAO,OAA4B,cAAsD;IAC5G,IAAI,UAAU,WAAW,IAAI,MAAM,SAAS,GAAG;IAC/C,WAAW,IAAI,MAAM,SAAS;IAC9B,IAAI;KACF,MAAM,QAAQ,aAAc,MAAM,QAAQ,KAAK;KAC/C,IAAI,MAAM,UAAU,UAAU;MAC5B,IAAI,CAAC,OAAO,IAAI,MAAM,SAAS,GAAG;OAChC,MAAM,gBAAiB,MAAM,aAC3B,MAAM,eAAe,OAAO,oBAAoB,gBAAgB,CAClE;OACA,IAAI,kBAAkB,MAAM,OAAO,IAAI,MAAM,WAAW,cAAc,OAAO;MAC/E;MACA,MAAM,UAAU,OAAO,MAAM,cAAc,YAAY,MAAM,aAAa,KAAK,IAAI;MACnF,IAAI,QAAQ;MACZ,IAAI,CAAC,WAAW,KAAK,aAAa,WAChC,IAAI;OAEF,QADmB,OAAO,MAAM,KAAK,YAAY,QAAQ,OAAO,EAAE,WAAW,SAAS,CAAC,CACtE,CAAC,EAAE,mBAAmB;MACzC,QAAQ;OACN,QAAQ;MACV;MAEF,IAAI,WAAW,CAAC,OAAO;OACrB,MAAM,YAAY,KAAK;OACvB,MAAM,QAAQ,KAAK;OACnB;MACF;KACF;KACA,IACE,MAAM,UAAU,4BACf,oBAAoB,KAAA,KAAa,oBAAoB,MAAM,YAC5D;MACA,MAAM,aAAc,MAAM,aACxB,MAAM,eAAe,OAAO,oBAAoB,aAAa,CAC/D;MACA,IAAI,eAAe,QAAQ,CAAC,KAAK,aAAa,WAAW;OAGvD,MAAM,aACJ,MAAM,eAAe,OAAO,oBAAoB,SAAS,QAAQ,EAAE,OAAO,oBAAoB,CAAC,CACjG;OACA,MAAM,QAAQ,KAAK;OACnB;MACF;MACA,IAAI,eAAe,QAAQ,KAAK,aAAa,WAAW;OACtD,kBAAkB,MAAM;OACxB,IAAI;QACF,MAAM,aAAa,MAAM,KAAK,YAAY,QAAQ,OAAO;SACvD,WAAW;SACX,SAAS;QACX,CAAC;QACD,MAAM,aACJ,MAAM,eAAe,OAAO,oBAAoB,SAAS,QAAQ,EAAE,MAAM,WAAW,CAAC,CACvF;QACA,MAAM,UAAU,OAAO,UAAU,CAAC,EAAE;QACpC,IAAI,OAAO,YAAY,UAAU,OAAO,IAAI,MAAM,WAAW,OAAO;OACtE,SAAS,OAAO;QACd,kBAAkB,KAAA;QAClB,MAAM,aACJ,MAAM,eAAe,OAAO,oBAAoB,SAAS,QAAQ,EAC/D,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAC9D,CAAC,CACH;OACF;OACA,MAAM,QAAQ,KAAK;MACrB;KACF;KACA,IAAI,MAAM,UAAU,YAAY;MAC9B,MAAM,YAAY,KAAK;MACvB,MAAM,QAAQ,KAAK;KACrB;KACA,MAAM,UAAW,MAAM,aACrB,MAAM,eAAe,OAAO,oBAAoB,OAAO,CACzD;KACA,IAAI,YAAY,MAAM,MAAM,gBAAgB,OAAO,OAAO;IAC5D,SAAS,OAAO;KACd,IAAI,iBAAiB,4BACnB,OAAO,OAAO,MAAM,SAAS;UAE7B,KAAK,SACH,0CAA0C,MAAM,UAAU,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,EACvH;IAEJ,UAAU;KACR,WAAW,OAAO,MAAM,SAAS;IACnC;GACF;GAEA,MAAM,WAAW,OAA4B,YAA2B;IACtE,MAAM,QAAQ,aAAa,OAAO;IAClC,IAAI,UAAU,KAAA,KAAa,MAAM,cAAc,MAAM,WAAW;IAChE,QAAQ,OAAO,KAAK;IACpB,aAAkB,OAAO,KAAK;GAChC;GAEA,kBAAkB,OAAO,YAAY;IACnC,MAAM,SAAS,QAAQ,OAAO;IAC9B,IAAI,WAAW,KAAA,GAAW;IAC1B,CAAM,YAAY;KAChB,IAAI;MACF,IAAI,OAAO,WAAW,WAAW;OAG/B,MAAM,SAAS,KAAK,aAAa,YAC7B,MAAM,KAAK,YAAY,QAAQ,OAAO,EAAE,WAAW,UAAU,CAAC,IAC9D,CAAC;OACL,QAAQ,IACN,MAAM,WACN,MAAM,QAAQ,MAAM,IAChB,OAAO,QAAQ,SAA0C,OAAO,IAAI,MAAM,KAAA,CAAS,IACnF,CAAC,CACP;MACF,OAAO,IAAI,OAAO,WAAW,QAC3B,MAAM,YAAY,KAAK;MAEzB,MAAM,QAAQ,KAAK;MACnB,aAAkB,KAAK;KACzB,SAAS,OAAO;MACd,IAAI,iBAAiB,4BACnB,OAAO,OAAO,MAAM,SAAS;WAE7B,KAAK,SACH,mCAAmC,MAAM,UAAU,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,EAChH;KAEJ;IACF,EAAA,CAAG;GACL;GAuDA,OAAO;IApDL,aAAa,UAAU,OAAO,IAAI,MAAM,SAAS;IACjD,aAAa,OAAO;KAClB,OAAO,IAAI,MAAM,WAAW,KAAK;KACjC,MAAM,cAAc,KAAK,aAAa,UACpC,wBACA,MAAM,YACL,YAAY,QAAQ,OAAO,OAAO,GACnC,EAAE,cAAc,KAAK,CACvB;KACA,cAAc,IAAI,MAAM,WAAW,WAAW;KAC9C,aAAkB,KAAK;IACzB;IACA,eAAe,WAAW;KACxB,MAAM,QAAQ,OAAO,IAAI,SAAS;KAClC,MAAM,UAAU,OAAO,IAAI,SAAS;KACpC,cAAc,IAAI,SAAS,CAAC,GAAG;KAC/B,cAAc,OAAO,SAAS;KAC9B,IAAI,UAAU,KAAA,KAAa,YAAY,KAAA,KAAa,KAAK,aAAa,WACpE,KAAU,YACP,QAAQ,OAAO;MAAE,WAAW;MAAQ,SAAS,EAAE,QAAQ;KAAE,CAAC,CAAC,CAC3D,OAAO,UACN,KAAK,SACH,wCAAwC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EAAE,EACjG,CACF;KAEJ,OAAO,OAAO,SAAS;KACvB,OAAO,OAAO,SAAS;KACvB,QAAQ,OAAO,SAAS;KACxB,OAAO,OAAO,SAAS;KACvB,WAAW,OAAO,SAAS;KAC3B,IAAI,oBAAoB,WAAW,kBAAkB,KAAA;IACvD;IACA,QAAQ;KACN,SAAS;KACT,KAAK,MAAM,eAAe,cAAc,OAAO,GAAG,YAAY;KAC9D,cAAc,MAAM;KACpB,IAAI,KAAK,aAAa,WACpB,KAAK,MAAM,CAAC,WAAW,YAAY,QAAQ;MACzC,MAAM,QAAQ,OAAO,IAAI,SAAS;MAClC,IAAI,UAAU,KAAA,GACZ,KAAU,YACP,QAAQ,OAAO;OAAE,WAAW;OAAQ,SAAS,EAAE,QAAQ;MAAE,CAAC,CAAC,CAC3D,YAAY,KAAA,CAAS;KAC5B;KAEF,OAAO,MAAM;KACb,OAAO,MAAM;KACb,QAAQ,MAAM;KACd,OAAO,MAAM;IACf;GAEU;EACd;EACA,QAAQ,OAAO,SAAS;GACtB,iBAAiB,OAAO,OAAO;EACjC;CACF;AACF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const require_computerUseApi = require("./computerUseApi.cjs");
|
|
2
|
+
let _agimon_ai_doompi_core_web = require("@agimon-ai/doompi-core/web");
|
|
3
|
+
//#region src/types/apiRoutes.ts
|
|
4
|
+
/**
|
|
5
|
+
* This package's routes, as data.
|
|
6
|
+
*
|
|
7
|
+
* No scope and no base path: the build reads both off
|
|
8
|
+
* `src/extensions/workspaces/sessions/(backend)/api/computer-use/`, so the
|
|
9
|
+
* mount is stated once, by the folder that creates it.
|
|
10
|
+
*
|
|
11
|
+
* The paths come from `COMPUTER_USE_ROUTES` rather than being written out
|
|
12
|
+
* again. That table already addressed the broker from the hub channel and from
|
|
13
|
+
* the broker's own dispatcher, and a second copy here is exactly the
|
|
14
|
+
* disagreement this file exists to prevent. The dispatcher now reads this
|
|
15
|
+
* table, so the page, the broker and the hub all resolve one set of strings.
|
|
16
|
+
*
|
|
17
|
+
* Only `activate` is reachable from a browser. The `/agent/` and `/hub/` routes
|
|
18
|
+
* each demand a host-issued bearer token and answer 404 without one; they are
|
|
19
|
+
* declared here because they are this API's surface, not because a page calls
|
|
20
|
+
* them.
|
|
21
|
+
*/
|
|
22
|
+
var apiRoutes_default = (0, _agimon_ai_doompi_core_web.defineApiRoutes)({
|
|
23
|
+
activate: {
|
|
24
|
+
method: "POST",
|
|
25
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.activate,
|
|
26
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
27
|
+
},
|
|
28
|
+
agentState: {
|
|
29
|
+
method: "GET",
|
|
30
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.agentState,
|
|
31
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
32
|
+
},
|
|
33
|
+
/** Answers whatever the admitted Desktop provider returned, which is runtime-defined JSON. */
|
|
34
|
+
agentObserve: {
|
|
35
|
+
method: "POST",
|
|
36
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.agentObserve,
|
|
37
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
38
|
+
},
|
|
39
|
+
agentAction: {
|
|
40
|
+
method: "POST",
|
|
41
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.agentAction,
|
|
42
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
43
|
+
},
|
|
44
|
+
agentStop: {
|
|
45
|
+
method: "POST",
|
|
46
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.agentStop,
|
|
47
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
48
|
+
},
|
|
49
|
+
hubState: {
|
|
50
|
+
method: "GET",
|
|
51
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubState,
|
|
52
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
53
|
+
},
|
|
54
|
+
/** Null until a reader has confirmed one; reading it moves the session to `activating`. */
|
|
55
|
+
hubActivation: {
|
|
56
|
+
method: "GET",
|
|
57
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubActivation,
|
|
58
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
59
|
+
},
|
|
60
|
+
hubAuthorization: {
|
|
61
|
+
method: "GET",
|
|
62
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubAuthorization,
|
|
63
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
64
|
+
},
|
|
65
|
+
hubNext: {
|
|
66
|
+
method: "GET",
|
|
67
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubNext,
|
|
68
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
69
|
+
},
|
|
70
|
+
hubComplete: {
|
|
71
|
+
method: "POST",
|
|
72
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubComplete,
|
|
73
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
74
|
+
},
|
|
75
|
+
hubStop: {
|
|
76
|
+
method: "POST",
|
|
77
|
+
path: require_computerUseApi.COMPUTER_USE_ROUTES.hubStop,
|
|
78
|
+
response: (0, _agimon_ai_doompi_core_web.apiResponse)()
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//#endregion
|
|
82
|
+
exports.default = apiRoutes_default;
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=apiRoutes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiRoutes.cjs","names":["defineApiRoutes","COMPUTER_USE_ROUTES","apiResponse"],"sources":["../../../src/types/apiRoutes.ts"],"sourcesContent":["import { apiResponse, defineApiRoutes } from '@agimon-ai/doompi-core/web';\n\nimport {\n COMPUTER_USE_ROUTES,\n type ComputerUseActivationRequest,\n type ComputerUseBrokerRequest,\n type ComputerUseSessionView,\n} from './computerUseApi';\n\n/**\n * This package's routes, as data.\n *\n * No scope and no base path: the build reads both off\n * `src/extensions/workspaces/sessions/(backend)/api/computer-use/`, so the\n * mount is stated once, by the folder that creates it.\n *\n * The paths come from `COMPUTER_USE_ROUTES` rather than being written out\n * again. That table already addressed the broker from the hub channel and from\n * the broker's own dispatcher, and a second copy here is exactly the\n * disagreement this file exists to prevent. The dispatcher now reads this\n * table, so the page, the broker and the hub all resolve one set of strings.\n *\n * Only `activate` is reachable from a browser. The `/agent/` and `/hub/` routes\n * each demand a host-issued bearer token and answer 404 without one; they are\n * declared here because they are this API's surface, not because a page calls\n * them.\n */\nexport default defineApiRoutes({\n activate: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.activate,\n response: apiResponse<ComputerUseSessionView>(),\n },\n agentState: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.agentState,\n response: apiResponse<ComputerUseSessionView>(),\n },\n /** Answers whatever the admitted Desktop provider returned, which is runtime-defined JSON. */\n agentObserve: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentObserve,\n response: apiResponse<unknown>(),\n },\n agentAction: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentAction,\n response: apiResponse<unknown>(),\n },\n agentStop: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentStop,\n response: apiResponse<ComputerUseSessionView>(),\n },\n hubState: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubState,\n response: apiResponse<ComputerUseSessionView>(),\n },\n /** Null until a reader has confirmed one; reading it moves the session to `activating`. */\n hubActivation: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubActivation,\n response: apiResponse<ComputerUseActivationRequest | null>(),\n },\n hubAuthorization: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubAuthorization,\n response: apiResponse<{ readonly grantId: string; readonly expiresAt?: number } | null>(),\n },\n hubNext: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubNext,\n response: apiResponse<ComputerUseBrokerRequest | null>(),\n },\n hubComplete: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.hubComplete,\n response: apiResponse<ComputerUseSessionView>(),\n },\n hubStop: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.hubStop,\n response: apiResponse<ComputerUseSessionView>(),\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2BA,IAAA,qBAAA,GAAeA,2BAAAA,gBAAAA,CAAgB;CAC7B,UAAU;EACR,QAAQ;EACR,MAAMC,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;CACA,YAAY;EACV,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;;CAEA,cAAc;EACZ,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAqB;CACjC;CACA,aAAa;EACX,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAqB;CACjC;CACA,WAAW;EACT,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;CACA,UAAU;EACR,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;;CAEA,eAAe;EACb,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAiD;CAC7D;CACA,kBAAkB;EAChB,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAA8E;CAC1F;CACA,SAAS;EACP,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAA6C;CACzD;CACA,aAAa;EACX,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;CACA,SAAS;EACP,QAAQ;EACR,MAAMD,uBAAAA,oBAAoB;EAC1B,WAAA,GAAUC,2BAAAA,YAAAA,CAAoC;CAChD;AACF,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { COMPUTER_USE_ROUTES } from "./computerUseApi.mjs";
|
|
2
|
+
import { apiResponse, defineApiRoutes } from "@agimon-ai/doompi-core/web";
|
|
3
|
+
//#region src/types/apiRoutes.ts
|
|
4
|
+
/**
|
|
5
|
+
* This package's routes, as data.
|
|
6
|
+
*
|
|
7
|
+
* No scope and no base path: the build reads both off
|
|
8
|
+
* `src/extensions/workspaces/sessions/(backend)/api/computer-use/`, so the
|
|
9
|
+
* mount is stated once, by the folder that creates it.
|
|
10
|
+
*
|
|
11
|
+
* The paths come from `COMPUTER_USE_ROUTES` rather than being written out
|
|
12
|
+
* again. That table already addressed the broker from the hub channel and from
|
|
13
|
+
* the broker's own dispatcher, and a second copy here is exactly the
|
|
14
|
+
* disagreement this file exists to prevent. The dispatcher now reads this
|
|
15
|
+
* table, so the page, the broker and the hub all resolve one set of strings.
|
|
16
|
+
*
|
|
17
|
+
* Only `activate` is reachable from a browser. The `/agent/` and `/hub/` routes
|
|
18
|
+
* each demand a host-issued bearer token and answer 404 without one; they are
|
|
19
|
+
* declared here because they are this API's surface, not because a page calls
|
|
20
|
+
* them.
|
|
21
|
+
*/
|
|
22
|
+
var apiRoutes_default = defineApiRoutes({
|
|
23
|
+
activate: {
|
|
24
|
+
method: "POST",
|
|
25
|
+
path: COMPUTER_USE_ROUTES.activate,
|
|
26
|
+
response: apiResponse()
|
|
27
|
+
},
|
|
28
|
+
agentState: {
|
|
29
|
+
method: "GET",
|
|
30
|
+
path: COMPUTER_USE_ROUTES.agentState,
|
|
31
|
+
response: apiResponse()
|
|
32
|
+
},
|
|
33
|
+
/** Answers whatever the admitted Desktop provider returned, which is runtime-defined JSON. */
|
|
34
|
+
agentObserve: {
|
|
35
|
+
method: "POST",
|
|
36
|
+
path: COMPUTER_USE_ROUTES.agentObserve,
|
|
37
|
+
response: apiResponse()
|
|
38
|
+
},
|
|
39
|
+
agentAction: {
|
|
40
|
+
method: "POST",
|
|
41
|
+
path: COMPUTER_USE_ROUTES.agentAction,
|
|
42
|
+
response: apiResponse()
|
|
43
|
+
},
|
|
44
|
+
agentStop: {
|
|
45
|
+
method: "POST",
|
|
46
|
+
path: COMPUTER_USE_ROUTES.agentStop,
|
|
47
|
+
response: apiResponse()
|
|
48
|
+
},
|
|
49
|
+
hubState: {
|
|
50
|
+
method: "GET",
|
|
51
|
+
path: COMPUTER_USE_ROUTES.hubState,
|
|
52
|
+
response: apiResponse()
|
|
53
|
+
},
|
|
54
|
+
/** Null until a reader has confirmed one; reading it moves the session to `activating`. */
|
|
55
|
+
hubActivation: {
|
|
56
|
+
method: "GET",
|
|
57
|
+
path: COMPUTER_USE_ROUTES.hubActivation,
|
|
58
|
+
response: apiResponse()
|
|
59
|
+
},
|
|
60
|
+
hubAuthorization: {
|
|
61
|
+
method: "GET",
|
|
62
|
+
path: COMPUTER_USE_ROUTES.hubAuthorization,
|
|
63
|
+
response: apiResponse()
|
|
64
|
+
},
|
|
65
|
+
hubNext: {
|
|
66
|
+
method: "GET",
|
|
67
|
+
path: COMPUTER_USE_ROUTES.hubNext,
|
|
68
|
+
response: apiResponse()
|
|
69
|
+
},
|
|
70
|
+
hubComplete: {
|
|
71
|
+
method: "POST",
|
|
72
|
+
path: COMPUTER_USE_ROUTES.hubComplete,
|
|
73
|
+
response: apiResponse()
|
|
74
|
+
},
|
|
75
|
+
hubStop: {
|
|
76
|
+
method: "POST",
|
|
77
|
+
path: COMPUTER_USE_ROUTES.hubStop,
|
|
78
|
+
response: apiResponse()
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
//#endregion
|
|
82
|
+
export { apiRoutes_default as default };
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=apiRoutes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiRoutes.mjs","names":[],"sources":["../../../src/types/apiRoutes.ts"],"sourcesContent":["import { apiResponse, defineApiRoutes } from '@agimon-ai/doompi-core/web';\n\nimport {\n COMPUTER_USE_ROUTES,\n type ComputerUseActivationRequest,\n type ComputerUseBrokerRequest,\n type ComputerUseSessionView,\n} from './computerUseApi';\n\n/**\n * This package's routes, as data.\n *\n * No scope and no base path: the build reads both off\n * `src/extensions/workspaces/sessions/(backend)/api/computer-use/`, so the\n * mount is stated once, by the folder that creates it.\n *\n * The paths come from `COMPUTER_USE_ROUTES` rather than being written out\n * again. That table already addressed the broker from the hub channel and from\n * the broker's own dispatcher, and a second copy here is exactly the\n * disagreement this file exists to prevent. The dispatcher now reads this\n * table, so the page, the broker and the hub all resolve one set of strings.\n *\n * Only `activate` is reachable from a browser. The `/agent/` and `/hub/` routes\n * each demand a host-issued bearer token and answer 404 without one; they are\n * declared here because they are this API's surface, not because a page calls\n * them.\n */\nexport default defineApiRoutes({\n activate: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.activate,\n response: apiResponse<ComputerUseSessionView>(),\n },\n agentState: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.agentState,\n response: apiResponse<ComputerUseSessionView>(),\n },\n /** Answers whatever the admitted Desktop provider returned, which is runtime-defined JSON. */\n agentObserve: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentObserve,\n response: apiResponse<unknown>(),\n },\n agentAction: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentAction,\n response: apiResponse<unknown>(),\n },\n agentStop: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.agentStop,\n response: apiResponse<ComputerUseSessionView>(),\n },\n hubState: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubState,\n response: apiResponse<ComputerUseSessionView>(),\n },\n /** Null until a reader has confirmed one; reading it moves the session to `activating`. */\n hubActivation: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubActivation,\n response: apiResponse<ComputerUseActivationRequest | null>(),\n },\n hubAuthorization: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubAuthorization,\n response: apiResponse<{ readonly grantId: string; readonly expiresAt?: number } | null>(),\n },\n hubNext: {\n method: 'GET',\n path: COMPUTER_USE_ROUTES.hubNext,\n response: apiResponse<ComputerUseBrokerRequest | null>(),\n },\n hubComplete: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.hubComplete,\n response: apiResponse<ComputerUseSessionView>(),\n },\n hubStop: {\n method: 'POST',\n path: COMPUTER_USE_ROUTES.hubStop,\n response: apiResponse<ComputerUseSessionView>(),\n },\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA2BA,IAAA,oBAAe,gBAAgB;CAC7B,UAAU;EACR,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;CACA,YAAY;EACV,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;;CAEA,cAAc;EACZ,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAqB;CACjC;CACA,aAAa;EACX,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAqB;CACjC;CACA,WAAW;EACT,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;CACA,UAAU;EACR,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;;CAEA,eAAe;EACb,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAiD;CAC7D;CACA,kBAAkB;EAChB,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAA8E;CAC1F;CACA,SAAS;EACP,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAA6C;CACzD;CACA,aAAa;EACX,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;CACA,SAAS;EACP,QAAQ;EACR,MAAM,oBAAoB;EAC1B,UAAU,YAAoC;CAChD;AACF,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ComputerUseAction, ComputerUseObservation } from "./computerUse.cjs";
|
|
2
|
+
import { ComputerUseSessionClient } from "../services/sessionApiClient/index.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 "../services/sessionApiClient/index.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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|