@portel/photon-core 2.8.4 → 2.9.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.
Files changed (57) hide show
  1. package/dist/base.d.ts +7 -7
  2. package/dist/base.d.ts.map +1 -1
  3. package/dist/base.js +8 -8
  4. package/dist/base.js.map +1 -1
  5. package/dist/collections/Collection.d.ts +2 -2
  6. package/dist/collections/Collection.js +2 -2
  7. package/dist/compiler.js +7 -7
  8. package/dist/compiler.js.map +1 -1
  9. package/dist/config.d.ts +1 -1
  10. package/dist/config.js +1 -1
  11. package/dist/index.d.ts +7 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +16 -4
  14. package/dist/index.js.map +1 -1
  15. package/dist/instance-store.d.ts +64 -0
  16. package/dist/instance-store.d.ts.map +1 -0
  17. package/dist/instance-store.js +144 -0
  18. package/dist/instance-store.js.map +1 -0
  19. package/dist/memory.d.ts +2 -2
  20. package/dist/memory.js +2 -2
  21. package/dist/middleware.d.ts +69 -0
  22. package/dist/middleware.d.ts.map +1 -0
  23. package/dist/middleware.js +570 -0
  24. package/dist/middleware.js.map +1 -0
  25. package/dist/schema-extractor.d.ts +111 -1
  26. package/dist/schema-extractor.d.ts.map +1 -1
  27. package/dist/schema-extractor.js +333 -2
  28. package/dist/schema-extractor.js.map +1 -1
  29. package/dist/stateful.d.ts +2 -0
  30. package/dist/stateful.d.ts.map +1 -1
  31. package/dist/stateful.js +2 -0
  32. package/dist/stateful.js.map +1 -1
  33. package/dist/types.d.ts +111 -5
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/types.js.map +1 -1
  36. package/dist/utils/duration.d.ts +24 -0
  37. package/dist/utils/duration.d.ts.map +1 -0
  38. package/dist/utils/duration.js +64 -0
  39. package/dist/utils/duration.js.map +1 -0
  40. package/dist/watcher.d.ts +62 -0
  41. package/dist/watcher.d.ts.map +1 -0
  42. package/dist/watcher.js +270 -0
  43. package/dist/watcher.js.map +1 -0
  44. package/package.json +2 -2
  45. package/src/base.ts +8 -8
  46. package/src/collections/Collection.ts +2 -2
  47. package/src/compiler.ts +7 -7
  48. package/src/config.ts +1 -1
  49. package/src/index.ts +34 -4
  50. package/src/instance-store.ts +155 -0
  51. package/src/memory.ts +2 -2
  52. package/src/middleware.ts +714 -0
  53. package/src/schema-extractor.ts +353 -2
  54. package/src/stateful.ts +4 -0
  55. package/src/types.ts +106 -5
  56. package/src/utils/duration.ts +67 -0
  57. package/src/watcher.ts +317 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * Now uses TypeScript's compiler API for robust type parsing
9
9
  */
10
10
  import { ExtractedSchema, ConstructorParam, TemplateInfo, StaticInfo, MCPDependency, PhotonDependency, CLIDependency, ResolvedInjection, PhotonAssets, ConfigSchema } from './types.js';
