@panguard-ai/panguard 1.4.2 → 1.4.4

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 (43) hide show
  1. package/dist/bridges/scan-to-report.d.ts +10 -1
  2. package/dist/bridges/scan-to-report.d.ts.map +1 -1
  3. package/dist/bridges/scan-to-report.js.map +1 -1
  4. package/dist/cli/commands/audit.d.ts.map +1 -1
  5. package/dist/cli/commands/audit.js +16 -10
  6. package/dist/cli/commands/audit.js.map +1 -1
  7. package/dist/cli/commands/config.d.ts.map +1 -1
  8. package/dist/cli/commands/config.js +56 -0
  9. package/dist/cli/commands/config.js.map +1 -1
  10. package/dist/cli/commands/demo.d.ts.map +1 -1
  11. package/dist/cli/commands/demo.js +14 -1
  12. package/dist/cli/commands/demo.js.map +1 -1
  13. package/dist/cli/commands/scan.d.ts.map +1 -1
  14. package/dist/cli/commands/scan.js +80 -151
  15. package/dist/cli/commands/scan.js.map +1 -1
  16. package/dist/cli/commands/setup.d.ts.map +1 -1
  17. package/dist/cli/commands/setup.js +9 -3
  18. package/dist/cli/commands/setup.js.map +1 -1
  19. package/dist/cli/commands/status.js +88 -13
  20. package/dist/cli/commands/status.js.map +1 -1
  21. package/dist/cli/consent.d.ts +24 -0
  22. package/dist/cli/consent.d.ts.map +1 -0
  23. package/dist/cli/consent.js +89 -0
  24. package/dist/cli/consent.js.map +1 -0
  25. package/dist/cli/guard-config.d.ts +18 -0
  26. package/dist/cli/guard-config.d.ts.map +1 -0
  27. package/dist/cli/guard-config.js +30 -0
  28. package/dist/cli/guard-config.js.map +1 -0
  29. package/dist/cli/index.js +1 -2
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/scan-helpers.d.ts +75 -0
  32. package/dist/cli/scan-helpers.d.ts.map +1 -0
  33. package/dist/cli/scan-helpers.js +58 -0
  34. package/dist/cli/scan-helpers.js.map +1 -0
  35. package/dist/cli/telemetry.d.ts +28 -0
  36. package/dist/cli/telemetry.d.ts.map +1 -0
  37. package/dist/cli/telemetry.js +56 -0
  38. package/dist/cli/telemetry.js.map +1 -0
  39. package/dist/index.d.ts +0 -1
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -1
  42. package/dist/index.js.map +1 -1
  43. package/package.json +1 -2
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Telemetry client — fire-and-forget POST to TC /api/telemetry.
3
+ * Only sends if telemetryEnabled is true (opt-in).
4
+ * Never blocks, never throws.
5
+ *
6
+ * All data is real — no mocks, no hardcoded values.
7
+ */
8
+ const TC_ENDPOINT = 'https://tc.panguard.ai';
9
+ /**
10
+ * Discover the real count of locally installed MCP skills.
11
+ * Uses the same discovery logic as `panguard setup` and SkillWatcher.
12
+ * Returns 0 if discovery fails (best-effort, never throws).
13
+ */
14
+ export async function discoverLocalSkillCount() {
15
+ try {
16
+ // Use string variable to prevent tsc from resolving the project reference
17
+ const pkg = '@panguard-ai/panguard-mcp';
18
+ const mod = (await import(pkg));
19
+ const skills = await mod.discoverAllSkills();
20
+ return skills.length;
21
+ }
22
+ catch {
23
+ return 0;
24
+ }
25
+ }
26
+ /** Get the real OS platform string for telemetry */
27
+ export function getLocalPlatform() {
28
+ return `${process.platform}-${process.arch}`;
29
+ }
30
+ /**
31
+ * Report a telemetry event if telemetry is enabled.
32
+ * Fire-and-forget — never blocks the caller, never throws.
33
+ */
34
+ export async function reportTelemetry(enabled, event) {
35
+ if (!enabled)
36
+ return;
37
+ try {
38
+ await fetch(`${TC_ENDPOINT}/api/telemetry`, {
39
+ method: 'POST',
40
+ headers: { 'Content-Type': 'application/json' },
41
+ body: JSON.stringify({
42
+ event: event.event,
43
+ platform: event.platform,
44
+ skillCount: event.skillCount,
45
+ findingCount: event.findingCount,
46
+ severity: event.severity,
47
+ ts: new Date().toISOString(),
48
+ }),
49
+ signal: AbortSignal.timeout(3000),
50
+ });
51
+ }
52
+ catch {
53
+ // Best effort — never block scan for telemetry
54
+ }
55
+ }
56
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB;IAC3C,IAAI,CAAC;QACH,0EAA0E;QAC1E,MAAM,GAAG,GAAG,2BAA2B,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAE7B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AAC/C,CAAC;AAUD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAgB,EAAE,KAAqB;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,WAAW,gBAAgB,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7B,CAAC;YACF,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,+CAA+C;IACjD,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -11,7 +11,6 @@ export declare const PANGUARD_VERSION: string;
11
11
  export { runScan, generatePdfReport } from '@panguard-ai/panguard-scan';
