@portel/photon-core 2.23.0 → 2.25.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 +114 -0
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +195 -2
- package/dist/base.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/generator.d.ts +102 -0
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +28 -0
- 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/photon-loader-lite.js +41 -0
- package/dist/photon-loader-lite.js.map +1 -1
- package/dist/schedule.d.ts +41 -2
- package/dist/schedule.d.ts.map +1 -1
- package/dist/schedule.js +72 -16
- package/dist/schedule.js.map +1 -1
- package/dist/schema-extractor.d.ts +2 -1
- package/dist/schema-extractor.d.ts.map +1 -1
- package/dist/schema-extractor.js +135 -14
- package/dist/schema-extractor.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 +224 -2
- package/src/description-sanitizer.ts +102 -0
- package/src/generator.ts +93 -0
- package/src/index.ts +12 -0
- package/src/memory.ts +28 -0
- package/src/middleware.ts +98 -0
- package/src/mixins.ts +14 -2
- package/src/photon-loader-lite.ts +38 -0
- package/src/schedule.ts +98 -14
- package/src/schema-extractor.ts +147 -14
- package/src/types.ts +9 -0
package/dist/base.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ import { MCPClient, MCPClientFactory } from '@portel/mcp';
|
|
|
42
42
|
import { type CallerInfo } from '@portel/cli';
|
|
43
43
|
import { MemoryProvider } from './memory.js';
|
|
44
44
|
import { ScheduleProvider } from './schedule.js';
|
|
45
|
+
import type { AskYield, SampleParams } from './generator.js';
|
|
45
46
|
/**
|
|
46
47
|
* Simple base class for creating Photons
|
|
47
48
|
*
|
|
@@ -62,12 +63,42 @@ export declare class Photon {
|
|
|
62
63
|
* @internal
|
|
63
64
|
*/
|
|
64
65
|
_photonNamespace?: string;
|
|
66
|
+
/**
|
|
67
|
+
* PHOTON_DIR this instance was loaded from - set by runtime loader.
|
|
68
|
+
* Pinned so .data/ resolves to the same root regardless of which
|
|
69
|
+
* process (CLI, daemon, worker) reads the photon back later. Without
|
|
70
|
+
* this pin, MemoryProvider falls back to getDefaultContext().baseDir
|
|
71
|
+
* and writes/reads can drift between cwd-derived locations.
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
_baseDir?: string;
|
|
65
75
|
/**
|
|
66
76
|
* Absolute path to the .photon.ts/.photon.js source file - set by runtime loader
|
|
67
77
|
* Used for storage() and assets() path resolution
|
|
68
78
|
* @internal
|
|
69
79
|
*/
|
|
70
80
|
_photonFilePath?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Stat snapshot captured when the current photon instance was loaded.
|
|
83
|
+
* Used by executeTool() to detect out-of-band edits so CLI-direct and
|
|
84
|
+
* lite-loader callers see new code immediately after a file save.
|
|
85
|
+
* See `_photonReloader` for the callback invoked on change.
|
|
86
|
+
* @internal
|
|
87
|
+
*/
|
|
88
|
+
_photonSourceStat?: {
|
|
89
|
+
mtimeMs: number;
|
|
90
|
+
size: number;
|
|
91
|
+
ino: number;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Callback the loader registers so executeTool() can trigger a live
|
|
95
|
+
* reload when `_photonFilePath` has changed since load. The loader is
|
|
96
|
+
* expected to re-evaluate the file, replace the cached module, and
|
|
97
|
+
* update `_photonSourceStat` on success. Missing callback means the
|
|
98
|
+
* gate is a no-op (the original behavior).
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
_photonReloader?: () => Promise<void>;
|
|
71
102
|
/**
|
|
72
103
|
* Dynamic photon resolver - injected by runtime loader
|
|
73
104
|
* Used by this.photon.use() for runtime photon access
|
|
@@ -107,6 +138,71 @@ export declare class Photon {
|
|
|
107
138
|
* ```
|
|
108
139
|
*/
|
|
109
140
|
get caller(): CallerInfo;
|
|
141
|
+
/**
|
|
142
|
+
* Ask the caller a yes/no question and await the answer.
|
|
143
|
+
*
|
|
144
|
+
* Imperative sugar over the existing `{ ask: 'confirm' }` yield.
|
|
145
|
+
* Works in any method (generator or plain async), routed through the
|
|
146
|
+
* runtime's elicitation pipeline — returns `true`/`false` based on the
|
|
147
|
+
* user's response in whichever surface the client offers (Beam
|
|
148
|
+
* dialog, Claude confirm prompt, CLI readline, etc.).
|
|
149
|
+
*
|
|
150
|
+
* @throws If no client with elicitation capability is connected.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* if (await this.confirm('Delete all records?')) {
|
|
155
|
+
* await purge();
|
|
156
|
+
* }
|
|
157
|
+
* ```
|
|
158
|
+
*/
|
|
159
|
+
confirm(question: string): Promise<boolean>;
|
|
160
|
+
/**
|
|
161
|
+
* Pose an arbitrary elicitation request and await the answer.
|
|
162
|
+
*
|
|
163
|
+
* Accepts any `AskYield` (text, password, select, number, form, etc.)
|
|
164
|
+
* and returns the client's response. Prefer `this.confirm()` for
|
|
165
|
+
* yes/no; use `yield { ask: ... }` inside async-generator workflows.
|
|
166
|
+
* `this.elicit()` is the imperative form for plain async methods
|
|
167
|
+
* that need a single input without the generator plumbing.
|
|
168
|
+
*
|
|
169
|
+
* The name matches MCP spec terminology (`elicitation/create`) to
|
|
170
|
+
* avoid ambiguity with the legacy `this.ask(type, message, opts)`
|
|
171
|
+
* factory, which just constructs an `AskYield` object for use with
|
|
172
|
+
* `yield`.
|
|
173
|
+
*
|
|
174
|
+
* @throws If no client with elicitation capability is connected.
|
|
175
|
+
*/
|
|
176
|
+
elicit<T = unknown>(params: AskYield): Promise<T>;
|
|
177
|
+
/**
|
|
178
|
+
* Ask the client's LLM to generate text (MCP `sampling/createMessage`).
|
|
179
|
+
*
|
|
180
|
+
* The caller's agent model generates the completion — no API key
|
|
181
|
+
* needed in the photon, and inference cost is borne by whoever is
|
|
182
|
+
* driving the tool. The client must declare the `sampling`
|
|
183
|
+
* capability during initialize; otherwise this throws.
|
|
184
|
+
*
|
|
185
|
+
* Returns just the generated text for the common case. For
|
|
186
|
+
* multi-block / image / structured responses, access the underlying
|
|
187
|
+
* provider via the runtime.
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* async summarize(params: { text: string }) {
|
|
192
|
+
* return await this.sample({
|
|
193
|
+
* prompt: `Summarize this in one sentence:\n\n${params.text}`,
|
|
194
|
+
* maxTokens: 128,
|
|
195
|
+
* });
|
|
196
|
+
* }
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
sample(params: SampleParams): Promise<string>;
|
|
200
|
+
/**
|
|
201
|
+
* Internal: resolve the runtime-supplied input provider, throwing a
|
|
202
|
+
* clear error if none is attached to the current execution context.
|
|
203
|
+
* @internal
|
|
204
|
+
*/
|
|
205
|
+
private _resolveInputProvider;
|
|
110
206
|
/**
|
|
111
207
|
* Scoped key-value storage for photon data
|
|
112
208
|
*
|
|
@@ -162,6 +258,17 @@ export declare class Photon {
|
|
|
162
258
|
* ```
|
|
163
259
|
*/
|
|
164
260
|
get schedule(): ScheduleProvider;
|
|
261
|
+
/**
|
|
262
|
+
* Runtime-injected hook that evicts an in-memory cron registration.
|
|
263
|
+
* The photon runtime (photon-repo loader) attaches a callback that
|
|
264
|
+
* IPCs the daemon's `unschedule` request; photon-core doesn't know
|
|
265
|
+
* about the daemon, so the hook is passed through to ScheduleProvider
|
|
266
|
+
* which calls it after unlinking the disk file. Without the hook,
|
|
267
|
+
* `this.schedule.cancel()` leaves a ghost registration that keeps
|
|
268
|
+
* firing until the next daemon restart.
|
|
269
|
+
* @internal
|
|
270
|
+
*/
|
|
271
|
+
_scheduleUnscheduleHook?: import('./schedule.js').UnscheduleHook;
|
|
165
272
|
/**
|
|
166
273
|
* Get an absolute path to a storage directory for this photon's data.
|
|
167
274
|
*
|
|
@@ -410,6 +517,13 @@ export declare class Photon {
|
|
|
410
517
|
executeTool(toolName: string, parameters: any, options?: {
|
|
411
518
|
outputHandler?: (data: any) => void;
|
|
412
519
|
}): Promise<any>;
|
|
520
|
+
/**
|
|
521
|
+
* If a reloader is registered and the source file has changed since it
|
|
522
|
+
* was last loaded, invoke the reloader. Silent on missing file or
|
|
523
|
+
* reloader failure — dispatch continues on the stale instance rather
|
|
524
|
+
* than throwing for an observability concern.
|
|
525
|
+
*/
|
|
526
|
+
private _statGateIfStale;
|
|
413
527
|
/**
|
|
414
528
|
* Invoke the onError observability hook with a bounded timeout. Never
|
|
415
529
|
* suppresses the original error and never throws itself — a throw or
|
package/dist/base.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAGhE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EAGb,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAEnE;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtC;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAEpE;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,CAAiB;IAEjC;;;OAGG;IACH,OAAO,CAAC,SAAS,CAAC,CAAmB;IAErC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,MAAM,IAAI,UAAU,CAGvB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMjD;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAKvD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCnD;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,MAAM,IAAI,cAAc,CAe3B;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,IAAI,QAAQ,IAAI,gBAAgB,CAc/B;IAED;;;;;;;;;OASG;IACH,uBAAuB,CAAC,EAAE,OAAO,eAAe,EAAE,cAAc,CAAC;IAEjE;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAc1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAazC;;;;;;;;;;;;;;;;;OAiBG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAS3C;;;;;;;;;;;;;;;;;OAiBG;IACH,IAAI,MAAM,IAAI;QAAE,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE,CAavE;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAwC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAClD,SAAS,CAAC,MAAM,IAAI,IAAI;IA8BxB;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,OAAO,EAAE;QACjB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;QACvD,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;QAC7D,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAA;SAAE,KAAK,IAAI,GAAG,IAAI,CAAC;KACvI,CAYC;IAEF;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAIjI;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtH;;;;;;;;;;;;;;;;;;;;OAoBG;cACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBrH;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAEzC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAsF;IAEzG;;;OAGG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;IAQ3B;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,EAAE;IA8BjC;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IA4BrH;;;;;OAKG;YACW,gBAAgB;IA6B9B;;;;;OAKG;YACW,gBAAgB;IA2B9B;;OAEG;IACH;;;OAGG;IACG,YAAY,CAAC,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAChF;;;OAGG;IACG,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D;;;;;;;OAOG;IACG,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjF;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAoBhF;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAM9C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAOzC;;;;;;;;;;;;;;;;;;;;;OAqBG;cACa,QAAQ,CAAC,CAAC,EACxB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC;IAQb;;;OAGG;IACH,YAAY,CAAC,EAAE;QACb,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QACrG,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtG,CAAC;IAEF;;;;;;;;;;;;;;;;OAgBG;cACa,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnG;;;;;;;;;;;;;;OAcG;cACa,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ3G;;;;;;;;;;;OAWG;cACa,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQlF;;;;;;;;;;;OAWG;cACa,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAMvH"}
|
package/dist/base.js
CHANGED
|
@@ -67,12 +67,38 @@ export class Photon {
|
|
|
67
67
|
* @internal
|
|
68
68
|
*/
|
|
69
69
|
_photonNamespace;
|
|
70
|
+
/**
|
|
71
|
+
* PHOTON_DIR this instance was loaded from - set by runtime loader.
|
|
72
|
+
* Pinned so .data/ resolves to the same root regardless of which
|
|
73
|
+
* process (CLI, daemon, worker) reads the photon back later. Without
|
|
74
|
+
* this pin, MemoryProvider falls back to getDefaultContext().baseDir
|
|
75
|
+
* and writes/reads can drift between cwd-derived locations.
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
_baseDir;
|
|
70
79
|
/**
|
|
71
80
|
* Absolute path to the .photon.ts/.photon.js source file - set by runtime loader
|
|
72
81
|
* Used for storage() and assets() path resolution
|
|
73
82
|
* @internal
|
|
74
83
|
*/
|
|
75
84
|
_photonFilePath;
|
|
85
|
+
/**
|
|
86
|
+
* Stat snapshot captured when the current photon instance was loaded.
|
|
87
|
+
* Used by executeTool() to detect out-of-band edits so CLI-direct and
|
|
88
|
+
* lite-loader callers see new code immediately after a file save.
|
|
89
|
+
* See `_photonReloader` for the callback invoked on change.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
_photonSourceStat;
|
|
93
|
+
/**
|
|
94
|
+
* Callback the loader registers so executeTool() can trigger a live
|
|
95
|
+
* reload when `_photonFilePath` has changed since load. The loader is
|
|
96
|
+
* expected to re-evaluate the file, replace the cached module, and
|
|
97
|
+
* update `_photonSourceStat` on success. Missing callback means the
|
|
98
|
+
* gate is a no-op (the original behavior).
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
_photonReloader;
|
|
76
102
|
/**
|
|
77
103
|
* Dynamic photon resolver - injected by runtime loader
|
|
78
104
|
* Used by this.photon.use() for runtime photon access
|
|
@@ -115,6 +141,119 @@ export class Photon {
|
|
|
115
141
|
const store = executionContext.getStore();
|
|
116
142
|
return store?.caller ?? { id: 'anonymous', anonymous: true };
|
|
117
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* Ask the caller a yes/no question and await the answer.
|
|
146
|
+
*
|
|
147
|
+
* Imperative sugar over the existing `{ ask: 'confirm' }` yield.
|
|
148
|
+
* Works in any method (generator or plain async), routed through the
|
|
149
|
+
* runtime's elicitation pipeline — returns `true`/`false` based on the
|
|
150
|
+
* user's response in whichever surface the client offers (Beam
|
|
151
|
+
* dialog, Claude confirm prompt, CLI readline, etc.).
|
|
152
|
+
*
|
|
153
|
+
* @throws If no client with elicitation capability is connected.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* if (await this.confirm('Delete all records?')) {
|
|
158
|
+
* await purge();
|
|
159
|
+
* }
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
async confirm(question) {
|
|
163
|
+
const provider = this._resolveInputProvider('this.confirm()');
|
|
164
|
+
const result = await provider({ ask: 'confirm', question, message: question });
|
|
165
|
+
return Boolean(result);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Pose an arbitrary elicitation request and await the answer.
|
|
169
|
+
*
|
|
170
|
+
* Accepts any `AskYield` (text, password, select, number, form, etc.)
|
|
171
|
+
* and returns the client's response. Prefer `this.confirm()` for
|
|
172
|
+
* yes/no; use `yield { ask: ... }` inside async-generator workflows.
|
|
173
|
+
* `this.elicit()` is the imperative form for plain async methods
|
|
174
|
+
* that need a single input without the generator plumbing.
|
|
175
|
+
*
|
|
176
|
+
* The name matches MCP spec terminology (`elicitation/create`) to
|
|
177
|
+
* avoid ambiguity with the legacy `this.ask(type, message, opts)`
|
|
178
|
+
* factory, which just constructs an `AskYield` object for use with
|
|
179
|
+
* `yield`.
|
|
180
|
+
*
|
|
181
|
+
* @throws If no client with elicitation capability is connected.
|
|
182
|
+
*/
|
|
183
|
+
async elicit(params) {
|
|
184
|
+
const provider = this._resolveInputProvider('this.elicit()');
|
|
185
|
+
return (await provider(params));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Ask the client's LLM to generate text (MCP `sampling/createMessage`).
|
|
189
|
+
*
|
|
190
|
+
* The caller's agent model generates the completion — no API key
|
|
191
|
+
* needed in the photon, and inference cost is borne by whoever is
|
|
192
|
+
* driving the tool. The client must declare the `sampling`
|
|
193
|
+
* capability during initialize; otherwise this throws.
|
|
194
|
+
*
|
|
195
|
+
* Returns just the generated text for the common case. For
|
|
196
|
+
* multi-block / image / structured responses, access the underlying
|
|
197
|
+
* provider via the runtime.
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* ```typescript
|
|
201
|
+
* async summarize(params: { text: string }) {
|
|
202
|
+
* return await this.sample({
|
|
203
|
+
* prompt: `Summarize this in one sentence:\n\n${params.text}`,
|
|
204
|
+
* maxTokens: 128,
|
|
205
|
+
* });
|
|
206
|
+
* }
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
async sample(params) {
|
|
210
|
+
const store = executionContext.getStore();
|
|
211
|
+
const provider = store?.samplingProvider;
|
|
212
|
+
if (!provider) {
|
|
213
|
+
throw new Error('this.sample() requires the connected MCP client to declare the ' +
|
|
214
|
+
'`sampling` capability. None is available in this invocation — ' +
|
|
215
|
+
"either the client didn't declare sampling during initialize, or " +
|
|
216
|
+
'this method is being called outside an MCP request context (e.g. ' +
|
|
217
|
+
'from a scheduled task without a live session).');
|
|
218
|
+
}
|
|
219
|
+
if (!params.prompt && !params.messages?.length) {
|
|
220
|
+
throw new Error('this.sample() requires either `prompt` or `messages`.');
|
|
221
|
+
}
|
|
222
|
+
const messages = params.messages ??
|
|
223
|
+
[{ role: 'user', content: { type: 'text', text: params.prompt } }];
|
|
224
|
+
const result = await provider({
|
|
225
|
+
messages,
|
|
226
|
+
systemPrompt: params.systemPrompt,
|
|
227
|
+
maxTokens: params.maxTokens ?? 1024,
|
|
228
|
+
temperature: params.temperature,
|
|
229
|
+
modelPreferences: params.modelPreferences,
|
|
230
|
+
stopSequences: params.stopSequences,
|
|
231
|
+
includeContext: params.includeContext,
|
|
232
|
+
});
|
|
233
|
+
const first = Array.isArray(result.content) ? result.content[0] : result.content;
|
|
234
|
+
if (first && first.type === 'text')
|
|
235
|
+
return first.text;
|
|
236
|
+
// Non-text responses (image-only) — return empty string rather than
|
|
237
|
+
// a JSON-stringified blob so callers can reliably concatenate the
|
|
238
|
+
// result. Users needing image output should hit the provider directly.
|
|
239
|
+
return '';
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Internal: resolve the runtime-supplied input provider, throwing a
|
|
243
|
+
* clear error if none is attached to the current execution context.
|
|
244
|
+
* @internal
|
|
245
|
+
*/
|
|
246
|
+
_resolveInputProvider(forMethod) {
|
|
247
|
+
const store = executionContext.getStore();
|
|
248
|
+
const provider = store?.inputProvider;
|
|
249
|
+
if (!provider) {
|
|
250
|
+
throw new Error(`${forMethod} requires a connected MCP client that supports elicitation. ` +
|
|
251
|
+
'The runtime attaches an input provider for every tool invocation; ' +
|
|
252
|
+
"this call is running outside that context (e.g. a background task " +
|
|
253
|
+
'without a session, or a client that declined elicitation).');
|
|
254
|
+
}
|
|
255
|
+
return provider;
|
|
256
|
+
}
|
|
118
257
|
/**
|
|
119
258
|
* Scoped key-value storage for photon data
|
|
120
259
|
*
|
|
@@ -143,7 +282,7 @@ export class Photon {
|
|
|
143
282
|
.replace(/([A-Z])/g, '-$1')
|
|
144
283
|
.toLowerCase()
|
|
145
284
|
.replace(/^-/, '');
|
|
146
|
-
this._memory = new MemoryProvider(name, this._sessionId, this._photonNamespace);
|
|
285
|
+
this._memory = new MemoryProvider(name, this._sessionId, this._photonNamespace, this._baseDir);
|
|
147
286
|
}
|
|
148
287
|
return this._memory;
|
|
149
288
|
}
|
|
@@ -186,10 +325,21 @@ export class Photon {
|
|
|
186
325
|
.replace(/([A-Z])/g, '-$1')
|
|
187
326
|
.toLowerCase()
|
|
188
327
|
.replace(/^-/, '');
|
|
189
|
-
this._schedule = new ScheduleProvider(name);
|
|
328
|
+
this._schedule = new ScheduleProvider(name, this._baseDir, this._scheduleUnscheduleHook);
|
|
190
329
|
}
|
|
191
330
|
return this._schedule;
|
|
192
331
|
}
|
|
332
|
+
/**
|
|
333
|
+
* Runtime-injected hook that evicts an in-memory cron registration.
|
|
334
|
+
* The photon runtime (photon-repo loader) attaches a callback that
|
|
335
|
+
* IPCs the daemon's `unschedule` request; photon-core doesn't know
|
|
336
|
+
* about the daemon, so the hook is passed through to ScheduleProvider
|
|
337
|
+
* which calls it after unlinking the disk file. Without the hook,
|
|
338
|
+
* `this.schedule.cancel()` leaves a ghost registration that keeps
|
|
339
|
+
* firing until the next daemon restart.
|
|
340
|
+
* @internal
|
|
341
|
+
*/
|
|
342
|
+
_scheduleUnscheduleHook;
|
|
193
343
|
/**
|
|
194
344
|
* Get an absolute path to a storage directory for this photon's data.
|
|
195
345
|
*
|
|
@@ -529,6 +679,14 @@ export class Photon {
|
|
|
529
679
|
* Execute a tool method
|
|
530
680
|
*/
|
|
531
681
|
async executeTool(toolName, parameters, options) {
|
|
682
|
+
// Stat-gate: close the edit→dispatch race on non-daemon paths. The
|
|
683
|
+
// daemon has its own equivalent at src/daemon/server.ts; this runs
|
|
684
|
+
// for CLI-direct dispatch and for callers using the lite loader's
|
|
685
|
+
// programmatic photon() API. If the source file has changed since
|
|
686
|
+
// the instance was loaded, hand off to the loader-registered
|
|
687
|
+
// reloader before dispatching so the first call after a save sees
|
|
688
|
+
// the new code.
|
|
689
|
+
await this._statGateIfStale();
|
|
532
690
|
const method = this[toolName];
|
|
533
691
|
if (!method || typeof method !== 'function') {
|
|
534
692
|
throw new Error(`Tool not found: ${toolName}`);
|
|
@@ -545,6 +703,41 @@ export class Photon {
|
|
|
545
703
|
}
|
|
546
704
|
});
|
|
547
705
|
}
|
|
706
|
+
/**
|
|
707
|
+
* If a reloader is registered and the source file has changed since it
|
|
708
|
+
* was last loaded, invoke the reloader. Silent on missing file or
|
|
709
|
+
* reloader failure — dispatch continues on the stale instance rather
|
|
710
|
+
* than throwing for an observability concern.
|
|
711
|
+
*/
|
|
712
|
+
async _statGateIfStale() {
|
|
713
|
+
const filePath = this._photonFilePath;
|
|
714
|
+
const reloader = this._photonReloader;
|
|
715
|
+
const cached = this._photonSourceStat;
|
|
716
|
+
if (!filePath || !reloader || !cached)
|
|
717
|
+
return;
|
|
718
|
+
let current = null;
|
|
719
|
+
try {
|
|
720
|
+
const s = fs.statSync(filePath);
|
|
721
|
+
current = { mtimeMs: s.mtimeMs, size: s.size, ino: s.ino };
|
|
722
|
+
}
|
|
723
|
+
catch {
|
|
724
|
+
// Source gone or unreadable — nothing to gate against. Dispatch
|
|
725
|
+
// will surface the missing-photon error through its own path.
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
if (current.mtimeMs === cached.mtimeMs &&
|
|
729
|
+
current.size === cached.size &&
|
|
730
|
+
current.ino === cached.ino) {
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
try {
|
|
734
|
+
await reloader();
|
|
735
|
+
}
|
|
736
|
+
catch {
|
|
737
|
+
// Reloader errors are non-fatal — keep running on the stale
|
|
738
|
+
// instance rather than making dispatch itself fail.
|
|
739
|
+
}
|
|
740
|
+
}
|
|
548
741
|
/**
|
|
549
742
|
* Invoke the onError observability hook with a bounded timeout. Never
|
|
550
743
|
* suppresses the original error and never throws itself — a throw or
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
/** Max length of a cleaned description. Anything longer is an attack surface. */
|
|
14
|
+
export declare const MAX_DESCRIPTION_LENGTH = 2000;
|
|
15
|
+
export interface SanitizerWarning {
|
|
16
|
+
/** Label of the rule that fired. */
|
|
17
|
+
rule: string;
|
|
18
|
+
/** Short slice of the matched text for forensics (capped at 80 chars). */
|
|
19
|
+
sample: string;
|
|
20
|
+
}
|
|
21
|
+
export interface SanitizeResult {
|
|
22
|
+
cleaned: string;
|
|
23
|
+
warnings: SanitizerWarning[];
|
|
24
|
+
/** Whether the string was truncated because it exceeded MAX_DESCRIPTION_LENGTH. */
|
|
25
|
+
truncated: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Strip invisible codepoints, redact instruction markers, and cap length.
|
|
29
|
+
* Idempotent: sanitize(sanitize(x).cleaned).cleaned === sanitize(x).cleaned
|
|
30
|
+
* so callers can apply it defensively without risking duplicate `[REDACTED]`
|
|
31
|
+
* tokens.
|
|
32
|
+
*/
|
|
33
|
+
export declare function sanitizeDescription(input: string): SanitizeResult;
|
|
34
|
+
//# sourceMappingURL=description-sanitizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-sanitizer.d.ts","sourceRoot":"","sources":["../src/description-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiCH,iFAAiF;AACjF,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CA2BjE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
* Unicode ranges that are invisible to humans but preserved by LLM tokenizers.
|
|
15
|
+
* Stripped unconditionally — no legitimate doc string needs them.
|
|
16
|
+
*
|
|
17
|
+
* U+200B ZERO WIDTH SPACE
|
|
18
|
+
* U+200C ZERO WIDTH NON-JOINER
|
|
19
|
+
* U+200D ZERO WIDTH JOINER
|
|
20
|
+
* U+200E LEFT-TO-RIGHT MARK
|
|
21
|
+
* U+200F RIGHT-TO-LEFT MARK
|
|
22
|
+
* U+202A-E LRE/RLE/PDF/LRO/RLO (bidi override)
|
|
23
|
+
* U+2060 WORD JOINER
|
|
24
|
+
* U+2066-9 LRI/RLI/FSI/PDI (bidi isolate)
|
|
25
|
+
* U+FEFF ZERO WIDTH NO-BREAK SPACE (BOM)
|
|
26
|
+
*/
|
|
27
|
+
const INVISIBLE_CHARS = /[\u200B-\u200F\u202A-\u202E\u2060\u2066-\u2069\uFEFF]/g;
|
|
28
|
+
/**
|
|
29
|
+
* Instruction-bracket patterns commonly used in tool-poisoning payloads.
|
|
30
|
+
* Each match is replaced with `[REDACTED]` and counted as a warning.
|
|
31
|
+
*/
|
|
32
|
+
const INSTRUCTION_PATTERNS = [
|
|
33
|
+
// Bracketed system directives: [[SYSTEM: ...]], [INST] ... [/INST], <|im_start|>...<|im_end|>
|
|
34
|
+
{ name: 'bracketed-system', pattern: /\[{1,2}\s*SYSTEM\s*:[^\]]*\]{1,2}/gi },
|
|
35
|
+
{ name: 'llama-inst', pattern: /\[\/?INST\]/gi },
|
|
36
|
+
{ name: 'chatml-tag', pattern: /<\|im_(?:start|end|sep)\|>/gi },
|
|
37
|
+
// Verbatim instruction phrases that only appear in jailbreaks, never in docs.
|
|
38
|
+
{ name: 'ignore-previous', pattern: /\bignore\s+(?:all\s+|the\s+)?(?:previous|prior|above)\s+instructions?\b/gi },
|
|
39
|
+
{ name: 'disregard-previous', pattern: /\bdisregard\s+(?:all\s+|the\s+)?(?:previous|prior|above)\b/gi },
|
|
40
|
+
{ name: 'system-prompt-literal', pattern: /\bSYSTEM[_\s-]?PROMPT\b/g },
|
|
41
|
+
];
|
|
42
|
+
/** Max length of a cleaned description. Anything longer is an attack surface. */
|
|
43
|
+
export const MAX_DESCRIPTION_LENGTH = 2000;
|
|
44
|
+
/**
|
|
45
|
+
* Strip invisible codepoints, redact instruction markers, and cap length.
|
|
46
|
+
* Idempotent: sanitize(sanitize(x).cleaned).cleaned === sanitize(x).cleaned
|
|
47
|
+
* so callers can apply it defensively without risking duplicate `[REDACTED]`
|
|
48
|
+
* tokens.
|
|
49
|
+
*/
|
|
50
|
+
export function sanitizeDescription(input) {
|
|
51
|
+
const warnings = [];
|
|
52
|
+
// Step 1: strip invisibles. Counts as one warning if any were present.
|
|
53
|
+
const withoutInvisibles = input.replace(INVISIBLE_CHARS, (match) => {
|
|
54
|
+
warnings.push({ rule: 'invisible-char', sample: codepointSample(match) });
|
|
55
|
+
return '';
|
|
56
|
+
});
|
|
57
|
+
// Step 2: redact each known instruction pattern.
|
|
58
|
+
let redacted = withoutInvisibles;
|
|
59
|
+
for (const { name, pattern } of INSTRUCTION_PATTERNS) {
|
|
60
|
+
redacted = redacted.replace(pattern, (match) => {
|
|
61
|
+
warnings.push({ rule: name, sample: match.slice(0, 80) });
|
|
62
|
+
return '[REDACTED]';
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
// Step 3: cap length. An attacker-friendly 50KB description is itself a
|
|
66
|
+
// prompt-injection vector via context-window flooding (OWASP MCP #10).
|
|
67
|
+
let truncated = false;
|
|
68
|
+
if (redacted.length > MAX_DESCRIPTION_LENGTH) {
|
|
69
|
+
redacted = redacted.slice(0, MAX_DESCRIPTION_LENGTH) + '…';
|
|
70
|
+
truncated = true;
|
|
71
|
+
}
|
|
72
|
+
return { cleaned: redacted, warnings, truncated };
|
|
73
|
+
}
|
|
74
|
+
function codepointSample(s) {
|
|
75
|
+
return Array.from(s)
|
|
76
|
+
.map((c) => 'U+' + c.codePointAt(0).toString(16).toUpperCase().padStart(4, '0'))
|
|
77
|
+
.join(',')
|
|
78
|
+
.slice(0, 80);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=description-sanitizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-sanitizer.js","sourceRoot":"","sources":["../src/description-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,eAAe,GAAG,wDAAwD,CAAC;AAEjF;;;GAGG;AACH,MAAM,oBAAoB,GAA6C;IACrE,8FAA8F;IAC9F,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,qCAAqC,EAAE;IAC5E,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE;IAChD,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,8BAA8B,EAAE;IAC/D,8EAA8E;IAC9E,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,2EAA2E,EAAE;IACjH,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,8DAA8D,EAAE;IACvG,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,0BAA0B,EAAE;CACvE,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAgB3C;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,uEAAuE;IACvE,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,iDAAiD;IACjD,IAAI,QAAQ,GAAG,iBAAiB,CAAC;IACjC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,oBAAoB,EAAE,CAAC;QACrD,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC7C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO,YAAY,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,uEAAuE;IACvE,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,QAAQ,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QAC7C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,CAAC,GAAG,GAAG,CAAC;QAC3D,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SACjB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAChF,IAAI,CAAC,GAAG,CAAC;SACT,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC"}
|