@hasna/hooks 0.2.13 → 0.2.14
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 +1 -1
- package/bin/index.js +66 -2
- package/package.json +1 -1
package/LICENSE
CHANGED
package/bin/index.js
CHANGED
|
@@ -14633,6 +14633,65 @@ var init_server = __esm(() => {
|
|
|
14633
14633
|
_hooksAgents = new Map;
|
|
14634
14634
|
});
|
|
14635
14635
|
|
|
14636
|
+
// src/mcp/http.ts
|
|
14637
|
+
var exports_http = {};
|
|
14638
|
+
__export(exports_http, {
|
|
14639
|
+
startMcpHttpServer: () => startMcpHttpServer,
|
|
14640
|
+
resolveMcpHttpPort: () => resolveMcpHttpPort,
|
|
14641
|
+
isHttpMode: () => isHttpMode,
|
|
14642
|
+
healthPayload: () => healthPayload,
|
|
14643
|
+
handleMcpRequest: () => handleMcpRequest,
|
|
14644
|
+
MCP_SERVICE_NAME: () => MCP_SERVICE_NAME,
|
|
14645
|
+
MCP_HTTP_HOST: () => MCP_HTTP_HOST,
|
|
14646
|
+
DEFAULT_MCP_HTTP_PORT: () => DEFAULT_MCP_HTTP_PORT
|
|
14647
|
+
});
|
|
14648
|
+
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
14649
|
+
function isHttpMode(args) {
|
|
14650
|
+
return args.includes("--http") || process.env.MCP_HTTP === "1";
|
|
14651
|
+
}
|
|
14652
|
+
function resolveMcpHttpPort(args) {
|
|
14653
|
+
const portIdx = args.indexOf("--port");
|
|
14654
|
+
if (portIdx >= 0 && args[portIdx + 1]) {
|
|
14655
|
+
return Number(args[portIdx + 1]);
|
|
14656
|
+
}
|
|
14657
|
+
const envPort = process.env.MCP_HTTP_PORT;
|
|
14658
|
+
if (envPort)
|
|
14659
|
+
return Number(envPort);
|
|
14660
|
+
return DEFAULT_MCP_HTTP_PORT;
|
|
14661
|
+
}
|
|
14662
|
+
function healthPayload(name = MCP_SERVICE_NAME) {
|
|
14663
|
+
return { status: "ok", name };
|
|
14664
|
+
}
|
|
14665
|
+
async function handleMcpRequest(req, buildServer) {
|
|
14666
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
14667
|
+
sessionIdGenerator: undefined
|
|
14668
|
+
});
|
|
14669
|
+
const server = buildServer();
|
|
14670
|
+
await server.connect(transport);
|
|
14671
|
+
return transport.handleRequest(req);
|
|
14672
|
+
}
|
|
14673
|
+
function startMcpHttpServer(options) {
|
|
14674
|
+
const { name, port, buildServer } = options;
|
|
14675
|
+
const server = Bun.serve({
|
|
14676
|
+
hostname: MCP_HTTP_HOST,
|
|
14677
|
+
port,
|
|
14678
|
+
async fetch(req) {
|
|
14679
|
+
const url = new URL(req.url);
|
|
14680
|
+
if (url.pathname === "/health" && req.method === "GET") {
|
|
14681
|
+
return Response.json(healthPayload(name));
|
|
14682
|
+
}
|
|
14683
|
+
if (url.pathname === "/mcp") {
|
|
14684
|
+
return handleMcpRequest(req, buildServer);
|
|
14685
|
+
}
|
|
14686
|
+
return new Response("Not Found", { status: 404 });
|
|
14687
|
+
}
|
|
14688
|
+
});
|
|
14689
|
+
console.error(`${name}-mcp HTTP listening on http://${MCP_HTTP_HOST}:${port}/mcp`);
|
|
14690
|
+
return server;
|
|
14691
|
+
}
|
|
14692
|
+
var DEFAULT_MCP_HTTP_PORT = 8847, MCP_HTTP_HOST = "127.0.0.1", MCP_SERVICE_NAME = "hooks";
|
|
14693
|
+
var init_http = () => {};
|
|
14694
|
+
|
|
14636
14695
|
// src/cli/index.tsx
|
|
14637
14696
|
import { render } from "ink";
|
|
14638
14697
|
|
|
@@ -16690,8 +16749,13 @@ logCmd.command("clear").description("Delete hook event logs").option("--hook <na
|
|
|
16690
16749
|
}
|
|
16691
16750
|
console.log(chalk2.green(`\u2713 Cleared ${count} event(s).`));
|
|
16692
16751
|
});
|
|
16693
|
-
program2.command("mcp").option("-s, --stdio", "Use stdio transport (for agent MCP integration)", false).option("-p, --port <port>", "Port for SSE transport", "39427").description("Start MCP server for AI agent integration").action(async (options) => {
|
|
16694
|
-
if (options.
|
|
16752
|
+
program2.command("mcp").option("-s, --stdio", "Use stdio transport (for agent MCP integration)", false).option("--http", "Use Streamable HTTP transport (shared server for many agents)", false).option("-p, --port <port>", "Port for SSE/HTTP transport", "39427").description("Start MCP server for AI agent integration").action(async (options) => {
|
|
16753
|
+
if (options.http) {
|
|
16754
|
+
const { createHooksServer: createHooksServer2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
16755
|
+
const { resolveMcpHttpPort: resolveMcpHttpPort2, startMcpHttpServer: startMcpHttpServer2 } = await Promise.resolve().then(() => (init_http(), exports_http));
|
|
16756
|
+
const port = options.port === "39427" ? resolveMcpHttpPort2([]) : parseInt(options.port);
|
|
16757
|
+
startMcpHttpServer2({ name: "hooks", port, buildServer: createHooksServer2 });
|
|
16758
|
+
} else if (options.stdio) {
|
|
16695
16759
|
const { startStdioServer: startStdioServer2 } = await Promise.resolve().then(() => (init_server(), exports_server));
|
|
16696
16760
|
await startStdioServer2();
|
|
16697
16761
|
} else {
|
package/package.json
CHANGED