projscan 3.0.5 → 3.0.7

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 (48) hide show
  1. package/README.md +37 -23
  2. package/dist/cli/commands/dogfood.js +16 -0
  3. package/dist/cli/commands/dogfood.js.map +1 -1
  4. package/dist/cli/commands/feedback.d.ts +1 -0
  5. package/dist/cli/commands/feedback.js +176 -0
  6. package/dist/cli/commands/feedback.js.map +1 -0
  7. package/dist/cli/commands/trial.d.ts +1 -0
  8. package/dist/cli/commands/trial.js +81 -0
  9. package/dist/cli/commands/trial.js.map +1 -0
  10. package/dist/cli/index.js +4 -0
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/core/dogfood.d.ts +2 -1
  13. package/dist/core/dogfood.js +290 -10
  14. package/dist/core/dogfood.js.map +1 -1
  15. package/dist/core/feedback.d.ts +12 -0
  16. package/dist/core/feedback.js +213 -0
  17. package/dist/core/feedback.js.map +1 -0
  18. package/dist/core/releaseEvidence.js +5 -1
  19. package/dist/core/releaseEvidence.js.map +1 -1
  20. package/dist/core/start.js +9 -0
  21. package/dist/core/start.js.map +1 -1
  22. package/dist/core/trial.d.ts +6 -0
  23. package/dist/core/trial.js +134 -0
  24. package/dist/core/trial.js.map +1 -0
  25. package/dist/grammars/tree-sitter-swift.wasm +0 -0
  26. package/dist/index.d.ts +3 -1
  27. package/dist/index.js +2 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/projscan-sbom.cdx.json +6 -6
  30. package/dist/tool-manifest.json +2 -2
  31. package/dist/types.d.ts +169 -0
  32. package/dist/utils/formatSupport.d.ts +5 -0
  33. package/dist/utils/formatSupport.js +5 -0
  34. package/dist/utils/formatSupport.js.map +1 -1
  35. package/package.json +5 -3
  36. package/public/.well-known/security.txt +6 -0
  37. package/public/brand/baseframe-labs/mark-dark-on-dark.png +0 -0
  38. package/public/brand/baseframe-labs/mark-dark.png +0 -0
  39. package/public/brand/baseframe-labs/mark-dark.svg +1 -0
  40. package/public/brand/baseframe-labs/mark-light-on-white.png +0 -0
  41. package/public/brand/baseframe-labs/mark-light.png +0 -0
  42. package/public/brand/baseframe-labs/mark-light.svg +1 -0
  43. package/public/brand/baseframe-labs/wordmark-dark-on-dark.png +0 -0
  44. package/public/brand/baseframe-labs/wordmark-dark.png +0 -0
  45. package/public/brand/baseframe-labs/wordmark-dark.svg +1 -0
  46. package/public/brand/baseframe-labs/wordmark-light-on-white.png +0 -0
  47. package/public/brand/baseframe-labs/wordmark-light.png +0 -0
  48. package/public/brand/baseframe-labs/wordmark-light.svg +1 -0
package/dist/types.d.ts CHANGED
@@ -653,6 +653,144 @@ export interface StartReport {
653
653
  truncated?: boolean;
654
654
  }
655
655
  export type DogfoodRepoStatus = 'pass' | 'warn' | 'fail';
