@creativeintelligence/abbie 0.1.5 → 0.1.7

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.
Files changed (142) hide show
  1. package/bin/dev.js +1 -49
  2. package/bin/run.js +42 -49
  3. package/dist/cli/commands/login.js +26 -0
  4. package/dist/cli/commands/project/add.d.ts +0 -1
  5. package/dist/cli/commands/project/add.js +16 -52
  6. package/dist/cli/commands/project/list.js +13 -93
  7. package/dist/cli/commands/project/remove.d.ts +0 -2
  8. package/dist/cli/commands/project/remove.js +11 -28
  9. package/dist/cli/commands/session/list.js +3 -12
  10. package/dist/cli/commands/session/mark-done.js +1 -7
  11. package/dist/cli/commands/session/start.d.ts +0 -1
  12. package/dist/cli/commands/session/start.js +5 -7
  13. package/dist/lib/active-sessions.d.ts +0 -12
  14. package/dist/lib/active-sessions.js +6 -175
  15. package/dist/lib/project-path.d.ts +6 -0
  16. package/dist/lib/project-path.js +21 -0
  17. package/dist/lib.d.ts +1 -2
  18. package/dist/lib.js +2 -4
  19. package/oclif.manifest.json +2569 -6368
  20. package/package.json +1 -1
  21. package/dist/cli/commands/backlog/add.d.ts +0 -22
  22. package/dist/cli/commands/backlog/add.js +0 -65
  23. package/dist/cli/commands/backlog/claim.d.ts +0 -19
  24. package/dist/cli/commands/backlog/claim.js +0 -45
  25. package/dist/cli/commands/backlog/complete.d.ts +0 -18
  26. package/dist/cli/commands/backlog/complete.js +0 -42
  27. package/dist/cli/commands/backlog/list.d.ts +0 -20
  28. package/dist/cli/commands/backlog/list.js +0 -91
  29. package/dist/cli/commands/backlog/pick.d.ts +0 -18
  30. package/dist/cli/commands/backlog/pick.js +0 -42
  31. package/dist/cli/commands/backlog/sync.d.ts +0 -24
  32. package/dist/cli/commands/backlog/sync.js +0 -109
  33. package/dist/cli/commands/daemon.d.ts +0 -56
  34. package/dist/cli/commands/daemon.js +0 -1465
  35. package/dist/cli/commands/docs/lint.d.ts +0 -18
  36. package/dist/cli/commands/docs/lint.js +0 -82
  37. package/dist/cli/commands/docs/sync.d.ts +0 -19
  38. package/dist/cli/commands/docs/sync.js +0 -76
  39. package/dist/cli/commands/gc.d.ts +0 -29
  40. package/dist/cli/commands/gc.js +0 -211
  41. package/dist/cli/commands/index.d.ts +0 -36
  42. package/dist/cli/commands/index.js +0 -228
  43. package/dist/cli/commands/panes/broker.d.ts +0 -17
  44. package/dist/cli/commands/panes/broker.js +0 -57
  45. package/dist/cli/commands/panes/pipe-sink.d.ts +0 -17
  46. package/dist/cli/commands/panes/pipe-sink.js +0 -90
  47. package/dist/cli/commands/panes/snapshot.d.ts +0 -20
  48. package/dist/cli/commands/panes/snapshot.js +0 -125
  49. package/dist/cli/commands/preview/init.d.ts +0 -25
  50. package/dist/cli/commands/preview/init.js +0 -159
  51. package/dist/cli/commands/preview/sync.d.ts +0 -23
  52. package/dist/cli/commands/preview/sync.js +0 -144
  53. package/dist/cli/commands/preview/watch.d.ts +0 -24
  54. package/dist/cli/commands/preview/watch.js +0 -153
  55. package/dist/cli/commands/resource/acquire.d.ts +0 -21
  56. package/dist/cli/commands/resource/acquire.js +0 -90
  57. package/dist/cli/commands/resource/list.d.ts +0 -15
  58. package/dist/cli/commands/resource/list.js +0 -61
  59. package/dist/cli/commands/resource/release.d.ts +0 -18
  60. package/dist/cli/commands/resource/release.js +0 -50
  61. package/dist/cli/commands/resource/wait.d.ts +0 -21
  62. package/dist/cli/commands/resource/wait.js +0 -73
  63. package/dist/cli/commands/session/view.d.ts +0 -24
  64. package/dist/cli/commands/session/view.js +0 -145
  65. package/dist/cli/commands/start.d.ts +0 -37
  66. package/dist/cli/commands/start.js +0 -234
  67. package/dist/cli/commands/triage/claim.d.ts +0 -23
  68. package/dist/cli/commands/triage/claim.js +0 -186
  69. package/dist/cli/commands/triage/list.d.ts +0 -22
  70. package/dist/cli/commands/triage/list.js +0 -112
  71. package/dist/cli/commands/triage/next.d.ts +0 -18
  72. package/dist/cli/commands/triage/next.js +0 -63
  73. package/dist/cli/commands/triage/pull.d.ts +0 -19
  74. package/dist/cli/commands/triage/pull.js +0 -82
  75. package/dist/cli/commands/triage/stats.d.ts +0 -16
  76. package/dist/cli/commands/triage/stats.js +0 -69
  77. package/dist/cli/commands/tunnel/list.d.ts +0 -16
  78. package/dist/cli/commands/tunnel/list.js +0 -98
  79. package/dist/cli/commands/tunnel/start.d.ts +0 -24
  80. package/dist/cli/commands/tunnel/start.js +0 -107
  81. package/dist/cli/commands/tunnel/stop.d.ts +0 -20
  82. package/dist/cli/commands/tunnel/stop.js +0 -90
  83. package/dist/cli/commands/tunnel/url.d.ts +0 -21
  84. package/dist/cli/commands/tunnel/url.js +0 -70
  85. package/dist/cli/commands/windows/context.d.ts +0 -18
  86. package/dist/cli/commands/windows/context.js +0 -326
  87. package/dist/cli/commands/windows/focus.d.ts +0 -17
  88. package/dist/cli/commands/windows/focus.js +0 -103
  89. package/dist/cli/commands/windows/list.d.ts +0 -21
  90. package/dist/cli/commands/windows/list.js +0 -172
  91. package/dist/cli/commands/windows/map.d.ts +0 -17
  92. package/dist/cli/commands/windows/map.js +0 -168
  93. package/dist/cli/commands/windows/read.d.ts +0 -21
  94. package/dist/cli/commands/windows/read.js +0 -241
  95. package/dist/cli/commands/windows/search.d.ts +0 -24
  96. package/dist/cli/commands/windows/search.js +0 -171
  97. package/dist/cli/commands/windows/show.d.ts +0 -19
  98. package/dist/cli/commands/windows/show.js +0 -165
  99. package/dist/cli/commands/windows/watch.d.ts +0 -19
  100. package/dist/cli/commands/windows/watch.js +0 -241
  101. package/dist/lib/managed-session.d.ts +0 -27
  102. package/dist/lib/managed-session.js +0 -105
  103. package/dist/lib/panes/broker.d.ts +0 -130
  104. package/dist/lib/panes/broker.js +0 -97
  105. package/dist/lib/panes/index.d.ts +0 -2
  106. package/dist/lib/panes/index.js +0 -1
  107. package/dist/lib/panes/server.d.ts +0 -17
  108. package/dist/lib/panes/server.js +0 -308
  109. package/dist/lib/preview/manager.d.ts +0 -77
  110. package/dist/lib/preview/manager.js +0 -369
  111. package/dist/lib/preview/schema.d.ts +0 -2
  112. package/dist/lib/preview/schema.js +0 -32
  113. package/dist/lib/preview/sprite.d.ts +0 -85
  114. package/dist/lib/preview/sprite.js +0 -321
  115. package/dist/lib/preview/watcher.d.ts +0 -63
  116. package/dist/lib/preview/watcher.js +0 -185
  117. package/dist/lib/project-identity.d.ts +0 -16
  118. package/dist/lib/project-identity.js +0 -75
  119. package/dist/lib/tmux/bridge.d.ts +0 -133
  120. package/dist/lib/tmux/bridge.js +0 -315
  121. package/dist/lib/tmux/context.d.ts +0 -82
  122. package/dist/lib/tmux/context.js +0 -239
  123. package/dist/lib/tmux/index.d.ts +0 -8
  124. package/dist/lib/tmux/index.js +0 -11
  125. package/dist/lib/tmux/map.d.ts +0 -57
  126. package/dist/lib/tmux/map.js +0 -198
  127. package/dist/lib/tmux/panes.d.ts +0 -27
  128. package/dist/lib/tmux/panes.js +0 -151
  129. package/dist/lib/tmux/redaction.d.ts +0 -57
  130. package/dist/lib/tmux/redaction.js +0 -152
  131. package/dist/lib/web/analytics.d.ts +0 -63
  132. package/dist/lib/web/analytics.js +0 -168
  133. package/dist/lib/web/server.d.ts +0 -26
  134. package/dist/lib/web/server.js +0 -697
  135. package/dist/lib/web/tmux-bridge.d.ts +0 -7
  136. package/dist/lib/web/tmux-bridge.js +0 -7
  137. package/dist/lib/windows/index.d.ts +0 -3
  138. package/dist/lib/windows/index.js +0 -2
  139. package/dist/lib/windows/inventory.d.ts +0 -21
  140. package/dist/lib/windows/inventory.js +0 -263
  141. package/dist/lib/windows/types.d.ts +0 -46
  142. package/dist/lib/windows/types.js +0 -1
