ai2ai-assertion-marketplace 1.0.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/LICENSE +21 -0
- package/README.md +120 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +207 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/src/api/rest.d.ts +4 -0
- package/dist/src/api/rest.d.ts.map +1 -0
- package/dist/src/api/rest.js +191 -0
- package/dist/src/api/rest.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +35 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/marketplace/marketplace.d.ts +6 -0
- package/dist/src/marketplace/marketplace.d.ts.map +1 -0
- package/dist/src/marketplace/marketplace.js +72 -0
- package/dist/src/marketplace/marketplace.js.map +1 -0
- package/dist/src/mcp/entry.d.ts +3 -0
- package/dist/src/mcp/entry.d.ts.map +1 -0
- package/dist/src/mcp/entry.js +7 -0
- package/dist/src/mcp/entry.js.map +1 -0
- package/dist/src/mcp/server.d.ts +2 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +346 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/registry/attestations.d.ts +25 -0
- package/dist/src/registry/attestations.d.ts.map +1 -0
- package/dist/src/registry/attestations.js +200 -0
- package/dist/src/registry/attestations.js.map +1 -0
- package/dist/src/registry/database.d.ts +5 -0
- package/dist/src/registry/database.d.ts.map +1 -0
- package/dist/src/registry/database.js +112 -0
- package/dist/src/registry/database.js.map +1 -0
- package/dist/src/registry/verifiers.d.ts +18 -0
- package/dist/src/registry/verifiers.d.ts.map +1 -0
- package/dist/src/registry/verifiers.js +129 -0
- package/dist/src/registry/verifiers.js.map +1 -0
- package/dist/src/types/index.d.ts +184 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +46 -0
- package/dist/src/types/index.js.map +1 -0
- package/package.json +87 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Colby Eggleston
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# AI2AI Assertion Marketplace
|
|
2
|
+
|
|
3
|
+
**Buy and sell verified attestations between AI agents. Eliminate redundant compute.**
|
|
4
|
+
|
|
5
|
+
## What This Is
|
|
6
|
+
|
|
7
|
+
Every AI pipeline re-runs expensive verification work someone already paid for. Deepfake detection, identity verification, document validation, fact-checking — same compute, same result, repeated millions of times.
|
|
8
|
+
|
|
9
|
+
This marketplace lets the first verifier sell their result to every subsequent agent that needs it. One expensive compute run, sold at a fraction of a cent per query, earns royalties forever.
|
|
10
|
+
|
|
11
|
+
For agents, it's the difference between burning tokens on redundant verification and paying a micro-fee for an already-computed, reputation-backed result.
|
|
12
|
+
|
|
13
|
+
## How Agents Discover It
|
|
14
|
+
|
|
15
|
+
### MCP Server (Model Context Protocol)
|
|
16
|
+
Agents using MCP-compatible clients (Claude, Cursor, etc.) discover this marketplace as a tool at boot:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"mcpServers": {
|
|
21
|
+
"ai2ai-marketplace": {
|
|
22
|
+
"command": "npx",
|
|
23
|
+
"args": ["tsx", "src/mcp/entry.ts"],
|
|
24
|
+
"cwd": "/path/to/ai2ai-assertion-marketplace"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### REST API
|
|
31
|
+
Direct integration for LangChain, crewAI, Mastra, or any HTTP-capable agent:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
GET /stats Marketplace statistics
|
|
35
|
+
GET /attestations?type=&... Query attestations
|
|
36
|
+
POST /attestations Submit new attestation
|
|
37
|
+
GET /attestations/:id Get attestation
|
|
38
|
+
POST /attestations/:id/purchase Purchase attestation
|
|
39
|
+
POST /attestations/:id/dispute Dispute attestation
|
|
40
|
+
GET /verifiers List verifiers
|
|
41
|
+
POST /verifiers Register verifier
|
|
42
|
+
POST /verifiers/:id/stake Add stake
|
|
43
|
+
POST /verifiers/:id/slash Slash verifier
|
|
44
|
+
GET /transactions Recent transactions
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### npm Package
|
|
48
|
+
```bash
|
|
49
|
+
npm install ai2ai-assertion-marketplace
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { queryAttestations, purchaseAttestation, submitAttestation } from 'ai2ai-assertion-marketplace';
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Architecture
|
|
57
|
+
|
|
58
|
+
### Economic Model
|
|
59
|
+
- **Marketplace fee:** 10% per transaction
|
|
60
|
+
- **Verifier royalty:** Configurable per-attestation royalty on every access
|
|
61
|
+
- **Staking:** Verifiers stake tokens as collateral against bad attestations
|
|
62
|
+
- **Slashing:** Disputed attestations reduce verifier reputation and stake
|
|
63
|
+
- **Reputation:** 1000-point scale, decays with disputes, grows with successful attestations
|
|
64
|
+
|
|
65
|
+
### Attestation Types
|
|
66
|
+
- `content-authenticity` — Is this content AI-generated?
|
|
67
|
+
- `identity-verification` — Is this person who they claim to be?
|
|
68
|
+
- `document-validation` — Is this document legitimate?
|
|
69
|
+
- `deepfake-detection` — Is this media manipulated?
|
|
70
|
+
- `code-audit` — Has this code been audited?
|
|
71
|
+
- `fact-check` — Is this claim verified?
|
|
72
|
+
- `custom` — Any other verification
|
|
73
|
+
|
|
74
|
+
### Subject Hashing
|
|
75
|
+
All attestations are indexed by SHA-256 hash of their subject. Agents query by hash to find existing verifications before running their own.
|
|
76
|
+
|
|
77
|
+
## Quick Start
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Install
|
|
81
|
+
npm install
|
|
82
|
+
|
|
83
|
+
# Seed demo data (3 verifiers, 5 attestations)
|
|
84
|
+
npm run db:seed
|
|
85
|
+
|
|
86
|
+
# Start the REST API
|
|
87
|
+
npm run api
|
|
88
|
+
|
|
89
|
+
# Query attestations via CLI
|
|
90
|
+
npm run cli -- query --type deepfake-detection
|
|
91
|
+
|
|
92
|
+
# View marketplace stats
|
|
93
|
+
npm run cli -- stats
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Configuration
|
|
97
|
+
|
|
98
|
+
Copy `.env.example` to `.env` and configure:
|
|
99
|
+
|
|
100
|
+
| Variable | Default | Description |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| `PORT` | 3099 | REST API port |
|
|
103
|
+
| `DATABASE_PATH` | ./data/marketplace.db | SQLite database path |
|
|
104
|
+
| `MARKETPLACE_FEE_PERCENT` | 10 | Fee percentage per transaction |
|
|
105
|
+
| `MAX_ATTESTATION_AGE` | 7776000 | Max attestation age before expiry (90 days) |
|
|
106
|
+
|
|
107
|
+
## Distribution Channels
|
|
108
|
+
|
|
109
|
+
| Channel | Status | Reach |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| MCP Server | Active | All MCP-compatible agents |
|
|
112
|
+
| REST API | Active | All HTTP-capable agents |
|
|
113
|
+
| npm Package | Active | Node.js ecosystem |
|
|
114
|
+
| A2A Agent Card | Available | Google A2A agents |
|
|
115
|
+
| LangChain Tool | Available | LangChain ecosystem |
|
|
116
|
+
| On-chain Registry | Planned | Smart contract verifier discovery |
|
|
117
|
+
|
|
118
|
+
## License
|
|
119
|
+
|
|
120
|
+
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli/cli.js
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { getDatabase, resetDatabase } from '../src/registry/database.js';
|
|
4
|
+
import { registerVerifier, listVerifiers } from '../src/registry/verifiers.js';
|
|
5
|
+
import { submitAttestation, queryAttestations, getAttestation } from '../src/registry/attestations.js';
|
|
6
|
+
import { getMarketplaceStats } from '../src/marketplace/marketplace.js';
|
|
7
|
+
const program = new Command();
|
|
8
|
+
program
|
|
9
|
+
.name('ai2ai')
|
|
10
|
+
.description('AI2AI Assertion Marketplace CLI')
|
|
11
|
+
.version('1.0.0');
|
|
12
|
+
// --- Database ---
|
|
13
|
+
program
|
|
14
|
+
.command('db-init')
|
|
15
|
+
.description('Initialize the database schema')
|
|
16
|
+
.action(() => {
|
|
17
|
+
getDatabase();
|
|
18
|
+
console.log('Database initialized at data/marketplace.db');
|
|
19
|
+
});
|
|
20
|
+
program
|
|
21
|
+
.command('db-reset')
|
|
22
|
+
.description('Reset the database (WARNING: deletes all data)')
|
|
23
|
+
.action(() => {
|
|
24
|
+
resetDatabase();
|
|
25
|
+
console.log('Database reset complete');
|
|
26
|
+
});
|
|
27
|
+
program
|
|
28
|
+
.command('db-seed')
|
|
29
|
+
.description('Seed the database with demo data')
|
|
30
|
+
.action(() => {
|
|
31
|
+
getDatabase();
|
|
32
|
+
const v1 = registerVerifier({
|
|
33
|
+
name: 'DeepTrust Verify',
|
|
34
|
+
endpoint: 'https://deeptrust.example/verify',
|
|
35
|
+
publicKey: 'ed25519:abc123def456',
|
|
36
|
+
initialStake: 10000,
|
|
37
|
+
});
|
|
38
|
+
const v2 = registerVerifier({
|
|
39
|
+
name: 'FactCheck AI',
|
|
40
|
+
endpoint: 'https://factcheck.example/verify',
|
|
41
|
+
publicKey: 'ed25519:ghi789jkl012',
|
|
42
|
+
initialStake: 5000,
|
|
43
|
+
});
|
|
44
|
+
const v3 = registerVerifier({
|
|
45
|
+
name: 'IdentityGuard',
|
|
46
|
+
endpoint: 'https://idguard.example/verify',
|
|
47
|
+
publicKey: 'ed25519:mno345pqr678',
|
|
48
|
+
initialStake: 25000,
|
|
49
|
+
});
|
|
50
|
+
submitAttestation({
|
|
51
|
+
type: 'deepfake-detection',
|
|
52
|
+
subject: 'https://example.com/video/political-rally.mp4',
|
|
53
|
+
result: JSON.stringify({
|
|
54
|
+
isDeepfake: false,
|
|
55
|
+
manipulationDetected: false,
|
|
56
|
+
analysisMethod: 'ensemble-cnn-transformer',
|
|
57
|
+
frameAnalysis: 'all-frames',
|
|
58
|
+
}),
|
|
59
|
+
resultSummary: 'Video is authentic, no deepfake manipulation detected with 0.97 confidence',
|
|
60
|
+
confidence: 0.97,
|
|
61
|
+
verifierId: v1.id,
|
|
62
|
+
price: 0.50,
|
|
63
|
+
royaltyPerAccess: 0.05,
|
|
64
|
+
expiresInSeconds: 86400 * 30,
|
|
65
|
+
metadata: { fileSize: '250MB', duration: '3m42s', format: 'mp4' },
|
|
66
|
+
});
|
|
67
|
+
submitAttestation({
|
|
68
|
+
type: 'deepfake-detection',
|
|
69
|
+
subject: 'https://example.com/video/celebrity-speech.mp4',
|
|
70
|
+
result: JSON.stringify({
|
|
71
|
+
isDeepfake: true,
|
|
72
|
+
manipulationDetected: true,
|
|
73
|
+
manipulationType: 'face-swap',
|
|
74
|
+
confidenceBreakdown: { faceSwap: 0.94, voiceSynthesis: 0.12 },
|
|
75
|
+
}),
|
|
76
|
+
resultSummary: 'Deepfake detected: face-swap manipulation with 0.94 confidence',
|
|
77
|
+
confidence: 0.94,
|
|
78
|
+
verifierId: v1.id,
|
|
79
|
+
price: 0.75,
|
|
80
|
+
royaltyPerAccess: 0.07,
|
|
81
|
+
expiresInSeconds: null,
|
|
82
|
+
metadata: { fileSize: '180MB', duration: '2m15s', format: 'mp4' },
|
|
83
|
+
});
|
|
84
|
+
submitAttestation({
|
|
85
|
+
type: 'fact-check',
|
|
86
|
+
subject: 'Statement: "Global temperatures have risen 2.5C since 1880"',
|
|
87
|
+
result: JSON.stringify({
|
|
88
|
+
claim: 'Global temperatures have risen 2.5C since 1880',
|
|
89
|
+
verdict: 'mostly-true',
|
|
90
|
+
actualRise: 'approximately 1.2C per NASA/NOAA data',
|
|
91
|
+
sources: ['NASA GISS', 'NOAA GlobalTemp', 'IPCC AR6'],
|
|
92
|
+
correction: 'The rise is approximately 1.2C, not 2.5C',
|
|
93
|
+
}),
|
|
94
|
+
resultSummary: 'Mostly true but overstated: actual rise is ~1.2C, not 2.5C',
|
|
95
|
+
confidence: 0.92,
|
|
96
|
+
verifierId: v2.id,
|
|
97
|
+
price: 0.10,
|
|
98
|
+
royaltyPerAccess: 0.01,
|
|
99
|
+
expiresInSeconds: 86400 * 90,
|
|
100
|
+
metadata: { topic: 'climate', sources: 3 },
|
|
101
|
+
});
|
|
102
|
+
submitAttestation({
|
|
103
|
+
type: 'identity-verification',
|
|
104
|
+
subject: 'email:john.doe@example.com',
|
|
105
|
+
result: JSON.stringify({
|
|
106
|
+
verified: true,
|
|
107
|
+
domainValidated: true,
|
|
108
|
+
mailboxExists: true,
|
|
109
|
+
disposable: false,
|
|
110
|
+
riskScore: 0.02,
|
|
111
|
+
}),
|
|
112
|
+
resultSummary: 'Email identity verified: valid, non-disposable, low risk',
|
|
113
|
+
confidence: 0.99,
|
|
114
|
+
verifierId: v3.id,
|
|
115
|
+
price: 0.05,
|
|
116
|
+
royaltyPerAccess: 0.005,
|
|
117
|
+
expiresInSeconds: null,
|
|
118
|
+
metadata: { provider: 'gmail', verificationMethod: 'smtp-check' },
|
|
119
|
+
});
|
|
120
|
+
submitAttestation({
|
|
121
|
+
type: 'document-validation',
|
|
122
|
+
subject: 'hash:sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
|
123
|
+
result: JSON.stringify({
|
|
124
|
+
valid: true,
|
|
125
|
+
documentType: 'legal-contract',
|
|
126
|
+
signatureValid: true,
|
|
127
|
+
notarized: true,
|
|
128
|
+
jurisdiction: 'US-GA',
|
|
129
|
+
}),
|
|
130
|
+
resultSummary: 'Legal document validated: signatures authentic, properly notarized in GA',
|
|
131
|
+
confidence: 0.95,
|
|
132
|
+
verifierId: v3.id,
|
|
133
|
+
price: 2.00,
|
|
134
|
+
royaltyPerAccess: 0.20,
|
|
135
|
+
expiresInSeconds: null,
|
|
136
|
+
metadata: { pages: 12, signatories: 3, date: '2025-03-15' },
|
|
137
|
+
});
|
|
138
|
+
console.log('Seeded database with 3 verifiers and 5 attestations');
|
|
139
|
+
console.log(` Verifiers: ${v1.name}, ${v2.name}, ${v3.name}`);
|
|
140
|
+
console.log(' 5 attestations across deepfake-detection, fact-check, identity-verification, document-validation');
|
|
141
|
+
});
|
|
142
|
+
// --- Query ---
|
|
143
|
+
program
|
|
144
|
+
.command('query')
|
|
145
|
+
.description('Query attestations')
|
|
146
|
+
.option('--type <type>', 'Attestation type')
|
|
147
|
+
.option('--subject <subject>', 'Subject to search')
|
|
148
|
+
.option('--hash <hash>', 'Subject hash')
|
|
149
|
+
.option('--verifier <id>', 'Verifier ID')
|
|
150
|
+
.option('--min-confidence <n>', 'Minimum confidence')
|
|
151
|
+
.option('--max-price <n>', 'Maximum price')
|
|
152
|
+
.option('--limit <n>', 'Result limit', '50')
|
|
153
|
+
.action((opts) => {
|
|
154
|
+
const limit = parseInt(opts.limit) || 50;
|
|
155
|
+
const minConf = opts.minConfidence ? parseFloat(opts.minConfidence) : undefined;
|
|
156
|
+
const maxPr = opts.maxPrice ? parseFloat(opts.maxPrice) : undefined;
|
|
157
|
+
const result = queryAttestations({
|
|
158
|
+
type: opts.type,
|
|
159
|
+
subject: opts.subject,
|
|
160
|
+
subjectHash: opts.hash,
|
|
161
|
+
verifierId: opts.verifier,
|
|
162
|
+
minConfidence: minConf,
|
|
163
|
+
maxPrice: maxPr,
|
|
164
|
+
limit,
|
|
165
|
+
});
|
|
166
|
+
console.log(JSON.stringify(result, null, 2));
|
|
167
|
+
});
|
|
168
|
+
// --- Verifiers ---
|
|
169
|
+
program
|
|
170
|
+
.command('verifiers')
|
|
171
|
+
.description('List active verifiers')
|
|
172
|
+
.action(() => {
|
|
173
|
+
const verifiers = listVerifiers(true);
|
|
174
|
+
if (verifiers.length === 0) {
|
|
175
|
+
console.log('No verifiers registered. Run `ai2ai db-seed` to add demo data.');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
console.log(`\nActive Verifiers (${verifiers.length}):\n`);
|
|
179
|
+
verifiers.forEach((v) => {
|
|
180
|
+
console.log(` ${v.name} (${v.id.slice(0, 8)}...)`);
|
|
181
|
+
console.log(` Reputation: ${v.reputationScore.toFixed(1)} | Stake: ${v.stakedAmount}`);
|
|
182
|
+
console.log(` Attestations: ${v.totalAttestations} | Disputes: ${v.disputedAttestations}`);
|
|
183
|
+
console.log(` Registered: ${v.registeredAt}\n`);
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
// --- Stats ---
|
|
187
|
+
program
|
|
188
|
+
.command('stats')
|
|
189
|
+
.description('Show marketplace statistics')
|
|
190
|
+
.action(() => {
|
|
191
|
+
const stats = getMarketplaceStats();
|
|
192
|
+
console.log(JSON.stringify(stats, null, 2));
|
|
193
|
+
});
|
|
194
|
+
// --- Get attestation ---
|
|
195
|
+
program
|
|
196
|
+
.command('get <id>')
|
|
197
|
+
.description('Get an attestation by ID')
|
|
198
|
+
.action((id) => {
|
|
199
|
+
const a = getAttestation(id);
|
|
200
|
+
if (!a) {
|
|
201
|
+
console.log('Attestation not found');
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
console.log(JSON.stringify(a, null, 2));
|
|
205
|
+
});
|
|
206
|
+
program.parse();
|
|
207
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../../src/api/rest.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAiC9B,wBAAgB,SAAS,IAAI,OAAO,CAAC,OAAO,CAqL3C;AAED,wBAAgB,QAAQ,CAAC,IAAI,SAAO,GAAG,IAAI,CAiB1C"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import cors from 'cors';
|
|
3
|
+
import { submitAttestation, queryAttestations, purchaseAttestation, getAttestation, disputeAttestation, hashSubject, getAttestationsByVerifier, } from '../registry/attestations.js';
|
|
4
|
+
import { registerVerifier, getVerifier, listVerifiers, stake, slash, updateReputation, getTopVerifiers, getStakingHistory, } from '../registry/verifiers.js';
|
|
5
|
+
import { getMarketplaceStats, getRecentTransactions, getBuyerHistory, } from '../marketplace/marketplace.js';
|
|
6
|
+
import { AttestationSubmissionSchema, VerifierRegistrationSchema, AttestationQuerySchema, DisputeSchema, } from '../types/index.js';
|
|
7
|
+
export function createAPI() {
|
|
8
|
+
const app = express();
|
|
9
|
+
app.use(cors());
|
|
10
|
+
app.use(express.json());
|
|
11
|
+
app.get('/health', (_req, res) => {
|
|
12
|
+
res.json({ status: 'ok', marketplace: 'ai2ai-assertion-marketplace' });
|
|
13
|
+
});
|
|
14
|
+
app.get('/stats', (_req, res) => {
|
|
15
|
+
res.json(getMarketplaceStats());
|
|
16
|
+
});
|
|
17
|
+
// --- Attestations ---
|
|
18
|
+
app.get('/attestations', (req, res) => {
|
|
19
|
+
try {
|
|
20
|
+
const validated = AttestationQuerySchema.parse(req.query);
|
|
21
|
+
res.json(queryAttestations(validated));
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
res.status(400).json({ error: String(err) });
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
app.get('/attestations/:id', (req, res) => {
|
|
28
|
+
const a = getAttestation(req.params.id);
|
|
29
|
+
if (!a) {
|
|
30
|
+
res.status(404).json({ error: 'Not found' });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
res.json(a);
|
|
34
|
+
});
|
|
35
|
+
app.post('/attestations', (req, res) => {
|
|
36
|
+
try {
|
|
37
|
+
const validated = AttestationSubmissionSchema.parse(req.body);
|
|
38
|
+
const { verifierId, ...rest } = validated;
|
|
39
|
+
const verifier = getVerifier(verifierId);
|
|
40
|
+
if (!verifier) {
|
|
41
|
+
res.status(404).json({ error: `Verifier not found: ${verifierId}` });
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!verifier.active) {
|
|
45
|
+
res.status(403).json({ error: `Verifier is inactive: ${verifierId}` });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const attestation = submitAttestation({ ...rest, verifierId });
|
|
49
|
+
res.status(201).json(attestation);
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
res.status(400).json({ error: String(err) });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
app.post('/attestations/:id/purchase', (req, res) => {
|
|
56
|
+
try {
|
|
57
|
+
const { buyerId } = req.body;
|
|
58
|
+
if (!buyerId) {
|
|
59
|
+
res.status(400).json({ error: 'buyerId required' });
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const result = purchaseAttestation(req.params.id, buyerId);
|
|
63
|
+
res.json(result);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
res.status(400).json({ error: String(err) });
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
app.post('/attestations/:id/dispute', (req, res) => {
|
|
70
|
+
try {
|
|
71
|
+
const validated = DisputeSchema.parse({
|
|
72
|
+
attestationId: req.params.id,
|
|
73
|
+
...req.body,
|
|
74
|
+
});
|
|
75
|
+
const updated = disputeAttestation(validated.attestationId, validated.reason);
|
|
76
|
+
res.json(updated);
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
res.status(400).json({ error: String(err) });
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
// --- Verifiers ---
|
|
83
|
+
app.get('/verifiers', (_req, res) => {
|
|
84
|
+
res.json(listVerifiers(true));
|
|
85
|
+
});
|
|
86
|
+
app.get('/verifiers/top', (req, res) => {
|
|
87
|
+
const limit = Number(req.query.limit) || 10;
|
|
88
|
+
res.json(getTopVerifiers(limit));
|
|
89
|
+
});
|
|
90
|
+
app.get('/verifiers/:id', (req, res) => {
|
|
91
|
+
const v = getVerifier(req.params.id);
|
|
92
|
+
if (!v) {
|
|
93
|
+
res.status(404).json({ error: 'Not found' });
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
res.json(v);
|
|
97
|
+
});
|
|
98
|
+
app.post('/verifiers', (req, res) => {
|
|
99
|
+
try {
|
|
100
|
+
const validated = VerifierRegistrationSchema.parse(req.body);
|
|
101
|
+
const verifier = registerVerifier(validated);
|
|
102
|
+
res.status(201).json(verifier);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
res.status(400).json({ error: String(err) });
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
app.get('/verifiers/:id/attestations', (req, res) => {
|
|
109
|
+
const v = getVerifier(req.params.id);
|
|
110
|
+
if (!v) {
|
|
111
|
+
res.status(404).json({ error: 'Not found' });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
res.json(getAttestationsByVerifier(req.params.id));
|
|
115
|
+
});
|
|
116
|
+
app.get('/verifiers/:id/staking-history', (req, res) => {
|
|
117
|
+
const v = getVerifier(req.params.id);
|
|
118
|
+
if (!v) {
|
|
119
|
+
res.status(404).json({ error: 'Not found' });
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
res.json(getStakingHistory(req.params.id));
|
|
123
|
+
});
|
|
124
|
+
app.post('/verifiers/:id/stake', (req, res) => {
|
|
125
|
+
try {
|
|
126
|
+
const { amount } = req.body;
|
|
127
|
+
const v = stake(req.params.id, amount);
|
|
128
|
+
res.json(v);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
res.status(400).json({ error: String(err) });
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
app.post('/verifiers/:id/slash', (req, res) => {
|
|
135
|
+
try {
|
|
136
|
+
const { amount, reason } = req.body;
|
|
137
|
+
const v = slash(req.params.id, amount, reason);
|
|
138
|
+
res.json(v);
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
res.status(400).json({ error: String(err) });
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
app.post('/verifiers/:id/reputation', (req, res) => {
|
|
145
|
+
try {
|
|
146
|
+
const { delta } = req.body;
|
|
147
|
+
const v = updateReputation(req.params.id, delta);
|
|
148
|
+
res.json(v);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
res.status(400).json({ error: String(err) });
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
// --- Transactions ---
|
|
155
|
+
app.get('/transactions', (req, res) => {
|
|
156
|
+
const limit = Number(req.query.limit) || 50;
|
|
157
|
+
res.json(getRecentTransactions(limit));
|
|
158
|
+
});
|
|
159
|
+
app.get('/transactions/:buyerId', (req, res) => {
|
|
160
|
+
res.json(getBuyerHistory(req.params.buyerId));
|
|
161
|
+
});
|
|
162
|
+
// --- Utility ---
|
|
163
|
+
app.post('/hash', (req, res) => {
|
|
164
|
+
const { subject } = req.body;
|
|
165
|
+
if (!subject) {
|
|
166
|
+
res.status(400).json({ error: 'subject required' });
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
res.json({ subject, hash: hashSubject(subject) });
|
|
170
|
+
});
|
|
171
|
+
return app;
|
|
172
|
+
}
|
|
173
|
+
export function startAPI(port = 3099) {
|
|
174
|
+
const app = createAPI();
|
|
175
|
+
app.listen(port, () => {
|
|
176
|
+
console.log(`AI2AI Assertion Marketplace API running on http://localhost:${port}`);
|
|
177
|
+
console.log(` GET /stats Marketplace statistics`);
|
|
178
|
+
console.log(` GET /attestations?type=&... Query attestations`);
|
|
179
|
+
console.log(` POST /attestations Submit new attestation`);
|
|
180
|
+
console.log(` GET /attestations/:id Get attestation`);
|
|
181
|
+
console.log(` POST /attestations/:id/purchase Purchase attestation`);
|
|
182
|
+
console.log(` POST /attestations/:id/dispute Dispute attestation`);
|
|
183
|
+
console.log(` GET /verifiers List verifiers`);
|
|
184
|
+
console.log(` POST /verifiers Register verifier`);
|
|
185
|
+
console.log(` GET /verifiers/:id Get verifier`);
|
|
186
|
+
console.log(` POST /verifiers/:id/stake Add stake`);
|
|
187
|
+
console.log(` POST /verifiers/:id/slash Slash verifier`);
|
|
188
|
+
console.log(` GET /transactions Recent transactions`);
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=rest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../src/api/rest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
import { startAPI } from './api/rest.js';
|
|
3
|
+
const command = process.argv[2];
|
|
4
|
+
switch (command) {
|
|
5
|
+
case 'api':
|
|
6
|
+
startAPI(Number(process.env.PORT) || 3099);
|
|
7
|
+
break;
|
|
8
|
+
case 'mcp':
|
|
9
|
+
console.error('MCP server must be run via the MCP client, not directly.');
|
|
10
|
+
console.error('Configure it in your MCP client settings pointing to:');
|
|
11
|
+
console.error(' npx tsx src/mcp/entry.ts');
|
|
12
|
+
console.error('');
|
|
13
|
+
console.error('Or in opencode.json / claude_desktop_config.json:');
|
|
14
|
+
console.error('{');
|
|
15
|
+
console.error(' "mcpServers": {');
|
|
16
|
+
console.error(' "ai2ai-marketplace": {');
|
|
17
|
+
console.error(` "command": "npx",`);
|
|
18
|
+
console.error(` "args": ["tsx", "src/mcp/entry.ts"],`);
|
|
19
|
+
console.error(` "cwd": "${process.cwd()}"`);
|
|
20
|
+
console.error(' }');
|
|
21
|
+
console.error(' }');
|
|
22
|
+
console.error('}');
|
|
23
|
+
break;
|
|
24
|
+
default:
|
|
25
|
+
console.log('AI2AI Assertion Marketplace');
|
|
26
|
+
console.log('');
|
|
27
|
+
console.log('Usage:');
|
|
28
|
+
console.log(' npm run api Start the REST API server');
|
|
29
|
+
console.log(' npm run mcp MCP server (configure in MCP client)');
|
|
30
|
+
console.log(' npm run cli CLI management tool');
|
|
31
|
+
console.log(' npm run db:seed Seed with demo data');
|
|
32
|
+
console.log('');
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,KAAK;QACR,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3C,MAAM;IACR,KAAK,KAAK;QACR,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM;IACR;QACE,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM;AACV,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MarketplaceStats, Transaction } from '../types/index.js';
|
|
2
|
+
export declare function getMarketplaceStats(): MarketplaceStats;
|
|
3
|
+
export declare function getRecentTransactions(limit?: number): Transaction[];
|
|
4
|
+
export declare function getBuyerHistory(buyerId: string): Transaction[];
|
|
5
|
+
export declare function calculateDynamicPrice(basePrice: number, accessCount: number, verifierReputation: number, daysSinceCreation: number): number;
|
|
6
|
+
//# sourceMappingURL=marketplace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../../src/marketplace/marketplace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAavE,wBAAgB,mBAAmB,IAAI,gBAAgB,CA4CtD;AAED,wBAAgB,qBAAqB,CAAC,KAAK,SAAK,GAAG,WAAW,EAAE,CAgB/D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAgB9D;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,GACxB,MAAM,CAKR"}
|