@hoilab/ada-cli 0.84.22 → 0.85.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -2
- package/README.es.md +17 -6
- package/README.md +109 -11
- package/dist/ada-publico.d.ts +35 -0
- package/dist/ada-publico.d.ts.map +1 -0
- package/dist/ada-publico.js +40 -0
- package/dist/ada-publico.js.map +1 -0
- package/dist/cli/audit-command.d.ts +15 -0
- package/dist/cli/audit-command.d.ts.map +1 -0
- package/dist/cli/audit-command.js +280 -0
- package/dist/cli/audit-command.js.map +1 -0
- package/dist/cli/banco-command.d.ts +15 -0
- package/dist/cli/banco-command.d.ts.map +1 -0
- package/dist/cli/banco-command.js +213 -0
- package/dist/cli/banco-command.js.map +1 -0
- package/dist/cli/cleanse-command.d.ts +11 -0
- package/dist/cli/cleanse-command.d.ts.map +1 -0
- package/dist/cli/cleanse-command.js +101 -0
- package/dist/cli/cleanse-command.js.map +1 -0
- package/dist/cli/commit-command.d.ts +31 -0
- package/dist/cli/commit-command.d.ts.map +1 -0
- package/dist/cli/commit-command.js +158 -0
- package/dist/cli/commit-command.js.map +1 -0
- package/dist/cli/computer-command.d.ts +12 -0
- package/dist/cli/computer-command.d.ts.map +1 -0
- package/dist/cli/computer-command.js +141 -0
- package/dist/cli/computer-command.js.map +1 -0
- package/dist/cli/discover-command.d.ts +18 -0
- package/dist/cli/discover-command.d.ts.map +1 -0
- package/dist/cli/discover-command.js +108 -0
- package/dist/cli/discover-command.js.map +1 -0
- package/dist/cli/hashline-command.d.ts +11 -0
- package/dist/cli/hashline-command.d.ts.map +1 -0
- package/dist/cli/hashline-command.js +106 -0
- package/dist/cli/hashline-command.js.map +1 -0
- package/dist/cli/import-command.d.ts +35 -0
- package/dist/cli/import-command.d.ts.map +1 -0
- package/dist/cli/import-command.js +164 -0
- package/dist/cli/import-command.js.map +1 -0
- package/dist/cli/politica-command.d.ts +20 -0
- package/dist/cli/politica-command.d.ts.map +1 -0
- package/dist/cli/politica-command.js +93 -0
- package/dist/cli/politica-command.js.map +1 -0
- package/dist/cli/refine-command.d.ts +18 -0
- package/dist/cli/refine-command.d.ts.map +1 -0
- package/dist/cli/refine-command.js +101 -0
- package/dist/cli/refine-command.js.map +1 -0
- package/dist/cli/review-command.d.ts +24 -0
- package/dist/cli/review-command.d.ts.map +1 -0
- package/dist/cli/review-command.js +168 -0
- package/dist/cli/review-command.js.map +1 -0
- package/dist/cli/schedule-command.d.ts +17 -0
- package/dist/cli/schedule-command.d.ts.map +1 -0
- package/dist/cli/schedule-command.js +117 -0
- package/dist/cli/schedule-command.js.map +1 -0
- package/dist/cli/serve-command.d.ts +72 -0
- package/dist/cli/serve-command.d.ts.map +1 -0
- package/dist/cli/serve-command.js +568 -0
- package/dist/cli/serve-command.js.map +1 -0
- package/dist/cli/telegram-command.d.ts +18 -0
- package/dist/cli/telegram-command.d.ts.map +1 -0
- package/dist/cli/telegram-command.js +137 -0
- package/dist/cli/telegram-command.js.map +1 -0
- package/dist/cli/telemetria-command.d.ts +22 -0
- package/dist/cli/telemetria-command.d.ts.map +1 -0
- package/dist/cli/telemetria-command.js +127 -0
- package/dist/cli/telemetria-command.js.map +1 -0
- package/dist/cli/undo-command.d.ts +9 -0
- package/dist/cli/undo-command.d.ts.map +1 -0
- package/dist/cli/undo-command.js +56 -0
- package/dist/cli/undo-command.js.map +1 -0
- package/dist/cli/usage-command.d.ts +10 -0
- package/dist/cli/usage-command.d.ts.map +1 -0
- package/dist/cli/usage-command.js +209 -0
- package/dist/cli/usage-command.js.map +1 -0
- package/dist/cli/wiki-command.d.ts +9 -0
- package/dist/cli/wiki-command.d.ts.map +1 -0
- package/dist/cli/wiki-command.js +76 -0
- package/dist/cli/wiki-command.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/core/ada.d.ts +58 -0
- package/dist/core/ada.d.ts.map +1 -0
- package/dist/core/ada.js +61 -0
- package/dist/core/ada.js.map +1 -0
- package/dist/core/advisor/guarda.d.ts +66 -0
- package/dist/core/advisor/guarda.d.ts.map +1 -0
- package/dist/core/advisor/guarda.js +191 -0
- package/dist/core/advisor/guarda.js.map +1 -0
- package/dist/core/advisor/runtime.d.ts +66 -0
- package/dist/core/advisor/runtime.d.ts.map +1 -0
- package/dist/core/advisor/runtime.js +121 -0
- package/dist/core/advisor/runtime.js.map +1 -0
- package/dist/core/advisor/sesion.d.ts +109 -0
- package/dist/core/advisor/sesion.d.ts.map +1 -0
- package/dist/core/advisor/sesion.js +139 -0
- package/dist/core/advisor/sesion.js.map +1 -0
- package/dist/core/agent-session.d.ts +30 -2
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +430 -22
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/agents/loader.d.ts +77 -0
- package/dist/core/agents/loader.d.ts.map +1 -0
- package/dist/core/agents/loader.js +154 -0
- package/dist/core/agents/loader.js.map +1 -0
- package/dist/core/aprobacion/generados.d.ts +37 -0
- package/dist/core/aprobacion/generados.d.ts.map +1 -0
- package/dist/core/aprobacion/generados.js +85 -0
- package/dist/core/aprobacion/generados.js.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts +90 -0
- package/dist/core/aprobacion/politica-de-maquina.d.ts.map +1 -0
- package/dist/core/aprobacion/politica-de-maquina.js +212 -0
- package/dist/core/aprobacion/politica-de-maquina.js.map +1 -0
- package/dist/core/aprobacion/politica.d.ts +90 -0
- package/dist/core/aprobacion/politica.d.ts.map +1 -0
- package/dist/core/aprobacion/politica.js +375 -0
- package/dist/core/aprobacion/politica.js.map +1 -0
- package/dist/core/arranque/atajos.d.ts +46 -0
- package/dist/core/arranque/atajos.d.ts.map +1 -0
- package/dist/core/arranque/atajos.js +113 -0
- package/dist/core/arranque/atajos.js.map +1 -0
- package/dist/core/audit/exportacion.d.ts +54 -0
- package/dist/core/audit/exportacion.d.ts.map +1 -0
- package/dist/core/audit/exportacion.js +265 -0
- package/dist/core/audit/exportacion.js.map +1 -0
- package/dist/core/audit/libro.d.ts +318 -0
- package/dist/core/audit/libro.d.ts.map +1 -0
- package/dist/core/audit/libro.js +508 -0
- package/dist/core/audit/libro.js.map +1 -0
- package/dist/core/audit/registro-sesion.d.ts +78 -0
- package/dist/core/audit/registro-sesion.d.ts.map +1 -0
- package/dist/core/audit/registro-sesion.js +202 -0
- package/dist/core/audit/registro-sesion.js.map +1 -0
- package/dist/core/audit/retencion.d.ts +82 -0
- package/dist/core/audit/retencion.d.ts.map +1 -0
- package/dist/core/audit/retencion.js +152 -0
- package/dist/core/audit/retencion.js.map +1 -0
- package/dist/core/audit/rutas.d.ts +23 -0
- package/dist/core/audit/rutas.d.ts.map +1 -0
- package/dist/core/audit/rutas.js +23 -0
- package/dist/core/audit/rutas.js.map +1 -0
- package/dist/core/auth-storage.d.ts +0 -3
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +17 -5
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/banco/almacenamiento.d.ts +18 -0
- package/dist/core/banco/almacenamiento.d.ts.map +1 -0
- package/dist/core/banco/almacenamiento.js +50 -0
- package/dist/core/banco/almacenamiento.js.map +1 -0
- package/dist/core/banco/analisis.d.ts +37 -0
- package/dist/core/banco/analisis.d.ts.map +1 -0
- package/dist/core/banco/analisis.js +164 -0
- package/dist/core/banco/analisis.js.map +1 -0
- package/dist/core/banco/bloques.d.ts +39 -0
- package/dist/core/banco/bloques.d.ts.map +1 -0
- package/dist/core/banco/bloques.js +84 -0
- package/dist/core/banco/bloques.js.map +1 -0
- package/dist/core/banco/cargas.d.ts +84 -0
- package/dist/core/banco/cargas.d.ts.map +1 -0
- package/dist/core/banco/cargas.js +520 -0
- package/dist/core/banco/cargas.js.map +1 -0
- package/dist/core/banco/comparar.d.ts +29 -0
- package/dist/core/banco/comparar.d.ts.map +1 -0
- package/dist/core/banco/comparar.js +28 -0
- package/dist/core/banco/comparar.js.map +1 -0
- package/dist/core/banco/ejecutar.d.ts +44 -0
- package/dist/core/banco/ejecutar.d.ts.map +1 -0
- package/dist/core/banco/ejecutar.js +183 -0
- package/dist/core/banco/ejecutar.js.map +1 -0
- package/dist/core/banco/generar.d.ts +24 -0
- package/dist/core/banco/generar.d.ts.map +1 -0
- package/dist/core/banco/generar.js +159 -0
- package/dist/core/banco/generar.js.map +1 -0
- package/dist/core/banco/mutaciones.d.ts +25 -0
- package/dist/core/banco/mutaciones.d.ts.map +1 -0
- package/dist/core/banco/mutaciones.js +215 -0
- package/dist/core/banco/mutaciones.js.map +1 -0
- package/dist/core/banco/tipos.d.ts +121 -0
- package/dist/core/banco/tipos.d.ts.map +1 -0
- package/dist/core/banco/tipos.js +16 -0
- package/dist/core/banco/tipos.js.map +1 -0
- package/dist/core/blobs/almacen.d.ts +81 -0
- package/dist/core/blobs/almacen.d.ts.map +1 -0
- package/dist/core/blobs/almacen.js +198 -0
- package/dist/core/blobs/almacen.js.map +1 -0
- package/dist/core/blobs/broker.d.ts +103 -0
- package/dist/core/blobs/broker.d.ts.map +1 -0
- package/dist/core/blobs/broker.js +204 -0
- package/dist/core/blobs/broker.js.map +1 -0
- package/dist/core/blobs/index.d.ts +70 -0
- package/dist/core/blobs/index.d.ts.map +1 -0
- package/dist/core/blobs/index.js +232 -0
- package/dist/core/blobs/index.js.map +1 -0
- package/dist/core/blobs/payload.d.ts +55 -0
- package/dist/core/blobs/payload.d.ts.map +1 -0
- package/dist/core/blobs/payload.js +255 -0
- package/dist/core/blobs/payload.js.map +1 -0
- package/dist/core/blobs/proveedor.d.ts +85 -0
- package/dist/core/blobs/proveedor.d.ts.map +1 -0
- package/dist/core/blobs/proveedor.js +196 -0
- package/dist/core/blobs/proveedor.js.map +1 -0
- package/dist/core/browser/cdp.d.ts +41 -0
- package/dist/core/browser/cdp.d.ts.map +1 -0
- package/dist/core/browser/cdp.js +119 -0
- package/dist/core/browser/cdp.js.map +1 -0
- package/dist/core/browser/politica.d.ts +51 -0
- package/dist/core/browser/politica.d.ts.map +1 -0
- package/dist/core/browser/politica.js +123 -0
- package/dist/core/browser/politica.js.map +1 -0
- package/dist/core/browser/sesion.d.ts +52 -0
- package/dist/core/browser/sesion.d.ts.map +1 -0
- package/dist/core/browser/sesion.js +176 -0
- package/dist/core/browser/sesion.js.map +1 -0
- package/dist/core/browser/tools.d.ts +16 -0
- package/dist/core/browser/tools.d.ts.map +1 -0
- package/dist/core/browser/tools.js +279 -0
- package/dist/core/browser/tools.js.map +1 -0
- package/dist/core/commit/diff.d.ts +56 -0
- package/dist/core/commit/diff.d.ts.map +1 -0
- package/dist/core/commit/diff.js +145 -0
- package/dist/core/commit/diff.js.map +1 -0
- package/dist/core/commit/mensaje.d.ts +80 -0
- package/dist/core/commit/mensaje.d.ts.map +1 -0
- package/dist/core/commit/mensaje.js +207 -0
- package/dist/core/commit/mensaje.js.map +1 -0
- package/dist/core/compactar/index.d.ts +52 -0
- package/dist/core/compactar/index.d.ts.map +1 -0
- package/dist/core/compactar/index.js +91 -0
- package/dist/core/compactar/index.js.map +1 -0
- package/dist/core/compactar/registro-denso.d.ts +160 -0
- package/dist/core/compactar/registro-denso.d.ts.map +1 -0
- package/dist/core/compactar/registro-denso.js +620 -0
- package/dist/core/compactar/registro-denso.js.map +1 -0
- package/dist/core/computer/captura.d.ts +35 -0
- package/dist/core/computer/captura.d.ts.map +1 -0
- package/dist/core/computer/captura.js +140 -0
- package/dist/core/computer/captura.js.map +1 -0
- package/dist/core/computer/driver.d.ts +130 -0
- package/dist/core/computer/driver.d.ts.map +1 -0
- package/dist/core/computer/driver.js +206 -0
- package/dist/core/computer/driver.js.map +1 -0
- package/dist/core/computer/motor/actions.d.ts +109 -0
- package/dist/core/computer/motor/actions.d.ts.map +1 -0
- package/dist/core/computer/motor/actions.js +157 -0
- package/dist/core/computer/motor/actions.js.map +1 -0
- package/dist/core/computer/motor/bridge.d.ts +232 -0
- package/dist/core/computer/motor/bridge.d.ts.map +1 -0
- package/dist/core/computer/motor/bridge.js +2335 -0
- package/dist/core/computer/motor/bridge.js.map +1 -0
- package/dist/core/computer/motor/cdp.d.ts +107 -0
- package/dist/core/computer/motor/cdp.d.ts.map +1 -0
- package/dist/core/computer/motor/cdp.js +659 -0
- package/dist/core/computer/motor/cdp.js.map +1 -0
- package/dist/core/computer/motor/config.d.ts +23 -0
- package/dist/core/computer/motor/config.d.ts.map +1 -0
- package/dist/core/computer/motor/config.js +100 -0
- package/dist/core/computer/motor/config.js.map +1 -0
- package/dist/core/computer/motor/contract.d.ts +81 -0
- package/dist/core/computer/motor/contract.d.ts.map +1 -0
- package/dist/core/computer/motor/contract.js +14 -0
- package/dist/core/computer/motor/contract.js.map +1 -0
- package/dist/core/computer/motor/note.d.ts +37 -0
- package/dist/core/computer/motor/note.d.ts.map +1 -0
- package/dist/core/computer/motor/note.js +162 -0
- package/dist/core/computer/motor/note.js.map +1 -0
- package/dist/core/computer/motor/outline.d.ts +155 -0
- package/dist/core/computer/motor/outline.d.ts.map +1 -0
- package/dist/core/computer/motor/outline.js +590 -0
- package/dist/core/computer/motor/outline.js.map +1 -0
- package/dist/core/computer/motor/output.d.ts +18 -0
- package/dist/core/computer/motor/output.d.ts.map +1 -0
- package/dist/core/computer/motor/output.js +148 -0
- package/dist/core/computer/motor/output.js.map +1 -0
- package/dist/core/computer/motor/permissions.d.ts +41 -0
- package/dist/core/computer/motor/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/permissions.js +51 -0
- package/dist/core/computer/motor/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/architecture.d.ts +5 -0
- package/dist/core/computer/motor/platform/architecture.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/architecture.js +21 -0
- package/dist/core/computer/motor/platform/architecture.js.map +1 -0
- package/dist/core/computer/motor/platform/coerce.d.ts +4 -0
- package/dist/core/computer/motor/platform/coerce.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/coerce.js +17 -0
- package/dist/core/computer/motor/platform/coerce.js.map +1 -0
- package/dist/core/computer/motor/platform/index.d.ts +4 -0
- package/dist/core/computer/motor/platform/index.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/index.js +79 -0
- package/dist/core/computer/motor/platform/index.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/linux/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/backend.js +173 -0
- package/dist/core/computer/motor/platform/linux/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts +29 -0
- package/dist/core/computer/motor/platform/linux/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/linux/helper.js +261 -0
- package/dist/core/computer/motor/platform/linux/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/macos/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/backend.js +124 -0
- package/dist/core/computer/motor/platform/macos/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts +7 -0
- package/dist/core/computer/motor/platform/macos/browser.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/browser.js +101 -0
- package/dist/core/computer/motor/platform/macos/browser.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper-path.mjs +34 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts +32 -0
- package/dist/core/computer/motor/platform/macos/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/helper.js +277 -0
- package/dist/core/computer/motor/platform/macos/helper.js.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts +4 -0
- package/dist/core/computer/motor/platform/macos/permissions.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/macos/permissions.js +118 -0
- package/dist/core/computer/motor/platform/macos/permissions.js.map +1 -0
- package/dist/core/computer/motor/platform/types.d.ts +263 -0
- package/dist/core/computer/motor/platform/types.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/types.js +2 -0
- package/dist/core/computer/motor/platform/types.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts +3 -0
- package/dist/core/computer/motor/platform/windows/backend.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/backend.js +163 -0
- package/dist/core/computer/motor/platform/windows/backend.js.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts +18 -0
- package/dist/core/computer/motor/platform/windows/helper.d.ts.map +1 -0
- package/dist/core/computer/motor/platform/windows/helper.js +174 -0
- package/dist/core/computer/motor/platform/windows/helper.js.map +1 -0
- package/dist/core/computer/motor/root-selection.d.ts +6 -0
- package/dist/core/computer/motor/root-selection.d.ts.map +1 -0
- package/dist/core/computer/motor/root-selection.js +28 -0
- package/dist/core/computer/motor/root-selection.js.map +1 -0
- package/dist/core/computer/motor/runtime.d.ts +50 -0
- package/dist/core/computer/motor/runtime.d.ts.map +1 -0
- package/dist/core/computer/motor/runtime.js +119 -0
- package/dist/core/computer/motor/runtime.js.map +1 -0
- package/dist/core/computer/motor/state.d.ts +68 -0
- package/dist/core/computer/motor/state.d.ts.map +1 -0
- package/dist/core/computer/motor/state.js +100 -0
- package/dist/core/computer/motor/state.js.map +1 -0
- package/dist/core/computer/motor/view.d.ts +6 -0
- package/dist/core/computer/motor/view.d.ts.map +1 -0
- package/dist/core/computer/motor/view.js +185 -0
- package/dist/core/computer/motor/view.js.map +1 -0
- package/dist/core/computer/motor-ada.d.ts +159 -0
- package/dist/core/computer/motor-ada.d.ts.map +1 -0
- package/dist/core/computer/motor-ada.js +412 -0
- package/dist/core/computer/motor-ada.js.map +1 -0
- package/dist/core/computer/politica.d.ts +56 -0
- package/dist/core/computer/politica.d.ts.map +1 -0
- package/dist/core/computer/politica.js +163 -0
- package/dist/core/computer/politica.js.map +1 -0
- package/dist/core/computer/tools.d.ts +26 -0
- package/dist/core/computer/tools.d.ts.map +1 -0
- package/dist/core/computer/tools.js +399 -0
- package/dist/core/computer/tools.js.map +1 -0
- package/dist/core/context-breakdown.d.ts +80 -0
- package/dist/core/context-breakdown.d.ts.map +1 -0
- package/dist/core/context-breakdown.js +87 -0
- package/dist/core/context-breakdown.js.map +1 -0
- package/dist/core/credenciales/cliente.d.ts +60 -0
- package/dist/core/credenciales/cliente.d.ts.map +1 -0
- package/dist/core/credenciales/cliente.js +81 -0
- package/dist/core/credenciales/cliente.js.map +1 -0
- package/dist/core/credenciales/pool.d.ts +96 -0
- package/dist/core/credenciales/pool.d.ts.map +1 -0
- package/dist/core/credenciales/pool.js +128 -0
- package/dist/core/credenciales/pool.js.map +1 -0
- package/dist/core/credenciales/reposo.d.ts +93 -0
- package/dist/core/credenciales/reposo.d.ts.map +1 -0
- package/dist/core/credenciales/reposo.js +489 -0
- package/dist/core/credenciales/reposo.js.map +1 -0
- package/dist/core/credenciales/servidor.d.ts +55 -0
- package/dist/core/credenciales/servidor.d.ts.map +1 -0
- package/dist/core/credenciales/servidor.js +205 -0
- package/dist/core/credenciales/servidor.js.map +1 -0
- package/dist/core/descubrimiento/comandos.d.ts +30 -0
- package/dist/core/descubrimiento/comandos.d.ts.map +1 -0
- package/dist/core/descubrimiento/comandos.js +76 -0
- package/dist/core/descubrimiento/comandos.js.map +1 -0
- package/dist/core/descubrimiento/mcp.d.ts +42 -0
- package/dist/core/descubrimiento/mcp.d.ts.map +1 -0
- package/dist/core/descubrimiento/mcp.js +130 -0
- package/dist/core/descubrimiento/mcp.js.map +1 -0
- package/dist/core/descubrimiento/reglas.d.ts +61 -0
- package/dist/core/descubrimiento/reglas.d.ts.map +1 -0
- package/dist/core/descubrimiento/reglas.js +134 -0
- package/dist/core/descubrimiento/reglas.js.map +1 -0
- package/dist/core/descubrimiento/skills.d.ts +57 -0
- package/dist/core/descubrimiento/skills.d.ts.map +1 -0
- package/dist/core/descubrimiento/skills.js +113 -0
- package/dist/core/descubrimiento/skills.js.map +1 -0
- package/dist/core/dificultad/clasificador.d.ts +133 -0
- package/dist/core/dificultad/clasificador.d.ts.map +1 -0
- package/dist/core/dificultad/clasificador.js +288 -0
- package/dist/core/dificultad/clasificador.js.map +1 -0
- package/dist/core/edicion/diario.d.ts +37 -0
- package/dist/core/edicion/diario.d.ts.map +1 -0
- package/dist/core/edicion/diario.js +51 -0
- package/dist/core/edicion/diario.js.map +1 -0
- package/dist/core/edicion/hashline.d.ts +71 -0
- package/dist/core/edicion/hashline.d.ts.map +1 -0
- package/dist/core/edicion/hashline.js +111 -0
- package/dist/core/edicion/hashline.js.map +1 -0
- package/dist/core/edicion/hueco.d.ts +64 -0
- package/dist/core/edicion/hueco.d.ts.map +1 -0
- package/dist/core/edicion/hueco.js +162 -0
- package/dist/core/edicion/hueco.js.map +1 -0
- package/dist/core/edicion/limpiar-carga.d.ts +39 -0
- package/dist/core/edicion/limpiar-carga.d.ts.map +1 -0
- package/dist/core/edicion/limpiar-carga.js +121 -0
- package/dist/core/edicion/limpiar-carga.js.map +1 -0
- package/dist/core/edicion/observador.d.ts +80 -0
- package/dist/core/edicion/observador.d.ts.map +1 -0
- package/dist/core/edicion/observador.js +183 -0
- package/dist/core/edicion/observador.js.map +1 -0
- package/dist/core/edicion/parecido.d.ts +53 -0
- package/dist/core/edicion/parecido.d.ts.map +1 -0
- package/dist/core/edicion/parecido.js +145 -0
- package/dist/core/edicion/parecido.js.map +1 -0
- package/dist/core/edicion/parseo.d.ts +58 -0
- package/dist/core/edicion/parseo.d.ts.map +1 -0
- package/dist/core/edicion/parseo.js +124 -0
- package/dist/core/edicion/parseo.js.map +1 -0
- package/dist/core/edicion/reparacion.d.ts +67 -0
- package/dist/core/edicion/reparacion.d.ts.map +1 -0
- package/dist/core/edicion/reparacion.js +202 -0
- package/dist/core/edicion/reparacion.js.map +1 -0
- package/dist/core/edicion/sangria.d.ts +121 -0
- package/dist/core/edicion/sangria.d.ts.map +1 -0
- package/dist/core/edicion/sangria.js +341 -0
- package/dist/core/edicion/sangria.js.map +1 -0
- package/dist/core/edicion/tipos.d.ts +58 -0
- package/dist/core/edicion/tipos.d.ts.map +1 -0
- package/dist/core/edicion/tipos.js +160 -0
- package/dist/core/edicion/tipos.js.map +1 -0
- package/dist/core/errores/proveedor.d.ts +53 -0
- package/dist/core/errores/proveedor.d.ts.map +1 -0
- package/dist/core/errores/proveedor.js +191 -0
- package/dist/core/errores/proveedor.js.map +1 -0
- package/dist/core/estructural/buscar.d.ts +61 -0
- package/dist/core/estructural/buscar.d.ts.map +1 -0
- package/dist/core/estructural/buscar.js +261 -0
- package/dist/core/estructural/buscar.js.map +1 -0
- package/dist/core/estructural/editar.d.ts +36 -0
- package/dist/core/estructural/editar.d.ts.map +1 -0
- package/dist/core/estructural/editar.js +123 -0
- package/dist/core/estructural/editar.js.map +1 -0
- package/dist/core/estructural/tools.d.ts +11 -0
- package/dist/core/estructural/tools.d.ts.map +1 -0
- package/dist/core/estructural/tools.js +100 -0
- package/dist/core/estructural/tools.js.map +1 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +10 -1
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/extensiones/suplantacion.d.ts +49 -0
- package/dist/core/extensiones/suplantacion.d.ts.map +1 -0
- package/dist/core/extensiones/suplantacion.js +61 -0
- package/dist/core/extensiones/suplantacion.js.map +1 -0
- package/dist/core/extensiones/vigilancia.d.ts +54 -0
- package/dist/core/extensiones/vigilancia.d.ts.map +1 -0
- package/dist/core/extensiones/vigilancia.js +217 -0
- package/dist/core/extensiones/vigilancia.js.map +1 -0
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +11 -1
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/harness/fuentes-de-contexto.d.ts +29 -0
- package/dist/core/harness/fuentes-de-contexto.d.ts.map +1 -0
- package/dist/core/harness/fuentes-de-contexto.js +44 -0
- package/dist/core/harness/fuentes-de-contexto.js.map +1 -0
- package/dist/core/harness/refine.d.ts +40 -0
- package/dist/core/harness/refine.d.ts.map +1 -0
- package/dist/core/harness/refine.js +109 -0
- package/dist/core/harness/refine.js.map +1 -0
- package/dist/core/harness/store.d.ts +75 -0
- package/dist/core/harness/store.d.ts.map +1 -0
- package/dist/core/harness/store.js +149 -0
- package/dist/core/harness/store.js.map +1 -0
- package/dist/core/hooks/contract.d.ts +85 -0
- package/dist/core/hooks/contract.d.ts.map +1 -0
- package/dist/core/hooks/contract.js +140 -0
- package/dist/core/hooks/contract.js.map +1 -0
- package/dist/core/hooks/runner.d.ts +42 -0
- package/dist/core/hooks/runner.d.ts.map +1 -0
- package/dist/core/hooks/runner.js +85 -0
- package/dist/core/hooks/runner.js.map +1 -0
- package/dist/core/hooks/session-hooks.d.ts +62 -0
- package/dist/core/hooks/session-hooks.d.ts.map +1 -0
- package/dist/core/hooks/session-hooks.js +84 -0
- package/dist/core/hooks/session-hooks.js.map +1 -0
- package/dist/core/importar/formatos.d.ts +69 -0
- package/dist/core/importar/formatos.d.ts.map +1 -0
- package/dist/core/importar/formatos.js +235 -0
- package/dist/core/importar/formatos.js.map +1 -0
- package/dist/core/interactivo/deteccion.d.ts +44 -0
- package/dist/core/interactivo/deteccion.d.ts.map +1 -0
- package/dist/core/interactivo/deteccion.js +82 -0
- package/dist/core/interactivo/deteccion.js.map +1 -0
- package/dist/core/interactivo/sesion.d.ts +50 -0
- package/dist/core/interactivo/sesion.d.ts.map +1 -0
- package/dist/core/interactivo/sesion.js +156 -0
- package/dist/core/interactivo/sesion.js.map +1 -0
- package/dist/core/interactivo/tools.d.ts +21 -0
- package/dist/core/interactivo/tools.d.ts.map +1 -0
- package/dist/core/interactivo/tools.js +122 -0
- package/dist/core/interactivo/tools.js.map +1 -0
- package/dist/core/lectura/mapa.d.ts +70 -0
- package/dist/core/lectura/mapa.d.ts.map +1 -0
- package/dist/core/lectura/mapa.js +177 -0
- package/dist/core/lectura/mapa.js.map +1 -0
- package/dist/core/lectura/pdf.d.ts +49 -0
- package/dist/core/lectura/pdf.d.ts.map +1 -0
- package/dist/core/lectura/pdf.js +337 -0
- package/dist/core/lectura/pdf.js.map +1 -0
- package/dist/core/limpieza/comprobadores.d.ts +28 -0
- package/dist/core/limpieza/comprobadores.d.ts.map +1 -0
- package/dist/core/limpieza/comprobadores.js +311 -0
- package/dist/core/limpieza/comprobadores.js.map +1 -0
- package/dist/core/limpieza/parseo.d.ts +19 -0
- package/dist/core/limpieza/parseo.d.ts.map +1 -0
- package/dist/core/limpieza/parseo.js +124 -0
- package/dist/core/limpieza/parseo.js.map +1 -0
- package/dist/core/limpieza/reparacion.d.ts +77 -0
- package/dist/core/limpieza/reparacion.d.ts.map +1 -0
- package/dist/core/limpieza/reparacion.js +254 -0
- package/dist/core/limpieza/reparacion.js.map +1 -0
- package/dist/core/limpieza/tipos.d.ts +56 -0
- package/dist/core/limpieza/tipos.d.ts.map +1 -0
- package/dist/core/limpieza/tipos.js +9 -0
- package/dist/core/limpieza/tipos.js.map +1 -0
- package/dist/core/lsp/cliente.d.ts +52 -0
- package/dist/core/lsp/cliente.d.ts.map +1 -0
- package/dist/core/lsp/cliente.js +232 -0
- package/dist/core/lsp/cliente.js.map +1 -0
- package/dist/core/lsp/descubrimiento.d.ts +62 -0
- package/dist/core/lsp/descubrimiento.d.ts.map +1 -0
- package/dist/core/lsp/descubrimiento.js +152 -0
- package/dist/core/lsp/descubrimiento.js.map +1 -0
- package/dist/core/lsp/ediciones.d.ts +59 -0
- package/dist/core/lsp/ediciones.d.ts.map +1 -0
- package/dist/core/lsp/ediciones.js +89 -0
- package/dist/core/lsp/ediciones.js.map +1 -0
- package/dist/core/lsp/extension.d.ts +28 -0
- package/dist/core/lsp/extension.d.ts.map +1 -0
- package/dist/core/lsp/extension.js +34 -0
- package/dist/core/lsp/extension.js.map +1 -0
- package/dist/core/lsp/tools.d.ts +45 -0
- package/dist/core/lsp/tools.d.ts.map +1 -0
- package/dist/core/lsp/tools.js +265 -0
- package/dist/core/lsp/tools.js.map +1 -0
- package/dist/core/mcp/client.d.ts +60 -0
- package/dist/core/mcp/client.d.ts.map +1 -0
- package/dist/core/mcp/client.js +139 -0
- package/dist/core/mcp/client.js.map +1 -0
- package/dist/core/mcp/manager.d.ts +86 -0
- package/dist/core/mcp/manager.d.ts.map +1 -0
- package/dist/core/mcp/manager.js +124 -0
- package/dist/core/mcp/manager.js.map +1 -0
- package/dist/core/mcp/tools.d.ts +15 -0
- package/dist/core/mcp/tools.d.ts.map +1 -0
- package/dist/core/mcp/tools.js +84 -0
- package/dist/core/mcp/tools.js.map +1 -0
- package/dist/core/memory-engine/audit-export.d.ts +12 -10
- package/dist/core/memory-engine/audit-export.d.ts.map +1 -1
- package/dist/core/memory-engine/audit-export.js +15 -0
- package/dist/core/memory-engine/audit-export.js.map +1 -1
- package/dist/core/memory-engine/audit-indice.d.ts +153 -0
- package/dist/core/memory-engine/audit-indice.d.ts.map +1 -0
- package/dist/core/memory-engine/audit-indice.js +271 -0
- package/dist/core/memory-engine/audit-indice.js.map +1 -0
- package/dist/core/memory-engine/audit.d.ts +18 -6
- package/dist/core/memory-engine/audit.d.ts.map +1 -1
- package/dist/core/memory-engine/audit.js +25 -42
- package/dist/core/memory-engine/audit.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +19 -1
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +71 -5
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/observation-store.d.ts +0 -2
- package/dist/core/memory-engine/observation-store.d.ts.map +1 -1
- package/dist/core/memory-engine/observation-store.js +4 -5
- package/dist/core/memory-engine/observation-store.js.map +1 -1
- package/dist/core/memory-engine/refinements.d.ts +51 -0
- package/dist/core/memory-engine/refinements.d.ts.map +1 -0
- package/dist/core/memory-engine/refinements.js +99 -0
- package/dist/core/memory-engine/refinements.js.map +1 -0
- package/dist/core/memory-engine/tools.d.ts.map +1 -1
- package/dist/core/memory-engine/tools.js +27 -1
- package/dist/core/memory-engine/tools.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +2 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/memory-engine/types.js.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +7 -1
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/muestreo-restringido.d.ts +49 -0
- package/dist/core/muestreo-restringido.d.ts.map +1 -0
- package/dist/core/muestreo-restringido.js +65 -0
- package/dist/core/muestreo-restringido.js.map +1 -0
- package/dist/core/orphan-process-journal.d.ts +48 -0
- package/dist/core/orphan-process-journal.d.ts.map +1 -0
- package/dist/core/orphan-process-journal.js +116 -0
- package/dist/core/orphan-process-journal.js.map +1 -0
- package/dist/core/privacidad/categorias-especiales.d.ts +186 -0
- package/dist/core/privacidad/categorias-especiales.d.ts.map +1 -0
- package/dist/core/privacidad/categorias-especiales.js +745 -0
- package/dist/core/privacidad/categorias-especiales.js.map +1 -0
- package/dist/core/privacidad/tapar.d.ts +48 -0
- package/dist/core/privacidad/tapar.d.ts.map +1 -0
- package/dist/core/privacidad/tapar.js +66 -0
- package/dist/core/privacidad/tapar.js.map +1 -0
- package/dist/core/prompt-cache/diagnostics.d.ts +33 -0
- package/dist/core/prompt-cache/diagnostics.d.ts.map +1 -0
- package/dist/core/prompt-cache/diagnostics.js +100 -0
- package/dist/core/prompt-cache/diagnostics.js.map +1 -0
- package/dist/core/prompt-cache/index.d.ts +33 -0
- package/dist/core/prompt-cache/index.d.ts.map +1 -0
- package/dist/core/prompt-cache/index.js +189 -0
- package/dist/core/prompt-cache/index.js.map +1 -0
- package/dist/core/prompt-cache/payload.d.ts +58 -0
- package/dist/core/prompt-cache/payload.d.ts.map +1 -0
- package/dist/core/prompt-cache/payload.js +122 -0
- package/dist/core/prompt-cache/payload.js.map +1 -0
- package/dist/core/prompt-cache/stabilize.d.ts +65 -0
- package/dist/core/prompt-cache/stabilize.d.ts.map +1 -0
- package/dist/core/prompt-cache/stabilize.js +137 -0
- package/dist/core/prompt-cache/stabilize.js.map +1 -0
- package/dist/core/prompt-cache/stats.d.ts +55 -0
- package/dist/core/prompt-cache/stats.d.ts.map +1 -0
- package/dist/core/prompt-cache/stats.js +158 -0
- package/dist/core/prompt-cache/stats.js.map +1 -0
- package/dist/core/prompt-eleccion.d.ts +38 -0
- package/dist/core/prompt-eleccion.d.ts.map +1 -0
- package/dist/core/prompt-eleccion.js +46 -0
- package/dist/core/prompt-eleccion.js.map +1 -0
- package/dist/core/prompts/montar.d.ts +75 -0
- package/dist/core/prompts/montar.d.ts.map +1 -0
- package/dist/core/prompts/montar.js +146 -0
- package/dist/core/prompts/montar.js.map +1 -0
- package/dist/core/prompts/plantilla.d.ts +54 -0
- package/dist/core/prompts/plantilla.d.ts.map +1 -0
- package/dist/core/prompts/plantilla.js +153 -0
- package/dist/core/prompts/plantilla.js.map +1 -0
- package/dist/core/prompts/sistema.md +134 -0
- package/dist/core/provider-attribution.d.ts +24 -2
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-attribution.js +24 -42
- package/dist/core/provider-attribution.js.map +1 -1
- package/dist/core/remoto/destino.d.ts +38 -0
- package/dist/core/remoto/destino.d.ts.map +1 -0
- package/dist/core/remoto/destino.js +105 -0
- package/dist/core/remoto/destino.js.map +1 -0
- package/dist/core/remoto/ejecutor.d.ts +59 -0
- package/dist/core/remoto/ejecutor.d.ts.map +1 -0
- package/dist/core/remoto/ejecutor.js +225 -0
- package/dist/core/remoto/ejecutor.js.map +1 -0
- package/dist/core/remoto/ficheros.d.ts +29 -0
- package/dist/core/remoto/ficheros.d.ts.map +1 -0
- package/dist/core/remoto/ficheros.js +90 -0
- package/dist/core/remoto/ficheros.js.map +1 -0
- package/dist/core/remoto/registro-extension.d.ts +15 -0
- package/dist/core/remoto/registro-extension.d.ts.map +1 -0
- package/dist/core/remoto/registro-extension.js +17 -0
- package/dist/core/remoto/registro-extension.js.map +1 -0
- package/dist/core/remoto/tools.d.ts +28 -0
- package/dist/core/remoto/tools.d.ts.map +1 -0
- package/dist/core/remoto/tools.js +31 -0
- package/dist/core/remoto/tools.js.map +1 -0
- package/dist/core/resource-loader.d.ts +8 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +93 -1
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/revision/hallazgo.d.ts +51 -0
- package/dist/core/revision/hallazgo.d.ts.map +1 -0
- package/dist/core/revision/hallazgo.js +73 -0
- package/dist/core/revision/hallazgo.js.map +1 -0
- package/dist/core/revision/revisor.d.ts +81 -0
- package/dist/core/revision/revisor.d.ts.map +1 -0
- package/dist/core/revision/revisor.js +132 -0
- package/dist/core/revision/revisor.js.map +1 -0
- package/dist/core/revision/sarif.d.ts +30 -0
- package/dist/core/revision/sarif.d.ts.map +1 -0
- package/dist/core/revision/sarif.js +83 -0
- package/dist/core/revision/sarif.js.map +1 -0
- package/dist/core/scheduler/scheduler.d.ts +87 -0
- package/dist/core/scheduler/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler/scheduler.js +178 -0
- package/dist/core/scheduler/scheduler.js.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts +49 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.d.ts.map +1 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js +77 -0
- package/dist/core/sesion/cerrar-llamadas-abiertas.js.map +1 -0
- package/dist/core/settings-manager.d.ts +110 -6
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +53 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +3 -3
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts +17 -0
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +13 -5
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetria/otlp.d.ts +122 -0
- package/dist/core/telemetria/otlp.d.ts.map +1 -0
- package/dist/core/telemetria/otlp.js +373 -0
- package/dist/core/telemetria/otlp.js.map +1 -0
- package/dist/core/tools/coercion-argumentos.d.ts +48 -0
- package/dist/core/tools/coercion-argumentos.d.ts.map +1 -0
- package/dist/core/tools/coercion-argumentos.js +99 -0
- package/dist/core/tools/coercion-argumentos.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +0 -7
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +232 -7
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +8 -1
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +5 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/json-tolerante.d.ts +30 -0
- package/dist/core/tools/json-tolerante.d.ts.map +1 -0
- package/dist/core/tools/json-tolerante.js +70 -0
- package/dist/core/tools/json-tolerante.js.map +1 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +17 -0
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +17 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/turno-vacio/detectar.d.ts +38 -0
- package/dist/core/turno-vacio/detectar.d.ts.map +1 -0
- package/dist/core/turno-vacio/detectar.js +66 -0
- package/dist/core/turno-vacio/detectar.js.map +1 -0
- package/dist/core/undo/journal.d.ts +57 -0
- package/dist/core/undo/journal.d.ts.map +1 -0
- package/dist/core/undo/journal.js +178 -0
- package/dist/core/undo/journal.js.map +1 -0
- package/dist/core/urls-internas/auditoria.d.ts +10 -0
- package/dist/core/urls-internas/auditoria.d.ts.map +1 -0
- package/dist/core/urls-internas/auditoria.js +42 -0
- package/dist/core/urls-internas/auditoria.js.map +1 -0
- package/dist/core/urls-internas/boveda.d.ts +13 -0
- package/dist/core/urls-internas/boveda.d.ts.map +1 -0
- package/dist/core/urls-internas/boveda.js +40 -0
- package/dist/core/urls-internas/boveda.js.map +1 -0
- package/dist/core/urls-internas/lector.d.ts +30 -0
- package/dist/core/urls-internas/lector.d.ts.map +1 -0
- package/dist/core/urls-internas/lector.js +56 -0
- package/dist/core/urls-internas/lector.js.map +1 -0
- package/dist/core/urls-internas/memoria.d.ts +11 -0
- package/dist/core/urls-internas/memoria.d.ts.map +1 -0
- package/dist/core/urls-internas/memoria.js +25 -0
- package/dist/core/urls-internas/memoria.js.map +1 -0
- package/dist/core/urls-internas/parse.d.ts +28 -0
- package/dist/core/urls-internas/parse.d.ts.map +1 -0
- package/dist/core/urls-internas/parse.js +32 -0
- package/dist/core/urls-internas/parse.js.map +1 -0
- package/dist/core/urls-internas/reglas.d.ts +10 -0
- package/dist/core/urls-internas/reglas.d.ts.map +1 -0
- package/dist/core/urls-internas/reglas.js +31 -0
- package/dist/core/urls-internas/reglas.js.map +1 -0
- package/dist/core/usage/aggregate.d.ts +68 -0
- package/dist/core/usage/aggregate.d.ts.map +1 -0
- package/dist/core/usage/aggregate.js +93 -0
- package/dist/core/usage/aggregate.js.map +1 -0
- package/dist/core/usage/cuota/anthropic.d.ts +10 -0
- package/dist/core/usage/cuota/anthropic.d.ts.map +1 -0
- package/dist/core/usage/cuota/anthropic.js +63 -0
- package/dist/core/usage/cuota/anthropic.js.map +1 -0
- package/dist/core/usage/cuota/cache.d.ts +20 -0
- package/dist/core/usage/cuota/cache.d.ts.map +1 -0
- package/dist/core/usage/cuota/cache.js +36 -0
- package/dist/core/usage/cuota/cache.js.map +1 -0
- package/dist/core/usage/cuota/github-copilot.d.ts +9 -0
- package/dist/core/usage/cuota/github-copilot.d.ts.map +1 -0
- package/dist/core/usage/cuota/github-copilot.js +67 -0
- package/dist/core/usage/cuota/github-copilot.js.map +1 -0
- package/dist/core/usage/cuota/google-gemini.d.ts +9 -0
- package/dist/core/usage/cuota/google-gemini.d.ts.map +1 -0
- package/dist/core/usage/cuota/google-gemini.js +72 -0
- package/dist/core/usage/cuota/google-gemini.js.map +1 -0
- package/dist/core/usage/cuota/index.d.ts +25 -0
- package/dist/core/usage/cuota/index.d.ts.map +1 -0
- package/dist/core/usage/cuota/index.js +50 -0
- package/dist/core/usage/cuota/index.js.map +1 -0
- package/dist/core/usage/cuota/openai-codex.d.ts +9 -0
- package/dist/core/usage/cuota/openai-codex.d.ts.map +1 -0
- package/dist/core/usage/cuota/openai-codex.js +59 -0
- package/dist/core/usage/cuota/openai-codex.js.map +1 -0
- package/dist/core/usage/cuota/openrouter.d.ts +10 -0
- package/dist/core/usage/cuota/openrouter.d.ts.map +1 -0
- package/dist/core/usage/cuota/openrouter.js +47 -0
- package/dist/core/usage/cuota/openrouter.js.map +1 -0
- package/dist/core/usage/cuota/tipos.d.ts +50 -0
- package/dist/core/usage/cuota/tipos.d.ts.map +1 -0
- package/dist/core/usage/cuota/tipos.js +25 -0
- package/dist/core/usage/cuota/tipos.js.map +1 -0
- package/dist/core/web/busqueda-nativa.d.ts +82 -0
- package/dist/core/web/busqueda-nativa.d.ts.map +1 -0
- package/dist/core/web/busqueda-nativa.js +163 -0
- package/dist/core/web/busqueda-nativa.js.map +1 -0
- package/dist/core/web/destino.d.ts +58 -0
- package/dist/core/web/destino.d.ts.map +1 -0
- package/dist/core/web/destino.js +127 -0
- package/dist/core/web/destino.js.map +1 -0
- package/dist/core/web/proveedores/brave.d.ts +6 -0
- package/dist/core/web/proveedores/brave.d.ts.map +1 -0
- package/dist/core/web/proveedores/brave.js +20 -0
- package/dist/core/web/proveedores/brave.js.map +1 -0
- package/dist/core/web/proveedores/claves.d.ts +19 -0
- package/dist/core/web/proveedores/claves.d.ts.map +1 -0
- package/dist/core/web/proveedores/claves.js +36 -0
- package/dist/core/web/proveedores/claves.js.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts +3 -0
- package/dist/core/web/proveedores/duckduckgo.d.ts.map +1 -0
- package/dist/core/web/proveedores/duckduckgo.js +109 -0
- package/dist/core/web/proveedores/duckduckgo.js.map +1 -0
- package/dist/core/web/proveedores/ecosia.d.ts +3 -0
- package/dist/core/web/proveedores/ecosia.d.ts.map +1 -0
- package/dist/core/web/proveedores/ecosia.js +72 -0
- package/dist/core/web/proveedores/ecosia.js.map +1 -0
- package/dist/core/web/proveedores/exa.d.ts +6 -0
- package/dist/core/web/proveedores/exa.d.ts.map +1 -0
- package/dist/core/web/proveedores/exa.js +24 -0
- package/dist/core/web/proveedores/exa.js.map +1 -0
- package/dist/core/web/proveedores/mojeek.d.ts +3 -0
- package/dist/core/web/proveedores/mojeek.d.ts.map +1 -0
- package/dist/core/web/proveedores/mojeek.js +65 -0
- package/dist/core/web/proveedores/mojeek.js.map +1 -0
- package/dist/core/web/proveedores/navegador.d.ts +10 -0
- package/dist/core/web/proveedores/navegador.d.ts.map +1 -0
- package/dist/core/web/proveedores/navegador.js +13 -0
- package/dist/core/web/proveedores/navegador.js.map +1 -0
- package/dist/core/web/proveedores/registro.d.ts +43 -0
- package/dist/core/web/proveedores/registro.d.ts.map +1 -0
- package/dist/core/web/proveedores/registro.js +49 -0
- package/dist/core/web/proveedores/registro.js.map +1 -0
- package/dist/core/web/proveedores/searxng.d.ts +9 -0
- package/dist/core/web/proveedores/searxng.d.ts.map +1 -0
- package/dist/core/web/proveedores/searxng.js +17 -0
- package/dist/core/web/proveedores/searxng.js.map +1 -0
- package/dist/core/web/proveedores/serper.d.ts +9 -0
- package/dist/core/web/proveedores/serper.d.ts.map +1 -0
- package/dist/core/web/proveedores/serper.js +19 -0
- package/dist/core/web/proveedores/serper.js.map +1 -0
- package/dist/core/web/proveedores/tavily.d.ts +6 -0
- package/dist/core/web/proveedores/tavily.d.ts.map +1 -0
- package/dist/core/web/proveedores/tavily.js +19 -0
- package/dist/core/web/proveedores/tavily.js.map +1 -0
- package/dist/core/web/proveedores/tipos.d.ts +36 -0
- package/dist/core/web/proveedores/tipos.d.ts.map +1 -0
- package/dist/core/web/proveedores/tipos.js +10 -0
- package/dist/core/web/proveedores/tipos.js.map +1 -0
- package/dist/core/web/registro-red.d.ts +43 -0
- package/dist/core/web/registro-red.d.ts.map +1 -0
- package/dist/core/web/registro-red.js +86 -0
- package/dist/core/web/registro-red.js.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts +10 -0
- package/dist/core/web/scrapers/cisa-kev.d.ts.map +1 -0
- package/dist/core/web/scrapers/cisa-kev.js +38 -0
- package/dist/core/web/scrapers/cisa-kev.js.map +1 -0
- package/dist/core/web/scrapers/crates-io.d.ts +11 -0
- package/dist/core/web/scrapers/crates-io.d.ts.map +1 -0
- package/dist/core/web/scrapers/crates-io.js +29 -0
- package/dist/core/web/scrapers/crates-io.js.map +1 -0
- package/dist/core/web/scrapers/docs-rs.d.ts +10 -0
- package/dist/core/web/scrapers/docs-rs.d.ts.map +1 -0
- package/dist/core/web/scrapers/docs-rs.js +35 -0
- package/dist/core/web/scrapers/docs-rs.js.map +1 -0
- package/dist/core/web/scrapers/github.d.ts +3 -0
- package/dist/core/web/scrapers/github.d.ts.map +1 -0
- package/dist/core/web/scrapers/github.js +72 -0
- package/dist/core/web/scrapers/github.js.map +1 -0
- package/dist/core/web/scrapers/go-pkg.d.ts +7 -0
- package/dist/core/web/scrapers/go-pkg.d.ts.map +1 -0
- package/dist/core/web/scrapers/go-pkg.js +30 -0
- package/dist/core/web/scrapers/go-pkg.js.map +1 -0
- package/dist/core/web/scrapers/hex.d.ts +6 -0
- package/dist/core/web/scrapers/hex.d.ts.map +1 -0
- package/dist/core/web/scrapers/hex.js +27 -0
- package/dist/core/web/scrapers/hex.js.map +1 -0
- package/dist/core/web/scrapers/maven.d.ts +8 -0
- package/dist/core/web/scrapers/maven.d.ts.map +1 -0
- package/dist/core/web/scrapers/maven.js +41 -0
- package/dist/core/web/scrapers/maven.js.map +1 -0
- package/dist/core/web/scrapers/mdn.d.ts +6 -0
- package/dist/core/web/scrapers/mdn.d.ts.map +1 -0
- package/dist/core/web/scrapers/mdn.js +28 -0
- package/dist/core/web/scrapers/mdn.js.map +1 -0
- package/dist/core/web/scrapers/npm.d.ts +11 -0
- package/dist/core/web/scrapers/npm.d.ts.map +1 -0
- package/dist/core/web/scrapers/npm.js +57 -0
- package/dist/core/web/scrapers/npm.js.map +1 -0
- package/dist/core/web/scrapers/nuget.d.ts +8 -0
- package/dist/core/web/scrapers/nuget.d.ts.map +1 -0
- package/dist/core/web/scrapers/nuget.js +22 -0
- package/dist/core/web/scrapers/nuget.js.map +1 -0
- package/dist/core/web/scrapers/nvd.d.ts +7 -0
- package/dist/core/web/scrapers/nvd.d.ts.map +1 -0
- package/dist/core/web/scrapers/nvd.js +37 -0
- package/dist/core/web/scrapers/nvd.js.map +1 -0
- package/dist/core/web/scrapers/pypi.d.ts +6 -0
- package/dist/core/web/scrapers/pypi.d.ts.map +1 -0
- package/dist/core/web/scrapers/pypi.js +31 -0
- package/dist/core/web/scrapers/pypi.js.map +1 -0
- package/dist/core/web/scrapers/registro.d.ts +13 -0
- package/dist/core/web/scrapers/registro.d.ts.map +1 -0
- package/dist/core/web/scrapers/registro.js +65 -0
- package/dist/core/web/scrapers/registro.js.map +1 -0
- package/dist/core/web/scrapers/rubygems.d.ts +6 -0
- package/dist/core/web/scrapers/rubygems.d.ts.map +1 -0
- package/dist/core/web/scrapers/rubygems.js +23 -0
- package/dist/core/web/scrapers/rubygems.js.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts +3 -0
- package/dist/core/web/scrapers/stackoverflow.d.ts.map +1 -0
- package/dist/core/web/scrapers/stackoverflow.js +46 -0
- package/dist/core/web/scrapers/stackoverflow.js.map +1 -0
- package/dist/core/web/scrapers/tipos.d.ts +42 -0
- package/dist/core/web/scrapers/tipos.d.ts.map +1 -0
- package/dist/core/web/scrapers/tipos.js +23 -0
- package/dist/core/web/scrapers/tipos.js.map +1 -0
- package/dist/core/web/texto.d.ts +10 -0
- package/dist/core/web/texto.d.ts.map +1 -0
- package/dist/core/web/texto.js +26 -0
- package/dist/core/web/texto.js.map +1 -0
- package/dist/core/web/tools.d.ts +91 -0
- package/dist/core/web/tools.d.ts.map +1 -0
- package/dist/core/web/tools.js +304 -0
- package/dist/core/web/tools.js.map +1 -0
- package/dist/core/wiki/almacen.d.ts +33 -0
- package/dist/core/wiki/almacen.d.ts.map +1 -0
- package/dist/core/wiki/almacen.js +93 -0
- package/dist/core/wiki/almacen.js.map +1 -0
- package/dist/core/wiki/citas.d.ts +111 -0
- package/dist/core/wiki/citas.d.ts.map +1 -0
- package/dist/core/wiki/citas.js +146 -0
- package/dist/core/wiki/citas.js.map +1 -0
- package/dist/core/workflows/agent-runner.d.ts +2 -0
- package/dist/core/workflows/agent-runner.d.ts.map +1 -1
- package/dist/core/workflows/agent-runner.js +131 -44
- package/dist/core/workflows/agent-runner.js.map +1 -1
- package/dist/core/workflows/builtins.d.ts.map +1 -1
- package/dist/core/workflows/builtins.js +1 -0
- package/dist/core/workflows/builtins.js.map +1 -1
- package/dist/core/workflows/contrato/esquema.d.ts +32 -0
- package/dist/core/workflows/contrato/esquema.d.ts.map +1 -0
- package/dist/core/workflows/contrato/esquema.js +25 -0
- package/dist/core/workflows/contrato/esquema.js.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts +69 -0
- package/dist/core/workflows/contrato/reparar-argumentos.d.ts.map +1 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js +117 -0
- package/dist/core/workflows/contrato/reparar-argumentos.js.map +1 -0
- package/dist/core/workflows/contrato/validador.d.ts +30 -0
- package/dist/core/workflows/contrato/validador.d.ts.map +1 -0
- package/dist/core/workflows/contrato/validador.js +56 -0
- package/dist/core/workflows/contrato/validador.js.map +1 -0
- package/dist/core/workflows/contrato/yield.d.ts +65 -0
- package/dist/core/workflows/contrato/yield.d.ts.map +1 -0
- package/dist/core/workflows/contrato/yield.js +80 -0
- package/dist/core/workflows/contrato/yield.js.map +1 -0
- package/dist/core/workflows/goal-engine/engine.d.ts +17 -0
- package/dist/core/workflows/goal-engine/engine.d.ts.map +1 -1
- package/dist/core/workflows/goal-engine/engine.js +41 -0
- package/dist/core/workflows/goal-engine/engine.js.map +1 -1
- package/dist/core/workflows/index.d.ts +8 -0
- package/dist/core/workflows/index.d.ts.map +1 -1
- package/dist/core/workflows/index.js +4 -0
- package/dist/core/workflows/index.js.map +1 -1
- package/dist/core/workflows/manager.d.ts +10 -0
- package/dist/core/workflows/manager.d.ts.map +1 -1
- package/dist/core/workflows/manager.js +35 -11
- package/dist/core/workflows/manager.js.map +1 -1
- package/dist/core/workflows/runtime.d.ts +13 -0
- package/dist/core/workflows/runtime.d.ts.map +1 -1
- package/dist/core/workflows/runtime.js +80 -1
- package/dist/core/workflows/runtime.js.map +1 -1
- package/dist/core/workflows/save-as-skill.d.ts +27 -0
- package/dist/core/workflows/save-as-skill.d.ts.map +1 -0
- package/dist/core/workflows/save-as-skill.js +54 -0
- package/dist/core/workflows/save-as-skill.js.map +1 -0
- package/dist/core/workflows/types.d.ts +49 -0
- package/dist/core/workflows/types.d.ts.map +1 -1
- package/dist/core/workflows/types.js.map +1 -1
- package/dist/extensions/remoto/index.d.ts +22 -0
- package/dist/extensions/remoto/index.d.ts.map +1 -0
- package/dist/extensions/remoto/index.js +54 -0
- package/dist/extensions/remoto/index.js.map +1 -0
- package/dist/index.d.ts +1 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -16
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/modes/acp/acp-mode.d.ts +42 -0
- package/dist/modes/acp/acp-mode.d.ts.map +1 -0
- package/dist/modes/acp/acp-mode.js +190 -0
- package/dist/modes/acp/acp-mode.js.map +1 -0
- package/dist/modes/acp/events.d.ts +74 -0
- package/dist/modes/acp/events.d.ts.map +1 -0
- package/dist/modes/acp/events.js +116 -0
- package/dist/modes/acp/events.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +8 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +41 -7
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +1 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +9 -86
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +8 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +48 -17
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +3 -7
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +137 -146
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +11 -0
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +27 -5
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/attach.d.ts +56 -0
- package/dist/server/attach.d.ts.map +1 -0
- package/dist/server/attach.js +130 -0
- package/dist/server/attach.js.map +1 -0
- package/dist/server/extension-ops.d.ts +40 -0
- package/dist/server/extension-ops.d.ts.map +1 -0
- package/dist/server/extension-ops.js +146 -0
- package/dist/server/extension-ops.js.map +1 -0
- package/dist/server/pi-server-service.d.ts +85 -0
- package/dist/server/pi-server-service.d.ts.map +1 -0
- package/dist/server/pi-server-service.js +213 -0
- package/dist/server/pi-server-service.js.map +1 -0
- package/dist/server/scheduler-tick.d.ts +32 -0
- package/dist/server/scheduler-tick.d.ts.map +1 -0
- package/dist/server/scheduler-tick.js +47 -0
- package/dist/server/scheduler-tick.js.map +1 -0
- package/dist/server/serve.d.ts +25 -0
- package/dist/server/serve.d.ts.map +1 -0
- package/dist/server/serve.js +83 -0
- package/dist/server/serve.js.map +1 -0
- package/dist/server/transcript.d.ts +38 -0
- package/dist/server/transcript.d.ts.map +1 -0
- package/dist/server/transcript.js +176 -0
- package/dist/server/transcript.js.map +1 -0
- package/dist/skills/skill-creator/SKILL.md +90 -0
- package/dist/telegram/api.d.ts +75 -0
- package/dist/telegram/api.d.ts.map +1 -0
- package/dist/telegram/api.js +104 -0
- package/dist/telegram/api.js.map +1 -0
- package/dist/telegram/bridge.d.ts +85 -0
- package/dist/telegram/bridge.d.ts.map +1 -0
- package/dist/telegram/bridge.js +182 -0
- package/dist/telegram/bridge.js.map +1 -0
- package/dist/telegram/journal.d.ts +67 -0
- package/dist/telegram/journal.d.ts.map +1 -0
- package/dist/telegram/journal.js +119 -0
- package/dist/telegram/journal.js.map +1 -0
- package/dist/telegram/servidor.d.ts +15 -0
- package/dist/telegram/servidor.d.ts.map +1 -0
- package/dist/telegram/servidor.js +74 -0
- package/dist/telegram/servidor.js.map +1 -0
- package/dist/utils/shell.d.ts +11 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +11 -0
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +29 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +10 -10
- package/docs/compliance.md +241 -0
- package/docs/containerization.md +24 -24
- package/docs/custom-provider.md +10 -10
- package/docs/development.md +47 -10
- package/docs/docs.json +14 -2
- package/docs/environment-variables.md +20 -17
- package/docs/extensions.md +51 -49
- package/docs/index.md +15 -21
- package/docs/json.md +3 -3
- package/docs/keybindings.md +5 -5
- package/docs/llama-cpp.md +7 -7
- package/docs/models.md +12 -12
- package/docs/packages.md +45 -45
- package/docs/prompt-templates.md +5 -5
- package/docs/providers.md +12 -12
- package/docs/quickstart.md +39 -39
- package/docs/rpc.md +12 -12
- package/docs/sdk.md +38 -38
- package/docs/security.md +26 -21
- package/docs/session-format.md +7 -7
- package/docs/sessions.md +14 -14
- package/docs/settings.md +45 -20
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +11 -11
- package/docs/terminal-setup.md +14 -14
- package/docs/termux.md +7 -7
- package/docs/themes.md +11 -11
- package/docs/tmux.md +4 -4
- package/docs/tui.md +3 -3
- package/docs/usage.md +54 -54
- package/docs/windows.md +2 -2
- package/examples/sdk/12-full-control.ts +9 -0
- package/npm-shrinkwrap.json +35 -251
- package/package.json +10 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/linux/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ChildProcessWithoutNullStreams, spawn } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"..\");\nconst SETUP_HELPER_SCRIPT = path.join(PACKAGE_ROOT, \"scripts\", \"setup-helper.mjs\");\nconst HELPER_SETUP_TIMEOUT_MS = 60_000;\nconst COMMAND_TIMEOUT_MS = 15_000;\n\nexport const LINUX_HELPER_PROTOCOL_VERSION = 4;\nexport const LINUX_HELPER_PATH =\n\tprocess.env.ADA_COMPUTER_USE_LINUX_HELPER_PATH ||\n\tpath.join(os.homedir(), \".pi\", \"agent\", \"helpers\", \"ada-computer-use\", \"linux-bridge\");\n\ninterface Pending<T> {\n\tresolve(value: T): void;\n\treject(error: Error): void;\n\ttimer: NodeJS.Timeout;\n}\n\nasync function isExecutable(filePath: string): Promise<boolean> {\n\ttry {\n\t\tawait access(filePath, fsConstants.X_OK);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function runProcess(\n\tcommand: string,\n\targs: string[],\n\ttimeoutMs: number,\n\tsignal?: AbortSignal,\n\tenv?: NodeJS.ProcessEnv,\n): Promise<void> {\n\tif (signal?.aborted) throw new Error(\"Operation aborted.\");\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst child = spawn(command, args, { stdio: [\"ignore\", \"pipe\", \"pipe\"], env });\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\t\tlet settled = false;\n\t\tconst finish = (error?: Error) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timer);\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\tif (error) reject(error);\n\t\t\telse resolve();\n\t\t};\n\t\tconst timer = setTimeout(() => {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\tfinish(new Error(`Command timed out after ${timeoutMs}ms: ${command} ${args.join(\" \")}`));\n\t\t}, timeoutMs);\n\t\tconst onAbort = () => {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\tfinish(new Error(\"Operation aborted.\"));\n\t\t};\n\t\tchild.stdout.on(\"data\", (chunk) => {\n\t\t\tstdout += String(chunk);\n\t\t});\n\t\tchild.stderr.on(\"data\", (chunk) => {\n\t\t\tstderr += String(chunk);\n\t\t});\n\t\tchild.on(\"error\", (error) => finish(error));\n\t\tchild.on(\"close\", (code) => {\n\t\t\tif (code === 0) return finish();\n\t\t\tconst output = [stderr.trim(), stdout.trim()].filter(Boolean).join(\"\\n\");\n\t\t\tfinish(new Error(`Command failed (${code}): ${command} ${args.join(\" \")}\\n${output}`.trim()));\n\t\t});\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\nasync function waitForShared<T>(promise: Promise<T>, signal?: AbortSignal): Promise<T> {\n\tif (!signal) return await promise;\n\tif (signal.aborted) throw new Error(\"Operation aborted.\");\n\treturn await new Promise<T>((resolve, reject) => {\n\t\tconst onAbort = () => reject(new Error(\"Operation aborted.\"));\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tpromise.then(\n\t\t\t(value) => {\n\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\tresolve(value);\n\t\t\t},\n\t\t\t(error) => {\n\t\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t\t\treject(error);\n\t\t\t},\n\t\t);\n\t});\n}\n\nexport interface LinuxHelperClientOptions {\n\thelperPath?: string;\n\tsetupHelperScript?: string;\n}\n\nexport class LinuxHelperClient {\n\tprivate installChecked = false;\n\tprivate installPromise?: Promise<void>;\n\tprivate child?: ChildProcessWithoutNullStreams;\n\tprivate processPromise?: Promise<ChildProcessWithoutNullStreams>;\n\tprivate buffer = \"\";\n\tprivate pending = new Map<string, Pending<unknown>>();\n\tprivate readonly helperPath: string;\n\tprivate readonly setupHelperScript: string;\n\n\tconstructor(options: LinuxHelperClientOptions = {}) {\n\t\tthis.helperPath = options.helperPath ?? LINUX_HELPER_PATH;\n\t\tthis.setupHelperScript = options.setupHelperScript ?? SETUP_HELPER_SCRIPT;\n\t}\n\n\tdispose(): void {\n\t\tthis.rejectPending(new Error(\"Linux helper closed because the Pi session ended.\"));\n\t\tconst child = this.child;\n\t\tthis.child = undefined;\n\t\tif (!child) return;\n\t\tchild.stdin.destroy();\n\t\tchild.stdout.destroy();\n\t\tchild.stderr.destroy();\n\t\tchild.kill(\"SIGTERM\");\n\t\tchild.unref();\n\t}\n\n\tprivate rejectPending(error: Error): void {\n\t\tfor (const pending of this.pending.values()) {\n\t\t\tclearTimeout(pending.timer);\n\t\t\tpending.reject(error);\n\t\t}\n\t\tthis.pending.clear();\n\t\tthis.buffer = \"\";\n\t}\n\n\tasync ensureInstalled(signal?: AbortSignal): Promise<void> {\n\t\tif ((await isExecutable(this.helperPath)) && this.installChecked) return;\n\t\tif (!this.installPromise) {\n\t\t\tconst installPromise = (async () => {\n\t\t\t\tawait runProcess(\n\t\t\t\t\tprocess.execPath,\n\t\t\t\t\t[this.setupHelperScript, \"--platform\", \"linux\", \"--runtime\"],\n\t\t\t\t\tHELPER_SETUP_TIMEOUT_MS,\n\t\t\t\t\tundefined,\n\t\t\t\t\t{\n\t\t\t\t\t\t...process.env,\n\t\t\t\t\t\tELECTRON_RUN_AS_NODE: \"1\",\n\t\t\t\t\t\tBUN_BE_BUN: \"1\",\n\t\t\t\t\t\tADA_COMPUTER_USE_LINUX_HELPER_PATH: this.helperPath,\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\tif (!(await isExecutable(this.helperPath)))\n\t\t\t\t\tthrow new Error(`Failed to install Linux helper at ${this.helperPath}.`);\n\t\t\t\tthis.installChecked = true;\n\t\t\t})();\n\t\t\tthis.installPromise = installPromise;\n\t\t\tinstallPromise.then(\n\t\t\t\t() => {\n\t\t\t\t\tif (this.installPromise === installPromise) this.installPromise = undefined;\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tif (this.installPromise === installPromise) this.installPromise = undefined;\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\tawait waitForShared(this.installPromise, signal);\n\t}\n\n\tprivate async process(signal?: AbortSignal): Promise<ChildProcessWithoutNullStreams> {\n\t\tawait this.ensureInstalled(signal);\n\t\tif (this.processPromise) return await waitForShared(this.processPromise, signal);\n\t\tif (this.child && this.child.exitCode === null && !this.child.killed) return this.child;\n\t\tif (!this.processPromise) {\n\t\t\tconst processPromise = this.startProcess();\n\t\t\tthis.processPromise = processPromise;\n\t\t\tprocessPromise.then(\n\t\t\t\t() => {\n\t\t\t\t\tif (this.processPromise === processPromise) this.processPromise = undefined;\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tif (this.processPromise === processPromise) this.processPromise = undefined;\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn await waitForShared(this.processPromise, signal);\n\t}\n\n\tprivate async startProcess(): Promise<ChildProcessWithoutNullStreams> {\n\t\tconst child = spawn(this.helperPath, [], { stdio: [\"pipe\", \"pipe\", \"pipe\"] });\n\t\tchild.stdout.setEncoding(\"utf8\");\n\t\tchild.stderr.setEncoding(\"utf8\");\n\t\tchild.stdin.setDefaultEncoding(\"utf8\");\n\t\tchild.stdout.on(\"data\", (chunk: string) => this.onStdout(chunk));\n\t\tchild.on(\"exit\", (code, signalName) => {\n\t\t\tif (this.child !== child) return;\n\t\t\tthis.child = undefined;\n\t\t\tthis.rejectPending(\n\t\t\t\tnew Error(`Linux helper exited${signalName ? ` on ${signalName}` : ` with code ${code ?? \"unknown\"}`}.`),\n\t\t\t);\n\t\t});\n\t\tchild.on(\"error\", (error) => {\n\t\t\tif (this.child !== child) return;\n\t\t\tthis.child = undefined;\n\t\t\tthis.rejectPending(error);\n\t\t});\n\t\tthis.child = child;\n\t\tthis.buffer = \"\";\n\t\treturn await new Promise<ChildProcessWithoutNullStreams>((resolve, reject) => {\n\t\t\tchild.once(\"spawn\", () => resolve(child));\n\t\t\tchild.once(\"error\", reject);\n\t\t});\n\t}\n\n\tprivate onStdout(chunk: string): void {\n\t\tthis.buffer += chunk;\n\t\tfor (;;) {\n\t\t\tconst newline = this.buffer.indexOf(\"\\n\");\n\t\t\tif (newline < 0) return;\n\t\t\tconst line = this.buffer.slice(0, newline).trim();\n\t\t\tthis.buffer = this.buffer.slice(newline + 1);\n\t\t\tif (!line) continue;\n\t\t\tlet parsed: any;\n\t\t\ttry {\n\t\t\t\tparsed = JSON.parse(line);\n\t\t\t} catch {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst pending = this.pending.get(parsed.id);\n\t\t\tif (!pending) continue;\n\t\t\tthis.pending.delete(parsed.id);\n\t\t\tclearTimeout(pending.timer);\n\t\t\tif (parsed.protocolVersion !== LINUX_HELPER_PROTOCOL_VERSION) {\n\t\t\t\tpending.reject(\n\t\t\t\t\tnew Error(\n\t\t\t\t\t\t`Linux helper protocol mismatch: expected ${LINUX_HELPER_PROTOCOL_VERSION}, got ${parsed.protocolVersion ?? \"unknown\"}. Restart Pi to use the installed helper.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else if (parsed.ok === true) {\n\t\t\t\tpending.resolve(parsed.result);\n\t\t\t} else {\n\t\t\t\tconst error = new Error(parsed.error?.message ?? \"Linux helper command failed.\") as Error & {\n\t\t\t\t\tcode?: string;\n\t\t\t\t};\n\t\t\t\terror.code = parsed.error?.code;\n\t\t\t\tpending.reject(error);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync command<T>(\n\t\tcmd: string,\n\t\targs: Record<string, unknown> = {},\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<T> {\n\t\tconst child = await this.process(options?.signal);\n\t\tconst id = randomUUID();\n\t\tconst timeoutMs = options?.timeoutMs ?? COMMAND_TIMEOUT_MS;\n\t\treturn await new Promise<T>((resolve, reject) => {\n\t\t\tconst onAbort = () => {\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\tclearTimeout(timer);\n\t\t\t\treject(new Error(\"Operation aborted.\"));\n\t\t\t};\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\toptions?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(new Error(`Helper command '${cmd}' timed out after ${timeoutMs}ms.`));\n\t\t\t}, timeoutMs);\n\t\t\tthis.pending.set(id, {\n\t\t\t\tresolve: (value) => {\n\t\t\t\t\toptions?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\tresolve(value as T);\n\t\t\t\t},\n\t\t\t\treject: (error) => {\n\t\t\t\t\toptions?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\treject(error);\n\t\t\t\t},\n\t\t\t\ttimer,\n\t\t\t});\n\t\t\toptions?.signal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\tchild.stdin.write(\n\t\t\t\t`${JSON.stringify({ protocolVersion: LINUX_HELPER_PROTOCOL_VERSION, id, cmd, args })}\\n`,\n\t\t\t\t(error) => {\n\t\t\t\t\tif (!error) return;\n\t\t\t\t\toptions?.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\t\tthis.pending.delete(id);\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\treject(error);\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n}\n\nexport const linuxHelper = new LinuxHelperClient();\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ComputerUsePlatformBackend } from "../types.ts";
|
|
2
|
+
export declare const macosBackend: Pick<ComputerUsePlatformBackend, "listApps" | "listRoots" | "getFrontmost" | "focusWindow" | "observe" | "act" | "actBatch" | "readText" | "waitFor">;
|
|
3
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/macos/backend.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,0BAA0B,EAgB1B,MAAM,aAAa,CAAC;AAyErB,eAAO,MAAM,YAAY,EAAE,IAAI,CAC9B,0BAA0B,EAC1B,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CA+FnH,CAAC","sourcesContent":["import { getComputerUseConfig } from \"../../config.ts\";\nimport { type LookResponse, parseLookResponse } from \"../../outline.ts\";\nimport { toBoolean, toFiniteNumber, toOptionalString } from \"../coerce.ts\";\nimport type {\n\tComputerUsePlatformBackend,\n\tFramePoints,\n\tHelperActResult,\n\tPlatformActRequest,\n\tPlatformApp,\n\tPlatformFocusWindowResult,\n\tPlatformFrontmostResult,\n\tPlatformObserveRequest,\n\tPlatformReadTextRequest,\n\tPlatformReadTextResponse,\n\tPlatformRoot,\n\tPlatformRootKind,\n\tPlatformRootQuery,\n\tPlatformTarget,\n\tPlatformWaitForRequest,\n\tPlatformWaitForResponse,\n} from \"../types.ts\";\nimport { macosHelper } from \"./helper.ts\";\n\nfunction parseApps(result: unknown): PlatformApp[] {\n\tconst array = Array.isArray(result) ? result : (result as any)?.apps;\n\tif (!Array.isArray(array)) return [];\n\n\treturn array\n\t\t.map((raw) => {\n\t\t\tconst pid = Math.trunc(toFiniteNumber((raw as any)?.pid, NaN));\n\t\t\tif (!Number.isFinite(pid) || pid <= 0) return undefined;\n\t\t\tconst appName = toOptionalString((raw as any)?.appName) ?? \"Unknown App\";\n\t\t\treturn {\n\t\t\t\tappName,\n\t\t\t\tbundleId: toOptionalString((raw as any)?.bundleId),\n\t\t\t\tpid,\n\t\t\t\tisFrontmost: toBoolean((raw as any)?.isFrontmost),\n\t\t\t} as PlatformApp;\n\t\t})\n\t\t.filter((item): item is PlatformApp => Boolean(item));\n}\n\nfunction parseFramePoints(raw: unknown): FramePoints {\n\tconst frame = (raw as any)?.framePoints ?? {};\n\treturn {\n\t\tx: toFiniteNumber(frame.x, 0),\n\t\ty: toFiniteNumber(frame.y, 0),\n\t\tw: Math.max(1, toFiniteNumber(frame.w, 1)),\n\t\th: Math.max(1, toFiniteNumber(frame.h, 1)),\n\t};\n}\n\nfunction parseRoots(result: unknown): PlatformRoot[] {\n\tconst array = Array.isArray(result) ? result : (result as any)?.roots;\n\tif (!Array.isArray(array)) return [];\n\n\treturn array.map((raw) => {\n\t\tconst metadata =\n\t\t\ttypeof (raw as any)?.metadata === \"object\" && (raw as any).metadata !== null\n\t\t\t\t? ((raw as any).metadata as Record<string, unknown>)\n\t\t\t\t: {};\n\t\tconst kind = [\"window\", \"menu\", \"sheet\", \"popover\", \"dialog\"].includes((raw as any)?.kind)\n\t\t\t? ((raw as any).kind as PlatformRootKind)\n\t\t\t: \"window\";\n\t\treturn {\n\t\t\tkind,\n\t\t\trootRef: toOptionalString((raw as any)?.rootRef ?? (raw as any)?.windowRef),\n\t\t\twindowRef: toOptionalString((raw as any)?.windowRef ?? (raw as any)?.rootRef),\n\t\t\twindowId: Number.isFinite((raw as any)?.windowId) ? Math.trunc((raw as any).windowId) : undefined,\n\t\t\tpid: Number.isFinite((raw as any)?.pid) ? Math.trunc((raw as any).pid) : undefined,\n\t\t\tappName: toOptionalString((raw as any)?.appName),\n\t\t\tbundleId: toOptionalString((raw as any)?.bundleId),\n\t\t\ttitle: toOptionalString((raw as any)?.title) ?? \"\",\n\t\t\trole: toOptionalString((raw as any)?.role),\n\t\t\tsubrole: toOptionalString((raw as any)?.subrole),\n\t\t\tframePoints: parseFramePoints(raw),\n\t\t\tscaleFactor: Math.max(1, toFiniteNumber((raw as any)?.scaleFactor, 1)),\n\t\t\tzOrder: Math.trunc(toFiniteNumber((raw as any)?.zOrder, 0)),\n\t\t\tisMinimized: toBoolean((raw as any)?.isMinimized),\n\t\t\tisOnscreen: toBoolean((raw as any)?.isOnscreen),\n\t\t\tisMain: toBoolean((raw as any)?.isMain),\n\t\t\tisFocused: toBoolean((raw as any)?.isFocused),\n\t\t\tisModal: toBoolean((raw as any)?.isModal),\n\t\t\tmetadata,\n\t\t};\n\t});\n}\n\nfunction helperAction(request: PlatformActRequest): Record<string, unknown> {\n\tif (!(\"focus\" in request.target)) return { ...request };\n\treturn { ...request, target: request.target.focus, params: { ...request.params, preserveFocus: true } };\n}\n\nexport const macosBackend: Pick<\n\tComputerUsePlatformBackend,\n\t\"listApps\" | \"listRoots\" | \"getFrontmost\" | \"focusWindow\" | \"observe\" | \"act\" | \"actBatch\" | \"readText\" | \"waitFor\"\n> = {\n\tasync listApps(signal?: AbortSignal): Promise<PlatformApp[]> {\n\t\treturn parseApps(await macosHelper.command<unknown>(\"listApps\", {}, { signal }));\n\t},\n\n\tasync listRoots(query: PlatformRootQuery, signal?: AbortSignal): Promise<PlatformRoot[]> {\n\t\treturn parseRoots(\n\t\t\tawait macosHelper.command<unknown>(\n\t\t\t\t\"listRoots\",\n\t\t\t\t{\n\t\t\t\t\t...(Number.isFinite(query.pid) ? { pid: Math.trunc(query.pid!) } : {}),\n\t\t\t\t\t...(query.title?.trim() ? { title: query.title.trim() } : {}),\n\t\t\t\t},\n\t\t\t\t{ signal },\n\t\t\t),\n\t\t);\n\t},\n\n\tasync getFrontmost(signal?: AbortSignal): Promise<PlatformFrontmostResult> {\n\t\tconst result = await macosHelper.command<any>(\"getFrontmost\", {}, { signal });\n\t\tconst pid = Math.trunc(toFiniteNumber(result?.pid, NaN));\n\t\tif (!Number.isFinite(pid) || pid <= 0) {\n\t\t\tthrow new Error(\"No frontmost app was available for screenshot targeting.\");\n\t\t}\n\t\treturn {\n\t\t\tappName: toOptionalString(result?.appName) ?? \"Unknown App\",\n\t\t\tbundleId: toOptionalString(result?.bundleId),\n\t\t\tpid,\n\t\t\twindowTitle: toOptionalString(result?.windowTitle),\n\t\t\twindowId: Number.isFinite(result?.windowId) ? Math.trunc(result.windowId) : undefined,\n\t\t};\n\t},\n\n\tasync focusWindow(target: PlatformTarget, signal?: AbortSignal): Promise<PlatformFocusWindowResult> {\n\t\treturn await macosHelper.command<PlatformFocusWindowResult>(\"focusWindow\", { ...target }, { signal });\n\t},\n\n\tasync observe(\n\t\trequest: PlatformObserveRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<LookResponse> {\n\t\treturn parseLookResponse(\n\t\t\tawait macosHelper.command(\n\t\t\t\t\"look\",\n\t\t\t\t{\n\t\t\t\t\tbaseLookId: request.baseLookId,\n\t\t\t\t\twindowId: request.target.windowId,\n\t\t\t\t\twindowRef: request.target.rootRef,\n\t\t\t\t\tmaxDimension: request.maxDimension,\n\t\t\t\t\treadText: request.readText,\n\t\t\t\t\tscopeRef: request.scopeRef,\n\t\t\t\t\tincludeImage: request.includeImage,\n\t\t\t\t},\n\t\t\t\toptions,\n\t\t\t),\n\t\t);\n\t},\n\n\tasync act(\n\t\trequest: PlatformActRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<HelperActResult> {\n\t\treturn await macosHelper.command<HelperActResult>(\n\t\t\t\"act\",\n\t\t\t{ ...helperAction(request), cursorOverlay: getComputerUseConfig().cursor_overlay },\n\t\t\toptions,\n\t\t);\n\t},\n\n\tasync actBatch(\n\t\trequests: PlatformActRequest[],\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<HelperActResult> {\n\t\tconst cursorOverlay = getComputerUseConfig().cursor_overlay;\n\t\treturn await macosHelper.command<HelperActResult>(\n\t\t\t\"actBatch\",\n\t\t\t{ actions: requests.map((request) => ({ ...helperAction(request), cursorOverlay })) },\n\t\t\toptions,\n\t\t);\n\t},\n\n\tasync readText(\n\t\targs: PlatformReadTextRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<PlatformReadTextResponse> {\n\t\treturn await macosHelper.command(\"axReadText\", { ...args }, options);\n\t},\n\n\tasync waitFor(\n\t\targs: PlatformWaitForRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<PlatformWaitForResponse> {\n\t\treturn await macosHelper.command(\"axWaitFor\", { ...args }, options);\n\t},\n};\n"]}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { getComputerUseConfig } from "../../config.js";
|
|
2
|
+
import { parseLookResponse } from "../../outline.js";
|
|
3
|
+
import { toBoolean, toFiniteNumber, toOptionalString } from "../coerce.js";
|
|
4
|
+
import { macosHelper } from "./helper.js";
|
|
5
|
+
function parseApps(result) {
|
|
6
|
+
const array = Array.isArray(result) ? result : result?.apps;
|
|
7
|
+
if (!Array.isArray(array))
|
|
8
|
+
return [];
|
|
9
|
+
return array
|
|
10
|
+
.map((raw) => {
|
|
11
|
+
const pid = Math.trunc(toFiniteNumber(raw?.pid, NaN));
|
|
12
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
13
|
+
return undefined;
|
|
14
|
+
const appName = toOptionalString(raw?.appName) ?? "Unknown App";
|
|
15
|
+
return {
|
|
16
|
+
appName,
|
|
17
|
+
bundleId: toOptionalString(raw?.bundleId),
|
|
18
|
+
pid,
|
|
19
|
+
isFrontmost: toBoolean(raw?.isFrontmost),
|
|
20
|
+
};
|
|
21
|
+
})
|
|
22
|
+
.filter((item) => Boolean(item));
|
|
23
|
+
}
|
|
24
|
+
function parseFramePoints(raw) {
|
|
25
|
+
const frame = raw?.framePoints ?? {};
|
|
26
|
+
return {
|
|
27
|
+
x: toFiniteNumber(frame.x, 0),
|
|
28
|
+
y: toFiniteNumber(frame.y, 0),
|
|
29
|
+
w: Math.max(1, toFiniteNumber(frame.w, 1)),
|
|
30
|
+
h: Math.max(1, toFiniteNumber(frame.h, 1)),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function parseRoots(result) {
|
|
34
|
+
const array = Array.isArray(result) ? result : result?.roots;
|
|
35
|
+
if (!Array.isArray(array))
|
|
36
|
+
return [];
|
|
37
|
+
return array.map((raw) => {
|
|
38
|
+
const metadata = typeof raw?.metadata === "object" && raw.metadata !== null
|
|
39
|
+
? raw.metadata
|
|
40
|
+
: {};
|
|
41
|
+
const kind = ["window", "menu", "sheet", "popover", "dialog"].includes(raw?.kind)
|
|
42
|
+
? raw.kind
|
|
43
|
+
: "window";
|
|
44
|
+
return {
|
|
45
|
+
kind,
|
|
46
|
+
rootRef: toOptionalString(raw?.rootRef ?? raw?.windowRef),
|
|
47
|
+
windowRef: toOptionalString(raw?.windowRef ?? raw?.rootRef),
|
|
48
|
+
windowId: Number.isFinite(raw?.windowId) ? Math.trunc(raw.windowId) : undefined,
|
|
49
|
+
pid: Number.isFinite(raw?.pid) ? Math.trunc(raw.pid) : undefined,
|
|
50
|
+
appName: toOptionalString(raw?.appName),
|
|
51
|
+
bundleId: toOptionalString(raw?.bundleId),
|
|
52
|
+
title: toOptionalString(raw?.title) ?? "",
|
|
53
|
+
role: toOptionalString(raw?.role),
|
|
54
|
+
subrole: toOptionalString(raw?.subrole),
|
|
55
|
+
framePoints: parseFramePoints(raw),
|
|
56
|
+
scaleFactor: Math.max(1, toFiniteNumber(raw?.scaleFactor, 1)),
|
|
57
|
+
zOrder: Math.trunc(toFiniteNumber(raw?.zOrder, 0)),
|
|
58
|
+
isMinimized: toBoolean(raw?.isMinimized),
|
|
59
|
+
isOnscreen: toBoolean(raw?.isOnscreen),
|
|
60
|
+
isMain: toBoolean(raw?.isMain),
|
|
61
|
+
isFocused: toBoolean(raw?.isFocused),
|
|
62
|
+
isModal: toBoolean(raw?.isModal),
|
|
63
|
+
metadata,
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function helperAction(request) {
|
|
68
|
+
if (!("focus" in request.target))
|
|
69
|
+
return { ...request };
|
|
70
|
+
return { ...request, target: request.target.focus, params: { ...request.params, preserveFocus: true } };
|
|
71
|
+
}
|
|
72
|
+
export const macosBackend = {
|
|
73
|
+
async listApps(signal) {
|
|
74
|
+
return parseApps(await macosHelper.command("listApps", {}, { signal }));
|
|
75
|
+
},
|
|
76
|
+
async listRoots(query, signal) {
|
|
77
|
+
return parseRoots(await macosHelper.command("listRoots", {
|
|
78
|
+
...(Number.isFinite(query.pid) ? { pid: Math.trunc(query.pid) } : {}),
|
|
79
|
+
...(query.title?.trim() ? { title: query.title.trim() } : {}),
|
|
80
|
+
}, { signal }));
|
|
81
|
+
},
|
|
82
|
+
async getFrontmost(signal) {
|
|
83
|
+
const result = await macosHelper.command("getFrontmost", {}, { signal });
|
|
84
|
+
const pid = Math.trunc(toFiniteNumber(result?.pid, NaN));
|
|
85
|
+
if (!Number.isFinite(pid) || pid <= 0) {
|
|
86
|
+
throw new Error("No frontmost app was available for screenshot targeting.");
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
appName: toOptionalString(result?.appName) ?? "Unknown App",
|
|
90
|
+
bundleId: toOptionalString(result?.bundleId),
|
|
91
|
+
pid,
|
|
92
|
+
windowTitle: toOptionalString(result?.windowTitle),
|
|
93
|
+
windowId: Number.isFinite(result?.windowId) ? Math.trunc(result.windowId) : undefined,
|
|
94
|
+
};
|
|
95
|
+
},
|
|
96
|
+
async focusWindow(target, signal) {
|
|
97
|
+
return await macosHelper.command("focusWindow", { ...target }, { signal });
|
|
98
|
+
},
|
|
99
|
+
async observe(request, options) {
|
|
100
|
+
return parseLookResponse(await macosHelper.command("look", {
|
|
101
|
+
baseLookId: request.baseLookId,
|
|
102
|
+
windowId: request.target.windowId,
|
|
103
|
+
windowRef: request.target.rootRef,
|
|
104
|
+
maxDimension: request.maxDimension,
|
|
105
|
+
readText: request.readText,
|
|
106
|
+
scopeRef: request.scopeRef,
|
|
107
|
+
includeImage: request.includeImage,
|
|
108
|
+
}, options));
|
|
109
|
+
},
|
|
110
|
+
async act(request, options) {
|
|
111
|
+
return await macosHelper.command("act", { ...helperAction(request), cursorOverlay: getComputerUseConfig().cursor_overlay }, options);
|
|
112
|
+
},
|
|
113
|
+
async actBatch(requests, options) {
|
|
114
|
+
const cursorOverlay = getComputerUseConfig().cursor_overlay;
|
|
115
|
+
return await macosHelper.command("actBatch", { actions: requests.map((request) => ({ ...helperAction(request), cursorOverlay })) }, options);
|
|
116
|
+
},
|
|
117
|
+
async readText(args, options) {
|
|
118
|
+
return await macosHelper.command("axReadText", { ...args }, options);
|
|
119
|
+
},
|
|
120
|
+
async waitFor(args, options) {
|
|
121
|
+
return await macosHelper.command("axWaitFor", { ...args }, options);
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/macos/backend.ts"],"names":[],"mappings":"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","sourcesContent":["import { getComputerUseConfig } from \"../../config.ts\";\nimport { type LookResponse, parseLookResponse } from \"../../outline.ts\";\nimport { toBoolean, toFiniteNumber, toOptionalString } from \"../coerce.ts\";\nimport type {\n\tComputerUsePlatformBackend,\n\tFramePoints,\n\tHelperActResult,\n\tPlatformActRequest,\n\tPlatformApp,\n\tPlatformFocusWindowResult,\n\tPlatformFrontmostResult,\n\tPlatformObserveRequest,\n\tPlatformReadTextRequest,\n\tPlatformReadTextResponse,\n\tPlatformRoot,\n\tPlatformRootKind,\n\tPlatformRootQuery,\n\tPlatformTarget,\n\tPlatformWaitForRequest,\n\tPlatformWaitForResponse,\n} from \"../types.ts\";\nimport { macosHelper } from \"./helper.ts\";\n\nfunction parseApps(result: unknown): PlatformApp[] {\n\tconst array = Array.isArray(result) ? result : (result as any)?.apps;\n\tif (!Array.isArray(array)) return [];\n\n\treturn array\n\t\t.map((raw) => {\n\t\t\tconst pid = Math.trunc(toFiniteNumber((raw as any)?.pid, NaN));\n\t\t\tif (!Number.isFinite(pid) || pid <= 0) return undefined;\n\t\t\tconst appName = toOptionalString((raw as any)?.appName) ?? \"Unknown App\";\n\t\t\treturn {\n\t\t\t\tappName,\n\t\t\t\tbundleId: toOptionalString((raw as any)?.bundleId),\n\t\t\t\tpid,\n\t\t\t\tisFrontmost: toBoolean((raw as any)?.isFrontmost),\n\t\t\t} as PlatformApp;\n\t\t})\n\t\t.filter((item): item is PlatformApp => Boolean(item));\n}\n\nfunction parseFramePoints(raw: unknown): FramePoints {\n\tconst frame = (raw as any)?.framePoints ?? {};\n\treturn {\n\t\tx: toFiniteNumber(frame.x, 0),\n\t\ty: toFiniteNumber(frame.y, 0),\n\t\tw: Math.max(1, toFiniteNumber(frame.w, 1)),\n\t\th: Math.max(1, toFiniteNumber(frame.h, 1)),\n\t};\n}\n\nfunction parseRoots(result: unknown): PlatformRoot[] {\n\tconst array = Array.isArray(result) ? result : (result as any)?.roots;\n\tif (!Array.isArray(array)) return [];\n\n\treturn array.map((raw) => {\n\t\tconst metadata =\n\t\t\ttypeof (raw as any)?.metadata === \"object\" && (raw as any).metadata !== null\n\t\t\t\t? ((raw as any).metadata as Record<string, unknown>)\n\t\t\t\t: {};\n\t\tconst kind = [\"window\", \"menu\", \"sheet\", \"popover\", \"dialog\"].includes((raw as any)?.kind)\n\t\t\t? ((raw as any).kind as PlatformRootKind)\n\t\t\t: \"window\";\n\t\treturn {\n\t\t\tkind,\n\t\t\trootRef: toOptionalString((raw as any)?.rootRef ?? (raw as any)?.windowRef),\n\t\t\twindowRef: toOptionalString((raw as any)?.windowRef ?? (raw as any)?.rootRef),\n\t\t\twindowId: Number.isFinite((raw as any)?.windowId) ? Math.trunc((raw as any).windowId) : undefined,\n\t\t\tpid: Number.isFinite((raw as any)?.pid) ? Math.trunc((raw as any).pid) : undefined,\n\t\t\tappName: toOptionalString((raw as any)?.appName),\n\t\t\tbundleId: toOptionalString((raw as any)?.bundleId),\n\t\t\ttitle: toOptionalString((raw as any)?.title) ?? \"\",\n\t\t\trole: toOptionalString((raw as any)?.role),\n\t\t\tsubrole: toOptionalString((raw as any)?.subrole),\n\t\t\tframePoints: parseFramePoints(raw),\n\t\t\tscaleFactor: Math.max(1, toFiniteNumber((raw as any)?.scaleFactor, 1)),\n\t\t\tzOrder: Math.trunc(toFiniteNumber((raw as any)?.zOrder, 0)),\n\t\t\tisMinimized: toBoolean((raw as any)?.isMinimized),\n\t\t\tisOnscreen: toBoolean((raw as any)?.isOnscreen),\n\t\t\tisMain: toBoolean((raw as any)?.isMain),\n\t\t\tisFocused: toBoolean((raw as any)?.isFocused),\n\t\t\tisModal: toBoolean((raw as any)?.isModal),\n\t\t\tmetadata,\n\t\t};\n\t});\n}\n\nfunction helperAction(request: PlatformActRequest): Record<string, unknown> {\n\tif (!(\"focus\" in request.target)) return { ...request };\n\treturn { ...request, target: request.target.focus, params: { ...request.params, preserveFocus: true } };\n}\n\nexport const macosBackend: Pick<\n\tComputerUsePlatformBackend,\n\t\"listApps\" | \"listRoots\" | \"getFrontmost\" | \"focusWindow\" | \"observe\" | \"act\" | \"actBatch\" | \"readText\" | \"waitFor\"\n> = {\n\tasync listApps(signal?: AbortSignal): Promise<PlatformApp[]> {\n\t\treturn parseApps(await macosHelper.command<unknown>(\"listApps\", {}, { signal }));\n\t},\n\n\tasync listRoots(query: PlatformRootQuery, signal?: AbortSignal): Promise<PlatformRoot[]> {\n\t\treturn parseRoots(\n\t\t\tawait macosHelper.command<unknown>(\n\t\t\t\t\"listRoots\",\n\t\t\t\t{\n\t\t\t\t\t...(Number.isFinite(query.pid) ? { pid: Math.trunc(query.pid!) } : {}),\n\t\t\t\t\t...(query.title?.trim() ? { title: query.title.trim() } : {}),\n\t\t\t\t},\n\t\t\t\t{ signal },\n\t\t\t),\n\t\t);\n\t},\n\n\tasync getFrontmost(signal?: AbortSignal): Promise<PlatformFrontmostResult> {\n\t\tconst result = await macosHelper.command<any>(\"getFrontmost\", {}, { signal });\n\t\tconst pid = Math.trunc(toFiniteNumber(result?.pid, NaN));\n\t\tif (!Number.isFinite(pid) || pid <= 0) {\n\t\t\tthrow new Error(\"No frontmost app was available for screenshot targeting.\");\n\t\t}\n\t\treturn {\n\t\t\tappName: toOptionalString(result?.appName) ?? \"Unknown App\",\n\t\t\tbundleId: toOptionalString(result?.bundleId),\n\t\t\tpid,\n\t\t\twindowTitle: toOptionalString(result?.windowTitle),\n\t\t\twindowId: Number.isFinite(result?.windowId) ? Math.trunc(result.windowId) : undefined,\n\t\t};\n\t},\n\n\tasync focusWindow(target: PlatformTarget, signal?: AbortSignal): Promise<PlatformFocusWindowResult> {\n\t\treturn await macosHelper.command<PlatformFocusWindowResult>(\"focusWindow\", { ...target }, { signal });\n\t},\n\n\tasync observe(\n\t\trequest: PlatformObserveRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<LookResponse> {\n\t\treturn parseLookResponse(\n\t\t\tawait macosHelper.command(\n\t\t\t\t\"look\",\n\t\t\t\t{\n\t\t\t\t\tbaseLookId: request.baseLookId,\n\t\t\t\t\twindowId: request.target.windowId,\n\t\t\t\t\twindowRef: request.target.rootRef,\n\t\t\t\t\tmaxDimension: request.maxDimension,\n\t\t\t\t\treadText: request.readText,\n\t\t\t\t\tscopeRef: request.scopeRef,\n\t\t\t\t\tincludeImage: request.includeImage,\n\t\t\t\t},\n\t\t\t\toptions,\n\t\t\t),\n\t\t);\n\t},\n\n\tasync act(\n\t\trequest: PlatformActRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<HelperActResult> {\n\t\treturn await macosHelper.command<HelperActResult>(\n\t\t\t\"act\",\n\t\t\t{ ...helperAction(request), cursorOverlay: getComputerUseConfig().cursor_overlay },\n\t\t\toptions,\n\t\t);\n\t},\n\n\tasync actBatch(\n\t\trequests: PlatformActRequest[],\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<HelperActResult> {\n\t\tconst cursorOverlay = getComputerUseConfig().cursor_overlay;\n\t\treturn await macosHelper.command<HelperActResult>(\n\t\t\t\"actBatch\",\n\t\t\t{ actions: requests.map((request) => ({ ...helperAction(request), cursorOverlay })) },\n\t\t\toptions,\n\t\t);\n\t},\n\n\tasync readText(\n\t\targs: PlatformReadTextRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<PlatformReadTextResponse> {\n\t\treturn await macosHelper.command(\"axReadText\", { ...args }, options);\n\t},\n\n\tasync waitFor(\n\t\targs: PlatformWaitForRequest,\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<PlatformWaitForResponse> {\n\t\treturn await macosHelper.command(\"axWaitFor\", { ...args }, options);\n\t},\n};\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function isBrowserApp(appName: string, bundleId?: string): boolean;
|
|
2
|
+
export declare function isChromeFamilyApp(appName: string, bundleId?: string): boolean;
|
|
3
|
+
export declare function openBrowserLocationWithAppleScript(target: {
|
|
4
|
+
appName: string;
|
|
5
|
+
bundleId?: string;
|
|
6
|
+
}, url: string, signal?: AbortSignal): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/macos/browser.ts"],"names":[],"mappings":"AA6EA,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAExE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7E;AAoBD,wBAAsB,kCAAkC,CACvD,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9C,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,OAAO,CAAC,CAUlB","sourcesContent":["import { runProcess } from \"./helper.ts\";\n\nconst BROWSER_WINDOW_OPEN_TIMEOUT_MS = 10_000;\n\nconst BROWSER_BUNDLE_IDS = new Set([\n\t\"com.apple.Safari\",\n\t\"com.google.Chrome\",\n\t\"org.chromium.Chromium\",\n\t\"company.thebrowser.Browser\",\n\t\"com.brave.Browser\",\n\t\"com.microsoft.edgemac\",\n\t\"com.vivaldi.Vivaldi\",\n\t\"net.imput.helium\",\n\t\"org.mozilla.firefox\",\n]);\nconst BROWSER_APP_NAMES = new Set([\n\t\"safari\",\n\t\"google chrome\",\n\t\"chrome\",\n\t\"chromium\",\n\t\"arc\",\n\t\"brave browser\",\n\t\"brave\",\n\t\"microsoft edge\",\n\t\"edge\",\n\t\"vivaldi\",\n\t\"helium\",\n\t\"firefox\",\n]);\nconst CHROME_FAMILY_BUNDLE_IDS = new Set([\n\t\"com.google.Chrome\",\n\t\"org.chromium.Chromium\",\n\t\"company.thebrowser.Browser\",\n\t\"com.brave.Browser\",\n\t\"com.microsoft.edgemac\",\n\t\"com.vivaldi.Vivaldi\",\n\t\"net.imput.helium\",\n]);\nconst CHROME_FAMILY_APP_NAMES = new Set([\n\t\"google chrome\",\n\t\"chrome\",\n\t\"chromium\",\n\t\"arc\",\n\t\"brave browser\",\n\t\"brave\",\n\t\"microsoft edge\",\n\t\"edge\",\n\t\"vivaldi\",\n\t\"helium\",\n]);\n\nfunction normalizeText(value: string): string {\n\treturn value.trim().toLowerCase();\n}\n\nfunction escapeAppleScriptString(value: string): string {\n\treturn value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll('\"', '\\\\\"');\n}\n\nfunction appendBrowserJavaScriptAppleEventsHint(error: Error): Error {\n\tconst hint = [\n\t\t\"Browser JavaScript Apple Events are disabled for the target browser.\",\n\t\t'Ask the user to enable \"Allow JavaScript from Apple Events\" in the browser\\'s developer menu, then retry the browser action.',\n\t].join(\" \");\n\tif (\n\t\t!/not allowed to send javascript commands|executing javascript through applescript is turned off|allow javascript from apple events|enable javascript from apple events/i.test(\n\t\t\terror.message,\n\t\t) ||\n\t\terror.message.includes(hint)\n\t) {\n\t\treturn error;\n\t}\n\tconst enhanced = new Error(`${error.message}\\n\\n${hint}`);\n\tenhanced.name = error.name;\n\treturn enhanced;\n}\n\nexport function isBrowserApp(appName: string, bundleId?: string): boolean {\n\treturn BROWSER_BUNDLE_IDS.has(bundleId ?? \"\") || BROWSER_APP_NAMES.has(normalizeText(appName));\n}\n\nexport function isChromeFamilyApp(appName: string, bundleId?: string): boolean {\n\treturn CHROME_FAMILY_BUNDLE_IDS.has(bundleId ?? \"\") || CHROME_FAMILY_APP_NAMES.has(normalizeText(appName));\n}\n\nfunction scriptForBrowserOpenLocation(\n\ttarget: { appName: string; bundleId?: string },\n\turl: string,\n): string[] | undefined {\n\tconst appTarget = target.bundleId\n\t\t? `application id \"${escapeAppleScriptString(target.bundleId)}\"`\n\t\t: `application \"${escapeAppleScriptString(target.appName)}\"`;\n\tconst escapedUrl = escapeAppleScriptString(url);\n\tconst normalizedName = normalizeText(target.appName);\n\tif (target.bundleId === \"com.apple.Safari\" || normalizedName === \"safari\") {\n\t\treturn [`tell ${appTarget} to set URL of front document to \"${escapedUrl}\"`];\n\t}\n\tif (isChromeFamilyApp(target.appName, target.bundleId)) {\n\t\treturn [`tell ${appTarget} to set URL of active tab of front window to \"${escapedUrl}\"`];\n\t}\n\treturn undefined;\n}\n\nexport async function openBrowserLocationWithAppleScript(\n\ttarget: { appName: string; bundleId?: string },\n\turl: string,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\tconst script = scriptForBrowserOpenLocation(target, url);\n\tif (!script) return false;\n\tconst args = script.flatMap((line) => [\"-e\", line]);\n\ttry {\n\t\tawait runProcess(\"osascript\", args, BROWSER_WINDOW_OPEN_TIMEOUT_MS, signal);\n\t\treturn true;\n\t} catch (error) {\n\t\tthrow appendBrowserJavaScriptAppleEventsHint(error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n"]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { runProcess } from "./helper.js";
|
|
2
|
+
const BROWSER_WINDOW_OPEN_TIMEOUT_MS = 10_000;
|
|
3
|
+
const BROWSER_BUNDLE_IDS = new Set([
|
|
4
|
+
"com.apple.Safari",
|
|
5
|
+
"com.google.Chrome",
|
|
6
|
+
"org.chromium.Chromium",
|
|
7
|
+
"company.thebrowser.Browser",
|
|
8
|
+
"com.brave.Browser",
|
|
9
|
+
"com.microsoft.edgemac",
|
|
10
|
+
"com.vivaldi.Vivaldi",
|
|
11
|
+
"net.imput.helium",
|
|
12
|
+
"org.mozilla.firefox",
|
|
13
|
+
]);
|
|
14
|
+
const BROWSER_APP_NAMES = new Set([
|
|
15
|
+
"safari",
|
|
16
|
+
"google chrome",
|
|
17
|
+
"chrome",
|
|
18
|
+
"chromium",
|
|
19
|
+
"arc",
|
|
20
|
+
"brave browser",
|
|
21
|
+
"brave",
|
|
22
|
+
"microsoft edge",
|
|
23
|
+
"edge",
|
|
24
|
+
"vivaldi",
|
|
25
|
+
"helium",
|
|
26
|
+
"firefox",
|
|
27
|
+
]);
|
|
28
|
+
const CHROME_FAMILY_BUNDLE_IDS = new Set([
|
|
29
|
+
"com.google.Chrome",
|
|
30
|
+
"org.chromium.Chromium",
|
|
31
|
+
"company.thebrowser.Browser",
|
|
32
|
+
"com.brave.Browser",
|
|
33
|
+
"com.microsoft.edgemac",
|
|
34
|
+
"com.vivaldi.Vivaldi",
|
|
35
|
+
"net.imput.helium",
|
|
36
|
+
]);
|
|
37
|
+
const CHROME_FAMILY_APP_NAMES = new Set([
|
|
38
|
+
"google chrome",
|
|
39
|
+
"chrome",
|
|
40
|
+
"chromium",
|
|
41
|
+
"arc",
|
|
42
|
+
"brave browser",
|
|
43
|
+
"brave",
|
|
44
|
+
"microsoft edge",
|
|
45
|
+
"edge",
|
|
46
|
+
"vivaldi",
|
|
47
|
+
"helium",
|
|
48
|
+
]);
|
|
49
|
+
function normalizeText(value) {
|
|
50
|
+
return value.trim().toLowerCase();
|
|
51
|
+
}
|
|
52
|
+
function escapeAppleScriptString(value) {
|
|
53
|
+
return value.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
|
|
54
|
+
}
|
|
55
|
+
function appendBrowserJavaScriptAppleEventsHint(error) {
|
|
56
|
+
const hint = [
|
|
57
|
+
"Browser JavaScript Apple Events are disabled for the target browser.",
|
|
58
|
+
'Ask the user to enable "Allow JavaScript from Apple Events" in the browser\'s developer menu, then retry the browser action.',
|
|
59
|
+
].join(" ");
|
|
60
|
+
if (!/not allowed to send javascript commands|executing javascript through applescript is turned off|allow javascript from apple events|enable javascript from apple events/i.test(error.message) ||
|
|
61
|
+
error.message.includes(hint)) {
|
|
62
|
+
return error;
|
|
63
|
+
}
|
|
64
|
+
const enhanced = new Error(`${error.message}\n\n${hint}`);
|
|
65
|
+
enhanced.name = error.name;
|
|
66
|
+
return enhanced;
|
|
67
|
+
}
|
|
68
|
+
export function isBrowserApp(appName, bundleId) {
|
|
69
|
+
return BROWSER_BUNDLE_IDS.has(bundleId ?? "") || BROWSER_APP_NAMES.has(normalizeText(appName));
|
|
70
|
+
}
|
|
71
|
+
export function isChromeFamilyApp(appName, bundleId) {
|
|
72
|
+
return CHROME_FAMILY_BUNDLE_IDS.has(bundleId ?? "") || CHROME_FAMILY_APP_NAMES.has(normalizeText(appName));
|
|
73
|
+
}
|
|
74
|
+
function scriptForBrowserOpenLocation(target, url) {
|
|
75
|
+
const appTarget = target.bundleId
|
|
76
|
+
? `application id "${escapeAppleScriptString(target.bundleId)}"`
|
|
77
|
+
: `application "${escapeAppleScriptString(target.appName)}"`;
|
|
78
|
+
const escapedUrl = escapeAppleScriptString(url);
|
|
79
|
+
const normalizedName = normalizeText(target.appName);
|
|
80
|
+
if (target.bundleId === "com.apple.Safari" || normalizedName === "safari") {
|
|
81
|
+
return [`tell ${appTarget} to set URL of front document to "${escapedUrl}"`];
|
|
82
|
+
}
|
|
83
|
+
if (isChromeFamilyApp(target.appName, target.bundleId)) {
|
|
84
|
+
return [`tell ${appTarget} to set URL of active tab of front window to "${escapedUrl}"`];
|
|
85
|
+
}
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
export async function openBrowserLocationWithAppleScript(target, url, signal) {
|
|
89
|
+
const script = scriptForBrowserOpenLocation(target, url);
|
|
90
|
+
if (!script)
|
|
91
|
+
return false;
|
|
92
|
+
const args = script.flatMap((line) => ["-e", line]);
|
|
93
|
+
try {
|
|
94
|
+
await runProcess("osascript", args, BROWSER_WINDOW_OPEN_TIMEOUT_MS, signal);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
throw appendBrowserJavaScriptAppleEventsHint(error instanceof Error ? error : new Error(String(error)));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/macos/browser.ts"],"names":[],"mappings":"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","sourcesContent":["import { runProcess } from \"./helper.ts\";\n\nconst BROWSER_WINDOW_OPEN_TIMEOUT_MS = 10_000;\n\nconst BROWSER_BUNDLE_IDS = new Set([\n\t\"com.apple.Safari\",\n\t\"com.google.Chrome\",\n\t\"org.chromium.Chromium\",\n\t\"company.thebrowser.Browser\",\n\t\"com.brave.Browser\",\n\t\"com.microsoft.edgemac\",\n\t\"com.vivaldi.Vivaldi\",\n\t\"net.imput.helium\",\n\t\"org.mozilla.firefox\",\n]);\nconst BROWSER_APP_NAMES = new Set([\n\t\"safari\",\n\t\"google chrome\",\n\t\"chrome\",\n\t\"chromium\",\n\t\"arc\",\n\t\"brave browser\",\n\t\"brave\",\n\t\"microsoft edge\",\n\t\"edge\",\n\t\"vivaldi\",\n\t\"helium\",\n\t\"firefox\",\n]);\nconst CHROME_FAMILY_BUNDLE_IDS = new Set([\n\t\"com.google.Chrome\",\n\t\"org.chromium.Chromium\",\n\t\"company.thebrowser.Browser\",\n\t\"com.brave.Browser\",\n\t\"com.microsoft.edgemac\",\n\t\"com.vivaldi.Vivaldi\",\n\t\"net.imput.helium\",\n]);\nconst CHROME_FAMILY_APP_NAMES = new Set([\n\t\"google chrome\",\n\t\"chrome\",\n\t\"chromium\",\n\t\"arc\",\n\t\"brave browser\",\n\t\"brave\",\n\t\"microsoft edge\",\n\t\"edge\",\n\t\"vivaldi\",\n\t\"helium\",\n]);\n\nfunction normalizeText(value: string): string {\n\treturn value.trim().toLowerCase();\n}\n\nfunction escapeAppleScriptString(value: string): string {\n\treturn value.replaceAll(\"\\\\\", \"\\\\\\\\\").replaceAll('\"', '\\\\\"');\n}\n\nfunction appendBrowserJavaScriptAppleEventsHint(error: Error): Error {\n\tconst hint = [\n\t\t\"Browser JavaScript Apple Events are disabled for the target browser.\",\n\t\t'Ask the user to enable \"Allow JavaScript from Apple Events\" in the browser\\'s developer menu, then retry the browser action.',\n\t].join(\" \");\n\tif (\n\t\t!/not allowed to send javascript commands|executing javascript through applescript is turned off|allow javascript from apple events|enable javascript from apple events/i.test(\n\t\t\terror.message,\n\t\t) ||\n\t\terror.message.includes(hint)\n\t) {\n\t\treturn error;\n\t}\n\tconst enhanced = new Error(`${error.message}\\n\\n${hint}`);\n\tenhanced.name = error.name;\n\treturn enhanced;\n}\n\nexport function isBrowserApp(appName: string, bundleId?: string): boolean {\n\treturn BROWSER_BUNDLE_IDS.has(bundleId ?? \"\") || BROWSER_APP_NAMES.has(normalizeText(appName));\n}\n\nexport function isChromeFamilyApp(appName: string, bundleId?: string): boolean {\n\treturn CHROME_FAMILY_BUNDLE_IDS.has(bundleId ?? \"\") || CHROME_FAMILY_APP_NAMES.has(normalizeText(appName));\n}\n\nfunction scriptForBrowserOpenLocation(\n\ttarget: { appName: string; bundleId?: string },\n\turl: string,\n): string[] | undefined {\n\tconst appTarget = target.bundleId\n\t\t? `application id \"${escapeAppleScriptString(target.bundleId)}\"`\n\t\t: `application \"${escapeAppleScriptString(target.appName)}\"`;\n\tconst escapedUrl = escapeAppleScriptString(url);\n\tconst normalizedName = normalizeText(target.appName);\n\tif (target.bundleId === \"com.apple.Safari\" || normalizedName === \"safari\") {\n\t\treturn [`tell ${appTarget} to set URL of front document to \"${escapedUrl}\"`];\n\t}\n\tif (isChromeFamilyApp(target.appName, target.bundleId)) {\n\t\treturn [`tell ${appTarget} to set URL of active tab of front window to \"${escapedUrl}\"`];\n\t}\n\treturn undefined;\n}\n\nexport async function openBrowserLocationWithAppleScript(\n\ttarget: { appName: string; bundleId?: string },\n\turl: string,\n\tsignal?: AbortSignal,\n): Promise<boolean> {\n\tconst script = scriptForBrowserOpenLocation(target, url);\n\tif (!script) return false;\n\tconst args = script.flatMap((line) => [\"-e\", line]);\n\ttry {\n\t\tawait runProcess(\"osascript\", args, BROWSER_WINDOW_OPEN_TIMEOUT_MS, signal);\n\t\treturn true;\n\t} catch (error) {\n\t\tthrow appendBrowserJavaScriptAppleEventsHint(error instanceof Error ? error : new Error(String(error)));\n\t}\n}\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { accessSync, constants as fsConstants, existsSync } from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const HELPER_APP_NAME = "ada-computer-use.app";
|
|
6
|
+
const SYSTEM_HELPER_APP_PATH = path.join("/Applications", HELPER_APP_NAME);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Resolve one stable helper location for both installation and runtime use.
|
|
10
|
+
* Existing writable system installs stay in place; all other installs are
|
|
11
|
+
* per-user so standard macOS accounts never require administrator access.
|
|
12
|
+
*/
|
|
13
|
+
export function resolveMacosHelperAppPath(options = {}) {
|
|
14
|
+
const env = options.env ?? process.env;
|
|
15
|
+
const explicitPath = env.ADA_COMPUTER_USE_HELPER_APP_PATH?.trim();
|
|
16
|
+
if (explicitPath) return path.resolve(explicitPath);
|
|
17
|
+
|
|
18
|
+
const homeDir = options.homeDir ?? os.homedir();
|
|
19
|
+
const systemHelperAppPath = options.systemHelperAppPath ?? SYSTEM_HELPER_APP_PATH;
|
|
20
|
+
const fileExists = options.fileExists ?? existsSync;
|
|
21
|
+
const directoryIsWritable = options.directoryIsWritable ?? ((directoryPath) => {
|
|
22
|
+
try {
|
|
23
|
+
accessSync(directoryPath, fsConstants.W_OK);
|
|
24
|
+
return true;
|
|
25
|
+
} catch {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
if (fileExists(systemHelperAppPath) && directoryIsWritable(path.dirname(systemHelperAppPath))) {
|
|
31
|
+
return systemHelperAppPath;
|
|
32
|
+
}
|
|
33
|
+
return path.join(homeDir, "Applications", HELPER_APP_NAME);
|
|
34
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { PlatformDiagnostics } from "../types.ts";
|
|
2
|
+
export declare const HELPER_BUNDLE_ID = "com.hoilab.ada-computer-use";
|
|
3
|
+
export declare const HELPER_APP_PATH: string;
|
|
4
|
+
export declare const HELPER_APP_EXECUTABLE_PATH: string;
|
|
5
|
+
export declare const HELPER_SOCKET_PATH: string;
|
|
6
|
+
export declare class HelperTransportError extends Error {
|
|
7
|
+
constructor(message: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class HelperCommandError extends Error {
|
|
10
|
+
readonly code?: string;
|
|
11
|
+
constructor(message: string, code?: string);
|
|
12
|
+
}
|
|
13
|
+
export declare function runProcess(command: string, args: string[], timeoutMs: number, signal?: AbortSignal, env?: NodeJS.ProcessEnv): Promise<void>;
|
|
14
|
+
export declare class MacosHelperClient {
|
|
15
|
+
private daemonAvailable;
|
|
16
|
+
private requestSequence;
|
|
17
|
+
private diagnosticsCache?;
|
|
18
|
+
get diagnostics(): PlatformDiagnostics | undefined;
|
|
19
|
+
ensureInstalled(signal?: AbortSignal): Promise<void>;
|
|
20
|
+
launchDaemon(signal?: AbortSignal): Promise<void>;
|
|
21
|
+
daemonCommand<T>(cmd: string, args: Record<string, unknown>, timeoutMs: number, signal?: AbortSignal): Promise<T>;
|
|
22
|
+
ensureDaemon(signal?: AbortSignal): Promise<boolean>;
|
|
23
|
+
command<T>(cmd: string, args?: Record<string, unknown>, options?: {
|
|
24
|
+
timeoutMs?: number;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
}): Promise<T>;
|
|
27
|
+
restart(signal?: AbortSignal): Promise<void>;
|
|
28
|
+
diagnosticsCommand(signal?: AbortSignal): Promise<PlatformDiagnostics>;
|
|
29
|
+
ensureProtocol(signal?: AbortSignal): Promise<PlatformDiagnostics>;
|
|
30
|
+
}
|
|
31
|
+
export declare const macosHelper: MacosHelperClient;
|
|
32
|
+
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../../src/core/computer/motor/platform/macos/helper.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOvD,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAC9D,eAAO,MAAM,eAAe,QAA8B,CAAC;AAC3D,eAAO,MAAM,0BAA0B,QAA4D,CAAC;AAEpG,eAAO,MAAM,kBAAkB,QAA8D,CAAC;AAM9F,qBAAa,oBAAqB,SAAQ,KAAK;IAC9C,YAAY,OAAO,EAAE,MAAM,EAG1B;CACD;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAIzC;CACD;AAoCD,wBAAsB,UAAU,CAC/B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,EACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,gBAAgB,CAAC,CAAsB;IAE/C,IAAI,WAAW,IAAI,mBAAmB,GAAG,SAAS,CAEjD;IAEK,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBzD;IAEK,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAYtD;IAEK,aAAa,CAAC,CAAC,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,CAAC,CAAC,CA8CZ;IAEK,YAAY,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzD;IAEK,OAAO,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACpD,OAAO,CAAC,CAAC,CAAC,CAWZ;IAEK,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjD;IAEK,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqB3E;IAEK,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmBvE;CACD;AAED,eAAO,MAAM,WAAW,mBAA0B,CAAC","sourcesContent":["import { spawn } from \"node:child_process\";\nimport { constants as fsConstants } from \"node:fs\";\nimport { access, mkdir, realpath } from \"node:fs/promises\";\nimport net from \"node:net\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { toBoolean, toFiniteNumber, toOptionalString } from \"../coerce.ts\";\nimport type { PlatformDiagnostics } from \"../types.ts\";\nimport { resolveMacosHelperAppPath } from \"./helper-path.mjs\";\n\nconst COMMAND_TIMEOUT_MS = 15_000;\nconst HELPER_PROTOCOL_VERSION = 6;\nconst HELPER_SETUP_TIMEOUT_MS = 60_000;\n\nexport const HELPER_BUNDLE_ID = \"com.hoilab.ada-computer-use\";\nexport const HELPER_APP_PATH = resolveMacosHelperAppPath();\nexport const HELPER_APP_EXECUTABLE_PATH = path.join(HELPER_APP_PATH, \"Contents\", \"MacOS\", \"bridge\");\nconst DEFAULT_HELPER_SOCKET_PATH = path.join(os.homedir(), \"Library\", \"Caches\", \"ada-computer-use\", \"bridge.sock\");\nexport const HELPER_SOCKET_PATH = process.env.PI_CU_SOCKET_PATH ?? DEFAULT_HELPER_SOCKET_PATH;\nconst usingExternalHelperSocket = HELPER_SOCKET_PATH !== DEFAULT_HELPER_SOCKET_PATH;\n\nconst PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), \"..\", \"..\", \"..\");\nconst SETUP_HELPER_SCRIPT = path.join(PACKAGE_ROOT, \"scripts\", \"setup-helper.mjs\");\n\nexport class HelperTransportError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = \"HelperTransportError\";\n\t}\n}\n\nexport class HelperCommandError extends Error {\n\treadonly code?: string;\n\n\tconstructor(message: string, code?: string) {\n\t\tsuper(message);\n\t\tthis.name = \"HelperCommandError\";\n\t\tthis.code = code;\n\t}\n}\n\nfunction throwIfAborted(signal?: AbortSignal): void {\n\tif (signal?.aborted) throw new Error(\"Operation aborted.\");\n}\n\nasync function sleep(ms: number, signal?: AbortSignal): Promise<void> {\n\tthrowIfAborted(signal);\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst timer = setTimeout(resolve, ms);\n\t\tconst onAbort = () => {\n\t\t\tclearTimeout(timer);\n\t\t\treject(new Error(\"Operation aborted.\"));\n\t\t};\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t}).finally(() => signal?.throwIfAborted?.());\n}\n\nasync function isExecutable(filePath: string): Promise<boolean> {\n\ttry {\n\t\tawait access(filePath, fsConstants.X_OK);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function isResolvedHelperExecutable(filePath?: string): Promise<boolean> {\n\tif (!filePath) return true;\n\tconst [actualPath, expectedPath] = await Promise.all([\n\t\trealpath(filePath).catch(() => path.resolve(filePath)),\n\t\trealpath(HELPER_APP_EXECUTABLE_PATH).catch(() => path.resolve(HELPER_APP_EXECUTABLE_PATH)),\n\t]);\n\treturn actualPath === expectedPath;\n}\n\nexport async function runProcess(\n\tcommand: string,\n\targs: string[],\n\ttimeoutMs: number,\n\tsignal?: AbortSignal,\n\tenv?: NodeJS.ProcessEnv,\n): Promise<void> {\n\tthrowIfAborted(signal);\n\n\tawait new Promise<void>((resolve, reject) => {\n\t\tconst child = spawn(command, args, {\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tenv,\n\t\t});\n\n\t\tlet stderr = \"\";\n\t\tlet stdout = \"\";\n\n\t\tconst timer = setTimeout(() => {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\tcleanup();\n\t\t\treject(new Error(`Command timed out after ${timeoutMs}ms: ${command} ${args.join(\" \")}`));\n\t\t}, timeoutMs);\n\n\t\tconst onAbort = () => {\n\t\t\tchild.kill(\"SIGTERM\");\n\t\t\tcleanup();\n\t\t\treject(new Error(\"Operation aborted.\"));\n\t\t};\n\n\t\tconst cleanup = () => {\n\t\t\tclearTimeout(timer);\n\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t};\n\n\t\tchild.stdout.on(\"data\", (chunk) => {\n\t\t\tstdout += String(chunk);\n\t\t});\n\n\t\tchild.stderr.on(\"data\", (chunk) => {\n\t\t\tstderr += String(chunk);\n\t\t});\n\n\t\tchild.on(\"error\", (error) => {\n\t\t\tcleanup();\n\t\t\treject(error);\n\t\t});\n\n\t\tchild.on(\"close\", (code) => {\n\t\t\tcleanup();\n\t\t\tif (code === 0) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst output = [stderr.trim(), stdout.trim()].filter(Boolean).join(\"\\n\");\n\t\t\treject(new Error(`Command failed (${code}): ${command} ${args.join(\" \")}\\n${output}`.trim()));\n\t\t});\n\n\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t});\n}\n\nexport class MacosHelperClient {\n\tprivate daemonAvailable = false;\n\tprivate requestSequence = 0;\n\tprivate diagnosticsCache?: PlatformDiagnostics;\n\n\tget diagnostics(): PlatformDiagnostics | undefined {\n\t\treturn this.diagnosticsCache;\n\t}\n\n\tasync ensureInstalled(signal?: AbortSignal): Promise<void> {\n\t\tif (usingExternalHelperSocket) return;\n\t\t// Installation is a deployment/repair operation, not part of every new\n\t\t// agent process's hot path. Protocol compatibility is checked against the\n\t\t// live daemon immediately afterwards.\n\t\tif (await isExecutable(HELPER_APP_EXECUTABLE_PATH)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Re-enter Electron and Bun standalone hosts as their JavaScript runtimes.\n\t\tawait runProcess(process.execPath, [SETUP_HELPER_SCRIPT, \"--runtime\"], HELPER_SETUP_TIMEOUT_MS, signal, {\n\t\t\t...process.env,\n\t\t\tELECTRON_RUN_AS_NODE: \"1\",\n\t\t\tBUN_BE_BUN: \"1\",\n\t\t});\n\n\t\tif (!(await isExecutable(HELPER_APP_EXECUTABLE_PATH))) {\n\t\t\tthrow new Error(`Failed to install ada-computer-use helper app at ${HELPER_APP_PATH}.`);\n\t\t}\n\t}\n\n\tasync launchDaemon(signal?: AbortSignal): Promise<void> {\n\t\tif (usingExternalHelperSocket)\n\t\t\tthrow new HelperTransportError(`External helper socket is unavailable at ${HELPER_SOCKET_PATH}.`);\n\t\tawait mkdir(path.dirname(HELPER_SOCKET_PATH), { recursive: true });\n\t\t// Open the resolved bundle directly so a legacy system-wide copy with the\n\t\t// same bundle id cannot win LaunchServices resolution.\n\t\tawait runProcess(\n\t\t\t\"open\",\n\t\t\t[\"-n\", \"-g\", HELPER_APP_PATH, \"--args\", \"serve\", \"--socket\", HELPER_SOCKET_PATH],\n\t\t\tCOMMAND_TIMEOUT_MS,\n\t\t\tsignal,\n\t\t);\n\t}\n\n\tasync daemonCommand<T>(\n\t\tcmd: string,\n\t\targs: Record<string, unknown>,\n\t\ttimeoutMs: number,\n\t\tsignal?: AbortSignal,\n\t): Promise<T> {\n\t\treturn await new Promise<T>((resolve, reject) => {\n\t\t\tconst id = `req_${++this.requestSequence}`;\n\t\t\tconst socket = net.createConnection(HELPER_SOCKET_PATH);\n\t\t\tlet buffer = \"\";\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tsocket.destroy();\n\t\t\t\treject(new HelperTransportError(`Daemon command '${cmd}' timed out after ${timeoutMs}ms.`));\n\t\t\t}, timeoutMs);\n\t\t\tconst cleanup = () => {\n\t\t\t\tclearTimeout(timer);\n\t\t\t\tsignal?.removeEventListener(\"abort\", onAbort);\n\t\t\t};\n\t\t\tconst onAbort = () => {\n\t\t\t\tsocket.destroy();\n\t\t\t\tcleanup();\n\t\t\t\treject(new Error(\"Operation aborted.\"));\n\t\t\t};\n\t\t\tsignal?.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\tsocket.setEncoding(\"utf8\");\n\t\t\tsocket.on(\"connect\", () => socket.write(`${JSON.stringify({ id, cmd, ...args })}\\n`));\n\t\t\tsocket.on(\"data\", (chunk) => {\n\t\t\t\tbuffer += chunk;\n\t\t\t\tconst newline = buffer.indexOf(\"\\n\");\n\t\t\t\tif (newline < 0) return;\n\t\t\t\tcleanup();\n\t\t\t\tsocket.end();\n\t\t\t\ttry {\n\t\t\t\t\tconst parsed = JSON.parse(buffer.slice(0, newline));\n\t\t\t\t\tif (parsed.ok === true) resolve(parsed.result as T);\n\t\t\t\t\telse\n\t\t\t\t\t\treject(\n\t\t\t\t\t\t\tnew HelperCommandError(\n\t\t\t\t\t\t\t\tparsed?.error?.message ?? `Daemon command '${cmd}' failed.`,\n\t\t\t\t\t\t\t\tparsed?.error?.code,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\t\t\t});\n\t\t\tsocket.on(\"error\", (error) => {\n\t\t\t\tcleanup();\n\t\t\t\treject(new HelperTransportError(error.message));\n\t\t\t});\n\t\t});\n\t}\n\n\tasync ensureDaemon(signal?: AbortSignal): Promise<boolean> {\n\t\tif (this.daemonAvailable) return true;\n\t\ttry {\n\t\t\tawait this.daemonCommand(\"diagnostics\", {}, 1_000, signal);\n\t\t\tthis.daemonAvailable = true;\n\t\t\treturn true;\n\t\t} catch {}\n\t\tawait this.launchDaemon(signal).catch(() => undefined);\n\t\tfor (let index = 0; index < 30; index += 1) {\n\t\t\ttry {\n\t\t\t\tawait this.daemonCommand(\"diagnostics\", {}, 1_000, signal);\n\t\t\t\tthis.daemonAvailable = true;\n\t\t\t\treturn true;\n\t\t\t} catch {\n\t\t\t\tawait sleep(100, signal);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tasync command<T>(\n\t\tcmd: string,\n\t\targs: Record<string, unknown> = {},\n\t\toptions?: { timeoutMs?: number; signal?: AbortSignal },\n\t): Promise<T> {\n\t\tconst timeoutMs = options?.timeoutMs ?? COMMAND_TIMEOUT_MS;\n\t\tif (!(await this.ensureDaemon(options?.signal))) {\n\t\t\tthrow new HelperTransportError(`ada-computer-use helper app daemon is unavailable at ${HELPER_APP_PATH}.`);\n\t\t}\n\t\ttry {\n\t\t\treturn await this.daemonCommand<T>(cmd, args, timeoutMs, options?.signal);\n\t\t} catch (error) {\n\t\t\tthis.daemonAvailable = false;\n\t\t\tthrow error instanceof Error ? error : new Error(String(error));\n\t\t}\n\t}\n\n\tasync restart(signal?: AbortSignal): Promise<void> {\n\t\tawait this.command(\"shutdown\", {}, { signal, timeoutMs: 2_000 }).catch(() => undefined);\n\t\tthis.daemonAvailable = false;\n\t\tawait sleep(400, signal);\n\t\tif (!(await this.ensureDaemon(signal))) {\n\t\t\tthrow new Error(`ada-computer-use helper did not come back after restart. Helper app: ${HELPER_APP_PATH}`);\n\t\t}\n\t}\n\n\tasync diagnosticsCommand(signal?: AbortSignal): Promise<PlatformDiagnostics> {\n\t\tconst result = await this.command<any>(\"diagnostics\", {}, { signal });\n\t\tconst diagnostics = {\n\t\t\tprotocolVersion: Math.trunc(toFiniteNumber(result?.protocolVersion, 0)),\n\t\t\tarchitectureVersion: Math.trunc(toFiniteNumber(result?.architectureVersion, 0)),\n\t\t\tinvariants: Array.isArray(result?.invariants)\n\t\t\t\t? result.invariants.filter((value: unknown): value is string => typeof value === \"string\")\n\t\t\t\t: [],\n\t\t\tpid: Math.trunc(toFiniteNumber(result?.pid, 0)),\n\t\t\tparentPid: Math.trunc(toFiniteNumber(result?.parentPid, 0)) || undefined,\n\t\t\tparentAppName: toOptionalString(result?.parentAppName),\n\t\t\tparentBundleId: toOptionalString(result?.parentBundleId),\n\t\t\tparentPath: toOptionalString(result?.parentPath),\n\t\t\texecutablePath: toOptionalString(result?.executablePath),\n\t\t\tos: toOptionalString(result?.macOS),\n\t\t\tarch: toOptionalString(result?.arch),\n\t\t\taccessibility: toBoolean(result?.accessibility),\n\t\t\tscreenRecording: toBoolean(result?.screenRecording),\n\t\t};\n\t\tthis.diagnosticsCache = diagnostics;\n\t\treturn diagnostics;\n\t}\n\n\tasync ensureProtocol(signal?: AbortSignal): Promise<PlatformDiagnostics> {\n\t\tlet diagnostics = await this.diagnosticsCommand(signal);\n\t\tconst executableMatches = await isResolvedHelperExecutable(diagnostics.executablePath);\n\t\tif (diagnostics.protocolVersion === HELPER_PROTOCOL_VERSION && executableMatches) return diagnostics;\n\n\t\t// The helper daemon outlives Pi, so restarting/reloading Pi alone does not\n\t\t// replace a stale daemon or one launched from the legacy system location.\n\t\t// Stop it through the backwards-compatible command channel and relaunch\n\t\t// the exact app bundle that ensureInstalled() resolved.\n\t\tawait this.restart(signal);\n\t\tdiagnostics = await this.diagnosticsCommand(signal);\n\t\tconst relaunchedExecutableMatches = await isResolvedHelperExecutable(diagnostics.executablePath);\n\t\tif (diagnostics.protocolVersion !== HELPER_PROTOCOL_VERSION || !relaunchedExecutableMatches) {\n\t\t\tthis.daemonAvailable = false;\n\t\t\tthrow new Error(\n\t\t\t\t`ada-computer-use helper mismatch after relaunch: expected protocol ${HELPER_PROTOCOL_VERSION} and executable ${HELPER_APP_EXECUTABLE_PATH}; got protocol ${diagnostics.protocolVersion} and executable ${diagnostics.executablePath ?? \"unknown\"}. Reinstall or rebuild the helper app at ${HELPER_APP_PATH}.`,\n\t\t\t);\n\t\t}\n\t\treturn diagnostics;\n\t}\n}\n\nexport const macosHelper = new MacosHelperClient();\n"]}
|