vibora 3.1.5 → 3.2.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/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/jpeg" href="/logo-dark.jpg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Vibora</title>
8
- <script type="module" crossorigin src="/assets/index-4r4Wiaog.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-BU3_BthC.css">
8
+ <script type="module" crossorigin src="/assets/index-CcQScjvB.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-BLCsQ4nx.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
@@ -0,0 +1 @@
1
+ ALTER TABLE `tasks` ADD `ai_mode` text;
@@ -0,0 +1,529 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "daa0a187-9c2d-4c65-a340-720208764f9a",
5
+ "prevId": "a82c2f4f-00c3-47f9-b892-9890e9fe399b",
6
+ "tables": {
7
+ "repositories": {
8
+ "name": "repositories",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "text",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": false
16
+ },
17
+ "path": {
18
+ "name": "path",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true,
22
+ "autoincrement": false
23
+ },
24
+ "display_name": {
25
+ "name": "display_name",
26
+ "type": "text",
27
+ "primaryKey": false,
28
+ "notNull": true,
29
+ "autoincrement": false
30
+ },
31
+ "startup_script": {
32
+ "name": "startup_script",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": false,
36
+ "autoincrement": false
37
+ },
38
+ "copy_files": {
39
+ "name": "copy_files",
40
+ "type": "text",
41
+ "primaryKey": false,
42
+ "notNull": false,
43
+ "autoincrement": false
44
+ },
45
+ "remote_url": {
46
+ "name": "remote_url",
47
+ "type": "text",
48
+ "primaryKey": false,
49
+ "notNull": false,
50
+ "autoincrement": false
51
+ },
52
+ "is_copier_template": {
53
+ "name": "is_copier_template",
54
+ "type": "integer",
55
+ "primaryKey": false,
56
+ "notNull": false,
57
+ "autoincrement": false,
58
+ "default": false
59
+ },
60
+ "last_used_at": {
61
+ "name": "last_used_at",
62
+ "type": "text",
63
+ "primaryKey": false,
64
+ "notNull": false,
65
+ "autoincrement": false
66
+ },
67
+ "created_at": {
68
+ "name": "created_at",
69
+ "type": "text",
70
+ "primaryKey": false,
71
+ "notNull": true,
72
+ "autoincrement": false
73
+ },
74
+ "updated_at": {
75
+ "name": "updated_at",
76
+ "type": "text",
77
+ "primaryKey": false,
78
+ "notNull": true,
79
+ "autoincrement": false
80
+ }
81
+ },
82
+ "indexes": {
83
+ "repositories_path_unique": {
84
+ "name": "repositories_path_unique",
85
+ "columns": [
86
+ "path"
87
+ ],
88
+ "isUnique": true
89
+ }
90
+ },
91
+ "foreignKeys": {},
92
+ "compositePrimaryKeys": {},
93
+ "uniqueConstraints": {},
94
+ "checkConstraints": {}
95
+ },
96
+ "system_metrics": {
97
+ "name": "system_metrics",
98
+ "columns": {
99
+ "id": {
100
+ "name": "id",
101
+ "type": "integer",
102
+ "primaryKey": true,
103
+ "notNull": true,
104
+ "autoincrement": true
105
+ },
106
+ "timestamp": {
107
+ "name": "timestamp",
108
+ "type": "integer",
109
+ "primaryKey": false,
110
+ "notNull": true,
111
+ "autoincrement": false
112
+ },
113
+ "cpu_percent": {
114
+ "name": "cpu_percent",
115
+ "type": "real",
116
+ "primaryKey": false,
117
+ "notNull": true,
118
+ "autoincrement": false
119
+ },
120
+ "memory_used_bytes": {
121
+ "name": "memory_used_bytes",
122
+ "type": "integer",
123
+ "primaryKey": false,
124
+ "notNull": true,
125
+ "autoincrement": false
126
+ },
127
+ "memory_total_bytes": {
128
+ "name": "memory_total_bytes",
129
+ "type": "integer",
130
+ "primaryKey": false,
131
+ "notNull": true,
132
+ "autoincrement": false
133
+ },
134
+ "memory_cache_bytes": {
135
+ "name": "memory_cache_bytes",
136
+ "type": "integer",
137
+ "primaryKey": false,
138
+ "notNull": true,
139
+ "autoincrement": false,
140
+ "default": 0
141
+ },
142
+ "disk_used_bytes": {
143
+ "name": "disk_used_bytes",
144
+ "type": "integer",
145
+ "primaryKey": false,
146
+ "notNull": true,
147
+ "autoincrement": false
148
+ },
149
+ "disk_total_bytes": {
150
+ "name": "disk_total_bytes",
151
+ "type": "integer",
152
+ "primaryKey": false,
153
+ "notNull": true,
154
+ "autoincrement": false
155
+ }
156
+ },
157
+ "indexes": {},
158
+ "foreignKeys": {},
159
+ "compositePrimaryKeys": {},
160
+ "uniqueConstraints": {},
161
+ "checkConstraints": {}
162
+ },
163
+ "tasks": {
164
+ "name": "tasks",
165
+ "columns": {
166
+ "id": {
167
+ "name": "id",
168
+ "type": "text",
169
+ "primaryKey": true,
170
+ "notNull": true,
171
+ "autoincrement": false
172
+ },
173
+ "title": {
174
+ "name": "title",
175
+ "type": "text",
176
+ "primaryKey": false,
177
+ "notNull": true,
178
+ "autoincrement": false
179
+ },
180
+ "description": {
181
+ "name": "description",
182
+ "type": "text",
183
+ "primaryKey": false,
184
+ "notNull": false,
185
+ "autoincrement": false
186
+ },
187
+ "status": {
188
+ "name": "status",
189
+ "type": "text",
190
+ "primaryKey": false,
191
+ "notNull": true,
192
+ "autoincrement": false,
193
+ "default": "'IN_PROGRESS'"
194
+ },
195
+ "position": {
196
+ "name": "position",
197
+ "type": "integer",
198
+ "primaryKey": false,
199
+ "notNull": true,
200
+ "autoincrement": false
201
+ },
202
+ "repo_path": {
203
+ "name": "repo_path",
204
+ "type": "text",
205
+ "primaryKey": false,
206
+ "notNull": true,
207
+ "autoincrement": false
208
+ },
209
+ "repo_name": {
210
+ "name": "repo_name",
211
+ "type": "text",
212
+ "primaryKey": false,
213
+ "notNull": true,
214
+ "autoincrement": false
215
+ },
216
+ "base_branch": {
217
+ "name": "base_branch",
218
+ "type": "text",
219
+ "primaryKey": false,
220
+ "notNull": true,
221
+ "autoincrement": false
222
+ },
223
+ "branch": {
224
+ "name": "branch",
225
+ "type": "text",
226
+ "primaryKey": false,
227
+ "notNull": false,
228
+ "autoincrement": false
229
+ },
230
+ "worktree_path": {
231
+ "name": "worktree_path",
232
+ "type": "text",
233
+ "primaryKey": false,
234
+ "notNull": false,
235
+ "autoincrement": false
236
+ },
237
+ "view_state": {
238
+ "name": "view_state",
239
+ "type": "text",
240
+ "primaryKey": false,
241
+ "notNull": false,
242
+ "autoincrement": false
243
+ },
244
+ "pr_url": {
245
+ "name": "pr_url",
246
+ "type": "text",
247
+ "primaryKey": false,
248
+ "notNull": false,
249
+ "autoincrement": false
250
+ },
251
+ "linear_ticket_id": {
252
+ "name": "linear_ticket_id",
253
+ "type": "text",
254
+ "primaryKey": false,
255
+ "notNull": false,
256
+ "autoincrement": false
257
+ },
258
+ "linear_ticket_url": {
259
+ "name": "linear_ticket_url",
260
+ "type": "text",
261
+ "primaryKey": false,
262
+ "notNull": false,
263
+ "autoincrement": false
264
+ },
265
+ "startup_script": {
266
+ "name": "startup_script",
267
+ "type": "text",
268
+ "primaryKey": false,
269
+ "notNull": false,
270
+ "autoincrement": false
271
+ },
272
+ "ai_mode": {
273
+ "name": "ai_mode",
274
+ "type": "text",
275
+ "primaryKey": false,
276
+ "notNull": false,
277
+ "autoincrement": false
278
+ },
279
+ "created_at": {
280
+ "name": "created_at",
281
+ "type": "text",
282
+ "primaryKey": false,
283
+ "notNull": true,
284
+ "autoincrement": false
285
+ },
286
+ "updated_at": {
287
+ "name": "updated_at",
288
+ "type": "text",
289
+ "primaryKey": false,
290
+ "notNull": true,
291
+ "autoincrement": false
292
+ }
293
+ },
294
+ "indexes": {},
295
+ "foreignKeys": {},
296
+ "compositePrimaryKeys": {},
297
+ "uniqueConstraints": {},
298
+ "checkConstraints": {}
299
+ },
300
+ "terminal_tabs": {
301
+ "name": "terminal_tabs",
302
+ "columns": {
303
+ "id": {
304
+ "name": "id",
305
+ "type": "text",
306
+ "primaryKey": true,
307
+ "notNull": true,
308
+ "autoincrement": false
309
+ },
310
+ "name": {
311
+ "name": "name",
312
+ "type": "text",
313
+ "primaryKey": false,
314
+ "notNull": true,
315
+ "autoincrement": false
316
+ },
317
+ "position": {
318
+ "name": "position",
319
+ "type": "integer",
320
+ "primaryKey": false,
321
+ "notNull": true,
322
+ "autoincrement": false,
323
+ "default": 0
324
+ },
325
+ "directory": {
326
+ "name": "directory",
327
+ "type": "text",
328
+ "primaryKey": false,
329
+ "notNull": false,
330
+ "autoincrement": false
331
+ },
332
+ "created_at": {
333
+ "name": "created_at",
334
+ "type": "text",
335
+ "primaryKey": false,
336
+ "notNull": true,
337
+ "autoincrement": false
338
+ },
339
+ "updated_at": {
340
+ "name": "updated_at",
341
+ "type": "text",
342
+ "primaryKey": false,
343
+ "notNull": true,
344
+ "autoincrement": false
345
+ }
346
+ },
347
+ "indexes": {},
348
+ "foreignKeys": {},
349
+ "compositePrimaryKeys": {},
350
+ "uniqueConstraints": {},
351
+ "checkConstraints": {}
352
+ },
353
+ "terminal_view_state": {
354
+ "name": "terminal_view_state",
355
+ "columns": {
356
+ "id": {
357
+ "name": "id",
358
+ "type": "text",
359
+ "primaryKey": true,
360
+ "notNull": true,
361
+ "autoincrement": false,
362
+ "default": "'singleton'"
363
+ },
364
+ "active_tab_id": {
365
+ "name": "active_tab_id",
366
+ "type": "text",
367
+ "primaryKey": false,
368
+ "notNull": false,
369
+ "autoincrement": false
370
+ },
371
+ "focused_terminals": {
372
+ "name": "focused_terminals",
373
+ "type": "text",
374
+ "primaryKey": false,
375
+ "notNull": false,
376
+ "autoincrement": false
377
+ },
378
+ "current_view": {
379
+ "name": "current_view",
380
+ "type": "text",
381
+ "primaryKey": false,
382
+ "notNull": false,
383
+ "autoincrement": false
384
+ },
385
+ "current_task_id": {
386
+ "name": "current_task_id",
387
+ "type": "text",
388
+ "primaryKey": false,
389
+ "notNull": false,
390
+ "autoincrement": false
391
+ },
392
+ "is_tab_visible": {
393
+ "name": "is_tab_visible",
394
+ "type": "integer",
395
+ "primaryKey": false,
396
+ "notNull": false,
397
+ "autoincrement": false
398
+ },
399
+ "view_updated_at": {
400
+ "name": "view_updated_at",
401
+ "type": "text",
402
+ "primaryKey": false,
403
+ "notNull": false,
404
+ "autoincrement": false
405
+ },
406
+ "updated_at": {
407
+ "name": "updated_at",
408
+ "type": "text",
409
+ "primaryKey": false,
410
+ "notNull": true,
411
+ "autoincrement": false
412
+ }
413
+ },
414
+ "indexes": {},
415
+ "foreignKeys": {},
416
+ "compositePrimaryKeys": {},
417
+ "uniqueConstraints": {},
418
+ "checkConstraints": {}
419
+ },
420
+ "terminals": {
421
+ "name": "terminals",
422
+ "columns": {
423
+ "id": {
424
+ "name": "id",
425
+ "type": "text",
426
+ "primaryKey": true,
427
+ "notNull": true,
428
+ "autoincrement": false
429
+ },
430
+ "name": {
431
+ "name": "name",
432
+ "type": "text",
433
+ "primaryKey": false,
434
+ "notNull": true,
435
+ "autoincrement": false
436
+ },
437
+ "cwd": {
438
+ "name": "cwd",
439
+ "type": "text",
440
+ "primaryKey": false,
441
+ "notNull": true,
442
+ "autoincrement": false
443
+ },
444
+ "cols": {
445
+ "name": "cols",
446
+ "type": "integer",
447
+ "primaryKey": false,
448
+ "notNull": true,
449
+ "autoincrement": false,
450
+ "default": 80
451
+ },
452
+ "rows": {
453
+ "name": "rows",
454
+ "type": "integer",
455
+ "primaryKey": false,
456
+ "notNull": true,
457
+ "autoincrement": false,
458
+ "default": 24
459
+ },
460
+ "tmux_session": {
461
+ "name": "tmux_session",
462
+ "type": "text",
463
+ "primaryKey": false,
464
+ "notNull": true,
465
+ "autoincrement": false
466
+ },
467
+ "status": {
468
+ "name": "status",
469
+ "type": "text",
470
+ "primaryKey": false,
471
+ "notNull": true,
472
+ "autoincrement": false,
473
+ "default": "'running'"
474
+ },
475
+ "exit_code": {
476
+ "name": "exit_code",
477
+ "type": "integer",
478
+ "primaryKey": false,
479
+ "notNull": false,
480
+ "autoincrement": false
481
+ },
482
+ "tab_id": {
483
+ "name": "tab_id",
484
+ "type": "text",
485
+ "primaryKey": false,
486
+ "notNull": false,
487
+ "autoincrement": false
488
+ },
489
+ "position_in_tab": {
490
+ "name": "position_in_tab",
491
+ "type": "integer",
492
+ "primaryKey": false,
493
+ "notNull": false,
494
+ "autoincrement": false,
495
+ "default": 0
496
+ },
497
+ "created_at": {
498
+ "name": "created_at",
499
+ "type": "text",
500
+ "primaryKey": false,
501
+ "notNull": true,
502
+ "autoincrement": false
503
+ },
504
+ "updated_at": {
505
+ "name": "updated_at",
506
+ "type": "text",
507
+ "primaryKey": false,
508
+ "notNull": true,
509
+ "autoincrement": false
510
+ }
511
+ },
512
+ "indexes": {},
513
+ "foreignKeys": {},
514
+ "compositePrimaryKeys": {},
515
+ "uniqueConstraints": {},
516
+ "checkConstraints": {}
517
+ }
518
+ },
519
+ "views": {},
520
+ "enums": {},
521
+ "_meta": {
522
+ "schemas": {},
523
+ "tables": {},
524
+ "columns": {}
525
+ },
526
+ "internal": {
527
+ "indexes": {}
528
+ }
529
+ }
@@ -78,6 +78,13 @@
78
78
  "when": 1766780922208,