11
+ import { type MiddlewareDeclaration } from './middleware.js';
11
12
  export interface ExtractedMetadata {
12
13
  tools: ExtractedSchema[];
13
14
  templates: TemplateInfo[];
@@ -81,6 +82,27 @@ export declare class SchemaExtractor {
81
82
  * Extract default value from initializer
82
83
  */
83
84
  private extractDefaultValue;
85
+ /**
86
+ * Parse inline {@prop value} config from a string
87
+ * @example parseInlineConfig('{@ttl 5m} {@key params.userId}')
88
+ * → { ttl: '5m', key: 'params.userId' }
89
+ */
90
+ parseInlineConfig(text: string): Record<string, string>;
91
+ /**
92
+ * Extract @use declarations from JSDoc
93
+ * @example extractUseDeclarations('* @use audit {@level info} {@tags api}')
94
+ * → [{ name: 'audit', rawConfig: { level: 'info', tags: 'api' } }]
95
+ */
96
+ extractUseDeclarations(jsdocContent: string): Array<{
97
+ name: string;
98
+ rawConfig: Record<string, string>;
99
+ }>;
100
+ /**
101
+ * Build middleware declarations from all tags on a method's JSDoc.
102
+ * Converts both sugar tags (@cached 5m) and @use tags into a unified
103
+ * MiddlewareDeclaration[] array.
104
+ */
105
+ buildMiddlewareDeclarations(jsdocContent: string): MiddlewareDeclaration[];
84
106
  /**
85
107
  * Extract main description from JSDoc comment
86
108
  */
@@ -150,6 +172,80 @@ export declare class SchemaExtractor {
150
172
  * - @locked board:write → custom lock name
151
173
  */
152
174
  private extractLocked;
175
+ /**
176
+ * Extract logging config from @logged tag
177
+ * - @logged → info level
178
+ * - @logged debug → debug level
179
+ */
180
+ private extractLogged;
181
+ /**
182
+ * Extract fallback value from @fallback tag
183
+ * - @fallback [] → empty array on error
184
+ * - @fallback {} → empty object on error
185
+ * - @fallback null → null on error
186
+ * - @fallback 0 → zero on error
187
+ */
188
+ private extractFallback;
189
+ /**
190
+ * Extract circuit breaker configuration from @circuitBreaker tag
191
+ * - @circuitBreaker 5 30s → 5 failures, 30s reset
192
+ * - @circuitBreaker 3 1m → 3 failures, 1 minute reset
193
+ */
194
+ private extractCircuitBreaker;
195
+ /**
196
+ * Extract cache configuration from @cached tag
197
+ * - @cached → default 5m TTL
198
+ * - @cached 30s → 30 second TTL
199
+ * - @cached 1h → 1 hour TTL
200
+ */
201
+ private extractCached;
202
+ /**
203
+ * Extract timeout configuration from @timeout tag
204
+ * - @timeout 30s → 30 second timeout
205
+ * - @timeout 5m → 5 minute timeout
206
+ */
207
+ private extractTimeout;
208
+ /**
209
+ * Extract retry configuration from @retryable tag
210
+ * - @retryable → default 3 retries, 1s delay
211
+ * - @retryable 5 → 5 retries, 1s delay
212
+ * - @retryable 3 2s → 3 retries, 2s delay
213
+ */
214
+ private extractRetryable;
215
+ /**
216
+ * Extract throttle configuration from @throttled tag
217
+ * - @throttled 10/min → 10 calls per minute
218
+ * - @throttled 100/h → 100 calls per hour
219
+ */
220
+ private extractThrottled;
221
+ /**
222
+ * Extract debounce configuration from @debounced tag
223
+ * - @debounced → default 500ms
224
+ * - @debounced 200ms → 200ms delay
225
+ * - @debounced 1s → 1 second delay
226
+ */
227
+ private extractDebounced;
228
+ /**
229
+ * Extract queue configuration from @queued tag
230
+ * - @queued → default concurrency 1
231
+ * - @queued 3 → concurrency 3
232
+ */
233
+ private extractQueued;
234
+ /**
235
+ * Extract validation rules from @validate tags
236
+ * - @validate params.email must be a valid email
237
+ * - @validate params.amount must be positive
238
+ */
239
+ private extractValidations;
240
+ /**
241
+ * Extract deprecation notice from @deprecated tag (class-level, not param-level)
242
+ * - @deprecated → true
243
+ * - @deprecated Use addV2 instead → "Use addV2 instead"
244
+ *
245
+ * Note: Only matches @deprecated at the start of a JSDoc line (after * prefix),
246
+ * NOT inside {@deprecated} inline tags (those are param-level).
247
+ */
248
+ private extractDeprecated;
153
249
  /**
154
250
  * Extract URI pattern from @Static tag
155
251
  * Example: @Static github://repos/{owner}/{repo}/readme
@@ -292,7 +388,7 @@ export declare class SchemaExtractor {
292
388
  * * @prompt system ./prompts/system.md
293
389
  * * @resource config ./resources/config.json
294
390
  * *\/
295
- * export default class MyPhoton extends PhotonMCP { ... }
391
+ * export default class MyPhoton extends Photon { ... }
296
392
  * ```
297
393
  */
298
394
  extractAssets(source: string, assetFolder?: string): PhotonAssets;
@@ -324,4 +420,18 @@ export declare class SchemaExtractor {
324
420
  */
325
421
  private getMimeTypeFromPath;
326
422
  }
423
+ /**
424
+ * Capability types that can be auto-detected from source code
425
+ */
426
+ export type PhotonCapability = 'emit' | 'memory' | 'call' | 'mcp' | 'lock' | 'instanceMeta' | 'allInstances';
427
+ /**
428
+ * Detect capabilities used by a Photon from its source code.
429
+ *
430
+ * Scans for `this.emit(`, `this.memory`, `this.call(`, etc. patterns
431
+ * and returns the set of capabilities that the runtime should inject.
432
+ *
433
+ * This enables plain classes (no extends Photon) to use all framework
434
+ * features — the loader detects usage and injects automatically.
435
+ */
436
+ export declare function detectCapabilities(source: string): Set<PhotonCapability>;
327
437
  //# sourceMappingURL=schema-extractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-extractor.d.ts","sourceRoot":"","sources":["../src/schema-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-extractor.d.ts","sourceRoot":"","sources":["../src/schema-extractor.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@
9
9
  */
10
10
  import * as fs from 'fs/promises';
11
11
  import * as ts from 'typescript';
12
+ import { parseDuration, parseRate } from './utils/duration.js';
13
+ import { builtinRegistry } from './middleware.js';
12
14
  /**
13
15
  * Extract schemas from a Photon MCP class file
14
16
  */
@@ -145,6 +147,20 @@ export class SchemaExtractor {
145
147
  const webhook = this.extractWebhook(jsdoc, methodName);
146
148
  const scheduled = this.extractScheduled(jsdoc, methodName);
147
149
  const locked = this.extractLocked(jsdoc, methodName);
150
+ // Functional tags — individual fields kept for backward compat
151
+ const fallback = this.extractFallback(jsdoc);
152
+ const logged = this.extractLogged(jsdoc);
153
+ const circuitBreaker = this.extractCircuitBreaker(jsdoc);
154
+ const cached = this.extractCached(jsdoc);
155
+ const timeout = this.extractTimeout(jsdoc);
156
+ const retryable = this.extractRetryable(jsdoc);
157
+ const throttled = this.extractThrottled(jsdoc);
158
+ const debounced = this.extractDebounced(jsdoc);
159
+ const queued = this.extractQueued(jsdoc);
160
+ const validations = this.extractValidations(jsdoc);
161
+ const deprecated = this.extractDeprecated(jsdoc);
162
+ // Build unified middleware declarations (single source of truth for runtime)
163
+ const middleware = this.buildMiddlewareDeclarations(jsdoc);
148
164
  // Check for static keyword on the method
149
165
  const isStaticMethod = member.modifiers?.some(m => m.kind === ts.SyntaxKind.StaticKeyword) || false;
150
166
  tools.push({
@@ -166,6 +182,20 @@ export class SchemaExtractor {
166
182
  ...(webhook !== undefined ? { webhook } : {}),
167
183
  ...(scheduled ? { scheduled } : {}),
168
184
  ...(locked !== undefined ? { locked } : {}),
185
+ // Functional tags (individual fields for backward compat)
186
+ ...(fallback ? { fallback } : {}),
187
+ ...(logged ? { logged } : {}),
188
+ ...(circuitBreaker ? { circuitBreaker } : {}),
189
+ ...(cached ? { cached } : {}),
190
+ ...(timeout ? { timeout } : {}),
191
+ ...(retryable ? { retryable } : {}),
192
+ ...(throttled ? { throttled } : {}),
193
+ ...(debounced ? { debounced } : {}),
194
+ ...(queued ? { queued } : {}),
195
+ ...(validations && validations.length > 0 ? { validations } : {}),
196
+ ...(deprecated !== undefined ? { deprecated } : {}),
197
+ // Unified middleware declarations (new — runtime uses this)
198
+ ...(middleware.length > 0 ? { middleware } : {}),
169
199
  });
170
200
  }
171
201
  };
@@ -604,13 +634,142 @@ export class SchemaExtractor {
604
634
  // For complex expressions (function calls, etc.), return as string
605
635
  return initializer.getText(sourceFile);
606
636
  }
637
+ // ═══════════════════════════════════════════════════════════════════════════════
638
+ // INLINE CONFIG + @use PARSING
639
+ // ═══════════════════════════════════════════════════════════════════════════════
640
+ /**
641
+ * Parse inline {@prop value} config from a string
642
+ * @example parseInlineConfig('{@ttl 5m} {@key params.userId}')
643
+ * → { ttl: '5m', key: 'params.userId' }
644
+ */
645
+ parseInlineConfig(text) {
646
+ const config = {};
647
+ const regex = /\{@(\w+)\s+([^}]+)\}/g;
648
+ let match;
649
+ while ((match = regex.exec(text)) !== null) {
650
+ config[match[1]] = match[2].trim();
651
+ }
652
+ return config;
653
+ }
654
+ /**
655
+ * Extract @use declarations from JSDoc
656
+ * @example extractUseDeclarations('* @use audit {@level info} {@tags api}')
657
+ * → [{ name: 'audit', rawConfig: { level: 'info', tags: 'api' } }]
658
+ */
659
+ extractUseDeclarations(jsdocContent) {
660
+ const declarations = [];
661
+ const regex = /@use\s+([\w][\w-]*)((?:\s+\{@\w+\s+[^}]+\})*)/g;
662
+ let match;
663
+ while ((match = regex.exec(jsdocContent)) !== null) {
664
+ const name = match[1];
665
+ const configStr = match[2] || '';
666
+ const rawConfig = this.parseInlineConfig(configStr);
667
+ declarations.push({ name, rawConfig });
668
+ }
669
+ return declarations;
670
+ }
671
+ /**
672
+ * Build middleware declarations from all tags on a method's JSDoc.
673
+ * Converts both sugar tags (@cached 5m) and @use tags into a unified
674
+ * MiddlewareDeclaration[] array.
675
+ */
676
+ buildMiddlewareDeclarations(jsdocContent) {
677
+ const declarations = [];
678
+ // 1. Extract sugar tags → convert to declarations
679
+ // @fallback
680
+ const fallback = this.extractFallback(jsdocContent);
681
+ if (fallback) {
682
+ const def = builtinRegistry.get('fallback');
683
+ declarations.push({ name: 'fallback', config: fallback, phase: def?.phase ?? 3 });
684
+ }
685
+ // @logged
686
+ const logged = this.extractLogged(jsdocContent);
687
+ if (logged) {
688
+ const def = builtinRegistry.get('logged');
689
+ declarations.push({ name: 'logged', config: logged, phase: def?.phase ?? 5 });
690
+ }
691
+ // @circuitBreaker
692
+ const circuitBreaker = this.extractCircuitBreaker(jsdocContent);
693
+ if (circuitBreaker) {
694
+ const def = builtinRegistry.get('circuitBreaker');
695
+ declarations.push({ name: 'circuitBreaker', config: circuitBreaker, phase: def?.phase ?? 8 });
696
+ }
697
+ // @cached
698
+ const cached = this.extractCached(jsdocContent);
699
+ if (cached) {
700
+ const def = builtinRegistry.get('cached');
701
+ declarations.push({ name: 'cached', config: cached, phase: def?.phase ?? 30 });
702
+ }
703
+ // @timeout
704
+ const timeout = this.extractTimeout(jsdocContent);
705
+ if (timeout) {
706
+ const def = builtinRegistry.get('timeout');
707
+ declarations.push({ name: 'timeout', config: timeout, phase: def?.phase ?? 70 });
708
+ }
709
+ // @retryable
710
+ const retryable = this.extractRetryable(jsdocContent);
711
+ if (retryable) {
712
+ const def = builtinRegistry.get('retryable');
713
+ declarations.push({ name: 'retryable', config: retryable, phase: def?.phase ?? 80 });
714
+ }
715
+ // @throttled
716
+ const throttled = this.extractThrottled(jsdocContent);
717
+ if (throttled) {
718
+ const def = builtinRegistry.get('throttled');
719
+ declarations.push({ name: 'throttled', config: throttled, phase: def?.phase ?? 10 });
720
+ }
721
+ // @debounced
722
+ const debounced = this.extractDebounced(jsdocContent);
723
+ if (debounced) {
724
+ const def = builtinRegistry.get('debounced');
725
+ declarations.push({ name: 'debounced', config: debounced, phase: def?.phase ?? 20 });
726
+ }
727
+ // @queued
728
+ const queued = this.extractQueued(jsdocContent);
729
+ if (queued) {
730
+ const def = builtinRegistry.get('queued');
731
+ declarations.push({ name: 'queued', config: queued, phase: def?.phase ?? 50 });
732
+ }
733
+ // @validate
734
+ const validations = this.extractValidations(jsdocContent);
735
+ if (validations && validations.length > 0) {
736
+ const def = builtinRegistry.get('validate');
737
+ declarations.push({ name: 'validate', config: { validations }, phase: def?.phase ?? 40 });
738
+ }
739
+ // @locked (handled as middleware when it appears as a functional tag)
740
+ const lockedMatch = jsdocContent.match(/@locked(?:\s+(\w[\w\-:]*))?/i);
741
+ if (lockedMatch) {
742
+ const lockName = lockedMatch[1]?.trim() || '';
743
+ const def = builtinRegistry.get('locked');
744
+ declarations.push({ name: 'locked', config: { name: lockName }, phase: def?.phase ?? 60 });
745
+ }
746
+ // 2. Extract @use declarations
747
+ const useDecls = this.extractUseDeclarations(jsdocContent);
748
+ for (const { name, rawConfig } of useDecls) {
749
+ // Check if this is a built-in (allow @use cached {@ttl 5m} syntax)
750
+ const def = builtinRegistry.get(name);
751
+ if (def) {
752
+ // Use parseConfig if available, otherwise pass raw
753
+ const config = def.parseConfig ? def.parseConfig(rawConfig) : rawConfig;
754
+ // Don't duplicate if sugar tag already added this middleware
755
+ if (!declarations.some(d => d.name === name)) {
756
+ declarations.push({ name, config, phase: def.phase ?? 45 });
757
+ }
758
+ }
759
+ else {
760
+ // Custom middleware — phase defaults to 45
761
+ declarations.push({ name, config: rawConfig, phase: 45 });
762
+ }
763
+ }
764
+ return declarations;
765
+ }
607
766
  /**
608
767
  * Extract main description from JSDoc comment
609
768
  */
610
769
  extractDescription(jsdocContent) {
611
770
  // Split by @tags that appear at start of a JSDoc line (after optional * prefix)
612
771
  // This avoids matching @tag references inline in description text
613
- const beforeTags = jsdocContent.split(/(?:^|\n)\s*\*?\s*@(?:param|example|returns?|throws?|see|since|deprecated|version|author|license|ui|icon|format|stateful|autorun|async|webhook|cron|scheduled|locked|Template|Static|mcp|photon|cli|tags|dependencies|csp|visibility)\b/)[0];
772
+ const beforeTags = jsdocContent.split(/(?:^|\n)\s*\*?\s*@(?:param|example|returns?|throws?|see|since|deprecated|version|author|license|ui|icon|format|stateful|autorun|async|webhook|cron|scheduled|locked|fallback|logged|circuitBreaker|cached|timeout|retryable|throttled|debounced|queued|validate|use|Template|Static|mcp|photon|cli|tags|dependencies|csp|visibility)\b/)[0];
614
773
  // Remove leading * from each line and trim
615
774
  const lines = beforeTags
616
775
  .split('\n')
@@ -1082,6 +1241,151 @@ export class SchemaExtractor {
1082
1241
  }
1083
1242
  return undefined;
1084
1243
  }
1244
+ // ═══════════════════════════════════════════════════════════════════════════════
1245
+ // FUNCTIONAL TAG EXTRACTION
1246
+ // ═══════════════════════════════════════════════════════════════════════════════
1247
+ /**
1248
+ * Extract logging config from @logged tag
1249
+ * - @logged → info level
1250
+ * - @logged debug → debug level
1251
+ */
1252
+ extractLogged(jsdocContent) {
1253
+ const match = jsdocContent.match(/@logged(?:\s+(\w+))?/i);
1254
+ if (!match)
1255
+ return undefined;
1256
+ return { level: match[1]?.trim() || 'info' };
1257
+ }
1258
+ /**
1259
+ * Extract fallback value from @fallback tag
1260
+ * - @fallback [] → empty array on error
1261
+ * - @fallback {} → empty object on error
1262
+ * - @fallback null → null on error
1263
+ * - @fallback 0 → zero on error
1264
+ */
1265
+ extractFallback(jsdocContent) {
1266
+ const match = jsdocContent.match(/@fallback\s+(.+?)(?:\s*$|\s*\n|\s*\*)/m);
1267
+ if (!match)
1268
+ return undefined;
1269
+ return { value: match[1].trim() };
1270
+ }
1271
+ /**
1272
+ * Extract circuit breaker configuration from @circuitBreaker tag
1273
+ * - @circuitBreaker 5 30s → 5 failures, 30s reset
1274
+ * - @circuitBreaker 3 1m → 3 failures, 1 minute reset
1275
+ */
1276
+ extractCircuitBreaker(jsdocContent) {
1277
+ const match = jsdocContent.match(/@circuitBreaker\s+(\d+)\s+(\d+(?:ms|s|sec|m|min|h|hr|d|day))/i);
1278
+ if (!match)
1279
+ return undefined;
1280
+ return { threshold: parseInt(match[1], 10), resetAfter: match[2] };
1281
+ }
1282
+ /**
1283
+ * Extract cache configuration from @cached tag
1284
+ * - @cached → default 5m TTL
1285
+ * - @cached 30s → 30 second TTL
1286
+ * - @cached 1h → 1 hour TTL
1287
+ */
1288
+ extractCached(jsdocContent) {
1289
+ const match = jsdocContent.match(/@cached(?:\s+(\d+(?:ms|s|sec|m|min|h|hr|d|day)))?/i);
1290
+ if (!match)
1291
+ return undefined;
1292
+ const ttl = match[1] ? parseDuration(match[1]) : 300_000; // default 5m
1293
+ return { ttl };
1294
+ }
1295
+ /**
1296
+ * Extract timeout configuration from @timeout tag
1297
+ * - @timeout 30s → 30 second timeout
1298
+ * - @timeout 5m → 5 minute timeout
1299
+ */
1300
+ extractTimeout(jsdocContent) {
1301
+ const match = jsdocContent.match(/@timeout\s+(\d+(?:ms|s|sec|m|min|h|hr|d|day))/i);
1302
+ if (!match)
1303
+ return undefined;
1304
+ return { ms: parseDuration(match[1]) };
1305
+ }
1306
+ /**
1307
+ * Extract retry configuration from @retryable tag
1308
+ * - @retryable → default 3 retries, 1s delay
1309
+ * - @retryable 5 → 5 retries, 1s delay
1310
+ * - @retryable 3 2s → 3 retries, 2s delay
1311
+ */
1312
+ extractRetryable(jsdocContent) {
1313
+ const match = jsdocContent.match(/@retryable(?:\s+(\d+))?(?:\s+(\d+(?:ms|s|sec|m|min|h|hr|d|day)))?/i);
1314
+ if (!match)
1315
+ return undefined;
1316
+ const count = match[1] ? parseInt(match[1], 10) : 3;
1317
+ const delay = match[2] ? parseDuration(match[2]) : 1_000;
1318
+ return { count, delay };
1319
+ }
1320
+ /**
1321
+ * Extract throttle configuration from @throttled tag
1322
+ * - @throttled 10/min → 10 calls per minute
1323
+ * - @throttled 100/h → 100 calls per hour
1324
+ */
1325
+ extractThrottled(jsdocContent) {
1326
+ const match = jsdocContent.match(/@throttled\s+(\d+\/(?:s|sec|m|min|h|hr|d|day))/i);
1327
+ if (!match)
1328
+ return undefined;
1329
+ return parseRate(match[1]);
1330
+ }
1331
+ /**
1332
+ * Extract debounce configuration from @debounced tag
1333
+ * - @debounced → default 500ms
1334
+ * - @debounced 200ms → 200ms delay
1335
+ * - @debounced 1s → 1 second delay
1336
+ */
1337
+ extractDebounced(jsdocContent) {
1338
+ const match = jsdocContent.match(/@debounced(?:\s+(\d+(?:ms|s|sec|m|min|h|hr|d|day)))?/i);
1339
+ if (!match)
1340
+ return undefined;
1341
+ const delay = match[1] ? parseDuration(match[1]) : 500;
1342
+ return { delay };
1343
+ }
1344
+ /**
1345
+ * Extract queue configuration from @queued tag
1346
+ * - @queued → default concurrency 1
1347
+ * - @queued 3 → concurrency 3
1348
+ */
1349
+ extractQueued(jsdocContent) {
1350
+ const match = jsdocContent.match(/@queued(?:\s+(\d+))?/i);
1351
+ if (!match)
1352
+ return undefined;
1353
+ const concurrency = match[1] ? parseInt(match[1], 10) : 1;
1354
+ return { concurrency };
1355
+ }
1356
+ /**
1357
+ * Extract validation rules from @validate tags
1358
+ * - @validate params.email must be a valid email
1359
+ * - @validate params.amount must be positive
1360
+ */
1361
+ extractValidations(jsdocContent) {
1362
+ const validations = [];
1363
+ const regex = /@validate\s+([\w.]+)\s+(.+)/g;
1364
+ let match;
1365
+ while ((match = regex.exec(jsdocContent)) !== null) {
1366
+ validations.push({
1367
+ field: match[1].replace(/^params\./, ''), // strip params. prefix
1368
+ rule: match[2].trim().replace(/\*\/$/, '').trim(), // strip JSDoc closing
1369
+ });
1370
+ }
1371
+ return validations.length > 0 ? validations : undefined;
1372
+ }
1373
+ /**
1374
+ * Extract deprecation notice from @deprecated tag (class-level, not param-level)
1375
+ * - @deprecated → true
1376
+ * - @deprecated Use addV2 instead → "Use addV2 instead"
1377
+ *
1378
+ * Note: Only matches @deprecated at the start of a JSDoc line (after * prefix),
1379
+ * NOT inside {@deprecated} inline tags (those are param-level).
1380
+ */
1381
+ extractDeprecated(jsdocContent) {
1382
+ // Match @deprecated at start of line (with optional * prefix), not inside {}
1383
+ const match = jsdocContent.match(/(?:^|\n)\s*\*?\s*@deprecated(?:\s+([^\n*]+))?/i);
1384
+ if (!match)
1385
+ return undefined;
1386
+ const message = match[1]?.trim();
1387
+ return message || true;
1388
+ }
1085
1389
  /**
1086
1390
  * Extract URI pattern from @Static tag
1087
1391
  * Example: @Static github://repos/{owner}/{repo}/readme
@@ -1455,7 +1759,7 @@ export class SchemaExtractor {
1455
1759
  * * @prompt system ./prompts/system.md
1456
1760
  * * @resource config ./resources/config.json
1457
1761
  * *\/
1458
- * export default class MyPhoton extends PhotonMCP { ... }
1762
+ * export default class MyPhoton extends Photon { ... }
1459
1763
  * ```
1460
1764
  */
1461
1765
  extractAssets(source, assetFolder) {
@@ -1600,4 +1904,31 @@ export class SchemaExtractor {
1600
1904
  return mimeTypes[ext] || 'application/octet-stream';
1601
1905
  }
1602
1906
  }
1907
+ /**
1908
+ * Detect capabilities used by a Photon from its source code.
1909
+ *
1910
+ * Scans for `this.emit(`, `this.memory`, `this.call(`, etc. patterns
1911
+ * and returns the set of capabilities that the runtime should inject.
1912
+ *
1913
+ * This enables plain classes (no extends Photon) to use all framework
1914
+ * features — the loader detects usage and injects automatically.
1915
+ */
1916
+ export function detectCapabilities(source) {
1917
+ const caps = new Set();
1918
+ if (/this\.emit\s*\(/.test(source))
1919
+ caps.add('emit');
1920
+ if (/this\.memory\b/.test(source))
1921
+ caps.add('memory');
1922
+ if (/this\.call\s*\(/.test(source))
1923
+ caps.add('call');
1924
+ if (/this\.mcp\s*\(/.test(source))
1925
+ caps.add('mcp');
1926
+ if (/this\.withLock\s*\(/.test(source))
1927
+ caps.add('lock');
1928
+ if (/this\.instanceMeta\b/.test(source))
1929
+ caps.add('instanceMeta');
1930
+ if (/this\.allInstances\s*\(/.test(source))
1931
+ caps.add('allInstances');
1932
+ return caps;
1933
+ }
1603
1934
  //# sourceMappingURL=schema-extractor.js.map