@hasna/computer 0.1.0 → 0.1.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/computer",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Open-source computer use for AI agents — control your Mac with Anthropic or OpenAI. CLI + MCP server + REST API + Dashboard.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,6 +20,7 @@
20
20
  "dist",
21
21
  "helpers/scroll",
22
22
  "helpers/scroll.swift",
23
+ "src/db/migrations",
23
24
  "dashboard/dist",
24
25
  "LICENSE",
25
26
  "README.md"
@@ -0,0 +1,57 @@
1
+ -- PostgreSQL migration: 001_initial
2
+ -- Creates sessions and action_logs tables for @hasna/computer
3
+
4
+ CREATE TABLE IF NOT EXISTS sessions (
5
+ id TEXT PRIMARY KEY,
6
+ task TEXT NOT NULL,
7
+ provider TEXT NOT NULL,
8
+ model TEXT NOT NULL,
9
+ status TEXT NOT NULL DEFAULT 'running',
10
+ steps INTEGER NOT NULL DEFAULT 0,
11
+ total_tokens_in INTEGER NOT NULL DEFAULT 0,
12
+ total_tokens_out INTEGER NOT NULL DEFAULT 0,
13
+ total_duration_ms INTEGER NOT NULL DEFAULT 0,
14
+ error TEXT,
15
+ created_at TEXT NOT NULL,
16
+ completed_at TEXT
17
+ );
18
+
19
+ CREATE TABLE IF NOT EXISTS action_logs (
20
+ id SERIAL PRIMARY KEY,
21
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
22
+ step INTEGER NOT NULL,
23
+ action_type TEXT NOT NULL,
24
+ action_data JSONB NOT NULL,
25
+ reasoning TEXT,
26
+ screenshot_path TEXT,
27
+ success BOOLEAN NOT NULL DEFAULT TRUE,
28
+ error TEXT,
29
+ duration_ms INTEGER NOT NULL DEFAULT 0,
30
+ tokens_in INTEGER,
31
+ tokens_out INTEGER,
32
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS idx_action_logs_session ON action_logs(session_id);
36
+ CREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status);
37
+ CREATE INDEX IF NOT EXISTS idx_sessions_created ON sessions(created_at);
38
+
39
+ -- PostgreSQL full-text search (using tsvector instead of FTS5)
40
+ ALTER TABLE sessions ADD COLUMN IF NOT EXISTS task_tsv TSVECTOR
41
+ GENERATED ALWAYS AS (to_tsvector('english', task)) STORED;
42
+ CREATE INDEX IF NOT EXISTS idx_sessions_fts ON sessions USING GIN(task_tsv);
43
+
44
+ ALTER TABLE action_logs ADD COLUMN IF NOT EXISTS reasoning_tsv TSVECTOR
45
+ GENERATED ALWAYS AS (to_tsvector('english', COALESCE(reasoning, ''))) STORED;
46
+ CREATE INDEX IF NOT EXISTS idx_action_logs_fts ON action_logs USING GIN(reasoning_tsv);
47
+
48
+ -- Feedback table (for @hasna/cloud feedback system)
49
+ CREATE TABLE IF NOT EXISTS feedback (
50
+ id TEXT PRIMARY KEY,
51
+ service TEXT NOT NULL DEFAULT 'computer',
52
+ version TEXT,
53
+ message TEXT NOT NULL,
54
+ email TEXT,
55
+ machine_id TEXT,
56
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
57
+ );