@portel/photon-core 2.22.0 → 2.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base.d.ts +56 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +100 -2
- package/dist/base.js.map +1 -1
- package/dist/bases-registry.d.ts +57 -0
- package/dist/bases-registry.d.ts.map +1 -0
- package/dist/bases-registry.js +127 -0
- package/dist/bases-registry.js.map +1 -0
- package/dist/data-paths.d.ts +31 -18
- package/dist/data-paths.d.ts.map +1 -1
- package/dist/data-paths.js +42 -43
- package/dist/data-paths.js.map +1 -1
- package/dist/description-sanitizer.d.ts +34 -0
- package/dist/description-sanitizer.d.ts.map +1 -0
- package/dist/description-sanitizer.js +80 -0
- package/dist/description-sanitizer.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +109 -1
- package/dist/memory.js.map +1 -1
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +96 -0
- package/dist/middleware.js.map +1 -1
- package/dist/mixins.d.ts.map +1 -1
- package/dist/mixins.js +9 -2
- package/dist/mixins.js.map +1 -1
- package/dist/path-resolver.d.ts +13 -1
- package/dist/path-resolver.d.ts.map +1 -1
- package/dist/path-resolver.js +23 -1
- package/dist/path-resolver.js.map +1 -1
- package/dist/photon-loader-lite.d.ts +17 -2
- package/dist/photon-loader-lite.d.ts.map +1 -1
- package/dist/photon-loader-lite.js +203 -26
- package/dist/photon-loader-lite.js.map +1 -1
- package/dist/schedule.d.ts +10 -1
- package/dist/schedule.d.ts.map +1 -1
- package/dist/schedule.js +20 -10
- package/dist/schedule.js.map +1 -1
- package/dist/schema-extractor.d.ts +9 -3
- package/dist/schema-extractor.d.ts.map +1 -1
- package/dist/schema-extractor.js +149 -17
- package/dist/schema-extractor.js.map +1 -1
- package/dist/stateful.d.ts +3 -2
- package/dist/stateful.d.ts.map +1 -1
- package/dist/stateful.js +18 -6
- package/dist/stateful.js.map +1 -1
- package/dist/types.d.ts +9 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/src/base.ts +123 -2
- package/src/bases-registry.ts +141 -0
- package/src/data-paths.ts +43 -49
- package/src/description-sanitizer.ts +102 -0
- package/src/index.ts +20 -1
- package/src/memory.ts +109 -0
- package/src/middleware.ts +98 -0
- package/src/mixins.ts +14 -2
- package/src/path-resolver.ts +26 -1
- package/src/photon-loader-lite.ts +214 -33
- package/src/schedule.ts +26 -10
- package/src/schema-extractor.ts +164 -17
- package/src/stateful.ts +19 -6
- package/src/types.ts +9 -0
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsgBH;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,GAAe,CAAC;AAErE;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE,CAAC,GAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@portel/photon-core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.24.0",
|
|
4
4
|
"description": "Core library for parsing, loading, and managing .photon.ts files - runtime-agnostic foundation for building custom Photon runtimes",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"build": "tsc",
|
|
34
34
|
"clean": "rm -rf dist",
|
|
35
35
|
"prepublishOnly": "npm run clean && npm run build",
|
|
36
|
-
"test": "npm run build &&
|
|
36
|
+
"test": "npm run build && bash scripts/run-tests.sh",
|
|
37
37
|
"test:channels": "npx tsx tests/channels.test.ts",
|
|
38
38
|
"test:mixin": "npm run build && npx tsx tests/mixin.test.ts"
|
|
39
39
|
},
|
package/src/base.ts
CHANGED
|
@@ -71,6 +71,16 @@ export class Photon {
|
|
|
71
71
|
*/
|
|
72
72
|
_photonNamespace?: string;
|
|
73
73
|
|
|
74
|
+
/**
|
|
75
|
+
* PHOTON_DIR this instance was loaded from - set by runtime loader.
|
|
76
|
+
* Pinned so .data/ resolves to the same root regardless of which
|
|
77
|
+
* process (CLI, daemon, worker) reads the photon back later. Without
|
|
78
|
+
* this pin, MemoryProvider falls back to getDefaultContext().baseDir
|
|
79
|
+
* and writes/reads can drift between cwd-derived locations.
|
|
80
|
+
* @internal
|
|
81
|
+
*/
|
|
82
|
+
_baseDir?: string;
|
|
83
|
+
|
|
74
84
|
/**
|
|
75
85
|
* Absolute path to the .photon.ts/.photon.js source file - set by runtime loader
|
|
76
86
|
* Used for storage() and assets() path resolution
|
|
@@ -78,6 +88,25 @@ export class Photon {
|
|
|
78
88
|
*/
|
|
79
89
|
_photonFilePath?: string;
|
|
80
90
|
|
|
91
|
+
/**
|
|
92
|
+
* Stat snapshot captured when the current photon instance was loaded.
|
|
93
|
+
* Used by executeTool() to detect out-of-band edits so CLI-direct and
|
|
94
|
+
* lite-loader callers see new code immediately after a file save.
|
|
95
|
+
* See `_photonReloader` for the callback invoked on change.
|
|
96
|
+
* @internal
|
|
97
|
+
*/
|
|
98
|
+
_photonSourceStat?: { mtimeMs: number; size: number; ino: number };
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Callback the loader registers so executeTool() can trigger a live
|
|
102
|
+
* reload when `_photonFilePath` has changed since load. The loader is
|
|
103
|
+
* expected to re-evaluate the file, replace the cached module, and
|
|
104
|
+
* update `_photonSourceStat` on success. Missing callback means the
|
|
105
|
+
* gate is a no-op (the original behavior).
|
|
106
|
+
* @internal
|
|
107
|
+
*/
|
|
108
|
+
_photonReloader?: () => Promise<void>;
|
|
109
|
+
|
|
81
110
|
/**
|
|
82
111
|
* Dynamic photon resolver - injected by runtime loader
|
|
83
112
|
* Used by this.photon.use() for runtime photon access
|
|
@@ -153,7 +182,12 @@ export class Photon {
|
|
|
153
182
|
.replace(/([A-Z])/g, '-$1')
|
|
154
183
|
.toLowerCase()
|
|
155
184
|
.replace(/^-/, '');
|
|
156
|
-
this._memory = new MemoryProvider(
|
|
185
|
+
this._memory = new MemoryProvider(
|
|
186
|
+
name,
|
|
187
|
+
this._sessionId,
|
|
188
|
+
this._photonNamespace,
|
|
189
|
+
this._baseDir
|
|
190
|
+
);
|
|
157
191
|
}
|
|
158
192
|
return this._memory;
|
|
159
193
|
}
|
|
@@ -197,7 +231,7 @@ export class Photon {
|
|
|
197
231
|
.replace(/([A-Z])/g, '-$1')
|
|
198
232
|
.toLowerCase()
|
|
199
233
|
.replace(/^-/, '');
|
|
200
|
-
this._schedule = new ScheduleProvider(name);
|
|
234
|
+
this._schedule = new ScheduleProvider(name, this._baseDir);
|
|
201
235
|
}
|
|
202
236
|
return this._schedule;
|
|
203
237
|
}
|
|
@@ -624,6 +658,15 @@ export class Photon {
|
|
|
624
658
|
* Execute a tool method
|
|
625
659
|
*/
|
|
626
660
|
async executeTool(toolName: string, parameters: any, options?: { outputHandler?: (data: any) => void }): Promise<any> {
|
|
661
|
+
// Stat-gate: close the edit→dispatch race on non-daemon paths. The
|
|
662
|
+
// daemon has its own equivalent at src/daemon/server.ts; this runs
|
|
663
|
+
// for CLI-direct dispatch and for callers using the lite loader's
|
|
664
|
+
// programmatic photon() API. If the source file has changed since
|
|
665
|
+
// the instance was loaded, hand off to the loader-registered
|
|
666
|
+
// reloader before dispatching so the first call after a save sees
|
|
667
|
+
// the new code.
|
|
668
|
+
await this._statGateIfStale();
|
|
669
|
+
|
|
627
670
|
const method = (this as any)[toolName];
|
|
628
671
|
|
|
629
672
|
if (!method || typeof method !== 'function') {
|
|
@@ -636,11 +679,80 @@ export class Photon {
|
|
|
636
679
|
return result;
|
|
637
680
|
} catch (error: any) {
|
|
638
681
|
console.error(`Tool execution failed: ${toolName} - ${error.message}`);
|
|
682
|
+
await this._invokeErrorHook(error, { tool: toolName, params: parameters });
|
|
639
683
|
throw error;
|
|
640
684
|
}
|
|
641
685
|
});
|
|
642
686
|
}
|
|
643
687
|
|
|
688
|
+
/**
|
|
689
|
+
* If a reloader is registered and the source file has changed since it
|
|
690
|
+
* was last loaded, invoke the reloader. Silent on missing file or
|
|
691
|
+
* reloader failure — dispatch continues on the stale instance rather
|
|
692
|
+
* than throwing for an observability concern.
|
|
693
|
+
*/
|
|
694
|
+
private async _statGateIfStale(): Promise<void> {
|
|
695
|
+
const filePath = this._photonFilePath;
|
|
696
|
+
const reloader = this._photonReloader;
|
|
697
|
+
const cached = this._photonSourceStat;
|
|
698
|
+
if (!filePath || !reloader || !cached) return;
|
|
699
|
+
let current: { mtimeMs: number; size: number; ino: number } | null = null;
|
|
700
|
+
try {
|
|
701
|
+
const s = fs.statSync(filePath);
|
|
702
|
+
current = { mtimeMs: s.mtimeMs, size: s.size, ino: s.ino };
|
|
703
|
+
} catch {
|
|
704
|
+
// Source gone or unreadable — nothing to gate against. Dispatch
|
|
705
|
+
// will surface the missing-photon error through its own path.
|
|
706
|
+
return;
|
|
707
|
+
}
|
|
708
|
+
if (
|
|
709
|
+
current.mtimeMs === cached.mtimeMs &&
|
|
710
|
+
current.size === cached.size &&
|
|
711
|
+
current.ino === cached.ino
|
|
712
|
+
) {
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
try {
|
|
716
|
+
await reloader();
|
|
717
|
+
} catch {
|
|
718
|
+
// Reloader errors are non-fatal — keep running on the stale
|
|
719
|
+
// instance rather than making dispatch itself fail.
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
/**
|
|
724
|
+
* Invoke the onError observability hook with a bounded timeout. Never
|
|
725
|
+
* suppresses the original error and never throws itself — a throw or
|
|
726
|
+
* timeout inside the hook is logged and swallowed so observability code
|
|
727
|
+
* can never cascade into the request path.
|
|
728
|
+
*/
|
|
729
|
+
private async _invokeErrorHook(
|
|
730
|
+
error: unknown,
|
|
731
|
+
ctx: { tool: string; params: any }
|
|
732
|
+
): Promise<void> {
|
|
733
|
+
const hook = (this as any).onError;
|
|
734
|
+
if (typeof hook !== 'function') return;
|
|
735
|
+
const TIMEOUT_MS = 5000;
|
|
736
|
+
let timer: ReturnType<typeof setTimeout> | undefined;
|
|
737
|
+
try {
|
|
738
|
+
await Promise.race([
|
|
739
|
+
Promise.resolve(hook.call(this, error, ctx)),
|
|
740
|
+
new Promise<never>((_, reject) => {
|
|
741
|
+
timer = setTimeout(
|
|
742
|
+
() => reject(new Error(`onError hook exceeded ${TIMEOUT_MS}ms`)),
|
|
743
|
+
TIMEOUT_MS
|
|
744
|
+
);
|
|
745
|
+
}),
|
|
746
|
+
]);
|
|
747
|
+
} catch (hookError: any) {
|
|
748
|
+
console.error(
|
|
749
|
+
`onError hook failed for ${ctx.tool}: ${hookError?.message ?? String(hookError)}`
|
|
750
|
+
);
|
|
751
|
+
} finally {
|
|
752
|
+
if (timer) clearTimeout(timer);
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
|
|
644
756
|
/**
|
|
645
757
|
* Optional lifecycle hooks
|
|
646
758
|
*/
|
|
@@ -654,6 +766,15 @@ export class Photon {
|
|
|
654
766
|
* During hot-reload, receives context so you can skip resource cleanup.
|
|
655
767
|
*/
|
|
656
768
|
async onShutdown?(ctx?: { reason?: string }): Promise<void>;
|
|
769
|
+
/**
|
|
770
|
+
* Called when any tool method throws. Observability only — the hook
|
|
771
|
+
* cannot suppress or transform the error. A throw or timeout inside
|
|
772
|
+
* the hook is logged and swallowed. Default timeout is 5s.
|
|
773
|
+
*
|
|
774
|
+
* Use it for centralized logging, metrics, or error reporting instead
|
|
775
|
+
* of wrapping every method in try/catch.
|
|
776
|
+
*/
|
|
777
|
+
async onError?(error: unknown, ctx: { tool: string; params: any }): Promise<void>;
|
|
657
778
|
|
|
658
779
|
/**
|
|
659
780
|
* Get an MCP client for calling external MCP servers
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bases Registry
|
|
3
|
+
*
|
|
4
|
+
* Tracks every PHOTON_DIR the daemon has served. The daemon upserts an
|
|
5
|
+
* entry on every photon invocation and, on startup, scans each surviving
|
|
6
|
+
* base for long-lived per-photon state (schedules, etc.) that must be
|
|
7
|
+
* reinstated across restarts.
|
|
8
|
+
*
|
|
9
|
+
* The registry itself is daemon infrastructure and lives at the global
|
|
10
|
+
* path `~/.photon/.data/.bases.json`. The data it points at is NOT — each
|
|
11
|
+
* listed base owns its own data under `{base}/.data/`.
|
|
12
|
+
*
|
|
13
|
+
* See docs/internals/PHOTON-DIR-AND-NAMESPACE.md §8.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import * as fs from 'fs';
|
|
17
|
+
import * as path from 'path';
|
|
18
|
+
import { getBasesRegistryPath } from './data-paths.js';
|
|
19
|
+
|
|
20
|
+
export interface BaseRegistryEntry {
|
|
21
|
+
/** Absolute, resolved path to the PHOTON_DIR. */
|
|
22
|
+
path: string;
|
|
23
|
+
/** ISO-8601 timestamp of first record. */
|
|
24
|
+
firstSeen: string;
|
|
25
|
+
/** ISO-8601 timestamp of most recent invocation. */
|
|
26
|
+
lastSeen: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface BasesRegistry {
|
|
30
|
+
bases: BaseRegistryEntry[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const EMPTY_REGISTRY: BasesRegistry = { bases: [] };
|
|
34
|
+
|
|
35
|
+
function normalizeBase(basePath: string): string {
|
|
36
|
+
return path.resolve(basePath);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Read the registry from disk. Returns an empty registry if the file is
|
|
41
|
+
* missing or malformed. Never throws for absent data.
|
|
42
|
+
*/
|
|
43
|
+
export function readBasesRegistry(): BasesRegistry {
|
|
44
|
+
const file = getBasesRegistryPath();
|
|
45
|
+
let raw: string;
|
|
46
|
+
try {
|
|
47
|
+
raw = fs.readFileSync(file, 'utf-8');
|
|
48
|
+
} catch {
|
|
49
|
+
return { bases: [] };
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
const parsed = JSON.parse(raw);
|
|
53
|
+
if (!parsed || !Array.isArray(parsed.bases)) return { bases: [] };
|
|
54
|
+
// Trust the shape but filter out entries that are obviously broken.
|
|
55
|
+
const bases = parsed.bases.filter(
|
|
56
|
+
(b: any) =>
|
|
57
|
+
b &&
|
|
58
|
+
typeof b.path === 'string' &&
|
|
59
|
+
typeof b.firstSeen === 'string' &&
|
|
60
|
+
typeof b.lastSeen === 'string'
|
|
61
|
+
);
|
|
62
|
+
return { bases };
|
|
63
|
+
} catch {
|
|
64
|
+
return { bases: [] };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Write the registry to disk atomically. Creates the parent directory if
|
|
70
|
+
* needed. Uses a temp-file + rename pattern so readers never observe a
|
|
71
|
+
* half-written file.
|
|
72
|
+
*/
|
|
73
|
+
export function writeBasesRegistry(registry: BasesRegistry): void {
|
|
74
|
+
const file = getBasesRegistryPath();
|
|
75
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
76
|
+
const tmp = `${file}.${process.pid}.tmp`;
|
|
77
|
+
fs.writeFileSync(tmp, JSON.stringify(registry, null, 2));
|
|
78
|
+
fs.renameSync(tmp, file);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Upsert a base with a fresh `lastSeen`. Sets `firstSeen` on new entries.
|
|
83
|
+
* Safe to call on every photon invocation — cost is one JSON round-trip
|
|
84
|
+
* per call.
|
|
85
|
+
*/
|
|
86
|
+
export function touchBase(basePath: string, now: Date = new Date()): void {
|
|
87
|
+
const normalized = normalizeBase(basePath);
|
|
88
|
+
const iso = now.toISOString();
|
|
89
|
+
const registry = readBasesRegistry();
|
|
90
|
+
const existing = registry.bases.find((b) => b.path === normalized);
|
|
91
|
+
if (existing) {
|
|
92
|
+
existing.lastSeen = iso;
|
|
93
|
+
} else {
|
|
94
|
+
registry.bases.push({ path: normalized, firstSeen: iso, lastSeen: iso });
|
|
95
|
+
}
|
|
96
|
+
writeBasesRegistry(registry);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Return registry entries whose path still exists on disk as a directory.
|
|
101
|
+
* Entries whose path cannot be confirmed (permission errors, unmounted
|
|
102
|
+
* drives, transient failures) are KEPT — we only filter on confirmed
|
|
103
|
+
* absence, so a momentarily-unreachable path does not get silently
|
|
104
|
+
* dropped.
|
|
105
|
+
*/
|
|
106
|
+
export function listActiveBases(): BaseRegistryEntry[] {
|
|
107
|
+
const registry = readBasesRegistry();
|
|
108
|
+
return registry.bases.filter((b) => {
|
|
109
|
+
try {
|
|
110
|
+
return fs.statSync(b.path).isDirectory();
|
|
111
|
+
} catch (err: any) {
|
|
112
|
+
// Only treat "does not exist" as inactive. Other errors keep the entry.
|
|
113
|
+
return err?.code !== 'ENOENT';
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Remove entries whose path is confirmed absent on disk (ENOENT only).
|
|
120
|
+
* Writes the pruned registry back. Returns the list of entries that were
|
|
121
|
+
* removed so callers can log them.
|
|
122
|
+
*/
|
|
123
|
+
export function pruneBasesRegistry(): BaseRegistryEntry[] {
|
|
124
|
+
const registry = readBasesRegistry();
|
|
125
|
+
const removed: BaseRegistryEntry[] = [];
|
|
126
|
+
const kept: BaseRegistryEntry[] = [];
|
|
127
|
+
for (const b of registry.bases) {
|
|
128
|
+
let confirmedAbsent = false;
|
|
129
|
+
try {
|
|
130
|
+
fs.statSync(b.path);
|
|
131
|
+
} catch (err: any) {
|
|
132
|
+
if (err?.code === 'ENOENT') confirmedAbsent = true;
|
|
133
|
+
}
|
|
134
|
+
if (confirmedAbsent) removed.push(b);
|
|
135
|
+
else kept.push(b);
|
|
136
|
+
}
|
|
137
|
+
if (removed.length > 0) {
|
|
138
|
+
writeBasesRegistry({ bases: kept });
|
|
139
|
+
}
|
|
140
|
+
return removed;
|
|
141
|
+
}
|
package/src/data-paths.ts
CHANGED
|
@@ -31,10 +31,16 @@ import * as path from 'path';
|
|
|
31
31
|
import * as os from 'os';
|
|
32
32
|
import { execSync } from 'child_process';
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
/**
|
|
35
|
+
* Default PHOTON_DIR when none is explicitly resolved: the user's home
|
|
36
|
+
* `.photon` directory. Single source of truth — path-resolver.ts and
|
|
37
|
+
* photon/src/context.ts re-export this so there is exactly one constant
|
|
38
|
+
* for the concept.
|
|
39
|
+
*/
|
|
40
|
+
export const DEFAULT_PHOTON_DIR = path.join(os.homedir(), '.photon');
|
|
35
41
|
|
|
36
42
|
function getBase(baseDir?: string): string {
|
|
37
|
-
return baseDir || process.env.PHOTON_DIR ||
|
|
43
|
+
return baseDir || process.env.PHOTON_DIR || DEFAULT_PHOTON_DIR;
|
|
38
44
|
}
|
|
39
45
|
|
|
40
46
|
// ── Root ─────────────────────────────────────────────────────────────────────
|
|
@@ -142,17 +148,33 @@ export function getDaemonSocketPath(): string {
|
|
|
142
148
|
if (process.platform === 'win32') {
|
|
143
149
|
return '\\\\.\\pipe\\photon-daemon';
|
|
144
150
|
}
|
|
145
|
-
return path.join(
|
|
151
|
+
return path.join(DEFAULT_PHOTON_DIR, '.data', 'daemon.sock');
|
|
146
152
|
}
|
|
147
153
|
|
|
148
154
|
/** Daemon PID file: always ~/.photon/.data/daemon.pid */
|
|
149
155
|
export function getDaemonPidPath(): string {
|
|
150
|
-
return path.join(
|
|
156
|
+
return path.join(DEFAULT_PHOTON_DIR, '.data', 'daemon.pid');
|
|
151
157
|
}
|
|
152
158
|
|
|
153
159
|
/** Daemon log file: always ~/.photon/.data/daemon.log */
|
|
154
160
|
export function getDaemonLogPath(): string {
|
|
155
|
-
return path.join(
|
|
161
|
+
return path.join(DEFAULT_PHOTON_DIR, '.data', 'daemon.log');
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Bases registry: always ~/.photon/.data/.bases.json (global, one per user).
|
|
166
|
+
*
|
|
167
|
+
* The daemon maintains this file to track every PHOTON_DIR it has served.
|
|
168
|
+
* On startup it reads the registry and scans each base for schedules and
|
|
169
|
+
* other long-lived per-photon state that must survive daemon restarts.
|
|
170
|
+
*
|
|
171
|
+
* The `PHOTON_BASES_REGISTRY` env var exists as a test-only override;
|
|
172
|
+
* production always uses the fixed global path.
|
|
173
|
+
*
|
|
174
|
+
* See docs/internals/PHOTON-DIR-AND-NAMESPACE.md §8.
|
|
175
|
+
*/
|
|
176
|
+
export function getBasesRegistryPath(): string {
|
|
177
|
+
return process.env.PHOTON_BASES_REGISTRY ?? path.join(DEFAULT_PHOTON_DIR, '.data', '.bases.json');
|
|
156
178
|
}
|
|
157
179
|
|
|
158
180
|
// ── Namespace Detection ──────────────────────────────────────────────────────
|
|
@@ -165,6 +187,11 @@ export function getDaemonLogPath(): string {
|
|
|
165
187
|
* git@github.com:portel-dev/photons.git → 'portel-dev'
|
|
166
188
|
* https://github.com/arul-kumar/my-photons → 'arul-kumar'
|
|
167
189
|
* (no git remote) → ''
|
|
190
|
+
*
|
|
191
|
+
* @deprecated Under Option B the namespace is a pure function of the
|
|
192
|
+
* photon file's position relative to PHOTON_DIR; git state must never
|
|
193
|
+
* influence data paths. Scheduled for removal in the next minor release.
|
|
194
|
+
* See docs/internals/PHOTON-DIR-AND-NAMESPACE.md §3.
|
|
168
195
|
*/
|
|
169
196
|
export function detectNamespace(dir: string): string {
|
|
170
197
|
try {
|
|
@@ -228,62 +255,29 @@ export function getLegacySessionMemoryDir(sessionId: string, photonName: string,
|
|
|
228
255
|
return path.join(getBase(baseDir), 'sessions', safeSession, safeName);
|
|
229
256
|
}
|
|
230
257
|
|
|
231
|
-
/** Old runs dir:
|
|
232
|
-
export function getLegacyRunsDir(): string {
|
|
233
|
-
return path.join(
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
/** Old logs dir: ~/.photon/logs/{photonId}/ */
|
|
237
|
-
export function getLegacyLogsDir(photonName: string): string {
|
|
238
|
-
return path.join(DEFAULT_BASE, 'logs', photonName);
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
/** Old tasks dir: ~/.photon/tasks/ */
|
|
242
|
-
export function getLegacyTasksDir(): string {
|
|
243
|
-
return path.join(DEFAULT_BASE, 'tasks');
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/** Old audit path: ~/.photon/audit.jsonl */
|
|
247
|
-
export function getLegacyAuditPath(): string {
|
|
248
|
-
return path.join(DEFAULT_BASE, 'audit.jsonl');
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/** Old metadata path: {baseDir}/.metadata.json */
|
|
252
|
-
export function getLegacyMetadataPath(baseDir?: string): string {
|
|
253
|
-
return path.join(getBase(baseDir), '.metadata.json');
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
/** Old daemon socket: ~/.photon/daemon.sock */
|
|
257
|
-
export function getLegacyDaemonSocketPath(): string {
|
|
258
|
-
if (process.platform === 'win32') {
|
|
259
|
-
return '\\\\.\\pipe\\photon-daemon';
|
|
260
|
-
}
|
|
261
|
-
return path.join(DEFAULT_BASE, 'daemon.sock');
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
/** Old daemon PID: ~/.photon/daemon.pid */
|
|
265
|
-
export function getLegacyDaemonPidPath(): string {
|
|
266
|
-
return path.join(DEFAULT_BASE, 'daemon.pid');
|
|
258
|
+
/** Old runs dir: {baseDir}/runs/ */
|
|
259
|
+
export function getLegacyRunsDir(baseDir?: string): string {
|
|
260
|
+
return path.join(getBase(baseDir), 'runs');
|
|
267
261
|
}
|
|
268
262
|
|
|
269
|
-
/** Old
|
|
270
|
-
export function
|
|
271
|
-
return path.join(
|
|
263
|
+
/** Old logs dir: {baseDir}/logs/{photonId}/ */
|
|
264
|
+
export function getLegacyLogsDir(photonName: string, baseDir?: string): string {
|
|
265
|
+
return path.join(getBase(baseDir), 'logs', photonName);
|
|
272
266
|
}
|
|
273
267
|
|
|
274
|
-
/** Old
|
|
275
|
-
export function
|
|
276
|
-
return path.join(getBase(baseDir), '
|
|
268
|
+
/** Old tasks dir: {baseDir}/tasks/ */
|
|
269
|
+
export function getLegacyTasksDir(baseDir?: string): string {
|
|
270
|
+
return path.join(getBase(baseDir), 'tasks');
|
|
277
271
|
}
|
|
278
272
|
|
|
279
273
|
/** Old schedules dir: ~/.photon/schedules/{photonName}/ */
|
|
280
274
|
export function getLegacySchedulesDir(photonName: string): string {
|
|
281
275
|
const safeName = photonName.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
282
|
-
return path.join(
|
|
276
|
+
return path.join(DEFAULT_PHOTON_DIR, 'schedules', safeName);
|
|
283
277
|
}
|
|
284
278
|
|
|
285
279
|
/** Old per-photon config: ~/.photon/{photonName}/config.json */
|
|
286
280
|
export function getLegacyPhotonConfigPath(photonName: string): string {
|
|
287
281
|
const safeName = photonName.replace(/[^a-zA-Z0-9_-]/g, '_');
|
|
288
|
-
return path.join(
|
|
282
|
+
return path.join(DEFAULT_PHOTON_DIR, safeName, 'config.json');
|
|
289
283
|
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-description sanitizer.
|
|
3
|
+
*
|
|
4
|
+
* Defends against MCP tool-description poisoning (OWASP MCP #3) by stripping
|
|
5
|
+
* invisible codepoints and redacting embedded prompt-injection markers from
|
|
6
|
+
* JSDoc descriptions before they reach the model.
|
|
7
|
+
*
|
|
8
|
+
* Called by the schema extractor at parse time; any photon loaded via the
|
|
9
|
+
* runtime benefits automatically. Intentionally conservative — it only
|
|
10
|
+
* touches obvious attack patterns. Legitimate documentation does not use
|
|
11
|
+
* zero-width spaces or contain `[[SYSTEM: ...]]` directives.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Unicode ranges that are invisible to humans but preserved by LLM tokenizers.
|
|
16
|
+
* Stripped unconditionally — no legitimate doc string needs them.
|
|
17
|
+
*
|
|
18
|
+
* U+200B ZERO WIDTH SPACE
|
|
19
|
+
* U+200C ZERO WIDTH NON-JOINER
|
|
20
|
+
* U+200D ZERO WIDTH JOINER
|
|
21
|
+
* U+200E LEFT-TO-RIGHT MARK
|
|
22
|
+
* U+200F RIGHT-TO-LEFT MARK
|
|
23
|
+
* U+202A-E LRE/RLE/PDF/LRO/RLO (bidi override)
|
|
24
|
+
* U+2060 WORD JOINER
|
|
25
|
+
* U+2066-9 LRI/RLI/FSI/PDI (bidi isolate)
|
|
26
|
+
* U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM)
|
|
27
|
+
*/
|
|
28
|
+
const INVISIBLE_CHARS = /[\u200B-\u200F\u202A-\u202E\u2060\u2066-\u2069\uFEFF]/g;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Instruction-bracket patterns commonly used in tool-poisoning payloads.
|
|
32
|
+
* Each match is replaced with `[REDACTED]` and counted as a warning.
|
|
33
|
+
*/
|
|
34
|
+
const INSTRUCTION_PATTERNS: Array<{ name: string; pattern: RegExp }> = [
|
|
35
|
+
// Bracketed system directives: [[SYSTEM: ...]], [INST] ... [/INST], <|im_start|>...<|im_end|>
|
|
36
|
+
{ name: 'bracketed-system', pattern: /\[{1,2}\s*SYSTEM\s*:[^\]]*\]{1,2}/gi },
|
|
37
|
+
{ name: 'llama-inst', pattern: /\[\/?INST\]/gi },
|
|
38
|
+
{ name: 'chatml-tag', pattern: /<\|im_(?:start|end|sep)\|>/gi },
|
|
39
|
+
// Verbatim instruction phrases that only appear in jailbreaks, never in docs.
|
|
40
|
+
{ name: 'ignore-previous', pattern: /\bignore\s+(?:all\s+|the\s+)?(?:previous|prior|above)\s+instructions?\b/gi },
|
|
41
|
+
{ name: 'disregard-previous', pattern: /\bdisregard\s+(?:all\s+|the\s+)?(?:previous|prior|above)\b/gi },
|
|
42
|
+
{ name: 'system-prompt-literal', pattern: /\bSYSTEM[_\s-]?PROMPT\b/g },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
/** Max length of a cleaned description. Anything longer is an attack surface. */
|
|
46
|
+
export const MAX_DESCRIPTION_LENGTH = 2000;
|
|
47
|
+
|
|
48
|
+
export interface SanitizerWarning {
|
|
49
|
+
/** Label of the rule that fired. */
|
|
50
|
+
rule: string;
|
|
51
|
+
/** Short slice of the matched text for forensics (capped at 80 chars). */
|
|
52
|
+
sample: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface SanitizeResult {
|
|
56
|
+
cleaned: string;
|
|
57
|
+
warnings: SanitizerWarning[];
|
|
58
|
+
/** Whether the string was truncated because it exceeded MAX_DESCRIPTION_LENGTH. */
|
|
59
|
+
truncated: boolean;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Strip invisible codepoints, redact instruction markers, and cap length.
|
|
64
|
+
* Idempotent: sanitize(sanitize(x).cleaned).cleaned === sanitize(x).cleaned
|
|
65
|
+
* so callers can apply it defensively without risking duplicate `[REDACTED]`
|
|
66
|
+
* tokens.
|
|
67
|
+
*/
|
|
68
|
+
export function sanitizeDescription(input: string): SanitizeResult {
|
|
69
|
+
const warnings: SanitizerWarning[] = [];
|
|
70
|
+
|
|
71
|
+
// Step 1: strip invisibles. Counts as one warning if any were present.
|
|
72
|
+
const withoutInvisibles = input.replace(INVISIBLE_CHARS, (match) => {
|
|
73
|
+
warnings.push({ rule: 'invisible-char', sample: codepointSample(match) });
|
|
74
|
+
return '';
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Step 2: redact each known instruction pattern.
|
|
78
|
+
let redacted = withoutInvisibles;
|
|
79
|
+
for (const { name, pattern } of INSTRUCTION_PATTERNS) {
|
|
80
|
+
redacted = redacted.replace(pattern, (match) => {
|
|
81
|
+
warnings.push({ rule: name, sample: match.slice(0, 80) });
|
|
82
|
+
return '[REDACTED]';
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Step 3: cap length. An attacker-friendly 50KB description is itself a
|
|
87
|
+
// prompt-injection vector via context-window flooding (OWASP MCP #10).
|
|
88
|
+
let truncated = false;
|
|
89
|
+
if (redacted.length > MAX_DESCRIPTION_LENGTH) {
|
|
90
|
+
redacted = redacted.slice(0, MAX_DESCRIPTION_LENGTH) + '…';
|
|
91
|
+
truncated = true;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return { cleaned: redacted, warnings, truncated };
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function codepointSample(s: string): string {
|
|
98
|
+
return Array.from(s)
|
|
99
|
+
.map((c) => 'U+' + c.codePointAt(0)!.toString(16).toUpperCase().padStart(4, '0'))
|
|
100
|
+
.join(',')
|
|
101
|
+
.slice(0, 80);
|
|
102
|
+
}
|