@bassfish/cli 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.
Files changed (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/dist/api.d.ts +365 -0
  4. package/dist/api.js +113 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +217 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config.d.ts +20 -0
  10. package/dist/config.js +68 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/daemon.d.ts +4 -0
  13. package/dist/daemon.js +220 -0
  14. package/dist/daemon.js.map +1 -0
  15. package/dist/domain.d.ts +393 -0
  16. package/dist/domain.js +75 -0
  17. package/dist/domain.js.map +1 -0
  18. package/dist/export.d.ts +7 -0
  19. package/dist/export.js +37 -0
  20. package/dist/export.js.map +1 -0
  21. package/dist/ipc.d.ts +14 -0
  22. package/dist/ipc.js +125 -0
  23. package/dist/ipc.js.map +1 -0
  24. package/dist/lock.d.ts +2 -0
  25. package/dist/lock.js +18 -0
  26. package/dist/lock.js.map +1 -0
  27. package/dist/mcp.d.ts +16 -0
  28. package/dist/mcp.js +200 -0
  29. package/dist/mcp.js.map +1 -0
  30. package/dist/note-cli.d.ts +28 -0
  31. package/dist/note-cli.js +204 -0
  32. package/dist/note-cli.js.map +1 -0
  33. package/dist/note.d.ts +12 -0
  34. package/dist/note.js +181 -0
  35. package/dist/note.js.map +1 -0
  36. package/dist/repository.d.ts +1 -0
  37. package/dist/repository.js +21 -0
  38. package/dist/repository.js.map +1 -0
  39. package/dist/runtime.d.ts +12 -0
  40. package/dist/runtime.js +32 -0
  41. package/dist/runtime.js.map +1 -0
  42. package/dist/service.d.ts +106 -0
  43. package/dist/service.js +1185 -0
  44. package/dist/service.js.map +1 -0
  45. package/dist/setup.d.ts +21 -0
  46. package/dist/setup.js +108 -0
  47. package/dist/setup.js.map +1 -0
  48. package/dist/sql-worker.d.ts +6 -0
  49. package/dist/sql-worker.js +76 -0
  50. package/dist/sql-worker.js.map +1 -0
  51. package/dist/storage/control.d.ts +10 -0
  52. package/dist/storage/control.js +160 -0
  53. package/dist/storage/control.js.map +1 -0
  54. package/dist/storage/dolt.d.ts +32 -0
  55. package/dist/storage/dolt.js +494 -0
  56. package/dist/storage/dolt.js.map +1 -0
  57. package/dist/storage/search.d.ts +22 -0
  58. package/dist/storage/search.js +75 -0
  59. package/dist/storage/search.js.map +1 -0
  60. package/dist/supervisor.d.ts +11 -0
  61. package/dist/supervisor.js +97 -0
  62. package/dist/supervisor.js.map +1 -0
  63. package/dist/tasks.d.ts +52 -0
  64. package/dist/tasks.js +33 -0
  65. package/dist/tasks.js.map +1 -0
  66. package/dist/thread-cli.d.ts +2 -0
  67. package/dist/thread-cli.js +64 -0
  68. package/dist/thread-cli.js.map +1 -0
  69. package/package.json +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/cli.js ADDED
@@ -0,0 +1,217 @@
1
+ #!/usr/bin/env node
2
+ import { resolve } from 'node:path';
3
+ import { access, rename } from 'node:fs/promises';
4
+ import { BassfishError, requireThat } from './domain.js';
5
+ import { dataDirectory, defaultRuntimeConfig, doltBinary, loadRuntimeConfig, packageVersion, runtimeConfigSchema, saveRuntimeConfig } from './config.js';
6
+ import { connectDaemon, ensureDaemon, runDaemon } from './daemon.js';
7
+ import { runSqlWorker } from './sql-worker.js';
8
+ import { runMcp } from './mcp.js';
9
+ import { runNoteCli } from './note-cli.js';
10
+ import { runThreadCli } from './thread-cli.js';
11
+ import { setupDolt } from './setup.js';
12
+ import { requireDolt } from './supervisor.js';
13
+ const help = `Bassfish — repo-local agent communication
14
+
15
+ bassfish mcp [--workspace PATH] [--name NAME] Agent-facing stdio MCP server
16
+ bassfish setup Install checksum-verified Dolt
17
+ bassfish --version Print the installed version
18
+ bassfish daemon start|status|stop|run Shared per-user backend
19
+ bassfish config show|reset
20
+ bassfish config set KEY MILLISECONDS Validate config; applies after restart
21
+ bassfish data reset --yes Move preview data to a timestamped backup
22
+ bassfish doctor Current state and recovery diagnostics
23
+ bassfish floor list List current floor/control metadata
24
+ bassfish floor release FLOOR_ID --force Revoke HELD, never COMMITTING
25
+ bassfish thread list [--archived|--deleted] [--limit N] [--cursor C] [--creator ID] [--title-prefix TEXT]
26
+ bassfish thread create TITLE [--description TEXT]
27
+ bassfish thread get THREAD_ID Thread metadata without a floor
28
+ bassfish thread show THREAD_ID Acquire once, read messages, then release
29
+ bassfish thread search QUERY [--archived|--deleted] [--limit N]
30
+ bassfish thread describe THREAD_ID (--description TEXT | --clear)
31
+ bassfish thread delete THREAD_ID
32
+ bassfish note list [--archived|--deleted] [filters]
33
+ bassfish note create PATH --title TITLE (--file PATH|-|--editor)
34
+ bassfish note show NOTE_ID [--json]
35
+ bassfish note edit|append|prepend|patch NOTE_ID (--file PATH|-|--editor)
36
+ bassfish note move|metadata|links|replace-text|section NOTE_ID [options]
37
+ bassfish note archive|delete|activate|history NOTE_ID
38
+ bassfish note restore NOTE_ID REVISION --yes
39
+
40
+ Human CLI commands use the same floor checks as MCP. A busy show cancels its
41
+ ticket and reports FLOOR_BUSY; it never retries. Agents should use MCP.
42
+ Environment: BASSFISH_DATA_DIR, BASSFISH_DOLT_BIN (Dolt 2.3.2).
43
+ `;
44
+ function flag(args, name) {
45
+ const index = args.indexOf(name);
46
+ if (index < 0)
47
+ return undefined;
48
+ const value = args[index + 1];
49
+ requireThat(value && !value.startsWith('--'), 'INVALID_ARGUMENT', `${name} requires a value.`);
50
+ args.splice(index, 2);
51
+ return value;
52
+ }
53
+ async function main() {
54
+ const args = process.argv.slice(2);
55
+ const command = args.shift();
56
+ if (!command || command === '--help' || command === 'help') {
57
+ process.stdout.write(help);
58
+ return;
59
+ }
60
+ if (command === '--version' || command === 'version') {
61
+ requireThat(args.length === 0, 'INVALID_ARGUMENT', 'Version takes no arguments.');
62
+ process.stdout.write(`${packageVersion}\n`);
63
+ return;
64
+ }
65
+ const data = dataDirectory(), binary = doltBinary(data);
66
+ if (command === 'setup') {
67
+ requireThat(args.length === 0, 'INVALID_ARGUMENT', 'Setup takes no arguments.');
68
+ process.stdout.write(JSON.stringify(await setupDolt(data), null, 2) + '\n');
69
+ return;
70
+ }
71
+ if (command === 'sql-worker') {
72
+ requireThat(args.length === 2, 'INVALID_ARGUMENT', 'Internal SQL worker arguments missing.');
73
+ await runSqlWorker(args[0], args[1]);
74
+ return;
75
+ }
76
+ if (command === 'daemon' && args[0] === 'run') {
77
+ await runDaemon(data, binary);
78
+ return;
79
+ }
80
+ if (command === 'config') {
81
+ const action = args.shift();
82
+ if (action === 'show' && args.length === 0) {
83
+ process.stdout.write(JSON.stringify(await loadRuntimeConfig(data), null, 2) + '\n');
84
+ return;
85
+ }
86
+ if (action === 'reset' && args.length === 0) {
87
+ await saveRuntimeConfig(data, defaultRuntimeConfig);
88
+ process.stdout.write(JSON.stringify(defaultRuntimeConfig, null, 2) + '\n');
89
+ return;
90
+ }
91
+ if (action === 'set' && args.length === 2) {
92
+ const [key, raw] = args;
93
+ requireThat(Object.hasOwn(defaultRuntimeConfig, key), 'INVALID_ARGUMENT', 'Unknown configuration key.');
94
+ requireThat(/^[0-9]+$/.test(raw), 'INVALID_ARGUMENT', 'Configuration values are integer milliseconds.');
95
+ const next = runtimeConfigSchema.parse({ ...await loadRuntimeConfig(data), [key]: Number(raw) });
96
+ await saveRuntimeConfig(data, next);
97
+ process.stdout.write(JSON.stringify(next, null, 2) + '\n');
98
+ return;
99
+ }
100
+ throw new BassfishError('INVALID_ARGUMENT', 'Use config show, config reset, or config set KEY MILLISECONDS.');
101
+ }
102
+ if (command === 'data') {
103
+ requireThat(args.length === 2 && args[0] === 'reset' && args[1] === '--yes', 'INVALID_ARGUMENT', 'Use data reset --yes.');
104
+ let live = false;
105
+ let probe;
106
+ try {
107
+ probe = await connectDaemon(data);
108
+ await probe.call('getHealth');
109
+ live = true;
110
+ }
111
+ catch { }
112
+ finally {
113
+ probe?.close();
114
+ }
115
+ requireThat(!live, 'DAEMON_RUNNING', 'Stop the Bassfish daemon before resetting preview data.');
116
+ try {
117
+ await access(data);
118
+ }
119
+ catch {
120
+ process.stdout.write(JSON.stringify({ reset: false, reason: 'no_data' }) + '\n');
121
+ return;
122
+ }
123
+ const stamp = new Date().toISOString().replaceAll(':', '-');
124
+ const backup = `${data}.backup-${stamp}`;
125
+ await rename(data, backup);
126
+ process.stdout.write(JSON.stringify({ reset: true, backup }, null, 2) + '\n');
127
+ return;
128
+ }
129
+ const workspace = resolve(flag(args, '--workspace') ?? process.cwd());
130
+ const name = flag(args, '--name');
131
+ if (command === 'mcp') {
132
+ requireThat(args.length === 0, 'INVALID_ARGUMENT', 'Unknown MCP argument.');
133
+ await runMcp(workspace, data, binary, name);
134
+ return;
135
+ }
136
+ const action = args.shift();
137
+ const valid = (command === 'daemon' && ['start', 'status', 'stop'].includes(action ?? '')) || command === 'doctor' ||
138
+ (command === 'floor' && ['list', 'release'].includes(action ?? '')) || (command === 'thread' && ['list', 'create', 'get', 'show', 'search', 'describe', 'delete'].includes(action ?? '')) ||
139
+ (command === 'note' && ['list', 'create', 'show', 'edit', 'append', 'prepend', 'patch', 'move', 'metadata', 'links', 'replace-text', 'section', 'archive', 'delete', 'activate', 'history', 'restore'].includes(action ?? ''));
140
+ requireThat(valid, 'INVALID_ARGUMENT', help);
141
+ if (command === 'doctor') {
142
+ requireThat(action === undefined && args.length === 0, 'INVALID_ARGUMENT', 'Doctor takes no arguments.');
143
+ let dolt;
144
+ try {
145
+ dolt = { state: 'ready', version: await requireDolt(binary), path: binary };
146
+ }
147
+ catch (error) {
148
+ dolt = { state: 'unavailable', path: binary, error: error instanceof Error ? error.message : String(error) };
149
+ }
150
+ let daemon = { state: 'stopped' };
151
+ let probe;
152
+ try {
153
+ probe = await connectDaemon(data);
154
+ daemon = await probe.call('getHealth');
155
+ }
156
+ catch { }
157
+ finally {
158
+ probe?.close();
159
+ }
160
+ const result = { version: packageVersion, node: process.versions.node, platform: `${process.platform}-${process.arch}`, dataDir: data, dolt, daemon };
161
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
162
+ if (dolt.state !== 'ready')
163
+ process.exitCode = 1;
164
+ return;
165
+ }
166
+ if (command !== 'floor' && !(command === 'daemon' && action !== 'start'))
167
+ await ensureDaemon(data, binary);
168
+ const client = await connectDaemon(data);
169
+ let opened = false;
170
+ let heartbeat;
171
+ try {
172
+ let result;
173
+ if (command === 'daemon')
174
+ result = await client.call(action === 'stop' ? 'stopDaemon' : 'getHealth');
175
+ else if (command === 'floor' && action === 'list')
176
+ result = await client.call('getHealth');
177
+ else if (command === 'floor') {
178
+ requireThat(args.length === 2 && args[1] === '--force', 'INVALID_ARGUMENT', 'Use floor release FLOOR_ID --force.');
179
+ result = await client.call('forceRelease', { floorId: args[0], force: true });
180
+ }
181
+ else {
182
+ await client.call('openSession', { workspace, name });
183
+ opened = true;
184
+ heartbeat = setInterval(() => { void client.call('heartbeatSession').catch(() => { }); }, 5000);
185
+ heartbeat.unref();
186
+ const call = (name, args = {}) => client.call('callTool', { name, args });
187
+ if (command === 'note') {
188
+ const output = await runNoteCli(action, args, call, data);
189
+ if (output.raw !== undefined) {
190
+ process.stdout.write(output.raw);
191
+ return;
192
+ }
193
+ result = output.value;
194
+ }
195
+ else if (command === 'thread')
196
+ result = await runThreadCli(action, args, call);
197
+ }
198
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
199
+ }
200
+ finally {
201
+ if (heartbeat)
202
+ clearInterval(heartbeat);
203
+ try {
204
+ if (opened && !client.socket.destroyed)
205
+ await client.call('closeSession');
206
+ }
207
+ finally {
208
+ client.close();
209
+ }
210
+ }
211
+ }
212
+ void main().catch(error => {
213
+ const code = error instanceof BassfishError ? error.code : error.code ?? 'STARTUP_ERROR';
214
+ process.stderr.write(`${code}: ${error instanceof Error ? error.message : 'Bassfish failed.'}\n`);
215
+ process.exitCode = 1;
216
+ });
217
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const runtimeConfigSchema: z.ZodObject<{
3
+ offerMs: z.ZodDefault<z.ZodNumber>;
4
+ leaseMs: z.ZodDefault<z.ZodNumber>;
5
+ reconnectMs: z.ZodDefault<z.ZodNumber>;
6
+ instanceMs: z.ZodDefault<z.ZodNumber>;
7
+ queueMs: z.ZodDefault<z.ZodNumber>;
8
+ retentionMs: z.ZodDefault<z.ZodNumber>;
9
+ waitMs: z.ZodDefault<z.ZodNumber>;
10
+ idleMs: z.ZodDefault<z.ZodNumber>;
11
+ }, z.core.$strict>;
12
+ export type RuntimeConfig = z.infer<typeof runtimeConfigSchema>;
13
+ export declare const defaultRuntimeConfig: RuntimeConfig;
14
+ export declare function loadRuntimeConfig(dataDir: string): Promise<RuntimeConfig>;
15
+ export declare function saveRuntimeConfig(dataDir: string, config: RuntimeConfig): Promise<void>;
16
+ export declare function dataDirectory(): string;
17
+ export declare const packageRoot: string;
18
+ export declare const packageVersion: string;
19
+ export declare function doltBinary(dataDir?: string): string;
20
+ export declare function socketPath(dataDir: string): string;
package/dist/config.js ADDED
@@ -0,0 +1,68 @@
1
+ import { homedir } from 'node:os';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { existsSync, readFileSync } from 'node:fs';
4
+ import { chmod, mkdir, readFile, rename, writeFile } from 'node:fs/promises';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { BassfishError } from './domain.js';
7
+ import { z } from 'zod';
8
+ import { managedDoltBinary } from './setup.js';
9
+ export const runtimeConfigSchema = z.object({
10
+ offerMs: z.number().int().min(5_000).max(300_000).default(30_000),
11
+ leaseMs: z.number().int().min(5_000).max(300_000).default(30_000),
12
+ reconnectMs: z.number().int().min(0).max(300_000).default(30_000),
13
+ instanceMs: z.number().int().min(5_000).max(300_000).default(20_000),
14
+ queueMs: z.number().int().min(60_000).max(86_400_000).default(3_600_000),
15
+ retentionMs: z.number().int().min(60_000).max(86_400_000).default(3_600_000),
16
+ waitMs: z.number().int().min(100).max(60_000).default(20_000),
17
+ idleMs: z.number().int().min(60_000).max(86_400_000).default(900_000),
18
+ }).strict();
19
+ export const defaultRuntimeConfig = runtimeConfigSchema.parse({});
20
+ export async function loadRuntimeConfig(dataDir) {
21
+ try {
22
+ return runtimeConfigSchema.parse(JSON.parse(await readFile(join(dataDir, 'config.json'), 'utf8')));
23
+ }
24
+ catch (error) {
25
+ if (error.code === 'ENOENT')
26
+ return defaultRuntimeConfig;
27
+ if (error instanceof z.ZodError || error instanceof SyntaxError)
28
+ throw new BassfishError('INVALID_CONFIG', 'Bassfish config.json is invalid or contains unknown keys.');
29
+ throw error;
30
+ }
31
+ }
32
+ export async function saveRuntimeConfig(dataDir, config) {
33
+ const valid = runtimeConfigSchema.parse(config);
34
+ await mkdir(dataDir, { recursive: true, mode: 0o700 });
35
+ const temporary = join(dataDir, `.config-${process.pid}.tmp`);
36
+ await writeFile(temporary, JSON.stringify(valid, null, 2) + '\n', { mode: 0o600 });
37
+ await rename(temporary, join(dataDir, 'config.json'));
38
+ await chmod(join(dataDir, 'config.json'), 0o600);
39
+ }
40
+ export function dataDirectory() {
41
+ if (process.env.BASSFISH_DATA_DIR)
42
+ return resolve(process.env.BASSFISH_DATA_DIR);
43
+ if (process.platform === 'darwin')
44
+ return join(homedir(), 'Library', 'Application Support', 'bassfish');
45
+ return join(process.env.XDG_DATA_HOME ?? join(homedir(), '.local', 'share'), 'bassfish');
46
+ }
47
+ export const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
48
+ export const packageVersion = String(JSON.parse(readFileSync(join(packageRoot, 'package.json'), 'utf8')).version);
49
+ export function doltBinary(dataDir = dataDirectory()) {
50
+ if (process.env.BASSFISH_DOLT_BIN)
51
+ return resolve(process.env.BASSFISH_DOLT_BIN);
52
+ const managed = managedDoltBinary(dataDir);
53
+ if (existsSync(managed))
54
+ return managed;
55
+ // Development checkouts created before `bassfish setup` used a repository-local tool.
56
+ const arch = process.arch === 'x64' ? 'amd64' : process.arch;
57
+ const legacy = join(packageRoot, '.tools', `dolt-${process.platform}-${arch}`, 'bin', 'dolt');
58
+ if (existsSync(legacy))
59
+ return legacy;
60
+ return 'dolt';
61
+ }
62
+ export function socketPath(dataDir) {
63
+ const path = join(dataDir, 'run', 'daemon.sock');
64
+ if (Buffer.byteLength(path) > 96)
65
+ throw new BassfishError('SOCKET_PATH_TOO_LONG', 'Choose a shorter BASSFISH_DATA_DIR (Unix socket path limit, including the longer SQL socket name).');
66
+ return path;
67
+ }
68
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { RpcClient } from './ipc.js';
2
+ export declare function runDaemon(dataDir: string, binary: string): Promise<void>;
3
+ export declare function connectDaemon(dataDir: string): Promise<RpcClient>;
4
+ export declare function ensureDaemon(dataDir: string, binary: string): Promise<void>;
package/dist/daemon.js ADDED
@@ -0,0 +1,220 @@
1
+ import { mkdir, chmod, lstat, unlink } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { spawn } from 'node:child_process';
4
+ import { setTimeout as delay } from 'node:timers/promises';
5
+ import { z } from 'zod';
6
+ import { BassfishError, requireThat } from './domain.js';
7
+ import { Bassfish } from './service.js';
8
+ import { SqliteControl } from './storage/control.js';
9
+ import { DoltContent } from './storage/dolt.js';
10
+ import { SystemClock } from './runtime.js';
11
+ import { resolveRepository } from './repository.js';
12
+ import { nameSchema } from './api.js';
13
+ import { exclusiveLock } from './lock.js';
14
+ import { listenRpc, RpcClient } from './ipc.js';
15
+ import { loadRuntimeConfig, socketPath, packageRoot } from './config.js';
16
+ import { entryArgs, requireDolt, startSql } from './supervisor.js';
17
+ import { NoteSearchIndex } from './storage/search.js';
18
+ const openSchema = z.object({ workspace: z.string().min(1), name: nameSchema.optional() }).strict();
19
+ const callSchema = z.object({ name: z.string(), args: z.unknown().default({}), taskCapable: z.boolean().default(false) }).strict();
20
+ const taskSchema = z.object({ taskId: z.string().min(1).max(200) }).strict();
21
+ const waitTaskSchema = z.object({ taskId: z.string().min(1).max(200), updatedAfter: z.number().int().nonnegative(), timeoutMs: z.number().int().min(0).max(20_000) }).strict();
22
+ const releaseSchema = z.object({ floorId: z.string().min(1), force: z.literal(true) }).strict();
23
+ function parse(schema, value) {
24
+ const result = schema.safeParse(value);
25
+ requireThat(result.success, 'INVALID_ARGUMENT', 'Invalid backend request.');
26
+ return result.data;
27
+ }
28
+ export async function runDaemon(dataDir, binary) {
29
+ process.umask(0o077);
30
+ const path = socketPath(dataDir);
31
+ await mkdir(join(dataDir, 'run'), { recursive: true, mode: 0o700 });
32
+ await chmod(dataDir, 0o700);
33
+ await chmod(join(dataDir, 'run'), 0o700);
34
+ const unlock = exclusiveLock(join(dataDir, 'run', 'daemon-owner.lock'));
35
+ let sql;
36
+ let control;
37
+ let content;
38
+ let search;
39
+ let rpc;
40
+ let timer;
41
+ let closing;
42
+ const stop = () => closing ??= (async () => {
43
+ if (timer)
44
+ clearInterval(timer);
45
+ // Accepted writes drain before either store is closed; process death uses recovery instead.
46
+ await rpc?.close();
47
+ search?.close();
48
+ await content?.close();
49
+ await sql?.close();
50
+ control?.close();
51
+ unlock();
52
+ })();
53
+ try {
54
+ const config = await loadRuntimeConfig(dataDir);
55
+ try {
56
+ const stale = await lstat(path);
57
+ requireThat(stale.isSocket(), 'UNSAFE_SOCKET_PATH', 'The daemon socket path contains a non-socket file.');
58
+ await unlink(path);
59
+ }
60
+ catch (error) {
61
+ if (error.code !== 'ENOENT')
62
+ throw error;
63
+ }
64
+ sql = await startSql(dataDir, binary);
65
+ void sql.ended.then(() => { if (!closing)
66
+ fatal(new Error('The SQL guardian exited unexpectedly.')); });
67
+ control = new SqliteControl(join(dataDir, 'control.sqlite'));
68
+ content = new DoltContent(sql.endpoint);
69
+ search = new NoteSearchIndex(join(dataDir, 'search.sqlite'));
70
+ const service = new Bassfish(control, content, new SystemClock(), { offerMs: config.offerMs, leaseMs: config.leaseMs, reconnectMs: config.reconnectMs,
71
+ instanceMs: config.instanceMs, queueMs: config.queueMs, retentionMs: config.retentionMs, waitMs: config.waitMs }, search, dataDir);
72
+ await service.initialize();
73
+ const sessions = new Map();
74
+ let lastActivity = Date.now();
75
+ const opening = new Set();
76
+ rpc = await listenRpc(path, async (method, params, signal, socket) => {
77
+ lastActivity = Date.now();
78
+ requireThat(!closing, 'DAEMON_STOPPING', 'The daemon is stopping.');
79
+ switch (method) {
80
+ case 'getHealth': return { apiVersion: 2, pid: process.pid, epoch: service.epoch, dataDir, state: sql?.alive() ? 'ready' : 'sqlUnavailable', control: service.inspect() };
81
+ case 'stopDaemon':
82
+ setTimeout(() => { void stop().catch(fatal); }, 25);
83
+ return { stopping: true };
84
+ case 'inspectDaemon': return service.inspect();
85
+ case 'forceRelease':
86
+ service.forceRelease(parse(releaseSchema, params).floorId);
87
+ return { released: true };
88
+ case 'openSession': {
89
+ requireThat(!sessions.has(socket) && !opening.has(socket), 'SESSION_EXISTS', 'One instance is allowed per adapter connection.');
90
+ const args = parse(openSchema, params);
91
+ opening.add(socket);
92
+ try {
93
+ const commonDir = await resolveRepository(args.workspace);
94
+ requireThat(!signal.aborted, 'CANCELLED', 'Session opening cancelled.');
95
+ const result = await service.open(commonDir, args.name);
96
+ if (socket.destroyed || signal.aborted) {
97
+ service.disconnect(result.agentHandle, false);
98
+ throw new BassfishError('CANCELLED', 'Adapter disconnected while opening.');
99
+ }
100
+ sessions.set(socket, result.agentHandle);
101
+ return result;
102
+ }
103
+ finally {
104
+ opening.delete(socket);
105
+ }
106
+ }
107
+ case 'closeSession': {
108
+ const handle = sessions.get(socket);
109
+ if (handle)
110
+ service.disconnect(handle);
111
+ sessions.delete(socket);
112
+ return { closed: true };
113
+ }
114
+ case 'heartbeatSession': {
115
+ const handle = sessions.get(socket);
116
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
117
+ service.heartbeat(handle);
118
+ return { alive: true };
119
+ }
120
+ case 'callTool': {
121
+ const handle = sessions.get(socket);
122
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
123
+ const args = parse(callSchema, params);
124
+ return service.call(handle, args.name, args.args, signal, { taskCapable: args.taskCapable });
125
+ }
126
+ case 'getTask': {
127
+ const handle = sessions.get(socket);
128
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
129
+ return service.getTask(handle, parse(taskSchema, params).taskId);
130
+ }
131
+ case 'peekTask': {
132
+ const handle = sessions.get(socket);
133
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
134
+ return service.getTask(handle, parse(taskSchema, params).taskId, false);
135
+ }
136
+ case 'cancelTask': {
137
+ const handle = sessions.get(socket);
138
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
139
+ return service.cancelTask(handle, parse(taskSchema, params).taskId);
140
+ }
141
+ case 'waitTask': {
142
+ const handle = sessions.get(socket);
143
+ requireThat(handle, 'SESSION_REQUIRED', 'Open an adapter instance first.');
144
+ const args = parse(waitTaskSchema, params);
145
+ return service.waitTask(handle, args.taskId, args.updatedAfter, args.timeoutMs, signal);
146
+ }
147
+ default: throw new BassfishError('UNKNOWN_METHOD', 'Unknown backend method.');
148
+ }
149
+ }, socket => { const handle = sessions.get(socket); if (handle)
150
+ service.disconnect(handle, false); sessions.delete(socket); });
151
+ await chmod(path, 0o600);
152
+ timer = setInterval(() => {
153
+ try {
154
+ service.sweep();
155
+ if (sessions.size === 0 && !service.hasPendingWork() && Date.now() - lastActivity >= config.idleMs)
156
+ void stop().catch(fatal);
157
+ }
158
+ catch (error) {
159
+ fatal(error);
160
+ }
161
+ }, 250);
162
+ process.once('SIGINT', () => { void stop().catch(fatal); });
163
+ process.once('SIGTERM', () => { void stop().catch(fatal); });
164
+ }
165
+ catch (error) {
166
+ await stop();
167
+ throw error;
168
+ }
169
+ }
170
+ function fatal(error) {
171
+ process.stderr.write(`Bassfish daemon stopped: ${error instanceof BassfishError ? error.code : 'INTERNAL_ERROR'}\n`);
172
+ process.exit(1); // The SQL guardian reaps its child when this pipe closes.
173
+ }
174
+ export async function connectDaemon(dataDir) {
175
+ return RpcClient.connect(socketPath(dataDir));
176
+ }
177
+ async function probe(dataDir) {
178
+ let client;
179
+ try {
180
+ client = await connectDaemon(dataDir);
181
+ const result = await client.call('getHealth');
182
+ requireThat(result.apiVersion === 2, 'API_VERSION', 'Incompatible daemon API.');
183
+ return true;
184
+ }
185
+ catch (error) {
186
+ if (['ENOENT', 'ECONNREFUSED'].includes(error.code ?? ''))
187
+ return false;
188
+ throw error;
189
+ }
190
+ finally {
191
+ client?.close();
192
+ }
193
+ }
194
+ export async function ensureDaemon(dataDir, binary) {
195
+ if (await probe(dataDir))
196
+ return;
197
+ await requireDolt(binary);
198
+ await mkdir(join(dataDir, 'run'), { recursive: true, mode: 0o700 });
199
+ const unlock = exclusiveLock(join(dataDir, 'run', 'startup.lock'), 10_000);
200
+ try {
201
+ if (await probe(dataDir))
202
+ return;
203
+ const child = spawn(process.execPath, entryArgs('daemon', 'run'), { cwd: packageRoot, detached: true, stdio: 'ignore',
204
+ env: { ...process.env, BASSFISH_DATA_DIR: dataDir, BASSFISH_DOLT_BIN: binary } });
205
+ let failed = false;
206
+ child.once('error', () => { failed = true; });
207
+ child.once('exit', () => { failed = true; });
208
+ child.unref();
209
+ const deadline = performance.now() + 30_000;
210
+ while (!(await probe(dataDir))) {
211
+ if (failed || performance.now() > deadline)
212
+ throw new BassfishError('DAEMON_START_FAILED', 'Daemon startup failed. Run bassfish daemon run in the foreground to inspect startup diagnostics.');
213
+ await delay(100);
214
+ }
215
+ }
216
+ finally {
217
+ unlock();
218
+ }
219
+ }
220
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}