@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.
- package/LICENSE +21 -0
- package/README.md +952 -0
- package/dist/base.d.ts +58 -0
- package/dist/base.d.ts.map +1 -0
- package/dist/base.js +92 -0
- package/dist/base.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1441 -0
- package/dist/cli.js.map +1 -0
- package/dist/dependency-manager.d.ts +49 -0
- package/dist/dependency-manager.d.ts.map +1 -0
- package/dist/dependency-manager.js +165 -0
- package/dist/dependency-manager.js.map +1 -0
- package/dist/loader.d.ts +86 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +612 -0
- package/dist/loader.js.map +1 -0
- package/dist/marketplace-manager.d.ts +261 -0
- package/dist/marketplace-manager.d.ts.map +1 -0
- package/dist/marketplace-manager.js +767 -0
- package/dist/marketplace-manager.js.map +1 -0
- package/dist/path-resolver.d.ts +21 -0
- package/dist/path-resolver.d.ts.map +1 -0
- package/dist/path-resolver.js +71 -0
- package/dist/path-resolver.js.map +1 -0
- package/dist/photon-doc-extractor.d.ts +89 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -0
- package/dist/photon-doc-extractor.js +228 -0
- package/dist/photon-doc-extractor.js.map +1 -0
- package/dist/readme-syncer.d.ts +33 -0
- package/dist/readme-syncer.d.ts.map +1 -0
- package/dist/readme-syncer.js +93 -0
- package/dist/readme-syncer.js.map +1 -0
- package/dist/registry-manager.d.ts +76 -0
- package/dist/registry-manager.d.ts.map +1 -0
- package/dist/registry-manager.js +220 -0
- package/dist/registry-manager.js.map +1 -0
- package/dist/schema-extractor.d.ts +83 -0
- package/dist/schema-extractor.d.ts.map +1 -0
- package/dist/schema-extractor.js +396 -0
- package/dist/schema-extractor.js.map +1 -0
- package/dist/security-scanner.d.ts +52 -0
- package/dist/security-scanner.d.ts.map +1 -0
- package/dist/security-scanner.js +172 -0
- package/dist/security-scanner.js.map +1 -0
- package/dist/server.d.ts +73 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +474 -0
- package/dist/server.js.map +1 -0
- package/dist/template-manager.d.ts +56 -0
- package/dist/template-manager.d.ts.map +1 -0
- package/dist/template-manager.js +509 -0
- package/dist/template-manager.js.map +1 -0
- package/dist/test-client.d.ts +52 -0
- package/dist/test-client.d.ts.map +1 -0
- package/dist/test-client.js +168 -0
- package/dist/test-client.js.map +1 -0
- package/dist/test-marketplace-sources.d.ts +5 -0
- package/dist/test-marketplace-sources.d.ts.map +1 -0
- package/dist/test-marketplace-sources.js +53 -0
- package/dist/test-marketplace-sources.js.map +1 -0
- package/dist/types.d.ts +108 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/version-checker.d.ts +48 -0
- package/dist/version-checker.d.ts.map +1 -0
- package/dist/version-checker.js +128 -0
- package/dist/version-checker.js.map +1 -0
- package/dist/watcher.d.ts +26 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +72 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +79 -0
- 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
|
package/dist/base.js.map
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|