@@ -1,369 +0,0 @@
1
- import { Database } from "bun:sqlite";
2
- import { existsSync, mkdirSync } from "node:fs";
3
- import { homedir } from "node:os";
4
- import { join } from "node:path";
5
- import { PREVIEW_SCHEMA } from "./schema.js";
6
- function resolveHomeDir() {
7
- return process.env.HOME || homedir();
8
- }
9
- function getDataDir(homeDir = resolveHomeDir()) {
10
- return join(homeDir, ".abbie", "data");
11
- }
12
- function ensureDir(path) {
13
- if (!existsSync(path)) {
14
- mkdirSync(path, { recursive: true });
15
- }
16
- }
17
- export class PreviewManager {
18
- dataDir;
19
- dbPath;
20
- constructor(options) {
21
- this.dataDir = options?.dataDir ?? getDataDir();
22
- this.dbPath = join(this.dataDir, "previews.db");
23
- ensureDir(this.dataDir);
24
- }
25
- openDb() {
26
- ensureDir(this.dataDir);
27
- const db = new Database(this.dbPath);
28
- // Concurrency-safe settings for multi-process writes.
29
- db.exec("PRAGMA journal_mode = WAL;");
30
- db.exec("PRAGMA synchronous = NORMAL;");
31
- db.exec("PRAGMA busy_timeout = 5000;");
32
- this.ensureSchema(db);
33
- return db;
34
- }
35
- ensureSchema(db) {
36
- const shouldClose = !db;
37
- const database = db ?? this.openDb();
38
- try {
39
- database.exec(PREVIEW_SCHEMA);
40
- }
41
- finally {
42
- if (shouldClose) {
43
- database.close();
44
- }
45
- }
46
- }
47
- rowToSprite(row) {
48
- return {
49
- id: Number(row.id),
50
- project_name: String(row.project_name),
51
- project_path: String(row.project_path),
52
- sprite_name: String(row.sprite_name),
53
- sprite_url: row.sprite_url === null || row.sprite_url === undefined ? null : String(row.sprite_url),
54
- doppler_project: row.doppler_project === null || row.doppler_project === undefined
55
- ? null
56
- : String(row.doppler_project),
57
- dev_command: String(row.dev_command ?? "bun run dev"),
58
- port: Number(row.port ?? 8080),
59
- created_at: String(row.created_at ?? ""),
60
- updated_at: String(row.updated_at ?? ""),
61
- };
62
- }
63
- rowToDeployment(row) {
64
- return {
65
- id: Number(row.id),
66
- sprite_id: Number(row.sprite_id),
67
- status: String(row.status ?? "pending"),
68
- preview_url: row.preview_url === null || row.preview_url === undefined ? null : String(row.preview_url),
69
- screenshot_path: row.screenshot_path === null || row.screenshot_path === undefined
70
- ? null
71
- : String(row.screenshot_path),
72
- started_at: String(row.started_at ?? ""),
73
- stopped_at: row.stopped_at === null || row.stopped_at === undefined ? null : String(row.stopped_at),
74
- error: row.error === null || row.error === undefined ? null : String(row.error),
75
- sync_duration_ms: row.sync_duration_ms === null || row.sync_duration_ms === undefined
76
- ? null
77
- : Number(row.sync_duration_ms),
78
- install_duration_ms: row.install_duration_ms === null || row.install_duration_ms === undefined
79
- ? null
80
- : Number(row.install_duration_ms),
81
- start_duration_ms: row.start_duration_ms === null || row.start_duration_ms === undefined
82
- ? null
83
- : Number(row.start_duration_ms),
84
- };
85
- }
86
- registerSprite(projectName, projectPath, spriteName, options) {
87
- const db = this.openDb();
88
- try {
89
- db.exec("BEGIN IMMEDIATE;");
90
- try {
91
- // Upsert: insert or update on conflict
92
- db.query(`INSERT INTO sprites (project_name, project_path, sprite_name, sprite_url, doppler_project, dev_command, port)
93
- VALUES (?, ?, ?, ?, ?, ?, ?)
94
- ON CONFLICT(project_name) DO UPDATE SET
95
- project_path = excluded.project_path,
96
- sprite_name = excluded.sprite_name,
97
- sprite_url = excluded.sprite_url,
98
- doppler_project = excluded.doppler_project,
99
- dev_command = excluded.dev_command,
100
- port = excluded.port,
101
- updated_at = datetime('now')`).run(projectName, projectPath, spriteName, options?.spriteUrl ?? null, options?.dopplerProject ?? null, options?.devCommand ?? "bun run dev", options?.port ?? 8080);
102
- db.exec("COMMIT;");
103
- }
104
- catch (err) {
105
- db.exec("ROLLBACK;");
106
- throw err;
107
- }
108
- const row = db.query("SELECT * FROM sprites WHERE project_name = ?").get(projectName);
109
- if (!row) {
110
- throw new Error(`Failed to register sprite for ${projectName}`);
111
- }
112
- return this.rowToSprite(row);
113
- }
114
- finally {
115
- db.close();
116
- }
117
- }
118
- getSprite(projectName) {
119
- const db = this.openDb();
120
- try {
121
- const row = db.query("SELECT * FROM sprites WHERE project_name = ?").get(projectName);
122
- if (!row)
123
- return null;
124
- return this.rowToSprite(row);
125
- }
126
- finally {
127
- db.close();
128
- }
129
- }
130
- getSpriteById(id) {
131
- const db = this.openDb();
132
- try {
133
- const row = db.query("SELECT * FROM sprites WHERE id = ?").get(id);
134
- if (!row)
135
- return null;
136
- return this.rowToSprite(row);
137
- }
138
- finally {
139
- db.close();
140
- }
141
- }
142
- listSprites() {
143
- const db = this.openDb();
144
- try {
145
- const rows = db.query("SELECT * FROM sprites ORDER BY project_name ASC").all();
146
- return rows.map((r) => this.rowToSprite(r));
147
- }
148
- finally {
149
- db.close();
150
- }
151
- }
152
- updateSprite(projectName, updates) {
153
- const db = this.openDb();
154
- try {
155
- const setClauses = [];
156
- const params = [];
157
- if (updates.devCommand !== undefined) {
158
- setClauses.push("dev_command = ?");
159
- params.push(updates.devCommand);
160
- }
161
- if (updates.dopplerProject !== undefined) {
162
- setClauses.push("doppler_project = ?");
163
- params.push(updates.dopplerProject);
164
- }
165
- if (updates.port !== undefined) {
166
- setClauses.push("port = ?");
167
- params.push(updates.port);
168
- }
169
- if (setClauses.length === 0)
170
- return this.getSprite(projectName);
171
- setClauses.push("updated_at = datetime('now')");
172
- params.push(projectName);
173
- db.query(`UPDATE sprites SET ${setClauses.join(", ")} WHERE project_name = ?`).run(...params);
174
- const row = db.query("SELECT * FROM sprites WHERE project_name = ?").get(projectName);
175
- return row ? this.rowToSprite(row) : null;
176
- }
177
- finally {
178
- db.close();
179
- }
180
- }
181
- deleteSprite(projectName) {
182
- const db = this.openDb();
183
- try {
184
- db.exec("BEGIN IMMEDIATE;");
185
- try {
186
- // Get sprite ID first
187
- const sprite = db.query("SELECT id FROM sprites WHERE project_name = ?").get(projectName);
188
- if (!sprite) {
189
- db.exec("ROLLBACK;");
190
- return false;
191
- }
192
- // Delete associated deployments first
193
- db.query("DELETE FROM deployments WHERE sprite_id = ?").run(Number(sprite.id));
194
- // Delete the sprite
195
- db.query("DELETE FROM sprites WHERE project_name = ?").run(projectName);
196
- db.exec("COMMIT;");
197
- return true;
198
- }
199
- catch (err) {
200
- db.exec("ROLLBACK;");
201
- throw err;
202
- }
203
- }
204
- finally {
205
- db.close();
206
- }
207
- }
208
- recordDeployment(spriteId, status, options) {
209
- const db = this.openDb();
210
- try {
211
- db.exec("BEGIN IMMEDIATE;");
212
- try {
213
- db.query(`INSERT INTO deployments (sprite_id, status, preview_url, screenshot_path, error, sync_duration_ms, install_duration_ms, start_duration_ms)
214
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(spriteId, status, options?.previewUrl ?? null, options?.screenshotPath ?? null, options?.error ?? null, options?.syncDurationMs ?? null, options?.installDurationMs ?? null, options?.startDurationMs ?? null);
215
- db.exec("COMMIT;");
216
- }
217
- catch (err) {
218
- db.exec("ROLLBACK;");
219
- throw err;
220
- }
221
- // Get the last inserted deployment
222
- const row = db
223
- .query("SELECT * FROM deployments WHERE sprite_id = ? ORDER BY id DESC LIMIT 1")
224
- .get(spriteId);
225
- if (!row) {
226
- throw new Error(`Failed to record deployment for sprite ${spriteId}`);
227
- }
228
- return this.rowToDeployment(row);
229
- }
230
- finally {
231
- db.close();
232
- }
233
- }
234
- updateDeployment(id, updates) {
235
- const db = this.openDb();
236
- try {
237
- db.exec("BEGIN IMMEDIATE;");
238
- try {
239
- const existing = db.query("SELECT * FROM deployments WHERE id = ?").get(id);
240
- if (!existing) {
241
- db.exec("ROLLBACK;");
242
- return null;
243
- }
244
- const setClauses = [];
245
- const params = [];
246
- if (updates.status !== undefined) {
247
- setClauses.push("status = ?");
248
- params.push(updates.status);
249
- }
250
- if (updates.previewUrl !== undefined) {
251
- setClauses.push("preview_url = ?");
252
- params.push(updates.previewUrl);
253
- }
254
- if (updates.screenshotPath !== undefined) {
255
- setClauses.push("screenshot_path = ?");
256
- params.push(updates.screenshotPath);
257
- }
258
- if (updates.stoppedAt !== undefined) {
259
- setClauses.push("stopped_at = ?");
260
- params.push(updates.stoppedAt);
261
- }
262
- if (updates.error !== undefined) {
263
- setClauses.push("error = ?");
264
- params.push(updates.error);
265
- }
266
- if (updates.syncDurationMs !== undefined) {
267
- setClauses.push("sync_duration_ms = ?");
268
- params.push(updates.syncDurationMs);
269
- }
270
- if (updates.installDurationMs !== undefined) {
271
- setClauses.push("install_duration_ms = ?");
272
- params.push(updates.installDurationMs);
273
- }
274
- if (updates.startDurationMs !== undefined) {
275
- setClauses.push("start_duration_ms = ?");
276
- params.push(updates.startDurationMs);
277
- }
278
- if (setClauses.length > 0) {
279
- params.push(id);
280
- db.query(`UPDATE deployments SET ${setClauses.join(", ")} WHERE id = ?`).run(...params);
281
- }
282
- db.exec("COMMIT;");
283
- }
284
- catch (err) {
285
- db.exec("ROLLBACK;");
286
- throw err;
287
- }
288
- const row = db.query("SELECT * FROM deployments WHERE id = ?").get(id);
289
- return row ? this.rowToDeployment(row) : null;
290
- }
291
- finally {
292
- db.close();
293
- }
294
- }
295
- getDeployment(id) {
296
- const db = this.openDb();
297
- try {
298
- const row = db.query("SELECT * FROM deployments WHERE id = ?").get(id);
299
- if (!row)
300
- return null;
301
- return this.rowToDeployment(row);
302
- }
303
- finally {
304
- db.close();
305
- }
306
- }
307
- getLatestDeployment(spriteId) {
308
- const db = this.openDb();
309
- try {
310
- const row = db
311
- .query("SELECT * FROM deployments WHERE sprite_id = ? ORDER BY started_at DESC LIMIT 1")
312
- .get(spriteId);
313
- if (!row)
314
- return null;
315
- return this.rowToDeployment(row);
316
- }
317
- finally {
318
- db.close();
319
- }
320
- }
321
- listDeployments(spriteId, limit) {
322
- const db = this.openDb();
323
- try {
324
- let sql = "SELECT * FROM deployments WHERE sprite_id = ? ORDER BY started_at DESC";
325
- const params = [spriteId];
326
- if (limit && limit > 0) {
327
- sql += " LIMIT ?";
328
- params.push(limit);
329
- }
330
- const rows = db.query(sql).all(...params);
331
- return rows.map((r) => this.rowToDeployment(r));
332
- }
333
- finally {
334
- db.close();
335
- }
336
- }
337
- getActiveDeployments() {
338
- const db = this.openDb();
339
- try {
340
- const rows = db
341
- .query(`SELECT d.*, s.project_name, s.project_path, s.sprite_name, s.sprite_url, s.doppler_project, s.dev_command, s.port, s.created_at as sprite_created_at, s.updated_at as sprite_updated_at
342
- FROM deployments d
343
- JOIN sprites s ON d.sprite_id = s.id
344
- WHERE d.status IN ('pending', 'syncing', 'installing', 'starting', 'running')
345
- ORDER BY d.started_at DESC`)
346
- .all();
347
- return rows.map((r) => ({
348
- ...this.rowToDeployment(r),
349
- sprite: {
350
- id: Number(r.sprite_id),
351
- project_name: String(r.project_name),
352
- project_path: String(r.project_path),
353
- sprite_name: String(r.sprite_name),
354
- sprite_url: r.sprite_url === null || r.sprite_url === undefined ? null : String(r.sprite_url),
355
- doppler_project: r.doppler_project === null || r.doppler_project === undefined
356
- ? null
357
- : String(r.doppler_project),
358
- dev_command: String(r.dev_command ?? "bun run dev"),
359
- port: Number(r.port ?? 8080),
360
- created_at: String(r.sprite_created_at ?? ""),
361
- updated_at: String(r.sprite_updated_at ?? ""),
362
- },
363
- }));
364
- }
365
- finally {
366
- db.close();
367
- }
368
- }
369
- }
@@ -1,2 +0,0 @@
1
- export declare const PREVIEW_SCHEMA = "\nCREATE TABLE IF NOT EXISTS sprites (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n project_name TEXT UNIQUE NOT NULL,\n project_path TEXT NOT NULL,\n sprite_name TEXT NOT NULL,\n sprite_url TEXT,\n doppler_project TEXT,\n dev_command TEXT DEFAULT 'bun run dev',\n port INTEGER DEFAULT 8080,\n created_at TEXT DEFAULT (datetime('now')),\n updated_at TEXT DEFAULT (datetime('now'))\n);\n\nCREATE TABLE IF NOT EXISTS deployments (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n sprite_id INTEGER REFERENCES sprites(id),\n status TEXT NOT NULL,\n preview_url TEXT,\n screenshot_path TEXT,\n started_at TEXT DEFAULT (datetime('now')),\n stopped_at TEXT,\n error TEXT,\n sync_duration_ms INTEGER,\n install_duration_ms INTEGER,\n start_duration_ms INTEGER\n);\n\nCREATE INDEX IF NOT EXISTS idx_sprites_project ON sprites(project_name);\nCREATE INDEX IF NOT EXISTS idx_deployments_sprite ON deployments(sprite_id);\nCREATE INDEX IF NOT EXISTS idx_deployments_status ON deployments(status);\n";
2
- //# sourceMappingURL=schema.d.ts.map
@@ -1,32 +0,0 @@
1
- export const PREVIEW_SCHEMA = `
2
- CREATE TABLE IF NOT EXISTS sprites (
3
- id INTEGER PRIMARY KEY AUTOINCREMENT,
4
- project_name TEXT UNIQUE NOT NULL,
5
- project_path TEXT NOT NULL,
6
- sprite_name TEXT NOT NULL,
7
- sprite_url TEXT,
8
- doppler_project TEXT,
9
- dev_command TEXT DEFAULT 'bun run dev',
10
- port INTEGER DEFAULT 8080,
11
- created_at TEXT DEFAULT (datetime('now')),
12
- updated_at TEXT DEFAULT (datetime('now'))
13
- );
14
-
15
- CREATE TABLE IF NOT EXISTS deployments (
16
- id INTEGER PRIMARY KEY AUTOINCREMENT,
17
- sprite_id INTEGER REFERENCES sprites(id),
18
- status TEXT NOT NULL,
19
- preview_url TEXT,
20
- screenshot_path TEXT,
21
- started_at TEXT DEFAULT (datetime('now')),
22
- stopped_at TEXT,
23
- error TEXT,
24
- sync_duration_ms INTEGER,
25
- install_duration_ms INTEGER,
26
- start_duration_ms INTEGER
27
- );
28
-
29
- CREATE INDEX IF NOT EXISTS idx_sprites_project ON sprites(project_name);
30
- CREATE INDEX IF NOT EXISTS idx_deployments_sprite ON deployments(sprite_id);
31
- CREATE INDEX IF NOT EXISTS idx_deployments_status ON deployments(status);
32
- `;
@@ -1,85 +0,0 @@
1
- export interface SpriteResult {
2
- success: boolean;
3
- stdout: string;
4
- stderr: string;
5
- error?: string;
6
- }
7
- /**
8
- * Run a sprite CLI command and return the result
9
- */
10
- export declare function runSprite(args: string[]): Promise<SpriteResult>;
11
- /**
12
- * Create a new sprite
13
- */
14
- export declare function createSprite(name: string): Promise<SpriteResult>;
15
- /**
16
- * Destroy a sprite
17
- */
18
- export declare function destroySprite(name: string): Promise<SpriteResult>;
19
- /**
20
- * Set sprite URL to public access
21
- */
22
- export declare function makeUrlPublic(spriteName: string): Promise<SpriteResult>;
23
- /**
24
- * Get sprite URL
25
- */
26
- export declare function getSpriteUrl(spriteName: string): Promise<string | null>;
27
- /**
28
- * Check if a sprite exists by listing all sprites
29
- */
30
- export declare function spriteExists(name: string): Promise<boolean>;
31
- /**
32
- * Execute a command on a sprite
33
- */
34
- export declare function execOnSprite(spriteName: string, command: string, options?: {
35
- dir?: string;
36
- env?: Record<string, string>;
37
- files?: Array<{
38
- local: string;
39
- remote: string;
40
- }>;
41
- }): Promise<SpriteResult>;
42
- /**
43
- * Create a tarball of a project excluding common build artifacts
44
- */
45
- /** Directories/files to exclude from tarball and watch (checked against full path and basename) */
46
- export declare const EXCLUDE_PATTERNS: string[];
47
- /** File extensions to exclude from tarball and watch (reduce size for large assets) */
48
- export declare const EXCLUDE_EXTENSIONS: string[];
49
- export declare function createProjectTarball(projectPath: string): Promise<string>;
50
- /**
51
- * Sync project files to sprite:
52
- * 1. Create tarball locally
53
- * 2. Upload via sprite exec -file
54
- * 3. Extract on remote
55
- */
56
- export declare function syncToSprite(spriteName: string, projectPath: string, remotePath?: string): Promise<{
57
- success: boolean;
58
- tarPath?: string;
59
- error?: string;
60
- syncDurationMs?: number;
61
- }>;
62
- /**
63
- * Check if a process is running on the sprite
64
- */
65
- export declare function isProcessRunning(spriteName: string, processPattern: string): Promise<boolean>;
66
- /**
67
- * Kill processes matching a pattern on the sprite
68
- * Note: Uses lsof to find PIDs since pkill is not allowed
69
- */
70
- export declare function killProcess(spriteName: string, processPattern: string): Promise<SpriteResult>;
71
- /**
72
- * Start a dev server on the sprite with health checking.
73
- *
74
- * Uses TTY session for proper PATH/environment on the sprite.
75
- * Pipes output to a local log file so the detached process persists
76
- * after the CLI exits. Polls the sprite URL until healthy (up to 90s).
77
- */
78
- export declare function startDevServer(spriteName: string, devCommand: string, options?: {
79
- dir?: string;
80
- env?: Record<string, string>;
81
- port?: number;
82
- healthCheckUrl?: string;
83
- healthCheckTimeoutMs?: number;
84
- }): Promise<SpriteResult>;
85
- //# sourceMappingURL=sprite.d.ts.map