@pcircle/footprint 1.2.2 → 1.3.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 +1 -1
- package/README.md +31 -43
- package/SKILL.md +45 -45
- package/dist/src/cli/constants.d.ts +20 -0
- package/dist/src/cli/constants.d.ts.map +1 -0
- package/dist/src/cli/constants.js +25 -0
- package/dist/src/cli/constants.js.map +1 -0
- package/dist/src/cli/index.d.ts +3 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +25 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/setup.d.ts +6 -0
- package/dist/src/cli/setup.d.ts.map +1 -0
- package/dist/src/cli/setup.js +334 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/types.d.ts +38 -0
- package/dist/src/cli/types.d.ts.map +1 -0
- package/dist/src/cli/types.js +5 -0
- package/dist/src/cli/types.js.map +1 -0
- package/dist/src/cli/utils/config.d.ts +19 -0
- package/dist/src/cli/utils/config.d.ts.map +1 -0
- package/dist/src/cli/utils/config.js +86 -0
- package/dist/src/cli/utils/config.js.map +1 -0
- package/dist/src/cli/utils/detect.d.ts +14 -0
- package/dist/src/cli/utils/detect.d.ts.map +1 -0
- package/dist/src/cli/utils/detect.js +57 -0
- package/dist/src/cli/utils/detect.js.map +1 -0
- package/dist/src/cli/utils/env.d.ts +10 -0
- package/dist/src/cli/utils/env.d.ts.map +1 -0
- package/dist/src/cli/utils/env.js +54 -0
- package/dist/src/cli/utils/env.js.map +1 -0
- package/dist/src/cli/utils/validation.d.ts +17 -0
- package/dist/src/cli/utils/validation.d.ts.map +1 -0
- package/dist/src/cli/utils/validation.js +77 -0
- package/dist/src/cli/utils/validation.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +13 -11
- package/dist/src/index.js.map +1 -1
- package/dist/src/lib/storage/export.d.ts +2 -2
- package/dist/src/lib/storage/export.d.ts.map +1 -1
- package/dist/src/lib/storage/export.js +39 -39
- package/dist/src/lib/storage/export.js.map +1 -1
- package/dist/src/tools/capture-footprint.js +1 -1
- package/dist/src/tools/capture-footprint.js.map +1 -1
- package/dist/src/tools/delete-footprints.d.ts +2 -2
- package/dist/src/tools/delete-footprints.d.ts.map +1 -1
- package/dist/src/tools/delete-footprints.js +4 -4
- package/dist/src/tools/delete-footprints.js.map +1 -1
- package/dist/src/tools/export-footprints.d.ts +4 -4
- package/dist/src/tools/export-footprints.d.ts.map +1 -1
- package/dist/src/tools/export-footprints.js +6 -6
- package/dist/src/tools/export-footprints.js.map +1 -1
- package/dist/src/tools/get-footprint.js +19 -19
- package/dist/src/tools/get-footprint.js.map +1 -1
- package/dist/src/tools/list-footprints.d.ts +2 -2
- package/dist/src/tools/list-footprints.js +11 -11
- package/dist/src/tools/list-footprints.js.map +1 -1
- package/dist/src/tools/search-footprints.d.ts +2 -2
- package/dist/src/tools/search-footprints.js +11 -11
- package/dist/src/tools/search-footprints.js.map +1 -1
- package/dist/src/tools/suggest-capture.js +1 -1
- package/dist/src/tools/suggest-capture.js.map +1 -1
- package/dist/src/tools/verify-footprint.js +11 -11
- package/dist/src/tools/verify-footprint.js.map +1 -1
- package/dist/src/ui/register.js +2 -2
- package/dist/src/ui/register.js.map +1 -1
- package/dist/ui/dashboard.html +49 -49
- package/dist/ui/detail.html +9 -9
- package/dist/ui/export.html +17 -17
- package/package.json +13 -6
- package/dist/tests/error-handling.test.d.ts +0 -2
- package/dist/tests/error-handling.test.d.ts.map +0 -1
- package/dist/tests/error-handling.test.js +0 -114
- package/dist/tests/error-handling.test.js.map +0 -1
- package/dist/tests/fixtures.d.ts +0 -87
- package/dist/tests/fixtures.d.ts.map +0 -1
- package/dist/tests/fixtures.js +0 -130
- package/dist/tests/fixtures.js.map +0 -1
- package/dist/tests/integration.test.d.ts +0 -2
- package/dist/tests/integration.test.d.ts.map +0 -1
- package/dist/tests/integration.test.js +0 -115
- package/dist/tests/integration.test.js.map +0 -1
- package/dist/tests/resources.test.d.ts +0 -2
- package/dist/tests/resources.test.d.ts.map +0 -1
- package/dist/tests/resources.test.js +0 -73
- package/dist/tests/resources.test.js.map +0 -1
- package/dist/tests/setup.d.ts +0 -8
- package/dist/tests/setup.d.ts.map +0 -1
- package/dist/tests/setup.js +0 -8
- package/dist/tests/setup.js.map +0 -1
- package/dist/tests/tools.test.d.ts +0 -2
- package/dist/tests/tools.test.d.ts.map +0 -1
- package/dist/tests/tools.test.js +0 -224
- package/dist/tests/tools.test.js.map +0 -1
- package/dist/ui-tmp/ui/export.html +0 -409
package/dist/ui/detail.html
CHANGED
|
@@ -261,7 +261,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
261
261
|
<div class="error">
|
|
262
262
|
❌ Error: ${e}
|
|
263
263
|
</div>
|
|
264
|
-
`)}function eo(){const e=document.getElementById("loading"),t=document.getElementById("detail-container");e&&(e.style.display="none"),t&&(t.style.display="block")}function Jo(e){try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}catch{return e}}function dI(e){return e?e.split(",").map(n=>n.trim()).filter(n=>n.length>0).map(n=>`<span class="tag">${n}</span>`).join(""):"None"}function mI(e){be=e;const t={"
|
|
264
|
+
`)}function eo(){const e=document.getElementById("loading"),t=document.getElementById("detail-container");e&&(e.style.display="none"),t&&(t.style.display="block")}function Jo(e){try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}catch{return e}}function dI(e){return e?e.split(",").map(n=>n.trim()).filter(n=>n.length>0).map(n=>`<span class="tag">${n}</span>`).join(""):"None"}function mI(e){be=e;const t={"evidence-id":e.id,"evidence-timestamp":Jo(e.timestamp),"conversation-id":e.conversationId,"llm-provider":e.llmProvider,"message-count":e.messageCount.toString()};Object.entries(t).forEach(([r,o])=>{const s=document.getElementById(r);s&&(s.textContent=o)});const n=document.getElementById("evidence-tags");n&&(n.innerHTML=dI(e.tags));const a=document.getElementById("git-info-container");a&&(e.gitInfo?a.innerHTML=`
|
|
265
265
|
<div class="git-info">
|
|
266
266
|
<div style="margin-bottom: 0.5rem;">
|
|
267
267
|
<span class="label">Git Commit:</span>
|
|
@@ -272,7 +272,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
272
272
|
<span class="value">${Jo(e.gitInfo.timestamp)}</span>
|
|
273
273
|
</div>
|
|
274
274
|
</div>
|
|
275
|
-
`:a.innerHTML="");const i=document.getElementById("
|
|
275
|
+
`:a.innerHTML="");const i=document.getElementById("evidence-content");i&&(i.textContent=e.content),eo()}Pe.ontoolresult=e=>{console.log("Received tool result:",e);try{if(!e.content?.find(a=>a.type==="text")?.text)throw new Error("No text content in tool result");let n;if(e.structuredContent&&typeof e.structuredContent=="object")n=e.structuredContent;else throw new Error("get-evidence tool should provide structured content");console.log("Parsed evidence data:",n),mI(n)}catch(t){console.error("Failed to parse tool result:",t),we(`Failed to load evidence details: ${t instanceof Error?t.message:"Unknown error"}`),eo()}};window.goBack=()=>{Pe.callServerTool({name:"list-evidences",arguments:{}}).catch(e=>{console.error("Failed to go back to dashboard:",e),we("Failed to navigate back to dashboard")})};window.exportEvidence=async()=>{if(!be){we("No evidence loaded");return}try{const e=await Pe.callServerTool({name:"export-evidences",arguments:{evidenceIds:[be.id],includeGitInfo:!0}});await Pe.updateModelContext({content:[{type:"text",text:`User exported evidence ${be.id} from detail view`}]}),console.log("Export result:",e)}catch(e){console.error("Export failed:",e),we(`Export failed: ${e instanceof Error?e.message:"Unknown error"}`)}};window.verifyEvidence=async()=>{if(!be){we("No evidence loaded");return}try{const e=await Pe.callServerTool({name:"verify-evidence",arguments:{id:be.id}});await Pe.updateModelContext({content:[{type:"text",text:`User verified evidence ${be.id} from detail view`}]}),console.log("Verification result:",e)}catch(e){console.error("Verification failed:",e),we(`Verification failed: ${e instanceof Error?e.message:"Unknown error"}`)}};window.copyToClipboard=async()=>{if(!be){we("No evidence content to copy");return}try{await navigator.clipboard.writeText(be.content);const e=document.querySelector('button[onclick="copyToClipboard()"]');if(e){const t=e.innerHTML;e.innerHTML="✓ Copied!",e.disabled=!0,setTimeout(()=>{e.innerHTML=t,e.disabled=!1},2e3)}await Pe.updateModelContext({content:[{type:"text",text:`User copied content of evidence ${be.id} to clipboard`}]})}catch(e){console.error("Copy failed:",e),we("Failed to copy content to clipboard")}};console.log("Connecting detail view to MCP host...");Pe.connect().then(()=>{console.log("Detail view connected to MCP host successfully")}).catch(e=>{console.error("Failed to connect to MCP host:",e),we("Failed to connect to MCP server"),eo()});</script>
|
|
276
276
|
</head>
|
|
277
277
|
<body>
|
|
278
278
|
<div class="container">
|
|
@@ -292,11 +292,11 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
292
292
|
<div class="metadata-grid">
|
|
293
293
|
<div class="metadata-card">
|
|
294
294
|
<div class="metadata-label">Record ID</div>
|
|
295
|
-
<div class="metadata-value" id="
|
|
295
|
+
<div class="metadata-value" id="evidence-id">-</div>
|
|
296
296
|
</div>
|
|
297
297
|
<div class="metadata-card">
|
|
298
298
|
<div class="metadata-label">Timestamp</div>
|
|
299
|
-
<div class="metadata-value" id="
|
|
299
|
+
<div class="metadata-value" id="evidence-timestamp">-</div>
|
|
300
300
|
</div>
|
|
301
301
|
<div class="metadata-card">
|
|
302
302
|
<div class="metadata-label">Conversation ID</div>
|
|
@@ -312,7 +312,7 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
312
312
|
</div>
|
|
313
313
|
<div class="metadata-card">
|
|
314
314
|
<div class="metadata-label">Tags</div>
|
|
315
|
-
<div class="metadata-value" id="
|
|
315
|
+
<div class="metadata-value" id="evidence-tags">-</div>
|
|
316
316
|
</div>
|
|
317
317
|
</div>
|
|
318
318
|
|
|
@@ -325,16 +325,16 @@ container holding the app. Specify either width or maxWidth, and either height o
|
|
|
325
325
|
<h3 style="margin: 0;">Decrypted Content</h3>
|
|
326
326
|
</div>
|
|
327
327
|
<div class="content-body">
|
|
328
|
-
<div class="content-text" id="
|
|
328
|
+
<div class="content-text" id="evidence-content"></div>
|
|
329
329
|
</div>
|
|
330
330
|
</div>
|
|
331
331
|
|
|
332
332
|
<!-- Actions -->
|
|
333
333
|
<div class="actions">
|
|
334
|
-
<button class="btn btn-primary" onclick="
|
|
335
|
-
<svg class="icon" viewBox="0 0 24 24"><path d="m7.5 4.27 9 5.15"/><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/><path d="m3.3 7 8.7 5 8.7-5"/><path d="M12 22V12"/></svg> Export This
|
|
334
|
+
<button class="btn btn-primary" onclick="exportEvidence()">
|
|
335
|
+
<svg class="icon" viewBox="0 0 24 24"><path d="m7.5 4.27 9 5.15"/><path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z"/><path d="m3.3 7 8.7 5 8.7-5"/><path d="M12 22V12"/></svg> Export This Evidence
|
|
336
336
|
</button>
|
|
337
|
-
<button class="btn btn-secondary" onclick="
|
|
337
|
+
<button class="btn btn-secondary" onclick="verifyEvidence()">
|
|
338
338
|
<svg class="icon" viewBox="0 0 24 24"><path d="M20 6 9 17l-5-5"/></svg> Verify Integrity
|
|
339
339
|
</button>
|
|
340
340
|
<button class="btn btn-secondary" onclick="copyToClipboard()">
|