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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolProfiles.js","sourceRoot":"","sources":["../../src/lib/toolProfiles.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA4FH,wCAGC;AAUD,0CAKC;AASD,gDAQC;AAKD,4CAEC;AAxGD,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,iBAAiB,GAAgB;IACrC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE;IACX,oEAAoE;IACpE,oEAAoE;IACpE,4DAA4D;KAC7D;IACD,gBAAgB,EAAE,YAAY;CAC/B,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE;QACX,sEAAsE;QACtE,uDAAuD;QACvD,uBAAuB,EAAE,aAAa;QACtC,iEAAiE;QACjE,gBAAgB,EAAE,OAAO;QACzB,iBAAiB,EAAE,eAAe;QAClC,qBAAqB,EAAE,WAAW;QAClC,sBAAsB,EAAE,YAAY;QACpC,qBAAqB,EAAE,WAAW;QAClC,gBAAgB,EAAE,MAAM;QACxB,gBAAgB,EAAE,MAAM;QACxB,sBAAsB,EAAE,YAAY;QACpC,kBAAkB,EAAE,QAAQ;QAC5B,sBAAsB,EAAE,YAAY;QACpC,uBAAuB,EAAE,aAAa;QACtC,yBAAyB,EAAE,eAAe;KAC3C;IACD,gBAAgB,EAAE,WAAW;CAC9B,CAAC;AAEF,MAAM,cAAc,GAAgB;IAClC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE;IACX,sDAAsD;KACvD;IACD,gBAAgB,EAAE,WAAW;CAC9B,CAAC;AAEF,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,QAAQ,GAAgC;IAC5C,aAAa,EAAE,iBAAiB;IAChC,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,cAAc;CACxB,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,WAAoB;IACjD,IAAI,CAAC,WAAW;QAAE,OAAO,cAAc,CAAC;IACxC,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,cAAc,CAAC;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAC7B,OAAoB,EACpB,aAAqB;IAErB,OAAO,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAChC,OAAoB;IAEpB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACrE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
export interface AuthenticatedUser {
|
|
2
|
+
userId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
email: string;
|
|
5
|
+
role: string;
|
|
6
|
+
scopes: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface SessionRecord {
|
|
9
|
+
sessionId: string;
|
|
10
|
+
userId: string;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
lastSeenAt: number;
|
|
13
|
+
expiresAt: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ConvexBounty {
|
|
16
|
+
_id: string;
|
|
17
|
+
title: string;
|
|
18
|
+
description: string;
|
|
19
|
+
status: string;
|
|
20
|
+
reward: number;
|
|
21
|
+
rewardCurrency: string;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
deadline?: number;
|
|
24
|
+
claimDurationHours?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface ConvexBountyDetails extends ConvexBounty {
|
|
27
|
+
creator: {
|
|
28
|
+
name: string;
|
|
29
|
+
} | null;
|
|
30
|
+
testSuites: Array<{
|
|
31
|
+
_id: string;
|
|
32
|
+
title: string;
|
|
33
|
+
version: number;
|
|
34
|
+
gherkinContent: string;
|
|
35
|
+
visibility: "public" | "hidden";
|
|
36
|
+
}>;
|
|
37
|
+
repoMap: {
|
|
38
|
+
repoMapText: string;
|
|
39
|
+
symbolTableJson: string;
|
|
40
|
+
dependencyGraphJson: string;
|
|
41
|
+
} | null;
|
|
42
|
+
isClaimed: boolean;
|
|
43
|
+
platformFeePercent?: number;
|
|
44
|
+
testFramework?: string | null;
|
|
45
|
+
testLanguage?: string | null;
|
|
46
|
+
relevantPaths?: string[];
|
|
47
|
+
}
|
|
48
|
+
export interface ConvexClaim {
|
|
49
|
+
_id: string;
|
|
50
|
+
bountyId: string;
|
|
51
|
+
agentId: string;
|
|
52
|
+
status: string;
|
|
53
|
+
claimedAt: number;
|
|
54
|
+
expiresAt: number;
|
|
55
|
+
releasedAt?: number;
|
|
56
|
+
featureBranchName?: string;
|
|
57
|
+
featureBranchRepo?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface ConvexSubmission {
|
|
60
|
+
_id: string;
|
|
61
|
+
bountyId: string;
|
|
62
|
+
agentId: string;
|
|
63
|
+
repositoryUrl: string;
|
|
64
|
+
commitHash: string;
|
|
65
|
+
status: string;
|
|
66
|
+
description?: string;
|
|
67
|
+
bounty?: ConvexBounty | null;
|
|
68
|
+
}
|
|
69
|
+
export interface VerificationGate {
|
|
70
|
+
gateType: string;
|
|
71
|
+
tool: string;
|
|
72
|
+
status: string;
|
|
73
|
+
issues?: string[];
|
|
74
|
+
details?: unknown;
|
|
75
|
+
}
|
|
76
|
+
export interface VerificationStep {
|
|
77
|
+
scenarioName: string;
|
|
78
|
+
featureName: string;
|
|
79
|
+
status: string;
|
|
80
|
+
executionTimeMs: number;
|
|
81
|
+
output?: string;
|
|
82
|
+
stepNumber: number;
|
|
83
|
+
}
|
|
84
|
+
export interface AgentVerificationStep extends VerificationStep {
|
|
85
|
+
visibility: "public" | "hidden";
|
|
86
|
+
}
|
|
87
|
+
/** Agent-facing verification status — all scenarios visible with verbose output. */
|
|
88
|
+
export interface ConvexAgentVerification {
|
|
89
|
+
_id: string;
|
|
90
|
+
submissionId: string;
|
|
91
|
+
bountyId: string;
|
|
92
|
+
status: string;
|
|
93
|
+
result?: string;
|
|
94
|
+
startedAt?: number;
|
|
95
|
+
completedAt?: number;
|
|
96
|
+
errorLog?: string;
|
|
97
|
+
gates: VerificationGate[];
|
|
98
|
+
steps: AgentVerificationStep[];
|
|
99
|
+
feedbackJson?: string;
|
|
100
|
+
job: {
|
|
101
|
+
status: string;
|
|
102
|
+
currentGate?: string;
|
|
103
|
+
queuedAt: number;
|
|
104
|
+
startedAt?: number;
|
|
105
|
+
completedAt?: number;
|
|
106
|
+
} | null;
|
|
107
|
+
}
|
|
108
|
+
/** Full verification status (dashboard/internal use — includes all step details). */
|
|
109
|
+
export interface ConvexVerification {
|
|
110
|
+
_id: string;
|
|
111
|
+
submissionId: string;
|
|
112
|
+
bountyId: string;
|
|
113
|
+
status: string;
|
|
114
|
+
result?: string;
|
|
115
|
+
startedAt?: number;
|
|
116
|
+
completedAt?: number;
|
|
117
|
+
errorLog?: string;
|
|
118
|
+
gates: VerificationGate[];
|
|
119
|
+
steps: VerificationStep[];
|
|
120
|
+
job: {
|
|
121
|
+
status: string;
|
|
122
|
+
currentGate?: string;
|
|
123
|
+
queuedAt: number;
|
|
124
|
+
startedAt?: number;
|
|
125
|
+
completedAt?: number;
|
|
126
|
+
} | null;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":""}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export interface McpServerOptions {
|
|
3
|
+
enableWorkspaceTools?: boolean;
|
|
4
|
+
enableRegistration?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function createMcpServer(options?: McpServerOptions): McpServer;
|
|
7
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2CpE,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CA8DrE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMcpServer = createMcpServer;
|
|
4
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
+
const listBounties_1 = require("./tools/listBounties");
|
|
6
|
+
const getBountyDetails_1 = require("./tools/getBountyDetails");
|
|
7
|
+
const getTestSuites_1 = require("./tools/getTestSuites");
|
|
8
|
+
const getRepoMap_1 = require("./tools/getRepoMap");
|
|
9
|
+
const claimBounty_1 = require("./tools/claimBounty");
|
|
10
|
+
const getClaimStatus_1 = require("./tools/getClaimStatus");
|
|
11
|
+
const extendClaim_1 = require("./tools/extendClaim");
|
|
12
|
+
const releaseClaim_1 = require("./tools/releaseClaim");
|
|
13
|
+
// getRepoAccess removed — agents use workspace tools instead
|
|
14
|
+
const workspaceExec_1 = require("./tools/workspaceExec");
|
|
15
|
+
const workspaceReadFile_1 = require("./tools/workspaceReadFile");
|
|
16
|
+
const workspaceWriteFile_1 = require("./tools/workspaceWriteFile");
|
|
17
|
+
const workspaceStatus_1 = require("./tools/workspaceStatus");
|
|
18
|
+
const submitSolution_1 = require("./tools/submitSolution");
|
|
19
|
+
const getVerificationStatus_1 = require("./tools/getVerificationStatus");
|
|
20
|
+
const listMySubmissions_1 = require("./tools/listMySubmissions");
|
|
21
|
+
const createBounty_1 = require("./tools/createBounty");
|
|
22
|
+
const getBountyGenerationStatus_1 = require("./tools/getBountyGenerationStatus");
|
|
23
|
+
const setupPaymentMethod_1 = require("./tools/setupPaymentMethod");
|
|
24
|
+
const setupPayoutAccount_1 = require("./tools/setupPayoutAccount");
|
|
25
|
+
const fundBountyEscrow_1 = require("./tools/fundBountyEscrow");
|
|
26
|
+
const checkNotifications_1 = require("./tools/checkNotifications");
|
|
27
|
+
const cancelBounty_1 = require("./tools/cancelBounty");
|
|
28
|
+
const getSubmissionFeedback_1 = require("./tools/getSubmissionFeedback");
|
|
29
|
+
const registerAccount_1 = require("./tools/registerAccount");
|
|
30
|
+
const importWorkItem_1 = require("./tools/importWorkItem");
|
|
31
|
+
const getMyAgentStats_1 = require("./tools/getMyAgentStats");
|
|
32
|
+
const getAgentProfile_1 = require("./tools/getAgentProfile");
|
|
33
|
+
const rateAgent_1 = require("./tools/rateAgent");
|
|
34
|
+
const getLeaderboard_1 = require("./tools/getLeaderboard");
|
|
35
|
+
const workspaceBatchRead_1 = require("./tools/workspaceBatchRead");
|
|
36
|
+
const workspaceBatchWrite_1 = require("./tools/workspaceBatchWrite");
|
|
37
|
+
const workspaceSearch_1 = require("./tools/workspaceSearch");
|
|
38
|
+
const workspaceListFiles_1 = require("./tools/workspaceListFiles");
|
|
39
|
+
const workspaceExecStream_1 = require("./tools/workspaceExecStream");
|
|
40
|
+
const workspaceShell_1 = require("./tools/workspaceShell");
|
|
41
|
+
const workspaceEditFile_1 = require("./tools/workspaceEditFile");
|
|
42
|
+
const workspaceGlob_1 = require("./tools/workspaceGlob");
|
|
43
|
+
const workspaceGrep_1 = require("./tools/workspaceGrep");
|
|
44
|
+
const workspaceApplyPatch_1 = require("./tools/workspaceApplyPatch");
|
|
45
|
+
const workspaceCrashReports_1 = require("./tools/workspaceCrashReports");
|
|
46
|
+
function createMcpServer(options) {
|
|
47
|
+
const { enableWorkspaceTools = true, enableRegistration = true, } = options ?? {};
|
|
48
|
+
const server = new mcp_js_1.McpServer({
|
|
49
|
+
name: "arcagent",
|
|
50
|
+
version: "0.1.0",
|
|
51
|
+
});
|
|
52
|
+
// Registration tool (requires Clerk)
|
|
53
|
+
if (enableRegistration) {
|
|
54
|
+
(0, registerAccount_1.registerRegisterAccount)(server);
|
|
55
|
+
}
|
|
56
|
+
// Core bounty tools (always available)
|
|
57
|
+
(0, listBounties_1.registerListBounties)(server);
|
|
58
|
+
(0, getBountyDetails_1.registerGetBountyDetails)(server);
|
|
59
|
+
(0, getTestSuites_1.registerGetTestSuites)(server);
|
|
60
|
+
(0, getRepoMap_1.registerGetRepoMap)(server);
|
|
61
|
+
(0, claimBounty_1.registerClaimBounty)(server);
|
|
62
|
+
(0, getClaimStatus_1.registerGetClaimStatus)(server);
|
|
63
|
+
(0, extendClaim_1.registerExtendClaim)(server);
|
|
64
|
+
(0, releaseClaim_1.registerReleaseClaim)(server);
|
|
65
|
+
(0, submitSolution_1.registerSubmitSolution)(server);
|
|
66
|
+
(0, getVerificationStatus_1.registerGetVerificationStatus)(server);
|
|
67
|
+
(0, getSubmissionFeedback_1.registerGetSubmissionFeedback)(server);
|
|
68
|
+
(0, listMySubmissions_1.registerListMySubmissions)(server);
|
|
69
|
+
(0, createBounty_1.registerCreateBounty)(server);
|
|
70
|
+
(0, getBountyGenerationStatus_1.registerGetBountyGenerationStatus)(server);
|
|
71
|
+
(0, setupPaymentMethod_1.registerSetupPaymentMethod)(server);
|
|
72
|
+
(0, setupPayoutAccount_1.registerSetupPayoutAccount)(server);
|
|
73
|
+
(0, fundBountyEscrow_1.registerFundBountyEscrow)(server);
|
|
74
|
+
(0, checkNotifications_1.registerCheckNotifications)(server);
|
|
75
|
+
(0, cancelBounty_1.registerCancelBounty)(server);
|
|
76
|
+
(0, importWorkItem_1.registerImportWorkItem)(server);
|
|
77
|
+
(0, getMyAgentStats_1.registerGetMyAgentStats)(server);
|
|
78
|
+
(0, getAgentProfile_1.registerGetAgentProfile)(server);
|
|
79
|
+
(0, rateAgent_1.registerRateAgent)(server);
|
|
80
|
+
(0, getLeaderboard_1.registerGetLeaderboard)(server);
|
|
81
|
+
// Workspace tools (require WORKER_SHARED_SECRET)
|
|
82
|
+
if (enableWorkspaceTools) {
|
|
83
|
+
(0, workspaceExec_1.registerWorkspaceExec)(server);
|
|
84
|
+
(0, workspaceReadFile_1.registerWorkspaceReadFile)(server);
|
|
85
|
+
(0, workspaceWriteFile_1.registerWorkspaceWriteFile)(server);
|
|
86
|
+
(0, workspaceStatus_1.registerWorkspaceStatus)(server);
|
|
87
|
+
(0, workspaceBatchRead_1.registerWorkspaceBatchRead)(server);
|
|
88
|
+
(0, workspaceBatchWrite_1.registerWorkspaceBatchWrite)(server);
|
|
89
|
+
(0, workspaceSearch_1.registerWorkspaceSearch)(server);
|
|
90
|
+
(0, workspaceListFiles_1.registerWorkspaceListFiles)(server);
|
|
91
|
+
(0, workspaceExecStream_1.registerWorkspaceExecStream)(server);
|
|
92
|
+
(0, workspaceShell_1.registerWorkspaceShell)(server);
|
|
93
|
+
(0, workspaceEditFile_1.registerWorkspaceEditFile)(server);
|
|
94
|
+
(0, workspaceGlob_1.registerWorkspaceGlob)(server);
|
|
95
|
+
(0, workspaceGrep_1.registerWorkspaceGrep)(server);
|
|
96
|
+
(0, workspaceApplyPatch_1.registerWorkspaceApplyPatch)(server);
|
|
97
|
+
(0, workspaceCrashReports_1.registerWorkspaceCrashReports)(server);
|
|
98
|
+
}
|
|
99
|
+
return server;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelBounty.d.ts","sourceRoot":"","sources":["../../src/tools/cancelBounty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+D5D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerCancelBounty = registerCancelBounty;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_1 = require("../convex/client");
|
|
6
|
+
const toolHelper_1 = require("../lib/toolHelper");
|
|
7
|
+
const context_1 = require("../lib/context");
|
|
8
|
+
function registerCancelBounty(server) {
|
|
9
|
+
(0, toolHelper_1.registerTool)(server, "cancel_bounty", "Cancel a bounty you created. Only works if no agent has an active claim and no submission is currently being verified. Triggers an automatic escrow refund if the bounty was funded.", {
|
|
10
|
+
bountyId: zod_1.z.string().describe("The bounty ID to cancel"),
|
|
11
|
+
}, async (args) => {
|
|
12
|
+
// SECURITY (H4): Enforce scope
|
|
13
|
+
(0, context_1.requireScope)("bounties:create");
|
|
14
|
+
// SECURITY (C1): Resolve creatorId from auth context
|
|
15
|
+
const authUser = (0, context_1.getAuthUser)();
|
|
16
|
+
const creatorId = authUser?.userId;
|
|
17
|
+
if (!creatorId) {
|
|
18
|
+
return {
|
|
19
|
+
content: [
|
|
20
|
+
{
|
|
21
|
+
type: "text",
|
|
22
|
+
text: "Error: Authentication required.",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
const result = await (0, client_1.callConvex)("/api/mcp/bounties/cancel", {
|
|
30
|
+
bountyId: args.bountyId,
|
|
31
|
+
creatorId,
|
|
32
|
+
});
|
|
33
|
+
const refundNote = result.escrowRefundScheduled
|
|
34
|
+
? " An escrow refund has been scheduled — funds will be returned to your payment method."
|
|
35
|
+
: "";
|
|
36
|
+
return {
|
|
37
|
+
content: [
|
|
38
|
+
{
|
|
39
|
+
type: "text",
|
|
40
|
+
text: `Bounty ${result.bountyId} cancelled successfully (was "${result.previousStatus}").${refundNote}`,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
const message = err instanceof Error ? err.message : "Failed to cancel bounty";
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: "text",
|
|
51
|
+
text: `Failed to cancel bounty: ${message}`,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
isError: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=cancelBounty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancelBounty.js","sourceRoot":"","sources":["../../src/tools/cancelBounty.ts"],"names":[],"mappings":";;AAMA,oDA+DC;AApED,6BAAwB;AACxB,6CAA8C;AAC9C,kDAAiD;AACjD,4CAA2D;AAE3D,SAAgB,oBAAoB,CAAC,MAAiB;IACpD,IAAA,yBAAY,EACV,MAAM,EACN,eAAe,EACf,sLAAsL,EACtL;QACE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACzD,EACD,KAAK,EAAE,IAA0B,EAAE,EAAE;QACnC,+BAA+B;QAC/B,IAAA,sBAAY,EAAC,iBAAiB,CAAC,CAAC;QAChC,qDAAqD;QACrD,MAAM,QAAQ,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,EAAE,MAAM,CAAC;QACnC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iCAAiC;qBACxC;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAI5B,0BAA0B,EAAE;gBAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB;gBAC7C,CAAC,CAAC,uFAAuF;gBACzF,CAAC,CAAC,EAAE,CAAC;YAEP,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,UAAU,MAAM,CAAC,QAAQ,iCAAiC,MAAM,CAAC,cAAc,MAAM,UAAU,EAAE;qBACxG;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GACX,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4BAA4B,OAAO,EAAE;qBAC5C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkNotifications.d.ts","sourceRoot":"","sources":["../../src/tools/checkNotifications.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBpE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4ElE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerCheckNotifications = registerCheckNotifications;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_1 = require("../convex/client");
|
|
6
|
+
const toolHelper_1 = require("../lib/toolHelper");
|
|
7
|
+
const context_1 = require("../lib/context");
|
|
8
|
+
function registerCheckNotifications(server) {
|
|
9
|
+
(0, toolHelper_1.registerTool)(server, "check_notifications", "Check for new bounty notifications. Returns unread notifications and automatically marks them as read.", {
|
|
10
|
+
limit: zod_1.z
|
|
11
|
+
.string()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe("Max notifications to return (default: 20)"),
|
|
14
|
+
}, async (args) => {
|
|
15
|
+
// SECURITY (H4): Enforce scope
|
|
16
|
+
(0, context_1.requireScope)("bounties:read");
|
|
17
|
+
// SECURITY (C1): Resolve userId from auth context
|
|
18
|
+
const authUser = (0, context_1.getAuthUser)();
|
|
19
|
+
const userId = authUser?.userId;
|
|
20
|
+
if (!userId) {
|
|
21
|
+
return {
|
|
22
|
+
content: [
|
|
23
|
+
{
|
|
24
|
+
type: "text",
|
|
25
|
+
text: "Error: Authentication required. No user ID available.",
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
isError: true,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const result = await (0, client_1.callConvex)("/api/mcp/notifications/list", {
|
|
32
|
+
userId,
|
|
33
|
+
limit: args.limit ? parseInt(args.limit, 10) : undefined,
|
|
34
|
+
});
|
|
35
|
+
const notifications = result.notifications;
|
|
36
|
+
if (notifications.length === 0) {
|
|
37
|
+
return {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: "text",
|
|
41
|
+
text: "No new notifications.",
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
// Format as readable text
|
|
47
|
+
const lines = notifications.map((n) => `- **${n.title}** (bounty: ${n.bountyId})\n ${n.message}\n _${new Date(n.createdAt).toISOString()}_`);
|
|
48
|
+
// Auto-mark as read
|
|
49
|
+
const notificationIds = notifications.map((n) => n._id);
|
|
50
|
+
let markReadNote = "_(All marked as read)_";
|
|
51
|
+
try {
|
|
52
|
+
await (0, client_1.callConvex)("/api/mcp/notifications/mark-read", {
|
|
53
|
+
notificationIds,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
markReadNote = "_(Warning: could not mark notifications as read. They may appear again.)_";
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{
|
|
62
|
+
type: "text",
|
|
63
|
+
text: `${notifications.length} new notification(s):\n\n${lines.join("\n\n")}\n\n${markReadNote}`,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=checkNotifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkNotifications.js","sourceRoot":"","sources":["../../src/tools/checkNotifications.ts"],"names":[],"mappings":";;AAiBA,gEA4EC;AA5FD,6BAAwB;AACxB,6CAA8C;AAC9C,kDAAiD;AACjD,4CAA2D;AAa3D,SAAgB,0BAA0B,CAAC,MAAiB;IAC1D,IAAA,yBAAY,EACV,MAAM,EACN,qBAAqB,EACrB,wGAAwG,EACxG;QACE,KAAK,EAAE,OAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,2CAA2C,CAAC;KACzD,EACD,KAAK,EAAE,IAAwB,EAAE,EAAE;QACjC,+BAA+B;QAC/B,IAAA,sBAAY,EAAC,eAAe,CAAC,CAAC;QAC9B,kDAAkD;QAClD,MAAM,QAAQ,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,CAAC;QAChC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uDAAuD;qBAC9D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAE5B,6BAA6B,EAAE;YAChC,MAAM;YACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAE3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uBAAuB;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO,CAAC,CAAC,KAAK,eAAe,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,OAAO,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,CACzG,CAAC;QAEF,oBAAoB;QACpB,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,wBAAwB,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,IAAA,mBAAU,EAAC,kCAAkC,EAAE;gBACnD,eAAe;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,GAAG,2EAA2E,CAAC;QAC7F,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,GAAG,aAAa,CAAC,MAAM,4BAA4B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,YAAY,EAAE;iBACjG;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimBounty.d.ts","sourceRoot":"","sources":["../../src/tools/claimBounty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0E3D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerClaimBounty = registerClaimBounty;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_1 = require("../convex/client");
|
|
6
|
+
const toolHelper_1 = require("../lib/toolHelper");
|
|
7
|
+
const context_1 = require("../lib/context");
|
|
8
|
+
function registerClaimBounty(server) {
|
|
9
|
+
(0, toolHelper_1.registerTool)(server, "claim_bounty", "Claim an exclusive lock on a bounty. A Firecracker microVM workspace is provisioned automatically with the repository pre-cloned. Only one agent can claim a bounty at a time. Claims expire after the bounty's claim duration (default 4 hours).", {
|
|
10
|
+
bountyId: zod_1.z.string().describe("The bounty ID to claim"),
|
|
11
|
+
}, async (args) => {
|
|
12
|
+
// SECURITY (H4): Enforce scope
|
|
13
|
+
(0, context_1.requireScope)("bounties:claim");
|
|
14
|
+
// SECURITY (C1): Resolve agentId from auth context, not from params
|
|
15
|
+
const authUser = (0, context_1.getAuthUser)();
|
|
16
|
+
const agentId = authUser?.userId;
|
|
17
|
+
if (!agentId) {
|
|
18
|
+
return {
|
|
19
|
+
content: [{ type: "text", text: "Error: Authentication required. No agent ID available." }],
|
|
20
|
+
isError: true,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const bountyResult = await (0, client_1.callConvex)("/api/mcp/bounties/get", { bountyId: args.bountyId });
|
|
24
|
+
const bounty = bountyResult.bounty;
|
|
25
|
+
let claimResult;
|
|
26
|
+
try {
|
|
27
|
+
claimResult = await (0, client_1.callConvex)("/api/mcp/claims/create", { bountyId: args.bountyId, agentId });
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
const message = err instanceof Error ? err.message : "Failed to claim bounty";
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: "text", text: `Failed to claim bounty: ${message}` }],
|
|
33
|
+
isError: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const { claimId } = claimResult;
|
|
37
|
+
let text = `# Bounty Claimed Successfully\n\n`;
|
|
38
|
+
text += `**Claim ID:** ${claimId}\n`;
|
|
39
|
+
text += `**Bounty:** ${bounty.title}\n`;
|
|
40
|
+
text += `**Expires:** ${bounty.claimDurationHours} hours from now\n\n`;
|
|
41
|
+
text += `## Development Workspace\n\n`;
|
|
42
|
+
text += `A Firecracker microVM workspace is being provisioned with the repository pre-cloned.\n`;
|
|
43
|
+
text += `Use \`workspace_status\` to check when it's ready (~30-90 seconds).\n\n`;
|
|
44
|
+
text += `## Available Tools\n\n`;
|
|
45
|
+
text += `- \`workspace_exec\` — Run shell commands (build, test, install packages)\n`;
|
|
46
|
+
text += `- \`workspace_exec_stream\` — Run long commands (npm test, cargo build) with streaming output\n`;
|
|
47
|
+
text += `- \`workspace_read_file\` — Read a single source file\n`;
|
|
48
|
+
text += `- \`workspace_batch_read\` — Read multiple files in one call (much faster)\n`;
|
|
49
|
+
text += `- \`workspace_write_file\` — Write/create a single file\n`;
|
|
50
|
+
text += `- \`workspace_batch_write\` — Write multiple files in one call\n`;
|
|
51
|
+
text += `- \`workspace_search\` — Search for patterns across files (structured grep)\n`;
|
|
52
|
+
text += `- \`workspace_list_files\` — List files with optional glob filter\n`;
|
|
53
|
+
text += `- \`submit_solution\` — Submit your changes for verification\n\n`;
|
|
54
|
+
text += `All development happens inside the VM. You do not need to clone or push to any repository.\n`;
|
|
55
|
+
text += `\nUse \`extend_claim\` if you need more time. Use \`release_claim\` to give up the bounty.`;
|
|
56
|
+
return { content: [{ type: "text", text }] };
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=claimBounty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimBounty.js","sourceRoot":"","sources":["../../src/tools/claimBounty.ts"],"names":[],"mappings":";;AAOA,kDA0EC;AAhFD,6BAAwB;AACxB,6CAA8C;AAE9C,kDAAiD;AACjD,4CAA2D;AAE3D,SAAgB,mBAAmB,CAAC,MAAiB;IACnD,IAAA,yBAAY,EACV,MAAM,EACN,cAAc,EACd,mPAAmP,EACnP;QACE,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACxD,EACD,KAAK,EAAE,IAA0B,EAAE,EAAE;QACnC,+BAA+B;QAC/B,IAAA,sBAAY,EAAC,gBAAgB,CAAC,CAAC;QAC/B,oEAAoE;QACpE,MAAM,QAAQ,GAAG,IAAA,qBAAW,GAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,EAAE,MAAM,CAAC;QACjC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wDAAwD,EAAE,CAAC;gBACpG,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAU,EAElC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAEnC,IAAI,WAGH,CAAC;QACF,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,IAAA,mBAAU,EAI5B,wBAAwB,EACxB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CACrC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAC9E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2BAA2B,OAAO,EAAE,EAAE,CAAC;gBAChF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;QAChC,IAAI,IAAI,GAAG,mCAAmC,CAAC;QAC/C,IAAI,IAAI,iBAAiB,OAAO,IAAI,CAAC;QACrC,IAAI,IAAI,eAAe,MAAM,CAAC,KAAK,IAAI,CAAC;QACxC,IAAI,IAAI,gBAAgB,MAAM,CAAC,kBAAkB,qBAAqB,CAAC;QAEvE,IAAI,IAAI,8BAA8B,CAAC;QACvC,IAAI,IAAI,wFAAwF,CAAC;QACjG,IAAI,IAAI,yEAAyE,CAAC;QAElF,IAAI,IAAI,wBAAwB,CAAC;QACjC,IAAI,IAAI,6EAA6E,CAAC;QACtF,IAAI,IAAI,iGAAiG,CAAC;QAC1G,IAAI,IAAI,yDAAyD,CAAC;QAClE,IAAI,IAAI,8EAA8E,CAAC;QACvF,IAAI,IAAI,2DAA2D,CAAC;QACpE,IAAI,IAAI,kEAAkE,CAAC;QAC3E,IAAI,IAAI,+EAA+E,CAAC;QACxF,IAAI,IAAI,qEAAqE,CAAC;QAC9E,IAAI,IAAI,kEAAkE,CAAC;QAE3E,IAAI,IAAI,8FAA8F,CAAC;QACvG,IAAI,IAAI,4FAA4F,CAAC;QAErG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxD,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBounty.d.ts","sourceRoot":"","sources":["../../src/tools/createBounty.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMpE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2G5D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerCreateBounty = registerCreateBounty;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const client_1 = require("../convex/client");
|
|
6
|
+
const toolHelper_1 = require("../lib/toolHelper");
|
|
7
|
+
const context_1 = require("../lib/context");
|
|
8
|
+
function registerCreateBounty(server) {
|
|
9
|
+
(0, toolHelper_1.registerTool)(server, "create_bounty", "Create a new bounty with NL description, optional GitHub repo URL, and reward. If a repository URL is provided, automatically triggers repo indexing and full NL->BDD->TDD test generation pipeline. Requires tosAccepted: true.", {
|
|
10
|
+
title: zod_1.z.string().describe("Bounty title"),
|
|
11
|
+
description: zod_1.z.string().describe("Natural language description of what needs to be built/fixed"),
|
|
12
|
+
reward: zod_1.z.string().describe("Reward amount (numeric string, e.g. '100')"),
|
|
13
|
+
rewardCurrency: zod_1.z.string().describe("Currency code (e.g. 'USD', 'ETH')"),
|
|
14
|
+
paymentMethod: zod_1.z.enum(["stripe", "web3"]).describe("Payment method: 'stripe' or 'web3'"),
|
|
15
|
+
tosAccepted: zod_1.z.boolean().describe("Must be true — confirms acceptance of Bounty Creation Terms of Service"),
|
|
16
|
+
repositoryUrl: zod_1.z.string().optional().describe("GitHub repository URL to index and generate tests from"),
|
|
17
|
+
deadline: zod_1.z.string().optional().describe("Deadline as Unix timestamp in milliseconds"),
|
|
18
|
+
tags: zod_1.z.string().optional().describe("Comma-separated tags (e.g. 'react,typescript,api')"),
|
|
19
|
+
pmIssueKey: zod_1.z.string().optional().describe("PM tool issue key (e.g. 'PROJ-123', 'LIN-456')"),
|
|
20
|
+
pmProvider: zod_1.z.enum(["jira", "linear", "asana", "monday"]).optional().describe("PM tool provider"),
|
|
21
|
+
}, async (args) => {
|
|
22
|
+
// SECURITY (H4): Enforce scope
|
|
23
|
+
(0, context_1.requireScope)("bounties:create");
|
|
24
|
+
// SECURITY (C1): Resolve creatorId from auth context
|
|
25
|
+
const authUser = (0, context_1.getAuthUser)();
|
|
26
|
+
const creatorId = authUser?.userId;
|
|
27
|
+
if (!creatorId) {
|
|
28
|
+
return {
|
|
29
|
+
content: [{ type: "text", text: "Error: Authentication required." }],
|
|
30
|
+
isError: true,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Enforce TOS acceptance
|
|
34
|
+
if (!args.tosAccepted) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: "text", text: "Error: You must accept the Bounty Creation Terms of Service (tosAccepted: true) to create a bounty." }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const result = await (0, client_1.callConvex)("/api/mcp/bounties/create", {
|
|
42
|
+
creatorId,
|
|
43
|
+
title: args.title,
|
|
44
|
+
description: args.description,
|
|
45
|
+
reward: parseFloat(args.reward),
|
|
46
|
+
rewardCurrency: args.rewardCurrency,
|
|
47
|
+
paymentMethod: args.paymentMethod,
|
|
48
|
+
repositoryUrl: args.repositoryUrl,
|
|
49
|
+
deadline: args.deadline ? parseInt(args.deadline, 10) : undefined,
|
|
50
|
+
tags: args.tags ? args.tags.split(",").map((t) => t.trim()) : undefined,
|
|
51
|
+
tosAccepted: true,
|
|
52
|
+
tosAcceptedAt: Date.now(),
|
|
53
|
+
tosVersion: "1.0",
|
|
54
|
+
pmIssueKey: args.pmIssueKey,
|
|
55
|
+
pmProvider: args.pmProvider,
|
|
56
|
+
});
|
|
57
|
+
let text = `# Bounty Created\n\n`;
|
|
58
|
+
text += `**Bounty ID:** ${result.bountyId}\n`;
|
|
59
|
+
text += `**Title:** ${args.title}\n`;
|
|
60
|
+
text += `**Reward:** ${args.reward} ${args.rewardCurrency}\n`;
|
|
61
|
+
text += `**Payment:** ${args.paymentMethod}\n`;
|
|
62
|
+
text += `**TOS:** Accepted (v1.0)\n`;
|
|
63
|
+
if (args.paymentMethod === "stripe") {
|
|
64
|
+
text += `**Status:** draft (fund escrow, then publish)\n`;
|
|
65
|
+
}
|
|
66
|
+
if (args.pmIssueKey) {
|
|
67
|
+
text += `**PM Issue:** ${args.pmProvider}/${args.pmIssueKey}\n`;
|
|
68
|
+
}
|
|
69
|
+
if (result.repoConnectionId) {
|
|
70
|
+
text += `\n## Autonomous Pipeline Started\n\n`;
|
|
71
|
+
text += `**Repo Connection ID:** ${result.repoConnectionId}\n`;
|
|
72
|
+
text += `**Conversation ID:** ${result.conversationId}\n\n`;
|
|
73
|
+
text += `The repository is being indexed and tests will be auto-generated.\n`;
|
|
74
|
+
text += `Use \`get_bounty_generation_status\` with bounty ID \`${result.bountyId}\` to check progress.`;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
text += `\nNo repository URL provided — bounty created without test generation pipeline.`;
|
|
78
|
+
}
|
|
79
|
+
return { content: [{ type: "text", text }] };
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
const message = err instanceof Error ? err.message : "Bounty creation failed";
|
|
83
|
+
return {
|
|
84
|
+
content: [{ type: "text", text: `Failed to create bounty: ${message}` }],
|
|
85
|
+
isError: true,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=createBounty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createBounty.js","sourceRoot":"","sources":["../../src/tools/createBounty.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extendClaim.d.ts","sourceRoot":"","sources":["../../src/tools/extendClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmE3D"}
|