79
79
  "tag": "0010_secret_jasper_sitwell",
80
80
  "breakpoints": true
81
+ },
82
+ {
83
+ "idx": 11,
84
+ "version": "6",
85
+ "when": 1766878994074,
86
+ "tag": "0011_tan_jasper_sitwell",
87
+ "breakpoints": true
81
88
  }
82
89
  ]
83
90
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibora",
3
- "version": "3.1.5",
3
+ "version": "3.2.0",
4
4
  "description": "The Vibe Engineer's Cockpit",
5
5
  "license": "PolyForm-Shield-1.0.0",
6
6
  "repository": {
package/server/index.js CHANGED
@@ -14981,6 +14981,7 @@ var tasks = sqliteTable("tasks", {
14981
14981
  linearTicketId: text("linear_ticket_id"),
14982
14982
  linearTicketUrl: text("linear_ticket_url"),
14983
14983
  startupScript: text("startup_script"),
14984
+ aiMode: text("ai_mode"),
14984
14985
  createdAt: text("created_at").notNull(),
14985
14986
  updatedAt: text("updated_at").notNull()
14986
14987
  });
@@ -145466,6 +145467,7 @@ app2.post("/", async (c) => {
145466
145467
  branch: body.branch || null,
145467
145468
  worktreePath: body.worktreePath || null,
145468
145469
  startupScript: body.startupScript || null,
145470
+ aiMode: body.aiMode || null,
145469
145471
  createdAt: now,
145470
145472
  updatedAt: now
145471
145473
  };
@@ -146307,6 +146309,24 @@ function isPathWithinRoot(filePath, root) {
146307
146309
  const resolvedRoot = path7.resolve(root);
146308
146310
  return resolvedPath.startsWith(resolvedRoot + path7.sep) || resolvedPath === resolvedRoot;
146309
146311
  }
146312
+ var EXCLUDED_DIRECTORIES = new Set([
146313
+ "node_modules",
146314
+ "vendor",
146315
+ "dist",
146316
+ "build",
146317
+ "out",
146318
+ ".next",
146319
+ ".nuxt",
146320
+ "__pycache__",
146321
+ "target",
146322
+ ".venv",
146323
+ "venv",
146324
+ "env",
146325
+ ".tox",
146326
+ "coverage",
146327
+ ".cache",
146328
+ "bower_components"
146329
+ ]);
146310
146330
  function buildTree(dirPath, root, depth = 0, maxDepth = 20) {
146311
146331
  if (depth >= maxDepth)
146312
146332
  return [];
@@ -146314,7 +146334,7 @@ function buildTree(dirPath, root, depth = 0, maxDepth = 20) {
146314
146334
  try {
146315
146335
  const items = fs5.readdirSync(dirPath);
146316
146336
  for (const name of items) {
146317
- if (name.startsWith("."))
146337
+ if (name.startsWith(".") || EXCLUDED_DIRECTORIES.has(name))
146318
146338
  continue;
146319
146339
  try {
146320
146340
  const itemPath = path7.join(dirPath, name);
@@ -146779,12 +146799,12 @@ app5.post("/restart", (c) => {
146779
146799
  return c.json({ error: "Restart only available in developer mode" }, 403);
146780
146800
  }
146781
146801
  setTimeout(() => {
146782
- spawn2("bash", ["-c", "cd ~/projects/vibora && mise run build:debug && bun run drizzle-kit push && systemctl --user restart vibora"], {
146802
+ spawn2("systemctl", ["--user", "restart", "vibora"], {
146783
146803
  detached: true,
146784
146804
  stdio: "ignore"
146785
146805
  }).unref();
146786
146806
  }, 100);
146787
- return c.json({ success: true, message: "Restart initiated (build:debug + migrate + restart)" });
146807
+ return c.json({ success: true, message: "Restart initiated" });
146788
146808
  });
146789
146809
  var lastSyncedTheme = null;
146790
146810
  var SYNC_DEBOUNCE_MS = 1000;