projscan 4.0.0 → 4.2.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/README.md +480 -24
- package/dist/cli/commands/route.js +1 -0
- package/dist/cli/commands/route.js.map +1 -1
- package/dist/cli/commands/semanticGraph.js +27 -0
- package/dist/cli/commands/semanticGraph.js.map +1 -1
- package/dist/cli/commands/start.js +1095 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/core/dependencyAnalyzer.js +172 -0
- package/dist/core/dependencyAnalyzer.js.map +1 -1
- package/dist/core/intentRouter.d.ts +8 -1
- package/dist/core/intentRouter.js +2186 -22
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/issueEngine.js +6 -7
- package/dist/core/issueEngine.js.map +1 -1
- package/dist/core/onboarding.d.ts +2 -2
- package/dist/core/onboarding.js +29 -5
- package/dist/core/onboarding.js.map +1 -1
- package/dist/core/start.d.ts +1 -0
- package/dist/core/start.js +3047 -10
- package/dist/core/start.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.js +14 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/start.js +6 -1
- package/dist/mcp/tools/start.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/reporters/consoleReporter.js +19 -0
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/markdownReporter.js +19 -0
- package/dist/reporters/markdownReporter.js.map +1 -1
- package/dist/tool-manifest.json +6 -2
- package/dist/types.d.ts +275 -0
- package/docs/GUIDE.md +1567 -0
- package/docs/ROADMAP.md +219 -0
- package/docs/demos/projscan-4-1-demo.html +677 -0
- package/docs/projscan-mission-control.png +0 -0
- package/docs/projscan-proof-router.png +0 -0
- package/package.json +8 -1
- package/scripts/capture-readme-assets.mjs +60 -0
package/dist/types.d.ts
CHANGED
|
@@ -54,6 +54,8 @@ export interface DependencyReport {
|
|
|
54
54
|
dependencies: Record<string, string>;
|
|
55
55
|
devDependencies: Record<string, string>;
|
|
56
56
|
risks: DependencyRisk[];
|
|
57
|
+
licenses?: DependencyLicenseSummary;
|
|
58
|
+
sizes?: DependencySizeSummary;
|
|
57
59
|
/**
|
|
58
60
|
* Per-workspace breakdown when scanning a monorepo (0.13.0+). Absent for
|
|
59
61
|
* single-package repos. The top-level `totalDependencies`,
|
|
@@ -70,6 +72,36 @@ export interface DependencyReport {
|
|
|
70
72
|
risks: DependencyRisk[];
|
|
71
73
|
}>;
|
|
72
74
|
}
|
|
75
|
+
export interface DependencyLicenseEntry {
|
|
76
|
+
name: string;
|
|
77
|
+
version: string;
|
|
78
|
+
scope: 'production' | 'development';
|
|
79
|
+
license: string | null;
|
|
80
|
+
workspace?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface DependencyLicenseSummary {
|
|
83
|
+
packages: DependencyLicenseEntry[];
|
|
84
|
+
byLicense: Record<string, number>;
|
|
85
|
+
unknown: string[];
|
|
86
|
+
copyleft: DependencyLicenseEntry[];
|
|
87
|
+
noticeCandidates: DependencyLicenseEntry[];
|
|
88
|
+
}
|
|
89
|
+
export interface DependencySizeEntry {
|
|
90
|
+
name: string;
|
|
91
|
+
version: string;
|
|
92
|
+
scope: 'production' | 'development';
|
|
93
|
+
bytes: number | null;
|
|
94
|
+
formatted: string;
|
|
95
|
+
installed: boolean;
|
|
96
|
+
workspace?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface DependencySizeSummary {
|
|
99
|
+
packages: DependencySizeEntry[];
|
|
100
|
+
largest: DependencySizeEntry[];
|
|
101
|
+
totalBytes: number;
|
|
102
|
+
formattedTotal: string;
|
|
103
|
+
missing: string[];
|
|
104
|
+
}
|
|
73
105
|
export interface DependencyRisk {
|
|
74
106
|
name: string;
|
|
75
107
|
reason: string;
|
|
@@ -668,11 +700,253 @@ export interface StartFirstTenMinutes {
|
|
|
668
700
|
outcome: string;
|
|
669
701
|
commands: StartFirstTenMinutesStep[];
|
|
670
702
|
}
|
|
703
|
+
export type StartModeSource = 'explicit' | 'intent' | 'default';
|
|
704
|
+
export type StartMissionControlStatus = 'ready' | 'needs_setup' | 'needs_attention' | 'blocked';
|
|
705
|
+
export interface StartRoutedIntent {
|
|
706
|
+
intent: string;
|
|
707
|
+
category: string;
|
|
708
|
+
tool: string;
|
|
709
|
+
cli: string;
|
|
710
|
+
why: string;
|
|
711
|
+
example: string;
|
|
712
|
+
confidence: 'high' | 'medium' | 'low';
|
|
713
|
+
rank: number;
|
|
714
|
+
score: number;
|
|
715
|
+
matchedKeywords: string[];
|
|
716
|
+
}
|
|
717
|
+
export interface StartUnresolvedInput {
|
|
718
|
+
name: string;
|
|
719
|
+
placeholder: string;
|
|
720
|
+
sourceAction: string;
|
|
721
|
+
instruction: string;
|
|
722
|
+
}
|
|
723
|
+
export interface StartMissionResumeReference {
|
|
724
|
+
id: string;
|
|
725
|
+
phaseId: StartExecutionPhaseId;
|
|
726
|
+
kind: StartExecutionStepKind;
|
|
727
|
+
status: StartExecutionStatus;
|
|
728
|
+
label: string;
|
|
729
|
+
instruction?: string;
|
|
730
|
+
command?: string;
|
|
731
|
+
placeholder?: string;
|
|
732
|
+
}
|
|
733
|
+
export interface StartMissionToolCall {
|
|
734
|
+
tool: string;
|
|
735
|
+
args?: Record<string, unknown>;
|
|
736
|
+
}
|
|
737
|
+
export interface StartMissionProofToolCall extends StartMissionToolCall {
|
|
738
|
+
stepId: string;
|
|
739
|
+
command: string;
|
|
740
|
+
}
|
|
741
|
+
export interface StartMissionProofItem {
|
|
742
|
+
stepId: string;
|
|
743
|
+
status: StartExecutionStatus;
|
|
744
|
+
label: string;
|
|
745
|
+
command: string;
|
|
746
|
+
toolCall?: StartMissionToolCall;
|
|
747
|
+
}
|
|
748
|
+
export interface StartMissionInputBinding {
|
|
749
|
+
inputId: string;
|
|
750
|
+
label: string;
|
|
751
|
+
placeholder: string;
|
|
752
|
+
instruction: string;
|
|
753
|
+
followUpIds: string[];
|
|
754
|
+
}
|
|
755
|
+
export type StartMissionResumeChecklistItemKind = 'run_current' | 'resolve_input' | 'run_follow_up' | 'run_proof' | 'confirm_done';
|
|
756
|
+
export interface StartMissionResumeChecklistItem {
|
|
757
|
+
id: string;
|
|
758
|
+
kind: StartMissionResumeChecklistItemKind;
|
|
759
|
+
phaseId: StartExecutionPhaseId;
|
|
760
|
+
stepId: string;
|
|
761
|
+
status: StartExecutionStatus;
|
|
762
|
+
label: string;
|
|
763
|
+
command?: string;
|
|
764
|
+
tool?: string;
|
|
765
|
+
args?: Record<string, unknown>;
|
|
766
|
+
placeholder?: string;
|
|
767
|
+
instruction?: string;
|
|
768
|
+
blockedBy?: string[];
|
|
769
|
+
dependsOn?: string[];
|
|
770
|
+
unlocks?: string[];
|
|
771
|
+
followUpIds?: string[];
|
|
772
|
+
}
|
|
773
|
+
export interface StartMissionResumeFollowUp {
|
|
774
|
+
id: string;
|
|
775
|
+
phaseId: StartExecutionPhaseId;
|
|
776
|
+
kind: StartExecutionStepKind;
|
|
777
|
+
status: StartExecutionStatus;
|
|
778
|
+
label: string;
|
|
779
|
+
command?: string;
|
|
780
|
+
tool?: string;
|
|
781
|
+
args?: Record<string, unknown>;
|
|
782
|
+
blockedBy?: string[];
|
|
783
|
+
dependsOn?: string[];
|
|
784
|
+
}
|
|
785
|
+
export interface StartMissionResume {
|
|
786
|
+
currentStep: StartExecutionCursor;
|
|
787
|
+
status: StartExecutionStatus;
|
|
788
|
+
instruction: string;
|
|
789
|
+
prompt: string;
|
|
790
|
+
commandBlock?: string;
|
|
791
|
+
toolCall?: StartMissionToolCall;
|
|
792
|
+
followUps?: StartMissionResumeFollowUp[];
|
|
793
|
+
inputBindings?: StartMissionInputBinding[];
|
|
794
|
+
checklist?: StartMissionResumeChecklistItem[];
|
|
795
|
+
remainingProofItems?: StartMissionProofItem[];
|
|
796
|
+
remainingProofCommands?: string[];
|
|
797
|
+
remainingProofToolCalls?: StartMissionProofToolCall[];
|
|
798
|
+
unlocks?: StartMissionResumeReference[];
|
|
799
|
+
blockedBy?: StartMissionResumeReference[];
|
|
800
|
+
}
|
|
801
|
+
export interface StartMissionHandoff {
|
|
802
|
+
currentStep: StartExecutionCursor;
|
|
803
|
+
resume: StartMissionResume;
|
|
804
|
+
reviewGate: StartMissionReviewGate;
|
|
805
|
+
nextAction: PreflightSuggestedAction;
|
|
806
|
+
readyActions: PreflightSuggestedAction[];
|
|
807
|
+
needsInput: StartUnresolvedInput[];
|
|
808
|
+
doneWhen: string[];
|
|
809
|
+
readyProof: {
|
|
810
|
+
summary: string;
|
|
811
|
+
commands: string[];
|
|
812
|
+
toolCalls?: StartMissionProofToolCall[];
|
|
813
|
+
items?: StartMissionProofItem[];
|
|
814
|
+
};
|
|
815
|
+
}
|
|
816
|
+
export type StartExecutionPhaseId = 'next_action' | 'ready_now' | 'resolve_inputs' | 'follow_up' | 'proof' | 'done_when';
|
|
817
|
+
export type StartExecutionStatus = 'ready' | 'blocked' | 'pending';
|
|
818
|
+
export type StartExecutionStepKind = 'tool' | 'input' | 'proof' | 'criterion' | 'handoff';
|
|
819
|
+
export interface StartExecutionStep {
|
|
820
|
+
id: string;
|
|
821
|
+
kind: StartExecutionStepKind;
|
|
822
|
+
status: StartExecutionStatus;
|
|
823
|
+
label: string;
|
|
824
|
+
command?: string;
|
|
825
|
+
tool?: string;
|
|
826
|
+
args?: Record<string, unknown>;
|
|
827
|
+
instruction?: string;
|
|
828
|
+
placeholder?: string;
|
|
829
|
+
dependsOn?: string[];
|
|
830
|
+
blockedBy?: string[];
|
|
831
|
+
unlocks?: string[];
|
|
832
|
+
}
|
|
833
|
+
export interface StartExecutionPhase {
|
|
834
|
+
id: StartExecutionPhaseId;
|
|
835
|
+
title: string;
|
|
836
|
+
status: StartExecutionStatus;
|
|
837
|
+
steps: StartExecutionStep[];
|
|
838
|
+
}
|
|
839
|
+
export interface StartExecutionCursor {
|
|
840
|
+
phaseId: StartExecutionPhaseId;
|
|
841
|
+
stepId: string;
|
|
842
|
+
status: StartExecutionStatus;
|
|
843
|
+
kind: StartExecutionStepKind;
|
|
844
|
+
label: string;
|
|
845
|
+
command?: string;
|
|
846
|
+
tool?: string;
|
|
847
|
+
args?: Record<string, unknown>;
|
|
848
|
+
instruction?: string;
|
|
849
|
+
placeholder?: string;
|
|
850
|
+
blockedBy?: string[];
|
|
851
|
+
unlocks?: string[];
|
|
852
|
+
reason: string;
|
|
853
|
+
}
|
|
854
|
+
export interface StartExecutionPlan {
|
|
855
|
+
summary: string;
|
|
856
|
+
currentPhase: StartExecutionPhaseId;
|
|
857
|
+
cursor: StartExecutionCursor;
|
|
858
|
+
phases: StartExecutionPhase[];
|
|
859
|
+
}
|
|
860
|
+
export interface StartMissionRunbook {
|
|
861
|
+
title: string;
|
|
862
|
+
status: StartMissionControlStatus;
|
|
863
|
+
currentPhase: StartExecutionPhaseId;
|
|
864
|
+
currentStep: StartExecutionCursor;
|
|
865
|
+
resume: StartMissionResume;
|
|
866
|
+
readyCommandBlock: string;
|
|
867
|
+
blockedInputSummary?: string;
|
|
868
|
+
markdown: string;
|
|
869
|
+
}
|
|
870
|
+
export interface StartMissionReviewWorktree {
|
|
871
|
+
available: boolean;
|
|
872
|
+
clean: boolean;
|
|
873
|
+
changedFileCount: number;
|
|
874
|
+
files: string[];
|
|
875
|
+
baseRef: string | null;
|
|
876
|
+
summary: string;
|
|
877
|
+
reason?: string;
|
|
878
|
+
}
|
|
879
|
+
export interface StartMissionReviewProof {
|
|
880
|
+
summary: string;
|
|
881
|
+
commands: string[];
|
|
882
|
+
toolCalls?: StartMissionProofToolCall[];
|
|
883
|
+
items?: StartMissionProofItem[];
|
|
884
|
+
}
|
|
885
|
+
export type StartMissionReviewBlockedAction = 'next_slice' | 'release' | 'publish' | 'deploy' | 'push' | 'merge' | 'version_bump';
|
|
886
|
+
export interface StartMissionReviewPolicy {
|
|
887
|
+
approvalRequired: true;
|
|
888
|
+
blockedActions: StartMissionReviewBlockedAction[];
|
|
889
|
+
summary: string;
|
|
890
|
+
}
|
|
891
|
+
export interface StartMissionReviewDecision {
|
|
892
|
+
id: 'approve_next_slice' | 'request_changes' | 'review_version_candidate';
|
|
893
|
+
label: string;
|
|
894
|
+
description: string;
|
|
895
|
+
consequence: string;
|
|
896
|
+
reply: string;
|
|
897
|
+
}
|
|
898
|
+
export interface StartMissionReviewGate {
|
|
899
|
+
title: string;
|
|
900
|
+
required: true;
|
|
901
|
+
status: StartMissionControlStatus;
|
|
902
|
+
stopCondition: string;
|
|
903
|
+
reviewPrompt: string;
|
|
904
|
+
checklist: string[];
|
|
905
|
+
doneWhen: string[];
|
|
906
|
+
policy: StartMissionReviewPolicy;
|
|
907
|
+
decisions: StartMissionReviewDecision[];
|
|
908
|
+
commands: string[];
|
|
909
|
+
worktree: StartMissionReviewWorktree;
|
|
910
|
+
proof: StartMissionReviewProof;
|
|
911
|
+
markdown: string;
|
|
912
|
+
}
|
|
913
|
+
export interface StartMissionTaskCard {
|
|
914
|
+
title: string;
|
|
915
|
+
status: StartMissionControlStatus;
|
|
916
|
+
currentPhase: StartExecutionPhaseId;
|
|
917
|
+
currentStep: StartExecutionCursor;
|
|
918
|
+
markdown: string;
|
|
919
|
+
}
|
|
920
|
+
export interface StartMissionControl {
|
|
921
|
+
intent?: string;
|
|
922
|
+
status: StartMissionControlStatus;
|
|
923
|
+
headline: string;
|
|
924
|
+
whyNow: string;
|
|
925
|
+
primaryAction: PreflightSuggestedAction;
|
|
926
|
+
actionPlan: PreflightSuggestedAction[];
|
|
927
|
+
readyActions: PreflightSuggestedAction[];
|
|
928
|
+
routedIntent?: StartRoutedIntent;
|
|
929
|
+
alternatives?: StartRoutedIntent[];
|
|
930
|
+
unresolvedInputs: StartUnresolvedInput[];
|
|
931
|
+
guardrails: PreflightSuggestedAction[];
|
|
932
|
+
successCriteria: string[];
|
|
933
|
+
proofSummary: string;
|
|
934
|
+
proofCommands: string[];
|
|
935
|
+
resume: StartMissionResume;
|
|
936
|
+
handoff: StartMissionHandoff;
|
|
937
|
+
executionPlan: StartExecutionPlan;
|
|
938
|
+
runbook: StartMissionRunbook;
|
|
939
|
+
reviewGate: StartMissionReviewGate;
|
|
940
|
+
taskCard: StartMissionTaskCard;
|
|
941
|
+
handoffPrompt: string;
|
|
942
|
+
}
|
|
671
943
|
export interface StartReport {
|
|
672
944
|
schemaVersion: 1;
|
|
673
945
|
readOnly: true;
|
|
674
946
|
rootPath: string;
|
|
675
947
|
mode: WorkplanMode;
|
|
948
|
+
modeSource: StartModeSource;
|
|
949
|
+
modeReason: string;
|
|
676
950
|
summary: string;
|
|
677
951
|
setup: {
|
|
678
952
|
overall: 'pass' | 'warn' | 'fail' | 'info';
|
|
@@ -687,6 +961,7 @@ export interface StartReport {
|
|
|
687
961
|
};
|
|
688
962
|
recommendedWorkflow: StartWorkflowRecommendation;
|
|
689
963
|
firstTenMinutes: StartFirstTenMinutes;
|
|
964
|
+
missionControl: StartMissionControl;
|
|
690
965
|
coordinationHints: SessionCoordinationHint[];
|
|
691
966
|
evidence: {
|
|
692
967
|
workplanVerdict: PreflightVerdict;
|