arcagent-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -0
- package/dist/auth/apiKeyAuth.d.ts +16 -0
- package/dist/auth/apiKeyAuth.d.ts.map +1 -0
- package/dist/auth/apiKeyAuth.js +65 -0
- package/dist/auth/apiKeyAuth.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +63 -0
- package/dist/config.js.map +1 -0
- package/dist/convex/client.d.ts +7 -0
- package/dist/convex/client.d.ts.map +1 -0
- package/dist/convex/client.js +60 -0
- package/dist/convex/client.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +370 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/clerk.d.ts +12 -0
- package/dist/lib/clerk.d.ts.map +1 -0
- package/dist/lib/clerk.js +77 -0
- package/dist/lib/clerk.js.map +1 -0
- package/dist/lib/context.d.ts +30 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +73 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/crypto.d.ts +14 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +25 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/httpError.d.ts +10 -0
- package/dist/lib/httpError.d.ts.map +1 -0
- package/dist/lib/httpError.js +13 -0
- package/dist/lib/httpError.js.map +1 -0
- package/dist/lib/lruCache.d.ts +13 -0
- package/dist/lib/lruCache.d.ts.map +1 -0
- package/dist/lib/lruCache.js +52 -0
- package/dist/lib/lruCache.js.map +1 -0
- package/dist/lib/rateLimit.d.ts +14 -0
- package/dist/lib/rateLimit.d.ts.map +1 -0
- package/dist/lib/rateLimit.js +108 -0
- package/dist/lib/rateLimit.js.map +1 -0
- package/dist/lib/sessionStore.d.ts +15 -0
- package/dist/lib/sessionStore.d.ts.map +1 -0
- package/dist/lib/sessionStore.js +86 -0
- package/dist/lib/sessionStore.js.map +1 -0
- package/dist/lib/telemetry.d.ts +21 -0
- package/dist/lib/telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry.js +43 -0
- package/dist/lib/telemetry.js.map +1 -0
- package/dist/lib/toolHelper.d.ts +13 -0
- package/dist/lib/toolHelper.d.ts.map +1 -0
- package/dist/lib/toolHelper.js +20 -0
- package/dist/lib/toolHelper.js.map +1 -0
- package/dist/lib/toolProfiles.d.ts +62 -0
- package/dist/lib/toolProfiles.d.ts.map +1 -0
- package/dist/lib/toolProfiles.js +110 -0
- package/dist/lib/toolProfiles.js.map +1 -0
- package/dist/lib/types.d.ts +128 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +101 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/cancelBounty.d.ts +3 -0
- package/dist/tools/cancelBounty.d.ts.map +1 -0
- package/dist/tools/cancelBounty.js +59 -0
- package/dist/tools/cancelBounty.js.map +1 -0
- package/dist/tools/checkNotifications.d.ts +3 -0
- package/dist/tools/checkNotifications.d.ts.map +1 -0
- package/dist/tools/checkNotifications.js +69 -0
- package/dist/tools/checkNotifications.js.map +1 -0
- package/dist/tools/claimBounty.d.ts +3 -0
- package/dist/tools/claimBounty.d.ts.map +1 -0
- package/dist/tools/claimBounty.js +59 -0
- package/dist/tools/claimBounty.js.map +1 -0
- package/dist/tools/createBounty.d.ts +3 -0
- package/dist/tools/createBounty.d.ts.map +1 -0
- package/dist/tools/createBounty.js +90 -0
- package/dist/tools/createBounty.js.map +1 -0
- package/dist/tools/extendClaim.d.ts +3 -0
- package/dist/tools/extendClaim.d.ts.map +1 -0
- package/dist/tools/extendClaim.js +68 -0
- package/dist/tools/extendClaim.js.map +1 -0
- package/dist/tools/fundBountyEscrow.d.ts +3 -0
- package/dist/tools/fundBountyEscrow.d.ts.map +1 -0
- package/dist/tools/fundBountyEscrow.js +49 -0
- package/dist/tools/fundBountyEscrow.js.map +1 -0
- package/dist/tools/getAgentProfile.d.ts +3 -0
- package/dist/tools/getAgentProfile.d.ts.map +1 -0
- package/dist/tools/getAgentProfile.js +45 -0
- package/dist/tools/getAgentProfile.js.map +1 -0
- package/dist/tools/getBountyDetails.d.ts +3 -0
- package/dist/tools/getBountyDetails.d.ts.map +1 -0
- package/dist/tools/getBountyDetails.js +79 -0
- package/dist/tools/getBountyDetails.js.map +1 -0
- package/dist/tools/getBountyGenerationStatus.d.ts +3 -0
- package/dist/tools/getBountyGenerationStatus.d.ts.map +1 -0
- package/dist/tools/getBountyGenerationStatus.js +71 -0
- package/dist/tools/getBountyGenerationStatus.js.map +1 -0
- package/dist/tools/getClaimStatus.d.ts +3 -0
- package/dist/tools/getClaimStatus.d.ts.map +1 -0
- package/dist/tools/getClaimStatus.js +78 -0
- package/dist/tools/getClaimStatus.js.map +1 -0
- package/dist/tools/getLeaderboard.d.ts +3 -0
- package/dist/tools/getLeaderboard.d.ts.map +1 -0
- package/dist/tools/getLeaderboard.js +40 -0
- package/dist/tools/getLeaderboard.js.map +1 -0
- package/dist/tools/getMyAgentStats.d.ts +3 -0
- package/dist/tools/getMyAgentStats.d.ts.map +1 -0
- package/dist/tools/getMyAgentStats.js +65 -0
- package/dist/tools/getMyAgentStats.js.map +1 -0
- package/dist/tools/getRepoMap.d.ts +3 -0
- package/dist/tools/getRepoMap.d.ts.map +1 -0
- package/dist/tools/getRepoMap.js +139 -0
- package/dist/tools/getRepoMap.js.map +1 -0
- package/dist/tools/getSubmissionFeedback.d.ts +3 -0
- package/dist/tools/getSubmissionFeedback.d.ts.map +1 -0
- package/dist/tools/getSubmissionFeedback.js +81 -0
- package/dist/tools/getSubmissionFeedback.js.map +1 -0
- package/dist/tools/getTestSuites.d.ts +3 -0
- package/dist/tools/getTestSuites.d.ts.map +1 -0
- package/dist/tools/getTestSuites.js +64 -0
- package/dist/tools/getTestSuites.js.map +1 -0
- package/dist/tools/getVerificationStatus.d.ts +3 -0
- package/dist/tools/getVerificationStatus.d.ts.map +1 -0
- package/dist/tools/getVerificationStatus.js +115 -0
- package/dist/tools/getVerificationStatus.js.map +1 -0
- package/dist/tools/importWorkItem.d.ts +3 -0
- package/dist/tools/importWorkItem.d.ts.map +1 -0
- package/dist/tools/importWorkItem.js +156 -0
- package/dist/tools/importWorkItem.js.map +1 -0
- package/dist/tools/listBounties.d.ts +3 -0
- package/dist/tools/listBounties.d.ts.map +1 -0
- package/dist/tools/listBounties.js +49 -0
- package/dist/tools/listBounties.js.map +1 -0
- package/dist/tools/listMySubmissions.d.ts +3 -0
- package/dist/tools/listMySubmissions.d.ts.map +1 -0
- package/dist/tools/listMySubmissions.js +46 -0
- package/dist/tools/listMySubmissions.js.map +1 -0
- package/dist/tools/rateAgent.d.ts +3 -0
- package/dist/tools/rateAgent.d.ts.map +1 -0
- package/dist/tools/rateAgent.js +94 -0
- package/dist/tools/rateAgent.js.map +1 -0
- package/dist/tools/registerAccount.d.ts +3 -0
- package/dist/tools/registerAccount.d.ts.map +1 -0
- package/dist/tools/registerAccount.js +103 -0
- package/dist/tools/registerAccount.js.map +1 -0
- package/dist/tools/releaseClaim.d.ts +3 -0
- package/dist/tools/releaseClaim.d.ts.map +1 -0
- package/dist/tools/releaseClaim.js +43 -0
- package/dist/tools/releaseClaim.js.map +1 -0
- package/dist/tools/setupPaymentMethod.d.ts +3 -0
- package/dist/tools/setupPaymentMethod.d.ts.map +1 -0
- package/dist/tools/setupPaymentMethod.js +53 -0
- package/dist/tools/setupPaymentMethod.js.map +1 -0
- package/dist/tools/setupPayoutAccount.d.ts +3 -0
- package/dist/tools/setupPayoutAccount.d.ts.map +1 -0
- package/dist/tools/setupPayoutAccount.js +44 -0
- package/dist/tools/setupPayoutAccount.js.map +1 -0
- package/dist/tools/submitSolution.d.ts +3 -0
- package/dist/tools/submitSolution.d.ts.map +1 -0
- package/dist/tools/submitSolution.js +98 -0
- package/dist/tools/submitSolution.js.map +1 -0
- package/dist/tools/workspaceApplyPatch.d.ts +41 -0
- package/dist/tools/workspaceApplyPatch.d.ts.map +1 -0
- package/dist/tools/workspaceApplyPatch.js +328 -0
- package/dist/tools/workspaceApplyPatch.js.map +1 -0
- package/dist/tools/workspaceBatchRead.d.ts +3 -0
- package/dist/tools/workspaceBatchRead.d.ts.map +1 -0
- package/dist/tools/workspaceBatchRead.js +95 -0
- package/dist/tools/workspaceBatchRead.js.map +1 -0
- package/dist/tools/workspaceBatchWrite.d.ts +3 -0
- package/dist/tools/workspaceBatchWrite.d.ts.map +1 -0
- package/dist/tools/workspaceBatchWrite.js +94 -0
- package/dist/tools/workspaceBatchWrite.js.map +1 -0
- package/dist/tools/workspaceCrashReports.d.ts +3 -0
- package/dist/tools/workspaceCrashReports.d.ts.map +1 -0
- package/dist/tools/workspaceCrashReports.js +76 -0
- package/dist/tools/workspaceCrashReports.js.map +1 -0
- package/dist/tools/workspaceEditFile.d.ts +3 -0
- package/dist/tools/workspaceEditFile.d.ts.map +1 -0
- package/dist/tools/workspaceEditFile.js +93 -0
- package/dist/tools/workspaceEditFile.js.map +1 -0
- package/dist/tools/workspaceExec.d.ts +3 -0
- package/dist/tools/workspaceExec.d.ts.map +1 -0
- package/dist/tools/workspaceExec.js +65 -0
- package/dist/tools/workspaceExec.js.map +1 -0
- package/dist/tools/workspaceExecStream.d.ts +3 -0
- package/dist/tools/workspaceExecStream.d.ts.map +1 -0
- package/dist/tools/workspaceExecStream.js +110 -0
- package/dist/tools/workspaceExecStream.js.map +1 -0
- package/dist/tools/workspaceGlob.d.ts +3 -0
- package/dist/tools/workspaceGlob.d.ts.map +1 -0
- package/dist/tools/workspaceGlob.js +78 -0
- package/dist/tools/workspaceGlob.js.map +1 -0
- package/dist/tools/workspaceGrep.d.ts +3 -0
- package/dist/tools/workspaceGrep.d.ts.map +1 -0
- package/dist/tools/workspaceGrep.js +184 -0
- package/dist/tools/workspaceGrep.js.map +1 -0
- package/dist/tools/workspaceListFiles.d.ts +3 -0
- package/dist/tools/workspaceListFiles.d.ts.map +1 -0
- package/dist/tools/workspaceListFiles.js +86 -0
- package/dist/tools/workspaceListFiles.js.map +1 -0
- package/dist/tools/workspaceReadFile.d.ts +3 -0
- package/dist/tools/workspaceReadFile.d.ts.map +1 -0
- package/dist/tools/workspaceReadFile.js +94 -0
- package/dist/tools/workspaceReadFile.js.map +1 -0
- package/dist/tools/workspaceSearch.d.ts +3 -0
- package/dist/tools/workspaceSearch.d.ts.map +1 -0
- package/dist/tools/workspaceSearch.js +102 -0
- package/dist/tools/workspaceSearch.js.map +1 -0
- package/dist/tools/workspaceShell.d.ts +3 -0
- package/dist/tools/workspaceShell.d.ts.map +1 -0
- package/dist/tools/workspaceShell.js +64 -0
- package/dist/tools/workspaceShell.js.map +1 -0
- package/dist/tools/workspaceStatus.d.ts +3 -0
- package/dist/tools/workspaceStatus.d.ts.map +1 -0
- package/dist/tools/workspaceStatus.js +105 -0
- package/dist/tools/workspaceStatus.js.map +1 -0
- package/dist/tools/workspaceWriteFile.d.ts +3 -0
- package/dist/tools/workspaceWriteFile.d.ts.map +1 -0
- package/dist/tools/workspaceWriteFile.js +81 -0
- package/dist/tools/workspaceWriteFile.js.map +1 -0
- package/dist/worker/client.d.ts +9 -0
- package/dist/worker/client.d.ts.map +1 -0
- package/dist/worker/client.js +53 -0
- package/dist/worker/client.js.map +1 -0
- package/dist/workspace/cache.d.ts +29 -0
- package/dist/workspace/cache.d.ts.map +1 -0
- package/dist/workspace/cache.js +57 -0
- package/dist/workspace/cache.js.map +1 -0
- package/package.json +61 -0
package/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# arcagent-mcp
|
|
2
|
+
|
|
3
|
+
MCP server for arcagent bounty workflows.
|
|
4
|
+
|
|
5
|
+
## Install / Run
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
ARCAGENT_API_KEY=arc_xxx npx -y arcagent-mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Claude Desktop Example
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"mcpServers": {
|
|
16
|
+
"arcagent": {
|
|
17
|
+
"command": "npx",
|
|
18
|
+
"args": ["-y", "arcagent-mcp"],
|
|
19
|
+
"env": {
|
|
20
|
+
"ARCAGENT_API_KEY": "arc_xxx"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## HTTP Deployment Mode
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
MCP_TRANSPORT=http \
|
|
31
|
+
MCP_PORT=3002 \
|
|
32
|
+
MCP_SHARED_SECRET=... \
|
|
33
|
+
WORKER_SHARED_SECRET=... \
|
|
34
|
+
CONVEX_URL=... \
|
|
35
|
+
node dist/index.js
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Environment Variables
|
|
39
|
+
|
|
40
|
+
- `ARCAGENT_API_KEY`: per-agent API key (stdio and optional HTTP auth)
|
|
41
|
+
- `MCP_SHARED_SECRET`: infrastructure-level auth secret for Convex calls
|
|
42
|
+
- `MCP_TRANSPORT`: `stdio` (default) or `http`
|
|
43
|
+
- `MCP_PORT`: HTTP port, default `3002`
|
|
44
|
+
- `MCP_STARTUP_MODE`: `full` (default) or `registration-only`
|
|
45
|
+
- `MCP_REQUIRE_AUTH_ON_STREAMS`: require auth for `/mcp` `GET`/`DELETE` (default `true`)
|
|
46
|
+
- `MCP_SESSION_TTL_MS`: session expiry in milliseconds (default `900000`)
|
|
47
|
+
- `MCP_MAX_SESSIONS`: max active HTTP sessions (default `5000`)
|
|
48
|
+
- `MCP_JSON_BODY_LIMIT`: request body limit (default `1mb`)
|
|
49
|
+
- `RATE_LIMIT_STORE`: `memory` (default) or `redis`
|
|
50
|
+
- `RATE_LIMIT_REDIS_URL`: Redis URL for distributed rate limiting
|
|
51
|
+
- `WORKER_SHARED_SECRET`: enables workspace tools and worker auth
|
|
52
|
+
- `CLERK_SECRET_KEY`: enables account registration endpoint
|
|
53
|
+
|
|
54
|
+
## Release
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm test
|
|
58
|
+
npm run prepack
|
|
59
|
+
npm run pack:check
|
|
60
|
+
npm publish --access public
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Compatibility
|
|
64
|
+
|
|
65
|
+
- Claude Desktop MCP
|
|
66
|
+
- Codex MCP clients
|
|
67
|
+
- Streamable HTTP MCP clients
|
|
68
|
+
|
|
69
|
+
## Registration-Only Bootstrap Mode
|
|
70
|
+
|
|
71
|
+
For first-time agent onboarding, run in HTTP registration-only mode:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
MCP_TRANSPORT=http \
|
|
75
|
+
MCP_STARTUP_MODE=registration-only \
|
|
76
|
+
MCP_SHARED_SECRET=... \
|
|
77
|
+
CLERK_SECRET_KEY=... \
|
|
78
|
+
CONVEX_URL=... \
|
|
79
|
+
node dist/index.js
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
In this mode:
|
|
83
|
+
- `POST /api/mcp/register` is available (no API key required)
|
|
84
|
+
- `/mcp` tool transport is intentionally disabled (`503`)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AuthenticatedUser } from "../lib/types";
|
|
2
|
+
/**
|
|
3
|
+
* Validate an API key and return the authenticated user.
|
|
4
|
+
* Results are cached for 60 seconds.
|
|
5
|
+
*/
|
|
6
|
+
/** Structured validation error for API key format issues */
|
|
7
|
+
export declare class ApiKeyFormatError extends Error {
|
|
8
|
+
constructor(message: string);
|
|
9
|
+
}
|
|
10
|
+
export declare function validateApiKey(apiKey: string): Promise<AuthenticatedUser | null>;
|
|
11
|
+
export declare function getApiKeyAuthCacheSize(): number;
|
|
12
|
+
/**
|
|
13
|
+
* Extract API key from Authorization header.
|
|
14
|
+
*/
|
|
15
|
+
export declare function extractApiKey(authHeader: string | undefined): string | null;
|
|
16
|
+
//# sourceMappingURL=apiKeyAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiKeyAuth.d.ts","sourceRoot":"","sources":["../../src/auth/apiKeyAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAUjD;;;GAGG;AACH,4DAA4D;AAC5D,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0CnC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK3E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiKeyFormatError = void 0;
|
|
4
|
+
exports.validateApiKey = validateApiKey;
|
|
5
|
+
exports.getApiKeyAuthCacheSize = getApiKeyAuthCacheSize;
|
|
6
|
+
exports.extractApiKey = extractApiKey;
|
|
7
|
+
const crypto_1 = require("../lib/crypto");
|
|
8
|
+
const client_1 = require("../convex/client");
|
|
9
|
+
const lruCache_1 = require("../lib/lruCache");
|
|
10
|
+
const CACHE_TTL_MS = 60_000; // 60 seconds
|
|
11
|
+
const CACHE_MAX_ENTRIES = 10_000;
|
|
12
|
+
const cache = new lruCache_1.LruTtlCache(CACHE_MAX_ENTRIES, CACHE_TTL_MS);
|
|
13
|
+
/**
|
|
14
|
+
* Validate an API key and return the authenticated user.
|
|
15
|
+
* Results are cached for 60 seconds.
|
|
16
|
+
*/
|
|
17
|
+
/** Structured validation error for API key format issues */
|
|
18
|
+
class ApiKeyFormatError extends Error {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
super(message);
|
|
21
|
+
this.name = "ApiKeyFormatError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.ApiKeyFormatError = ApiKeyFormatError;
|
|
25
|
+
async function validateApiKey(apiKey) {
|
|
26
|
+
if (!apiKey.startsWith("arc_")) {
|
|
27
|
+
throw new ApiKeyFormatError("API key must start with 'arc_'");
|
|
28
|
+
}
|
|
29
|
+
if (apiKey.length < 36 || apiKey.length > 52) {
|
|
30
|
+
throw new ApiKeyFormatError(`API key must be between 36 and 52 characters (got ${apiKey.length})`);
|
|
31
|
+
}
|
|
32
|
+
const keyHash = (0, crypto_1.hashApiKey)(apiKey);
|
|
33
|
+
// Check cache
|
|
34
|
+
const cached = cache.get(keyHash);
|
|
35
|
+
if (cached)
|
|
36
|
+
return cached;
|
|
37
|
+
// Validate against Convex
|
|
38
|
+
const result = await (0, client_1.callConvex)("/api/mcp/auth/validate", { keyHash });
|
|
39
|
+
if (!result.valid || !result.user || !result.userId || !result.scopes) {
|
|
40
|
+
throw new ApiKeyFormatError("API key not found — it may have been revoked or expired");
|
|
41
|
+
}
|
|
42
|
+
const user = {
|
|
43
|
+
userId: result.userId,
|
|
44
|
+
name: result.user.name,
|
|
45
|
+
email: result.user.email,
|
|
46
|
+
role: result.user.role,
|
|
47
|
+
scopes: result.scopes,
|
|
48
|
+
};
|
|
49
|
+
// Cache the result
|
|
50
|
+
cache.set(keyHash, user);
|
|
51
|
+
return user;
|
|
52
|
+
}
|
|
53
|
+
function getApiKeyAuthCacheSize() {
|
|
54
|
+
return cache.size();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Extract API key from Authorization header.
|
|
58
|
+
*/
|
|
59
|
+
function extractApiKey(authHeader) {
|
|
60
|
+
if (!authHeader || !authHeader.startsWith("Bearer ")) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return authHeader.slice("Bearer ".length);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=apiKeyAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiKeyAuth.js","sourceRoot":"","sources":["../../src/auth/apiKeyAuth.ts"],"names":[],"mappings":";;;AAwBA,wCA4CC;AAED,wDAEC;AAKD,sCAKC;AAlFD,0CAA2C;AAC3C,6CAA8C;AAE9C,8CAA8C;AAE9C,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,aAAa;AAC1C,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACjC,MAAM,KAAK,GAAG,IAAI,sBAAW,CAC3B,iBAAiB,EACjB,YAAY,CACb,CAAC;AAEF;;;GAGG;AACH,4DAA4D;AAC5D,MAAa,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC;AAEM,KAAK,UAAU,cAAc,CAClC,MAAc;IAEd,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,iBAAiB,CACzB,qDAAqD,MAAM,CAAC,MAAM,GAAG,CACtE,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;IAEnC,cAAc;IACd,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,0BAA0B;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAK5B,wBAAwB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAE1C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtE,MAAM,IAAI,iBAAiB,CACzB,yDAAyD,CAC1D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAsB;QAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;QACxB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;IAEF,mBAAmB;IACnB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,sBAAsB;IACpC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,UAA8B;IAC1D,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type RateLimitStore = "memory" | "redis";
|
|
2
|
+
export type StartupMode = "full" | "registration-only";
|
|
3
|
+
export interface ServerConfig {
|
|
4
|
+
convexUrl: string;
|
|
5
|
+
mcpSharedSecret?: string;
|
|
6
|
+
arcagentApiKey?: string;
|
|
7
|
+
workerSharedSecret?: string;
|
|
8
|
+
clerkSecretKey?: string;
|
|
9
|
+
mcpPort: number;
|
|
10
|
+
transport: "stdio" | "http";
|
|
11
|
+
requireAuthOnStreams: boolean;
|
|
12
|
+
sessionTtlMs: number;
|
|
13
|
+
maxSessions: number;
|
|
14
|
+
jsonBodyLimit: string;
|
|
15
|
+
rateLimitStore: RateLimitStore;
|
|
16
|
+
rateLimitRedisUrl?: string;
|
|
17
|
+
startupMode: StartupMode;
|
|
18
|
+
}
|
|
19
|
+
export declare function loadServerConfig(env?: NodeJS.ProcessEnv): ServerConfig;
|
|
20
|
+
export declare function assertConfig(config: ServerConfig): void;
|
|
21
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,OAAO,CAAC;AAChD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAEvD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAiBD,wBAAgB,gBAAgB,CAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,YAAY,CAyBd;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAmBvD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadServerConfig = loadServerConfig;
|
|
4
|
+
exports.assertConfig = assertConfig;
|
|
5
|
+
const DEFAULT_CONVEX_URL = "https://acoustic-starfish-282.convex.cloud";
|
|
6
|
+
function parseIntEnv(value, fallback) {
|
|
7
|
+
if (!value)
|
|
8
|
+
return fallback;
|
|
9
|
+
const parsed = Number.parseInt(value, 10);
|
|
10
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
11
|
+
}
|
|
12
|
+
function parseBoolEnv(value, fallback) {
|
|
13
|
+
if (!value)
|
|
14
|
+
return fallback;
|
|
15
|
+
if (value === "true" || value === "1")
|
|
16
|
+
return true;
|
|
17
|
+
if (value === "false" || value === "0")
|
|
18
|
+
return false;
|
|
19
|
+
return fallback;
|
|
20
|
+
}
|
|
21
|
+
function loadServerConfig(env = process.env) {
|
|
22
|
+
const transport = env.MCP_TRANSPORT === "http" ? "http" : "stdio";
|
|
23
|
+
const rateLimitStore = env.RATE_LIMIT_STORE === "redis"
|
|
24
|
+
? "redis"
|
|
25
|
+
: "memory";
|
|
26
|
+
const startupMode = env.MCP_STARTUP_MODE === "registration-only"
|
|
27
|
+
? "registration-only"
|
|
28
|
+
: "full";
|
|
29
|
+
return {
|
|
30
|
+
convexUrl: env.CONVEX_URL || DEFAULT_CONVEX_URL,
|
|
31
|
+
mcpSharedSecret: env.MCP_SHARED_SECRET,
|
|
32
|
+
arcagentApiKey: env.ARCAGENT_API_KEY,
|
|
33
|
+
workerSharedSecret: env.WORKER_SHARED_SECRET,
|
|
34
|
+
clerkSecretKey: env.CLERK_SECRET_KEY,
|
|
35
|
+
mcpPort: parseIntEnv(env.MCP_PORT, 3002),
|
|
36
|
+
transport,
|
|
37
|
+
requireAuthOnStreams: parseBoolEnv(env.MCP_REQUIRE_AUTH_ON_STREAMS, true),
|
|
38
|
+
sessionTtlMs: parseIntEnv(env.MCP_SESSION_TTL_MS, 900_000),
|
|
39
|
+
maxSessions: parseIntEnv(env.MCP_MAX_SESSIONS, 5_000),
|
|
40
|
+
jsonBodyLimit: env.MCP_JSON_BODY_LIMIT || "1mb",
|
|
41
|
+
rateLimitStore,
|
|
42
|
+
rateLimitRedisUrl: env.RATE_LIMIT_REDIS_URL || env.REDIS_URL,
|
|
43
|
+
startupMode,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function assertConfig(config) {
|
|
47
|
+
if (config.startupMode === "registration-only") {
|
|
48
|
+
if (config.transport !== "http") {
|
|
49
|
+
throw new Error("MCP_STARTUP_MODE=registration-only requires MCP_TRANSPORT=http");
|
|
50
|
+
}
|
|
51
|
+
if (!config.mcpSharedSecret) {
|
|
52
|
+
throw new Error("MCP_STARTUP_MODE=registration-only requires MCP_SHARED_SECRET");
|
|
53
|
+
}
|
|
54
|
+
if (!config.clerkSecretKey) {
|
|
55
|
+
throw new Error("MCP_STARTUP_MODE=registration-only requires CLERK_SECRET_KEY");
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (!config.mcpSharedSecret && !config.arcagentApiKey) {
|
|
60
|
+
throw new Error("Either MCP_SHARED_SECRET (self-hosted) or ARCAGENT_API_KEY (npx) is required");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAmCA,4CA2BC;AAED,oCAmBC;AA/DD,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAExE,SAAS,WAAW,CAAC,KAAyB,EAAE,QAAgB;IAC9D,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,QAAiB;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,gBAAgB,CAC9B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,MAAM,cAAc,GAAmB,GAAG,CAAC,gBAAgB,KAAK,OAAO;QACrE,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,WAAW,GAAgB,GAAG,CAAC,gBAAgB,KAAK,mBAAmB;QAC3E,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,MAAM,CAAC;IAEX,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,kBAAkB;QAC/C,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;QAC5C,cAAc,EAAE,GAAG,CAAC,gBAAgB;QACpC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC;QACxC,SAAS;QACT,oBAAoB,EAAE,YAAY,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC;QACzE,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC;QAC1D,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC;QACrD,aAAa,EAAE,GAAG,CAAC,mBAAmB,IAAI,KAAK;QAC/C,cAAc;QACd,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,SAAS;QAC5D,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,MAAoB;IAC/C,IAAI,MAAM,CAAC,WAAW,KAAK,mBAAmB,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for calling Convex internal endpoints.
|
|
3
|
+
* All calls are authenticated with MCP_SHARED_SECRET.
|
|
4
|
+
*/
|
|
5
|
+
export declare function initConvexClient(url: string, secret: string): void;
|
|
6
|
+
export declare function callConvex<T = unknown>(path: string, body: Record<string, unknown>): Promise<T>;
|
|
7
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/convex/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,CAAC,CAAC,CA6CZ"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HTTP client for calling Convex internal endpoints.
|
|
4
|
+
* All calls are authenticated with MCP_SHARED_SECRET.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.initConvexClient = initConvexClient;
|
|
8
|
+
exports.callConvex = callConvex;
|
|
9
|
+
const REQUEST_TIMEOUT_MS = 15_000;
|
|
10
|
+
let convexUrl;
|
|
11
|
+
let sharedSecret;
|
|
12
|
+
function initConvexClient(url, secret) {
|
|
13
|
+
convexUrl = url.replace(/\/+$/, "");
|
|
14
|
+
sharedSecret = secret;
|
|
15
|
+
}
|
|
16
|
+
async function callConvex(path, body) {
|
|
17
|
+
const url = `${convexUrl}${path}`;
|
|
18
|
+
const controller = new AbortController();
|
|
19
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
20
|
+
try {
|
|
21
|
+
const response = await fetch(url, {
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers: {
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
Authorization: `Bearer ${sharedSecret}`,
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify(body),
|
|
28
|
+
signal: controller.signal,
|
|
29
|
+
});
|
|
30
|
+
clearTimeout(timeoutId);
|
|
31
|
+
if (!response.ok) {
|
|
32
|
+
const rawText = await response.text().catch(() => "");
|
|
33
|
+
// Try to extract a structured error message from Convex JSON responses
|
|
34
|
+
let errorMessage;
|
|
35
|
+
try {
|
|
36
|
+
const parsed = JSON.parse(rawText);
|
|
37
|
+
errorMessage = parsed.message || parsed.error || rawText.slice(0, 200);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// Non-JSON response (e.g. HTML error page from 502/503)
|
|
41
|
+
if (response.status === 401 || response.status === 403) {
|
|
42
|
+
errorMessage = "Authentication failed. Check your API key.";
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
errorMessage = `Server error (${response.status}). Please retry.`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
throw new Error(errorMessage);
|
|
49
|
+
}
|
|
50
|
+
return (await response.json());
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
clearTimeout(timeoutId);
|
|
54
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
55
|
+
throw new Error(`Convex request timed out: ${path}`);
|
|
56
|
+
}
|
|
57
|
+
throw err;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/convex/client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,4CAGC;AAED,gCAgDC;AA1DD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,IAAI,SAAiB,CAAC;AACtB,IAAI,YAAoB,CAAC;AAEzB,SAAgB,gBAAgB,CAAC,GAAW,EAAE,MAAc;IAC1D,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,IAA6B;IAE7B,MAAM,GAAG,GAAG,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC;IAElC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAE3E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,YAAY,EAAE;aACxC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,uEAAuE;YACvE,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACnC,YAAY,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;gBACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACvD,YAAY,GAAG,4CAA4C,CAAC;gBAC9D,CAAC;qBAAM,CAAC;oBACN,YAAY,GAAG,iBAAiB,QAAQ,CAAC,MAAM,kBAAkB,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import express from "express";
|
|
3
|
+
import { type ServerConfig } from "./config";
|
|
4
|
+
import { SessionStore } from "./lib/sessionStore";
|
|
5
|
+
interface HttpRuntime {
|
|
6
|
+
app: express.Express;
|
|
7
|
+
close: () => Promise<void>;
|
|
8
|
+
sessions: SessionStore;
|
|
9
|
+
}
|
|
10
|
+
export declare function createHttpRuntime(config: ServerConfig): Promise<HttpRuntime>;
|
|
11
|
+
export declare function main(config?: ServerConfig): Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,OAAwC,MAAM,SAAS,CAAC;AAI/D,OAAO,EAAkC,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAK7E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,UAAU,WAAW;IACnB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,QAAQ,EAAE,YAAY,CAAC;CACxB;AA2CD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA0QlF;AAmDD,wBAAsB,IAAI,CAAC,MAAM,eAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBrE"}
|