@portel/photon 1.9.0 → 1.10.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/README.md +163 -210
- package/dist/async/dedup-map.d.ts +40 -0
- package/dist/async/dedup-map.d.ts.map +1 -0
- package/dist/async/dedup-map.js +80 -0
- package/dist/async/dedup-map.js.map +1 -0
- package/dist/async/index.d.ts +11 -0
- package/dist/async/index.d.ts.map +1 -0
- package/dist/async/index.js +11 -0
- package/dist/async/index.js.map +1 -0
- package/dist/async/loading-gate.d.ts +27 -0
- package/dist/async/loading-gate.d.ts.map +1 -0
- package/dist/async/loading-gate.js +48 -0
- package/dist/async/loading-gate.js.map +1 -0
- package/dist/async/with-timeout.d.ts +6 -0
- package/dist/async/with-timeout.d.ts.map +1 -0
- package/dist/async/with-timeout.js +17 -0
- package/dist/async/with-timeout.js.map +1 -0
- package/dist/auto-ui/beam/class-metadata.d.ts +52 -0
- package/dist/auto-ui/beam/class-metadata.d.ts.map +1 -0
- package/dist/auto-ui/beam/class-metadata.js +133 -0
- package/dist/auto-ui/beam/class-metadata.js.map +1 -0
- package/dist/auto-ui/beam/config.d.ts +13 -0
- package/dist/auto-ui/beam/config.d.ts.map +1 -0
- package/dist/auto-ui/beam/config.js +52 -0
- package/dist/auto-ui/beam/config.js.map +1 -0
- package/dist/auto-ui/beam/external-mcp.d.ts +37 -0
- package/dist/auto-ui/beam/external-mcp.d.ts.map +1 -0
- package/dist/auto-ui/beam/external-mcp.js +311 -0
- package/dist/auto-ui/beam/external-mcp.js.map +1 -0
- package/dist/auto-ui/beam/photon-management.d.ts +51 -0
- package/dist/auto-ui/beam/photon-management.d.ts.map +1 -0
- package/dist/auto-ui/beam/photon-management.js +310 -0
- package/dist/auto-ui/beam/photon-management.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-browse.d.ts +17 -0
- package/dist/auto-ui/beam/routes/api-browse.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-browse.js +531 -0
- package/dist/auto-ui/beam/routes/api-browse.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-config.d.ts +9 -0
- package/dist/auto-ui/beam/routes/api-config.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-config.js +494 -0
- package/dist/auto-ui/beam/routes/api-config.js.map +1 -0
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts +8 -0
- package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -0
- package/dist/auto-ui/beam/routes/api-marketplace.js +490 -0
- package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -0
- package/dist/auto-ui/beam/startup.d.ts +41 -0
- package/dist/auto-ui/beam/startup.d.ts.map +1 -0
- package/dist/auto-ui/beam/startup.js +98 -0
- package/dist/auto-ui/beam/startup.js.map +1 -0
- package/dist/auto-ui/beam/subscription.d.ts +35 -0
- package/dist/auto-ui/beam/subscription.d.ts.map +1 -0
- package/dist/auto-ui/beam/subscription.js +151 -0
- package/dist/auto-ui/beam/subscription.js.map +1 -0
- package/dist/auto-ui/beam/types.d.ts +103 -0
- package/dist/auto-ui/beam/types.d.ts.map +1 -0
- package/dist/auto-ui/beam/types.js +8 -0
- package/dist/auto-ui/beam/types.js.map +1 -0
- package/dist/auto-ui/beam.d.ts +2 -0
- package/dist/auto-ui/beam.d.ts.map +1 -1
- package/dist/auto-ui/beam.js +729 -2596
- package/dist/auto-ui/beam.js.map +1 -1
- package/dist/auto-ui/bridge/index.d.ts.map +1 -1
- package/dist/auto-ui/bridge/index.js +10 -2
- package/dist/auto-ui/bridge/index.js.map +1 -1
- package/dist/auto-ui/components/card.d.ts.map +1 -1
- package/dist/auto-ui/components/card.js +3 -1
- package/dist/auto-ui/components/card.js.map +1 -1
- package/dist/auto-ui/components/progress.d.ts.map +1 -1
- package/dist/auto-ui/components/progress.js.map +1 -1
- package/dist/auto-ui/daemon-tools.d.ts +1 -1
- package/dist/auto-ui/daemon-tools.d.ts.map +1 -1
- package/dist/auto-ui/daemon-tools.js +4 -3
- package/dist/auto-ui/daemon-tools.js.map +1 -1
- package/dist/auto-ui/photon-bridge.d.ts +6 -2
- package/dist/auto-ui/photon-bridge.d.ts.map +1 -1
- package/dist/auto-ui/photon-bridge.js +20 -8
- package/dist/auto-ui/photon-bridge.js.map +1 -1
- package/dist/auto-ui/platform-compat.d.ts.map +1 -1
- package/dist/auto-ui/platform-compat.js +4 -0
- package/dist/auto-ui/platform-compat.js.map +1 -1
- package/dist/auto-ui/streamable-http-transport.d.ts +4 -2
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
- package/dist/auto-ui/streamable-http-transport.js +120 -30
- package/dist/auto-ui/streamable-http-transport.js.map +1 -1
- package/dist/auto-ui/types.d.ts +4 -2
- package/dist/auto-ui/types.d.ts.map +1 -1
- package/dist/auto-ui/types.js.map +1 -1
- package/dist/beam.bundle.js +8225 -3999
- package/dist/beam.bundle.js.map +4 -4
- package/dist/cli/commands/alias.d.ts +14 -0
- package/dist/cli/commands/alias.d.ts.map +1 -0
- package/dist/cli/commands/alias.js +41 -0
- package/dist/cli/commands/alias.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +9 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +377 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/beam.d.ts +20 -0
- package/dist/cli/commands/beam.d.ts.map +1 -0
- package/dist/cli/commands/beam.js +256 -0
- package/dist/cli/commands/beam.js.map +1 -0
- package/dist/cli/commands/config.d.ts +14 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +165 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +11 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +108 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +14 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +257 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/host.d.ts +11 -0
- package/dist/cli/commands/host.d.ts.map +1 -0
- package/dist/cli/commands/host.js +96 -0
- package/dist/cli/commands/host.js.map +1 -0
- package/dist/cli/commands/info.d.ts +1 -1
- package/dist/cli/commands/info.d.ts.map +1 -1
- package/dist/cli/commands/info.js +16 -15
- package/dist/cli/commands/info.js.map +1 -1
- package/dist/cli/commands/init.d.ts +20 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +774 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/maker.d.ts +12 -0
- package/dist/cli/commands/maker.d.ts.map +1 -0
- package/dist/cli/commands/maker.js +605 -0
- package/dist/cli/commands/maker.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +27 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +390 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/package-app.d.ts +1 -1
- package/dist/cli/commands/package-app.d.ts.map +1 -1
- package/dist/cli/commands/package-app.js +5 -4
- package/dist/cli/commands/package-app.js.map +1 -1
- package/dist/cli/commands/package.d.ts +1 -1
- package/dist/cli/commands/package.d.ts.map +1 -1
- package/dist/cli/commands/package.js +134 -32
- package/dist/cli/commands/package.js.map +1 -1
- package/dist/cli/commands/run.d.ts +34 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +334 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/search.d.ts +11 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +60 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +11 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +138 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/test.d.ts +14 -0
- package/dist/cli/commands/test.d.ts.map +1 -0
- package/dist/cli/commands/test.js +51 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/update.d.ts +11 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +72 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +139 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli-alias.js +2 -2
- package/dist/cli-alias.js.map +1 -1
- package/dist/cli.d.ts +3 -16
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -2725
- package/dist/cli.js.map +1 -1
- package/dist/context-store.d.ts +13 -12
- package/dist/context-store.d.ts.map +1 -1
- package/dist/context-store.js +47 -23
- package/dist/context-store.js.map +1 -1
- package/dist/context.d.ts +35 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +38 -0
- package/dist/context.js.map +1 -0
- package/dist/daemon/client.d.ts +25 -13
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +183 -135
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +58 -26
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +348 -157
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/protocol.d.ts +9 -3
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js +2 -0
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/server.js +850 -200
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-manager.d.ts +16 -2
- package/dist/daemon/session-manager.d.ts.map +1 -1
- package/dist/daemon/session-manager.js +65 -7
- package/dist/daemon/session-manager.js.map +1 -1
- package/dist/daemon/state-machine.d.ts +22 -0
- package/dist/daemon/state-machine.d.ts.map +1 -0
- package/dist/daemon/state-machine.js +48 -0
- package/dist/daemon/state-machine.js.map +1 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -1
- package/dist/deploy/cloudflare.js +5 -5
- package/dist/deploy/cloudflare.js.map +1 -1
- package/dist/loader.d.ts +65 -7
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +587 -63
- package/dist/loader.js.map +1 -1
- package/dist/marketplace-manager.d.ts +84 -12
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +470 -26
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/path-resolver.d.ts +3 -1
- package/dist/path-resolver.d.ts.map +1 -1
- package/dist/path-resolver.js +4 -3
- package/dist/path-resolver.js.map +1 -1
- package/dist/photon-cli-runner.d.ts +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +34 -44
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.d.ts +1 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -1
- package/dist/photon-doc-extractor.js +33 -12
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/photons/maker.photon.d.ts.map +1 -1
- package/dist/photons/maker.photon.js +4 -4
- package/dist/photons/maker.photon.js.map +1 -1
- package/dist/photons/maker.photon.ts +4 -3
- package/dist/photons/marketplace.photon.d.ts.map +1 -1
- package/dist/photons/marketplace.photon.js +10 -27
- package/dist/photons/marketplace.photon.js.map +1 -1
- package/dist/photons/marketplace.photon.ts +14 -33
- package/dist/photons/tunnel.photon.d.ts.map +1 -1
- package/dist/photons/tunnel.photon.js +4 -8
- package/dist/photons/tunnel.photon.js.map +1 -1
- package/dist/photons/tunnel.photon.ts +4 -7
- package/dist/serv/session/kv-store.d.ts +1 -1
- package/dist/serv/session/kv-store.d.ts.map +1 -1
- package/dist/serv/session/store.d.ts.map +1 -1
- package/dist/serv/session/store.js +16 -14
- package/dist/serv/session/store.js.map +1 -1
- package/dist/serv/vault/token-vault.js +1 -1
- package/dist/serv/vault/token-vault.js.map +1 -1
- package/dist/server.d.ts +34 -12
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +364 -313
- package/dist/server.js.map +1 -1
- package/dist/shared/audit.d.ts +30 -0
- package/dist/shared/audit.d.ts.map +1 -0
- package/dist/shared/audit.js +89 -0
- package/dist/shared/audit.js.map +1 -0
- package/dist/shared/cli-sections.d.ts +0 -4
- package/dist/shared/cli-sections.d.ts.map +1 -1
- package/dist/shared/cli-sections.js +0 -6
- package/dist/shared/cli-sections.js.map +1 -1
- package/dist/shared/cli-utils.d.ts +2 -56
- package/dist/shared/cli-utils.d.ts.map +1 -1
- package/dist/shared/cli-utils.js +1 -87
- package/dist/shared/cli-utils.js.map +1 -1
- package/dist/shared/error-handler.d.ts +6 -72
- package/dist/shared/error-handler.d.ts.map +1 -1
- package/dist/shared/error-handler.js +22 -213
- package/dist/shared/error-handler.js.map +1 -1
- package/dist/shared/security.d.ts +0 -9
- package/dist/shared/security.d.ts.map +1 -1
- package/dist/shared/security.js +0 -30
- package/dist/shared/security.js.map +1 -1
- package/dist/shared-utils.d.ts +0 -26
- package/dist/shared-utils.d.ts.map +1 -1
- package/dist/shared-utils.js +0 -44
- package/dist/shared-utils.js.map +1 -1
- package/dist/shell-completions.d.ts +1 -1
- package/dist/shell-completions.d.ts.map +1 -1
- package/dist/shell-completions.js +5 -5
- package/dist/shell-completions.js.map +1 -1
- package/dist/template-manager.d.ts.map +1 -1
- package/dist/template-manager.js +14 -1
- package/dist/template-manager.js.map +1 -1
- package/dist/test-runner.d.ts +0 -12
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +4 -39
- package/dist/test-runner.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +2 -2
- package/dist/testing.js.map +1 -1
- package/dist/version-checker.d.ts +4 -4
- package/dist/version-checker.d.ts.map +1 -1
- package/dist/version-checker.js +33 -4
- package/dist/version-checker.js.map +1 -1
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +14 -12
- package/dist/watcher.js.map +1 -1
- package/package.json +24 -17
package/dist/daemon/manager.js
CHANGED
|
@@ -1,200 +1,391 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Daemon Manager
|
|
3
3
|
*
|
|
4
|
-
* Manages the single global Photon daemon lifecycle.
|
|
4
|
+
* Manages the single global Photon daemon lifecycle via a state machine.
|
|
5
5
|
* The daemon handles all photons through channel-based isolation.
|
|
6
6
|
*
|
|
7
7
|
* Architecture:
|
|
8
8
|
* - Single daemon process: ~/.photon/daemon.sock
|
|
9
9
|
* - All photons communicate through the same daemon
|
|
10
10
|
* - Channels provide isolation: {photonId}:{itemId}
|
|
11
|
+
* - State machine guards all transitions (stopped → starting → running → stopping)
|
|
11
12
|
*/
|
|
12
13
|
import * as fs from 'fs';
|
|
14
|
+
import * as net from 'net';
|
|
13
15
|
import * as path from 'path';
|
|
14
|
-
import * as os from 'os';
|
|
15
16
|
import { spawn } from 'child_process';
|
|
16
17
|
import { fileURLToPath } from 'url';
|
|
18
|
+
import { DaemonStateMachine } from './state-machine.js';
|
|
17
19
|
import { createLogger } from '../shared/logger.js';
|
|
18
20
|
import { getErrorMessage } from '../shared/error-handler.js';
|
|
21
|
+
import { getDefaultContext } from '../context.js';
|
|
19
22
|
// ES module equivalent of __dirname
|
|
20
23
|
const __filename = fileURLToPath(import.meta.url);
|
|
21
24
|
const __dirname = path.dirname(__filename);
|
|
22
|
-
const PHOTON_DIR = path.join(os.homedir(), '.photon');
|
|
23
|
-
const logger = createLogger({ component: 'daemon-manager', minimal: true });
|
|
24
|
-
// Global daemon paths (single daemon for all photons)
|
|
25
|
-
const GLOBAL_PID_FILE = path.join(PHOTON_DIR, 'daemon.pid');
|
|
26
|
-
const GLOBAL_LOG_FILE = path.join(PHOTON_DIR, 'daemon.log');
|
|
27
25
|
/**
|
|
28
|
-
*
|
|
26
|
+
* DaemonManager — state-machine-guarded daemon lifecycle.
|
|
27
|
+
*
|
|
28
|
+
* All transitions (start, stop, restart) go through the FSM,
|
|
29
|
+
* preventing illegal states like double-start or stop-while-starting.
|
|
29
30
|
*/
|
|
30
|
-
export
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
export class DaemonManager {
|
|
32
|
+
fsm = new DaemonStateMachine();
|
|
33
|
+
ctx;
|
|
34
|
+
logger = createLogger({ component: 'daemon-manager', minimal: true });
|
|
35
|
+
constructor(ctx) {
|
|
36
|
+
this.ctx = ctx || getDefaultContext();
|
|
37
|
+
// Sync FSM with actual process state on construction
|
|
38
|
+
if (this.isPidAlive()) {
|
|
39
|
+
// Process exists — assume running (start/ensure will verify socket)
|
|
40
|
+
this.fsm.transition('starting');
|
|
41
|
+
this.fsm.transition('running');
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* Ensure photon directory exists
|
|
38
|
-
*/
|
|
39
|
-
function ensurePhotonDir() {
|
|
40
|
-
if (!fs.existsSync(PHOTON_DIR)) {
|
|
41
|
-
fs.mkdirSync(PHOTON_DIR, { recursive: true });
|
|
44
|
+
/** Current FSM state. */
|
|
45
|
+
get status() {
|
|
46
|
+
return this.fsm.state;
|
|
42
47
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
//
|
|
48
|
+
/** Paths for external consumers. */
|
|
49
|
+
get pidFile() {
|
|
50
|
+
return this.ctx.pidFile;
|
|
51
|
+
}
|
|
52
|
+
get logFile() {
|
|
53
|
+
return this.ctx.logFile;
|
|
54
|
+
}
|
|
55
|
+
get socketPath() {
|
|
56
|
+
return this.ctx.socketPath;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Idempotent ensure — start if needed, restart if binary is stale.
|
|
60
|
+
* Concurrent callers join the in-flight operation instead of racing.
|
|
61
|
+
*/
|
|
62
|
+
_ensurePromise = null;
|
|
63
|
+
async ensure(quiet = true) {
|
|
64
|
+
// Coalesce concurrent ensure() calls into a single operation
|
|
65
|
+
if (this._ensurePromise)
|
|
66
|
+
return this._ensurePromise;
|
|
67
|
+
this._ensurePromise = this._ensureImpl(quiet).finally(() => {
|
|
68
|
+
this._ensurePromise = null;
|
|
69
|
+
});
|
|
70
|
+
return this._ensurePromise;
|
|
71
|
+
}
|
|
72
|
+
async _ensureImpl(quiet) {
|
|
73
|
+
if (this.fsm.state === 'running') {
|
|
74
|
+
if (this.isBinaryStale()) {
|
|
75
|
+
this.logger.info('Daemon binary updated since last start, restarting...');
|
|
76
|
+
await this.restart();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
// Already running and not stale
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
if (this.fsm.state === 'stopped') {
|
|
83
|
+
await this.start(quiet);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// starting/stopping — wait for it to settle, then check again
|
|
87
|
+
// (This handles the edge case of external state changes)
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Start the daemon. No-op if already running.
|
|
91
|
+
*/
|
|
92
|
+
async start(quiet = false) {
|
|
93
|
+
if (this.fsm.state === 'running') {
|
|
94
|
+
if (!quiet)
|
|
95
|
+
this.logger.debug('Global daemon already running');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
// If somehow stuck in starting/stopping, re-sync from disk
|
|
99
|
+
if (this.fsm.state !== 'stopped') {
|
|
100
|
+
this.resyncFromDisk();
|
|
101
|
+
}
|
|
102
|
+
if (!fs.existsSync(this.ctx.baseDir)) {
|
|
103
|
+
fs.mkdirSync(this.ctx.baseDir, { recursive: true });
|
|
104
|
+
}
|
|
105
|
+
// Socket answers → daemon is alive and healthy
|
|
106
|
+
if (await this.isSocketAlive()) {
|
|
107
|
+
// Sync FSM to running
|
|
108
|
+
if (this.fsm.state === 'stopped') {
|
|
109
|
+
this.fsm.transition('starting');
|
|
110
|
+
this.fsm.transition('running');
|
|
111
|
+
}
|
|
112
|
+
if (!quiet)
|
|
113
|
+
this.logger.debug('Global daemon already running');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Socket unresponsive → cleanup stale state
|
|
117
|
+
this.cleanupStale();
|
|
118
|
+
// Transition to starting
|
|
119
|
+
if (this.fsm.state !== 'stopped')
|
|
120
|
+
this.resyncFromDisk();
|
|
121
|
+
this.fsm.transition('starting');
|
|
60
122
|
try {
|
|
61
|
-
|
|
123
|
+
await this.spawnDaemon(quiet);
|
|
124
|
+
this.fsm.transition('running');
|
|
62
125
|
}
|
|
63
|
-
catch {
|
|
64
|
-
|
|
126
|
+
catch (error) {
|
|
127
|
+
this.fsm.transition('stopped');
|
|
128
|
+
throw error;
|
|
65
129
|
}
|
|
66
|
-
return false;
|
|
67
130
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// Clean up old socket file if it exists
|
|
99
|
-
if (fs.existsSync(socketPath) && process.platform !== 'win32') {
|
|
100
|
-
fs.unlinkSync(socketPath);
|
|
101
|
-
}
|
|
102
|
-
// Spawn daemon process
|
|
103
|
-
const daemonScript = path.join(__dirname, 'server.js');
|
|
104
|
-
// Log daemon output to file for debugging
|
|
105
|
-
const logStream = fs.openSync(GLOBAL_LOG_FILE, 'a');
|
|
106
|
-
// Global daemon doesn't need photonName/photonPath arguments
|
|
107
|
-
const child = spawn(process.execPath, [daemonScript, socketPath], {
|
|
108
|
-
detached: true,
|
|
109
|
-
stdio: ['ignore', logStream, logStream],
|
|
110
|
-
env: { ...process.env, PHOTON_DAEMON: 'true' },
|
|
111
|
-
});
|
|
112
|
-
// Detach the child process so it can continue running independently
|
|
113
|
-
child.unref();
|
|
114
|
-
// Write PID file
|
|
115
|
-
fs.writeFileSync(GLOBAL_PID_FILE, child.pid.toString());
|
|
116
|
-
if (!quiet) {
|
|
117
|
-
logger.info('Started global Photon daemon', { pid: child.pid });
|
|
118
|
-
}
|
|
119
|
-
// Wait for daemon to initialize and verify socket is ready
|
|
120
|
-
const maxWait = 3000;
|
|
121
|
-
const interval = 100;
|
|
122
|
-
let waited = 0;
|
|
123
|
-
while (waited < maxWait) {
|
|
124
|
-
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
125
|
-
waited += interval;
|
|
126
|
-
if (fs.existsSync(socketPath)) {
|
|
127
|
-
return; // Socket is ready
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (!quiet) {
|
|
131
|
-
logger.warn('Daemon started but socket not ready within timeout');
|
|
131
|
+
/**
|
|
132
|
+
* Stop the daemon.
|
|
133
|
+
*/
|
|
134
|
+
stop() {
|
|
135
|
+
if (this.fsm.state === 'stopped') {
|
|
136
|
+
this.logger.warn('No global daemon running');
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
// Allow stopping from running or stale states
|
|
140
|
+
if (this.fsm.state === 'running') {
|
|
141
|
+
this.fsm.transition('stopping');
|
|
142
|
+
}
|
|
143
|
+
else if (this.fsm.state === 'stale') {
|
|
144
|
+
this.fsm.transition('stopping');
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// starting or stopping — force resync
|
|
148
|
+
this.resyncFromDisk();
|
|
149
|
+
if (this.fsm.state === 'stopped')
|
|
150
|
+
return;
|
|
151
|
+
if (this.fsm.canTransition('stopping')) {
|
|
152
|
+
this.fsm.transition('stopping');
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
this.killProcess();
|
|
157
|
+
}
|
|
158
|
+
finally {
|
|
159
|
+
this.fsm.transition('stopped');
|
|
160
|
+
}
|
|
132
161
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Restart the daemon (stop → start).
|
|
164
|
+
*/
|
|
165
|
+
async restart() {
|
|
166
|
+
if (this.fsm.state !== 'stopped') {
|
|
167
|
+
this.stop();
|
|
168
|
+
}
|
|
169
|
+
// Wait for graceful shutdown
|
|
170
|
+
await new Promise((r) => setTimeout(r, 300));
|
|
171
|
+
// Clean stale socket if still present
|
|
172
|
+
if (fs.existsSync(this.ctx.socketPath) && process.platform !== 'win32') {
|
|
173
|
+
try {
|
|
174
|
+
fs.unlinkSync(this.ctx.socketPath);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
// Ignore — start will also clean it
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
await this.start(true);
|
|
140
181
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
182
|
+
/**
|
|
183
|
+
* Get daemon status info.
|
|
184
|
+
*/
|
|
185
|
+
getStatus() {
|
|
186
|
+
if (!this.isPidAlive()) {
|
|
187
|
+
return { running: false, photonName: 'global' };
|
|
188
|
+
}
|
|
189
|
+
const pid = this.readPid();
|
|
190
|
+
return { running: true, pid: pid ?? undefined, photonName: 'global' };
|
|
191
|
+
}
|
|
192
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
193
|
+
// PRIVATE
|
|
194
|
+
// ═══════════════════════════════════════════════════════════════════════════
|
|
195
|
+
isPidAlive() {
|
|
196
|
+
if (!fs.existsSync(this.ctx.pidFile))
|
|
197
|
+
return false;
|
|
154
198
|
try {
|
|
155
|
-
|
|
199
|
+
const pid = parseInt(fs.readFileSync(this.ctx.pidFile, 'utf-8').trim(), 10);
|
|
200
|
+
process.kill(pid, 0);
|
|
201
|
+
return true;
|
|
156
202
|
}
|
|
157
|
-
catch
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
203
|
+
catch {
|
|
204
|
+
try {
|
|
205
|
+
fs.unlinkSync(this.ctx.pidFile);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Ignore
|
|
209
|
+
}
|
|
210
|
+
return false;
|
|
161
211
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
212
|
+
}
|
|
213
|
+
readPid() {
|
|
214
|
+
try {
|
|
215
|
+
return parseInt(fs.readFileSync(this.ctx.pidFile, 'utf-8').trim(), 10);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return null; // PID file missing or unreadable
|
|
167
219
|
}
|
|
168
|
-
logger.debug('Stopped global daemon', { pid });
|
|
169
220
|
}
|
|
170
|
-
|
|
171
|
-
|
|
221
|
+
async isSocketAlive() {
|
|
222
|
+
if (process.platform === 'win32' || !fs.existsSync(this.ctx.socketPath))
|
|
223
|
+
return false;
|
|
224
|
+
return new Promise((resolve) => {
|
|
225
|
+
const sock = net.createConnection(this.ctx.socketPath);
|
|
226
|
+
const timer = setTimeout(() => {
|
|
227
|
+
sock.destroy();
|
|
228
|
+
resolve(false);
|
|
229
|
+
}, 500);
|
|
230
|
+
sock.on('connect', () => {
|
|
231
|
+
clearTimeout(timer);
|
|
232
|
+
sock.destroy();
|
|
233
|
+
resolve(true);
|
|
234
|
+
});
|
|
235
|
+
sock.on('error', () => {
|
|
236
|
+
clearTimeout(timer);
|
|
237
|
+
resolve(false);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
172
240
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
241
|
+
cleanupStale() {
|
|
242
|
+
if (fs.existsSync(this.ctx.pidFile)) {
|
|
243
|
+
try {
|
|
244
|
+
const pid = parseInt(fs.readFileSync(this.ctx.pidFile, 'utf-8').trim(), 10);
|
|
245
|
+
try {
|
|
246
|
+
process.kill(pid, 'SIGTERM');
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Process already dead
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
// Can't read PID file
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
fs.unlinkSync(this.ctx.pidFile);
|
|
257
|
+
}
|
|
258
|
+
catch {
|
|
259
|
+
// Ignore
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (fs.existsSync(this.ctx.socketPath) && process.platform !== 'win32') {
|
|
263
|
+
try {
|
|
264
|
+
fs.unlinkSync(this.ctx.socketPath);
|
|
265
|
+
}
|
|
266
|
+
catch {
|
|
267
|
+
// Ignore
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
killProcess() {
|
|
272
|
+
if (!fs.existsSync(this.ctx.pidFile))
|
|
273
|
+
return;
|
|
185
274
|
try {
|
|
186
|
-
fs.
|
|
275
|
+
const pid = parseInt(fs.readFileSync(this.ctx.pidFile, 'utf-8').trim(), 10);
|
|
276
|
+
try {
|
|
277
|
+
process.kill(pid, 'SIGTERM');
|
|
278
|
+
}
|
|
279
|
+
catch (killError) {
|
|
280
|
+
if (killError.code !== 'ESRCH')
|
|
281
|
+
throw killError;
|
|
282
|
+
}
|
|
283
|
+
fs.unlinkSync(this.ctx.pidFile);
|
|
284
|
+
if (fs.existsSync(this.ctx.socketPath) && process.platform !== 'win32') {
|
|
285
|
+
fs.unlinkSync(this.ctx.socketPath);
|
|
286
|
+
}
|
|
287
|
+
this.logger.debug('Stopped global daemon', { pid });
|
|
288
|
+
}
|
|
289
|
+
catch (error) {
|
|
290
|
+
this.logger.debug('Error stopping global daemon', { error: getErrorMessage(error) });
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
resolveDaemonScript() {
|
|
294
|
+
const daemonScriptSrc = path.join(__dirname, 'server.js');
|
|
295
|
+
return fs.existsSync(daemonScriptSrc)
|
|
296
|
+
? daemonScriptSrc
|
|
297
|
+
: daemonScriptSrc.replace(`${path.sep}src${path.sep}`, `${path.sep}dist${path.sep}`);
|
|
298
|
+
}
|
|
299
|
+
isBinaryStale() {
|
|
300
|
+
if (!fs.existsSync(this.ctx.pidFile))
|
|
301
|
+
return false;
|
|
302
|
+
const daemonScript = this.resolveDaemonScript();
|
|
303
|
+
if (!fs.existsSync(daemonScript))
|
|
304
|
+
return false;
|
|
305
|
+
try {
|
|
306
|
+
const daemonStartedAt = fs.statSync(this.ctx.pidFile).mtimeMs;
|
|
307
|
+
const binaryBuiltAt = fs.statSync(daemonScript).mtimeMs;
|
|
308
|
+
return binaryBuiltAt > daemonStartedAt;
|
|
187
309
|
}
|
|
188
310
|
catch {
|
|
189
|
-
//
|
|
311
|
+
return false; // stat race condition — file removed between exists check and stat
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
async spawnDaemon(quiet) {
|
|
315
|
+
const daemonScript = this.resolveDaemonScript();
|
|
316
|
+
const logStream = fs.openSync(this.ctx.logFile, 'a');
|
|
317
|
+
const child = spawn(process.execPath, [daemonScript, this.ctx.socketPath], {
|
|
318
|
+
detached: true,
|
|
319
|
+
stdio: ['ignore', logStream, logStream],
|
|
320
|
+
env: { ...process.env, PHOTON_DAEMON: 'true' },
|
|
321
|
+
});
|
|
322
|
+
child.unref();
|
|
323
|
+
fs.writeFileSync(this.ctx.pidFile, child.pid.toString());
|
|
324
|
+
if (!quiet) {
|
|
325
|
+
this.logger.info('Started global Photon daemon', { pid: child.pid });
|
|
326
|
+
}
|
|
327
|
+
// Wait for socket to actually accept connections (not just file existence)
|
|
328
|
+
const maxWait = 3000;
|
|
329
|
+
const interval = 100;
|
|
330
|
+
let waited = 0;
|
|
331
|
+
while (waited < maxWait) {
|
|
332
|
+
await new Promise((resolve) => setTimeout(resolve, interval));
|
|
333
|
+
waited += interval;
|
|
334
|
+
if (await this.isSocketAlive()) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (!quiet) {
|
|
339
|
+
this.logger.warn('Daemon started but socket not ready within timeout');
|
|
190
340
|
}
|
|
191
341
|
}
|
|
192
|
-
|
|
342
|
+
/**
|
|
343
|
+
* Re-sync FSM state from disk (PID file existence).
|
|
344
|
+
* Used when FSM gets out of sync (e.g. daemon killed externally).
|
|
345
|
+
*/
|
|
346
|
+
resyncFromDisk() {
|
|
347
|
+
// Reset FSM to match actual state
|
|
348
|
+
const alive = this.isPidAlive();
|
|
349
|
+
// Create a fresh FSM in the correct state
|
|
350
|
+
const newFsm = new DaemonStateMachine();
|
|
351
|
+
if (alive) {
|
|
352
|
+
newFsm.transition('starting');
|
|
353
|
+
newFsm.transition('running');
|
|
354
|
+
}
|
|
355
|
+
// Replace (can't directly set state, so we replace the instance)
|
|
356
|
+
this.fsm = newFsm;
|
|
357
|
+
}
|
|
193
358
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
359
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
360
|
+
// BACKWARD COMPATIBILITY — thin wrappers around DaemonManager singleton
|
|
361
|
+
// These exports are used throughout the codebase and will be migrated
|
|
362
|
+
// incrementally to use DaemonManager directly.
|
|
363
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
364
|
+
let _manager;
|
|
365
|
+
function getManager() {
|
|
366
|
+
if (!_manager) {
|
|
367
|
+
_manager = new DaemonManager();
|
|
368
|
+
}
|
|
369
|
+
return _manager;
|
|
370
|
+
}
|
|
371
|
+
export const GLOBAL_PID_FILE = getDefaultContext().pidFile;
|
|
372
|
+
export const GLOBAL_LOG_FILE = getDefaultContext().logFile;
|
|
373
|
+
export function getGlobalSocketPath() {
|
|
374
|
+
return getDefaultContext().socketPath;
|
|
375
|
+
}
|
|
376
|
+
export function isGlobalDaemonRunning() {
|
|
377
|
+
return getManager().getStatus().running;
|
|
378
|
+
}
|
|
379
|
+
export async function startGlobalDaemon(quiet = false) {
|
|
380
|
+
return getManager().start(quiet);
|
|
381
|
+
}
|
|
382
|
+
export async function ensureDaemon(quiet = true) {
|
|
383
|
+
return getManager().ensure(quiet);
|
|
384
|
+
}
|
|
385
|
+
export function stopGlobalDaemon() {
|
|
386
|
+
return getManager().stop();
|
|
387
|
+
}
|
|
388
|
+
export async function restartGlobalDaemon() {
|
|
389
|
+
return getManager().restart();
|
|
199
390
|
}
|
|
200
391
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/daemon/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/daemon/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Defines message types for IPC communication between CLI client and daemon server
|
|
5
5
|
*/
|
|
6
|
-
import type {
|
|
6
|
+
import type { PhotonClass } from '@portel/photon-core';
|
|
7
7
|
/**
|
|
8
8
|
* Message from CLI client to daemon server
|
|
9
9
|
*/
|
|
10
10
|
export interface DaemonRequest {
|
|
11
|
-
type: 'command' | 'ping' | 'shutdown' | 'reload' | 'prompt_response' | 'subscribe' | 'unsubscribe' | 'publish' | 'lock' | 'unlock' | 'schedule' | 'unschedule' | 'list_jobs' | 'list_locks' | 'get_events_since';
|
|
11
|
+
type: 'command' | 'ping' | 'shutdown' | 'reload' | 'prompt_response' | 'subscribe' | 'unsubscribe' | 'publish' | 'lock' | 'unlock' | 'schedule' | 'unschedule' | 'list_jobs' | 'list_locks' | 'get_events_since' | 'clear_instances' | 'status';
|
|
12
12
|
id: string;
|
|
13
13
|
/** Photon name for routing to correct SessionManager (required for multi-photon daemon) */
|
|
14
14
|
photonName?: string;
|
|
@@ -18,6 +18,10 @@ export interface DaemonRequest {
|
|
|
18
18
|
clientType?: 'cli' | 'mcp' | 'code-mode' | 'beam';
|
|
19
19
|
/** Instance name hint for auto-recovery from session drift */
|
|
20
20
|
instanceName?: string;
|
|
21
|
+
/** One-shot instance-scoped execution — runs on this instance without mutating the session */
|
|
22
|
+
targetInstance?: string;
|
|
23
|
+
/** Working directory override (base dir for state/config/cache). Defaults to ~/.photon */
|
|
24
|
+
workingDir?: string;
|
|
21
25
|
method?: string;
|
|
22
26
|
args?: Record<string, unknown>;
|
|
23
27
|
/** Response to a prompt request */
|
|
@@ -64,6 +68,8 @@ export interface DaemonResponse {
|
|
|
64
68
|
message?: unknown;
|
|
65
69
|
/** Event timestamp for tracking (for delta sync support) */
|
|
66
70
|
eventId?: string;
|
|
71
|
+
/** Tool execution duration in milliseconds */
|
|
72
|
+
durationMs?: number;
|
|
67
73
|
}
|
|
68
74
|
/**
|
|
69
75
|
* Daemon status information
|
|
@@ -81,7 +87,7 @@ export interface DaemonStatus {
|
|
|
81
87
|
*/
|
|
82
88
|
export interface PhotonSession {
|
|
83
89
|
id: string;
|
|
84
|
-
instance:
|
|
90
|
+
instance: PhotonClass;
|
|
85
91
|
instanceName: string;
|
|
86
92
|
createdAt: number;
|
|
87
93
|
lastActivity: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/daemon/protocol.ts"],"names":[],"mappings":"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"}
|