@portel/photon 1.4.0 → 1.5.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/README.md +287 -1160
- package/dist/auto-ui/beam.d.ts +9 -0
- package/dist/auto-ui/beam.d.ts.map +1 -0
- package/dist/auto-ui/beam.js +2381 -0
- package/dist/auto-ui/beam.js.map +1 -0
- package/dist/auto-ui/components/card.d.ts +13 -0
- package/dist/auto-ui/components/card.d.ts.map +1 -0
- package/dist/auto-ui/components/card.js +64 -0
- package/dist/auto-ui/components/card.js.map +1 -0
- package/dist/auto-ui/components/form.d.ts +15 -0
- package/dist/auto-ui/components/form.d.ts.map +1 -0
- package/dist/auto-ui/components/form.js +72 -0
- package/dist/auto-ui/components/form.js.map +1 -0
- package/dist/auto-ui/components/list.d.ts +13 -0
- package/dist/auto-ui/components/list.d.ts.map +1 -0
- package/dist/auto-ui/components/list.js +58 -0
- package/dist/auto-ui/components/list.js.map +1 -0
- package/dist/auto-ui/components/progress.d.ts +18 -0
- package/dist/auto-ui/components/progress.d.ts.map +1 -0
- package/dist/auto-ui/components/progress.js +125 -0
- package/dist/auto-ui/components/progress.js.map +1 -0
- package/dist/auto-ui/components/table.d.ts +13 -0
- package/dist/auto-ui/components/table.d.ts.map +1 -0
- package/dist/auto-ui/components/table.js +82 -0
- package/dist/auto-ui/components/table.js.map +1 -0
- package/dist/auto-ui/components/tree.d.ts +13 -0
- package/dist/auto-ui/components/tree.d.ts.map +1 -0
- package/dist/auto-ui/components/tree.js +61 -0
- package/dist/auto-ui/components/tree.js.map +1 -0
- package/dist/auto-ui/daemon-tools.d.ts +45 -0
- package/dist/auto-ui/daemon-tools.d.ts.map +1 -0
- package/dist/auto-ui/daemon-tools.js +580 -0
- package/dist/auto-ui/daemon-tools.js.map +1 -0
- package/dist/auto-ui/design-system/index.d.ts +21 -0
- package/dist/auto-ui/design-system/index.d.ts.map +1 -0
- package/dist/auto-ui/design-system/index.js +27 -0
- package/dist/auto-ui/design-system/index.js.map +1 -0
- package/dist/auto-ui/design-system/tokens.d.ts +9 -0
- package/dist/auto-ui/design-system/tokens.d.ts.map +1 -0
- package/dist/auto-ui/design-system/tokens.js +27 -0
- package/dist/auto-ui/design-system/tokens.js.map +1 -0
- package/dist/auto-ui/design-system/transaction-ui.d.ts +70 -0
- package/dist/auto-ui/design-system/transaction-ui.d.ts.map +1 -0
- package/dist/auto-ui/design-system/transaction-ui.js +982 -0
- package/dist/auto-ui/design-system/transaction-ui.js.map +1 -0
- package/dist/auto-ui/frontend/index.html +84 -0
- package/dist/auto-ui/index.d.ts +21 -0
- package/dist/auto-ui/index.d.ts.map +1 -0
- package/dist/auto-ui/index.js +25 -0
- package/dist/auto-ui/index.js.map +1 -0
- package/dist/auto-ui/openapi-generator.d.ts +71 -0
- package/dist/auto-ui/openapi-generator.d.ts.map +1 -0
- package/dist/auto-ui/openapi-generator.js +223 -0
- package/dist/auto-ui/openapi-generator.js.map +1 -0
- package/dist/auto-ui/photon-bridge.d.ts +159 -0
- package/dist/auto-ui/photon-bridge.d.ts.map +1 -0
- package/dist/auto-ui/photon-bridge.js +262 -0
- package/dist/auto-ui/photon-bridge.js.map +1 -0
- package/dist/auto-ui/photon-host.d.ts +113 -0
- package/dist/auto-ui/photon-host.d.ts.map +1 -0
- package/dist/auto-ui/photon-host.js +284 -0
- package/dist/auto-ui/photon-host.js.map +1 -0
- package/dist/auto-ui/platform-compat.d.ts +71 -0
- package/dist/auto-ui/platform-compat.d.ts.map +1 -0
- package/dist/auto-ui/platform-compat.js +574 -0
- package/dist/auto-ui/platform-compat.js.map +1 -0
- package/dist/auto-ui/playground-html.d.ts +15 -0
- package/dist/auto-ui/playground-html.d.ts.map +1 -0
- package/dist/auto-ui/playground-html.js +1113 -0
- package/dist/auto-ui/playground-html.js.map +1 -0
- package/dist/auto-ui/playground-server.d.ts +7 -0
- package/dist/auto-ui/playground-server.d.ts.map +1 -0
- package/dist/auto-ui/playground-server.js +840 -0
- package/dist/auto-ui/playground-server.js.map +1 -0
- package/dist/auto-ui/registry.d.ts +13 -0
- package/dist/auto-ui/registry.d.ts.map +1 -0
- package/dist/auto-ui/registry.js +62 -0
- package/dist/auto-ui/registry.js.map +1 -0
- package/dist/auto-ui/renderer.d.ts +14 -0
- package/dist/auto-ui/renderer.d.ts.map +1 -0
- package/dist/auto-ui/renderer.js +88 -0
- package/dist/auto-ui/renderer.js.map +1 -0
- package/dist/auto-ui/rendering/components.d.ts +29 -0
- package/dist/auto-ui/rendering/components.d.ts.map +1 -0
- package/dist/auto-ui/rendering/components.js +773 -0
- package/dist/auto-ui/rendering/components.js.map +1 -0
- package/dist/auto-ui/rendering/field-analyzer.d.ts +48 -0
- package/dist/auto-ui/rendering/field-analyzer.d.ts.map +1 -0
- package/dist/auto-ui/rendering/field-analyzer.js +270 -0
- package/dist/auto-ui/rendering/field-analyzer.js.map +1 -0
- package/dist/auto-ui/rendering/field-renderers.d.ts +64 -0
- package/dist/auto-ui/rendering/field-renderers.d.ts.map +1 -0
- package/dist/auto-ui/rendering/field-renderers.js +317 -0
- package/dist/auto-ui/rendering/field-renderers.js.map +1 -0
- package/dist/auto-ui/rendering/index.d.ts +28 -0
- package/dist/auto-ui/rendering/index.d.ts.map +1 -0
- package/dist/auto-ui/rendering/index.js +60 -0
- package/dist/auto-ui/rendering/index.js.map +1 -0
- package/dist/auto-ui/rendering/layout-selector.d.ts +48 -0
- package/dist/auto-ui/rendering/layout-selector.d.ts.map +1 -0
- package/dist/auto-ui/rendering/layout-selector.js +352 -0
- package/dist/auto-ui/rendering/layout-selector.js.map +1 -0
- package/dist/auto-ui/rendering/template-engine.d.ts +41 -0
- package/dist/auto-ui/rendering/template-engine.d.ts.map +1 -0
- package/dist/auto-ui/rendering/template-engine.js +238 -0
- package/dist/auto-ui/rendering/template-engine.js.map +1 -0
- package/dist/auto-ui/streamable-http-transport.d.ts +79 -0
- package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -0
- package/dist/auto-ui/streamable-http-transport.js +1314 -0
- package/dist/auto-ui/streamable-http-transport.js.map +1 -0
- package/dist/auto-ui/types.d.ts +310 -0
- package/dist/auto-ui/types.d.ts.map +1 -0
- package/dist/auto-ui/types.js +71 -0
- package/dist/auto-ui/types.js.map +1 -0
- package/dist/beam.bundle.js +13506 -0
- package/dist/beam.bundle.js.map +7 -0
- package/dist/claude-code-plugin.d.ts.map +1 -1
- package/dist/claude-code-plugin.js +30 -30
- package/dist/claude-code-plugin.js.map +1 -1
- package/dist/cli/commands/info.d.ts +11 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +313 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +11 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -0
- package/dist/cli/commands/marketplace.js +198 -0
- package/dist/cli/commands/marketplace.js.map +1 -0
- package/dist/cli/commands/package-app.d.ts +9 -0
- package/dist/cli/commands/package-app.d.ts.map +1 -0
- package/dist/cli/commands/package-app.js +191 -0
- package/dist/cli/commands/package-app.js.map +1 -0
- package/dist/cli/commands/package.d.ts +11 -0
- package/dist/cli/commands/package.d.ts.map +1 -0
- package/dist/cli/commands/package.js +573 -0
- package/dist/cli/commands/package.js.map +1 -0
- package/dist/cli-alias.d.ts.map +1 -1
- package/dist/cli-alias.js +30 -28
- package/dist/cli-alias.js.map +1 -1
- package/dist/cli-formatter.d.ts +8 -24
- package/dist/cli-formatter.d.ts.map +1 -1
- package/dist/cli-formatter.js +8 -325
- package/dist/cli-formatter.js.map +1 -1
- package/dist/cli.d.ts +15 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +1157 -1132
- package/dist/cli.js.map +1 -1
- package/dist/daemon/client.d.ts +81 -0
- package/dist/daemon/client.d.ts.map +1 -1
- package/dist/daemon/client.js +583 -13
- package/dist/daemon/client.js.map +1 -1
- package/dist/daemon/manager.d.ts +46 -12
- package/dist/daemon/manager.d.ts.map +1 -1
- package/dist/daemon/manager.js +102 -61
- package/dist/daemon/manager.js.map +1 -1
- package/dist/daemon/protocol.d.ts +74 -6
- package/dist/daemon/protocol.d.ts.map +1 -1
- package/dist/daemon/protocol.js +76 -1
- package/dist/daemon/protocol.js.map +1 -1
- package/dist/daemon/server.d.ts +6 -6
- package/dist/daemon/server.js +778 -117
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/session-manager.d.ts +8 -1
- package/dist/daemon/session-manager.d.ts.map +1 -1
- package/dist/daemon/session-manager.js +32 -9
- package/dist/daemon/session-manager.js.map +1 -1
- package/dist/deploy/cloudflare.d.ts +12 -0
- package/dist/deploy/cloudflare.d.ts.map +1 -0
- package/dist/deploy/cloudflare.js +216 -0
- package/dist/deploy/cloudflare.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +172 -15
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +1132 -267
- package/dist/loader.js.map +1 -1
- package/dist/markdown-utils.d.ts +8 -0
- package/dist/markdown-utils.d.ts.map +1 -0
- package/dist/markdown-utils.js +63 -0
- package/dist/markdown-utils.js.map +1 -0
- package/dist/marketplace-manager.d.ts +10 -0
- package/dist/marketplace-manager.d.ts.map +1 -1
- package/dist/marketplace-manager.js +112 -28
- package/dist/marketplace-manager.js.map +1 -1
- package/dist/mcp-client.d.ts +9 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +11 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/mcp-elicitation.d.ts +32 -0
- package/dist/mcp-elicitation.d.ts.map +1 -0
- package/dist/mcp-elicitation.js +26 -0
- package/dist/mcp-elicitation.js.map +1 -0
- package/dist/path-resolver.d.ts +9 -12
- package/dist/path-resolver.d.ts.map +1 -1
- package/dist/path-resolver.js +13 -43
- package/dist/path-resolver.js.map +1 -1
- package/dist/photon-cli-runner.d.ts.map +1 -1
- package/dist/photon-cli-runner.js +216 -73
- package/dist/photon-cli-runner.js.map +1 -1
- package/dist/photon-doc-extractor.d.ts +88 -0
- package/dist/photon-doc-extractor.d.ts.map +1 -1
- package/dist/photon-doc-extractor.js +536 -27
- package/dist/photon-doc-extractor.js.map +1 -1
- package/dist/photons/maker.photon.d.ts +182 -0
- package/dist/photons/maker.photon.d.ts.map +1 -0
- package/dist/photons/maker.photon.js +504 -0
- package/dist/photons/maker.photon.js.map +1 -0
- package/dist/photons/maker.photon.ts +626 -0
- package/dist/photons/marketplace.photon.d.ts +110 -0
- package/dist/photons/marketplace.photon.d.ts.map +1 -0
- package/dist/photons/marketplace.photon.js +260 -0
- package/dist/photons/marketplace.photon.js.map +1 -0
- package/dist/photons/marketplace.photon.ts +378 -0
- package/dist/photons/tunnel.photon.d.ts +80 -0
- package/dist/photons/tunnel.photon.d.ts.map +1 -0
- package/dist/photons/tunnel.photon.js +269 -0
- package/dist/photons/tunnel.photon.js.map +1 -0
- package/dist/photons/tunnel.photon.ts +345 -0
- package/dist/security-scanner.d.ts.map +1 -1
- package/dist/security-scanner.js +18 -15
- package/dist/security-scanner.js.map +1 -1
- package/dist/serv/auth/jwt.d.ts +89 -0
- package/dist/serv/auth/jwt.d.ts.map +1 -0
- package/dist/serv/auth/jwt.js +239 -0
- package/dist/serv/auth/jwt.js.map +1 -0
- package/dist/serv/auth/oauth.d.ts +117 -0
- package/dist/serv/auth/oauth.d.ts.map +1 -0
- package/dist/serv/auth/oauth.js +395 -0
- package/dist/serv/auth/oauth.js.map +1 -0
- package/dist/serv/auth/well-known.d.ts +60 -0
- package/dist/serv/auth/well-known.d.ts.map +1 -0
- package/dist/serv/auth/well-known.js +154 -0
- package/dist/serv/auth/well-known.js.map +1 -0
- package/dist/serv/db/d1-client.d.ts +65 -0
- package/dist/serv/db/d1-client.d.ts.map +1 -0
- package/dist/serv/db/d1-client.js +137 -0
- package/dist/serv/db/d1-client.js.map +1 -0
- package/dist/serv/db/d1-stores.d.ts +62 -0
- package/dist/serv/db/d1-stores.d.ts.map +1 -0
- package/dist/serv/db/d1-stores.js +307 -0
- package/dist/serv/db/d1-stores.js.map +1 -0
- package/dist/serv/index.d.ts +114 -0
- package/dist/serv/index.d.ts.map +1 -0
- package/dist/serv/index.js +172 -0
- package/dist/serv/index.js.map +1 -0
- package/dist/serv/local.d.ts +118 -0
- package/dist/serv/local.d.ts.map +1 -0
- package/dist/serv/local.js +392 -0
- package/dist/serv/local.js.map +1 -0
- package/dist/serv/middleware/auth.d.ts +66 -0
- package/dist/serv/middleware/auth.d.ts.map +1 -0
- package/dist/serv/middleware/auth.js +178 -0
- package/dist/serv/middleware/auth.js.map +1 -0
- package/dist/serv/middleware/tenant.d.ts +94 -0
- package/dist/serv/middleware/tenant.d.ts.map +1 -0
- package/dist/serv/middleware/tenant.js +152 -0
- package/dist/serv/middleware/tenant.js.map +1 -0
- package/dist/serv/runtime/executor.d.ts +76 -0
- package/dist/serv/runtime/executor.d.ts.map +1 -0
- package/dist/serv/runtime/executor.js +105 -0
- package/dist/serv/runtime/executor.js.map +1 -0
- package/dist/serv/runtime/index.d.ts +8 -0
- package/dist/serv/runtime/index.d.ts.map +1 -0
- package/dist/serv/runtime/index.js +10 -0
- package/dist/serv/runtime/index.js.map +1 -0
- package/dist/serv/runtime/oauth-context.d.ts +121 -0
- package/dist/serv/runtime/oauth-context.d.ts.map +1 -0
- package/dist/serv/runtime/oauth-context.js +153 -0
- package/dist/serv/runtime/oauth-context.js.map +1 -0
- package/dist/serv/session/kv-store.d.ts +54 -0
- package/dist/serv/session/kv-store.d.ts.map +1 -0
- package/dist/serv/session/kv-store.js +149 -0
- package/dist/serv/session/kv-store.js.map +1 -0
- package/dist/serv/session/store.d.ts +113 -0
- package/dist/serv/session/store.d.ts.map +1 -0
- package/dist/serv/session/store.js +284 -0
- package/dist/serv/session/store.js.map +1 -0
- package/dist/serv/types/index.d.ts +147 -0
- package/dist/serv/types/index.d.ts.map +1 -0
- package/dist/serv/types/index.js +8 -0
- package/dist/serv/types/index.js.map +1 -0
- package/dist/serv/vault/token-vault.d.ts +102 -0
- package/dist/serv/vault/token-vault.d.ts.map +1 -0
- package/dist/serv/vault/token-vault.js +177 -0
- package/dist/serv/vault/token-vault.js.map +1 -0
- package/dist/server.d.ts +173 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1622 -86
- package/dist/server.js.map +1 -1
- package/dist/shared/cli-sections.d.ts +6 -0
- package/dist/shared/cli-sections.d.ts.map +1 -0
- package/dist/shared/cli-sections.js +16 -0
- package/dist/shared/cli-sections.js.map +1 -0
- package/dist/shared/cli-utils.d.ts +81 -0
- package/dist/shared/cli-utils.d.ts.map +1 -0
- package/dist/shared/cli-utils.js +174 -0
- package/dist/shared/cli-utils.js.map +1 -0
- package/dist/shared/config-docs.d.ts +6 -0
- package/dist/shared/config-docs.d.ts.map +1 -0
- package/dist/shared/config-docs.js +6 -0
- package/dist/shared/config-docs.js.map +1 -0
- package/dist/shared/error-handler.d.ts +128 -0
- package/dist/shared/error-handler.d.ts.map +1 -0
- package/dist/shared/error-handler.js +342 -0
- package/dist/shared/error-handler.js.map +1 -0
- package/dist/shared/logger.d.ts +42 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +123 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/performance.d.ts +65 -0
- package/dist/shared/performance.d.ts.map +1 -0
- package/dist/shared/performance.js +136 -0
- package/dist/shared/performance.js.map +1 -0
- package/dist/shared/task-runner.d.ts +2 -0
- package/dist/shared/task-runner.d.ts.map +1 -0
- package/dist/shared/task-runner.js +16 -0
- package/dist/shared/task-runner.js.map +1 -0
- package/dist/shared/validation.d.ts +6 -0
- package/dist/shared/validation.d.ts.map +1 -0
- package/dist/shared/validation.js +6 -0
- package/dist/shared/validation.js.map +1 -0
- package/dist/shared-utils.d.ts +63 -0
- package/dist/shared-utils.d.ts.map +1 -0
- package/dist/shared-utils.js +123 -0
- package/dist/shared-utils.js.map +1 -0
- package/dist/template-manager.d.ts +23 -2
- package/dist/template-manager.d.ts.map +1 -1
- package/dist/template-manager.js +177 -88
- package/dist/template-manager.js.map +1 -1
- package/dist/test-client.d.ts.map +1 -1
- package/dist/test-client.js +10 -8
- package/dist/test-client.js.map +1 -1
- package/dist/test-runner.d.ts +52 -0
- package/dist/test-runner.d.ts.map +1 -0
- package/dist/test-runner.js +785 -0
- package/dist/test-runner.js.map +1 -0
- package/dist/testing.d.ts +103 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +163 -0
- package/dist/testing.js.map +1 -0
- package/dist/version-checker.d.ts.map +1 -1
- package/dist/version-checker.js +2 -2
- package/dist/version-checker.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/watcher.d.ts +6 -3
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +49 -10
- package/dist/watcher.js.map +1 -1
- package/package.json +47 -7
- package/templates/cloudflare/worker.ts.template +381 -0
- package/templates/cloudflare/wrangler.toml.template +9 -0
- package/dist/base.d.ts +0 -58
- package/dist/base.d.ts.map +0 -1
- package/dist/base.js +0 -92
- package/dist/base.js.map +0 -1
- package/dist/dependency-manager.d.ts +0 -49
- package/dist/dependency-manager.d.ts.map +0 -1
- package/dist/dependency-manager.js +0 -165
- package/dist/dependency-manager.js.map +0 -1
- package/dist/registry-manager.d.ts +0 -76
- package/dist/registry-manager.d.ts.map +0 -1
- package/dist/registry-manager.js +0 -220
- package/dist/registry-manager.js.map +0 -1
- package/dist/schema-extractor.d.ts +0 -110
- package/dist/schema-extractor.d.ts.map +0 -1
- package/dist/schema-extractor.js +0 -727
- package/dist/schema-extractor.js.map +0 -1
- package/dist/test-marketplace-sources.d.ts +0 -5
- package/dist/test-marketplace-sources.d.ts.map +0 -1
- package/dist/test-marketplace-sources.js +0 -53
- package/dist/test-marketplace-sources.js.map +0 -1
- package/dist/types.d.ts +0 -109
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -12
- package/dist/types.js.map +0 -1
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dependency Manager for Photon MCPs
|
|
3
|
-
*
|
|
4
|
-
* Handles automatic installation of dependencies declared in MCP files
|
|
5
|
-
* Similar to Python's UV or npx behavior
|
|
6
|
-
*/
|
|
7
|
-
interface DependencySpec {
|
|
8
|
-
name: string;
|
|
9
|
-
version: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Manages dependencies for Photon MCPs
|
|
13
|
-
*/
|
|
14
|
-
export declare class DependencyManager {
|
|
15
|
-
private cacheDir;
|
|
16
|
-
constructor();
|
|
17
|
-
/**
|
|
18
|
-
* Extract dependencies from MCP source file
|
|
19
|
-
*
|
|
20
|
-
* Looks for @dependencies JSDoc tag:
|
|
21
|
-
* @dependencies axios@^1.0.0, date-fns@^2.0.0
|
|
22
|
-
* @dependencies octokit@^3.1.0
|
|
23
|
-
*/
|
|
24
|
-
extractDependencies(sourceFilePath: string): Promise<DependencySpec[]>;
|
|
25
|
-
/**
|
|
26
|
-
* Ensure dependencies are installed for an MCP
|
|
27
|
-
*
|
|
28
|
-
* Returns the path to node_modules where dependencies are installed
|
|
29
|
-
*/
|
|
30
|
-
ensureDependencies(mcpName: string, dependencies: DependencySpec[]): Promise<string | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Check if dependencies are already installed
|
|
33
|
-
*/
|
|
34
|
-
private checkInstalled;
|
|
35
|
-
/**
|
|
36
|
-
* Run npm install in a directory
|
|
37
|
-
*/
|
|
38
|
-
private runNpmInstall;
|
|
39
|
-
/**
|
|
40
|
-
* Clear cache for an MCP
|
|
41
|
-
*/
|
|
42
|
-
clearCache(mcpName: string): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* Clear all cached dependencies
|
|
45
|
-
*/
|
|
46
|
-
clearAllCache(): Promise<void>;
|
|
47
|
-
}
|
|
48
|
-
export {};
|
|
49
|
-
//# sourceMappingURL=dependency-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-manager.d.ts","sourceRoot":"","sources":["../src/dependency-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAS;;IAOzB;;;;;;OAMG;IACG,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA0C5E;;;;OAIG;IACG,kBAAkB,CACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,cAAc,EAAE,GAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0CzB;;OAEG;YACW,cAAc;IA2B5B;;OAEG;YACW,aAAa;IAqB3B;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUhD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAQrC"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dependency Manager for Photon MCPs
|
|
3
|
-
*
|
|
4
|
-
* Handles automatic installation of dependencies declared in MCP files
|
|
5
|
-
* Similar to Python's UV or npx behavior
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from 'fs/promises';
|
|
8
|
-
import * as path from 'path';
|
|
9
|
-
import * as os from 'os';
|
|
10
|
-
import { spawn } from 'child_process';
|
|
11
|
-
/**
|
|
12
|
-
* Manages dependencies for Photon MCPs
|
|
13
|
-
*/
|
|
14
|
-
export class DependencyManager {
|
|
15
|
-
cacheDir;
|
|
16
|
-
constructor() {
|
|
17
|
-
// Store dependencies in ~/.cache/photon-mcp/dependencies/
|
|
18
|
-
this.cacheDir = path.join(os.homedir(), '.cache', 'photon-mcp', 'dependencies');
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Extract dependencies from MCP source file
|
|
22
|
-
*
|
|
23
|
-
* Looks for @dependencies JSDoc tag:
|
|
24
|
-
* @dependencies axios@^1.0.0, date-fns@^2.0.0
|
|
25
|
-
* @dependencies octokit@^3.1.0
|
|
26
|
-
*/
|
|
27
|
-
async extractDependencies(sourceFilePath) {
|
|
28
|
-
const content = await fs.readFile(sourceFilePath, 'utf-8');
|
|
29
|
-
const dependencies = [];
|
|
30
|
-
// Match @dependencies tags in JSDoc comments
|
|
31
|
-
// Regex: @dependencies package@version, package2@version2
|
|
32
|
-
const dependencyRegex = /@dependencies\s+([\w@^~.,\s-]+)/g;
|
|
33
|
-
let match;
|
|
34
|
-
while ((match = dependencyRegex.exec(content)) !== null) {
|
|
35
|
-
const depString = match[1].trim();
|
|
36
|
-
// Split by comma for multiple dependencies
|
|
37
|
-
const deps = depString.split(',').map(d => d.trim());
|
|
38
|
-
for (const dep of deps) {
|
|
39
|
-
// Parse: package@version
|
|
40
|
-
const parts = dep.split('@');
|
|
41
|
-
// Handle scoped packages like @octokit/rest@^1.0.0
|
|
42
|
-
let name, version;
|
|
43
|
-
if (dep.startsWith('@')) {
|
|
44
|
-
// Scoped package: @scope/package@version
|
|
45
|
-
const atIndex = dep.indexOf('@', 1); // Find second @
|
|
46
|
-
if (atIndex > 0) {
|
|
47
|
-
name = dep.substring(0, atIndex);
|
|
48
|
-
version = dep.substring(atIndex + 1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
// Regular package: package@version
|
|
53
|
-
[name, version] = parts;
|
|
54
|
-
}
|
|
55
|
-
if (name && version) {
|
|
56
|
-
dependencies.push({ name, version });
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return dependencies;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Ensure dependencies are installed for an MCP
|
|
64
|
-
*
|
|
65
|
-
* Returns the path to node_modules where dependencies are installed
|
|
66
|
-
*/
|
|
67
|
-
async ensureDependencies(mcpName, dependencies) {
|
|
68
|
-
if (dependencies.length === 0) {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
// Create MCP-specific directory
|
|
72
|
-
const mcpDir = path.join(this.cacheDir, mcpName);
|
|
73
|
-
const nodeModules = path.join(mcpDir, 'node_modules');
|
|
74
|
-
// Check if already installed
|
|
75
|
-
const installed = await this.checkInstalled(mcpDir, dependencies);
|
|
76
|
-
if (installed) {
|
|
77
|
-
console.error(`Dependencies already installed for ${mcpName}`);
|
|
78
|
-
return nodeModules;
|
|
79
|
-
}
|
|
80
|
-
// Create directory
|
|
81
|
-
await fs.mkdir(mcpDir, { recursive: true });
|
|
82
|
-
// Create minimal package.json
|
|
83
|
-
const packageJson = {
|
|
84
|
-
name: `photon-${mcpName}`,
|
|
85
|
-
version: '1.0.0',
|
|
86
|
-
type: 'module',
|
|
87
|
-
dependencies: Object.fromEntries(dependencies.map(d => [d.name, d.version])),
|
|
88
|
-
};
|
|
89
|
-
await fs.writeFile(path.join(mcpDir, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
90
|
-
// Install dependencies
|
|
91
|
-
console.error(`📦 Installing dependencies for ${mcpName}...`);
|
|
92
|
-
await this.runNpmInstall(mcpDir);
|
|
93
|
-
console.error(`✅ Dependencies installed for ${mcpName}`);
|
|
94
|
-
return nodeModules;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Check if dependencies are already installed
|
|
98
|
-
*/
|
|
99
|
-
async checkInstalled(mcpDir, dependencies) {
|
|
100
|
-
try {
|
|
101
|
-
const packageJsonPath = path.join(mcpDir, 'package.json');
|
|
102
|
-
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));
|
|
103
|
-
// Check if all dependencies match
|
|
104
|
-
for (const dep of dependencies) {
|
|
105
|
-
if (packageJson.dependencies?.[dep.name] !== dep.version) {
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// Check if node_modules exists
|
|
110
|
-
const nodeModules = path.join(mcpDir, 'node_modules');
|
|
111
|
-
await fs.access(nodeModules);
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
catch {
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Run npm install in a directory
|
|
120
|
-
*/
|
|
121
|
-
async runNpmInstall(cwd) {
|
|
122
|
-
return new Promise((resolve, reject) => {
|
|
123
|
-
const npmCmd = process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
124
|
-
const child = spawn(npmCmd, ['install', '--omit=dev', '--silent'], {
|
|
125
|
-
cwd,
|
|
126
|
-
stdio: 'inherit',
|
|
127
|
-
});
|
|
128
|
-
child.on('exit', (code) => {
|
|
129
|
-
if (code === 0) {
|
|
130
|
-
resolve();
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
reject(new Error(`npm install failed with code ${code}`));
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
child.on('error', reject);
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Clear cache for an MCP
|
|
141
|
-
*/
|
|
142
|
-
async clearCache(mcpName) {
|
|
143
|
-
const mcpDir = path.join(this.cacheDir, mcpName);
|
|
144
|
-
try {
|
|
145
|
-
await fs.rm(mcpDir, { recursive: true, force: true });
|
|
146
|
-
console.error(`🗑️ Cleared cache for ${mcpName}`);
|
|
147
|
-
}
|
|
148
|
-
catch (error) {
|
|
149
|
-
console.error(`Failed to clear cache for ${mcpName}: ${error.message}`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Clear all cached dependencies
|
|
154
|
-
*/
|
|
155
|
-
async clearAllCache() {
|
|
156
|
-
try {
|
|
157
|
-
await fs.rm(this.cacheDir, { recursive: true, force: true });
|
|
158
|
-
console.error(`🗑️ Cleared all MCP dependency cache`);
|
|
159
|
-
}
|
|
160
|
-
catch (error) {
|
|
161
|
-
console.error(`Failed to clear cache: ${error.message}`);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
//# sourceMappingURL=dependency-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-manager.js","sourceRoot":"","sources":["../src/dependency-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry Manager - Manage multiple MCP registries
|
|
3
|
-
*/
|
|
4
|
-
export interface Registry {
|
|
5
|
-
name: string;
|
|
6
|
-
url: string;
|
|
7
|
-
enabled: boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface RegistryConfig {
|
|
10
|
-
registries: Registry[];
|
|
11
|
-
}
|
|
12
|
-
export declare class RegistryManager {
|
|
13
|
-
private config;
|
|
14
|
-
initialize(): Promise<void>;
|
|
15
|
-
save(): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Get all registries
|
|
18
|
-
*/
|
|
19
|
-
getAll(): Registry[];
|
|
20
|
-
/**
|
|
21
|
-
* Get enabled registries
|
|
22
|
-
*/
|
|
23
|
-
getEnabled(): Registry[];
|
|
24
|
-
/**
|
|
25
|
-
* Get registry by name
|
|
26
|
-
*/
|
|
27
|
-
get(name: string): Registry | undefined;
|
|
28
|
-
/**
|
|
29
|
-
* Parse GitHub repo reference into registry info
|
|
30
|
-
* Supports:
|
|
31
|
-
* - username/repo
|
|
32
|
-
* - https://github.com/username/repo
|
|
33
|
-
* - https://github.com/username/repo.git
|
|
34
|
-
*/
|
|
35
|
-
private parseGitHubRepo;
|
|
36
|
-
/**
|
|
37
|
-
* Add a new registry from GitHub repo
|
|
38
|
-
* Supports: username/repo or https://github.com/username/repo
|
|
39
|
-
*/
|
|
40
|
-
add(githubRepo: string): Promise<{
|
|
41
|
-
name: string;
|
|
42
|
-
url: string;
|
|
43
|
-
}>;
|
|
44
|
-
/**
|
|
45
|
-
* Remove a registry
|
|
46
|
-
*/
|
|
47
|
-
remove(name: string): Promise<boolean>;
|
|
48
|
-
/**
|
|
49
|
-
* Enable/disable a registry
|
|
50
|
-
*/
|
|
51
|
-
setEnabled(name: string, enabled: boolean): Promise<boolean>;
|
|
52
|
-
/**
|
|
53
|
-
* Try to fetch MCP from all enabled registries
|
|
54
|
-
*/
|
|
55
|
-
fetchMCP(mcpName: string): Promise<{
|
|
56
|
-
content: string;
|
|
57
|
-
registry: Registry;
|
|
58
|
-
} | null>;
|
|
59
|
-
/**
|
|
60
|
-
* Fetch version from all enabled registries
|
|
61
|
-
*/
|
|
62
|
-
fetchVersion(mcpName: string): Promise<{
|
|
63
|
-
version: string;
|
|
64
|
-
registry: Registry;
|
|
65
|
-
} | null>;
|
|
66
|
-
/**
|
|
67
|
-
* Search for MCP in all registries
|
|
68
|
-
*/
|
|
69
|
-
search(query: string): Promise<Map<string, Registry[]>>;
|
|
70
|
-
/**
|
|
71
|
-
* List all available MCPs from a registry
|
|
72
|
-
* Note: Requires registry to have an index.json file
|
|
73
|
-
*/
|
|
74
|
-
listFromRegistry(registryName: string): Promise<string[]>;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=registry-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-manager.d.ts","sourceRoot":"","sources":["../src/registry-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,QAAQ,EAAE,CAAC;CACxB;AAWD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAsC;IAE9C,UAAU;IAeV,IAAI;IAIV;;OAEG;IACH,MAAM,IAAI,QAAQ,EAAE;IAIpB;;OAEG;IACH,UAAU,IAAI,QAAQ,EAAE;IAIxB;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;IAwBvB;;;OAGG;IACG,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBrE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlE;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAoBxF;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,GAAG,IAAI,CAAC;IAwB5F;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAwB7D;;;OAGG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAsBhE"}
|
package/dist/registry-manager.js
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry Manager - Manage multiple MCP registries
|
|
3
|
-
*/
|
|
4
|
-
import * as fs from 'fs/promises';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import * as os from 'os';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
8
|
-
const CONFIG_DIR = path.join(os.homedir(), '.config', 'photon');
|
|
9
|
-
const CONFIG_FILE = path.join(CONFIG_DIR, 'registries.json');
|
|
10
|
-
const DEFAULT_REGISTRY = {
|
|
11
|
-
name: 'photons',
|
|
12
|
-
url: 'https://raw.githubusercontent.com/portel-dev/photons/main',
|
|
13
|
-
enabled: true,
|
|
14
|
-
};
|
|
15
|
-
export class RegistryManager {
|
|
16
|
-
config = { registries: [] };
|
|
17
|
-
async initialize() {
|
|
18
|
-
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
19
|
-
if (existsSync(CONFIG_FILE)) {
|
|
20
|
-
const data = await fs.readFile(CONFIG_FILE, 'utf-8');
|
|
21
|
-
this.config = JSON.parse(data);
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
// Initialize with default registry
|
|
25
|
-
this.config = {
|
|
26
|
-
registries: [DEFAULT_REGISTRY],
|
|
27
|
-
};
|
|
28
|
-
await this.save();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async save() {
|
|
32
|
-
await fs.writeFile(CONFIG_FILE, JSON.stringify(this.config, null, 2), 'utf-8');
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Get all registries
|
|
36
|
-
*/
|
|
37
|
-
getAll() {
|
|
38
|
-
return this.config.registries;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Get enabled registries
|
|
42
|
-
*/
|
|
43
|
-
getEnabled() {
|
|
44
|
-
return this.config.registries.filter((r) => r.enabled);
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Get registry by name
|
|
48
|
-
*/
|
|
49
|
-
get(name) {
|
|
50
|
-
return this.config.registries.find((r) => r.name === name);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Parse GitHub repo reference into registry info
|
|
54
|
-
* Supports:
|
|
55
|
-
* - username/repo
|
|
56
|
-
* - https://github.com/username/repo
|
|
57
|
-
* - https://github.com/username/repo.git
|
|
58
|
-
*/
|
|
59
|
-
parseGitHubRepo(input) {
|
|
60
|
-
// Pattern 1: username/repo
|
|
61
|
-
const shorthandMatch = input.match(/^([a-zA-Z0-9-]+)\/([a-zA-Z0-9-_.]+)$/);
|
|
62
|
-
if (shorthandMatch) {
|
|
63
|
-
const [, username, repo] = shorthandMatch;
|
|
64
|
-
return {
|
|
65
|
-
name: repo,
|
|
66
|
-
url: `https://raw.githubusercontent.com/${username}/${repo}/main`,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
// Pattern 2: https://github.com/username/repo or https://github.com/username/repo.git
|
|
70
|
-
const urlMatch = input.match(/^https?:\/\/github\.com\/([a-zA-Z0-9-]+)\/([a-zA-Z0-9-_.]+?)(\.git)?$/);
|
|
71
|
-
if (urlMatch) {
|
|
72
|
-
const [, username, repo] = urlMatch;
|
|
73
|
-
return {
|
|
74
|
-
name: repo,
|
|
75
|
-
url: `https://raw.githubusercontent.com/${username}/${repo}/main`,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Add a new registry from GitHub repo
|
|
82
|
-
* Supports: username/repo or https://github.com/username/repo
|
|
83
|
-
*/
|
|
84
|
-
async add(githubRepo) {
|
|
85
|
-
const parsed = this.parseGitHubRepo(githubRepo);
|
|
86
|
-
if (!parsed) {
|
|
87
|
-
throw new Error('Invalid format. Use: username/repo or https://github.com/username/repo');
|
|
88
|
-
}
|
|
89
|
-
// Check if already exists
|
|
90
|
-
if (this.get(parsed.name)) {
|
|
91
|
-
throw new Error(`Registry '${parsed.name}' already exists`);
|
|
92
|
-
}
|
|
93
|
-
this.config.registries.push({
|
|
94
|
-
name: parsed.name,
|
|
95
|
-
url: parsed.url,
|
|
96
|
-
enabled: true,
|
|
97
|
-
});
|
|
98
|
-
await this.save();
|
|
99
|
-
return parsed;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Remove a registry
|
|
103
|
-
*/
|
|
104
|
-
async remove(name) {
|
|
105
|
-
const index = this.config.registries.findIndex((r) => r.name === name);
|
|
106
|
-
if (index === -1) {
|
|
107
|
-
return false;
|
|
108
|
-
}
|
|
109
|
-
// Prevent removing the default registry
|
|
110
|
-
if (this.config.registries[index].url === DEFAULT_REGISTRY.url) {
|
|
111
|
-
throw new Error('Cannot remove the default photons registry');
|
|
112
|
-
}
|
|
113
|
-
this.config.registries.splice(index, 1);
|
|
114
|
-
await this.save();
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Enable/disable a registry
|
|
119
|
-
*/
|
|
120
|
-
async setEnabled(name, enabled) {
|
|
121
|
-
const registry = this.get(name);
|
|
122
|
-
if (!registry) {
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
registry.enabled = enabled;
|
|
126
|
-
await this.save();
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Try to fetch MCP from all enabled registries
|
|
131
|
-
*/
|
|
132
|
-
async fetchMCP(mcpName) {
|
|
133
|
-
const enabled = this.getEnabled();
|
|
134
|
-
for (const registry of enabled) {
|
|
135
|
-
try {
|
|
136
|
-
const url = `${registry.url}/${mcpName}.photon.ts`;
|
|
137
|
-
const response = await fetch(url);
|
|
138
|
-
if (response.ok) {
|
|
139
|
-
const content = await response.text();
|
|
140
|
-
return { content, registry };
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
// Try next registry
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* Fetch version from all enabled registries
|
|
151
|
-
*/
|
|
152
|
-
async fetchVersion(mcpName) {
|
|
153
|
-
const enabled = this.getEnabled();
|
|
154
|
-
for (const registry of enabled) {
|
|
155
|
-
try {
|
|
156
|
-
const url = `${registry.url}/${mcpName}.photon.ts`;
|
|
157
|
-
const response = await fetch(url);
|
|
158
|
-
if (response.ok) {
|
|
159
|
-
const content = await response.text();
|
|
160
|
-
const versionMatch = content.match(/@version\s+(\d+\.\d+\.\d+)/);
|
|
161
|
-
if (versionMatch) {
|
|
162
|
-
return { version: versionMatch[1], registry };
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
catch {
|
|
167
|
-
// Try next registry
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Search for MCP in all registries
|
|
174
|
-
*/
|
|
175
|
-
async search(query) {
|
|
176
|
-
const results = new Map();
|
|
177
|
-
const enabled = this.getEnabled();
|
|
178
|
-
// For now, we just check if the MCP exists by name
|
|
179
|
-
// In the future, registries could provide a manifest/index file
|
|
180
|
-
for (const registry of enabled) {
|
|
181
|
-
try {
|
|
182
|
-
const url = `${registry.url}/${query}.photon.ts`;
|
|
183
|
-
const response = await fetch(url, { method: 'HEAD' });
|
|
184
|
-
if (response.ok) {
|
|
185
|
-
const existing = results.get(query) || [];
|
|
186
|
-
existing.push(registry);
|
|
187
|
-
results.set(query, existing);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
catch {
|
|
191
|
-
// Skip this registry
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
return results;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* List all available MCPs from a registry
|
|
198
|
-
* Note: Requires registry to have an index.json file
|
|
199
|
-
*/
|
|
200
|
-
async listFromRegistry(registryName) {
|
|
201
|
-
const registry = this.get(registryName);
|
|
202
|
-
if (!registry) {
|
|
203
|
-
return [];
|
|
204
|
-
}
|
|
205
|
-
try {
|
|
206
|
-
// Try to fetch index.json if it exists
|
|
207
|
-
const indexUrl = `${registry.url}/index.json`;
|
|
208
|
-
const response = await fetch(indexUrl);
|
|
209
|
-
if (response.ok) {
|
|
210
|
-
const data = await response.json();
|
|
211
|
-
return data.mcps || [];
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
// No index file available
|
|
216
|
-
}
|
|
217
|
-
return [];
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
//# sourceMappingURL=registry-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-manager.js","sourceRoot":"","sources":["../src/registry-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema Extractor
|
|
3
|
-
*
|
|
4
|
-
* Extracts JSON schemas from TypeScript method signatures and JSDoc comments
|
|
5
|
-
* Also extracts constructor parameters for config injection
|
|
6
|
-
* Supports Templates (@Template) and Static resources (@Static)
|
|
7
|
-
*
|
|
8
|
-
* Now uses TypeScript's compiler API for robust type parsing
|
|
9
|
-
*/
|
|
10
|
-
import { ExtractedSchema, ConstructorParam, TemplateInfo, StaticInfo } from './types.js';
|
|
11
|
-
export interface ExtractedMetadata {
|
|
12
|
-
tools: ExtractedSchema[];
|
|
13
|
-
templates: TemplateInfo[];
|
|
14
|
-
statics: StaticInfo[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Extract schemas from a Photon MCP class file
|
|
18
|
-
*/
|
|
19
|
-
export declare class SchemaExtractor {
|
|
20
|
-
/**
|
|
21
|
-
* Extract method schemas from source code file
|
|
22
|
-
*/
|
|
23
|
-
extractFromFile(filePath: string): Promise<ExtractedSchema[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Extract all metadata (tools, templates, statics) from source code
|
|
26
|
-
*/
|
|
27
|
-
extractAllFromSource(source: string): ExtractedMetadata;
|
|
28
|
-
/**
|
|
29
|
-
* Extract schemas from source code string (backward compatibility)
|
|
30
|
-
*/
|
|
31
|
-
extractFromSource(source: string): ExtractedSchema[];
|
|
32
|
-
/**
|
|
33
|
-
* Get JSDoc comment for a node
|
|
34
|
-
*/
|
|
35
|
-
private getJSDocComment;
|
|
36
|
-
/**
|
|
37
|
-
* Get the first parameter's type node
|
|
38
|
-
*/
|
|
39
|
-
private getFirstParameterType;
|
|
40
|
-
/**
|
|
41
|
-
* Build JSON schema from TypeScript type node
|
|
42
|
-
* Extracts: type, optional, readonly
|
|
43
|
-
*/
|
|
44
|
-
private buildSchemaFromType;
|
|
45
|
-
/**
|
|
46
|
-
* Convert TypeScript type node to JSON schema
|
|
47
|
-
*/
|
|
48
|
-
private typeNodeToSchema;
|
|
49
|
-
/**
|
|
50
|
-
* Extract enum values from a union of literal types
|
|
51
|
-
* Returns a proper enum schema if all types are literals of the same kind
|
|
52
|
-
* Returns an optimized anyOf schema for mixed unions (e.g., number | '+1' | '-1')
|
|
53
|
-
* Returns null if the union should use standard anyOf processing
|
|
54
|
-
*/
|
|
55
|
-
private extractEnumFromUnion;
|
|
56
|
-
/**
|
|
57
|
-
* Extract constructor parameters for config injection
|
|
58
|
-
*/
|
|
59
|
-
extractConstructorParams(source: string): ConstructorParam[];
|
|
60
|
-
/**
|
|
61
|
-
* Extract default value from initializer
|
|
62
|
-
*/
|
|
63
|
-
private extractDefaultValue;
|
|
64
|
-
/**
|
|
65
|
-
* Extract main description from JSDoc comment
|
|
66
|
-
*/
|
|
67
|
-
private extractDescription;
|
|
68
|
-
/**
|
|
69
|
-
* Extract parameter descriptions from JSDoc @param tags
|
|
70
|
-
* Also removes constraint tags from descriptions
|
|
71
|
-
*/
|
|
72
|
-
private extractParamDocs;
|
|
73
|
-
/**
|
|
74
|
-
* Extract parameter constraints from JSDoc @param tags
|
|
75
|
-
* Supports inline tags: {@min}, {@max}, {@pattern}, {@format}, {@default}, {@unique},
|
|
76
|
-
* {@example}, {@multipleOf}, {@deprecated}, {@readOnly}, {@writeOnly}
|
|
77
|
-
*/
|
|
78
|
-
private extractParamConstraints;
|
|
79
|
-
/**
|
|
80
|
-
* Apply constraints to a schema property based on type
|
|
81
|
-
* Handles: min/max (contextual), pattern, format, default, unique,
|
|
82
|
-
* examples, multipleOf, deprecated, readOnly, writeOnly
|
|
83
|
-
* Works with both simple types and anyOf schemas
|
|
84
|
-
*/
|
|
85
|
-
private applyConstraints;
|
|
86
|
-
/**
|
|
87
|
-
* Check if JSDoc contains @Template tag
|
|
88
|
-
*/
|
|
89
|
-
private hasTemplateTag;
|
|
90
|
-
/**
|
|
91
|
-
* Check if JSDoc contains @Static tag
|
|
92
|
-
*/
|
|
93
|
-
private hasStaticTag;
|
|
94
|
-
/**
|
|
95
|
-
* Extract URI pattern from @Static tag
|
|
96
|
-
* Example: @Static github://repos/{owner}/{repo}/readme
|
|
97
|
-
*/
|
|
98
|
-
private extractStaticURI;
|
|
99
|
-
/**
|
|
100
|
-
* Extract format hint from @format tag
|
|
101
|
-
* Example: @format table
|
|
102
|
-
*/
|
|
103
|
-
private extractFormat;
|
|
104
|
-
/**
|
|
105
|
-
* Extract MIME type from @mimeType tag
|
|
106
|
-
* Example: @mimeType text/markdown
|
|
107
|
-
*/
|
|
108
|
-
private extractMimeType;
|
|
109
|
-
}
|
|
110
|
-
//# sourceMappingURL=schema-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-extractor.d.ts","sourceRoot":"","sources":["../src/schema-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAUnE;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB;IAyHvD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE;IAIpD;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyGxB;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IA0F5B;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAmD5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA2G/B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA0FxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAQrB;;;OAGG;IACH,OAAO,CAAC,eAAe;CAIxB"}
|