@portel/photon 1.0.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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +952 -0
  3. package/dist/base.d.ts +58 -0
  4. package/dist/base.d.ts.map +1 -0
  5. package/dist/base.js +92 -0
  6. package/dist/base.js.map +1 -0
  7. package/dist/cli.d.ts +8 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +1441 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/dependency-manager.d.ts +49 -0
  12. package/dist/dependency-manager.d.ts.map +1 -0
  13. package/dist/dependency-manager.js +165 -0
  14. package/dist/dependency-manager.js.map +1 -0
  15. package/dist/loader.d.ts +86 -0
  16. package/dist/loader.d.ts.map +1 -0
  17. package/dist/loader.js +612 -0
  18. package/dist/loader.js.map +1 -0
  19. package/dist/marketplace-manager.d.ts +261 -0
  20. package/dist/marketplace-manager.d.ts.map +1 -0
  21. package/dist/marketplace-manager.js +767 -0
  22. package/dist/marketplace-manager.js.map +1 -0
  23. package/dist/path-resolver.d.ts +21 -0
  24. package/dist/path-resolver.d.ts.map +1 -0
  25. package/dist/path-resolver.js +71 -0
  26. package/dist/path-resolver.js.map +1 -0
  27. package/dist/photon-doc-extractor.d.ts +89 -0
  28. package/dist/photon-doc-extractor.d.ts.map +1 -0
  29. package/dist/photon-doc-extractor.js +228 -0
  30. package/dist/photon-doc-extractor.js.map +1 -0
  31. package/dist/readme-syncer.d.ts +33 -0
  32. package/dist/readme-syncer.d.ts.map +1 -0
  33. package/dist/readme-syncer.js +93 -0
  34. package/dist/readme-syncer.js.map +1 -0
  35. package/dist/registry-manager.d.ts +76 -0
  36. package/dist/registry-manager.d.ts.map +1 -0
  37. package/dist/registry-manager.js +220 -0
  38. package/dist/registry-manager.js.map +1 -0
  39. package/dist/schema-extractor.d.ts +83 -0
  40. package/dist/schema-extractor.d.ts.map +1 -0
  41. package/dist/schema-extractor.js +396 -0
  42. package/dist/schema-extractor.js.map +1 -0
  43. package/dist/security-scanner.d.ts +52 -0
  44. package/dist/security-scanner.d.ts.map +1 -0
  45. package/dist/security-scanner.js +172 -0
  46. package/dist/security-scanner.js.map +1 -0
  47. package/dist/server.d.ts +73 -0
  48. package/dist/server.d.ts.map +1 -0
  49. package/dist/server.js +474 -0
  50. package/dist/server.js.map +1 -0
  51. package/dist/template-manager.d.ts +56 -0
  52. package/dist/template-manager.d.ts.map +1 -0
  53. package/dist/template-manager.js +509 -0
  54. package/dist/template-manager.js.map +1 -0
  55. package/dist/test-client.d.ts +52 -0
  56. package/dist/test-client.d.ts.map +1 -0
  57. package/dist/test-client.js +168 -0
  58. package/dist/test-client.js.map +1 -0
  59. package/dist/test-marketplace-sources.d.ts +5 -0
  60. package/dist/test-marketplace-sources.d.ts.map +1 -0
  61. package/dist/test-marketplace-sources.js +53 -0
  62. package/dist/test-marketplace-sources.js.map +1 -0
  63. package/dist/types.d.ts +108 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +12 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist/version-checker.d.ts +48 -0
  68. package/dist/version-checker.d.ts.map +1 -0
  69. package/dist/version-checker.js +128 -0
  70. package/dist/version-checker.js.map +1 -0
  71. package/dist/watcher.d.ts +26 -0
  72. package/dist/watcher.d.ts.map +1 -0
  73. package/dist/watcher.js +72 -0
  74. package/dist/watcher.js.map +1 -0
  75. package/package.json +79 -0
  76. package/templates/photon.template.ts +55 -0
