memoryblock 0.1.2 → 0.1.3
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/LICENSE +2 -2
- package/README.md +5 -4
- package/dist/engine/cost-tracker.d.ts +1 -1
- package/dist/engine/cost-tracker.d.ts.map +1 -1
- package/dist/engine/gatekeeper.d.ts +1 -1
- package/dist/engine/gatekeeper.d.ts.map +1 -1
- package/dist/engine/gatekeeper.js +1 -1
- package/dist/engine/gatekeeper.js.map +1 -1
- package/dist/engine/memory.d.ts +1 -1
- package/dist/engine/memory.d.ts.map +1 -1
- package/dist/engine/memory.js +1 -1
- package/dist/engine/memory.js.map +1 -1
- package/dist/engine/monitor.d.ts +1 -1
- package/dist/engine/monitor.d.ts.map +1 -1
- package/dist/engine/monitor.js +1 -1
- package/dist/engine/monitor.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/utils/config.d.ts +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +1 -1
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +5 -23
- package/bin/mblk.js +0 -6
- package/dist/bin/mblk.d.ts +0 -3
- package/dist/bin/mblk.d.ts.map +0 -1
- package/dist/bin/mblk.js +0 -339
- package/dist/bin/mblk.js.map +0 -1
- package/dist/cli/commands/create.d.ts +0 -2
- package/dist/cli/commands/create.d.ts.map +0 -1
- package/dist/cli/commands/create.js +0 -48
- package/dist/cli/commands/create.js.map +0 -1
- package/dist/cli/commands/delete.d.ts +0 -5
- package/dist/cli/commands/delete.d.ts.map +0 -1
- package/dist/cli/commands/delete.js +0 -147
- package/dist/cli/commands/delete.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -9
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -209
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/permissions.d.ts +0 -13
- package/dist/cli/commands/permissions.d.ts.map +0 -1
- package/dist/cli/commands/permissions.js +0 -60
- package/dist/cli/commands/permissions.js.map +0 -1
- package/dist/cli/commands/plugin-settings.d.ts +0 -6
- package/dist/cli/commands/plugin-settings.d.ts.map +0 -1
- package/dist/cli/commands/plugin-settings.js +0 -118
- package/dist/cli/commands/plugin-settings.js.map +0 -1
- package/dist/cli/commands/plugins.d.ts +0 -3
- package/dist/cli/commands/plugins.d.ts.map +0 -1
- package/dist/cli/commands/plugins.js +0 -83
- package/dist/cli/commands/plugins.js.map +0 -1
- package/dist/cli/commands/reset.d.ts +0 -8
- package/dist/cli/commands/reset.d.ts.map +0 -1
- package/dist/cli/commands/reset.js +0 -96
- package/dist/cli/commands/reset.js.map +0 -1
- package/dist/cli/commands/server.d.ts +0 -25
- package/dist/cli/commands/server.d.ts.map +0 -1
- package/dist/cli/commands/server.js +0 -295
- package/dist/cli/commands/server.js.map +0 -1
- package/dist/cli/commands/service.d.ts +0 -18
- package/dist/cli/commands/service.d.ts.map +0 -1
- package/dist/cli/commands/service.js +0 -309
- package/dist/cli/commands/service.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -11
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -801
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -2
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -78
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/stop.d.ts +0 -9
- package/dist/cli/commands/stop.d.ts.map +0 -1
- package/dist/cli/commands/stop.js +0 -83
- package/dist/cli/commands/stop.js.map +0 -1
- package/dist/cli/commands/web.d.ts +0 -5
- package/dist/cli/commands/web.d.ts.map +0 -1
- package/dist/cli/commands/web.js +0 -63
- package/dist/cli/commands/web.js.map +0 -1
- package/dist/cli/constants.d.ts +0 -38
- package/dist/cli/constants.d.ts.map +0 -1
- package/dist/cli/constants.js +0 -80
- package/dist/cli/constants.js.map +0 -1
- package/dist/cli/logger.d.ts.map +0 -1
- package/dist/cli/logger.js.map +0 -1
- package/dist/schemas.d.ts +0 -544
- package/dist/schemas.d.ts.map +0 -1
- package/dist/schemas.js +0 -111
- package/dist/schemas.js.map +0 -1
- package/dist/types.d.ts +0 -188
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
- /package/dist/{cli → utils}/logger.d.ts +0 -0
- /package/dist/{cli → utils}/logger.js +0 -0
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { log } from '../logger.js';
|
|
2
|
-
import { loadGlobalConfig, resolveBlockPath } from '../../utils/config.js';
|
|
3
|
-
import { promises as fsp } from 'node:fs';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { createInterface } from 'node:readline';
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
import { FILE_TEMPLATES } from '../../engine/prompts.js';
|
|
8
|
-
/**
|
|
9
|
-
* mblk reset <block> — Light cleanup: reset memory, pulse, costs, session
|
|
10
|
-
* mblk reset <block> --hard — Full wipe: also deletes logs/ (with confirmation)
|
|
11
|
-
*/
|
|
12
|
-
export async function resetCommand(blockName, options) {
|
|
13
|
-
const globalConfig = await loadGlobalConfig();
|
|
14
|
-
const blockPath = resolveBlockPath(globalConfig, blockName);
|
|
15
|
-
// Verify block exists
|
|
16
|
-
try {
|
|
17
|
-
await fsp.access(blockPath);
|
|
18
|
-
}
|
|
19
|
-
catch {
|
|
20
|
-
throw new Error(`Block "${blockName}" not found at ${blockPath}`);
|
|
21
|
-
}
|
|
22
|
-
// --hard requires confirmation
|
|
23
|
-
if (options.hard) {
|
|
24
|
-
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
25
|
-
const answer = await new Promise((resolve) => {
|
|
26
|
-
rl.question(chalk.yellow(`\n⚠ --hard will wipe ALL data for "${blockName}" (logs, memory, session). Continue? (y/n): `), resolve);
|
|
27
|
-
});
|
|
28
|
-
rl.close();
|
|
29
|
-
if (answer.trim().toLowerCase() !== 'y') {
|
|
30
|
-
log.dim(' cancelled.');
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
log.dim(` resetting ${blockName}${options.hard ? ' (hard)' : ''}...`);
|
|
35
|
-
// Light reset: memory, pulse, costs, session, chat.json, and logs directory
|
|
36
|
-
const filesToReset = ['memory.md', 'pulse.json', 'costs.json', 'session.json', 'chat.json'];
|
|
37
|
-
for (const file of filesToReset) {
|
|
38
|
-
const filePath = join(blockPath, file);
|
|
39
|
-
try {
|
|
40
|
-
await fsp.access(filePath);
|
|
41
|
-
if (file === 'memory.md') {
|
|
42
|
-
await fsp.writeFile(filePath, FILE_TEMPLATES.MEMORY_MD, 'utf-8');
|
|
43
|
-
}
|
|
44
|
-
else if (file === 'pulse.json') {
|
|
45
|
-
await fsp.writeFile(filePath, JSON.stringify(FILE_TEMPLATES.PULSE_JSON, null, 4), 'utf-8');
|
|
46
|
-
}
|
|
47
|
-
else if (file === 'costs.json') {
|
|
48
|
-
await fsp.writeFile(filePath, JSON.stringify(FILE_TEMPLATES.COSTS_JSON, null, 4), 'utf-8');
|
|
49
|
-
}
|
|
50
|
-
else if (file === 'session.json' || file === 'chat.json') {
|
|
51
|
-
await fsp.unlink(filePath);
|
|
52
|
-
}
|
|
53
|
-
log.dim(` ✓ ${file}`);
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Skip if file doesn't exist
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Wipe logs continuously for both soft and hard resets
|
|
60
|
-
const logsDir = join(blockPath, 'logs');
|
|
61
|
-
try {
|
|
62
|
-
const files = await fsp.readdir(logsDir);
|
|
63
|
-
for (const file of files) {
|
|
64
|
-
await fsp.unlink(join(logsDir, file));
|
|
65
|
-
}
|
|
66
|
-
log.dim(` ✓ logs/ wiped (${files.length} files)`);
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
// Logs dir might not exist or be empty
|
|
70
|
-
}
|
|
71
|
-
// Hard reset: wipe monitor.md and monitor identity from config
|
|
72
|
-
if (options.hard) {
|
|
73
|
-
const monitorPath = join(blockPath, 'monitor.md');
|
|
74
|
-
try {
|
|
75
|
-
await fsp.writeFile(monitorPath, FILE_TEMPLATES.MONITOR_MD(blockName), 'utf-8');
|
|
76
|
-
log.dim(' ✓ monitor.md reset');
|
|
77
|
-
}
|
|
78
|
-
catch { /* ignore */ }
|
|
79
|
-
// Clear monitor identity from config
|
|
80
|
-
const configPath = join(blockPath, 'config.json');
|
|
81
|
-
try {
|
|
82
|
-
const raw = await fsp.readFile(configPath, 'utf-8');
|
|
83
|
-
const config = JSON.parse(raw);
|
|
84
|
-
delete config.monitorName;
|
|
85
|
-
delete config.monitorEmoji;
|
|
86
|
-
await fsp.writeFile(configPath, JSON.stringify(config, null, 4), 'utf-8');
|
|
87
|
-
log.dim(' ✓ monitor identity cleared');
|
|
88
|
-
}
|
|
89
|
-
catch { /* ignore */ }
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
log.dim(' ℹ monitor.md and identity preserved (use --hard to wipe)');
|
|
93
|
-
}
|
|
94
|
-
console.log(`\n${chalk.green(`✓ ${blockName} reset.`)}`);
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=reset.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/cli/commands/reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server lifecycle management.
|
|
3
|
-
* Manages the web/API server as a foreground or daemon process.
|
|
4
|
-
*/
|
|
5
|
-
export declare function serverStartCommand(options?: {
|
|
6
|
-
port?: string;
|
|
7
|
-
newToken?: boolean;
|
|
8
|
-
daemon?: boolean;
|
|
9
|
-
}): Promise<void>;
|
|
10
|
-
export declare function serverStopCommand(): Promise<void>;
|
|
11
|
-
export declare function serverStatusCommand(): Promise<void>;
|
|
12
|
-
export declare function serverTokenCommand(options?: {
|
|
13
|
-
newToken?: boolean;
|
|
14
|
-
}): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* mblk shutdown — stop all blocks AND the server in one shot.
|
|
17
|
-
*/
|
|
18
|
-
export declare function shutdownCommand(): Promise<void>;
|
|
19
|
-
/**
|
|
20
|
-
* mblk restart — shutdown then start server as daemon.
|
|
21
|
-
*/
|
|
22
|
-
export declare function restartCommand(options?: {
|
|
23
|
-
port?: string;
|
|
24
|
-
}): Promise<void>;
|
|
25
|
-
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"AAUA;;;GAGG;AAEH,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsHhB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6CvD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoBzD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBxF;AA4DD;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAerD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/E"}
|
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
import { isInitialized, getHome, } from '../../utils/config.js';
|
|
2
|
-
import { log } from '../logger.js';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
|
-
import { promises as fsp } from 'node:fs';
|
|
5
|
-
import { DEFAULT_PORT } from '../constants.js';
|
|
6
|
-
const API_PKG = '@memoryblock/api';
|
|
7
|
-
/**
|
|
8
|
-
* Server lifecycle management.
|
|
9
|
-
* Manages the web/API server as a foreground or daemon process.
|
|
10
|
-
*/
|
|
11
|
-
export async function serverStartCommand(options) {
|
|
12
|
-
if (!(await isInitialized())) {
|
|
13
|
-
log.error('Not initialized. Run `mblk init` first.');
|
|
14
|
-
process.exit(1);
|
|
15
|
-
}
|
|
16
|
-
const port = parseInt(options?.port || DEFAULT_PORT, 10);
|
|
17
|
-
// Check if server is already running (skip if stored PID is our own — we ARE the daemon child)
|
|
18
|
-
const existingPid = await readServerPid();
|
|
19
|
-
if (existingPid && existingPid !== process.pid && isProcessAlive(existingPid)) {
|
|
20
|
-
const existingPort = await readServerPort();
|
|
21
|
-
log.warn(`Server already running (PID ${existingPid}${existingPort ? `, port ${existingPort}` : ''}).`);
|
|
22
|
-
log.dim(' Use `mblk server stop` to stop it first.');
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
// Daemon mode — spawn detached and exit
|
|
26
|
-
if (options?.daemon) {
|
|
27
|
-
const { spawn } = await import('node:child_process');
|
|
28
|
-
const fs = await import('node:fs');
|
|
29
|
-
const scriptPath = process.argv[1];
|
|
30
|
-
// Redirect daemon output to a log file for debugging crashes
|
|
31
|
-
const logPath = join(getHome(), 'server.log');
|
|
32
|
-
const logFd = fs.openSync(logPath, 'a');
|
|
33
|
-
const child = spawn(process.execPath, [
|
|
34
|
-
scriptPath, 'server', 'start', '--port', port.toString(),
|
|
35
|
-
...(options?.newToken ? ['--new-token'] : []),
|
|
36
|
-
], {
|
|
37
|
-
detached: true,
|
|
38
|
-
stdio: ['ignore', logFd, logFd],
|
|
39
|
-
env: process.env,
|
|
40
|
-
cwd: process.cwd(),
|
|
41
|
-
});
|
|
42
|
-
child.unref();
|
|
43
|
-
fs.closeSync(logFd);
|
|
44
|
-
if (child.pid) {
|
|
45
|
-
await writeServerPid(child.pid);
|
|
46
|
-
await writeServerPort(port);
|
|
47
|
-
log.brand('server\n');
|
|
48
|
-
log.success(` Server started as daemon (PID ${child.pid}).`);
|
|
49
|
-
log.dim(` http://localhost:${port}`);
|
|
50
|
-
log.dim(' `mblk server stop` to shut down.\n');
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
log.error('Failed to spawn daemon process.');
|
|
54
|
-
process.exit(1);
|
|
55
|
-
}
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
// Foreground mode
|
|
59
|
-
let api;
|
|
60
|
-
try {
|
|
61
|
-
api = await import(API_PKG);
|
|
62
|
-
}
|
|
63
|
-
catch (err) {
|
|
64
|
-
log.error(`Failed to load API package: ${err.message}`);
|
|
65
|
-
process.exit(1);
|
|
66
|
-
}
|
|
67
|
-
const workspacePath = process.cwd();
|
|
68
|
-
const authToken = await api.generateAuthToken(workspacePath, options?.newToken);
|
|
69
|
-
// Write PID + port for status/stop
|
|
70
|
-
await writeServerPid(process.pid);
|
|
71
|
-
await writeServerPort(port);
|
|
72
|
-
log.brand('server\n');
|
|
73
|
-
log.dim(` http://localhost:${port}`);
|
|
74
|
-
log.dim(` token: ${authToken}`);
|
|
75
|
-
console.log('');
|
|
76
|
-
// Auto-install OS service hook quietly
|
|
77
|
-
import('./service.js').then(s => s.silentServiceInstall()).catch(() => { });
|
|
78
|
-
// Resolve web UI static files
|
|
79
|
-
let webRoot;
|
|
80
|
-
try {
|
|
81
|
-
const { createRequire } = await import('node:module');
|
|
82
|
-
const require = createRequire(import.meta.url);
|
|
83
|
-
const webPkg = require.resolve('@memoryblock/web/package.json');
|
|
84
|
-
const { dirname, join: pJoin } = await import('node:path');
|
|
85
|
-
webRoot = pJoin(dirname(webPkg), 'public');
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
log.warn('Web UI package not found. API-only mode.');
|
|
89
|
-
}
|
|
90
|
-
const server = new api.ApiServer({
|
|
91
|
-
port,
|
|
92
|
-
authToken,
|
|
93
|
-
workspacePath,
|
|
94
|
-
webRoot,
|
|
95
|
-
});
|
|
96
|
-
const shutdown = async () => {
|
|
97
|
-
log.system('server', 'shutting down...');
|
|
98
|
-
await server.stop();
|
|
99
|
-
await cleanupServerFiles();
|
|
100
|
-
process.exit(0);
|
|
101
|
-
};
|
|
102
|
-
process.on('SIGINT', shutdown);
|
|
103
|
-
process.on('SIGTERM', shutdown);
|
|
104
|
-
try {
|
|
105
|
-
await server.start();
|
|
106
|
-
log.dim(' server running. ctrl+c to stop.\n');
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
log.error(`Server failed: ${err.message}`);
|
|
110
|
-
await cleanupServerFiles();
|
|
111
|
-
process.exit(1);
|
|
112
|
-
}
|
|
113
|
-
// Keep alive
|
|
114
|
-
await new Promise(() => { });
|
|
115
|
-
}
|
|
116
|
-
export async function serverStopCommand() {
|
|
117
|
-
const pid = await readServerPid();
|
|
118
|
-
const port = await readServerPort();
|
|
119
|
-
if (!pid) {
|
|
120
|
-
// No PID file — try killing by port as a fallback
|
|
121
|
-
if (port) {
|
|
122
|
-
const killed = await killByPort(port);
|
|
123
|
-
if (killed) {
|
|
124
|
-
log.success(` Server on port ${port} stopped (via port lookup).`);
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
log.dim(' No server PID found. Server may not be running.');
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
// Last resort: try the default port
|
|
132
|
-
const defaultPort = parseInt(DEFAULT_PORT, 10);
|
|
133
|
-
const killed = await killByPort(defaultPort);
|
|
134
|
-
if (killed) {
|
|
135
|
-
log.success(` Server on port ${DEFAULT_PORT} stopped (via port lookup).`);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
log.dim(' No server PID found. Server may not be running.');
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
await cleanupServerFiles();
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
if (!isProcessAlive(pid)) {
|
|
145
|
-
log.dim(' Server process not found (stale PID). Cleaning up.');
|
|
146
|
-
await cleanupServerFiles();
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
try {
|
|
150
|
-
process.kill(pid, 'SIGTERM');
|
|
151
|
-
log.success(` Server stopped (PID ${pid}).`);
|
|
152
|
-
}
|
|
153
|
-
catch (err) {
|
|
154
|
-
if (err.code === 'ESRCH') {
|
|
155
|
-
log.dim(' Server process already gone. Cleaning up.');
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
log.error(`Failed to stop server: ${err.message}`);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
await cleanupServerFiles();
|
|
162
|
-
}
|
|
163
|
-
export async function serverStatusCommand() {
|
|
164
|
-
const pid = await readServerPid();
|
|
165
|
-
const port = await readServerPort();
|
|
166
|
-
log.brand('server status\n');
|
|
167
|
-
if (!pid) {
|
|
168
|
-
log.dim(' Status: not running');
|
|
169
|
-
return;
|
|
170
|
-
}
|
|
171
|
-
if (isProcessAlive(pid)) {
|
|
172
|
-
log.success(` Status: running`);
|
|
173
|
-
log.dim(` PID: ${pid}`);
|
|
174
|
-
if (port)
|
|
175
|
-
log.dim(` URL: http://localhost:${port}`);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
log.dim(' Status: not running (stale PID file)');
|
|
179
|
-
await cleanupServerFiles();
|
|
180
|
-
}
|
|
181
|
-
console.log('');
|
|
182
|
-
}
|
|
183
|
-
export async function serverTokenCommand(options) {
|
|
184
|
-
log.brand(options?.newToken ? 'server token (new)\n' : 'server token\n');
|
|
185
|
-
let api;
|
|
186
|
-
try {
|
|
187
|
-
api = await import(API_PKG);
|
|
188
|
-
}
|
|
189
|
-
catch (err) {
|
|
190
|
-
log.error(`Failed to load API package: ${err.message}`);
|
|
191
|
-
process.exit(1);
|
|
192
|
-
}
|
|
193
|
-
const workspacePath = process.cwd();
|
|
194
|
-
const token = await api.generateAuthToken(workspacePath, options?.newToken);
|
|
195
|
-
if (options?.newToken) {
|
|
196
|
-
log.success(` New token generated successfully.`);
|
|
197
|
-
}
|
|
198
|
-
log.dim(` token: ${token}\n`);
|
|
199
|
-
}
|
|
200
|
-
// ===== PID / Port Helpers =====
|
|
201
|
-
function pidPath() { return join(getHome(), 'server.pid'); }
|
|
202
|
-
function portPath() { return join(getHome(), 'server.port'); }
|
|
203
|
-
async function writeServerPid(pid) {
|
|
204
|
-
await fsp.mkdir(getHome(), { recursive: true });
|
|
205
|
-
await fsp.writeFile(pidPath(), pid.toString());
|
|
206
|
-
}
|
|
207
|
-
async function writeServerPort(port) {
|
|
208
|
-
await fsp.writeFile(portPath(), port.toString());
|
|
209
|
-
}
|
|
210
|
-
async function readServerPid() {
|
|
211
|
-
try {
|
|
212
|
-
const s = await fsp.readFile(pidPath(), 'utf-8');
|
|
213
|
-
const n = parseInt(s.trim(), 10);
|
|
214
|
-
return isNaN(n) ? null : n;
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
return null;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
async function readServerPort() {
|
|
221
|
-
try {
|
|
222
|
-
const s = await fsp.readFile(portPath(), 'utf-8');
|
|
223
|
-
const n = parseInt(s.trim(), 10);
|
|
224
|
-
return isNaN(n) ? null : n;
|
|
225
|
-
}
|
|
226
|
-
catch {
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
function isProcessAlive(pid) {
|
|
231
|
-
try {
|
|
232
|
-
process.kill(pid, 0); // Signal 0 checks existence
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
catch {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
async function cleanupServerFiles() {
|
|
240
|
-
await fsp.unlink(pidPath()).catch(() => { });
|
|
241
|
-
await fsp.unlink(portPath()).catch(() => { });
|
|
242
|
-
}
|
|
243
|
-
/** Kill process by port using lsof — fallback when PID file is missing. */
|
|
244
|
-
async function killByPort(port) {
|
|
245
|
-
try {
|
|
246
|
-
const { execSync } = await import('node:child_process');
|
|
247
|
-
const pids = execSync(`lsof -ti:${port}`, { stdio: 'pipe' })
|
|
248
|
-
.toString().trim().split('\n').filter(Boolean);
|
|
249
|
-
for (const p of pids) {
|
|
250
|
-
try {
|
|
251
|
-
process.kill(parseInt(p, 10), 'SIGTERM');
|
|
252
|
-
}
|
|
253
|
-
catch { /* already gone */ }
|
|
254
|
-
}
|
|
255
|
-
return pids.length > 0;
|
|
256
|
-
}
|
|
257
|
-
catch {
|
|
258
|
-
return false;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* mblk shutdown — stop all blocks AND the server in one shot.
|
|
263
|
-
*/
|
|
264
|
-
export async function shutdownCommand() {
|
|
265
|
-
log.brand('shutdown\n');
|
|
266
|
-
// 1. Stop all blocks
|
|
267
|
-
log.dim(' Stopping all blocks...');
|
|
268
|
-
try {
|
|
269
|
-
const { stopCommand } = await import('./stop.js');
|
|
270
|
-
await stopCommand(undefined, { preserveEnabled: true });
|
|
271
|
-
}
|
|
272
|
-
catch { /* ignore */ }
|
|
273
|
-
// 2. Stop the server
|
|
274
|
-
log.dim(' Stopping server...');
|
|
275
|
-
await serverStopCommand();
|
|
276
|
-
log.success('\n Everything shut down.');
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* mblk restart — shutdown then start server as daemon.
|
|
280
|
-
*/
|
|
281
|
-
export async function restartCommand(options) {
|
|
282
|
-
log.brand('restart\n');
|
|
283
|
-
// Shutdown first
|
|
284
|
-
await shutdownCommand();
|
|
285
|
-
// Small delay to let PID files clean up
|
|
286
|
-
await new Promise(resolve => setTimeout(resolve, 500));
|
|
287
|
-
// Start server as daemon
|
|
288
|
-
log.dim('\n Starting server...');
|
|
289
|
-
await serverStartCommand({ port: options?.port, daemon: true });
|
|
290
|
-
// Start all enabled blocks
|
|
291
|
-
log.dim('\n Starting enabled blocks...');
|
|
292
|
-
const { startAllEnabledBlocks } = await import('./start.js');
|
|
293
|
-
await startAllEnabledBlocks();
|
|
294
|
-
}
|
|
295
|
-
//# sourceMappingURL=server.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Install memoryblock as a system service (runs on login/boot).
|
|
3
|
-
*/
|
|
4
|
-
export declare function serviceInstallCommand(): Promise<void>;
|
|
5
|
-
/**
|
|
6
|
-
* Silently install the service in the background (used by start/server commands).
|
|
7
|
-
* Catches all errors so it never interrupts the user.
|
|
8
|
-
*/
|
|
9
|
-
export declare function silentServiceInstall(): Promise<void>;
|
|
10
|
-
/**
|
|
11
|
-
* Uninstall the system service.
|
|
12
|
-
*/
|
|
13
|
-
export declare function serviceUninstallCommand(): Promise<void>;
|
|
14
|
-
/**
|
|
15
|
-
* Show service status.
|
|
16
|
-
*/
|
|
17
|
-
export declare function serviceStatusCommand(): Promise<void>;
|
|
18
|
-
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service.ts"],"names":[],"mappings":"AAgHA;;GAEG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqD3D;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD1D;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwC1D"}
|