12
12
  export type { ScanConfig, ScanResult, Finding } from '@panguard-ai/panguard-scan';
13
13
  export { GuardEngine, DashboardServer, loadConfig } from '@panguard-ai/panguard-guard';
14
- export { generateComplianceReport, reportToJSON, generateSummaryText, getSupportedFrameworks, } from '@panguard-ai/panguard-report';
15
14
  export { ChatAgent, WebhookChannel } from '@panguard-ai/panguard-chat';
16
15
  export { scanFindingsToComplianceFindings } from './bridges/scan-to-report.js';
17
16
  export type { ScanFinding } from './bridges/scan-to-report.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,gBAAgB,EAAE,MAAqB,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AASvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,gBAAgB,EAAE,MAAqB,CAAC;AAGrD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACxE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGlF,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAOvF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AASvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAG/D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9F,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -16,7 +16,8 @@ export { runScan, generatePdfReport } from '@panguard-ai/panguard-scan';
16
16
  // Guard Engine
17
17
  export { GuardEngine, DashboardServer, loadConfig } from '@panguard-ai/panguard-guard';
18
18
  // Report Generator
19
- export { generateComplianceReport, reportToJSON, generateSummaryText, getSupportedFrameworks, } from '@panguard-ai/panguard-report';
19
+ // Report (optional pdfkit can fail on some Node versions)
20
+ // Use dynamic import: const { generateComplianceReport } = await import('@panguard-ai/panguard-report');
20
21
  // Chat / Notifications
21
22
  export { ChatAgent, WebhookChannel } from '@panguard-ai/panguard-chat';
22
23
  // Honeypot (optional — requires @panguard-ai/panguard-trap)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,OAAO,CAAC;AAErD,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEvF,mBAAmB;AACnB,OAAO,EACL,wBAAwB,EACxB,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,8BAA8B,CAAC;AAEtC,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvE,4DAA4D;AAC5D,yFAAyF;AAEzF,gFAAgF;AAChF,4EAA4E;AAE5E,UAAU;AACV,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAG/E,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,CAAwB,CAAC;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,OAAO,CAAC;AAErD,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGxE,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEvF,mBAAmB;AACnB,4DAA4D;AAC5D,yGAAyG;AAEzG,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEvE,4DAA4D;AAC5D,yFAAyF;AAEzF,gFAAgF;AAChF,4EAA4E;AAE5E,UAAU;AACV,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAG/E,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panguard-ai/panguard",
3
- "version": "1.4.2",
3
+ "version": "1.4.4",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -48,7 +48,6 @@
48
48
  "@panguard-ai/core": "^1.3.1",
49
49
  "@panguard-ai/panguard-scan": "^1.3.0",
50
50
  "@panguard-ai/panguard-guard": "^1.3.1",
51
- "@panguard-ai/panguard-report": "^1.3.0",
52
51
  "@panguard-ai/panguard-chat": "^1.3.0",
53
52
  "@panguard-ai/security-hardening": "^1.0.0",
54
53
  "@panguard-ai/scan-core": "^1.4.0",