656
+ export interface DogfoodFeedbackResponse {
657
+ repo?: string;
658
+ pr?: string;
659
+ reviewer?: string;
660
+ useful?: boolean;
661
+ minutesSaved?: number;
662
+ preventedBadEdit?: boolean;
663
+ ownerRoutingClear?: boolean;
664
+ nextCommandClear?: boolean;
665
+ falsePositiveRules?: string[];
666
+ missingSignals?: string[];
667
+ noisyFindings?: string[];
668
+ note?: string;
669
+ }
670
+ export interface DogfoodFeedbackInput {
671
+ schemaVersion?: 1;
672
+ questions?: string[];
673
+ responses: DogfoodFeedbackResponse[];
674
+ }
675
+ export interface FeedbackTemplateResult extends DogfoodFeedbackInput {
676
+ schemaVersion: 1;
677
+ path: string;
678
+ createdAt: string;
679
+ instructions: string[];
680
+ }
681
+ export interface FeedbackSummaryReport {
682
+ schemaVersion: 1;
683
+ path: string;
684
+ responses: number;
685
+ usefulResponses: number;
686
+ distinctRepos: number;
687
+ distinctPrs: number;
688
+ minutesSaved: {
689
+ total: number;
690
+ average: number;
691
+ max: number;
692
+ };
693
+ preventedBadEdits: number;
694
+ ownerRoutingClear: number;
695
+ nextCommandClear: number;
696
+ repeatUse: {
697
+ distinctPrs: number;
698
+ repeatedRepos: number;
699
+ requiredDistinctPrs: number;
700
+ requiredRepeatedRepos: number;
701
+ ready: boolean;
702
+ };
703
+ falsePositive: {
704
+ totalReports: number;
705
+ noisyRules: Array<{
706
+ rule: string;
707
+ count: number;
708
+ }>;
709
+ missingSignals: Array<{
710
+ signal: string;
711
+ count: number;
712
+ }>;
713
+ noisyFindings: Array<{
714
+ finding: string;
715
+ count: number;
716
+ }>;
717
+ };
718
+ nextDogfoodCommand: string;
719
+ }
720
+ export interface DogfoodRepoValidation {
721
+ feedbackResponses: number;
722
+ usefulResponses: number;
723
+ prRefs: string[];
724
+ minutesSaved: number;
725
+ preventedBadEdits: number;
726
+ ownerRoutingClear: number;
727
+ nextCommandClear: number;
728
+ falsePositiveRules: string[];
729
+ missingSignals: string[];
730
+ noisyFindings: string[];
731
+ }
732
+ export interface DogfoodWebsiteProof {
733
+ headline: string;
734
+ metrics: string[];
735
+ bullets: string[];
736
+ markdown: string;
737
+ }
738
+ export interface DogfoodMarketValidation {
739
+ status: 'proven' | 'needs_feedback' | 'needs_more_repos' | 'needs_tuning';
740
+ summary: string;
741
+ repoCoverage: {
742
+ target: number;
743
+ evaluated: number;
744
+ targetMet: boolean;
745
+ };
746
+ feedback: {
747
+ responses: number;
748
+ usefulResponses: number;
749
+ usefulnessRate: number;
750
+ preventedBadEdits: number;
751
+ ownerRoutingClear: number;
752
+ nextCommandClear: number;
753
+ minutesSaved: {
754
+ total: number;
755
+ average: number;
756
+ max: number;
757
+ };
758
+ };
759
+ falsePositive: {
760
+ totalReports: number;
761
+ noisyRules: Array<{
762
+ rule: string;
763
+ count: number;
764
+ }>;
765
+ missingSignals: Array<{
766
+ signal: string;
767
+ count: number;
768
+ }>;
769
+ noisyFindings: Array<{
770
+ finding: string;
771
+ count: number;
772
+ }>;
773
+ };
774
+ firstPr: {
775
+ readyRepos: number;
776
+ repeatUseReadyRepos: number;
777
+ requiredFeedbackQuestions: string[];
778
+ };
779
+ value: {
780
+ averageMinutesSaved: number;
781
+ requiredAverageMinutesSaved: number;
782
+ preventedBadEdits: number;
783
+ ready: boolean;
784
+ };
785
+ repeatUse: {
786
+ distinctPrs: number;
787
+ repeatedRepos: number;
788
+ requiredDistinctPrs: number;
789
+ requiredRepeatedRepos: number;
790
+ ready: boolean;
791
+ };
792
+ websiteProof: DogfoodWebsiteProof;
793
+ }
656
794
  export interface DogfoodRepoResult {
657
795
  path: string;
658
796
  name: string;
@@ -664,6 +802,7 @@ export interface DogfoodRepoResult {
664
802
  verdict: EvidencePackVerdict;
665
803
  gaps: string[];
666
804
  feedbackQuestions: string[];
805
+ validation: DogfoodRepoValidation;
667
806
  nextCommands: string[];
668
807
  }
669
808
  export interface DogfoodReport {
@@ -681,9 +820,39 @@ export interface DogfoodReport {
681
820
  prCommentReady: number;
682
821
  repeatUseReady: number;
683
822
  mcpReady: number;
823
+ usefulFeedback: number;
824
+ minutesSaved: number;
825
+ preventedBadEdits: number;
826
+ falsePositiveReports: number;
684
827
  };
828
+ marketValidation: DogfoodMarketValidation;
685
829
  suggestedNextActions: PreflightSuggestedAction[];
686
830
  }
831
+ export type TrialVerdict = 'adopt' | 'pilot' | 'tune' | 'setup';
832
+ export interface TrialReport {
833
+ schemaVersion: 1;
834
+ readOnly: true;
835
+ rootPath: string;
836
+ verdict: TrialVerdict;
837
+ summary: string;
838
+ activation: {
839
+ status: 'pass' | 'warn' | 'fail';
840
+ setupOverall: 'pass' | 'warn' | 'fail';
841
+ healthScore: number;
842
+ mcpReady: boolean;
843
+ adoptionLoopReady: boolean;
844
+ firstPrCommand: string;
845
+ feedbackCommand: string;
846
+ };
847
+ feedback?: FeedbackSummaryReport;
848
+ dogfood: DogfoodReport;
849
+ decision: {
850
+ adoptable: boolean;
851
+ reasons: string[];
852
+ };
853
+ websiteProof: DogfoodWebsiteProof;
854
+ nextCommands: PreflightSuggestedAction[];
855
+ }
687
856
  export interface GraphCorpusFixtureMetrics {
688
857
  name: string;
689
858
  fixture: string;
@@ -17,6 +17,10 @@ export declare const COMMAND_FORMAT_SUPPORT: {
17
17
  readonly doctor: readonly ["console", "json", "markdown", "sarif", "html"];
18
18
  readonly dogfood: readonly ["console", "json"];
19
19
  readonly 'evidence-pack': readonly ["console", "json"];
20
+ readonly feedback: readonly ["console", "json"];
21
+ readonly 'feedback init': readonly ["console", "json"];
22
+ readonly 'feedback add': readonly ["console", "json"];
23
+ readonly 'feedback summary': readonly ["console", "json"];
20
24
  readonly explain: readonly ["console", "json", "markdown"];
21
25
  readonly 'explain-issue': readonly ["console", "json", "markdown"];
22
26
  readonly file: readonly ["console", "json", "markdown"];
@@ -60,6 +64,7 @@ export declare const COMMAND_FORMAT_SUPPORT: {
60
64
  readonly 'session reset': readonly ["console", "json"];
61
65
  readonly structure: readonly ["console", "json", "markdown"];
62
66
  readonly taint: readonly ["console", "json"];
67
+ readonly trial: readonly ["console", "json"];
63
68
  readonly upgrade: readonly ["console", "json", "markdown"];
64
69
  readonly watch: readonly ["console"];
65
70
  readonly 'workspace list': readonly ["console", "json"];
@@ -16,6 +16,10 @@ export const COMMAND_FORMAT_SUPPORT = {
16
16
  doctor: ['console', 'json', 'markdown', 'sarif', 'html'],
17
17
  dogfood: ['console', 'json'],
18
18
  'evidence-pack': ['console', 'json'],
19
+ feedback: ['console', 'json'],
20
+ 'feedback init': ['console', 'json'],
21
+ 'feedback add': ['console', 'json'],
22
+ 'feedback summary': ['console', 'json'],
19
23
  explain: ['console', 'json', 'markdown'],
20
24
  'explain-issue': ['console', 'json', 'markdown'],
21
25
  file: ['console', 'json', 'markdown'],
@@ -59,6 +63,7 @@ export const COMMAND_FORMAT_SUPPORT = {
59
63
  'session reset': ['console', 'json'],
60
64
  structure: ['console', 'json', 'markdown'],
61
65
  taint: ['console', 'json'],
66
+ trial: ['console', 'json'],
62
67
  upgrade: ['console', 'json', 'markdown'],
63
68
  watch: ['console'],
64
69
  'workspace list': ['console', 'json'],
@@ -1 +1 @@
1
- {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatSupport.js","sourceRoot":"","sources":["../../src/utils/formatSupport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "projscan",
3
3
  "mcpName": "io.github.abhiyoheswaran1/projscan",
4
- "version": "3.0.5",
4
+ "version": "3.0.7",
5
5
  "description": "Agent-first code intelligence. MCP server (2025-03-26) with AST parsing for JavaScript, TypeScript, Python, Go, Java, Ruby, Rust, PHP, C#, Kotlin, Swift, and C++; stable v3 semantic graph (projscan_semantic_graph), dataflow risk engine with bridge-helper detection (projscan_dataflow), code graph, file + per-function AST cyclomatic complexity, per-function fan-in + fan-out, coupling + cycle detection, structural PR diff with HTML reporter, coverage report with HTML reporter, intent-grounded one-call PR review (projscan_review with optional `intent` arg, new taint flows, contract changes, and newDataflowRisks) and long-running PR-watch mode with structured per-bucket deltas (projscan_review_watch), first-60-seconds workflow orientation (projscan_start), agent workplans (projscan_workplan), bug-hunt queues (projscan_bug_hunt), product-line planning (projscan_release_train), evidence packs (projscan_evidence_pack), regression planning (projscan_regression_plan), agent briefs (projscan_agent_brief), quality scorecards (projscan_quality_scorecard), and preflight with supply-chain IOC evidence, rule-driven fix suggestions + mechanical apply layer with rollback (projscan_apply_fix, projscan_fix_suggest, projscan_explain_issue), source-to-sink taint analysis (projscan_taint) with truncation reporting, transitive blast-radius analysis with cross-repo mode (projscan_impact for files and symbols), cross-repo workspace registration + intelligence (projscan_workspace_graph), per-function semantic search chunks (sub-file embeddings), per-rule confidence + severity drift + cost-summary analytics with live streaming (projscan_cost_summary), stable local analyzer + reporter plugin API (projscan_plugin, CLI --reporter, opt-in via PROJSCAN_PLUGINS_PREVIEW=1), monorepo workspace awareness with cross-package import policy + per-package dependencies / outdated / audit, BM25 + optional semantic search, cursor pagination, progress notifications, context-budgeted output, and a stable-surface CI guard. CLI on the side.",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
@@ -16,12 +16,14 @@
16
16
  "docs/PLUGIN-AUTHORING.md",
17
17
  "docs/PLUGIN-GALLERY.md",
18
18
  "docs/plugin.schema.json",
19
- "docs/examples/plugins"
19
+ "docs/examples/plugins",
20
+ "public/brand/baseframe-labs",
21
+ "public/.well-known/security.txt"
20
22
  ],
21
23
  "scripts": {
22
24
  "build": "tsc && node scripts/copy-wasm.mjs && node scripts/generate-tool-manifest.mjs",
23
25
  "dev": "tsc --watch",
24
- "test": "vitest run --test-timeout 60000 --hook-timeout 60000",
26
+ "test": "vitest run --test-timeout 60000 --hook-timeout 60000 --maxWorkers 4",
25
27
  "test:watch": "vitest --test-timeout 60000 --hook-timeout 60000",
26
28
  "lint": "eslint src/",
27
29
  "format": "prettier --write .",
@@ -0,0 +1,6 @@
1
+ # Vulnerability disclosure
2
+ # https://www.rfc-editor.org/rfc/rfc9116
3
+
4
+ Contact: mailto:support@baseframelabs.com
5
+ Expires: 2027-03-31T00:00:00.000Z
6
+ Preferred-Languages: en
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 32 32" width="512" height="512" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3.5" y="3.5" width="25" height="25" rx="6" stroke="#f3f0e8" stroke-width="2"/><line x1="9" y1="22" x2="23" y2="22" stroke="#ff6444" stroke-width="2" stroke-linecap="round"/><rect x="13" y="11" width="6" height="6" rx="1.4" fill="#f3f0e8"/></svg>
@@ -0,0 +1 @@
1
+ <svg viewBox="0 0 32 32" width="512" height="512" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3.5" y="3.5" width="25" height="25" rx="6" stroke="#1a1812" stroke-width="2"/><line x1="9" y1="22" x2="23" y2="22" stroke="#d8472a" stroke-width="2" stroke-linecap="round"/><rect x="13" y="11" width="6" height="6" rx="1.4" fill="#1a1812"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 40" width="500" height="100" fill="none"><g transform="translate(4,6)"><rect x="3.5" y="3.5" width="25" height="25" rx="6" stroke="#f3f0e8" stroke-width="2"/><line x1="9" y1="22" x2="23" y2="22" stroke="#ff6444" stroke-width="2" stroke-linecap="round"/><rect x="13" y="11" width="6" height="6" rx="1.4" fill="#f3f0e8"/></g><text x="45" y="26" font-family="Geist, ui-sans-serif, system-ui, sans-serif" font-size="17" font-weight="600" letter-spacing="-0.3" fill="#f3f0e8">Baseframe<tspan font-family="'Geist Mono', ui-monospace, monospace" font-size="12" font-weight="400" letter-spacing="2" fill="#948e80" dx="7">LABS</tspan></text></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 40" width="500" height="100" fill="none"><g transform="translate(4,6)"><rect x="3.5" y="3.5" width="25" height="25" rx="6" stroke="#1a1812" stroke-width="2"/><line x1="9" y1="22" x2="23" y2="22" stroke="#d8472a" stroke-width="2" stroke-linecap="round"/><rect x="13" y="11" width="6" height="6" rx="1.4" fill="#1a1812"/></g><text x="45" y="26" font-family="Geist, ui-sans-serif, system-ui, sans-serif" font-size="17" font-weight="600" letter-spacing="-0.3" fill="#1a1812">Baseframe<tspan font-family="'Geist Mono', ui-monospace, monospace" font-size="12" font-weight="400" letter-spacing="2" fill="#79746a" dx="7">LABS</tspan></text></svg>