@agent-receipts/dashboard 0.2.6 → 0.2.8
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/package.json +1 -1
- package/standalone/apps/web/.env.production +2 -0
- package/standalone/apps/web/.next/BUILD_ID +1 -1
- package/standalone/apps/web/.next/app-build-manifest.json +47 -47
- package/standalone/apps/web/.next/app-path-routes-manifest.json +11 -11
- package/standalone/apps/web/.next/build-manifest.json +2 -2
- package/standalone/apps/web/.next/prerender-manifest.json +24 -24
- package/standalone/apps/web/.next/required-server-files.json +3 -1
- package/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/_not-found.html +2 -2
- package/standalone/apps/web/.next/server/app/_not-found.rsc +3 -3
- package/standalone/apps/web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/agents/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/agents.html +2 -2
- package/standalone/apps/web/.next/server/app/agents.rsc +3 -3
- package/standalone/apps/web/.next/server/app/api/agents/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/agents/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/chains/[id]/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/cleanup/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/config/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/invoices/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/judgments/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/[id]/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/receipts/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/search/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/stats/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route.js +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route.js.nft.json +1 -1
- package/standalone/apps/web/.next/server/app/api/verify/route_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/chains.html +2 -2
- package/standalone/apps/web/.next/server/app/chains.rsc +4 -4
- package/standalone/apps/web/.next/server/app/constraints/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/constraints.html +2 -2
- package/standalone/apps/web/.next/server/app/constraints.rsc +4 -4
- package/standalone/apps/web/.next/server/app/index.html +2 -2
- package/standalone/apps/web/.next/server/app/index.rsc +3 -3
- package/standalone/apps/web/.next/server/app/invoices/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/invoices.html +2 -2
- package/standalone/apps/web/.next/server/app/invoices.rsc +3 -3
- package/standalone/apps/web/.next/server/app/judgments/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/judgments.html +2 -2
- package/standalone/apps/web/.next/server/app/judgments.rsc +4 -4
- package/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/[id]/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/page.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/receipts.html +2 -2
- package/standalone/apps/web/.next/server/app/receipts.rsc +4 -4
- package/standalone/apps/web/.next/server/app/settings/page.js +1 -1
- package/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/settings.html +2 -2
- package/standalone/apps/web/.next/server/app/settings.rsc +4 -4
- package/standalone/apps/web/.next/server/app/verify/page_client-reference-manifest.js +1 -1
- package/standalone/apps/web/.next/server/app/verify.html +2 -2
- package/standalone/apps/web/.next/server/app/verify.rsc +3 -3
- package/standalone/apps/web/.next/server/app-paths-manifest.json +11 -11
- package/standalone/apps/web/.next/server/chunks/236.js +1 -0
- package/standalone/apps/web/.next/server/chunks/578.js +1 -0
- package/standalone/apps/web/.next/server/chunks/798.js +1 -0
- package/standalone/apps/web/.next/server/chunks/803.js +189 -0
- package/standalone/apps/web/.next/server/chunks/870.js +2 -2
- package/standalone/apps/web/.next/server/chunks/872.js +1 -0
- package/standalone/apps/web/.next/server/chunks/99.js +1 -0
- package/standalone/apps/web/.next/server/pages/404.html +2 -2
- package/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/standalone/apps/web/.next/server/pages/_error.js +2 -2
- package/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/standalone/apps/web/.next/static/chunks/app/agents/[id]/{page-6072c54c4f907f32.js → page-c0e1718cad311434.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/chains/{page-69ef1e730d961039.js → page-d0b634ca7d0aa92d.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/constraints/{page-05d35b57f9c424db.js → page-6baf6f176d4a9e3d.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/judgments/{page-9715df3ce30f24c0.js → page-22c741e87fc41908.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/layout-53a87fc182f46ce0.js +1 -0
- package/standalone/apps/web/.next/static/chunks/app/receipts/{page-a788cdbaf3879d37.js → page-ef79c1140a9c42e6.js} +1 -1
- package/standalone/apps/web/.next/static/chunks/app/settings/{page-154ca65062c2628d.js → page-8f1d3f326821cc04.js} +1 -1
- package/standalone/apps/web/.next/static/css/{acaddf5367ce801c.css → c89a04ca9481014a.css} +1 -1
- package/standalone/apps/web/server.js +1 -1
- package/standalone/apps/web/src/lib/demo-store.ts +121 -0
- package/standalone/apps/web/src/lib/sdk-server.ts +46 -0
- package/standalone/packages/crypto/package.json +1 -1
- package/standalone/packages/mcp-server/dist/index.js +1738 -0
- package/standalone/packages/mcp-server/package.json +4 -2
- package/standalone/apps/web/.next/server/chunks/350.js +0 -134
- package/standalone/apps/web/.next/server/chunks/998.js +0 -1
- package/standalone/apps/web/.next/static/chunks/app/layout-66d4997939026d7c.js +0 -1
- /package/standalone/apps/web/.next/static/{XRffp10LMCCMingivp622 → QFwgmBDt10h_GclOFqIUT}/_buildManifest.js +0 -0
- /package/standalone/apps/web/.next/static/{XRffp10LMCCMingivp622 → QFwgmBDt10h_GclOFqIUT}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { DEMO_RECEIPTS, DEMO_PUBLIC_KEY, DEMO_CONFIG } from './demo-data'
|
|
2
|
+
import type { ActionReceipt } from '@agent-receipts/schema'
|
|
3
|
+
|
|
4
|
+
interface PaginatedResult<T> {
|
|
5
|
+
data: T[]
|
|
6
|
+
pagination: {
|
|
7
|
+
page: number
|
|
8
|
+
limit: number
|
|
9
|
+
total: number
|
|
10
|
+
total_pages: number
|
|
11
|
+
has_next: boolean
|
|
12
|
+
has_prev: boolean
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface DemoFilter {
|
|
17
|
+
agent_id?: string
|
|
18
|
+
action?: string
|
|
19
|
+
status?: string
|
|
20
|
+
environment?: string
|
|
21
|
+
receipt_type?: string
|
|
22
|
+
chain_id?: string
|
|
23
|
+
parent_receipt_id?: string
|
|
24
|
+
tag?: string
|
|
25
|
+
from?: string
|
|
26
|
+
to?: string
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export class DemoStore {
|
|
30
|
+
private receipts = DEMO_RECEIPTS
|
|
31
|
+
|
|
32
|
+
async list(
|
|
33
|
+
filter?: DemoFilter,
|
|
34
|
+
page = 1,
|
|
35
|
+
limit = 50,
|
|
36
|
+
sort = 'timestamp:desc'
|
|
37
|
+
): Promise<PaginatedResult<ActionReceipt>> {
|
|
38
|
+
let filtered = [...this.receipts]
|
|
39
|
+
|
|
40
|
+
if (filter) {
|
|
41
|
+
if (filter.agent_id) filtered = filtered.filter(r => r.agent_id === filter.agent_id)
|
|
42
|
+
if (filter.action) filtered = filtered.filter(r => r.action === filter.action)
|
|
43
|
+
if (filter.status) filtered = filtered.filter(r => r.status === filter.status)
|
|
44
|
+
if (filter.environment) filtered = filtered.filter(r => r.environment === filter.environment)
|
|
45
|
+
if (filter.receipt_type) filtered = filtered.filter(r => r.receipt_type === filter.receipt_type)
|
|
46
|
+
if (filter.chain_id) filtered = filtered.filter(r => r.chain_id === filter.chain_id)
|
|
47
|
+
if (filter.parent_receipt_id) filtered = filtered.filter(r => r.parent_receipt_id === filter.parent_receipt_id)
|
|
48
|
+
if (filter.tag) filtered = filtered.filter(r => r.tags?.includes(filter.tag!))
|
|
49
|
+
if (filter.from) filtered = filtered.filter(r => r.timestamp >= filter.from!)
|
|
50
|
+
if (filter.to) filtered = filtered.filter(r => r.timestamp <= filter.to!)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const [sortField, sortDir] = sort.split(':')
|
|
54
|
+
const col = sortField === 'created_at' ? 'timestamp' : sortField!
|
|
55
|
+
filtered.sort((a, b) => {
|
|
56
|
+
const aVal = (a as Record<string, unknown>)[col] ?? ''
|
|
57
|
+
const bVal = (b as Record<string, unknown>)[col] ?? ''
|
|
58
|
+
const cmp = aVal < bVal ? -1 : aVal > bVal ? 1 : 0
|
|
59
|
+
return sortDir === 'asc' ? cmp : -cmp
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
const total = filtered.length
|
|
63
|
+
const total_pages = Math.max(1, Math.ceil(total / limit))
|
|
64
|
+
const offset = (page - 1) * limit
|
|
65
|
+
const data = filtered.slice(offset, offset + limit)
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
data,
|
|
69
|
+
pagination: {
|
|
70
|
+
page,
|
|
71
|
+
limit,
|
|
72
|
+
total,
|
|
73
|
+
total_pages,
|
|
74
|
+
has_next: page < total_pages,
|
|
75
|
+
has_prev: page > 1,
|
|
76
|
+
},
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
async get(receiptId: string): Promise<ActionReceipt | null> {
|
|
81
|
+
return this.receipts.find(r => r.receipt_id === receiptId) ?? null
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
async exists(receiptId: string): Promise<boolean> {
|
|
85
|
+
return this.receipts.some(r => r.receipt_id === receiptId)
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
async getChain(chainId: string): Promise<ActionReceipt[]> {
|
|
89
|
+
return this.receipts
|
|
90
|
+
.filter(r => r.chain_id === chainId)
|
|
91
|
+
.sort((a, b) => a.timestamp.localeCompare(b.timestamp))
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async count(filter?: DemoFilter): Promise<number> {
|
|
95
|
+
if (!filter) return this.receipts.length
|
|
96
|
+
const result = await this.list(filter, 1, 1)
|
|
97
|
+
return result.pagination.total
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
async delete(_receiptId: string): Promise<boolean> {
|
|
101
|
+
return false // Demo mode: no-op
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
async cleanup(): Promise<{ deleted: number; total: number }> {
|
|
105
|
+
return { deleted: 0, total: this.receipts.length } // Demo mode: no-op
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getPublicKey(): string {
|
|
109
|
+
return DEMO_PUBLIC_KEY
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
getConfig() {
|
|
113
|
+
return { ...DEMO_CONFIG }
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
async update(_partial: Record<string, unknown>): Promise<void> {
|
|
117
|
+
// Demo mode: no-op
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
export const demoStore = new DemoStore()
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AgentReceipts } from '@agent-receipts/sdk'
|
|
2
|
+
import { ReceiptStore, KeyManager, ConfigManager } from '@agent-receipts/mcp-server'
|
|
3
|
+
|
|
4
|
+
let sdkInstance: AgentReceipts | null = null
|
|
5
|
+
let storeInstance: ReceiptStore | null = null
|
|
6
|
+
let keyManagerInstance: KeyManager | null = null
|
|
7
|
+
let configManagerInstance: ConfigManager | null = null
|
|
8
|
+
|
|
9
|
+
function getDataDir(): string {
|
|
10
|
+
return process.env.AGENT_RECEIPTS_DATA_DIR ?? ConfigManager.getDefaultDataDir()
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function getSDK(): AgentReceipts {
|
|
14
|
+
if (!sdkInstance) {
|
|
15
|
+
sdkInstance = new AgentReceipts({
|
|
16
|
+
dataDir: process.env.AGENT_RECEIPTS_DATA_DIR || undefined,
|
|
17
|
+
})
|
|
18
|
+
}
|
|
19
|
+
return sdkInstance
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export async function getStore(): Promise<ReceiptStore> {
|
|
23
|
+
if (!storeInstance) {
|
|
24
|
+
storeInstance = new ReceiptStore(getDataDir())
|
|
25
|
+
await storeInstance.init()
|
|
26
|
+
}
|
|
27
|
+
return storeInstance
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export async function getKeyManager(): Promise<KeyManager> {
|
|
31
|
+
if (!keyManagerInstance) {
|
|
32
|
+
keyManagerInstance = new KeyManager(getDataDir())
|
|
33
|
+
await keyManagerInstance.init()
|
|
34
|
+
}
|
|
35
|
+
return keyManagerInstance
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export async function getConfigManager(): Promise<ConfigManager> {
|
|
39
|
+
if (!configManagerInstance) {
|
|
40
|
+
configManagerInstance = new ConfigManager(getDataDir())
|
|
41
|
+
await configManagerInstance.init()
|
|
42
|
+
}
|
|
43
|
+
return configManagerInstance
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { getDataDir }
|