@daniel.stefan/metalink 1.3.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 +160 -0
- package/package.json +96 -0
- package/packages/cli/dist/bin/cli.d.ts +3 -0
- package/packages/cli/dist/bin/cli.d.ts.map +1 -0
- package/packages/cli/dist/bin/cli.js +4 -0
- package/packages/cli/dist/bin/cli.js.map +1 -0
- package/packages/cli/dist/commands/config/init.d.ts +9 -0
- package/packages/cli/dist/commands/config/init.d.ts.map +1 -0
- package/packages/cli/dist/commands/config/init.js +38 -0
- package/packages/cli/dist/commands/config/init.js.map +1 -0
- package/packages/cli/dist/commands/config/validate.d.ts +9 -0
- package/packages/cli/dist/commands/config/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/config/validate.js +34 -0
- package/packages/cli/dist/commands/config/validate.js.map +1 -0
- package/packages/cli/dist/commands/daemon/restart.d.ts +15 -0
- package/packages/cli/dist/commands/daemon/restart.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/restart.js +184 -0
- package/packages/cli/dist/commands/daemon/restart.js.map +1 -0
- package/packages/cli/dist/commands/daemon/start.d.ts +7 -0
- package/packages/cli/dist/commands/daemon/start.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/start.js +85 -0
- package/packages/cli/dist/commands/daemon/start.js.map +1 -0
- package/packages/cli/dist/commands/daemon/status.d.ts +7 -0
- package/packages/cli/dist/commands/daemon/status.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/status.js +69 -0
- package/packages/cli/dist/commands/daemon/status.js.map +1 -0
- package/packages/cli/dist/commands/daemon/stop.d.ts +8 -0
- package/packages/cli/dist/commands/daemon/stop.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/stop.js +77 -0
- package/packages/cli/dist/commands/daemon/stop.js.map +1 -0
- package/packages/cli/dist/commands/import/mcpm.d.ts +10 -0
- package/packages/cli/dist/commands/import/mcpm.d.ts.map +1 -0
- package/packages/cli/dist/commands/import/mcpm.js +58 -0
- package/packages/cli/dist/commands/import/mcpm.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts +16 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.js +72 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky.d.ts +12 -0
- package/packages/cli/dist/commands/safety/add-risky.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky.js +52 -0
- package/packages/cli/dist/commands/safety/add-risky.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts +16 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.js +72 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe.d.ts +12 -0
- package/packages/cli/dist/commands/safety/add-safe.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe.js +52 -0
- package/packages/cli/dist/commands/safety/add-safe.js.map +1 -0
- package/packages/cli/dist/commands/safety/check.d.ts +9 -0
- package/packages/cli/dist/commands/safety/check.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/check.js +36 -0
- package/packages/cli/dist/commands/safety/check.js.map +1 -0
- package/packages/cli/dist/commands/safety/export.d.ts +10 -0
- package/packages/cli/dist/commands/safety/export.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/export.js +48 -0
- package/packages/cli/dist/commands/safety/export.js.map +1 -0
- package/packages/cli/dist/commands/safety/import.d.ts +12 -0
- package/packages/cli/dist/commands/safety/import.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/import.js +78 -0
- package/packages/cli/dist/commands/safety/import.js.map +1 -0
- package/packages/cli/dist/commands/safety/index.d.ts +8 -0
- package/packages/cli/dist/commands/safety/index.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/index.js +46 -0
- package/packages/cli/dist/commands/safety/index.js.map +1 -0
- package/packages/cli/dist/commands/safety/list.d.ts +6 -0
- package/packages/cli/dist/commands/safety/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/list.js +77 -0
- package/packages/cli/dist/commands/safety/list.js.map +1 -0
- package/packages/cli/dist/commands/safety/remove.d.ts +9 -0
- package/packages/cli/dist/commands/safety/remove.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/remove.js +46 -0
- package/packages/cli/dist/commands/safety/remove.js.map +1 -0
- package/packages/cli/dist/commands/safety/reset.d.ts +9 -0
- package/packages/cli/dist/commands/safety/reset.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/reset.js +46 -0
- package/packages/cli/dist/commands/safety/reset.js.map +1 -0
- package/packages/cli/dist/commands/safety/validate.d.ts +9 -0
- package/packages/cli/dist/commands/safety/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/validate.js +51 -0
- package/packages/cli/dist/commands/safety/validate.js.map +1 -0
- package/packages/cli/dist/commands/secret/get.d.ts +9 -0
- package/packages/cli/dist/commands/secret/get.d.ts.map +1 -0
- package/packages/cli/dist/commands/secret/get.js +26 -0
- package/packages/cli/dist/commands/secret/get.js.map +1 -0
- package/packages/cli/dist/commands/secret/set.d.ts +10 -0
- package/packages/cli/dist/commands/secret/set.d.ts.map +1 -0
- package/packages/cli/dist/commands/secret/set.js +22 -0
- package/packages/cli/dist/commands/secret/set.js.map +1 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts +2 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js +234 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js.map +1 -0
- package/packages/cli/dist/commands/server/add.d.ts +14 -0
- package/packages/cli/dist/commands/server/add.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/add.js +86 -0
- package/packages/cli/dist/commands/server/add.js.map +1 -0
- package/packages/cli/dist/commands/server/available.d.ts +10 -0
- package/packages/cli/dist/commands/server/available.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/available.js +62 -0
- package/packages/cli/dist/commands/server/available.js.map +1 -0
- package/packages/cli/dist/commands/server/debug.d.ts +18 -0
- package/packages/cli/dist/commands/server/debug.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/debug.js +165 -0
- package/packages/cli/dist/commands/server/debug.js.map +1 -0
- package/packages/cli/dist/commands/server/info.d.ts +13 -0
- package/packages/cli/dist/commands/server/info.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/info.js +62 -0
- package/packages/cli/dist/commands/server/info.js.map +1 -0
- package/packages/cli/dist/commands/server/list.d.ts +10 -0
- package/packages/cli/dist/commands/server/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/list.js +105 -0
- package/packages/cli/dist/commands/server/list.js.map +1 -0
- package/packages/cli/dist/commands/server/refresh-tools.d.ts +13 -0
- package/packages/cli/dist/commands/server/refresh-tools.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/refresh-tools.js +46 -0
- package/packages/cli/dist/commands/server/refresh-tools.js.map +1 -0
- package/packages/cli/dist/commands/server/remove.d.ts +12 -0
- package/packages/cli/dist/commands/server/remove.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/remove.js +39 -0
- package/packages/cli/dist/commands/server/remove.js.map +1 -0
- package/packages/cli/dist/commands/server/restart.d.ts +9 -0
- package/packages/cli/dist/commands/server/restart.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/restart.js +30 -0
- package/packages/cli/dist/commands/server/restart.js.map +1 -0
- package/packages/cli/dist/commands/server/start.d.ts +9 -0
- package/packages/cli/dist/commands/server/start.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/start.js +37 -0
- package/packages/cli/dist/commands/server/start.js.map +1 -0
- package/packages/cli/dist/commands/server/status.d.ts +9 -0
- package/packages/cli/dist/commands/server/status.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/status.js +30 -0
- package/packages/cli/dist/commands/server/status.js.map +1 -0
- package/packages/cli/dist/commands/server/stop.d.ts +9 -0
- package/packages/cli/dist/commands/server/stop.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/stop.js +31 -0
- package/packages/cli/dist/commands/server/stop.js.map +1 -0
- package/packages/cli/dist/commands/server/validate.d.ts +15 -0
- package/packages/cli/dist/commands/server/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/validate.js +87 -0
- package/packages/cli/dist/commands/server/validate.js.map +1 -0
- package/packages/cli/dist/commands/stdio.d.ts +36 -0
- package/packages/cli/dist/commands/stdio.d.ts.map +1 -0
- package/packages/cli/dist/commands/stdio.js +85 -0
- package/packages/cli/dist/commands/stdio.js.map +1 -0
- package/packages/cli/dist/commands/tool/execute-confirm.d.ts +12 -0
- package/packages/cli/dist/commands/tool/execute-confirm.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/execute-confirm.js +98 -0
- package/packages/cli/dist/commands/tool/execute-confirm.js.map +1 -0
- package/packages/cli/dist/commands/tool/execute.d.ts +12 -0
- package/packages/cli/dist/commands/tool/execute.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/execute.js +55 -0
- package/packages/cli/dist/commands/tool/execute.js.map +1 -0
- package/packages/cli/dist/commands/tool/list.d.ts +13 -0
- package/packages/cli/dist/commands/tool/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/list.js +91 -0
- package/packages/cli/dist/commands/tool/list.js.map +1 -0
- package/packages/cli/dist/commands/tool/search.d.ts +12 -0
- package/packages/cli/dist/commands/tool/search.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/search.js +87 -0
- package/packages/cli/dist/commands/tool/search.js.map +1 -0
- package/packages/cli/dist/index.d.ts +2 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +9 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/utils/daemon-checker.d.ts +18 -0
- package/packages/cli/dist/utils/daemon-checker.d.ts.map +1 -0
- package/packages/cli/dist/utils/daemon-checker.js +69 -0
- package/packages/cli/dist/utils/daemon-checker.js.map +1 -0
- package/packages/cli/dist/utils/daemon-endpoint.d.ts +7 -0
- package/packages/cli/dist/utils/daemon-endpoint.d.ts.map +1 -0
- package/packages/cli/dist/utils/daemon-endpoint.js +13 -0
- package/packages/cli/dist/utils/daemon-endpoint.js.map +1 -0
- package/packages/cli/dist/utils/get-configured-port.d.ts +43 -0
- package/packages/cli/dist/utils/get-configured-port.d.ts.map +1 -0
- package/packages/cli/dist/utils/get-configured-port.js +141 -0
- package/packages/cli/dist/utils/get-configured-port.js.map +1 -0
- package/packages/cli/dist/utils/stdio-bridge.d.ts +48 -0
- package/packages/cli/dist/utils/stdio-bridge.d.ts.map +1 -0
- package/packages/cli/dist/utils/stdio-bridge.js +181 -0
- package/packages/cli/dist/utils/stdio-bridge.js.map +1 -0
- package/packages/cli/package.json +48 -0
- package/packages/core/dist/config/defaults.d.ts +36 -0
- package/packages/core/dist/config/defaults.d.ts.map +1 -0
- package/packages/core/dist/config/defaults.js +324 -0
- package/packages/core/dist/config/defaults.js.map +1 -0
- package/packages/core/dist/config/index.d.ts +9 -0
- package/packages/core/dist/config/index.d.ts.map +1 -0
- package/packages/core/dist/config/index.js +14 -0
- package/packages/core/dist/config/index.js.map +1 -0
- package/packages/core/dist/config/loader.d.ts +269 -0
- package/packages/core/dist/config/loader.d.ts.map +1 -0
- package/packages/core/dist/config/loader.js +777 -0
- package/packages/core/dist/config/loader.js.map +1 -0
- package/packages/core/dist/config/registry.d.ts +212 -0
- package/packages/core/dist/config/registry.d.ts.map +1 -0
- package/packages/core/dist/config/registry.js +754 -0
- package/packages/core/dist/config/registry.js.map +1 -0
- package/packages/core/dist/config/schema.d.ts +4352 -0
- package/packages/core/dist/config/schema.d.ts.map +1 -0
- package/packages/core/dist/config/schema.js +267 -0
- package/packages/core/dist/config/schema.js.map +1 -0
- package/packages/core/dist/daemon.d.ts +7 -0
- package/packages/core/dist/daemon.d.ts.map +1 -0
- package/packages/core/dist/daemon.js +116 -0
- package/packages/core/dist/daemon.js.map +1 -0
- package/packages/core/dist/http-client-retry.d.ts +67 -0
- package/packages/core/dist/http-client-retry.d.ts.map +1 -0
- package/packages/core/dist/http-client-retry.js +133 -0
- package/packages/core/dist/http-client-retry.js.map +1 -0
- package/packages/core/dist/http-client-updated.d.ts +147 -0
- package/packages/core/dist/http-client-updated.d.ts.map +1 -0
- package/packages/core/dist/http-client-updated.js +452 -0
- package/packages/core/dist/http-client-updated.js.map +1 -0
- package/packages/core/dist/http-client.d.ts +207 -0
- package/packages/core/dist/http-client.d.ts.map +1 -0
- package/packages/core/dist/http-client.js +704 -0
- package/packages/core/dist/http-client.js.map +1 -0
- package/packages/core/dist/index.d.ts +13 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +23 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/logging/index.d.ts +46 -0
- package/packages/core/dist/logging/index.d.ts.map +1 -0
- package/packages/core/dist/logging/index.js +74 -0
- package/packages/core/dist/logging/index.js.map +1 -0
- package/packages/core/dist/metrics/index.d.ts +339 -0
- package/packages/core/dist/metrics/index.d.ts.map +1 -0
- package/packages/core/dist/metrics/index.js +792 -0
- package/packages/core/dist/metrics/index.js.map +1 -0
- package/packages/core/dist/plugins/index.d.ts +49 -0
- package/packages/core/dist/plugins/index.d.ts.map +1 -0
- package/packages/core/dist/plugins/index.js +82 -0
- package/packages/core/dist/plugins/index.js.map +1 -0
- package/packages/core/dist/secrets/index.d.ts +6 -0
- package/packages/core/dist/secrets/index.d.ts.map +1 -0
- package/packages/core/dist/secrets/index.js +5 -0
- package/packages/core/dist/secrets/index.js.map +1 -0
- package/packages/core/dist/secrets/keyring.d.ts +54 -0
- package/packages/core/dist/secrets/keyring.d.ts.map +1 -0
- package/packages/core/dist/secrets/keyring.js +141 -0
- package/packages/core/dist/secrets/keyring.js.map +1 -0
- package/packages/core/dist/server/batch-executor.d.ts +83 -0
- package/packages/core/dist/server/batch-executor.d.ts.map +1 -0
- package/packages/core/dist/server/batch-executor.js +291 -0
- package/packages/core/dist/server/batch-executor.js.map +1 -0
- package/packages/core/dist/server/circuit-breaker.d.ts +215 -0
- package/packages/core/dist/server/circuit-breaker.d.ts.map +1 -0
- package/packages/core/dist/server/circuit-breaker.js +330 -0
- package/packages/core/dist/server/circuit-breaker.js.map +1 -0
- package/packages/core/dist/server/client-detection.d.ts +40 -0
- package/packages/core/dist/server/client-detection.d.ts.map +1 -0
- package/packages/core/dist/server/client-detection.js +242 -0
- package/packages/core/dist/server/client-detection.js.map +1 -0
- package/packages/core/dist/server/client-profiles.d.ts +102 -0
- package/packages/core/dist/server/client-profiles.d.ts.map +1 -0
- package/packages/core/dist/server/client-profiles.js +254 -0
- package/packages/core/dist/server/client-profiles.js.map +1 -0
- package/packages/core/dist/server/http.d.ts +386 -0
- package/packages/core/dist/server/http.d.ts.map +1 -0
- package/packages/core/dist/server/http.js +4253 -0
- package/packages/core/dist/server/http.js.map +1 -0
- package/packages/core/dist/server/index.d.ts +7 -0
- package/packages/core/dist/server/index.d.ts.map +1 -0
- package/packages/core/dist/server/index.js +6 -0
- package/packages/core/dist/server/index.js.map +1 -0
- package/packages/core/dist/server/manager.d.ts +458 -0
- package/packages/core/dist/server/manager.d.ts.map +1 -0
- package/packages/core/dist/server/manager.js +3255 -0
- package/packages/core/dist/server/manager.js.map +1 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.d.ts +69 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.js +214 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.js.map +1 -0
- package/packages/core/dist/server/managers/ProcessManager.d.ts +128 -0
- package/packages/core/dist/server/managers/ProcessManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/ProcessManager.js +443 -0
- package/packages/core/dist/server/managers/ProcessManager.js.map +1 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.d.ts +152 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.js +426 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.js.map +1 -0
- package/packages/core/dist/server/managers/index.d.ts +9 -0
- package/packages/core/dist/server/managers/index.d.ts.map +1 -0
- package/packages/core/dist/server/managers/index.js +9 -0
- package/packages/core/dist/server/managers/index.js.map +1 -0
- package/packages/core/dist/server/metrics.d.ts +134 -0
- package/packages/core/dist/server/metrics.d.ts.map +1 -0
- package/packages/core/dist/server/metrics.js +273 -0
- package/packages/core/dist/server/metrics.js.map +1 -0
- package/packages/core/dist/server/prompts.d.ts +58 -0
- package/packages/core/dist/server/prompts.d.ts.map +1 -0
- package/packages/core/dist/server/prompts.js +405 -0
- package/packages/core/dist/server/prompts.js.map +1 -0
- package/packages/core/dist/server/protocol-versions.d.ts +49 -0
- package/packages/core/dist/server/protocol-versions.d.ts.map +1 -0
- package/packages/core/dist/server/protocol-versions.js +173 -0
- package/packages/core/dist/server/protocol-versions.js.map +1 -0
- package/packages/core/dist/server/resources.d.ts +64 -0
- package/packages/core/dist/server/resources.d.ts.map +1 -0
- package/packages/core/dist/server/resources.js +243 -0
- package/packages/core/dist/server/resources.js.map +1 -0
- package/packages/core/dist/server/schema-store.d.ts +84 -0
- package/packages/core/dist/server/schema-store.d.ts.map +1 -0
- package/packages/core/dist/server/schema-store.js +234 -0
- package/packages/core/dist/server/schema-store.js.map +1 -0
- package/packages/core/dist/server/schema-validator.d.ts +51 -0
- package/packages/core/dist/server/schema-validator.d.ts.map +1 -0
- package/packages/core/dist/server/schema-validator.js +208 -0
- package/packages/core/dist/server/schema-validator.js.map +1 -0
- package/packages/core/dist/server/token-calculator.d.ts +44 -0
- package/packages/core/dist/server/token-calculator.d.ts.map +1 -0
- package/packages/core/dist/server/token-calculator.js +53 -0
- package/packages/core/dist/server/token-calculator.js.map +1 -0
- package/packages/core/dist/server/types.d.ts +45 -0
- package/packages/core/dist/server/types.d.ts.map +1 -0
- package/packages/core/dist/server/types.js +5 -0
- package/packages/core/dist/server/types.js.map +1 -0
- package/packages/core/dist/utils/file-lock.d.ts +73 -0
- package/packages/core/dist/utils/file-lock.d.ts.map +1 -0
- package/packages/core/dist/utils/file-lock.js +235 -0
- package/packages/core/dist/utils/file-lock.js.map +1 -0
- package/packages/core/package.json +36 -0
- package/packages/dashboard/dist/assets/index-B7hvkCMu.css +1 -0
- package/packages/dashboard/dist/assets/index-yZhLPpzr.js +1 -0
- package/packages/dashboard/dist/index.html +14 -0
- package/packages/dashboard/package.json +24 -0
- package/packages/shared/dist/version.d.ts +2 -0
- package/packages/shared/dist/version.d.ts.map +1 -0
- package/packages/shared/dist/version.js +2 -0
- package/packages/shared/dist/version.js.map +1 -0
- package/packages/shared/package.json +18 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
4
|
+
class ToolList extends Command {
|
|
5
|
+
async run() {
|
|
6
|
+
const { args, flags } = await this.parse(ToolList);
|
|
7
|
+
try {
|
|
8
|
+
// Use search_tools with server name to find all tools from this server
|
|
9
|
+
const response = await fetch(`${getDaemonEndpoint()}/mcp`, {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
headers: {
|
|
12
|
+
'Content-Type': 'application/json',
|
|
13
|
+
'MCP-Protocol-Version': '2025-06-18',
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({
|
|
16
|
+
jsonrpc: '2.0',
|
|
17
|
+
id: 1,
|
|
18
|
+
method: 'tools/call',
|
|
19
|
+
params: {
|
|
20
|
+
name: 'search_tools',
|
|
21
|
+
arguments: {
|
|
22
|
+
query: args.server,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
if (!response.ok) {
|
|
28
|
+
this.error(`Failed to search tools: HTTP ${response.status}`);
|
|
29
|
+
}
|
|
30
|
+
const data = await response.json();
|
|
31
|
+
if (data.error) {
|
|
32
|
+
this.error(`Failed to search tools: ${data.error.message}`);
|
|
33
|
+
}
|
|
34
|
+
if (!data.result || !data.result.content || data.result.content.length === 0) {
|
|
35
|
+
this.log(`No tools found in server '${args.server}'.`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
// Parse the text content (it's JSON wrapped in a string)
|
|
39
|
+
let allTools = [];
|
|
40
|
+
try {
|
|
41
|
+
const textContent = data.result.content[0]?.text;
|
|
42
|
+
if (textContent) {
|
|
43
|
+
const parsed = JSON.parse(textContent);
|
|
44
|
+
allTools = parsed.tools || [];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
this.error(`Failed to parse search_tools response: ${e instanceof Error ? e.message : String(e)}`);
|
|
49
|
+
}
|
|
50
|
+
// Filter to only tools from the specified server
|
|
51
|
+
const tools = allTools.filter(tool => tool.server === args.server);
|
|
52
|
+
if (tools.length === 0) {
|
|
53
|
+
this.log(`No tools found in server '${args.server}'.`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (flags.json) {
|
|
57
|
+
this.log(JSON.stringify(tools, null, 2));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const table = new Table({
|
|
61
|
+
head: ['Name', 'Description'],
|
|
62
|
+
style: { head: [] },
|
|
63
|
+
wordWrap: true,
|
|
64
|
+
});
|
|
65
|
+
for (const tool of tools) {
|
|
66
|
+
table.push([tool.name, tool.description || '-']);
|
|
67
|
+
}
|
|
68
|
+
this.log(table.toString());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.error(`Failed to discover tools: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
ToolList.description = 'List all tools from a server (uses search_tools with server name filter)';
|
|
77
|
+
ToolList.args = {
|
|
78
|
+
server: Args.string({ description: 'Server name', required: true }),
|
|
79
|
+
};
|
|
80
|
+
ToolList.flags = {
|
|
81
|
+
'detail': Flags.boolean({
|
|
82
|
+
description: 'Show full tool schemas',
|
|
83
|
+
default: false,
|
|
84
|
+
}),
|
|
85
|
+
json: Flags.boolean({
|
|
86
|
+
description: 'Output as JSON',
|
|
87
|
+
default: false,
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
export default ToolList;
|
|
91
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/tool/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ToolSearch extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
query: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/tool/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAInD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAoD;IAEtE,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA2F3B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
4
|
+
class ToolSearch extends Command {
|
|
5
|
+
async run() {
|
|
6
|
+
const { args, flags } = await this.parse(ToolSearch);
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${getDaemonEndpoint()}/mcp`, {
|
|
9
|
+
method: 'POST',
|
|
10
|
+
headers: { 'Content-Type': 'application/json' },
|
|
11
|
+
body: JSON.stringify({
|
|
12
|
+
jsonrpc: '2.0',
|
|
13
|
+
id: 1,
|
|
14
|
+
method: 'tools/call',
|
|
15
|
+
params: {
|
|
16
|
+
name: 'search_tools',
|
|
17
|
+
arguments: {
|
|
18
|
+
query: args.query,
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
this.error(`Failed to search tools: HTTP ${response.status}`);
|
|
25
|
+
}
|
|
26
|
+
const data = await response.json();
|
|
27
|
+
if (data.error) {
|
|
28
|
+
this.error(`Failed to search tools: ${data.error.message}`);
|
|
29
|
+
}
|
|
30
|
+
if (!data.result || !data.result.content || data.result.content.length === 0) {
|
|
31
|
+
this.log(`No tools found matching "${args.query}".`);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Parse the text content (it's JSON wrapped in a string)
|
|
35
|
+
let tools = [];
|
|
36
|
+
try {
|
|
37
|
+
const textContent = data.result.content[0]?.text;
|
|
38
|
+
if (textContent) {
|
|
39
|
+
const parsed = JSON.parse(textContent);
|
|
40
|
+
// API returns "tools" array
|
|
41
|
+
tools = (parsed.tools || []).map((r) => ({
|
|
42
|
+
server: r.server,
|
|
43
|
+
name: r.name,
|
|
44
|
+
description: r.description,
|
|
45
|
+
relevance: r.relevance,
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
this.error(`Failed to parse search_tools response: ${e instanceof Error ? e.message : String(e)}`);
|
|
51
|
+
}
|
|
52
|
+
if (tools.length === 0) {
|
|
53
|
+
this.log(`No tools found matching "${args.query}".`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (flags.json) {
|
|
57
|
+
this.log(JSON.stringify(tools, null, 2));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const table = new Table({
|
|
61
|
+
head: ['Server', 'Tool Name', 'Description'],
|
|
62
|
+
style: { head: [] },
|
|
63
|
+
wordWrap: true,
|
|
64
|
+
});
|
|
65
|
+
for (const tool of tools) {
|
|
66
|
+
table.push([tool.server, tool.name, tool.description || '-']);
|
|
67
|
+
}
|
|
68
|
+
this.log(table.toString());
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.error(`Failed to search tools: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
ToolSearch.description = 'Search for tools by keyword across all servers';
|
|
77
|
+
ToolSearch.args = {
|
|
78
|
+
query: Args.string({ description: 'Search query (fuzzy matching)', required: true }),
|
|
79
|
+
};
|
|
80
|
+
ToolSearch.flags = {
|
|
81
|
+
json: Flags.boolean({
|
|
82
|
+
description: 'Output as JSON',
|
|
83
|
+
default: false,
|
|
84
|
+
}),
|
|
85
|
+
};
|
|
86
|
+
export default ToolSearch;
|
|
87
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/tool/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,OAAO,QAA4B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Version - read from root package.json
|
|
2
|
+
// Single source of truth: package.json (managed by changesets)
|
|
3
|
+
import { readFileSync } from 'fs';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, '../../package.json'), 'utf8'));
|
|
8
|
+
export const version = `v${packageJson.version}`;
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,+DAA+D;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CAC5D,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the MetaLink daemon is running and responsive
|
|
3
|
+
* @param port Port number to check (default: 6655)
|
|
4
|
+
* @returns true if daemon is running and responsive
|
|
5
|
+
*/
|
|
6
|
+
export declare function isDaemonRunning(port?: number): Promise<boolean>;
|
|
7
|
+
/**
|
|
8
|
+
* Ensure the MetaLink daemon is running, starting it if necessary
|
|
9
|
+
* @param port Port number for the daemon (default: 6655)
|
|
10
|
+
* @returns true if daemon is running, false if failed to start
|
|
11
|
+
*/
|
|
12
|
+
export declare function ensureDaemonRunning(port?: number): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Get the configured port from environment or default
|
|
15
|
+
* @returns Port number for the daemon
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConfiguredPortForStdio(): number;
|
|
18
|
+
//# sourceMappingURL=daemon-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-checker.d.ts","sourceRoot":"","sources":["../../src/utils/daemon-checker.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAS3E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,GAAE,MAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAiC/E;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CASlD"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { execFile } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
/**
|
|
5
|
+
* Check if the MetaLink daemon is running and responsive
|
|
6
|
+
* @param port Port number to check (default: 6655)
|
|
7
|
+
* @returns true if daemon is running and responsive
|
|
8
|
+
*/
|
|
9
|
+
export async function isDaemonRunning(port = 6655) {
|
|
10
|
+
try {
|
|
11
|
+
const response = await fetch(`http://127.0.0.1:${port}/health`, {
|
|
12
|
+
signal: AbortSignal.timeout(2000), // 2-second timeout
|
|
13
|
+
});
|
|
14
|
+
return response.ok;
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Ensure the MetaLink daemon is running, starting it if necessary
|
|
22
|
+
* @param port Port number for the daemon (default: 6655)
|
|
23
|
+
* @returns true if daemon is running, false if failed to start
|
|
24
|
+
*/
|
|
25
|
+
export async function ensureDaemonRunning(port = 6655) {
|
|
26
|
+
// Check if already running
|
|
27
|
+
if (await isDaemonRunning(port)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
// Daemon not running, attempt to start it
|
|
31
|
+
console.error('[daemon-checker] Daemon not responding on port', port);
|
|
32
|
+
console.error('[daemon-checker] Attempting to start daemon...');
|
|
33
|
+
try {
|
|
34
|
+
// Start daemon via CLI command using execFile (safer than exec)
|
|
35
|
+
// Find metalink command in PATH
|
|
36
|
+
await execFileAsync('metalink', ['daemon', 'start'], {
|
|
37
|
+
timeout: 5000, // 5-second timeout for start command
|
|
38
|
+
});
|
|
39
|
+
// Wait for daemon to be ready (up to 10 seconds)
|
|
40
|
+
for (let i = 0; i < 20; i++) {
|
|
41
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
42
|
+
if (await isDaemonRunning(port)) {
|
|
43
|
+
console.error('[daemon-checker] Daemon started successfully');
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
console.error('[daemon-checker] Daemon start timeout after 10 seconds');
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error('[daemon-checker] Failed to start daemon:', error instanceof Error ? error.message : String(error));
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get the configured port from environment or default
|
|
57
|
+
* @returns Port number for the daemon
|
|
58
|
+
*/
|
|
59
|
+
export function getConfiguredPortForStdio() {
|
|
60
|
+
const envPort = process.env.METALINK_PORT;
|
|
61
|
+
if (envPort) {
|
|
62
|
+
const port = parseInt(envPort, 10);
|
|
63
|
+
if (!isNaN(port) && port > 0 && port < 65536) {
|
|
64
|
+
return port;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return 6655; // Default production port
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=daemon-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-checker.js","sourceRoot":"","sources":["../../src/utils/daemon-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,IAAI;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,SAAS,EAAE;YAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB;SACvD,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe,IAAI;IAC3D,2BAA2B;IAC3B,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0CAA0C;IAC1C,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,IAAI,CAAC,CAAC;IACtE,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,gEAAgE;QAChE,gCAAgC;QAChC,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;YACnD,OAAO,EAAE,IAAI,EAAE,qCAAqC;SACrD,CAAC,CAAC;QAEH,iDAAiD;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAEvD,IAAI,MAAM,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAClH,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,0BAA0B;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-endpoint.d.ts","sourceRoot":"","sources":["../../src/utils/daemon-endpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,IAAI,MAAM,CAI1C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Daemon Endpoint Helper
|
|
3
|
+
* Resolves the daemon HTTP endpoint from environment variables
|
|
4
|
+
*/
|
|
5
|
+
export function getDaemonEndpoint() {
|
|
6
|
+
// Priority: METALINK_PORT env var > default 6655 (production)
|
|
7
|
+
const port = process.env.METALINK_PORT || '6655';
|
|
8
|
+
return `http://localhost:${port}`;
|
|
9
|
+
}
|
|
10
|
+
export function getDaemonUrl(path) {
|
|
11
|
+
return `${getDaemonEndpoint()}${path}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=daemon-endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-endpoint.js","sourceRoot":"","sources":["../../src/utils/daemon-endpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,iBAAiB;IAC/B,8DAA8D;IAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC;IACjD,OAAO,oBAAoB,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,GAAG,iBAAiB,EAAE,GAAG,IAAI,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the configured daemon port from environment or config file.
|
|
3
|
+
* Fails fast with clear error message if no configuration found.
|
|
4
|
+
*
|
|
5
|
+
* Priority order:
|
|
6
|
+
* 1. METALINK_PORT environment variable (explicit override)
|
|
7
|
+
* 2. config.daemon.port from metalink.config.yaml
|
|
8
|
+
* 3. NO FALLBACK - throws error
|
|
9
|
+
*
|
|
10
|
+
* @throws {Error} If no port configured or config cannot be loaded
|
|
11
|
+
* @returns {number} The configured port number
|
|
12
|
+
*/
|
|
13
|
+
export declare function getConfiguredPort(): number;
|
|
14
|
+
/**
|
|
15
|
+
* LaunchAgent service name
|
|
16
|
+
*/
|
|
17
|
+
export declare const LAUNCHD_SERVICE_NAME = "metalink";
|
|
18
|
+
/**
|
|
19
|
+
* Check if daemon is managed by LaunchAgent
|
|
20
|
+
* @returns {boolean} True if LaunchAgent is loaded
|
|
21
|
+
*/
|
|
22
|
+
export declare function isLaunchAgentLoaded(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Get LaunchAgent plist path
|
|
25
|
+
* @returns {string} Full path to plist file
|
|
26
|
+
*/
|
|
27
|
+
export declare function getLaunchAgentPlistPath(): string;
|
|
28
|
+
/**
|
|
29
|
+
* Load (start) the LaunchAgent
|
|
30
|
+
* @returns {boolean} True if successful
|
|
31
|
+
*/
|
|
32
|
+
export declare function launchctlLoad(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Unload (stop) the LaunchAgent
|
|
35
|
+
* @returns {boolean} True if successful
|
|
36
|
+
*/
|
|
37
|
+
export declare function launchctlUnload(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Get launchd-managed daemon PID
|
|
40
|
+
* @returns {number | null} PID if running, null otherwise
|
|
41
|
+
*/
|
|
42
|
+
export declare function getLaunchdPid(): number | null;
|
|
43
|
+
//# sourceMappingURL=get-configured-port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-configured-port.d.ts","sourceRoot":"","sources":["../../src/utils/get-configured-port.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAkD1C;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAWvC;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAWzC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAiB7C"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { ConfigLoader } from '@metalink/core';
|
|
2
|
+
import { execSync } from 'child_process';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
/**
|
|
6
|
+
* Get the configured daemon port from environment or config file.
|
|
7
|
+
* Fails fast with clear error message if no configuration found.
|
|
8
|
+
*
|
|
9
|
+
* Priority order:
|
|
10
|
+
* 1. METALINK_PORT environment variable (explicit override)
|
|
11
|
+
* 2. config.daemon.port from metalink.config.yaml
|
|
12
|
+
* 3. NO FALLBACK - throws error
|
|
13
|
+
*
|
|
14
|
+
* @throws {Error} If no port configured or config cannot be loaded
|
|
15
|
+
* @returns {number} The configured port number
|
|
16
|
+
*/
|
|
17
|
+
export function getConfiguredPort() {
|
|
18
|
+
// 1. Check env var first (explicit override)
|
|
19
|
+
if (process.env.METALINK_PORT) {
|
|
20
|
+
const envPort = parseInt(process.env.METALINK_PORT, 10);
|
|
21
|
+
if (isNaN(envPort) || envPort <= 0 || envPort > 65535) {
|
|
22
|
+
throw new Error(`Invalid METALINK_PORT env var: ${process.env.METALINK_PORT}\n\n` +
|
|
23
|
+
'Port must be a positive integer between 1-65535.');
|
|
24
|
+
}
|
|
25
|
+
return envPort;
|
|
26
|
+
}
|
|
27
|
+
// 2. Read from config file
|
|
28
|
+
try {
|
|
29
|
+
const loader = new ConfigLoader();
|
|
30
|
+
const config = loader.loadSync();
|
|
31
|
+
if (config.daemon?.port) {
|
|
32
|
+
const port = config.daemon.port;
|
|
33
|
+
if (typeof port !== 'number' || port <= 0 || port > 65535) {
|
|
34
|
+
throw new Error(`Invalid port in config: ${port}\n\n` +
|
|
35
|
+
'Port must be a positive integer between 1-65535.');
|
|
36
|
+
}
|
|
37
|
+
return port;
|
|
38
|
+
}
|
|
39
|
+
// Config loaded but no port configured - fail fast
|
|
40
|
+
throw new Error('No port configured in metalink.config.yaml.\n\n' +
|
|
41
|
+
'Set daemon.port in config or use METALINK_PORT env var:\n' +
|
|
42
|
+
' export METALINK_PORT=6655\n\n' +
|
|
43
|
+
'Example config:\n' +
|
|
44
|
+
' daemon:\n' +
|
|
45
|
+
' port: 6655');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
// Config load failed - fail fast
|
|
49
|
+
if (error instanceof Error && error.message.includes('No port configured')) {
|
|
50
|
+
throw error; // Re-throw our specific error
|
|
51
|
+
}
|
|
52
|
+
throw new Error(`Cannot load metalink.config.yaml: ${error instanceof Error ? error.message : String(error)}\n\n` +
|
|
53
|
+
'Fix the config file or set METALINK_PORT env var:\n' +
|
|
54
|
+
' export METALINK_PORT=6655');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* LaunchAgent service name
|
|
59
|
+
*/
|
|
60
|
+
export const LAUNCHD_SERVICE_NAME = 'metalink';
|
|
61
|
+
/**
|
|
62
|
+
* Check if daemon is managed by LaunchAgent
|
|
63
|
+
* @returns {boolean} True if LaunchAgent is loaded
|
|
64
|
+
*/
|
|
65
|
+
export function isLaunchAgentLoaded() {
|
|
66
|
+
try {
|
|
67
|
+
const result = execSync(`launchctl list | grep "^-\\|^[0-9]" | grep "${LAUNCHD_SERVICE_NAME}$"`, {
|
|
68
|
+
encoding: 'utf-8',
|
|
69
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
70
|
+
});
|
|
71
|
+
return !!(result && result.trim());
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false; // grep returns non-zero if not found
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get LaunchAgent plist path
|
|
79
|
+
* @returns {string} Full path to plist file
|
|
80
|
+
*/
|
|
81
|
+
export function getLaunchAgentPlistPath() {
|
|
82
|
+
return path.join(os.homedir(), 'Library/LaunchAgents/metalink.plist');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load (start) the LaunchAgent
|
|
86
|
+
* @returns {boolean} True if successful
|
|
87
|
+
*/
|
|
88
|
+
export function launchctlLoad() {
|
|
89
|
+
try {
|
|
90
|
+
const plistPath = getLaunchAgentPlistPath();
|
|
91
|
+
execSync(`launchctl load "${plistPath}"`, {
|
|
92
|
+
encoding: 'utf-8',
|
|
93
|
+
stdio: 'pipe'
|
|
94
|
+
});
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Unload (stop) the LaunchAgent
|
|
103
|
+
* @returns {boolean} True if successful
|
|
104
|
+
*/
|
|
105
|
+
export function launchctlUnload() {
|
|
106
|
+
try {
|
|
107
|
+
const plistPath = getLaunchAgentPlistPath();
|
|
108
|
+
execSync(`launchctl unload "${plistPath}"`, {
|
|
109
|
+
encoding: 'utf-8',
|
|
110
|
+
stdio: 'pipe'
|
|
111
|
+
});
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get launchd-managed daemon PID
|
|
120
|
+
* @returns {number | null} PID if running, null otherwise
|
|
121
|
+
*/
|
|
122
|
+
export function getLaunchdPid() {
|
|
123
|
+
try {
|
|
124
|
+
const result = execSync(`launchctl list | grep "${LAUNCHD_SERVICE_NAME}$"`, {
|
|
125
|
+
encoding: 'utf-8',
|
|
126
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
127
|
+
});
|
|
128
|
+
if (result && result.trim()) {
|
|
129
|
+
// Format: PID\tStatus\tLabel
|
|
130
|
+
const pid = result.trim().split(/\s+/)[0];
|
|
131
|
+
if (pid && pid !== '-' && !isNaN(parseInt(pid, 10))) {
|
|
132
|
+
return parseInt(pid, 10);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=get-configured-port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-configured-port.js","sourceRoot":"","sources":["../../src/utils/get-configured-port.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StdioBridge handles bidirectional communication between stdin/stdout and HTTP daemon
|
|
3
|
+
* Implements MCP protocol over stdio transport
|
|
4
|
+
*/
|
|
5
|
+
export declare class StdioBridge {
|
|
6
|
+
private currentSessionId;
|
|
7
|
+
private sessionInitialized;
|
|
8
|
+
private daemonUrl;
|
|
9
|
+
private debug;
|
|
10
|
+
constructor(port?: number);
|
|
11
|
+
/**
|
|
12
|
+
* Start the stdio bridge, reading from stdin and writing to stdout
|
|
13
|
+
*/
|
|
14
|
+
start(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* Process a single line of input from stdin
|
|
17
|
+
* @param line Line from stdin (should be JSON-RPC message)
|
|
18
|
+
*/
|
|
19
|
+
private processLine;
|
|
20
|
+
/**
|
|
21
|
+
* Forward a JSON-RPC request to the HTTP daemon
|
|
22
|
+
* @param request JSON-RPC request object
|
|
23
|
+
*/
|
|
24
|
+
private forwardToHttpDaemon;
|
|
25
|
+
/**
|
|
26
|
+
* Write a JSON-RPC response to stdout
|
|
27
|
+
* @param data JSON-RPC response object
|
|
28
|
+
*/
|
|
29
|
+
private writeToStdout;
|
|
30
|
+
/**
|
|
31
|
+
* Write a JSON-RPC error to stdout
|
|
32
|
+
* @param id Request ID (null for parse errors)
|
|
33
|
+
* @param code Error code
|
|
34
|
+
* @param message Error message
|
|
35
|
+
*/
|
|
36
|
+
private writeError;
|
|
37
|
+
/**
|
|
38
|
+
* Log diagnostic message to stderr (never stdout)
|
|
39
|
+
* @param args Arguments to log
|
|
40
|
+
*/
|
|
41
|
+
private log;
|
|
42
|
+
/**
|
|
43
|
+
* Log error message to stderr (always logged)
|
|
44
|
+
* @param args Arguments to log
|
|
45
|
+
*/
|
|
46
|
+
private logError;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=stdio-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-bridge.d.ts","sourceRoot":"","sources":["../../src/utils/stdio-bridge.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAU;gBAEX,IAAI,GAAE,MAAa;IAK/B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB5B;;;OAGG;YACW,WAAW;IA0CzB;;;OAGG;YACW,mBAAmB;IAyEjC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAYlB;;;OAGG;IACH,OAAO,CAAC,GAAG;IAMX;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
|