@pcircle/footprint 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 +80 -0
- package/SKILL.md +355 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +690 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/crypto/decrypt.d.ts +11 -0
- package/dist/lib/crypto/decrypt.d.ts.map +1 -0
- package/dist/lib/crypto/decrypt.js +30 -0
- package/dist/lib/crypto/decrypt.js.map +1 -0
- package/dist/lib/crypto/encrypt.d.ts +13 -0
- package/dist/lib/crypto/encrypt.d.ts.map +1 -0
- package/dist/lib/crypto/encrypt.js +24 -0
- package/dist/lib/crypto/encrypt.js.map +1 -0
- package/dist/lib/crypto/index.d.ts +6 -0
- package/dist/lib/crypto/index.d.ts.map +1 -0
- package/dist/lib/crypto/index.js +5 -0
- package/dist/lib/crypto/index.js.map +1 -0
- package/dist/lib/crypto/key-derivation.d.ts +30 -0
- package/dist/lib/crypto/key-derivation.d.ts.map +1 -0
- package/dist/lib/crypto/key-derivation.js +63 -0
- package/dist/lib/crypto/key-derivation.js.map +1 -0
- package/dist/lib/crypto/types.d.ts +22 -0
- package/dist/lib/crypto/types.d.ts.map +1 -0
- package/dist/lib/crypto/types.js +10 -0
- package/dist/lib/crypto/types.js.map +1 -0
- package/dist/lib/storage/database.d.ts +116 -0
- package/dist/lib/storage/database.d.ts.map +1 -0
- package/dist/lib/storage/database.js +390 -0
- package/dist/lib/storage/database.js.map +1 -0
- package/dist/lib/storage/export.d.ts +26 -0
- package/dist/lib/storage/export.d.ts.map +1 -0
- package/dist/lib/storage/export.js +113 -0
- package/dist/lib/storage/export.js.map +1 -0
- package/dist/lib/storage/git.d.ts +16 -0
- package/dist/lib/storage/git.d.ts.map +1 -0
- package/dist/lib/storage/git.js +55 -0
- package/dist/lib/storage/git.js.map +1 -0
- package/dist/lib/storage/index.d.ts +6 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/storage/index.js +5 -0
- package/dist/lib/storage/index.js.map +1 -0
- package/dist/lib/storage/schema.d.ts +17 -0
- package/dist/lib/storage/schema.d.ts.map +1 -0
- package/dist/lib/storage/schema.js +103 -0
- package/dist/lib/storage/schema.js.map +1 -0
- package/dist/lib/storage/types.d.ts +26 -0
- package/dist/lib/storage/types.d.ts.map +1 -0
- package/dist/lib/storage/types.js +2 -0
- package/dist/lib/storage/types.js.map +1 -0
- package/dist/test-helpers.d.ts +33 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +108 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/dashboard.html +965 -0
- package/dist/ui/detail.html +348 -0
- package/dist/ui/export.html +409 -0
- package/dist/ui/register.d.ts +7 -0
- package/dist/ui/register.d.ts.map +1 -0
- package/dist/ui/register.js +154 -0
- package/dist/ui/register.js.map +1 -0
- package/dist/ui-tmp/ui/export.html +409 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/ui/register.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS;;;;EAiLpD"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { registerAppResource, RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const DIST_DIR = path.join(import.meta.dirname, "../../dist/ui");
|
|
5
|
+
export function registerUIResources(server) {
|
|
6
|
+
const dashboardUri = "ui://footprint/dashboard.html";
|
|
7
|
+
const detailUri = "ui://footprint/detail.html";
|
|
8
|
+
const exportUri = "ui://footprint/export.html";
|
|
9
|
+
// Register the dashboard UI resource
|
|
10
|
+
registerAppResource(server, dashboardUri, dashboardUri, { mimeType: RESOURCE_MIME_TYPE }, async () => {
|
|
11
|
+
try {
|
|
12
|
+
const htmlPath = path.join(DIST_DIR, "dashboard.html");
|
|
13
|
+
const html = await fs.readFile(htmlPath, "utf-8");
|
|
14
|
+
return {
|
|
15
|
+
contents: [{
|
|
16
|
+
uri: dashboardUri,
|
|
17
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
18
|
+
text: html,
|
|
19
|
+
}],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error("Failed to load dashboard.html:", error);
|
|
24
|
+
// Fallback HTML if the built file doesn't exist
|
|
25
|
+
const fallbackHtml = `
|
|
26
|
+
<!DOCTYPE html>
|
|
27
|
+
<html lang="en">
|
|
28
|
+
<head>
|
|
29
|
+
<meta charset="UTF-8">
|
|
30
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
31
|
+
<title>EvidenceMCP Dashboard</title>
|
|
32
|
+
<style>
|
|
33
|
+
body { font-family: system-ui; padding: 2rem; text-align: center; }
|
|
34
|
+
.error { color: #ef4444; background: #fef2f2; padding: 1rem; border-radius: 8px; }
|
|
35
|
+
</style>
|
|
36
|
+
</head>
|
|
37
|
+
<body>
|
|
38
|
+
<h1>🔐 EvidenceMCP Dashboard</h1>
|
|
39
|
+
<div class="error">
|
|
40
|
+
<p>Dashboard not available. Please build the UI first:</p>
|
|
41
|
+
<code>pnpm build:ui</code>
|
|
42
|
+
</div>
|
|
43
|
+
</body>
|
|
44
|
+
</html>
|
|
45
|
+
`;
|
|
46
|
+
return {
|
|
47
|
+
contents: [{
|
|
48
|
+
uri: dashboardUri,
|
|
49
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
50
|
+
text: fallbackHtml,
|
|
51
|
+
}],
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
// Register the detail view UI resource
|
|
56
|
+
registerAppResource(server, detailUri, detailUri, { mimeType: RESOURCE_MIME_TYPE }, async () => {
|
|
57
|
+
try {
|
|
58
|
+
const htmlPath = path.join(DIST_DIR, "detail.html");
|
|
59
|
+
const html = await fs.readFile(htmlPath, "utf-8");
|
|
60
|
+
return {
|
|
61
|
+
contents: [{
|
|
62
|
+
uri: detailUri,
|
|
63
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
64
|
+
text: html,
|
|
65
|
+
}],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error("Failed to load detail.html:", error);
|
|
70
|
+
// Fallback HTML if the built file doesn't exist
|
|
71
|
+
const fallbackHtml = `
|
|
72
|
+
<!DOCTYPE html>
|
|
73
|
+
<html lang="en">
|
|
74
|
+
<head>
|
|
75
|
+
<meta charset="UTF-8">
|
|
76
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
77
|
+
<title>Evidence Detail - EvidenceMCP</title>
|
|
78
|
+
<style>
|
|
79
|
+
body { font-family: system-ui; padding: 2rem; text-align: center; }
|
|
80
|
+
.error { color: #ef4444; background: #fef2f2; padding: 1rem; border-radius: 8px; }
|
|
81
|
+
</style>
|
|
82
|
+
</head>
|
|
83
|
+
<body>
|
|
84
|
+
<h1>🔍 Evidence Detail</h1>
|
|
85
|
+
<div class="error">
|
|
86
|
+
<p>Detail view not available. Please build the UI first:</p>
|
|
87
|
+
<code>pnpm build:ui</code>
|
|
88
|
+
</div>
|
|
89
|
+
</body>
|
|
90
|
+
</html>
|
|
91
|
+
`;
|
|
92
|
+
return {
|
|
93
|
+
contents: [{
|
|
94
|
+
uri: detailUri,
|
|
95
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
96
|
+
text: fallbackHtml,
|
|
97
|
+
}],
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
// Register the export UI resource
|
|
102
|
+
registerAppResource(server, exportUri, exportUri, { mimeType: RESOURCE_MIME_TYPE }, async () => {
|
|
103
|
+
try {
|
|
104
|
+
const htmlPath = path.join(DIST_DIR, "export.html");
|
|
105
|
+
const html = await fs.readFile(htmlPath, "utf-8");
|
|
106
|
+
return {
|
|
107
|
+
contents: [{
|
|
108
|
+
uri: exportUri,
|
|
109
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
110
|
+
text: html,
|
|
111
|
+
}],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error("Failed to load export.html:", error);
|
|
116
|
+
// Fallback HTML if the built file doesn't exist
|
|
117
|
+
const fallbackHtml = `
|
|
118
|
+
<!DOCTYPE html>
|
|
119
|
+
<html lang="en">
|
|
120
|
+
<head>
|
|
121
|
+
<meta charset="UTF-8">
|
|
122
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
123
|
+
<title>Export Evidence - EvidenceMCP</title>
|
|
124
|
+
<style>
|
|
125
|
+
body { font-family: system-ui; padding: 2rem; text-align: center; }
|
|
126
|
+
.error { color: #ef4444; background: #fef2f2; padding: 1rem; border-radius: 8px; }
|
|
127
|
+
</style>
|
|
128
|
+
</head>
|
|
129
|
+
<body>
|
|
130
|
+
<h1>📦 Export Evidence</h1>
|
|
131
|
+
<div class="error">
|
|
132
|
+
<p>Export view not available. Please build the UI first:</p>
|
|
133
|
+
<code>pnpm build:ui</code>
|
|
134
|
+
</div>
|
|
135
|
+
</body>
|
|
136
|
+
</html>
|
|
137
|
+
`;
|
|
138
|
+
return {
|
|
139
|
+
contents: [{
|
|
140
|
+
uri: exportUri,
|
|
141
|
+
mimeType: RESOURCE_MIME_TYPE,
|
|
142
|
+
text: fallbackHtml,
|
|
143
|
+
}],
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
console.log("✅ Registered UI resources:", dashboardUri, detailUri, exportUri);
|
|
148
|
+
return {
|
|
149
|
+
dashboardUri,
|
|
150
|
+
detailUri,
|
|
151
|
+
exportUri,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/ui/register.ts"],"names":[],"mappings":"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"}
|