@hasna/computer 0.1.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/LICENSE +189 -0
- package/README.md +151 -0
- package/dist/agent/loop.d.ts +7 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/safety.d.ts +15 -0
- package/dist/agent/safety.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +12221 -0
- package/dist/db/index.d.ts +46 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/drivers/mac/index.d.ts +14 -0
- package/dist/drivers/mac/index.d.ts.map +1 -0
- package/dist/drivers/mac/input.d.ts +6 -0
- package/dist/drivers/mac/input.d.ts.map +1 -0
- package/dist/drivers/mac/screenshot.d.ts +15 -0
- package/dist/drivers/mac/screenshot.d.ts.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10012 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/diff.d.ts +22 -0
- package/dist/lib/diff.d.ts.map +1 -0
- package/dist/lib/pricing.d.ts +18 -0
- package/dist/lib/pricing.d.ts.map +1 -0
- package/dist/lib/scale.d.ts +26 -0
- package/dist/lib/scale.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +14063 -0
- package/dist/providers/anthropic.d.ts +25 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/openai.d.ts +29 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +9921 -0
- package/dist/types/index.d.ts +175 -0
- package/dist/types/index.d.ts.map +1 -0
- package/helpers/scroll +0 -0
- package/helpers/scroll.swift +35 -0
- package/package.json +79 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Database } from "bun:sqlite";
|
|
2
|
+
import type { Session, ActionLog, DriverAction, SessionStatus } from "../types/index.js";
|
|
3
|
+
/** Get or create the SQLite database */
|
|
4
|
+
export declare function getDb(): Database;
|
|
5
|
+
/** Create a new session */
|
|
6
|
+
export declare function createSession(session: Session): Promise<void>;
|
|
7
|
+
/** Update a session */
|
|
8
|
+
export declare function updateSession(session: Session): Promise<void>;
|
|
9
|
+
/** Log an action within a session */
|
|
10
|
+
export declare function logAction(params: {
|
|
11
|
+
session_id: string;
|
|
12
|
+
step: number;
|
|
13
|
+
action: DriverAction;
|
|
14
|
+
reasoning: string;
|
|
15
|
+
screenshot_path?: string;
|
|
16
|
+
success: boolean;
|
|
17
|
+
error?: string;
|
|
18
|
+
duration_ms: number;
|
|
19
|
+
tokens_in?: number;
|
|
20
|
+
tokens_out?: number;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/** Get a session by ID */
|
|
23
|
+
export declare function getSession(id: string): Session | null;
|
|
24
|
+
/** List sessions */
|
|
25
|
+
export declare function listSessions(opts?: {
|
|
26
|
+
status?: SessionStatus;
|
|
27
|
+
limit?: number;
|
|
28
|
+
offset?: number;
|
|
29
|
+
}): Session[];
|
|
30
|
+
/** Search sessions by task text (FTS5) */
|
|
31
|
+
export declare function searchSessions(query: string, limit?: number): Session[];
|
|
32
|
+
/** Search action logs by reasoning text (FTS5) */
|
|
33
|
+
export declare function searchActionLogs(query: string, limit?: number): ActionLog[];
|
|
34
|
+
/** Get action logs for a session */
|
|
35
|
+
export declare function getActionLogs(sessionId: string): ActionLog[];
|
|
36
|
+
/** Delete a session and its logs */
|
|
37
|
+
export declare function deleteSession(id: string): boolean;
|
|
38
|
+
/** Get session stats */
|
|
39
|
+
export declare function getStats(): {
|
|
40
|
+
total_sessions: number;
|
|
41
|
+
completed: number;
|
|
42
|
+
failed: number;
|
|
43
|
+
total_steps: number;
|
|
44
|
+
total_tokens: number;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOzF,wCAAwC;AACxC,wBAAgB,KAAK,IAAI,QAAQ,CAuEhC;AAED,2BAA2B;AAC3B,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnE;AAED,uBAAuB;AACvB,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBnE;AAED,qCAAqC;AACrC,wBAAsB,SAAS,CAAC,MAAM,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBhB;AAED,0BAA0B;AAC1B,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKrD;AAED,oBAAoB;AACpB,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE;IAClC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,EAAE,CAsBZ;AAED,0CAA0C;AAC1C,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,EAAE,CAU3E;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,SAAS,EAAE,CAuBb;AAED,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAoB5D;AAED,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAwB;AACxB,wBAAgB,QAAQ,IAAI;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CAmBA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComputerDriver, DriverAction, ActionResult, ScreenSize, Screenshot } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* macOS computer driver — uses screencapture + cliclick for native screen control.
|
|
4
|
+
* Requires: macOS, cliclick (brew install cliclick), Accessibility permissions.
|
|
5
|
+
*/
|
|
6
|
+
export declare class MacDriver implements ComputerDriver {
|
|
7
|
+
getScreenSize(): Promise<ScreenSize>;
|
|
8
|
+
screenshot(): Promise<Screenshot>;
|
|
9
|
+
execute(action: DriverAction): Promise<ActionResult>;
|
|
10
|
+
dispose(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
/** Create a macOS driver */
|
|
13
|
+
export declare function createMacDriver(): ComputerDriver;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drivers/mac/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAI/G;;;GAGG;AACH,qBAAa,SAAU,YAAW,cAAc;IACxC,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAIpC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;IAIjC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAIpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED,4BAA4B;AAC5B,wBAAgB,eAAe,IAAI,cAAc,CAEhD"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DriverAction, ActionResult } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Execute a mouse/keyboard action using cliclick + Swift helpers on macOS.
|
|
4
|
+
*/
|
|
5
|
+
export declare function executeAction(action: DriverAction): Promise<ActionResult>;
|
|
6
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../../src/drivers/mac/input.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AAGnF;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAuH/E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Screenshot, ScreenSize } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Capture a screenshot using macOS screencapture.
|
|
4
|
+
* Returns base64 PNG data and screen dimensions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function captureScreenshot(): Promise<Screenshot>;
|
|
7
|
+
/**
|
|
8
|
+
* Get the main display screen size using system_profiler.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getScreenSize(): Promise<ScreenSize>;
|
|
11
|
+
/**
|
|
12
|
+
* Save a screenshot to a file on disk.
|
|
13
|
+
*/
|
|
14
|
+
export declare function saveScreenshotToFile(screenshot: Screenshot, dir: string, filename: string): Promise<string>;
|
|
15
|
+
//# sourceMappingURL=screenshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../src/drivers/mac/screenshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC,CAyB7D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CA8BzD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAKjB"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hasna/computer — Open-source computer use for AI agents
|
|
3
|
+
*
|
|
4
|
+
* Control your Mac with Anthropic or OpenAI.
|
|
5
|
+
* CLI + MCP server + REST API + SDK.
|
|
6
|
+
*/
|
|
7
|
+
export type { Provider, MouseButton, Point, ScreenSize, Screenshot, DriverAction, ActionResult, ComputerDriver, ModelResponse, ComputerProvider, SessionStatus, ActionLog, Session, RunOptions, SafetyConfig, } from "./types/index.js";
|
|
8
|
+
export { runTask } from "./agent/loop.js";
|
|
9
|
+
export { createMacDriver, MacDriver } from "./drivers/mac/index.js";
|
|
10
|
+
export { captureScreenshot, getScreenSize, saveScreenshotToFile } from "./drivers/mac/screenshot.js";
|
|
11
|
+
export { executeAction } from "./drivers/mac/input.js";
|
|
12
|
+
export { createProvider, createAnthropicProvider, createOpenAIProvider } from "./providers/index.js";
|
|
13
|
+
export { checkAction, resetRateLimiter } from "./agent/safety.js";
|
|
14
|
+
export type { SafetyCheckResult } from "./agent/safety.js";
|
|
15
|
+
export { loadConfig, saveConfig, getConfigValue, setConfigValue, getConfigPath, DEFAULT_CONFIG } from "./lib/config.js";
|
|
16
|
+
export type { ComputerConfig } from "./lib/config.js";
|
|
17
|
+
export { calculateCost, formatCost, stepCost, listPricing } from "./lib/pricing.js";
|
|
18
|
+
export { scaleScreenshot, getScaledSize, RECOMMENDED_WIDTHS } from "./lib/scale.js";
|
|
19
|
+
export { screenshotsMatch, computeScreenHash, compareHashes } from "./lib/diff.js";
|
|
20
|
+
export { getDb, createSession, updateSession, logAction, getSession, listSessions, getActionLogs, deleteSession, getStats, searchSessions, searchActionLogs, } from "./db/index.js";
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,QAAQ,EACR,WAAW,EACX,KAAK,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,OAAO,EACP,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGrG,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACxH,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnF,OAAO,EACL,KAAK,EACL,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|