@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.
Files changed (68) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/SKILL.md +355 -0
  4. package/dist/index.d.ts +19 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +690 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/lib/crypto/decrypt.d.ts +11 -0
  9. package/dist/lib/crypto/decrypt.d.ts.map +1 -0
  10. package/dist/lib/crypto/decrypt.js +30 -0
  11. package/dist/lib/crypto/decrypt.js.map +1 -0
  12. package/dist/lib/crypto/encrypt.d.ts +13 -0
  13. package/dist/lib/crypto/encrypt.d.ts.map +1 -0
  14. package/dist/lib/crypto/encrypt.js +24 -0
  15. package/dist/lib/crypto/encrypt.js.map +1 -0
  16. package/dist/lib/crypto/index.d.ts +6 -0
  17. package/dist/lib/crypto/index.d.ts.map +1 -0
  18. package/dist/lib/crypto/index.js +5 -0
  19. package/dist/lib/crypto/index.js.map +1 -0
  20. package/dist/lib/crypto/key-derivation.d.ts +30 -0
  21. package/dist/lib/crypto/key-derivation.d.ts.map +1 -0
  22. package/dist/lib/crypto/key-derivation.js +63 -0
  23. package/dist/lib/crypto/key-derivation.js.map +1 -0
  24. package/dist/lib/crypto/types.d.ts +22 -0
  25. package/dist/lib/crypto/types.d.ts.map +1 -0
  26. package/dist/lib/crypto/types.js +10 -0
  27. package/dist/lib/crypto/types.js.map +1 -0
  28. package/dist/lib/storage/database.d.ts +116 -0
  29. package/dist/lib/storage/database.d.ts.map +1 -0
  30. package/dist/lib/storage/database.js +390 -0
  31. package/dist/lib/storage/database.js.map +1 -0
  32. package/dist/lib/storage/export.d.ts +26 -0
  33. package/dist/lib/storage/export.d.ts.map +1 -0
  34. package/dist/lib/storage/export.js +113 -0
  35. package/dist/lib/storage/export.js.map +1 -0
  36. package/dist/lib/storage/git.d.ts +16 -0
  37. package/dist/lib/storage/git.d.ts.map +1 -0
  38. package/dist/lib/storage/git.js +55 -0
  39. package/dist/lib/storage/git.js.map +1 -0
  40. package/dist/lib/storage/index.d.ts +6 -0
  41. package/dist/lib/storage/index.d.ts.map +1 -0
  42. package/dist/lib/storage/index.js +5 -0
  43. package/dist/lib/storage/index.js.map +1 -0
  44. package/dist/lib/storage/schema.d.ts +17 -0
  45. package/dist/lib/storage/schema.d.ts.map +1 -0
  46. package/dist/lib/storage/schema.js +103 -0
  47. package/dist/lib/storage/schema.js.map +1 -0
  48. package/dist/lib/storage/types.d.ts +26 -0
  49. package/dist/lib/storage/types.d.ts.map +1 -0
  50. package/dist/lib/storage/types.js +2 -0
  51. package/dist/lib/storage/types.js.map +1 -0
  52. package/dist/test-helpers.d.ts +33 -0
  53. package/dist/test-helpers.d.ts.map +1 -0
  54. package/dist/test-helpers.js +108 -0
  55. package/dist/test-helpers.js.map +1 -0
  56. package/dist/types.d.ts +29 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +2 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/ui/dashboard.html +965 -0
  61. package/dist/ui/detail.html +348 -0
  62. package/dist/ui/export.html +409 -0
  63. package/dist/ui/register.d.ts +7 -0
  64. package/dist/ui/register.d.ts.map +1 -0
  65. package/dist/ui/register.js +154 -0
  66. package/dist/ui/register.js.map +1 -0
  67. package/dist/ui-tmp/ui/export.html +409 -0
  68. package/package.json +78 -0
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerUIResources(server: McpServer): {
3
+ dashboardUri: string;
4
+ detailUri: string;
5
+ exportUri: string;
6
+ };
7
+ //# sourceMappingURL=register.d.ts.map
@@ -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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"}