@proletariat/cli 0.3.90 → 0.3.91
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/commands/agent/auth.js +2 -2
- package/dist/commands/agent/auth.js.map +1 -1
- package/dist/commands/agent/shell.js +3 -3
- package/dist/commands/agent/shell.js.map +1 -1
- package/dist/commands/branch/create.js +2 -2
- package/dist/commands/branch/create.js.map +1 -1
- package/dist/commands/claude/index.js +3 -3
- package/dist/commands/claude/index.js.map +1 -1
- package/dist/commands/claude/open.js +2 -2
- package/dist/commands/claude/open.js.map +1 -1
- package/dist/commands/config/index.js +2 -2
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/db/repair.js +4 -4
- package/dist/commands/db/repair.js.map +1 -1
- package/dist/commands/docker/clean.js +2 -2
- package/dist/commands/docker/clean.js.map +1 -1
- package/dist/commands/docker/index.js +2 -2
- package/dist/commands/docker/index.js.map +1 -1
- package/dist/commands/docker/list.js +2 -2
- package/dist/commands/docker/list.js.map +1 -1
- package/dist/commands/docker/logs.js +2 -2
- package/dist/commands/docker/logs.js.map +1 -1
- package/dist/commands/docker/restart.js +2 -2
- package/dist/commands/docker/restart.js.map +1 -1
- package/dist/commands/docker/shell.js +2 -2
- package/dist/commands/docker/shell.js.map +1 -1
- package/dist/commands/docker/start.js +2 -2
- package/dist/commands/docker/start.js.map +1 -1
- package/dist/commands/docker/stop.js +2 -2
- package/dist/commands/docker/stop.js.map +1 -1
- package/dist/commands/docker/sync.js +2 -2
- package/dist/commands/docker/sync.js.map +1 -1
- package/dist/commands/execution/config.js.map +1 -1
- package/dist/commands/execution/list.js +2 -2
- package/dist/commands/execution/list.js.map +1 -1
- package/dist/commands/execution/logs.js +2 -2
- package/dist/commands/execution/logs.js.map +1 -1
- package/dist/commands/execution/stop.js +2 -2
- package/dist/commands/execution/stop.js.map +1 -1
- package/dist/commands/execution/view.js +2 -2
- package/dist/commands/execution/view.js.map +1 -1
- package/dist/commands/linear/connect.js.map +1 -1
- package/dist/commands/mcp-server.js +2 -2
- package/dist/commands/mcp-server.js.map +1 -1
- package/dist/commands/orchestrator/attach.js +2 -2
- package/dist/commands/orchestrator/attach.js.map +1 -1
- package/dist/commands/orchestrator/start.js +3 -3
- package/dist/commands/orchestrator/start.js.map +1 -1
- package/dist/commands/orchestrator/stop.js +2 -2
- package/dist/commands/orchestrator/stop.js.map +1 -1
- package/dist/commands/qa/index.js +3 -3
- package/dist/commands/qa/index.js.map +1 -1
- package/dist/commands/session/attach.js +3 -3
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/cleanup.js +2 -2
- package/dist/commands/session/cleanup.js.map +1 -1
- package/dist/commands/session/exec.js +2 -2
- package/dist/commands/session/exec.js.map +1 -1
- package/dist/commands/session/health.js +2 -2
- package/dist/commands/session/health.js.map +1 -1
- package/dist/commands/session/inspect.js +2 -2
- package/dist/commands/session/inspect.js.map +1 -1
- package/dist/commands/session/list.js +2 -2
- package/dist/commands/session/list.js.map +1 -1
- package/dist/commands/session/peek.js +3 -3
- package/dist/commands/session/peek.js.map +1 -1
- package/dist/commands/session/poke.js +2 -2
- package/dist/commands/session/poke.js.map +1 -1
- package/dist/commands/session/prune.js +2 -2
- package/dist/commands/session/prune.js.map +1 -1
- package/dist/commands/session/report.js +2 -2
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/session/restart.js +2 -2
- package/dist/commands/session/restart.js.map +1 -1
- package/dist/commands/shortcut/connect.js.map +1 -1
- package/dist/commands/trello/configure.js.map +1 -1
- package/dist/commands/work/complete.js +2 -2
- package/dist/commands/work/complete.js.map +1 -1
- package/dist/commands/work/hooks/add.js +2 -2
- package/dist/commands/work/hooks/add.js.map +1 -1
- package/dist/commands/work/hooks/list.js +2 -2
- package/dist/commands/work/hooks/list.js.map +1 -1
- package/dist/commands/work/hooks/remove.js +2 -2
- package/dist/commands/work/hooks/remove.js.map +1 -1
- package/dist/commands/work/hooks/toggle.js +2 -2
- package/dist/commands/work/hooks/toggle.js.map +1 -1
- package/dist/commands/work/index.js +4 -0
- package/dist/commands/work/index.js.map +1 -1
- package/dist/commands/work/ready.js +2 -2
- package/dist/commands/work/ready.js.map +1 -1
- package/dist/commands/work/ship.d.ts +43 -0
- package/dist/commands/work/ship.js +587 -0
- package/dist/commands/work/ship.js.map +1 -0
- package/dist/commands/work/spawn.js +2 -2
- package/dist/commands/work/spawn.js.map +1 -1
- package/dist/commands/work/start.d.ts +1 -0
- package/dist/commands/work/start.js +13 -3
- package/dist/commands/work/start.js.map +1 -1
- package/dist/commands/work/stop.js +2 -2
- package/dist/commands/work/stop.js.map +1 -1
- package/dist/commands/work/watch.js +2 -2
- package/dist/commands/work/watch.js.map +1 -1
- package/dist/hooks/init.js +6 -15
- package/dist/hooks/init.js.map +1 -1
- package/dist/lib/asana/config.d.ts +8 -8
- package/dist/lib/asana/config.js.map +1 -1
- package/dist/lib/asana/mapper.d.ts +2 -2
- package/dist/lib/asana/mapper.js.map +1 -1
- package/dist/lib/database/agents.js +4 -2
- package/dist/lib/database/agents.js.map +1 -1
- package/dist/lib/database/db-safety.d.ts +4 -4
- package/dist/lib/database/db-safety.js +6 -6
- package/dist/lib/database/db-safety.js.map +1 -1
- package/dist/lib/database/driver.d.ts +19 -21
- package/dist/lib/database/driver.js +20 -21
- package/dist/lib/database/driver.js.map +1 -1
- package/dist/lib/database/drizzle.d.ts +9 -9
- package/dist/lib/database/drizzle.js +9 -17
- package/dist/lib/database/drizzle.js.map +1 -1
- package/dist/lib/database/migrations/0001_baseline.js.map +1 -1
- package/dist/lib/database/migrations/0002_work_hooks.js.map +1 -1
- package/dist/lib/database/migrations/0003_actions_redesign.js.map +1 -1
- package/dist/lib/database/migrations/0004_workflow_rules.js.map +1 -1
- package/dist/lib/database/migrations/0005_provider_status_mapping.js.map +1 -1
- package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -1
- package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -1
- package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -1
- package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -1
- package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -1
- package/dist/lib/database/migrations/0011_add_review_gate.js.map +1 -1
- package/dist/lib/database/migrations/0012_add_action_network_allowlist.js.map +1 -1
- package/dist/lib/database/migrator.d.ts +3 -3
- package/dist/lib/database/migrator.js.map +1 -1
- package/dist/lib/database/pmo-bootstrap.d.ts +2 -2
- package/dist/lib/database/pmo-bootstrap.js +4 -26
- package/dist/lib/database/pmo-bootstrap.js.map +1 -1
- package/dist/lib/database/repositories.js +1 -1
- package/dist/lib/database/repositories.js.map +1 -1
- package/dist/lib/database/settings-store.d.ts +3 -3
- package/dist/lib/database/settings-store.js +2 -2
- package/dist/lib/database/settings-store.js.map +1 -1
- package/dist/lib/database/sqlite.d.ts +155 -0
- package/dist/lib/database/sqlite.js +358 -0
- package/dist/lib/database/sqlite.js.map +1 -0
- package/dist/lib/database/themes.js +3 -3
- package/dist/lib/database/themes.js.map +1 -1
- package/dist/lib/database/workspace.d.ts +4 -4
- package/dist/lib/database/workspace.js +4 -25
- package/dist/lib/database/workspace.js.map +1 -1
- package/dist/lib/execution/config.d.ts +33 -33
- package/dist/lib/execution/config.js.map +1 -1
- package/dist/lib/execution/context.d.ts +20 -0
- package/dist/lib/execution/context.js +88 -0
- package/dist/lib/execution/context.js.map +1 -1
- package/dist/lib/execution/devcontainer.d.ts +7 -1
- package/dist/lib/execution/devcontainer.js +52 -38
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/devcontainer.js +11 -0
- package/dist/lib/execution/runners/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.js +1 -1
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/orchestrator.js +6 -3
- package/dist/lib/execution/runners/orchestrator.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.js +31 -0
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/execution/runners/shared.d.ts +2 -2
- package/dist/lib/execution/runners/shared.js +2 -2
- package/dist/lib/execution/runners/shared.js.map +1 -1
- package/dist/lib/execution/spawner.d.ts +3 -3
- package/dist/lib/execution/spawner.js.map +1 -1
- package/dist/lib/execution/storage.d.ts +3 -3
- package/dist/lib/execution/storage.js.map +1 -1
- package/dist/lib/execution/types.d.ts +23 -0
- package/dist/lib/execution/types.js.map +1 -1
- package/dist/lib/external-issues/mapping-store.d.ts +2 -2
- package/dist/lib/external-issues/mapping-store.js.map +1 -1
- package/dist/lib/external-issues/outbound-sync.d.ts +3 -3
- package/dist/lib/external-issues/outbound-sync.js.map +1 -1
- package/dist/lib/jira/config.d.ts +5 -5
- package/dist/lib/jira/config.js.map +1 -1
- package/dist/lib/linear/config.d.ts +8 -8
- package/dist/lib/linear/config.js.map +1 -1
- package/dist/lib/linear/mapper.d.ts +2 -2
- package/dist/lib/linear/mapper.js.map +1 -1
- package/dist/lib/mcp/types.d.ts +2 -2
- package/dist/lib/monday/config.d.ts +9 -9
- package/dist/lib/monday/config.js.map +1 -1
- package/dist/lib/monday/mapper.d.ts +2 -2
- package/dist/lib/monday/mapper.js.map +1 -1
- package/dist/lib/pmo/diet.d.ts +3 -3
- package/dist/lib/pmo/diet.js.map +1 -1
- package/dist/lib/pmo/find-pmo.js +1 -5
- package/dist/lib/pmo/find-pmo.js.map +1 -1
- package/dist/lib/pmo/index.js +6 -7
- package/dist/lib/pmo/index.js.map +1 -1
- package/dist/lib/pmo/storage/base.d.ts +15 -15
- package/dist/lib/pmo/storage/base.js.map +1 -1
- package/dist/lib/pmo/storage/dependencies.js.map +1 -1
- package/dist/lib/pmo/storage/helpers.js.map +1 -1
- package/dist/lib/pmo/storage/index.d.ts +8 -2
- package/dist/lib/pmo/storage/index.js +10 -2
- package/dist/lib/pmo/storage/index.js.map +1 -1
- package/dist/lib/pmo/storage/projects.js.map +1 -1
- package/dist/lib/pmo/storage/roadmaps.js +4 -4
- package/dist/lib/pmo/storage/roadmaps.js.map +1 -1
- package/dist/lib/pmo/storage/specs.js.map +1 -1
- package/dist/lib/pmo/storage/statuses.js +1 -1
- package/dist/lib/pmo/storage/statuses.js.map +1 -1
- package/dist/lib/pmo/storage/tickets.js +1 -1
- package/dist/lib/pmo/storage/tickets.js.map +1 -1
- package/dist/lib/pmo/storage/types.d.ts +2 -2
- package/dist/lib/pmo/storage/views.js.map +1 -1
- package/dist/lib/providers/index.d.ts +2 -0
- package/dist/lib/providers/index.js +2 -0
- package/dist/lib/providers/index.js.map +1 -1
- package/dist/lib/providers/linear-provider.d.ts +2 -2
- package/dist/lib/providers/linear-provider.js.map +1 -1
- package/dist/lib/providers/resolver.d.ts +3 -3
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/providers/state-intents.d.ts +44 -0
- package/dist/lib/providers/state-intents.js +101 -0
- package/dist/lib/providers/state-intents.js.map +1 -0
- package/dist/lib/providers/state-resolution.d.ts +137 -0
- package/dist/lib/providers/state-resolution.js +302 -0
- package/dist/lib/providers/state-resolution.js.map +1 -0
- package/dist/lib/providers/status-mapping.d.ts +2 -2
- package/dist/lib/providers/status-mapping.js.map +1 -1
- package/dist/lib/providers/trigger-config.d.ts +4 -4
- package/dist/lib/providers/trigger-config.js.map +1 -1
- package/dist/lib/providers/types.d.ts +2 -1
- package/dist/lib/registry/index.js +4 -11
- package/dist/lib/registry/index.js.map +1 -1
- package/dist/lib/shortcut/config.d.ts +8 -8
- package/dist/lib/shortcut/config.js.map +1 -1
- package/dist/lib/trello/config.d.ts +10 -10
- package/dist/lib/trello/config.js.map +1 -1
- package/dist/lib/trello/mapper.d.ts +2 -2
- package/dist/lib/trello/mapper.js.map +1 -1
- package/dist/lib/work-lifecycle/action-chaining.d.ts +3 -3
- package/dist/lib/work-lifecycle/action-chaining.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/manager.d.ts +3 -3
- package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/storage.d.ts +3 -3
- package/dist/lib/work-lifecycle/hooks/storage.js.map +1 -1
- package/dist/lib/work-lifecycle/post-execution.d.ts +2 -2
- package/dist/lib/work-lifecycle/post-execution.js +47 -28
- package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
- package/dist/lib/work-lifecycle/rule-evaluator.d.ts +3 -3
- package/dist/lib/work-lifecycle/rule-evaluator.js.map +1 -1
- package/dist/lib/work-source/config.d.ts +6 -6
- package/dist/lib/work-source/config.js.map +1 -1
- package/dist/lib/work-source/provider-sources.d.ts +12 -12
- package/dist/lib/work-source/provider-sources.js.map +1 -1
- package/oclif.manifest.json +2202 -2088
- package/package.json +3 -4
- package/bin/validate-better-sqlite3.cjs +0 -129
- package/dist/lib/database/native-validation.d.ts +0 -40
- package/dist/lib/database/native-validation.js +0 -123
- package/dist/lib/database/native-validation.js.map +0 -1
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sql.js SQLite Compatibility Layer
|
|
3
|
+
*
|
|
4
|
+
* Provides a SqliteDatabase class that wraps sql.js (pure JS/WASM SQLite)
|
|
5
|
+
* with a better-sqlite3-compatible API. This allows the rest of the codebase
|
|
6
|
+
* to use the same .prepare(), .exec(), .pragma(), .transaction() methods
|
|
7
|
+
* without modification.
|
|
8
|
+
*
|
|
9
|
+
* Key differences from better-sqlite3:
|
|
10
|
+
* - Database is loaded into memory from file on open
|
|
11
|
+
* - Changes are written back to file on close() or save()
|
|
12
|
+
* - No native module compilation required
|
|
13
|
+
* - WASM must be initialized once via initSqlite() before use
|
|
14
|
+
*
|
|
15
|
+
* See: PRLT-1074
|
|
16
|
+
*/
|
|
17
|
+
import initSqlJs from 'sql.js';
|
|
18
|
+
import * as fs from 'node:fs';
|
|
19
|
+
// =============================================================================
|
|
20
|
+
// WASM Module Initialization
|
|
21
|
+
// =============================================================================
|
|
22
|
+
let _SQL = null;
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the sql.js WASM module. Must be called once before creating
|
|
25
|
+
* any SqliteDatabase instances (typically in the init hook).
|
|
26
|
+
*
|
|
27
|
+
* This is the only async operation — after initialization, all database
|
|
28
|
+
* operations are synchronous.
|
|
29
|
+
*/
|
|
30
|
+
export async function initSqlite() {
|
|
31
|
+
if (!_SQL) {
|
|
32
|
+
_SQL = await initSqlJs();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the initialized sql.js module. Throws if initSqlite() hasn't been called.
|
|
37
|
+
*/
|
|
38
|
+
function getSqlJs() {
|
|
39
|
+
if (!_SQL) {
|
|
40
|
+
throw new Error('sql.js WASM module not initialized. Call initSqlite() before creating databases.\n' +
|
|
41
|
+
'This usually means the init hook did not run — check apps/cli/src/hooks/init.ts.');
|
|
42
|
+
}
|
|
43
|
+
return _SQL;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Wraps sql.js statement execution to provide better-sqlite3-compatible
|
|
47
|
+
* .run(), .get(), .all() methods.
|
|
48
|
+
*
|
|
49
|
+
* Statements are re-prepared on each call for simplicity and safety.
|
|
50
|
+
* For a CLI doing dozens of queries per command, the overhead is negligible.
|
|
51
|
+
*/
|
|
52
|
+
class SqlitePreparedStatement {
|
|
53
|
+
db;
|
|
54
|
+
sql;
|
|
55
|
+
_readonly;
|
|
56
|
+
_onWrite;
|
|
57
|
+
constructor(db, sql, _readonly = false, _onWrite) {
|
|
58
|
+
this.db = db;
|
|
59
|
+
this.sql = sql;
|
|
60
|
+
this._readonly = _readonly;
|
|
61
|
+
this._onWrite = _onWrite;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Execute the statement and return change info (INSERT/UPDATE/DELETE).
|
|
65
|
+
*/
|
|
66
|
+
run(...params) {
|
|
67
|
+
if (this._readonly) {
|
|
68
|
+
const trimmed = this.sql.trimStart().toUpperCase();
|
|
69
|
+
if (trimmed.startsWith('INSERT') || trimmed.startsWith('UPDATE') ||
|
|
70
|
+
trimmed.startsWith('DELETE') || trimmed.startsWith('DROP') ||
|
|
71
|
+
trimmed.startsWith('ALTER') || trimmed.startsWith('CREATE')) {
|
|
72
|
+
throw new Error('attempt to write a readonly database');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const stmt = this.db.prepare(this.sql);
|
|
76
|
+
try {
|
|
77
|
+
if (params.length > 0) {
|
|
78
|
+
stmt.bind(params.map(p => p === undefined ? null : p));
|
|
79
|
+
}
|
|
80
|
+
stmt.step();
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
stmt.free();
|
|
84
|
+
}
|
|
85
|
+
const changes = this.db.getRowsModified();
|
|
86
|
+
// Get lastInsertRowid via SQL (sql.js doesn't expose it directly)
|
|
87
|
+
const ridStmt = this.db.prepare('SELECT last_insert_rowid()');
|
|
88
|
+
let lastInsertRowid = 0;
|
|
89
|
+
try {
|
|
90
|
+
if (ridStmt.step()) {
|
|
91
|
+
lastInsertRowid = ridStmt.get()[0];
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
ridStmt.free();
|
|
96
|
+
}
|
|
97
|
+
// Auto-save to disk after write (matches better-sqlite3 behavior)
|
|
98
|
+
this._onWrite?.();
|
|
99
|
+
return { changes, lastInsertRowid };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Execute the statement and return the first matching row.
|
|
103
|
+
*/
|
|
104
|
+
get(...params) {
|
|
105
|
+
const stmt = this.db.prepare(this.sql);
|
|
106
|
+
try {
|
|
107
|
+
if (params.length > 0) {
|
|
108
|
+
stmt.bind(params.map(p => p === undefined ? null : p));
|
|
109
|
+
}
|
|
110
|
+
if (stmt.step()) {
|
|
111
|
+
return stmt.getAsObject();
|
|
112
|
+
}
|
|
113
|
+
return undefined;
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
stmt.free();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Execute the statement and return all matching rows.
|
|
121
|
+
*/
|
|
122
|
+
all(...params) {
|
|
123
|
+
const stmt = this.db.prepare(this.sql);
|
|
124
|
+
const results = [];
|
|
125
|
+
try {
|
|
126
|
+
if (params.length > 0) {
|
|
127
|
+
stmt.bind(params.map(p => p === undefined ? null : p));
|
|
128
|
+
}
|
|
129
|
+
while (stmt.step()) {
|
|
130
|
+
results.push(stmt.getAsObject());
|
|
131
|
+
}
|
|
132
|
+
return results;
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
stmt.free();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// =============================================================================
|
|
140
|
+
// SqliteDatabase Class
|
|
141
|
+
// =============================================================================
|
|
142
|
+
/**
|
|
143
|
+
* A synchronous SQLite database backed by sql.js (WASM).
|
|
144
|
+
*
|
|
145
|
+
* Provides the same API surface as better-sqlite3's Database class:
|
|
146
|
+
* .prepare(), .exec(), .pragma(), .transaction(), .close()
|
|
147
|
+
*
|
|
148
|
+
* File persistence: Write operations automatically flush changes to disk,
|
|
149
|
+
* matching better-sqlite3's write-through behavior. This ensures that
|
|
150
|
+
* separate connections reading the same file see committed changes.
|
|
151
|
+
*/
|
|
152
|
+
export class SqliteDatabase {
|
|
153
|
+
_db;
|
|
154
|
+
_dbPath;
|
|
155
|
+
_open = true;
|
|
156
|
+
_readonly = false;
|
|
157
|
+
_savepointCounter = 0;
|
|
158
|
+
_transactionDepth = 0;
|
|
159
|
+
/** Timestamp of last load/save — used to detect external file modifications */
|
|
160
|
+
_lastSyncMs = 0;
|
|
161
|
+
constructor(pathOrMemory, options) {
|
|
162
|
+
const SQL = getSqlJs();
|
|
163
|
+
this._readonly = options?.readonly ?? false;
|
|
164
|
+
if (pathOrMemory === ':memory:') {
|
|
165
|
+
this._db = new SQL.Database();
|
|
166
|
+
this._dbPath = null;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
this._dbPath = pathOrMemory;
|
|
170
|
+
if (fs.existsSync(pathOrMemory)) {
|
|
171
|
+
const buf = fs.readFileSync(pathOrMemory);
|
|
172
|
+
this._db = new SQL.Database(buf);
|
|
173
|
+
this._lastSyncMs = fs.statSync(pathOrMemory).mtimeMs;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Create new empty database; write immediately so the file exists
|
|
177
|
+
this._db = new SQL.Database();
|
|
178
|
+
if (!this._readonly) {
|
|
179
|
+
const data = this._db.export();
|
|
180
|
+
fs.writeFileSync(pathOrMemory, Buffer.from(data));
|
|
181
|
+
this._lastSyncMs = fs.statSync(pathOrMemory).mtimeMs;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if the underlying file was modified by another connection.
|
|
188
|
+
* If so, reload the database from disk to see the latest changes.
|
|
189
|
+
* This provides behavior similar to better-sqlite3's shared file access.
|
|
190
|
+
*/
|
|
191
|
+
_checkForExternalChanges() {
|
|
192
|
+
if (!this._dbPath || !this._open || this._transactionDepth > 0)
|
|
193
|
+
return;
|
|
194
|
+
try {
|
|
195
|
+
const currentMtime = fs.statSync(this._dbPath).mtimeMs;
|
|
196
|
+
if (currentMtime > this._lastSyncMs) {
|
|
197
|
+
this.reload();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
// File may have been deleted — ignore
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Prepare a SQL statement for execution.
|
|
206
|
+
* Returns an object with .run(), .get(), .all() methods
|
|
207
|
+
* compatible with better-sqlite3's prepared statements.
|
|
208
|
+
*/
|
|
209
|
+
prepare(sql) {
|
|
210
|
+
this._checkForExternalChanges();
|
|
211
|
+
return new SqlitePreparedStatement(this._db, sql, this._readonly, () => this._autoSave());
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Execute raw SQL (DDL, multi-statement). No return value.
|
|
215
|
+
*/
|
|
216
|
+
exec(sql) {
|
|
217
|
+
this._checkForExternalChanges();
|
|
218
|
+
if (this._readonly) {
|
|
219
|
+
const trimmed = sql.trimStart().toUpperCase();
|
|
220
|
+
if (trimmed.startsWith('INSERT') || trimmed.startsWith('UPDATE') ||
|
|
221
|
+
trimmed.startsWith('DELETE') || trimmed.startsWith('DROP') ||
|
|
222
|
+
trimmed.startsWith('ALTER') || trimmed.startsWith('CREATE')) {
|
|
223
|
+
throw new Error('attempt to write a readonly database');
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
this._db.run(sql);
|
|
227
|
+
this._autoSave();
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Get or set SQLite pragmas.
|
|
231
|
+
* Converts better-sqlite3's pragma syntax to sql.js exec calls.
|
|
232
|
+
*
|
|
233
|
+
* Note: WAL mode and busy_timeout are no-ops in sql.js (in-memory).
|
|
234
|
+
* They execute without error but don't change behavior.
|
|
235
|
+
*/
|
|
236
|
+
pragma(source, options) {
|
|
237
|
+
try {
|
|
238
|
+
const results = this._db.exec(`PRAGMA ${source}`);
|
|
239
|
+
if (results.length === 0) {
|
|
240
|
+
return options?.simple ? undefined : [];
|
|
241
|
+
}
|
|
242
|
+
const columns = results[0].columns;
|
|
243
|
+
if (options?.simple) {
|
|
244
|
+
return results[0].values[0]?.[0];
|
|
245
|
+
}
|
|
246
|
+
// Return as array of objects (same shape as better-sqlite3)
|
|
247
|
+
return results[0].values.map((row) => {
|
|
248
|
+
const obj = {};
|
|
249
|
+
columns.forEach((col, i) => {
|
|
250
|
+
obj[col] = row[i];
|
|
251
|
+
});
|
|
252
|
+
return obj;
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Some pragmas may not be supported in sql.js; return safe defaults
|
|
257
|
+
return options?.simple ? undefined : [];
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Create a transaction function.
|
|
262
|
+
* Returns a new function that, when called, runs the wrapped function
|
|
263
|
+
* inside a SQLite transaction.
|
|
264
|
+
*
|
|
265
|
+
* Uses SAVEPOINT/RELEASE for all levels, which correctly handles:
|
|
266
|
+
* - Top-level calls (SAVEPOINT implicitly starts a transaction)
|
|
267
|
+
* - Nested calls within other transactions
|
|
268
|
+
* - Calls within externally-created savepoints (e.g., test helpers)
|
|
269
|
+
*
|
|
270
|
+
* Auto-save is deferred until the outermost transaction completes,
|
|
271
|
+
* so nested writes don't flush to disk until the whole transaction commits.
|
|
272
|
+
*/
|
|
273
|
+
transaction(fn) {
|
|
274
|
+
return ((...args) => {
|
|
275
|
+
const savepointName = `sp_${++this._savepointCounter}`;
|
|
276
|
+
this._transactionDepth++;
|
|
277
|
+
this._db.run(`SAVEPOINT ${savepointName}`);
|
|
278
|
+
try {
|
|
279
|
+
const result = fn(...args);
|
|
280
|
+
this._db.run(`RELEASE ${savepointName}`);
|
|
281
|
+
this._transactionDepth--;
|
|
282
|
+
if (this._transactionDepth === 0) {
|
|
283
|
+
this._autoSave();
|
|
284
|
+
}
|
|
285
|
+
return result;
|
|
286
|
+
}
|
|
287
|
+
catch (e) {
|
|
288
|
+
this._db.run(`ROLLBACK TO ${savepointName}`);
|
|
289
|
+
this._db.run(`RELEASE ${savepointName}`);
|
|
290
|
+
this._transactionDepth--;
|
|
291
|
+
throw e;
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Auto-save to disk after write operations when not inside a transaction.
|
|
297
|
+
* This matches better-sqlite3's write-through behavior where changes
|
|
298
|
+
* are visible to other connections immediately.
|
|
299
|
+
*/
|
|
300
|
+
_autoSave() {
|
|
301
|
+
if (this._transactionDepth === 0) {
|
|
302
|
+
this.save();
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Close the database connection and write changes to disk.
|
|
307
|
+
* After closing, the database cannot be used.
|
|
308
|
+
*/
|
|
309
|
+
close() {
|
|
310
|
+
if (!this._open)
|
|
311
|
+
return;
|
|
312
|
+
this.save();
|
|
313
|
+
this._db.close();
|
|
314
|
+
this._open = false;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Write the current in-memory database to the file on disk.
|
|
318
|
+
* No-op for in-memory databases or readonly connections.
|
|
319
|
+
*/
|
|
320
|
+
save() {
|
|
321
|
+
if (this._dbPath && !this._readonly && this._open) {
|
|
322
|
+
const data = this._db.export();
|
|
323
|
+
fs.writeFileSync(this._dbPath, Buffer.from(data));
|
|
324
|
+
this._lastSyncMs = fs.statSync(this._dbPath).mtimeMs;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Reload the database from disk, refreshing the in-memory state.
|
|
329
|
+
* Useful when another connection has modified the same file.
|
|
330
|
+
* No-op for in-memory databases.
|
|
331
|
+
*/
|
|
332
|
+
reload() {
|
|
333
|
+
if (!this._dbPath || !this._open)
|
|
334
|
+
return;
|
|
335
|
+
if (fs.existsSync(this._dbPath)) {
|
|
336
|
+
const buf = fs.readFileSync(this._dbPath);
|
|
337
|
+
this._db.close();
|
|
338
|
+
const SQL = getSqlJs();
|
|
339
|
+
this._db = new SQL.Database(buf);
|
|
340
|
+
this._lastSyncMs = fs.statSync(this._dbPath).mtimeMs;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Whether the database connection is open.
|
|
345
|
+
*/
|
|
346
|
+
get open() {
|
|
347
|
+
return this._open;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Access the underlying raw sql.js Database instance.
|
|
351
|
+
* Used for Drizzle ORM interop.
|
|
352
|
+
* @internal
|
|
353
|
+
*/
|
|
354
|
+
get rawDatabase() {
|
|
355
|
+
return this._db;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=sqlite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/lib/database/sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,7 +146,7 @@ export function getThemeNames(workspacePath, themeId) {
|
|
|
146
146
|
.where(eq(agentThemeNamesTable.themeId, themeId))
|
|
147
147
|
.orderBy(asc(agentThemeNamesTable.name))
|
|
148
148
|
.all();
|
|
149
|
-
return rows.map(row => ({
|
|
149
|
+
return rows.map((row) => ({
|
|
150
150
|
theme_id: row.themeId,
|
|
151
151
|
name: row.name,
|
|
152
152
|
}));
|
|
@@ -182,8 +182,8 @@ export function getAvailableThemeNames(workspacePath, themeId) {
|
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
return names
|
|
185
|
-
.map(n => n.name)
|
|
186
|
-
.filter(name => !inUseNames.has(name.toLowerCase()));
|
|
185
|
+
.map((n) => n.name)
|
|
186
|
+
.filter((name) => !inUseNames.has(name.toLowerCase()));
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
189
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../src/lib/database/themes.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../../src/lib/database/themes.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core database lifecycle: open, create, get config, path resolution.
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import { SqliteDatabase } from './sqlite.js';
|
|
7
7
|
import { type DrizzleDB } from './drizzle.js';
|
|
8
8
|
import type { DatabaseDriver } from './driver.js';
|
|
9
9
|
export interface WorkspaceConfig {
|
|
@@ -18,7 +18,7 @@ export interface WorkspaceConfig {
|
|
|
18
18
|
* Open the workspace database, wrap it with Drizzle, run a function,
|
|
19
19
|
* and close the connection. Handles the open/close lifecycle.
|
|
20
20
|
*/
|
|
21
|
-
export declare function withDrizzle<T>(workspacePath: string, fn: (ddb: DrizzleDB, sqliteDb:
|
|
21
|
+
export declare function withDrizzle<T>(workspacePath: string, fn: (ddb: DrizzleDB, sqliteDb: SqliteDatabase) => T): T;
|
|
22
22
|
/**
|
|
23
23
|
* Get the database path for a workspace
|
|
24
24
|
*/
|
|
@@ -37,7 +37,7 @@ export declare function getConfigPath(workspacePath: string): string;
|
|
|
37
37
|
*/
|
|
38
38
|
export declare function openWorkspaceDatabase(workspacePath: string, options?: {
|
|
39
39
|
readonly?: boolean;
|
|
40
|
-
}):
|
|
40
|
+
}): SqliteDatabase;
|
|
41
41
|
/**
|
|
42
42
|
* Open workspace database and return a DatabaseDriver.
|
|
43
43
|
* Preferred over openWorkspaceDatabase for new code.
|
|
@@ -46,7 +46,7 @@ export declare function openWorkspaceDriver(workspacePath: string): DatabaseDriv
|
|
|
46
46
|
/**
|
|
47
47
|
* Create and initialize workspace database
|
|
48
48
|
*/
|
|
49
|
-
export declare function createWorkspaceDatabase(workspacePath: string, type: 'hq' | 'workspace', workspaceName: string, hasPMO?: boolean):
|
|
49
|
+
export declare function createWorkspaceDatabase(workspacePath: string, type: 'hq' | 'workspace', workspaceName: string, hasPMO?: boolean): SqliteDatabase;
|
|
50
50
|
/**
|
|
51
51
|
* Get workspace configuration
|
|
52
52
|
*/
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Core database lifecycle: open, create, get config, path resolution.
|
|
5
5
|
*/
|
|
6
|
-
import
|
|
6
|
+
import { SqliteDatabase } from './sqlite.js';
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { isEphemeralAgentName } from '../themes.js';
|
|
10
10
|
import { isReadOnlyHQMount } from '../container.js';
|
|
11
|
-
import { throwIfNativeBindingError } from './native-validation.js';
|
|
12
11
|
import { runDrizzleMigrations } from './migrator.js';
|
|
13
12
|
import { ALL_MIGRATIONS } from './migrations/index.js';
|
|
14
13
|
import { createDrizzleConnection } from './drizzle.js';
|
|
@@ -92,14 +91,7 @@ export function openWorkspaceDatabase(workspacePath, options) {
|
|
|
92
91
|
// Auto-backup before opening (cheap insurance against corruption)
|
|
93
92
|
createRotatingBackup(dbPath);
|
|
94
93
|
}
|
|
95
|
-
let db;
|
|
96
|
-
try {
|
|
97
|
-
db = new Database(dbPath, readOnly ? { readonly: true } : undefined);
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
throwIfNativeBindingError(error, 'openWorkspaceDatabase');
|
|
101
|
-
throw error;
|
|
102
|
-
}
|
|
94
|
+
let db = new SqliteDatabase(dbPath, readOnly ? { readonly: true } : undefined);
|
|
103
95
|
if (!readOnly) {
|
|
104
96
|
// Enable WAL mode — allows concurrent readers with one writer,
|
|
105
97
|
// significantly more resistant to corruption than journal_mode=delete
|
|
@@ -121,13 +113,7 @@ export function openWorkspaceDatabase(workspacePath, options) {
|
|
|
121
113
|
`Run 'prlt db repair' for manual recovery options.`);
|
|
122
114
|
}
|
|
123
115
|
// Re-open the repaired database
|
|
124
|
-
|
|
125
|
-
db = new Database(dbPath);
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
throwIfNativeBindingError(error, 'openWorkspaceDatabase (post-repair)');
|
|
129
|
-
throw error;
|
|
130
|
-
}
|
|
116
|
+
db = new SqliteDatabase(dbPath);
|
|
131
117
|
enableWALMode(db);
|
|
132
118
|
db.pragma('foreign_keys = ON');
|
|
133
119
|
db.pragma('busy_timeout = 5000');
|
|
@@ -160,14 +146,7 @@ export function createWorkspaceDatabase(workspacePath, type, workspaceName, hasP
|
|
|
160
146
|
schemaVersion: 1
|
|
161
147
|
};
|
|
162
148
|
fs.writeFileSync(configPath, JSON.stringify(bootstrapConfig, null, 2));
|
|
163
|
-
|
|
164
|
-
try {
|
|
165
|
-
db = new Database(dbPath);
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
throwIfNativeBindingError(error, 'createWorkspaceDatabase');
|
|
169
|
-
throw error;
|
|
170
|
-
}
|
|
149
|
+
const db = new SqliteDatabase(dbPath);
|
|
171
150
|
enableWALMode(db);
|
|
172
151
|
db.pragma('foreign_keys = ON');
|
|
173
152
|
runDrizzleMigrations(db, ALL_MIGRATIONS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/database/workspace.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/lib/database/workspace.ts"],"names":[],"mappings":"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"}
|