@portel/photon-core 2.8.4 → 2.9.1
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 +7 -7
- package/dist/base.d.ts.map +1 -1
- package/dist/base.js +8 -8
- package/dist/base.js.map +1 -1
- package/dist/collections/Collection.d.ts +2 -2
- package/dist/collections/Collection.js +2 -2
- package/dist/compiler.js +7 -7
- package/dist/compiler.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -4
- package/dist/index.js.map +1 -1
- package/dist/instance-store.d.ts +64 -0
- package/dist/instance-store.d.ts.map +1 -0
- package/dist/instance-store.js +144 -0
- package/dist/instance-store.js.map +1 -0
- package/dist/memory.d.ts +2 -2
- package/dist/memory.js +2 -2
- package/dist/middleware.d.ts +69 -0
- package/dist/middleware.d.ts.map +1 -0
- package/dist/middleware.js +570 -0
- package/dist/middleware.js.map +1 -0
- package/dist/schema-extractor.d.ts +111 -1
- package/dist/schema-extractor.d.ts.map +1 -1
- package/dist/schema-extractor.js +337 -2
- package/dist/schema-extractor.js.map +1 -1
- package/dist/stateful.d.ts +2 -0
- package/dist/stateful.d.ts.map +1 -1
- package/dist/stateful.js +2 -0
- package/dist/stateful.js.map +1 -1
- package/dist/types.d.ts +111 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/duration.d.ts +24 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +64 -0
- package/dist/utils/duration.js.map +1 -0
- package/dist/watcher.d.ts +62 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +270 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +2 -2
- package/src/base.ts +8 -8
- package/src/collections/Collection.ts +2 -2
- package/src/compiler.ts +7 -7
- package/src/config.ts +1 -1
- package/src/index.ts +34 -4
- package/src/instance-store.ts +155 -0
- package/src/memory.ts +2 -2
- package/src/middleware.ts +714 -0
- package/src/schema-extractor.ts +358 -2
- package/src/stateful.ts +4 -0
- package/src/types.ts +106 -5
- package/src/utils/duration.ts +67 -0
- package/src/watcher.ts +317 -0
package/dist/base.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Photon Base Class
|
|
3
3
|
*
|
|
4
|
-
* Optional base class for creating
|
|
4
|
+
* Optional base class for creating Photons.
|
|
5
5
|
* You don't need to extend this - any class with async methods works!
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* ```typescript
|
|
9
|
-
* export default class Calculator extends
|
|
9
|
+
* export default class Calculator extends Photon {
|
|
10
10
|
* /**
|
|
11
11
|
* * Add two numbers together
|
|
12
12
|
* * @param a First number
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
*
|
|
30
30
|
* With MCP access (requires runtime support):
|
|
31
31
|
* ```typescript
|
|
32
|
-
* export default class SlackReporter extends
|
|
32
|
+
* export default class SlackReporter extends Photon {
|
|
33
33
|
* async report() {
|
|
34
34
|
* const github = this.mcp('github');
|
|
35
35
|
* const issues = await github.call('list_issues', { repo: 'foo/bar' });
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
import { MCPClient, MCPClientFactory } from '@portel/mcp';
|
|
42
42
|
import { MemoryProvider } from './memory.js';
|
|
43
43
|
/**
|
|
44
|
-
* Simple base class for creating
|
|
44
|
+
* Simple base class for creating Photons
|
|
45
45
|
*
|
|
46
|
-
* - Class name =
|
|
46
|
+
* - Class name = Photon name
|
|
47
47
|
* - Public async methods = Tools
|
|
48
48
|
* - Return value = Tool result
|
|
49
49
|
*/
|
|
50
|
-
export declare class
|
|
50
|
+
export declare class Photon {
|
|
51
51
|
/**
|
|
52
52
|
* Photon name (MCP name) - set by runtime loader
|
|
53
53
|
* Used to identify the source of emitted events for injected photon routing
|
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;AAI1E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;GAMG;AACH,qBAAa,
|
|
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;AAI1E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;GAMG;AACH,qBAAa,MAAM;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,OAAO,CAAC,CAAiB;IAEjC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,IAAI,MAAM,IAAI,cAAc,CAU3B;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IA+B/B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7F;;;;;;;;;;;;;;;;;;;;OAoBG;cACa,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBpF;;;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;IAiCjC;;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;IAkBrH;;OAEG;IACG,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;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;CAGd"}
|
package/dist/base.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Photon Base Class
|
|
3
3
|
*
|
|
4
|
-
* Optional base class for creating
|
|
4
|
+
* Optional base class for creating Photons.
|
|
5
5
|
* You don't need to extend this - any class with async methods works!
|
|
6
6
|
*
|
|
7
7
|
* Usage:
|
|
8
8
|
* ```typescript
|
|
9
|
-
* export default class Calculator extends
|
|
9
|
+
* export default class Calculator extends Photon {
|
|
10
10
|
* /**
|
|
11
11
|
* * Add two numbers together
|
|
12
12
|
* * @param a First number
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
*
|
|
30
30
|
* With MCP access (requires runtime support):
|
|
31
31
|
* ```typescript
|
|
32
|
-
* export default class SlackReporter extends
|
|
32
|
+
* export default class SlackReporter extends Photon {
|
|
33
33
|
* async report() {
|
|
34
34
|
* const github = this.mcp('github');
|
|
35
35
|
* const issues = await github.call('list_issues', { repo: 'foo/bar' });
|
|
@@ -44,13 +44,13 @@ import { getBroker } from './channels/index.js';
|
|
|
44
44
|
import { withLock as withLockHelper } from './decorators.js';
|
|
45
45
|
import { MemoryProvider } from './memory.js';
|
|
46
46
|
/**
|
|
47
|
-
* Simple base class for creating
|
|
47
|
+
* Simple base class for creating Photons
|
|
48
48
|
*
|
|
49
|
-
* - Class name =
|
|
49
|
+
* - Class name = Photon name
|
|
50
50
|
* - Public async methods = Tools
|
|
51
51
|
* - Return value = Tool result
|
|
52
52
|
*/
|
|
53
|
-
export class
|
|
53
|
+
export class Photon {
|
|
54
54
|
/**
|
|
55
55
|
* Photon name (MCP name) - set by runtime loader
|
|
56
56
|
* Used to identify the source of emitted events for injected photon routing
|
|
@@ -224,7 +224,7 @@ export class PhotonMCP {
|
|
|
224
224
|
]);
|
|
225
225
|
// Get all property names from prototype chain
|
|
226
226
|
let current = prototype;
|
|
227
|
-
while (current && current !==
|
|
227
|
+
while (current && current !== Photon.prototype) {
|
|
228
228
|
Object.getOwnPropertyNames(current).forEach((name) => {
|
|
229
229
|
// Skip private methods (starting with _) and convention methods
|
|
230
230
|
if (!name.startsWith('_') &&
|
package/dist/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAA+B,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```typescript
|
|
10
|
-
* import {
|
|
10
|
+
* import { Photon, Collection } from '@portel/photon-core';
|
|
11
11
|
*
|
|
12
|
-
* export default class ProductCatalog extends
|
|
12
|
+
* export default class ProductCatalog extends Photon {
|
|
13
13
|
* products = new Collection<Product>();
|
|
14
14
|
*
|
|
15
15
|
* async catalog() {
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
9
9
|
* ```typescript
|
|
10
|
-
* import {
|
|
10
|
+
* import { Photon, Collection } from '@portel/photon-core';
|
|
11
11
|
*
|
|
12
|
-
* export default class ProductCatalog extends
|
|
12
|
+
* export default class ProductCatalog extends Photon {
|
|
13
13
|
* products = new Collection<Product>();
|
|
14
14
|
*
|
|
15
15
|
* async catalog() {
|
package/dist/compiler.js
CHANGED
|
@@ -19,9 +19,9 @@ import * as crypto from 'crypto';
|
|
|
19
19
|
* @returns Absolute path to the compiled .mjs file
|
|
20
20
|
*/
|
|
21
21
|
/**
|
|
22
|
-
* Transform arrays to reactive collections for
|
|
22
|
+
* Transform arrays to reactive collections for Photon classes
|
|
23
23
|
*
|
|
24
|
-
* ZERO-EFFORT REACTIVITY: If a class extends PhotonMCP and has array properties,
|
|
24
|
+
* ZERO-EFFORT REACTIVITY: If a class extends Photon (or PhotonMCP) and has array properties,
|
|
25
25
|
* this transform automatically:
|
|
26
26
|
* 1. Injects `import { Array as ReactiveArray } from '@portel/photon-core'`
|
|
27
27
|
* 2. Transforms `= []` to `= new ReactiveArray()` for class properties
|
|
@@ -30,23 +30,23 @@ import * as crypto from 'crypto';
|
|
|
30
30
|
*
|
|
31
31
|
* ```typescript
|
|
32
32
|
* // Developer writes this (normal TypeScript):
|
|
33
|
-
* export default class TodoList extends
|
|
33
|
+
* export default class TodoList extends Photon {
|
|
34
34
|
* items: Task[] = [];
|
|
35
35
|
* async add(text: string) { this.items.push({...}); }
|
|
36
36
|
* }
|
|
37
37
|
*
|
|
38
38
|
* // Compiler transforms to:
|
|
39
39
|
* import { Array as ReactiveArray } from '@portel/photon-core';
|
|
40
|
-
* export default class TodoList extends
|
|
40
|
+
* export default class TodoList extends Photon {
|
|
41
41
|
* items = new ReactiveArray();
|
|
42
42
|
* async add(text: string) { this.items.push({...}); } // Auto-emits!
|
|
43
43
|
* }
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
46
|
function transformReactiveCollections(source) {
|
|
47
|
-
// Check if this is a
|
|
48
|
-
const
|
|
49
|
-
if (!
|
|
47
|
+
// Check if this is a Photon class (extends Photon or extends PhotonMCP)
|
|
48
|
+
const isPhotonClass = /class\s+\w+\s+extends\s+(?:Photon|PhotonMCP)\b/.test(source);
|
|
49
|
+
if (!isPhotonClass)
|
|
50
50
|
return source;
|
|
51
51
|
// Check if there are array properties with = [] that need transformation
|
|
52
52
|
// Look for patterns like: `items: Type[] = []` or `items = []` (class properties)
|
package/dist/compiler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC;;;;;;;GAOG;AACH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,4BAA4B,CAAC,MAAc;IAClD,
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* ```typescript
|
|
9
9
|
* import { loadPhotonConfig, savePhotonConfig, getPhotonConfigPath } from '@portel/photon-core';
|
|
10
10
|
*
|
|
11
|
-
* export default class MyPhoton extends
|
|
11
|
+
* export default class MyPhoton extends Photon {
|
|
12
12
|
* async configure(params: { apiKey: string }) {
|
|
13
13
|
* savePhotonConfig('my-photon', params);
|
|
14
14
|
* return { success: true, config: params };
|
package/dist/config.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* ```typescript
|
|
9
9
|
* import { loadPhotonConfig, savePhotonConfig, getPhotonConfigPath } from '@portel/photon-core';
|
|
10
10
|
*
|
|
11
|
-
* export default class MyPhoton extends
|
|
11
|
+
* export default class MyPhoton extends Photon {
|
|
12
12
|
* async configure(params: { apiKey: string }) {
|
|
13
13
|
* savePhotonConfig('my-photon', params);
|
|
14
14
|
* return { success: true, config: params };
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
|
-
* import {
|
|
14
|
+
* import { Photon, DependencyManager, SchemaExtractor } from '@portel/photon-core';
|
|
15
15
|
*
|
|
16
16
|
* // Load and parse a Photon class
|
|
17
17
|
* const photonClass = await import('./my-tool.photon.ts');
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
*/
|
|
35
35
|
export { type OutputFormat, type TextWrapOptions, type FuzzyMatch, type ExecutionContext, type LogLevel, type LoggerOptions, formatOutput, detectFormat, renderPrimitive, renderList, renderTable, renderTree, renderNone, formatKey, formatValue, formatToMimeType, printSuccess, printError, printInfo, printWarning, printHeader, STATUS, ProgressRenderer, getProgressRenderer, startSpinner, showProgress, updateProgressMessage, stopProgress, isProgressActive, executionContext, runWithContext, getContext, TextUtils, FuzzyMatcher, fuzzyMatch, fuzzyScore, findBestMatch, Logger, createLogger, getLogger, } from '@portel/cli';
|
|
36
36
|
export { type MCPToolInfo, type MCPToolResult, type MCPTransport, type MCPSourceType, type MissingMCPInfo, type MCPServerConfig, type MCPConfig, type PhotonMCPConfig, type ElicitOptions, type ElicitResult, type PromptHandler, type ElicitHandler, MCPClient, type MCPClientFactory, MCPError, MCPNotConnectedError, MCPToolError, MCPConfigurationError, createMCPProxy, SDKMCPTransport, SDKMCPClientFactory, loadMCPConfig, createSDKMCPClientFactory, resolveMCPSource, PHOTON_CONFIG_DIR, MCP_SERVERS_CONFIG_FILE, loadPhotonMCPConfig, savePhotonMCPConfig, isMCPConfigured, getMCPServerConfig, listMCPServers, setMCPServerConfig, removeMCPServerConfig, toMCPConfig, resolveEnvVars, prompt, confirm, elicit, elicitReadline, elicitNativeDialog, setPromptHandler, getPromptHandler, setElicitHandler, getElicitHandler, } from '@portel/mcp';
|
|
37
|
-
export { PhotonMCP } from './base.js';
|
|
37
|
+
export { Photon, Photon as PhotonMCP } from './base.js';
|
|
38
38
|
export { DependencyManager } from './dependency-manager.js';
|
|
39
|
-
export { SchemaExtractor } from './schema-extractor.js';
|
|
39
|
+
export { SchemaExtractor, detectCapabilities, type PhotonCapability } from './schema-extractor.js';
|
|
40
40
|
export { resolvePath, listFiles, ensureDir, resolvePhotonPath, listPhotonFiles, ensurePhotonDir, DEFAULT_PHOTON_DIR, type ResolverOptions, } from './path-resolver.js';
|
|
41
41
|
export * from './types.js';
|
|
42
42
|
export { isAskYield, isEmitYield, isCheckpointYield, getAskType, getEmitType, isAsyncGeneratorFunction, isAsyncGenerator, executeGenerator, extractAsks, createPrefilledProvider, NeedsInputError, wrapAsGenerator, type AskYield, type AskText, type AskPassword, type AskConfirm, type AskSelect, type AskNumber, type AskFile, type AskDate, type AskForm, type AskUrl, type SelectOption, type SelectOptionObject, type FormSchema, type FormSchemaProperty, type FormSchemaArrayProperty, type ElicitAction, type FormElicitResult, type EmitYield, type EmitStatus, type EmitProgress, type EmitStream, type EmitLog, type EmitToast, type EmitThinking, type EmitArtifact, type EmitUI, type CheckpointYield, type PhotonYield, type StatefulYield, type InputProvider, type OutputHandler, type GeneratorExecutorConfig, type ExtractedAsk, } from './generator.js';
|
|
@@ -60,6 +60,10 @@ export { PhotonError, ValidationError, type ValidationResult, type Validator, co
|
|
|
60
60
|
export { AuditTrail, getAuditTrail, setAuditTrail, generateExecutionId, type ExecutionRecord, type AuditQueryOptions, } from './audit.js';
|
|
61
61
|
export { MemoryProvider, type MemoryScope, } from './memory.js';
|
|
62
62
|
export { discoverAssets, autoDiscoverAssets, } from './asset-discovery.js';
|
|
63
|
+
export { parseDuration, parseRate } from './utils/duration.js';
|
|
64
|
+
export { defineMiddleware, builtinRegistry, MiddlewareRegistry, createStateStore, buildMiddlewareChain, hashParams, BUILT_IN_VALIDATORS, type MiddlewareDefinition, type MiddlewareContext, type MiddlewareHandler, type MiddlewareState, type MiddlewareDeclaration, type NextFn, } from './middleware.js';
|
|
65
|
+
export { PhotonWatcher, type PhotonWatcherOptions } from './watcher.js';
|
|
66
|
+
export { InstanceStore, type InstanceStoreOptions } from './instance-store.js';
|
|
63
67
|
export { Array, // Shadows global Array
|
|
64
68
|
Map, // Shadows global Map
|
|
65
69
|
Set, // Shadows global Set
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAIH,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,aAAa,EAGlB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM,EAGN,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAChB,cAAc,EACd,UAAU,EAGV,SAAS,EAGT,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa,EAGb,MAAM,EACN,YAAY,EACZ,SAAS,GACV,MAAM,aAAa,CAAC;AAIrB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,SAAS,EACT,KAAK,gBAAgB,EACrB,QAAQ,EACR,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EAGd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAGhB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,cAAc,EAGd,MAAM,EACN,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```typescript
|
|
14
|
-
* import {
|
|
14
|
+
* import { Photon, DependencyManager, SchemaExtractor } from '@portel/photon-core';
|
|
15
15
|
*
|
|
16
16
|
* // Load and parse a Photon class
|
|
17
17
|
* const photonClass = await import('./my-tool.photon.ts');
|
|
@@ -60,11 +60,11 @@ PHOTON_CONFIG_DIR, MCP_SERVERS_CONFIG_FILE, loadPhotonMCPConfig, savePhotonMCPCo
|
|
|
60
60
|
prompt, confirm, elicit, elicitReadline, elicitNativeDialog, setPromptHandler, getPromptHandler, setElicitHandler, getElicitHandler, } from '@portel/mcp';
|
|
61
61
|
// ===== PHOTON-SPECIFIC EXPORTS =====
|
|
62
62
|
// Core base class with lifecycle hooks
|
|
63
|
-
export { PhotonMCP } from './base.js';
|
|
63
|
+
export { Photon, Photon as PhotonMCP } from './base.js';
|
|
64
64
|
// Dependency management
|
|
65
65
|
export { DependencyManager } from './dependency-manager.js';
|
|
66
66
|
// Schema extraction
|
|
67
|
-
export { SchemaExtractor } from './schema-extractor.js';
|
|
67
|
+
export { SchemaExtractor, detectCapabilities } from './schema-extractor.js';
|
|
68
68
|
// Path resolution (Photon-specific paths)
|
|
69
69
|
export { resolvePath, listFiles, ensureDir, resolvePhotonPath, listPhotonFiles, ensurePhotonDir, DEFAULT_PHOTON_DIR, } from './path-resolver.js';
|
|
70
70
|
// Types
|
|
@@ -133,11 +133,23 @@ export { PhotonError, ValidationError, combineResults, isString, isNumber, isBoo
|
|
|
133
133
|
// Zero-effort execution recording for debugging and observability
|
|
134
134
|
export { AuditTrail, getAuditTrail, setAuditTrail, generateExecutionId, } from './audit.js';
|
|
135
135
|
// ===== SCOPED MEMORY =====
|
|
136
|
-
// Framework-level key-value storage (this.memory on
|
|
136
|
+
// Framework-level key-value storage (this.memory on Photon base class)
|
|
137
137
|
export { MemoryProvider, } from './memory.js';
|
|
138
138
|
// ===== ASSET DISCOVERY =====
|
|
139
139
|
// Discover UI, prompt, and resource assets from Photon files
|
|
140
140
|
export { discoverAssets, autoDiscoverAssets, } from './asset-discovery.js';
|
|
141
|
+
// ===== DURATION PARSING =====
|
|
142
|
+
// Duration and rate string parsing for functional tags
|
|
143
|
+
export { parseDuration, parseRate } from './utils/duration.js';
|
|
144
|
+
// ===== EXTENSIBLE MIDDLEWARE =====
|
|
145
|
+
// Registry-based middleware system for functional tags and custom middleware
|
|
146
|
+
export { defineMiddleware, builtinRegistry, MiddlewareRegistry, createStateStore, buildMiddlewareChain, hashParams, BUILT_IN_VALIDATORS, } from './middleware.js';
|
|
147
|
+
// ===== FILE WATCHING =====
|
|
148
|
+
// Reusable photon file watcher with symlink resolution, debouncing, rename handling
|
|
149
|
+
export { PhotonWatcher } from './watcher.js';
|
|
150
|
+
// ===== INSTANCE STORE =====
|
|
151
|
+
// Named instance state persistence for daemon, NCP, Lumina
|
|
152
|
+
export { InstanceStore } from './instance-store.js';
|
|
141
153
|
// ===== MANAGED COLLECTIONS =====
|
|
142
154
|
// Auto-emit events on mutations for seamless real-time sync
|
|
143
155
|
export {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,yCAAyC;AACzC,gEAAgE;AAChE,OAAO;AASL,iBAAiB;AACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,MAAM;AAEN,WAAW;AACX,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,YAAY,EACZ,gBAAgB;AAEhB,oBAAoB;AACpB,gBAAgB,EAChB,cAAc,EACd,UAAU;AAEV,aAAa;AACb,SAAS;AAET,iBAAiB;AACjB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,aAAa;AAEb,SAAS;AACT,MAAM,EACN,YAAY,EACZ,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,yCAAyC;AACzC,oDAAoD;AACpD,OAAO;AAeL,aAAa;AACb,SAAS,EAET,QAAQ,EACR,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,cAAc;AAEd,oBAAoB;AACpB,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,gBAAgB;AAEhB,oBAAoB;AACpB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,cAAc;AAEd,cAAc;AACd,MAAM,EACN,OAAO,EACP,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,sCAAsC;AAEtC,uCAAuC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instance Store
|
|
3
|
+
*
|
|
4
|
+
* Shared state persistence for named photon instances.
|
|
5
|
+
* Used by daemon, NCP, and Lumina to manage per-instance state.
|
|
6
|
+
*
|
|
7
|
+
* Paths (matching daemon convention):
|
|
8
|
+
* - State: ~/.photon/state/{photonName}/{instanceName}.json
|
|
9
|
+
* - Context: ~/.photon/context/{photonName}.json → { current: "name" }
|
|
10
|
+
*/
|
|
11
|
+
export interface InstanceStoreOptions {
|
|
12
|
+
/** Base directory (default: ~/.photon) */
|
|
13
|
+
baseDir?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class InstanceStore {
|
|
16
|
+
private photonName;
|
|
17
|
+
private baseDir;
|
|
18
|
+
constructor(photonName: string, options?: InstanceStoreOptions);
|
|
19
|
+
/**
|
|
20
|
+
* Get the state directory for this photon
|
|
21
|
+
*/
|
|
22
|
+
private stateDir;
|
|
23
|
+
/**
|
|
24
|
+
* Get the context file path for this photon
|
|
25
|
+
*/
|
|
26
|
+
private contextPath;
|
|
27
|
+
/**
|
|
28
|
+
* List all named instances by scanning the state directory
|
|
29
|
+
*/
|
|
30
|
+
list(): Promise<string[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Get the current instance name. Returns 'default' if none set.
|
|
33
|
+
*/
|
|
34
|
+
getCurrent(): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Set the current instance name
|
|
37
|
+
*/
|
|
38
|
+
setCurrent(instanceName: string): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Load state for an instance. Defaults to current instance.
|
|
41
|
+
*/
|
|
42
|
+
load<T = Record<string, unknown>>(instanceName?: string): Promise<T | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Save state for an instance
|
|
45
|
+
*/
|
|
46
|
+
save(instanceName: string, state: Record<string, unknown>): Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Delete an instance's state
|
|
49
|
+
*/
|
|
50
|
+
delete(instanceName: string): Promise<boolean>;
|
|
51
|
+
/**
|
|
52
|
+
* Check if an instance exists. Defaults to current instance.
|
|
53
|
+
*/
|
|
54
|
+
exists(instanceName?: string): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the file path for instance state
|
|
57
|
+
*/
|
|
58
|
+
static statePath(photonName: string, instanceName: string, baseDir?: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get the context file path for a photon
|
|
61
|
+
*/
|
|
62
|
+
static contextPath(photonName: string, baseDir?: string): string;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=instance-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-store.d.ts","sourceRoot":"","sources":["../src/instance-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAK9D;;OAEG;IACH,OAAO,CAAC,QAAQ;IAIhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAY/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAWnC;;OAEG;IACG,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrD;;OAEG;IACG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAYjF;;OAEG;IACG,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpD;;OAEG;IACG,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrD;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;IAMpF;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM;CAIjE"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Instance Store
|
|
3
|
+
*
|
|
4
|
+
* Shared state persistence for named photon instances.
|
|
5
|
+
* Used by daemon, NCP, and Lumina to manage per-instance state.
|
|
6
|
+
*
|
|
7
|
+
* Paths (matching daemon convention):
|
|
8
|
+
* - State: ~/.photon/state/{photonName}/{instanceName}.json
|
|
9
|
+
* - Context: ~/.photon/context/{photonName}.json → { current: "name" }
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'fs/promises';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
import * as os from 'os';
|
|
14
|
+
function getBaseDir(options) {
|
|
15
|
+
return options?.baseDir || process.env.PHOTON_DIR || path.join(os.homedir(), '.photon');
|
|
16
|
+
}
|
|
17
|
+
export class InstanceStore {
|
|
18
|
+
photonName;
|
|
19
|
+
baseDir;
|
|
20
|
+
constructor(photonName, options) {
|
|
21
|
+
this.photonName = photonName;
|
|
22
|
+
this.baseDir = getBaseDir(options);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the state directory for this photon
|
|
26
|
+
*/
|
|
27
|
+
stateDir() {
|
|
28
|
+
return path.join(this.baseDir, 'state', this.photonName);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the context file path for this photon
|
|
32
|
+
*/
|
|
33
|
+
contextPath() {
|
|
34
|
+
return path.join(this.baseDir, 'context', `${this.photonName}.json`);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all named instances by scanning the state directory
|
|
38
|
+
*/
|
|
39
|
+
async list() {
|
|
40
|
+
try {
|
|
41
|
+
const files = await fs.readdir(this.stateDir());
|
|
42
|
+
return files
|
|
43
|
+
.filter((f) => f.endsWith('.json'))
|
|
44
|
+
.map((f) => f.slice(0, -5));
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error.code === 'ENOENT')
|
|
48
|
+
return [];
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the current instance name. Returns 'default' if none set.
|
|
54
|
+
*/
|
|
55
|
+
async getCurrent() {
|
|
56
|
+
try {
|
|
57
|
+
const content = await fs.readFile(this.contextPath(), 'utf-8');
|
|
58
|
+
const data = JSON.parse(content);
|
|
59
|
+
return data.current || 'default';
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error.code === 'ENOENT')
|
|
63
|
+
return 'default';
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set the current instance name
|
|
69
|
+
*/
|
|
70
|
+
async setCurrent(instanceName) {
|
|
71
|
+
const filePath = this.contextPath();
|
|
72
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
73
|
+
await fs.writeFile(filePath, JSON.stringify({ current: instanceName }, null, 2));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Load state for an instance. Defaults to current instance.
|
|
77
|
+
*/
|
|
78
|
+
async load(instanceName) {
|
|
79
|
+
const name = instanceName ?? await this.getCurrent();
|
|
80
|
+
const filePath = InstanceStore.statePath(this.photonName, name, this.baseDir);
|
|
81
|
+
try {
|
|
82
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
83
|
+
return JSON.parse(content);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error.code === 'ENOENT')
|
|
87
|
+
return null;
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Save state for an instance
|
|
93
|
+
*/
|
|
94
|
+
async save(instanceName, state) {
|
|
95
|
+
const filePath = InstanceStore.statePath(this.photonName, instanceName, this.baseDir);
|
|
96
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
97
|
+
await fs.writeFile(filePath, JSON.stringify(state, null, 2));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Delete an instance's state
|
|
101
|
+
*/
|
|
102
|
+
async delete(instanceName) {
|
|
103
|
+
const filePath = InstanceStore.statePath(this.photonName, instanceName, this.baseDir);
|
|
104
|
+
try {
|
|
105
|
+
await fs.unlink(filePath);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error.code === 'ENOENT')
|
|
110
|
+
return false;
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if an instance exists. Defaults to current instance.
|
|
116
|
+
*/
|
|
117
|
+
async exists(instanceName) {
|
|
118
|
+
const name = instanceName ?? await this.getCurrent();
|
|
119
|
+
const filePath = InstanceStore.statePath(this.photonName, name, this.baseDir);
|
|
120
|
+
try {
|
|
121
|
+
await fs.access(filePath);
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Get the file path for instance state
|
|
130
|
+
*/
|
|
131
|
+
static statePath(photonName, instanceName, baseDir) {
|
|
132
|
+
const dir = baseDir || getBaseDir();
|
|
133
|
+
const name = instanceName || 'default';
|
|
134
|
+
return path.join(dir, 'state', photonName, `${name}.json`);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get the context file path for a photon
|
|
138
|
+
*/
|
|
139
|
+
static contextPath(photonName, baseDir) {
|
|
140
|
+
const dir = baseDir || getBaseDir();
|
|
141
|
+
return path.join(dir, 'context', `${photonName}.json`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=instance-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-store.js","sourceRoot":"","sources":["../src/instance-store.ts"],"names":[],"mappings":"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"}
|
package/dist/memory.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Scoped Memory System
|
|
3
3
|
*
|
|
4
4
|
* Framework-level key-value storage for photons that eliminates
|
|
5
|
-
* boilerplate file I/O. Available as `this.memory` on
|
|
5
|
+
* boilerplate file I/O. Available as `this.memory` on Photon.
|
|
6
6
|
*
|
|
7
7
|
* Three scopes:
|
|
8
8
|
* | Scope | Meaning | Storage |
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```typescript
|
|
16
|
-
* export default class TodoList extends
|
|
16
|
+
* export default class TodoList extends Photon {
|
|
17
17
|
* async add({ text }: { text: string }) {
|
|
18
18
|
* const items = await this.memory.get<Task[]>('items') ?? [];
|
|
19
19
|
* items.push({ id: crypto.randomUUID(), text });
|
package/dist/memory.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Scoped Memory System
|
|
3
3
|
*
|
|
4
4
|
* Framework-level key-value storage for photons that eliminates
|
|
5
|
-
* boilerplate file I/O. Available as `this.memory` on
|
|
5
|
+
* boilerplate file I/O. Available as `this.memory` on Photon.
|
|
6
6
|
*
|
|
7
7
|
* Three scopes:
|
|
8
8
|
* | Scope | Meaning | Storage |
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* ```typescript
|
|
16
|
-
* export default class TodoList extends
|
|
16
|
+
* export default class TodoList extends Photon {
|
|
17
17
|
* async add({ text }: { text: string }) {
|
|
18
18
|
* const items = await this.memory.get<Task[]>('items') ?? [];
|
|
19
19
|
* items.push({ id: crypto.randomUUID(), text });
|