package/dist/base.d.ts ADDED
@@ -0,0 +1,58 @@
1
+ /**
2
+ * PhotonMCP Base Class
3
+ *
4
+ * Optional base class for creating Photon MCPs.
5
+ * You don't need to extend this - any class with async methods works!
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * export default class Calculator extends PhotonMCP {
10
+ * /**
11
+ * * Add two numbers together
12
+ * * @param a First number
13
+ * * @param b Second number
14
+ * *\/
15
+ * async add(params: { a: number; b: number }) {
16
+ * return params.a + params.b;
17
+ * }
18
+ * }
19
+ * ```
20
+ *
21
+ * Or without extending (plain class):
22
+ * ```typescript
23
+ * export default class Calculator {
24
+ * async add(params: { a: number; b: number }) {
25
+ * return params.a + params.b;
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ /**
31
+ * Simple base class for creating Photon MCPs
32
+ *
33
+ * - Class name = MCP name
34
+ * - Public async methods = Tools
35
+ * - Return value = Tool result
36
+ */
37
+ export declare class PhotonMCP {
38
+ /**
39
+ * Get MCP name from class name
40
+ * Converts PascalCase to kebab-case (e.g., MyAwesomeMCP → my-awesome-mcp)
41
+ */
42
+ static getMCPName(): string;
43
+ /**
44
+ * Get all tool methods from this class
45
+ * Returns all public async methods except lifecycle hooks
46
+ */
47
+ static getToolMethods(): string[];
48
+ /**
49
+ * Execute a tool method
50
+ */
51
+ executeTool(toolName: string, parameters: any): Promise<any>;
52
+ /**
53
+ * Optional lifecycle hooks
54
+ */
55
+ onInitialize?(): Promise<void>;
56
+ onShutdown?(): Promise<void>;
57
+ }
58
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;GAMG;AACH,qBAAa,SAAS;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;IAQ3B;;;OAGG;IACH,MAAM,CAAC,cAAc,IAAI,MAAM,EAAE;IA0BjC;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBlE;;OAEG;IACG,YAAY,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CACnC"}
package/dist/base.js ADDED
@@ -0,0 +1,92 @@
1
+ /**
2
+ * PhotonMCP Base Class
3
+ *
4
+ * Optional base class for creating Photon MCPs.
5
+ * You don't need to extend this - any class with async methods works!
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * export default class Calculator extends PhotonMCP {
10
+ * /**
11
+ * * Add two numbers together
12
+ * * @param a First number
13
+ * * @param b Second number
14
+ * *\/
15
+ * async add(params: { a: number; b: number }) {
16
+ * return params.a + params.b;
17
+ * }
18
+ * }
19
+ * ```
20
+ *
21
+ * Or without extending (plain class):
22
+ * ```typescript
23
+ * export default class Calculator {
24
+ * async add(params: { a: number; b: number }) {
25
+ * return params.a + params.b;
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ /**
31
+ * Simple base class for creating Photon MCPs
32
+ *
33
+ * - Class name = MCP name
34
+ * - Public async methods = Tools
35
+ * - Return value = Tool result
36
+ */
37
+ export class PhotonMCP {
38
+ /**
39
+ * Get MCP name from class name
40
+ * Converts PascalCase to kebab-case (e.g., MyAwesomeMCP → my-awesome-mcp)
41
+ */
42
+ static getMCPName() {
43
+ return this.name
44
+ .replace(/MCP$/, '') // Remove "MCP" suffix if present
45
+ .replace(/([A-Z])/g, '-$1')
46
+ .toLowerCase()
47
+ .replace(/^-/, ''); // Remove leading dash
48
+ }
49
+ /**
50
+ * Get all tool methods from this class
51
+ * Returns all public async methods except lifecycle hooks
52
+ */
53
+ static getToolMethods() {
54
+ const prototype = this.prototype;
55
+ const methods = [];
56
+ // Get all property names from prototype chain
57
+ let current = prototype;
58
+ while (current && current !== PhotonMCP.prototype) {
59
+ Object.getOwnPropertyNames(current).forEach((name) => {
60
+ // Skip constructor, private methods (starting with _), and lifecycle hooks
61
+ if (name !== 'constructor' &&
62
+ !name.startsWith('_') &&
63
+ name !== 'onInitialize' &&
64
+ name !== 'onShutdown' &&
65
+ typeof prototype[name] === 'function' &&
66
+ !methods.includes(name)) {
67
+ methods.push(name);
68
+ }
69
+ });
70
+ current = Object.getPrototypeOf(current);
71
+ }
72
+ return methods;
73
+ }
74
+ /**
75
+ * Execute a tool method
76
+ */
77
+ async executeTool(toolName, parameters) {
78
+ const method = this[toolName];
79
+ if (!method || typeof method !== 'function') {
80
+ throw new Error(`Tool not found: ${toolName}`);
81
+ }
82
+ try {
83
+ const result = await method.call(this, parameters);
84
+ return result;
85
+ }
86
+ catch (error) {
87
+ console.error(`Tool execution failed: ${toolName} - ${error.message}`);
88
+ throw error;
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH;;;;;;GAMG;AACH,MAAM,OAAO,SAAS;IACpB;;;OAGG;IACH,MAAM,CAAC,UAAU;QACf,OAAO,IAAI,CAAC,IAAI;aACb,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,iCAAiC;aACrD,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;aAC1B,WAAW,EAAE;aACb,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;IAC9C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,8CAA8C;QAC9C,IAAI,OAAO,GAAG,SAAS,CAAC;QACxB,OAAO,OAAO,IAAI,OAAO,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnD,2EAA2E;gBAC3E,IACE,IAAI,KAAK,aAAa;oBACtB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBACrB,IAAI,KAAK,cAAc;oBACvB,IAAI,KAAK,YAAY;oBACrB,OAAQ,SAAiB,CAAC,IAAI,CAAC,KAAK,UAAU;oBAC9C,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EACvB,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,UAAe;QACjD,MAAM,MAAM,GAAI,IAAY,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,QAAQ,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CAOF"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Photon MCP CLI
4
+ *
5
+ * Command-line interface for running .photon.ts files as MCP servers
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}