{ "author": "Stev Peifer ", "bugs": { "url": "https://github.com/ObscuritySRL/umbriel/issues" }, "dependencies": { "@bun-win32/advapi32": "^2.0.1", "@bun-win32/combase": "^2.0.1", "@bun-win32/core": "^2.0.1", "@bun-win32/d3d11": "^2.0.1", "@bun-win32/dwmapi": "^2.0.1", "@bun-win32/gdi32": "^2.0.1", "@bun-win32/iphlpapi": "^2.0.1", "@bun-win32/kernel32": "^2.0.1", "@bun-win32/ntdll": "^2.0.1", "@bun-win32/oleacc": "^2.0.1", "@bun-win32/oleaut32": "^2.0.1", "@bun-win32/powrprof": "^2.0.1", "@bun-win32/shcore": "^2.0.1", "@bun-win32/shell32": "^2.0.1", "@bun-win32/user32": "^4.0.1", "@bun-win32/windowsaccessbridge-64": "^2.0.1" }, "description": "See and drive an entire Windows machine from Bun — not just app GUIs. Inspect kernel-to-pixels and act on any app through the UI Automation tree, synthetic input, screen capture + OCR, Spy++-style introspection, registry, and OS/filesystem reach — all via a security-gated MCP server. Pure TypeScript over bun:ffi: zero native deps, no build step.", "devDependencies": { "@types/bun": "latest" }, "exports": { ".": "./index.ts", "./mcp": "./mcp.ts" }, "bin": { "umbriel": "./mcp.ts" }, "license": "MIT", "mcpName": "io.github.ObscuritySRL/umbriel", "module": "index.ts", "name": "umbriel", "peerDependencies": { "typescript": "^5.9.3" }, "private": false, "publishConfig": { "access": "public" }, "homepage": "https://github.com/ObscuritySRL/umbriel#readme", "repository": { "type": "git", "url": "git+https://github.com/ObscuritySRL/umbriel.git" }, "type": "module", "version": "1.14.0", "main": "./index.ts", "keywords": [ "accessibility", "automation", "bun", "desktop", "e2e", "ffi", "playwright", "testing", "typescript", "uiautomation", "win32", "windows" ], "files": [ "AI.md", "README.md", "LICENSE", "index.ts", "mcp.ts", "com", "element", "input", "capture", "desktop", "agent" ], "sideEffects": false, "engines": { "bun": ">=1.1.0" }, "scripts": { "release-check": "bun ./scripts/release-check.ts", "example:agent-grounding": "bun ./example/agent-grounding.ts", "example:agent-loop": "bun ./example/agent-loop.ts", "example:attach-by-class": "bun ./example/attach-by-class.integration.test.ts", "example:attach-owner-breadcrumb": "bun ./example/attach-owner-breadcrumb.integration.test.ts", "example:attach-title-no-match": "bun ./example/attach-title-no-match.integration.test.ts", "example:audit-args-not-leaked": "bun ./example/audit-args-not-leaked.integration.test.ts", "example:automate-calculator": "bun ./example/automate-calculator.ts", "example:benchmark": "bun ./example/benchmark.ts", "example:chromium-scroll": "bun ./example/chromium-scroll.integration.test.ts", "example:click-no-raise-waitstate": "bun ./example/click-no-raise-waitstate.integration.test.ts", "example:clipboard-image": "bun ./example/clipboard-image.integration.test.ts", "example:coldnote": "bun ./example/coldnote-maxdepth-relative.integration.test.ts", "example:computer-use": "bun ./example/computer-use.ts", "example:condition-perf": "bun ./example/condition-perf.integration.test.ts", "example:copy-files-move": "bun ./example/copy-files-move.integration.test.ts", "example:copy-secret-redacted-not-journaled": "bun ./example/copy-secret-redacted-not-journaled.integration.test.ts", "example:current-user": "bun ./example/current-user.integration.test.ts", "example:cursor-free-copy": "bun ./example/cursor-free-copy.integration.test.ts", "example:dense-tree-budget": "bun ./example/dense-tree-budget.integration.test.ts", "example:desktop-mcp": "bun ./example/desktop-mcp.ts", "example:drag-interpolated-stroke": "bun ./example/drag-interpolated-stroke.integration.test.ts", "example:drag-stroke-modifiers": "bun ./example/drag-stroke-modifiers.integration.test.ts", "example:drive-in-the-dark": "bun ./example/drive-in-the-dark.ts", "example:element-capture-occlusion": "bun ./example/element-capture-occlusion.integration.test.ts", "example:element-drag-to": "bun ./example/element-drag-to.integration.test.ts", "example:env-var": "bun ./example/env-var.integration.test.ts", "example:event-log": "bun ./example/event-log.integration.test.ts", "example:expand-range": "bun ./example/expand-range.integration.test.ts", "example:explorer-in-the-dark": "bun ./example/explorer-in-the-dark.integration.test.ts", "example:file-ops": "bun ./example/file-ops.integration.test.ts", "example:filter-has-hastext": "bun ./example/filter-has-hastext.integration.test.ts", "example:filter-not": "bun ./example/filter-not.integration.test.ts", "example:find-cached": "bun ./example/find-cached.integration.test.ts", "example:find-text": "bun ./example/find-text.integration.test.ts", "example:firewall-rules-read": "bun ./example/firewall-rules-read.integration.test.ts", "example:get-displays": "bun ./example/get-displays.integration.test.ts", "example:get-variant": "bun ./example/get-variant.integration.test.ts", "example:grid-cell": "bun ./example/grid-cell.integration.test.ts", "example:harness-asserted-guard": "bun ./example/harness-asserted-guard.integration.test.ts", "example:hello-umbriel": "bun ./example/hello-umbriel.ts", "example:hover": "bun ./example/hover.integration.test.ts", "example:hresult-named": "bun ./example/hresult-named.integration.test.ts", "example:inline-state": "bun ./example/inline-state.integration.test.ts", "example:inspector": "bun ./example/inspector.ts", "example:integrity-level": "bun ./example/integrity-level.integration.test.ts", "example:jab-java-act": "bun ./example/jab-java-act.integration.test.ts", "example:jab-java-tree": "bun ./example/jab-java-tree.integration.test.ts", "example:kill-process": "bun ./example/kill-process.integration.test.ts", "example:launch-store-app": "bun ./example/launch-store-app.integration.test.ts", "example:locate-all-images": "bun ./example/locate-all-images.integration.test.ts", "example:manage-process": "bun ./example/manage-process.integration.test.ts", "example:manage-task-create-delete": "bun ./example/manage-task-create-delete.integration.test.ts", "example:mcp-pattern-no-raise": "bun ./example/mcp-pattern-no-raise.integration.test.ts", "example:mcp-snapshot-economy": "bun ./example/mcp-snapshot-economy.integration.test.ts", "example:menu-drive": "bun ./example/menu-drive.integration.test.ts", "example:monitor-dpi": "bun ./example/monitor-dpi.integration.test.ts", "example:multi-select": "bun ./example/multi-select.integration.test.ts", "example:non-latin-input": "bun ./example/non-latin-input.integration.test.ts", "example:ocr-text": "bun ./example/ocr-text.integration.test.ts", "example:ocr-window": "bun ./example/ocr-window.integration.test.ts", "example:ocr-word-centres": "bun ./example/ocr-word-centres.integration.test.ts", "example:pattern-no-raise": "bun ./example/pattern-no-raise.integration.test.ts", "example:perf-gate": "bun ./example/perf-gate.integration.test.ts", "example:popup-windows": "bun ./example/popup-windows.integration.test.ts", "example:posted-click-dead-window-honest": "bun ./example/posted-click-dead-window-honest.integration.test.ts", "example:press-key-secret-not-journaled": "bun ./example/press-key-secret-not-journaled.integration.test.ts", "example:process-info": "bun ./example/process-info.integration.test.ts", "example:process-info-image-path": "bun ./example/process-info-image-path.integration.test.ts", "example:qt-widget-tree": "bun ./example/qt-widget-tree.integration.test.ts", "example:read-control-text-fenced-redacted": "bun ./example/read-control-text-fenced-redacted.integration.test.ts", "example:read-table": "bun ./example/read-table.integration.test.ts", "example:read-table-paging": "bun ./example/read-table-paging.integration.test.ts", "example:registry": "bun ./example/registry.integration.test.ts", "example:registry-data-not-journaled": "bun ./example/registry-data-not-journaled.integration.test.ts", "example:registry-large-value": "bun ./example/registry-large-value.integration.test.ts", "example:registry-set": "bun ./example/registry-set.integration.test.ts", "example:reveal-offscreen": "bun ./example/reveal-offscreen.integration.test.ts", "example:reveal-winui-virtualized": "bun ./example/reveal-winui-virtualized.integration.test.ts", "example:safety-floor": "bun ./example/safety-floor.integration.test.ts", "example:scheduled-tasks": "bun ./example/scheduled-tasks.integration.test.ts", "example:service-config-read": "bun ./example/service-config-read.integration.test.ts", "example:select-no-raise": "bun ./example/select-no-raise.integration.test.ts", "example:select-option": "bun ./example/select-option.integration.test.ts", "example:selftest": "bun ./example/umbriel.selftest.ts", "example:services": "bun ./example/services.integration.test.ts", "example:set-of-marks": "bun ./example/set-of-marks.ts", "example:snapshot-economy": "bun ./example/snapshot-economy.integration.test.ts", "example:snapshot-fallback": "bun ./example/snapshot-fallback.integration.test.ts", "example:snapshot-leak": "bun ./example/snapshot-leak.integration.test.ts", "example:snapshot-scope": "bun ./example/snapshot-scope.integration.test.ts", "example:stat-path": "bun ./example/stat-path.integration.test.ts", "example:system-resources": "bun ./example/system-resources.integration.test.ts", "example:system-status": "bun ./example/system-status.integration.test.ts", "example:terminal-scrollback": "bun ./example/terminal-scrollback.integration.test.ts", "example:text-content": "bun ./example/text-content.integration.test.ts", "example:toggle-set-state": "bun ./example/toggle-set-state.integration.test.ts", "example:trace-redaction": "bun ./example/trace-redaction.integration.test.ts", "example:transform-pattern": "bun ./example/transform-pattern.integration.test.ts", "example:type-cursorfree": "bun ./example/type-cursorfree.integration.test.ts", "example:umbriel-report": "bun ./example/umbriel-report.ts", "example:uwp-content": "bun ./example/uwp-content.integration.test.ts", "example:vcall-safety": "bun ./example/vcall-safety.integration.test.ts", "example:virtual-desktop": "bun ./example/virtual-desktop.integration.test.ts", "example:visible-text": "bun ./example/visible-text.integration.test.ts", "example:wait-for-process-gone": "bun ./example/wait-for-process-gone.integration.test.ts", "example:wait-for-ref": "bun ./example/wait-for-ref.integration.test.ts", "example:wait-for-ref-liveness": "bun ./example/wait-for-ref-liveness.integration.test.ts", "example:wait-for-state": "bun ./example/wait-for-state.integration.test.ts", "example:web-content": "bun ./example/web-content.integration.test.ts", "example:wgc-capture-no-leak": "bun ./example/wgc-capture-no-leak.integration.test.ts", "example:wgc-occluded": "bun ./example/wgc-occluded.integration.test.ts", "example:window-events": "bun ./example/window-events.integration.test.ts", "example:window-topmost-opacity": "bun ./example/window-topmost-opacity.integration.test.ts", "example:window-spy": "bun ./example/window-spy.ts", "example:wpf-hwndwrapper-input": "bun ./example/wpf-hwndwrapper-input.integration.test.ts" } }