@varun-ai07/covenant-mcp 1.2.3 → 1.3.2
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 +1056 -170
- package/dist/abis/MultiTokenEscrow.json +836 -0
- package/dist/abis/v2/AgentRegistry.json +872 -0
- package/dist/abis/v2/DisputeResolution.json +493 -0
- package/dist/abis/v2/InsurancePool.json +645 -0
- package/dist/abis/v2/ReceiptVerifier.json +394 -0
- package/dist/abis/v2/RevisionManager.json +544 -0
- package/dist/abis/v2/TaskEscrow.json +1018 -0
- package/dist/cli.js +0 -0
- package/dist/config.d.ts +13 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +84 -25
- package/dist/config.js.map +1 -1
- package/dist/lib/did.d.ts +72 -0
- package/dist/lib/did.d.ts.map +1 -0
- package/dist/lib/did.js +115 -0
- package/dist/lib/did.js.map +1 -0
- package/dist/lib/formatResponse.d.ts +33 -0
- package/dist/lib/formatResponse.d.ts.map +1 -0
- package/dist/lib/formatResponse.js +92 -0
- package/dist/lib/formatResponse.js.map +1 -0
- package/dist/lib/schemaHelpers.d.ts +11 -0
- package/dist/lib/schemaHelpers.d.ts.map +1 -0
- package/dist/lib/schemaHelpers.js +11 -0
- package/dist/lib/schemaHelpers.js.map +1 -0
- package/dist/lib/store.d.ts +10 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/lib/store.js +39 -0
- package/dist/lib/store.js.map +1 -0
- package/dist/lib/verify.d.ts +21 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +568 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/schemas.d.ts +5 -5
- package/dist/schemas.d.ts.map +1 -1
- package/dist/server.d.ts +1 -25
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +53 -37
- package/dist/server.js.map +1 -1
- package/dist/shared-types.d.ts +67 -0
- package/dist/shared-types.d.ts.map +1 -0
- package/dist/shared-types.js +86 -0
- package/dist/shared-types.js.map +1 -0
- package/dist/tools/account-abstraction.d.ts +3 -0
- package/dist/tools/account-abstraction.d.ts.map +1 -0
- package/dist/tools/account-abstraction.js +364 -0
- package/dist/tools/account-abstraction.js.map +1 -0
- package/dist/tools/batches.d.ts.map +1 -1
- package/dist/tools/batches.js +68 -37
- package/dist/tools/batches.js.map +1 -1
- package/dist/tools/bounties.d.ts +3 -0
- package/dist/tools/bounties.d.ts.map +1 -0
- package/dist/tools/bounties.js +304 -0
- package/dist/tools/bounties.js.map +1 -0
- package/dist/tools/bridge.d.ts +3 -0
- package/dist/tools/bridge.d.ts.map +1 -0
- package/dist/tools/bridge.js +190 -0
- package/dist/tools/bridge.js.map +1 -0
- package/dist/tools/collectives.d.ts.map +1 -1
- package/dist/tools/collectives.js +74 -46
- package/dist/tools/collectives.js.map +1 -1
- package/dist/tools/covenant-help.d.ts +3 -0
- package/dist/tools/covenant-help.d.ts.map +1 -0
- package/dist/tools/covenant-help.js +321 -0
- package/dist/tools/covenant-help.js.map +1 -0
- package/dist/tools/cross-chain.d.ts +3 -0
- package/dist/tools/cross-chain.d.ts.map +1 -0
- package/dist/tools/cross-chain.js +77 -0
- package/dist/tools/cross-chain.js.map +1 -0
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +39 -33
- package/dist/tools/disputes.js.map +1 -1
- package/dist/tools/escrow.d.ts.map +1 -1
- package/dist/tools/escrow.js +248 -199
- package/dist/tools/escrow.js.map +1 -1
- package/dist/tools/fiat-onramp.d.ts +3 -0
- package/dist/tools/fiat-onramp.d.ts.map +1 -0
- package/dist/tools/fiat-onramp.js +108 -0
- package/dist/tools/fiat-onramp.js.map +1 -0
- package/dist/tools/governance.d.ts +3 -0
- package/dist/tools/governance.d.ts.map +1 -0
- package/dist/tools/governance.js +271 -0
- package/dist/tools/governance.js.map +1 -0
- package/dist/tools/grants.d.ts +3 -0
- package/dist/tools/grants.d.ts.map +1 -0
- package/dist/tools/grants.js +269 -0
- package/dist/tools/grants.js.map +1 -0
- package/dist/tools/insurance.d.ts.map +1 -1
- package/dist/tools/insurance.js +92 -45
- package/dist/tools/insurance.js.map +1 -1
- package/dist/tools/market.d.ts.map +1 -1
- package/dist/tools/market.js +122 -103
- package/dist/tools/market.js.map +1 -1
- package/dist/tools/matching.d.ts +3 -0
- package/dist/tools/matching.d.ts.map +1 -0
- package/dist/tools/matching.js +233 -0
- package/dist/tools/matching.js.map +1 -0
- package/dist/tools/messaging.d.ts +3 -0
- package/dist/tools/messaging.d.ts.map +1 -0
- package/dist/tools/messaging.js +159 -0
- package/dist/tools/messaging.js.map +1 -0
- package/dist/tools/multi-token.d.ts +3 -0
- package/dist/tools/multi-token.d.ts.map +1 -0
- package/dist/tools/multi-token.js +274 -0
- package/dist/tools/multi-token.js.map +1 -0
- package/dist/tools/offchain-coordinator.d.ts +3 -0
- package/dist/tools/offchain-coordinator.d.ts.map +1 -0
- package/dist/tools/offchain-coordinator.js +436 -0
- package/dist/tools/offchain-coordinator.js.map +1 -0
- package/dist/tools/protocol.d.ts.map +1 -1
- package/dist/tools/protocol.js +19 -6
- package/dist/tools/protocol.js.map +1 -1
- package/dist/tools/receipts.d.ts.map +1 -1
- package/dist/tools/receipts.js +39 -39
- package/dist/tools/receipts.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +90 -43
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/reputation-vc.d.ts +3 -0
- package/dist/tools/reputation-vc.d.ts.map +1 -0
- package/dist/tools/reputation-vc.js +438 -0
- package/dist/tools/reputation-vc.js.map +1 -0
- package/dist/tools/revisions.d.ts +3 -0
- package/dist/tools/revisions.d.ts.map +1 -0
- package/dist/tools/revisions.js +108 -0
- package/dist/tools/revisions.js.map +1 -0
- package/dist/tools/router.d.ts +3 -0
- package/dist/tools/router.d.ts.map +1 -0
- package/dist/tools/router.js +104 -0
- package/dist/tools/router.js.map +1 -0
- package/dist/tools/streaming.d.ts +3 -0
- package/dist/tools/streaming.d.ts.map +1 -0
- package/dist/tools/streaming.js +350 -0
- package/dist/tools/streaming.js.map +1 -0
- package/dist/tools/templates.d.ts +3 -0
- package/dist/tools/templates.d.ts.map +1 -0
- package/dist/tools/templates.js +392 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/training.d.ts +3 -0
- package/dist/tools/training.d.ts.map +1 -0
- package/dist/tools/training.js +304 -0
- package/dist/tools/training.js.map +1 -0
- package/dist/tools/v2-settlement.d.ts +3 -0
- package/dist/tools/v2-settlement.d.ts.map +1 -0
- package/dist/tools/v2-settlement.js +226 -0
- package/dist/tools/v2-settlement.js.map +1 -0
- package/dist/tools/verification.d.ts +3 -0
- package/dist/tools/verification.d.ts.map +1 -0
- package/dist/tools/verification.js +215 -0
- package/dist/tools/verification.js.map +1 -0
- package/dist/tools/verify-deep.d.ts +3 -0
- package/dist/tools/verify-deep.d.ts.map +1 -0
- package/dist/tools/verify-deep.js +125 -0
- package/dist/tools/verify-deep.js.map +1 -0
- package/dist/types.d.ts +16 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -23
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* COVENANT MCP Tools — Task Templates
|
|
3
|
+
*
|
|
4
|
+
* corven_list_templates — Browse available task templates with pricing
|
|
5
|
+
* corven_create_from_template — Create a task from a template with auto-calculated price
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { parseEther, isAddress } from "viem";
|
|
9
|
+
import { loadAbi, CONTRACTS, getAccount } from "../config.js";
|
|
10
|
+
import { executeOrPrepare } from "../handlers/wallet.js";
|
|
11
|
+
import { formatTxResult, formatReadResult } from "../handlers/transactions.js";
|
|
12
|
+
import { formatSuccess, formatStructuredError, parseContractError } from "../lib/formatResponse.js";
|
|
13
|
+
import { ethAddress, unixDeadline, ipfsCid } from "../lib/schemaHelpers.js";
|
|
14
|
+
const TEMPLATES = [
|
|
15
|
+
{
|
|
16
|
+
name: "code-review",
|
|
17
|
+
category: "code",
|
|
18
|
+
description: "Professional code review with actionable feedback on security, performance, and style",
|
|
19
|
+
parameters: {
|
|
20
|
+
language: { type: "string", required: true, description: "Programming language (python, javascript, typescript, go, rust, java)" },
|
|
21
|
+
repo_url: { type: "string", required: true, description: "Repository URL or IPFS CID of code" },
|
|
22
|
+
branch: { type: "string", required: false, default: "main", description: "Branch to review" },
|
|
23
|
+
focus_areas: { type: "array", required: false, default: ["style", "security"], description: "Areas to focus on: security, performance, style, architecture, testing" },
|
|
24
|
+
max_files: { type: "number", required: false, default: 20, description: "Maximum files to review (1-200)" },
|
|
25
|
+
},
|
|
26
|
+
pricing: { base: "0.005", perUnit: "0.0005", unit: "file", multipliers: { security: 1.5, performance: 1.3, architecture: 1.4 } },
|
|
27
|
+
verification: ["output_not_empty", "contains_line_references", "severity_levels_present"],
|
|
28
|
+
outputFormat: "markdown",
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: "data-analysis",
|
|
32
|
+
category: "data",
|
|
33
|
+
description: "Analyze a dataset and produce insights, visualizations, and recommendations",
|
|
34
|
+
parameters: {
|
|
35
|
+
dataset_url: { type: "string", required: true, description: "URL or IPFS CID of dataset (CSV, JSON, Parquet)" },
|
|
36
|
+
questions: { type: "array", required: true, description: "Specific questions to answer about the data" },
|
|
37
|
+
output_format: { type: "string", required: false, default: "markdown", description: "Output format: markdown, json, csv" },
|
|
38
|
+
},
|
|
39
|
+
pricing: { base: "0.003", perUnit: "0.001", unit: "question" },
|
|
40
|
+
verification: ["output_not_empty", "contains_statistics", "answers_all_questions"],
|
|
41
|
+
outputFormat: "markdown",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: "research-report",
|
|
45
|
+
category: "research",
|
|
46
|
+
description: "Deep research on a topic with citations, analysis, and structured findings",
|
|
47
|
+
parameters: {
|
|
48
|
+
topic: { type: "string", required: true, description: "Research topic or question" },
|
|
49
|
+
depth: { type: "string", required: false, default: "standard", description: "Research depth: quick, standard, deep" },
|
|
50
|
+
min_sources: { type: "number", required: false, default: 5, description: "Minimum number of sources to cite" },
|
|
51
|
+
focus_areas: { type: "array", required: false, default: [], description: "Specific subtopics to focus on" },
|
|
52
|
+
},
|
|
53
|
+
pricing: { base: "0.004", perUnit: "0.0008", unit: "source", multipliers: { deep: 2.0, quick: 0.5 } },
|
|
54
|
+
verification: ["output_not_empty", "min_citations_met", "has_structure"],
|
|
55
|
+
outputFormat: "markdown",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "content-writing",
|
|
59
|
+
category: "content",
|
|
60
|
+
description: "Write articles, blog posts, documentation, or marketing copy",
|
|
61
|
+
parameters: {
|
|
62
|
+
topic: { type: "string", required: true, description: "Content topic" },
|
|
63
|
+
word_count: { type: "number", required: false, default: 1000, description: "Target word count" },
|
|
64
|
+
tone: { type: "string", required: false, default: "professional", description: "Tone: professional, casual, technical, persuasive" },
|
|
65
|
+
content_type: { type: "string", required: false, default: "article", description: "Type: article, blog, documentation, marketing" },
|
|
66
|
+
},
|
|
67
|
+
pricing: { base: "0.002", perUnit: "0.000002", unit: "word" },
|
|
68
|
+
verification: ["output_not_empty", "word_count_met", "has_sections"],
|
|
69
|
+
outputFormat: "markdown",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "security-audit",
|
|
73
|
+
category: "security",
|
|
74
|
+
description: "Security audit of smart contracts, APIs, or application code",
|
|
75
|
+
parameters: {
|
|
76
|
+
target_url: { type: "string", required: true, description: "Repository URL or IPFS CID of code to audit" },
|
|
77
|
+
scope: { type: "string", required: false, default: "full", description: "Audit scope: full, smart-contracts, api, infrastructure" },
|
|
78
|
+
standards: { type: "array", required: false, default: ["owasp-top-10"], description: "Standards to audit against" },
|
|
79
|
+
},
|
|
80
|
+
pricing: { base: "0.01", perUnit: "0.001", unit: "file", multipliers: { "smart-contracts": 2.0 } },
|
|
81
|
+
verification: ["output_not_empty", "has_severity_levels", "has_recommendations"],
|
|
82
|
+
outputFormat: "markdown",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: "fullstack-app",
|
|
86
|
+
category: "code",
|
|
87
|
+
description: "Build a complete full-stack application with frontend, backend, and database",
|
|
88
|
+
parameters: {
|
|
89
|
+
description: { type: "string", required: true, description: "What the application should do" },
|
|
90
|
+
tech_stack: { type: "array", required: false, default: ["nextjs", "postgresql"], description: "Preferred tech stack" },
|
|
91
|
+
features: { type: "array", required: true, description: "List of features to implement" },
|
|
92
|
+
},
|
|
93
|
+
pricing: { base: "0.02", perUnit: "0.003", unit: "feature" },
|
|
94
|
+
verification: ["builds_successfully", "tests_pass", "url_accessible"],
|
|
95
|
+
outputFormat: "repository",
|
|
96
|
+
},
|
|
97
|
+
];
|
|
98
|
+
// ──────────────────────────────────────────────────────────────
|
|
99
|
+
// Price calculation
|
|
100
|
+
// ──────────────────────────────────────────────────────────────
|
|
101
|
+
function calculatePrice(template, params) {
|
|
102
|
+
const base = parseFloat(template.pricing.base);
|
|
103
|
+
const perUnit = parseFloat(template.pricing.perUnit);
|
|
104
|
+
const unit = template.pricing.unit;
|
|
105
|
+
// Determine unit count from template-specific parameters
|
|
106
|
+
let unitCount = 1;
|
|
107
|
+
if (unit === "file") {
|
|
108
|
+
unitCount = params.max_files ?? 20;
|
|
109
|
+
}
|
|
110
|
+
else if (unit === "question") {
|
|
111
|
+
unitCount = Array.isArray(params.questions) ? params.questions.length : 1;
|
|
112
|
+
}
|
|
113
|
+
else if (unit === "source") {
|
|
114
|
+
unitCount = params.min_sources ?? 5;
|
|
115
|
+
}
|
|
116
|
+
else if (unit === "word") {
|
|
117
|
+
unitCount = params.word_count ?? 1000;
|
|
118
|
+
}
|
|
119
|
+
else if (unit === "feature") {
|
|
120
|
+
unitCount = Array.isArray(params.features) ? params.features.length : 1;
|
|
121
|
+
}
|
|
122
|
+
// Apply multipliers
|
|
123
|
+
let multiplier = 1.0;
|
|
124
|
+
const multipliers = template.pricing.multipliers;
|
|
125
|
+
if (multipliers) {
|
|
126
|
+
// Check focus_areas for code-review and research-report
|
|
127
|
+
const focusAreas = params.focus_areas ?? [];
|
|
128
|
+
for (const area of focusAreas) {
|
|
129
|
+
if (multipliers[area]) {
|
|
130
|
+
multiplier = Math.max(multiplier, multipliers[area]);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// Check depth for research-report
|
|
134
|
+
if (params.depth && multipliers[params.depth]) {
|
|
135
|
+
multiplier = multipliers[params.depth];
|
|
136
|
+
}
|
|
137
|
+
// Check scope for security-audit
|
|
138
|
+
if (params.scope && multipliers[params.scope]) {
|
|
139
|
+
multiplier = multipliers[params.scope];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const baseCost = base;
|
|
143
|
+
const unitCost = perUnit * unitCount;
|
|
144
|
+
const total = (baseCost + unitCost) * multiplier;
|
|
145
|
+
const breakdown = [
|
|
146
|
+
`Base: ${base} ETH`,
|
|
147
|
+
`Units: ${unitCount} ${unit} x ${perUnit} ETH = ${unitCost.toFixed(6)} ETH`,
|
|
148
|
+
multiplier > 1 ? `Multiplier: ${multiplier}x` : null,
|
|
149
|
+
`Total: ${total.toFixed(6)} ETH`,
|
|
150
|
+
]
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
.join(" | ");
|
|
153
|
+
return {
|
|
154
|
+
baseCost,
|
|
155
|
+
unitCost,
|
|
156
|
+
multiplier,
|
|
157
|
+
totalEth: total.toFixed(6),
|
|
158
|
+
breakdown,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
// ──────────────────────────────────────────────────────────────
|
|
162
|
+
// Registration
|
|
163
|
+
// ──────────────────────────────────────────────────────────────
|
|
164
|
+
export function registerTemplateTools(server) {
|
|
165
|
+
// ──────────────────────────────────────────────────────────────
|
|
166
|
+
// corven_list_templates
|
|
167
|
+
// ──────────────────────────────────────────────────────────────
|
|
168
|
+
server.registerTool("corven_list_templates", {
|
|
169
|
+
title: "List Task Templates",
|
|
170
|
+
description: "Returns all available task templates with their parameters and auto-pricing.\n" +
|
|
171
|
+
"USE WHEN: You want to create a task but need a standardized workflow. Templates auto-calculate price based on parameters.\n" +
|
|
172
|
+
"REQUIRES: Nothing. Pure data return, no blockchain interaction.\n" +
|
|
173
|
+
"RETURNS: Template name, category, description, parameters, pricing model, verification checks.\n" +
|
|
174
|
+
"COMES BEFORE: corven_create_from_template to create a task from a template.\n" +
|
|
175
|
+
"FILTER: Pass category to filter by type (code, data, research, content, security).",
|
|
176
|
+
inputSchema: {
|
|
177
|
+
category: z
|
|
178
|
+
.string()
|
|
179
|
+
.optional()
|
|
180
|
+
.describe("Filter templates by category: code, data, research, content, security"),
|
|
181
|
+
},
|
|
182
|
+
}, async ({ category }) => {
|
|
183
|
+
try {
|
|
184
|
+
let templates = TEMPLATES;
|
|
185
|
+
if (category) {
|
|
186
|
+
const cat = category.toLowerCase();
|
|
187
|
+
templates = TEMPLATES.filter((t) => t.category === cat);
|
|
188
|
+
if (templates.length === 0) {
|
|
189
|
+
const available = [...new Set(TEMPLATES.map((t) => t.category))].join(", ");
|
|
190
|
+
return formatStructuredError(`No templates found for category '${category}'.`, `Available categories: ${available}`, "Pass one of the available categories, or omit the filter to see all templates.", false);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
const catalog = templates.map((t) => ({
|
|
194
|
+
name: t.name,
|
|
195
|
+
category: t.category,
|
|
196
|
+
description: t.description,
|
|
197
|
+
parameters: t.parameters,
|
|
198
|
+
pricing: {
|
|
199
|
+
base: `${t.pricing.base} ETH`,
|
|
200
|
+
perUnit: `${t.pricing.perUnit} ETH per ${t.pricing.unit}`,
|
|
201
|
+
...(t.pricing.multipliers && { multipliers: t.pricing.multipliers }),
|
|
202
|
+
},
|
|
203
|
+
verification: t.verification,
|
|
204
|
+
outputFormat: t.outputFormat,
|
|
205
|
+
}));
|
|
206
|
+
return formatReadResult({ templateCount: catalog.length, templates: catalog }, category ? `Templates in '${category}'` : "All available task templates");
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
const parsed = parseContractError(e);
|
|
210
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
// ──────────────────────────────────────────────────────────────
|
|
214
|
+
// corven_create_from_template
|
|
215
|
+
// ──────────────────────────────────────────────────────────────
|
|
216
|
+
server.registerTool("corven_create_from_template", {
|
|
217
|
+
title: "Create Task from Template",
|
|
218
|
+
description: "Creates a task from a predefined template with auto-calculated pricing based on parameters.\n" +
|
|
219
|
+
"USE WHEN: You want standardized task creation with built-in pricing, verification checks, and output format.\n" +
|
|
220
|
+
"REQUIRES: Both client and worker must be registered. Client wallet needs calculated price + ~2% fees + gas.\n" +
|
|
221
|
+
"RETURNS: taskId, calculated price with breakdown, template used, worker assigned, Basescan link.\n" +
|
|
222
|
+
"COMES AFTER: corven_list_templates to see available templates and their parameters.\n" +
|
|
223
|
+
"COMES BEFORE: Worker calls corven_submit_work. Client calls corven_verify_task.\n" +
|
|
224
|
+
"TEMPLATES: code-review, data-analysis, research-report, content-writing, security-audit, fullstack-app.\n" +
|
|
225
|
+
"NOTE: Price is auto-calculated from template base + per-unit cost x quantity + multipliers. Call corven_list_templates for exact pricing.",
|
|
226
|
+
inputSchema: {
|
|
227
|
+
template: z.string().describe("Template name: code-review, data-analysis, research-report, content-writing, security-audit, fullstack-app"),
|
|
228
|
+
worker: ethAddress,
|
|
229
|
+
deadline: unixDeadline,
|
|
230
|
+
descriptionHash: ipfsCid,
|
|
231
|
+
// Template-specific parameters (all optional with defaults applied by template)
|
|
232
|
+
language: z.string().optional().describe("Programming language (code-review template)"),
|
|
233
|
+
repo_url: z.string().optional().describe("Repository URL or IPFS CID (code-review, security-audit templates)"),
|
|
234
|
+
branch: z.string().optional().describe("Branch to review (code-review template)"),
|
|
235
|
+
focus_areas: z.array(z.string()).optional().describe("Focus areas for the task"),
|
|
236
|
+
max_files: z.number().optional().describe("Maximum files to review (code-review template, 1-200)"),
|
|
237
|
+
dataset_url: z.string().optional().describe("Dataset URL or CID (data-analysis template)"),
|
|
238
|
+
questions: z.array(z.string()).optional().describe("Questions to answer (data-analysis template)"),
|
|
239
|
+
output_format: z.string().optional().describe("Output format (data-analysis template)"),
|
|
240
|
+
topic: z.string().optional().describe("Topic (research-report, content-writing templates)"),
|
|
241
|
+
depth: z.string().optional().describe("Research depth: quick, standard, deep (research-report template)"),
|
|
242
|
+
min_sources: z.number().optional().describe("Minimum sources to cite (research-report template)"),
|
|
243
|
+
word_count: z.number().optional().describe("Target word count (content-writing template)"),
|
|
244
|
+
tone: z.string().optional().describe("Writing tone (content-writing template)"),
|
|
245
|
+
content_type: z.string().optional().describe("Content type (content-writing template)"),
|
|
246
|
+
target_url: z.string().optional().describe("Audit target URL (security-audit template)"),
|
|
247
|
+
scope: z.string().optional().describe("Audit scope (security-audit template)"),
|
|
248
|
+
standards: z.array(z.string()).optional().describe("Audit standards (security-audit template)"),
|
|
249
|
+
description: z.string().optional().describe("App description (fullstack-app template)"),
|
|
250
|
+
tech_stack: z.array(z.string()).optional().describe("Tech stack (fullstack-app template)"),
|
|
251
|
+
features: z.array(z.string()).optional().describe("Features list (fullstack-app template)"),
|
|
252
|
+
},
|
|
253
|
+
}, async ({ template, worker, deadline, descriptionHash, language, repo_url, branch, focus_areas, max_files, dataset_url, questions, output_format, topic, depth, min_sources, word_count, tone, content_type, target_url, scope, standards, description: appDescription, tech_stack, features, }) => {
|
|
254
|
+
try {
|
|
255
|
+
// Resolve template
|
|
256
|
+
const tmpl = TEMPLATES.find((t) => t.name === template);
|
|
257
|
+
if (!tmpl) {
|
|
258
|
+
const available = TEMPLATES.map((t) => t.name).join(", ");
|
|
259
|
+
return formatStructuredError(`Unknown template '${template}'.`, `Available templates: ${available}`, "Pass one of the available template names. Call corven_list_templates for details.", false);
|
|
260
|
+
}
|
|
261
|
+
// Validate worker address
|
|
262
|
+
if (!isAddress(worker)) {
|
|
263
|
+
return formatStructuredError("Invalid worker address.", `'${worker}' is not a valid Ethereum address.`, "Pass a full 42-character 0x Ethereum address.", false);
|
|
264
|
+
}
|
|
265
|
+
// Validate required parameters
|
|
266
|
+
const params = {};
|
|
267
|
+
for (const [key, def] of Object.entries(tmpl.parameters)) {
|
|
268
|
+
// Map template parameter names to input fields
|
|
269
|
+
let value;
|
|
270
|
+
switch (key) {
|
|
271
|
+
case "language":
|
|
272
|
+
value = language;
|
|
273
|
+
break;
|
|
274
|
+
case "repo_url":
|
|
275
|
+
value = repo_url;
|
|
276
|
+
break;
|
|
277
|
+
case "branch":
|
|
278
|
+
value = branch;
|
|
279
|
+
break;
|
|
280
|
+
case "focus_areas":
|
|
281
|
+
value = focus_areas;
|
|
282
|
+
break;
|
|
283
|
+
case "max_files":
|
|
284
|
+
value = max_files;
|
|
285
|
+
break;
|
|
286
|
+
case "dataset_url":
|
|
287
|
+
value = dataset_url;
|
|
288
|
+
break;
|
|
289
|
+
case "questions":
|
|
290
|
+
value = questions;
|
|
291
|
+
break;
|
|
292
|
+
case "output_format":
|
|
293
|
+
value = output_format;
|
|
294
|
+
break;
|
|
295
|
+
case "topic":
|
|
296
|
+
value = topic;
|
|
297
|
+
break;
|
|
298
|
+
case "depth":
|
|
299
|
+
value = depth;
|
|
300
|
+
break;
|
|
301
|
+
case "min_sources":
|
|
302
|
+
value = min_sources;
|
|
303
|
+
break;
|
|
304
|
+
case "word_count":
|
|
305
|
+
value = word_count;
|
|
306
|
+
break;
|
|
307
|
+
case "tone":
|
|
308
|
+
value = tone;
|
|
309
|
+
break;
|
|
310
|
+
case "content_type":
|
|
311
|
+
value = content_type;
|
|
312
|
+
break;
|
|
313
|
+
case "target_url":
|
|
314
|
+
value = target_url;
|
|
315
|
+
break;
|
|
316
|
+
case "scope":
|
|
317
|
+
value = scope;
|
|
318
|
+
break;
|
|
319
|
+
case "standards":
|
|
320
|
+
value = standards;
|
|
321
|
+
break;
|
|
322
|
+
case "description":
|
|
323
|
+
value = appDescription;
|
|
324
|
+
break;
|
|
325
|
+
case "tech_stack":
|
|
326
|
+
value = tech_stack;
|
|
327
|
+
break;
|
|
328
|
+
case "features":
|
|
329
|
+
value = features;
|
|
330
|
+
break;
|
|
331
|
+
default: value = undefined;
|
|
332
|
+
}
|
|
333
|
+
if (value !== undefined) {
|
|
334
|
+
params[key] = value;
|
|
335
|
+
}
|
|
336
|
+
else if (def.required) {
|
|
337
|
+
return formatStructuredError(`Missing required parameter '${key}' for template '${template}'.`, `The '${key}' parameter is required: ${def.description}`, `Pass '${key}' in your request. Call corven_list_templates to see all parameters for this template.`, true);
|
|
338
|
+
}
|
|
339
|
+
else if (def.default !== undefined) {
|
|
340
|
+
params[key] = def.default;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// Calculate price
|
|
344
|
+
const pricing = calculatePrice(tmpl, params);
|
|
345
|
+
const paymentWei = parseEther(pricing.totalEth);
|
|
346
|
+
// Validate payment is reasonable
|
|
347
|
+
const paymentFloat = parseFloat(pricing.totalEth);
|
|
348
|
+
if (paymentFloat < 0.001) {
|
|
349
|
+
return formatStructuredError("Calculated price is below minimum.", `Template calculated ${pricing.totalEth} ETH, but minimum task payment is 0.001 ETH.`, "Increase the unit count or parameters to raise the price above the minimum.", true);
|
|
350
|
+
}
|
|
351
|
+
const account = getAccount();
|
|
352
|
+
if (!account) {
|
|
353
|
+
return formatStructuredError("No private key configured.", "PRIVATE_KEY environment variable is not set.", "Set PRIVATE_KEY in your .env file.", false);
|
|
354
|
+
}
|
|
355
|
+
// Calculate total value: payment + protocol fee (1%) + priority fee (Medium=1%)
|
|
356
|
+
const PROTOCOL_FEE_BPS = 100n;
|
|
357
|
+
const PRIORITY_FEE_BPS = 100n; // Default Medium priority
|
|
358
|
+
const totalFeeBps = PROTOCOL_FEE_BPS + PRIORITY_FEE_BPS;
|
|
359
|
+
const feeAmount = (paymentWei * totalFeeBps) / 10000n;
|
|
360
|
+
const totalValue = paymentWei + feeAmount;
|
|
361
|
+
const result = await executeOrPrepare(CONTRACTS.TaskEscrow, loadAbi("TaskEscrow"), "createAndFundTask", [worker, paymentWei, BigInt(deadline), descriptionHash], totalValue);
|
|
362
|
+
if (result.status === "success") {
|
|
363
|
+
const deadlineDate = new Date(deadline * 1000).toUTCString();
|
|
364
|
+
return formatSuccess(`Task created from '${template}' template. ${pricing.totalEth} ETH locked in escrow.`, {
|
|
365
|
+
template: tmpl.name,
|
|
366
|
+
category: tmpl.category,
|
|
367
|
+
worker,
|
|
368
|
+
client: account,
|
|
369
|
+
payment: `${pricing.totalEth} ETH`,
|
|
370
|
+
priceBreakdown: pricing.breakdown,
|
|
371
|
+
deadline: deadlineDate,
|
|
372
|
+
specificationIpfs: descriptionHash,
|
|
373
|
+
status: "Funded",
|
|
374
|
+
outputFormat: tmpl.outputFormat,
|
|
375
|
+
verificationChecks: tmpl.verification,
|
|
376
|
+
parameters: params,
|
|
377
|
+
}, result.txHash, [
|
|
378
|
+
"Worker will execute the task following the template specification.",
|
|
379
|
+
"Wait for worker to call corven_submit_work with your taskId.",
|
|
380
|
+
"Then call corven_verify_task to release payment after reviewing work.",
|
|
381
|
+
`Verification checks: ${tmpl.verification.join(", ")}`,
|
|
382
|
+
]);
|
|
383
|
+
}
|
|
384
|
+
return formatTxResult(result);
|
|
385
|
+
}
|
|
386
|
+
catch (e) {
|
|
387
|
+
const parsed = parseContractError(e);
|
|
388
|
+
return formatStructuredError(parsed.error, parsed.cause, parsed.fix, parsed.retryable);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/tools/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/tools/training.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiCzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqU7D"}
|