prism-pr 1.0.0-alpha.47
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 +964 -0
- package/bin/run.js +9 -0
- package/dist/ai/agents/architecture-reviewer.d.ts +3 -0
- package/dist/ai/agents/architecture-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/architecture-reviewer.js +67 -0
- package/dist/ai/agents/architecture-reviewer.js.map +1 -0
- package/dist/ai/agents/blade-reviewer.d.ts +3 -0
- package/dist/ai/agents/blade-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/blade-reviewer.js +59 -0
- package/dist/ai/agents/blade-reviewer.js.map +1 -0
- package/dist/ai/agents/config-reviewer.d.ts +3 -0
- package/dist/ai/agents/config-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/config-reviewer.js +106 -0
- package/dist/ai/agents/config-reviewer.js.map +1 -0
- package/dist/ai/agents/csharp-reviewer.d.ts +3 -0
- package/dist/ai/agents/csharp-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/csharp-reviewer.js +59 -0
- package/dist/ai/agents/csharp-reviewer.js.map +1 -0
- package/dist/ai/agents/css-reviewer.d.ts +3 -0
- package/dist/ai/agents/css-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/css-reviewer.js +65 -0
- package/dist/ai/agents/css-reviewer.js.map +1 -0
- package/dist/ai/agents/framework-rules/index.d.ts +33 -0
- package/dist/ai/agents/framework-rules/index.d.ts.map +1 -0
- package/dist/ai/agents/framework-rules/index.js +67 -0
- package/dist/ai/agents/framework-rules/index.js.map +1 -0
- package/dist/ai/agents/framework-rules/normalize.d.ts +40 -0
- package/dist/ai/agents/framework-rules/normalize.d.ts.map +1 -0
- package/dist/ai/agents/framework-rules/normalize.js +102 -0
- package/dist/ai/agents/framework-rules/normalize.js.map +1 -0
- package/dist/ai/agents/framework-rules/routing-map.d.ts +3 -0
- package/dist/ai/agents/framework-rules/routing-map.d.ts.map +1 -0
- package/dist/ai/agents/framework-rules/routing-map.js +15 -0
- package/dist/ai/agents/framework-rules/routing-map.js.map +1 -0
- package/dist/ai/agents/html-reviewer.d.ts +3 -0
- package/dist/ai/agents/html-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/html-reviewer.js +61 -0
- package/dist/ai/agents/html-reviewer.js.map +1 -0
- package/dist/ai/agents/performance-reviewer.d.ts +3 -0
- package/dist/ai/agents/performance-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/performance-reviewer.js +60 -0
- package/dist/ai/agents/performance-reviewer.js.map +1 -0
- package/dist/ai/agents/php-reviewer.d.ts +3 -0
- package/dist/ai/agents/php-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/php-reviewer.js +62 -0
- package/dist/ai/agents/php-reviewer.js.map +1 -0
- package/dist/ai/agents/prompts/architecture-reviewer.txt +39 -0
- package/dist/ai/agents/prompts/blade-reviewer.txt +39 -0
- package/dist/ai/agents/prompts/config-reviewer.txt +47 -0
- package/dist/ai/agents/prompts/csharp-reviewer.txt +39 -0
- package/dist/ai/agents/prompts/css-reviewer.txt +41 -0
- package/dist/ai/agents/prompts/html-reviewer.txt +43 -0
- package/dist/ai/agents/prompts/performance-reviewer.txt +38 -0
- package/dist/ai/agents/prompts/php-reviewer.txt +87 -0
- package/dist/ai/agents/prompts/python-reviewer.txt +42 -0
- package/dist/ai/agents/prompts/security-reviewer.txt +36 -0
- package/dist/ai/agents/prompts/sql-reviewer.txt +43 -0
- package/dist/ai/agents/prompts/testing-reviewer.txt +38 -0
- package/dist/ai/agents/prompts/ts-reviewer.txt +54 -0
- package/dist/ai/agents/prompts/ux-text-reviewer.txt +68 -0
- package/dist/ai/agents/python-reviewer.d.ts +3 -0
- package/dist/ai/agents/python-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/python-reviewer.js +59 -0
- package/dist/ai/agents/python-reviewer.js.map +1 -0
- package/dist/ai/agents/registry.d.ts +20 -0
- package/dist/ai/agents/registry.d.ts.map +1 -0
- package/dist/ai/agents/registry.js +65 -0
- package/dist/ai/agents/registry.js.map +1 -0
- package/dist/ai/agents/security-reviewer.d.ts +3 -0
- package/dist/ai/agents/security-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/security-reviewer.js +69 -0
- package/dist/ai/agents/security-reviewer.js.map +1 -0
- package/dist/ai/agents/shared/content-builder.d.ts +14 -0
- package/dist/ai/agents/shared/content-builder.d.ts.map +1 -0
- package/dist/ai/agents/shared/content-builder.js +158 -0
- package/dist/ai/agents/shared/content-builder.js.map +1 -0
- package/dist/ai/agents/shared/finding-schema.d.ts +54 -0
- package/dist/ai/agents/shared/finding-schema.d.ts.map +1 -0
- package/dist/ai/agents/shared/finding-schema.js +65 -0
- package/dist/ai/agents/shared/finding-schema.js.map +1 -0
- package/dist/ai/agents/shared/line-validator.d.ts +8 -0
- package/dist/ai/agents/shared/line-validator.d.ts.map +1 -0
- package/dist/ai/agents/shared/line-validator.js +12 -0
- package/dist/ai/agents/shared/line-validator.js.map +1 -0
- package/dist/ai/agents/shared/prompt-builder.d.ts +3 -0
- package/dist/ai/agents/shared/prompt-builder.d.ts.map +1 -0
- package/dist/ai/agents/shared/prompt-builder.js +68 -0
- package/dist/ai/agents/shared/prompt-builder.js.map +1 -0
- package/dist/ai/agents/sql-reviewer.d.ts +3 -0
- package/dist/ai/agents/sql-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/sql-reviewer.js +61 -0
- package/dist/ai/agents/sql-reviewer.js.map +1 -0
- package/dist/ai/agents/testing-reviewer.d.ts +3 -0
- package/dist/ai/agents/testing-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/testing-reviewer.js +80 -0
- package/dist/ai/agents/testing-reviewer.js.map +1 -0
- package/dist/ai/agents/ts-reviewer.d.ts +3 -0
- package/dist/ai/agents/ts-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/ts-reviewer.js +63 -0
- package/dist/ai/agents/ts-reviewer.js.map +1 -0
- package/dist/ai/agents/ux-text-reviewer.d.ts +3 -0
- package/dist/ai/agents/ux-text-reviewer.d.ts.map +1 -0
- package/dist/ai/agents/ux-text-reviewer.js +116 -0
- package/dist/ai/agents/ux-text-reviewer.js.map +1 -0
- package/dist/ai/orchestrator/agent-classifier.d.ts +28 -0
- package/dist/ai/orchestrator/agent-classifier.d.ts.map +1 -0
- package/dist/ai/orchestrator/agent-classifier.js +137 -0
- package/dist/ai/orchestrator/agent-classifier.js.map +1 -0
- package/dist/ai/orchestrator/consolidation.d.ts +12 -0
- package/dist/ai/orchestrator/consolidation.d.ts.map +1 -0
- package/dist/ai/orchestrator/consolidation.js +34 -0
- package/dist/ai/orchestrator/consolidation.js.map +1 -0
- package/dist/ai/orchestrator/context-analyzer.d.ts +47 -0
- package/dist/ai/orchestrator/context-analyzer.d.ts.map +1 -0
- package/dist/ai/orchestrator/context-analyzer.js +368 -0
- package/dist/ai/orchestrator/context-analyzer.js.map +1 -0
- package/dist/ai/orchestrator/deduplicator.d.ts +43 -0
- package/dist/ai/orchestrator/deduplicator.d.ts.map +1 -0
- package/dist/ai/orchestrator/deduplicator.js +97 -0
- package/dist/ai/orchestrator/deduplicator.js.map +1 -0
- package/dist/ai/orchestrator/orchestrator.d.ts +57 -0
- package/dist/ai/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/ai/orchestrator/orchestrator.js +181 -0
- package/dist/ai/orchestrator/orchestrator.js.map +1 -0
- package/dist/ai/orchestrator/rule-based-strategy.d.ts +20 -0
- package/dist/ai/orchestrator/rule-based-strategy.d.ts.map +1 -0
- package/dist/ai/orchestrator/rule-based-strategy.js +55 -0
- package/dist/ai/orchestrator/rule-based-strategy.js.map +1 -0
- package/dist/ai/orchestrator/semaphore.d.ts +25 -0
- package/dist/ai/orchestrator/semaphore.d.ts.map +1 -0
- package/dist/ai/orchestrator/semaphore.js +52 -0
- package/dist/ai/orchestrator/semaphore.js.map +1 -0
- package/dist/ai/orchestrator/severity-pipeline.d.ts +21 -0
- package/dist/ai/orchestrator/severity-pipeline.d.ts.map +1 -0
- package/dist/ai/orchestrator/severity-pipeline.js +69 -0
- package/dist/ai/orchestrator/severity-pipeline.js.map +1 -0
- package/dist/ai/orchestrator/strategy.d.ts +20 -0
- package/dist/ai/orchestrator/strategy.d.ts.map +1 -0
- package/dist/ai/orchestrator/strategy.js +2 -0
- package/dist/ai/orchestrator/strategy.js.map +1 -0
- package/dist/ai/providers/anthropic-provider.d.ts +14 -0
- package/dist/ai/providers/anthropic-provider.d.ts.map +1 -0
- package/dist/ai/providers/anthropic-provider.js +108 -0
- package/dist/ai/providers/anthropic-provider.js.map +1 -0
- package/dist/ai/providers/claude-code-provider.d.ts +12 -0
- package/dist/ai/providers/claude-code-provider.d.ts.map +1 -0
- package/dist/ai/providers/claude-code-provider.js +103 -0
- package/dist/ai/providers/claude-code-provider.js.map +1 -0
- package/dist/ai/providers/errors.d.ts +22 -0
- package/dist/ai/providers/errors.d.ts.map +1 -0
- package/dist/ai/providers/errors.js +44 -0
- package/dist/ai/providers/errors.js.map +1 -0
- package/dist/ai/skills/skill-registry.d.ts +21 -0
- package/dist/ai/skills/skill-registry.d.ts.map +1 -0
- package/dist/ai/skills/skill-registry.js +27 -0
- package/dist/ai/skills/skill-registry.js.map +1 -0
- package/dist/ai/text-extractor/extractor.d.ts +15 -0
- package/dist/ai/text-extractor/extractor.d.ts.map +1 -0
- package/dist/ai/text-extractor/extractor.js +63 -0
- package/dist/ai/text-extractor/extractor.js.map +1 -0
- package/dist/ai/text-extractor/index.d.ts +4 -0
- package/dist/ai/text-extractor/index.d.ts.map +1 -0
- package/dist/ai/text-extractor/index.js +3 -0
- package/dist/ai/text-extractor/index.js.map +1 -0
- package/dist/ai/text-extractor/patterns.d.ts +21 -0
- package/dist/ai/text-extractor/patterns.d.ts.map +1 -0
- package/dist/ai/text-extractor/patterns.js +169 -0
- package/dist/ai/text-extractor/patterns.js.map +1 -0
- package/dist/ai/text-extractor/types.d.ts +47 -0
- package/dist/ai/text-extractor/types.d.ts.map +1 -0
- package/dist/ai/text-extractor/types.js +2 -0
- package/dist/ai/text-extractor/types.js.map +1 -0
- package/dist/bitbucket/client.d.ts +38 -0
- package/dist/bitbucket/client.d.ts.map +1 -0
- package/dist/bitbucket/client.js +448 -0
- package/dist/bitbucket/client.js.map +1 -0
- package/dist/bitbucket/errors.d.ts +75 -0
- package/dist/bitbucket/errors.d.ts.map +1 -0
- package/dist/bitbucket/errors.js +127 -0
- package/dist/bitbucket/errors.js.map +1 -0
- package/dist/bitbucket/mappers.d.ts +3 -0
- package/dist/bitbucket/mappers.d.ts.map +1 -0
- package/dist/bitbucket/mappers.js +14 -0
- package/dist/bitbucket/mappers.js.map +1 -0
- package/dist/commands/guard/check.d.ts +19 -0
- package/dist/commands/guard/check.d.ts.map +1 -0
- package/dist/commands/guard/check.js +224 -0
- package/dist/commands/guard/check.js.map +1 -0
- package/dist/commands/guard/index.d.ts +7 -0
- package/dist/commands/guard/index.d.ts.map +1 -0
- package/dist/commands/guard/index.js +65 -0
- package/dist/commands/guard/index.js.map +1 -0
- package/dist/commands/interactive.d.ts +10 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +88 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/login.d.ts +35 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +164 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +12 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +23 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/review/start.d.ts +22 -0
- package/dist/commands/review/start.d.ts.map +1 -0
- package/dist/commands/review/start.js +120 -0
- package/dist/commands/review/start.js.map +1 -0
- package/dist/commands/rules/push.d.ts +13 -0
- package/dist/commands/rules/push.d.ts.map +1 -0
- package/dist/commands/rules/push.js +75 -0
- package/dist/commands/rules/push.js.map +1 -0
- package/dist/commands/rules/stats.d.ts +14 -0
- package/dist/commands/rules/stats.d.ts.map +1 -0
- package/dist/commands/rules/stats.js +101 -0
- package/dist/commands/rules/stats.js.map +1 -0
- package/dist/commands/rules/sync.d.ts +15 -0
- package/dist/commands/rules/sync.d.ts.map +1 -0
- package/dist/commands/rules/sync.js +144 -0
- package/dist/commands/rules/sync.js.map +1 -0
- package/dist/config/config-manager.d.ts +14 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +85 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/convention-builder.d.ts +13 -0
- package/dist/config/convention-builder.d.ts.map +1 -0
- package/dist/config/convention-builder.js +31 -0
- package/dist/config/convention-builder.js.map +1 -0
- package/dist/config/credentials.d.ts +14 -0
- package/dist/config/credentials.d.ts.map +1 -0
- package/dist/config/credentials.js +85 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/config/encryption.d.ts +20 -0
- package/dist/config/encryption.d.ts.map +1 -0
- package/dist/config/encryption.js +94 -0
- package/dist/config/encryption.js.map +1 -0
- package/dist/config/repo-config-loader.d.ts +34 -0
- package/dist/config/repo-config-loader.d.ts.map +1 -0
- package/dist/config/repo-config-loader.js +103 -0
- package/dist/config/repo-config-loader.js.map +1 -0
- package/dist/core/cli-workflow-callbacks.d.ts +35 -0
- package/dist/core/cli-workflow-callbacks.d.ts.map +1 -0
- package/dist/core/cli-workflow-callbacks.js +141 -0
- package/dist/core/cli-workflow-callbacks.js.map +1 -0
- package/dist/core/comment-publisher.d.ts +61 -0
- package/dist/core/comment-publisher.d.ts.map +1 -0
- package/dist/core/comment-publisher.js +172 -0
- package/dist/core/comment-publisher.js.map +1 -0
- package/dist/core/integrity-checker.d.ts +22 -0
- package/dist/core/integrity-checker.d.ts.map +1 -0
- package/dist/core/integrity-checker.js +83 -0
- package/dist/core/integrity-checker.js.map +1 -0
- package/dist/core/review-workflow.d.ts +34 -0
- package/dist/core/review-workflow.d.ts.map +1 -0
- package/dist/core/review-workflow.js +21 -0
- package/dist/core/review-workflow.js.map +1 -0
- package/dist/core/session-manager.d.ts +107 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +164 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/workflow-callbacks.d.ts +74 -0
- package/dist/core/workflow-callbacks.d.ts.map +1 -0
- package/dist/core/workflow-callbacks.js +2 -0
- package/dist/core/workflow-callbacks.js.map +1 -0
- package/dist/core/workflow-engine.d.ts +48 -0
- package/dist/core/workflow-engine.d.ts.map +1 -0
- package/dist/core/workflow-engine.js +442 -0
- package/dist/core/workflow-engine.js.map +1 -0
- package/dist/errors/base.d.ts +6 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +13 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/config-error.d.ts +5 -0
- package/dist/errors/config-error.d.ts.map +1 -0
- package/dist/errors/config-error.js +9 -0
- package/dist/errors/config-error.js.map +1 -0
- package/dist/errors/index.d.ts +5 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +5 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/validation-error.d.ts +5 -0
- package/dist/errors/validation-error.d.ts.map +1 -0
- package/dist/errors/validation-error.js +9 -0
- package/dist/errors/validation-error.js.map +1 -0
- package/dist/errors/workflow-error.d.ts +6 -0
- package/dist/errors/workflow-error.d.ts.map +1 -0
- package/dist/errors/workflow-error.js +11 -0
- package/dist/errors/workflow-error.js.map +1 -0
- package/dist/guard/ast-grep-strategy.d.ts +25 -0
- package/dist/guard/ast-grep-strategy.d.ts.map +1 -0
- package/dist/guard/ast-grep-strategy.js +112 -0
- package/dist/guard/ast-grep-strategy.js.map +1 -0
- package/dist/guard/diff-pattern-matcher.d.ts +52 -0
- package/dist/guard/diff-pattern-matcher.d.ts.map +1 -0
- package/dist/guard/diff-pattern-matcher.js +325 -0
- package/dist/guard/diff-pattern-matcher.js.map +1 -0
- package/dist/guard/file-fetcher.d.ts +3 -0
- package/dist/guard/file-fetcher.d.ts.map +1 -0
- package/dist/guard/file-fetcher.js +21 -0
- package/dist/guard/file-fetcher.js.map +1 -0
- package/dist/guard/guard-engine.d.ts +8 -0
- package/dist/guard/guard-engine.d.ts.map +1 -0
- package/dist/guard/guard-engine.js +78 -0
- package/dist/guard/guard-engine.js.map +1 -0
- package/dist/guard/match-strategy.d.ts +14 -0
- package/dist/guard/match-strategy.d.ts.map +1 -0
- package/dist/guard/match-strategy.js +7 -0
- package/dist/guard/match-strategy.js.map +1 -0
- package/dist/guard/patterns-loader.d.ts +16 -0
- package/dist/guard/patterns-loader.d.ts.map +1 -0
- package/dist/guard/patterns-loader.js +61 -0
- package/dist/guard/patterns-loader.js.map +1 -0
- package/dist/guard/types.d.ts +61 -0
- package/dist/guard/types.d.ts.map +1 -0
- package/dist/guard/types.js +2 -0
- package/dist/guard/types.js.map +1 -0
- package/dist/memory/engram-client.d.ts +15 -0
- package/dist/memory/engram-client.d.ts.map +1 -0
- package/dist/memory/engram-client.js +167 -0
- package/dist/memory/engram-client.js.map +1 -0
- package/dist/memory/review-memory-service.d.ts +13 -0
- package/dist/memory/review-memory-service.d.ts.map +1 -0
- package/dist/memory/review-memory-service.js +43 -0
- package/dist/memory/review-memory-service.js.map +1 -0
- package/dist/persistence/database.d.ts +8 -0
- package/dist/persistence/database.d.ts.map +1 -0
- package/dist/persistence/database.js +58 -0
- package/dist/persistence/database.js.map +1 -0
- package/dist/persistence/false-positive-repository.d.ts +12 -0
- package/dist/persistence/false-positive-repository.d.ts.map +1 -0
- package/dist/persistence/false-positive-repository.js +58 -0
- package/dist/persistence/false-positive-repository.js.map +1 -0
- package/dist/persistence/migrations/0000_peaceful_blur.sql +66 -0
- package/dist/persistence/migrations/0001_phase3a_schema.sql +15 -0
- package/dist/persistence/migrations/0002_stack_profile.sql +1 -0
- package/dist/persistence/migrations/0003_known_workspaces.sql +5 -0
- package/dist/persistence/migrations/0004_review_memory.sql +24 -0
- package/dist/persistence/migrations/meta/0000_snapshot.json +468 -0
- package/dist/persistence/migrations/meta/_journal.json +41 -0
- package/dist/persistence/profile-repository.d.ts +33 -0
- package/dist/persistence/profile-repository.d.ts.map +1 -0
- package/dist/persistence/profile-repository.js +94 -0
- package/dist/persistence/profile-repository.js.map +1 -0
- package/dist/persistence/repository.d.ts +70 -0
- package/dist/persistence/repository.d.ts.map +1 -0
- package/dist/persistence/repository.js +225 -0
- package/dist/persistence/repository.js.map +1 -0
- package/dist/persistence/schema.d.ts +1333 -0
- package/dist/persistence/schema.d.ts.map +1 -0
- package/dist/persistence/schema.js +92 -0
- package/dist/persistence/schema.js.map +1 -0
- package/dist/persistence/workspace-repository.d.ts +14 -0
- package/dist/persistence/workspace-repository.d.ts.map +1 -0
- package/dist/persistence/workspace-repository.js +30 -0
- package/dist/persistence/workspace-repository.js.map +1 -0
- package/dist/rules-engine/finding-aggregator.d.ts +13 -0
- package/dist/rules-engine/finding-aggregator.d.ts.map +1 -0
- package/dist/rules-engine/finding-aggregator.js +135 -0
- package/dist/rules-engine/finding-aggregator.js.map +1 -0
- package/dist/rules-engine/pattern-generator.d.ts +26 -0
- package/dist/rules-engine/pattern-generator.d.ts.map +1 -0
- package/dist/rules-engine/pattern-generator.js +116 -0
- package/dist/rules-engine/pattern-generator.js.map +1 -0
- package/dist/rules-engine/rule-prompt-builder.d.ts +32 -0
- package/dist/rules-engine/rule-prompt-builder.d.ts.map +1 -0
- package/dist/rules-engine/rule-prompt-builder.js +124 -0
- package/dist/rules-engine/rule-prompt-builder.js.map +1 -0
- package/dist/rules-engine/types.d.ts +80 -0
- package/dist/rules-engine/types.d.ts.map +1 -0
- package/dist/rules-engine/types.js +18 -0
- package/dist/rules-engine/types.js.map +1 -0
- package/dist/rules-repo/rules-cache.d.ts +14 -0
- package/dist/rules-repo/rules-cache.d.ts.map +1 -0
- package/dist/rules-repo/rules-cache.js +43 -0
- package/dist/rules-repo/rules-cache.js.map +1 -0
- package/dist/rules-repo/rules-repo-client.d.ts +27 -0
- package/dist/rules-repo/rules-repo-client.d.ts.map +1 -0
- package/dist/rules-repo/rules-repo-client.js +85 -0
- package/dist/rules-repo/rules-repo-client.js.map +1 -0
- package/dist/rules-repo/types.d.ts +16 -0
- package/dist/rules-repo/types.d.ts.map +1 -0
- package/dist/rules-repo/types.js +10 -0
- package/dist/rules-repo/types.js.map +1 -0
- package/dist/stack-detector/ai-stack-fallback.d.ts +12 -0
- package/dist/stack-detector/ai-stack-fallback.d.ts.map +1 -0
- package/dist/stack-detector/ai-stack-fallback.js +67 -0
- package/dist/stack-detector/ai-stack-fallback.js.map +1 -0
- package/dist/stack-detector/ai-stack-schema.d.ts +28 -0
- package/dist/stack-detector/ai-stack-schema.d.ts.map +1 -0
- package/dist/stack-detector/ai-stack-schema.js +13 -0
- package/dist/stack-detector/ai-stack-schema.js.map +1 -0
- package/dist/stack-detector/formatter.d.ts +7 -0
- package/dist/stack-detector/formatter.d.ts.map +1 -0
- package/dist/stack-detector/formatter.js +37 -0
- package/dist/stack-detector/formatter.js.map +1 -0
- package/dist/stack-detector/index.d.ts +7 -0
- package/dist/stack-detector/index.d.ts.map +1 -0
- package/dist/stack-detector/index.js +5 -0
- package/dist/stack-detector/index.js.map +1 -0
- package/dist/stack-detector/merge-profiles.d.ts +5 -0
- package/dist/stack-detector/merge-profiles.d.ts.map +1 -0
- package/dist/stack-detector/merge-profiles.js +36 -0
- package/dist/stack-detector/merge-profiles.js.map +1 -0
- package/dist/stack-detector/parsers.d.ts +12 -0
- package/dist/stack-detector/parsers.d.ts.map +1 -0
- package/dist/stack-detector/parsers.js +259 -0
- package/dist/stack-detector/parsers.js.map +1 -0
- package/dist/stack-detector/stack-detector.d.ts +11 -0
- package/dist/stack-detector/stack-detector.d.ts.map +1 -0
- package/dist/stack-detector/stack-detector.js +83 -0
- package/dist/stack-detector/stack-detector.js.map +1 -0
- package/dist/stack-detector/types.d.ts +13 -0
- package/dist/stack-detector/types.d.ts.map +1 -0
- package/dist/stack-detector/types.js +2 -0
- package/dist/stack-detector/types.js.map +1 -0
- package/dist/tui/app.d.ts +9 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +45 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/callbacks/tui-workflow-callbacks.d.ts +32 -0
- package/dist/tui/callbacks/tui-workflow-callbacks.d.ts.map +1 -0
- package/dist/tui/callbacks/tui-workflow-callbacks.js +88 -0
- package/dist/tui/callbacks/tui-workflow-callbacks.js.map +1 -0
- package/dist/tui/components/key-hint.d.ts +7 -0
- package/dist/tui/components/key-hint.d.ts.map +1 -0
- package/dist/tui/components/key-hint.js +6 -0
- package/dist/tui/components/key-hint.js.map +1 -0
- package/dist/tui/components/scroll-list.d.ts +20 -0
- package/dist/tui/components/scroll-list.d.ts.map +1 -0
- package/dist/tui/components/scroll-list.js +85 -0
- package/dist/tui/components/scroll-list.js.map +1 -0
- package/dist/tui/components/searchable-list.d.ts +15 -0
- package/dist/tui/components/searchable-list.d.ts.map +1 -0
- package/dist/tui/components/searchable-list.js +97 -0
- package/dist/tui/components/searchable-list.js.map +1 -0
- package/dist/tui/components/severity-badge.d.ts +6 -0
- package/dist/tui/components/severity-badge.d.ts.map +1 -0
- package/dist/tui/components/severity-badge.js +17 -0
- package/dist/tui/components/severity-badge.js.map +1 -0
- package/dist/tui/components/severity-selector.d.ts +9 -0
- package/dist/tui/components/severity-selector.d.ts.map +1 -0
- package/dist/tui/components/severity-selector.js +29 -0
- package/dist/tui/components/severity-selector.js.map +1 -0
- package/dist/tui/components/spinner.d.ts +6 -0
- package/dist/tui/components/spinner.d.ts.map +1 -0
- package/dist/tui/components/spinner.js +19 -0
- package/dist/tui/components/spinner.js.map +1 -0
- package/dist/tui/components/status-bar.d.ts +10 -0
- package/dist/tui/components/status-bar.d.ts.map +1 -0
- package/dist/tui/components/status-bar.js +7 -0
- package/dist/tui/components/status-bar.js.map +1 -0
- package/dist/tui/deps-context.d.ts +27 -0
- package/dist/tui/deps-context.d.ts.map +1 -0
- package/dist/tui/deps-context.js +9 -0
- package/dist/tui/deps-context.js.map +1 -0
- package/dist/tui/error-boundary.d.ts +16 -0
- package/dist/tui/error-boundary.d.ts.map +1 -0
- package/dist/tui/error-boundary.js +30 -0
- package/dist/tui/error-boundary.js.map +1 -0
- package/dist/tui/hooks/use-agent-recommendations.d.ts +10 -0
- package/dist/tui/hooks/use-agent-recommendations.d.ts.map +1 -0
- package/dist/tui/hooks/use-agent-recommendations.js +66 -0
- package/dist/tui/hooks/use-agent-recommendations.js.map +1 -0
- package/dist/tui/hooks/use-auth.d.ts +14 -0
- package/dist/tui/hooks/use-auth.d.ts.map +1 -0
- package/dist/tui/hooks/use-auth.js +32 -0
- package/dist/tui/hooks/use-auth.js.map +1 -0
- package/dist/tui/hooks/use-bitbucket.d.ts +18 -0
- package/dist/tui/hooks/use-bitbucket.d.ts.map +1 -0
- package/dist/tui/hooks/use-bitbucket.js +31 -0
- package/dist/tui/hooks/use-bitbucket.js.map +1 -0
- package/dist/tui/hooks/use-review.d.ts +6 -0
- package/dist/tui/hooks/use-review.d.ts.map +1 -0
- package/dist/tui/hooks/use-review.js +24 -0
- package/dist/tui/hooks/use-review.js.map +1 -0
- package/dist/tui/hooks/use-session.d.ts +47 -0
- package/dist/tui/hooks/use-session.d.ts.map +1 -0
- package/dist/tui/hooks/use-session.js +17 -0
- package/dist/tui/hooks/use-session.js.map +1 -0
- package/dist/tui/screen-router.d.ts +3 -0
- package/dist/tui/screen-router.d.ts.map +1 -0
- package/dist/tui/screen-router.js +73 -0
- package/dist/tui/screen-router.js.map +1 -0
- package/dist/tui/screens/agent-select.d.ts +3 -0
- package/dist/tui/screens/agent-select.d.ts.map +1 -0
- package/dist/tui/screens/agent-select.js +173 -0
- package/dist/tui/screens/agent-select.js.map +1 -0
- package/dist/tui/screens/finding-detail.d.ts +3 -0
- package/dist/tui/screens/finding-detail.d.ts.map +1 -0
- package/dist/tui/screens/finding-detail.js +48 -0
- package/dist/tui/screens/finding-detail.js.map +1 -0
- package/dist/tui/screens/findings-list.d.ts +3 -0
- package/dist/tui/screens/findings-list.d.ts.map +1 -0
- package/dist/tui/screens/findings-list.js +108 -0
- package/dist/tui/screens/findings-list.js.map +1 -0
- package/dist/tui/screens/guard-detail.d.ts +3 -0
- package/dist/tui/screens/guard-detail.d.ts.map +1 -0
- package/dist/tui/screens/guard-detail.js +41 -0
- package/dist/tui/screens/guard-detail.js.map +1 -0
- package/dist/tui/screens/guard-home.d.ts +3 -0
- package/dist/tui/screens/guard-home.d.ts.map +1 -0
- package/dist/tui/screens/guard-home.js +81 -0
- package/dist/tui/screens/guard-home.js.map +1 -0
- package/dist/tui/screens/guard-results.d.ts +3 -0
- package/dist/tui/screens/guard-results.d.ts.map +1 -0
- package/dist/tui/screens/guard-results.js +103 -0
- package/dist/tui/screens/guard-results.js.map +1 -0
- package/dist/tui/screens/guard-running.d.ts +3 -0
- package/dist/tui/screens/guard-running.d.ts.map +1 -0
- package/dist/tui/screens/guard-running.js +92 -0
- package/dist/tui/screens/guard-running.js.map +1 -0
- package/dist/tui/screens/home.d.ts +3 -0
- package/dist/tui/screens/home.d.ts.map +1 -0
- package/dist/tui/screens/home.js +44 -0
- package/dist/tui/screens/home.js.map +1 -0
- package/dist/tui/screens/integrity-report.d.ts +3 -0
- package/dist/tui/screens/integrity-report.d.ts.map +1 -0
- package/dist/tui/screens/integrity-report.js +29 -0
- package/dist/tui/screens/integrity-report.js.map +1 -0
- package/dist/tui/screens/login.d.ts +3 -0
- package/dist/tui/screens/login.d.ts.map +1 -0
- package/dist/tui/screens/login.js +81 -0
- package/dist/tui/screens/login.js.map +1 -0
- package/dist/tui/screens/pr-list.d.ts +3 -0
- package/dist/tui/screens/pr-list.d.ts.map +1 -0
- package/dist/tui/screens/pr-list.js +76 -0
- package/dist/tui/screens/pr-list.js.map +1 -0
- package/dist/tui/screens/publish-confirm.d.ts +3 -0
- package/dist/tui/screens/publish-confirm.d.ts.map +1 -0
- package/dist/tui/screens/publish-confirm.js +42 -0
- package/dist/tui/screens/publish-confirm.js.map +1 -0
- package/dist/tui/screens/publishing.d.ts +3 -0
- package/dist/tui/screens/publishing.d.ts.map +1 -0
- package/dist/tui/screens/publishing.js +50 -0
- package/dist/tui/screens/publishing.js.map +1 -0
- package/dist/tui/screens/repo-select.d.ts +3 -0
- package/dist/tui/screens/repo-select.d.ts.map +1 -0
- package/dist/tui/screens/repo-select.js +76 -0
- package/dist/tui/screens/repo-select.js.map +1 -0
- package/dist/tui/screens/review-running.d.ts +3 -0
- package/dist/tui/screens/review-running.d.ts.map +1 -0
- package/dist/tui/screens/review-running.js +187 -0
- package/dist/tui/screens/review-running.js.map +1 -0
- package/dist/tui/screens/session-detail.d.ts +7 -0
- package/dist/tui/screens/session-detail.d.ts.map +1 -0
- package/dist/tui/screens/session-detail.js +28 -0
- package/dist/tui/screens/session-detail.js.map +1 -0
- package/dist/tui/screens/session-list.d.ts +7 -0
- package/dist/tui/screens/session-list.d.ts.map +1 -0
- package/dist/tui/screens/session-list.js +38 -0
- package/dist/tui/screens/session-list.js.map +1 -0
- package/dist/tui/screens/url-input.d.ts +3 -0
- package/dist/tui/screens/url-input.d.ts.map +1 -0
- package/dist/tui/screens/url-input.js +111 -0
- package/dist/tui/screens/url-input.js.map +1 -0
- package/dist/tui/screens/welcome.d.ts +3 -0
- package/dist/tui/screens/welcome.d.ts.map +1 -0
- package/dist/tui/screens/welcome.js +48 -0
- package/dist/tui/screens/welcome.js.map +1 -0
- package/dist/tui/screens/workspace-select.d.ts +3 -0
- package/dist/tui/screens/workspace-select.d.ts.map +1 -0
- package/dist/tui/screens/workspace-select.js +128 -0
- package/dist/tui/screens/workspace-select.js.map +1 -0
- package/dist/tui/state/router-context.d.ts +14 -0
- package/dist/tui/state/router-context.d.ts.map +1 -0
- package/dist/tui/state/router-context.js +9 -0
- package/dist/tui/state/router-context.js.map +1 -0
- package/dist/tui/state/router-reducer.d.ts +23 -0
- package/dist/tui/state/router-reducer.d.ts.map +1 -0
- package/dist/tui/state/router-reducer.js +21 -0
- package/dist/tui/state/router-reducer.js.map +1 -0
- package/dist/tui/state/tui-context.d.ts +11 -0
- package/dist/tui/state/tui-context.d.ts.map +1 -0
- package/dist/tui/state/tui-context.js +9 -0
- package/dist/tui/state/tui-context.js.map +1 -0
- package/dist/tui/state/tui-reducer.d.ts +212 -0
- package/dist/tui/state/tui-reducer.d.ts.map +1 -0
- package/dist/tui/state/tui-reducer.js +321 -0
- package/dist/tui/state/tui-reducer.js.map +1 -0
- package/dist/tui/utils/group-by-file.d.ts +7 -0
- package/dist/tui/utils/group-by-file.d.ts.map +1 -0
- package/dist/tui/utils/group-by-file.js +18 -0
- package/dist/tui/utils/group-by-file.js.map +1 -0
- package/dist/tui/utils/group-matches-by-file.d.ts +7 -0
- package/dist/tui/utils/group-matches-by-file.d.ts.map +1 -0
- package/dist/tui/utils/group-matches-by-file.js +18 -0
- package/dist/tui/utils/group-matches-by-file.js.map +1 -0
- package/dist/tui/utils/group-repos-by-project.d.ts +9 -0
- package/dist/tui/utils/group-repos-by-project.d.ts.map +1 -0
- package/dist/tui/utils/group-repos-by-project.js +48 -0
- package/dist/tui/utils/group-repos-by-project.js.map +1 -0
- package/dist/types/agent.d.ts +46 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/bitbucket.d.ts +90 -0
- package/dist/types/bitbucket.d.ts.map +1 -0
- package/dist/types/bitbucket.js +2 -0
- package/dist/types/bitbucket.js.map +1 -0
- package/dist/types/config.d.ts +17 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/diff.d.ts +24 -0
- package/dist/types/diff.d.ts.map +1 -0
- package/dist/types/diff.js +2 -0
- package/dist/types/diff.js.map +1 -0
- package/dist/types/engram.d.ts +29 -0
- package/dist/types/engram.d.ts.map +1 -0
- package/dist/types/engram.js +2 -0
- package/dist/types/engram.js.map +1 -0
- package/dist/types/false-positive.d.ts +12 -0
- package/dist/types/false-positive.d.ts.map +1 -0
- package/dist/types/false-positive.js +2 -0
- package/dist/types/false-positive.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/provider.d.ts +31 -0
- package/dist/types/provider.d.ts.map +1 -0
- package/dist/types/provider.js +2 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/repo-config.d.ts +336 -0
- package/dist/types/repo-config.d.ts.map +1 -0
- package/dist/types/repo-config.js +62 -0
- package/dist/types/repo-config.js.map +1 -0
- package/dist/types/review-finding.d.ts +34 -0
- package/dist/types/review-finding.d.ts.map +1 -0
- package/dist/types/review-finding.js +11 -0
- package/dist/types/review-finding.js.map +1 -0
- package/dist/types/review-session.d.ts +21 -0
- package/dist/types/review-session.d.ts.map +1 -0
- package/dist/types/review-session.js +2 -0
- package/dist/types/review-session.js.map +1 -0
- package/dist/types/skill.d.ts +7 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +2 -0
- package/dist/types/skill.js.map +1 -0
- package/dist/utils/comment-formatter.d.ts +19 -0
- package/dist/utils/comment-formatter.d.ts.map +1 -0
- package/dist/utils/comment-formatter.js +53 -0
- package/dist/utils/comment-formatter.js.map +1 -0
- package/dist/utils/cost-estimator.d.ts +19 -0
- package/dist/utils/cost-estimator.d.ts.map +1 -0
- package/dist/utils/cost-estimator.js +32 -0
- package/dist/utils/cost-estimator.js.map +1 -0
- package/dist/utils/diff-parser.d.ts +7 -0
- package/dist/utils/diff-parser.d.ts.map +1 -0
- package/dist/utils/diff-parser.js +175 -0
- package/dist/utils/diff-parser.js.map +1 -0
- package/dist/utils/file-filter.d.ts +16 -0
- package/dist/utils/file-filter.d.ts.map +1 -0
- package/dist/utils/file-filter.js +64 -0
- package/dist/utils/file-filter.js.map +1 -0
- package/dist/utils/hash.d.ts +25 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +45 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/logger.d.ts +17 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +40 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/parse-bitbucket-url.d.ts +12 -0
- package/dist/utils/parse-bitbucket-url.d.ts.map +1 -0
- package/dist/utils/parse-bitbucket-url.js +41 -0
- package/dist/utils/parse-bitbucket-url.js.map +1 -0
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +27 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/summary-generator.d.ts +17 -0
- package/dist/utils/summary-generator.d.ts.map +1 -0
- package/dist/utils/summary-generator.js +76 -0
- package/dist/utils/summary-generator.js.map +1 -0
- package/oclif.manifest.json +467 -0
- package/package.json +100 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for all Bitbucket API errors.
|
|
3
|
+
*/
|
|
4
|
+
export class BitbucketError extends Error {
|
|
5
|
+
statusCode;
|
|
6
|
+
constructor(message, statusCode) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.name = 'BitbucketError';
|
|
9
|
+
this.statusCode = statusCode;
|
|
10
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 401 — Authentication failed (invalid credentials).
|
|
15
|
+
*/
|
|
16
|
+
export class BitbucketAuthError extends BitbucketError {
|
|
17
|
+
constructor(message = 'Authentication failed — invalid credentials') {
|
|
18
|
+
super(message, 401);
|
|
19
|
+
this.name = 'BitbucketAuthError';
|
|
20
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 403 — Access forbidden.
|
|
25
|
+
*/
|
|
26
|
+
export class BitbucketForbiddenError extends BitbucketError {
|
|
27
|
+
constructor(message = 'Access forbidden') {
|
|
28
|
+
super(message, 403);
|
|
29
|
+
this.name = 'BitbucketForbiddenError';
|
|
30
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 404 — Resource not found.
|
|
35
|
+
*/
|
|
36
|
+
export class BitbucketNotFoundError extends BitbucketError {
|
|
37
|
+
resource;
|
|
38
|
+
constructor(resource, message) {
|
|
39
|
+
super(message ?? `Resource not found: ${resource}`, 404);
|
|
40
|
+
this.name = 'BitbucketNotFoundError';
|
|
41
|
+
this.resource = resource;
|
|
42
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 429 — Rate limit exceeded.
|
|
47
|
+
*/
|
|
48
|
+
export class BitbucketRateLimitError extends BitbucketError {
|
|
49
|
+
retryAfter;
|
|
50
|
+
constructor(retryAfter = 60, message) {
|
|
51
|
+
super(message ?? `Rate limit exceeded — retry after ${retryAfter}s`, 429);
|
|
52
|
+
this.name = 'BitbucketRateLimitError';
|
|
53
|
+
this.retryAfter = retryAfter;
|
|
54
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 410 — Endpoint removed (Bitbucket API sunset).
|
|
59
|
+
*/
|
|
60
|
+
export class BitbucketGoneError extends BitbucketError {
|
|
61
|
+
endpoint;
|
|
62
|
+
constructor(endpoint, message) {
|
|
63
|
+
super(message ?? `API endpoint removed (410 Gone): ${endpoint}`, 410);
|
|
64
|
+
this.name = 'BitbucketGoneError';
|
|
65
|
+
this.endpoint = endpoint;
|
|
66
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 409 — Conflict (e.g. PR already approved).
|
|
71
|
+
*/
|
|
72
|
+
export class BitbucketConflictError extends BitbucketError {
|
|
73
|
+
url;
|
|
74
|
+
constructor(url, message) {
|
|
75
|
+
super(message ?? `Conflict (409): ${url}`, 409);
|
|
76
|
+
this.name = 'BitbucketConflictError';
|
|
77
|
+
this.url = url;
|
|
78
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 5xx — Server-side error.
|
|
83
|
+
*/
|
|
84
|
+
export class BitbucketServerError extends BitbucketError {
|
|
85
|
+
constructor(statusCode, message) {
|
|
86
|
+
super(message ?? `Bitbucket server error (${statusCode})`, statusCode);
|
|
87
|
+
this.name = 'BitbucketServerError';
|
|
88
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Request timed out.
|
|
93
|
+
*/
|
|
94
|
+
export class BitbucketTimeoutError extends BitbucketError {
|
|
95
|
+
url;
|
|
96
|
+
constructor(url, message) {
|
|
97
|
+
super(message ?? `Request timed out: ${url}`);
|
|
98
|
+
this.name = 'BitbucketTimeoutError';
|
|
99
|
+
this.url = url;
|
|
100
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Network-level error (ECONNREFUSED, DNS failure, etc.)
|
|
105
|
+
*/
|
|
106
|
+
export class BitbucketNetworkError extends BitbucketError {
|
|
107
|
+
cause;
|
|
108
|
+
constructor(cause, message) {
|
|
109
|
+
super(message ?? `Network error: ${cause.message}`);
|
|
110
|
+
this.name = 'BitbucketNetworkError';
|
|
111
|
+
this.cause = cause;
|
|
112
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 400 — Validation / bad request error.
|
|
117
|
+
*/
|
|
118
|
+
export class BitbucketValidationError extends BitbucketError {
|
|
119
|
+
detail;
|
|
120
|
+
constructor(detail, message) {
|
|
121
|
+
super(message ?? `Validation error: ${detail}`, 400);
|
|
122
|
+
this.name = 'BitbucketValidationError';
|
|
123
|
+
this.detail = detail;
|
|
124
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/bitbucket/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.d.ts","sourceRoot":"","sources":["../../src/bitbucket/mappers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAErF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,2BAA2B,CAYjF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function prMetadataToSummary(meta) {
|
|
2
|
+
return {
|
|
3
|
+
id: meta.id,
|
|
4
|
+
title: meta.title,
|
|
5
|
+
state: meta.state,
|
|
6
|
+
author: meta.author,
|
|
7
|
+
sourceBranch: meta.sourceBranch,
|
|
8
|
+
targetBranch: meta.targetBranch,
|
|
9
|
+
createdOn: meta.createdOn,
|
|
10
|
+
updatedOn: meta.updatedOn,
|
|
11
|
+
commentCount: 0,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../src/bitbucket/mappers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,CAAC;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class GuardCheck extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
workspace: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
repo: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
pr: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
9
|
+
patterns: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'min-severity': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
remote: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
'skip-ast': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
private printStyledOutput;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/guard/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AA2C7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,QAAQ,WAIb;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;MAuCV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IA+F1B,OAAO,CAAC,iBAAiB;CAiE1B"}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import { CredentialManager } from '../../config/credentials.js';
|
|
3
|
+
import { BitbucketClient } from '../../bitbucket/client.js';
|
|
4
|
+
import { runGuard } from '../../guard/guard-engine.js';
|
|
5
|
+
import { DEFAULT_PATTERNS_PATH } from '../../guard/patterns-loader.js';
|
|
6
|
+
import { FINDING_SEVERITIES } from '../../types/review-finding.js';
|
|
7
|
+
import { RulesCache } from '../../rules-repo/rules-cache.js';
|
|
8
|
+
import { RulesRepoClient } from '../../rules-repo/rules-repo-client.js';
|
|
9
|
+
// ── Terminal colors (ANSI) ──────────────────────────────────
|
|
10
|
+
const USE_COLOR = process.stdout.isTTY !== false;
|
|
11
|
+
const a = (code, text) => USE_COLOR ? `\x1b[${code}m${text}\x1b[0m` : text;
|
|
12
|
+
const bold = (t) => a('1', t);
|
|
13
|
+
const dim = (t) => a('2', t);
|
|
14
|
+
const red = (t) => a('31', t);
|
|
15
|
+
const green = (t) => a('32', t);
|
|
16
|
+
const yellow = (t) => a('33', t);
|
|
17
|
+
const cyan = (t) => a('36', t);
|
|
18
|
+
const gray = (t) => a('90', t);
|
|
19
|
+
const bgRed = (t) => a('41;97', t);
|
|
20
|
+
const bgYellow = (t) => a('43;30', t);
|
|
21
|
+
const bgCyan = (t) => a('46;30', t);
|
|
22
|
+
const bgBlue = (t) => a('44;97', t);
|
|
23
|
+
const bgGray = (t) => a('100;97', t);
|
|
24
|
+
const SEV_BADGE = {
|
|
25
|
+
critical: (t) => bgRed(` ${t} `),
|
|
26
|
+
high: (t) => bgRed(` ${t} `),
|
|
27
|
+
medium: (t) => bgYellow(` ${t} `),
|
|
28
|
+
low: (t) => bgBlue(` ${t} `),
|
|
29
|
+
info: (t) => bgGray(` ${t} `),
|
|
30
|
+
};
|
|
31
|
+
const SEV_COLOR = {
|
|
32
|
+
critical: red,
|
|
33
|
+
high: red,
|
|
34
|
+
medium: yellow,
|
|
35
|
+
low: cyan,
|
|
36
|
+
info: gray,
|
|
37
|
+
};
|
|
38
|
+
export default class GuardCheck extends Command {
|
|
39
|
+
static description = 'Check a PR against learned patterns (non-interactive)';
|
|
40
|
+
static examples = [
|
|
41
|
+
'$ prism guard check --workspace acme --repo my-repo --pr 42',
|
|
42
|
+
'$ prism guard check --workspace acme --repo my-repo --pr 42 --min-severity high',
|
|
43
|
+
'$ prism guard check --workspace acme --repo my-repo --pr 42 --json',
|
|
44
|
+
];
|
|
45
|
+
static flags = {
|
|
46
|
+
workspace: Flags.string({
|
|
47
|
+
char: 'w',
|
|
48
|
+
description: 'Bitbucket workspace slug',
|
|
49
|
+
required: true,
|
|
50
|
+
}),
|
|
51
|
+
repo: Flags.string({
|
|
52
|
+
char: 'r',
|
|
53
|
+
description: 'Repository slug',
|
|
54
|
+
required: true,
|
|
55
|
+
}),
|
|
56
|
+
pr: Flags.integer({
|
|
57
|
+
char: 'p',
|
|
58
|
+
description: 'Pull request ID',
|
|
59
|
+
required: true,
|
|
60
|
+
}),
|
|
61
|
+
patterns: Flags.string({
|
|
62
|
+
description: 'Path to patterns file',
|
|
63
|
+
default: DEFAULT_PATTERNS_PATH,
|
|
64
|
+
}),
|
|
65
|
+
'min-severity': Flags.string({
|
|
66
|
+
description: 'Minimum severity to report (critical, high, medium, low, info)',
|
|
67
|
+
}),
|
|
68
|
+
json: Flags.boolean({
|
|
69
|
+
description: 'Output results as JSON',
|
|
70
|
+
default: false,
|
|
71
|
+
}),
|
|
72
|
+
verbose: Flags.boolean({
|
|
73
|
+
description: 'Enable verbose output',
|
|
74
|
+
default: false,
|
|
75
|
+
}),
|
|
76
|
+
remote: Flags.boolean({
|
|
77
|
+
description: 'Fetch patterns from remote rules repository',
|
|
78
|
+
default: false,
|
|
79
|
+
}),
|
|
80
|
+
'skip-ast': Flags.boolean({
|
|
81
|
+
description: 'Skip ast-grep matching, use keyword-only',
|
|
82
|
+
default: false,
|
|
83
|
+
}),
|
|
84
|
+
};
|
|
85
|
+
async run() {
|
|
86
|
+
const { flags } = await this.parse(GuardCheck);
|
|
87
|
+
// Validate min-severity flag
|
|
88
|
+
let minSeverity;
|
|
89
|
+
if (flags['min-severity'] !== undefined) {
|
|
90
|
+
if (!FINDING_SEVERITIES.includes(flags['min-severity'])) {
|
|
91
|
+
this.error(`Invalid --min-severity value: ${flags['min-severity']}. Must be one of: ${FINDING_SEVERITIES.join(', ')}`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
minSeverity = flags['min-severity'];
|
|
95
|
+
}
|
|
96
|
+
// Load credentials
|
|
97
|
+
const credentialManager = new CredentialManager();
|
|
98
|
+
const creds = await credentialManager.load();
|
|
99
|
+
if (!creds) {
|
|
100
|
+
process.stderr.write('No credentials found. Run `prism login` first.\n');
|
|
101
|
+
this.exit(1);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (flags.verbose) {
|
|
105
|
+
process.stdout.write(`Fetching diff for ${flags.workspace}/${flags.repo} PR #${flags.pr}...\n`);
|
|
106
|
+
}
|
|
107
|
+
// Fetch diff
|
|
108
|
+
const bbClient = new BitbucketClient(creds.username, creds.password);
|
|
109
|
+
let rawDiff;
|
|
110
|
+
try {
|
|
111
|
+
rawDiff = await bbClient.getPullRequestDiff(flags.workspace, flags.repo, flags.pr);
|
|
112
|
+
}
|
|
113
|
+
catch (err) {
|
|
114
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
115
|
+
process.stderr.write(`Failed to fetch PR diff: ${msg}\n`);
|
|
116
|
+
this.exit(1);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Use commit hash for file fetching — branch names with '/' break the src API
|
|
120
|
+
const pr = flags['skip-ast'] ? null : await bbClient.getPullRequest(flags.workspace, flags.repo, flags.pr);
|
|
121
|
+
const sourceRef = pr?.sourceHash || pr?.sourceBranch || 'main';
|
|
122
|
+
const fileContentFetcher = flags['skip-ast']
|
|
123
|
+
? undefined
|
|
124
|
+
: async (filePath) => bbClient.getFileContent(flags.workspace, flags.repo, sourceRef, filePath);
|
|
125
|
+
// Build remote rules client if --remote
|
|
126
|
+
let rulesRepoClient;
|
|
127
|
+
if (flags.remote) {
|
|
128
|
+
const cache = new RulesCache();
|
|
129
|
+
rulesRepoClient = new RulesRepoClient(bbClient, {
|
|
130
|
+
rulesWorkspace: 'walzate1',
|
|
131
|
+
rulesRepo: 'prism-rules',
|
|
132
|
+
}, cache);
|
|
133
|
+
}
|
|
134
|
+
if (flags.verbose) {
|
|
135
|
+
process.stdout.write(`Running guard against patterns at ${flags.patterns}...\n`);
|
|
136
|
+
}
|
|
137
|
+
// Run guard
|
|
138
|
+
let result;
|
|
139
|
+
try {
|
|
140
|
+
result = await runGuard({
|
|
141
|
+
rawDiff,
|
|
142
|
+
...(flags.remote ? {} : { patternsPath: flags.patterns }),
|
|
143
|
+
...(minSeverity !== undefined ? { minSeverity } : {}),
|
|
144
|
+
...(flags.remote
|
|
145
|
+
? {
|
|
146
|
+
remoteRules: { workspace: flags.workspace, repo: flags.repo },
|
|
147
|
+
...(rulesRepoClient !== undefined ? { rulesRepoClient } : {}),
|
|
148
|
+
}
|
|
149
|
+
: {}),
|
|
150
|
+
...(fileContentFetcher !== undefined ? { fileContentFetcher } : {}),
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
155
|
+
process.stderr.write(`Guard failed: ${msg}\n`);
|
|
156
|
+
this.exit(1);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// Output
|
|
160
|
+
if (flags.json) {
|
|
161
|
+
process.stdout.write(JSON.stringify(result, null, 2) + '\n');
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
this.printStyledOutput(flags, result);
|
|
165
|
+
}
|
|
166
|
+
// Exit code: 1 if matches found, 0 if clean
|
|
167
|
+
if (result.matches.length > 0) {
|
|
168
|
+
this.exit(1);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
printStyledOutput(flags, result) {
|
|
172
|
+
const w = process.stdout.columns || 80;
|
|
173
|
+
const line = dim('─'.repeat(Math.min(w - 4, 70)));
|
|
174
|
+
// ── Header ──
|
|
175
|
+
process.stdout.write('\n');
|
|
176
|
+
process.stdout.write(` ${bold('PRISM Guard')} ${gray(`${flags.workspace}/${flags.repo} PR #${flags.pr}`)}\n`);
|
|
177
|
+
process.stdout.write(` ${gray(`${result.patternsLoaded} patterns`)} ${gray('·')} ${gray(`${result.filesScanned} files`)} ${gray('·')} ${gray(`${result.duration}ms`)}\n`);
|
|
178
|
+
process.stdout.write(` ${line}\n`);
|
|
179
|
+
if (result.matches.length === 0) {
|
|
180
|
+
process.stdout.write(`\n ${green('✓')} ${bold(green('All clear'))} — no pattern matches found.\n\n`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// ── Severity summary bar ──
|
|
184
|
+
const sevCounts = [];
|
|
185
|
+
for (const sev of ['critical', 'high', 'medium', 'low', 'info']) {
|
|
186
|
+
const count = result.summary.bySeverity[sev] ?? 0;
|
|
187
|
+
if (count > 0) {
|
|
188
|
+
const badge = SEV_BADGE[sev] ?? ((t) => t);
|
|
189
|
+
sevCounts.push(`${badge(sev.toUpperCase())} ${count}`);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
process.stdout.write(`\n ${red('✗')} ${bold(`${result.matches.length} match${result.matches.length === 1 ? '' : 'es'}`)} in ${result.summary.byFile.length} file${result.summary.byFile.length === 1 ? '' : 's'} ${sevCounts.join(' ')}\n`);
|
|
193
|
+
process.stdout.write('\n');
|
|
194
|
+
// ── Match cards ──
|
|
195
|
+
for (const m of result.matches) {
|
|
196
|
+
const sevColor = SEV_COLOR[m.severity] ?? gray;
|
|
197
|
+
const badge = SEV_BADGE[m.severity] ?? ((t) => t);
|
|
198
|
+
// Card header: severity + title
|
|
199
|
+
process.stdout.write(` ${badge(m.severity.toUpperCase())} ${bold(m.patternTitle)}\n`);
|
|
200
|
+
process.stdout.write(` ${cyan(m.filePath)}${gray(`:${m.lineNumber}`)}\n`);
|
|
201
|
+
if (flags.verbose && m.contextLines.length > 0) {
|
|
202
|
+
// Context lines with diff markers
|
|
203
|
+
process.stdout.write('\n');
|
|
204
|
+
for (const ctx of m.contextLines) {
|
|
205
|
+
const ln = ctx.lineNumber !== null ? String(ctx.lineNumber).padStart(5) : ' ';
|
|
206
|
+
const prefix = ctx.type === 'addition' ? green('+') : ctx.type === 'deletion' ? red('-') : ' ';
|
|
207
|
+
const pointer = ctx.isMatch ? sevColor('▸') : ' ';
|
|
208
|
+
const content = ctx.isMatch
|
|
209
|
+
? bold(ctx.content)
|
|
210
|
+
: dim(ctx.content);
|
|
211
|
+
process.stdout.write(` ${pointer} ${gray(ln)} ${gray('│')} ${prefix} ${content}\n`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
if (flags.verbose) {
|
|
215
|
+
// Suggestion
|
|
216
|
+
process.stdout.write('\n');
|
|
217
|
+
process.stdout.write(` ${yellow('➜')} ${m.patternDescription}\n`);
|
|
218
|
+
}
|
|
219
|
+
process.stdout.write(` ${line}\n`);
|
|
220
|
+
}
|
|
221
|
+
process.stdout.write('\n');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/commands/guard/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/guard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,SAAgC;IAClD,MAAM,CAAC,QAAQ,WAAqB;IAE9B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+D3B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Guard extends Command {
|
|
3
|
+
static description = 'Launch the Guard Check TUI';
|
|
4
|
+
static examples = ['$ prism guard'];
|
|
5
|
+
async run() {
|
|
6
|
+
const React = await import('react');
|
|
7
|
+
const { render } = await import('ink');
|
|
8
|
+
const { App } = await import('../../tui/app.js');
|
|
9
|
+
const { CredentialManager } = await import('../../config/credentials.js');
|
|
10
|
+
const { BitbucketClient } = await import('../../bitbucket/client.js');
|
|
11
|
+
const { SessionManager } = await import('../../core/session-manager.js');
|
|
12
|
+
const { ConfigManager } = await import('../../config/config-manager.js');
|
|
13
|
+
const { Logger } = await import('../../utils/logger.js');
|
|
14
|
+
const { ReviewMemoryService } = await import('../../memory/review-memory-service.js');
|
|
15
|
+
const { getDatabase } = await import('../../persistence/database.js');
|
|
16
|
+
const { SessionRepository } = await import('../../persistence/repository.js');
|
|
17
|
+
const { WorkspaceRepository } = await import('../../persistence/workspace-repository.js');
|
|
18
|
+
const configManager = new ConfigManager();
|
|
19
|
+
const logger = new Logger();
|
|
20
|
+
// Initialize SQLite
|
|
21
|
+
let sessionManager;
|
|
22
|
+
let workspaceRepository;
|
|
23
|
+
let reviewMemory;
|
|
24
|
+
try {
|
|
25
|
+
const db = getDatabase(logger);
|
|
26
|
+
if (db) {
|
|
27
|
+
const sessionRepo = new SessionRepository(db);
|
|
28
|
+
reviewMemory = new ReviewMemoryService(sessionRepo);
|
|
29
|
+
sessionManager = new SessionManager(sessionRepo, logger);
|
|
30
|
+
workspaceRepository = new WorkspaceRepository(db);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
reviewMemory = new ReviewMemoryService(null);
|
|
34
|
+
sessionManager = new SessionManager(null, logger);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
reviewMemory = new ReviewMemoryService(null);
|
|
39
|
+
sessionManager = new SessionManager(null, logger);
|
|
40
|
+
}
|
|
41
|
+
const deps = {
|
|
42
|
+
credentialManager: new CredentialManager(),
|
|
43
|
+
createBitbucketClient: (username, password) => new BitbucketClient(username, password),
|
|
44
|
+
...(reviewMemory !== undefined ? { reviewMemory } : {}),
|
|
45
|
+
sessionManager,
|
|
46
|
+
logger,
|
|
47
|
+
config: configManager.load(),
|
|
48
|
+
...(workspaceRepository !== undefined ? { workspaceRepository } : {}),
|
|
49
|
+
};
|
|
50
|
+
try {
|
|
51
|
+
const { waitUntilExit } = render(React.createElement(App, {
|
|
52
|
+
deps,
|
|
53
|
+
initialScreen: { name: 'workspace-select', params: { flow: 'guard' } },
|
|
54
|
+
}), { exitOnCtrlC: true });
|
|
55
|
+
await waitUntilExit();
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
const fs = await import('node:fs');
|
|
59
|
+
const msg = err instanceof Error ? `${err.message}\n${err.stack}` : String(err);
|
|
60
|
+
fs.writeFileSync('prism-error.log', `[${new Date().toISOString()}]\n${msg}\n`);
|
|
61
|
+
this.error(`Guard TUI crashed: ${err instanceof Error ? err.message : String(err)}\nSee prism-error.log for details.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/guard/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class TUI extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
'no-tui': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,OAAO;IACtC,MAAM,CAAC,WAAW,SAAgC;IAClD,MAAM,CAAC,QAAQ,WAAe;IAE9B,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkF3B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
export default class TUI extends Command {
|
|
3
|
+
static description = 'Launch the interactive TUI';
|
|
4
|
+
static examples = ['$ prism'];
|
|
5
|
+
static flags = {
|
|
6
|
+
'no-tui': Flags.boolean({
|
|
7
|
+
description: 'Disable TUI mode (use command mode instead)',
|
|
8
|
+
default: false,
|
|
9
|
+
}),
|
|
10
|
+
};
|
|
11
|
+
async run() {
|
|
12
|
+
const { flags } = await this.parse(TUI);
|
|
13
|
+
if (flags['no-tui']) {
|
|
14
|
+
this.log('TUI not supported. Use `prism review start --pr <id>` instead.');
|
|
15
|
+
this.exit(0);
|
|
16
|
+
}
|
|
17
|
+
const React = await import('react');
|
|
18
|
+
const { render } = await import('ink');
|
|
19
|
+
const { App } = await import('../tui/app.js');
|
|
20
|
+
const { CredentialManager } = await import('../config/credentials.js');
|
|
21
|
+
const { BitbucketClient } = await import('../bitbucket/client.js');
|
|
22
|
+
// AnthropicProvider imported via ConfigManager.resolveProvider()
|
|
23
|
+
const { ReviewOrchestrator } = await import('../ai/orchestrator/orchestrator.js');
|
|
24
|
+
const { SessionManager } = await import('../core/session-manager.js');
|
|
25
|
+
const { ConfigManager } = await import('../config/config-manager.js');
|
|
26
|
+
const { Logger } = await import('../utils/logger.js');
|
|
27
|
+
const { ReviewMemoryService } = await import('../memory/review-memory-service.js');
|
|
28
|
+
const { getDatabase } = await import('../persistence/database.js');
|
|
29
|
+
const { SessionRepository } = await import('../persistence/repository.js');
|
|
30
|
+
const { WorkspaceRepository } = await import('../persistence/workspace-repository.js');
|
|
31
|
+
const configManager = new ConfigManager();
|
|
32
|
+
const config = configManager.load();
|
|
33
|
+
const logger = new Logger();
|
|
34
|
+
// Initialize SQLite
|
|
35
|
+
let sessionManager;
|
|
36
|
+
let workspaceRepository;
|
|
37
|
+
let reviewMemory;
|
|
38
|
+
try {
|
|
39
|
+
const db = getDatabase(logger);
|
|
40
|
+
if (db) {
|
|
41
|
+
const sessionRepo = new SessionRepository(db);
|
|
42
|
+
reviewMemory = new ReviewMemoryService(sessionRepo);
|
|
43
|
+
sessionManager = new SessionManager(sessionRepo, logger);
|
|
44
|
+
workspaceRepository = new WorkspaceRepository(db);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
reviewMemory = new ReviewMemoryService(null);
|
|
48
|
+
sessionManager = new SessionManager(null, logger);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
reviewMemory = new ReviewMemoryService(null);
|
|
53
|
+
sessionManager = new SessionManager(null, logger);
|
|
54
|
+
}
|
|
55
|
+
// Build deps - conditionally add optional fields to avoid exactOptionalPropertyTypes issues
|
|
56
|
+
const baseDeps = {
|
|
57
|
+
credentialManager: new CredentialManager(),
|
|
58
|
+
createBitbucketClient: (username, password) => new BitbucketClient(username, password),
|
|
59
|
+
...(reviewMemory !== undefined ? { reviewMemory } : {}),
|
|
60
|
+
sessionManager,
|
|
61
|
+
orchestrator: new ReviewOrchestrator(logger),
|
|
62
|
+
logger,
|
|
63
|
+
config,
|
|
64
|
+
...(workspaceRepository !== undefined ? { workspaceRepository } : {}),
|
|
65
|
+
};
|
|
66
|
+
let provider;
|
|
67
|
+
try {
|
|
68
|
+
provider = configManager.resolveProvider();
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// No provider available — TUI will show setup instructions
|
|
72
|
+
}
|
|
73
|
+
const deps = provider
|
|
74
|
+
? { ...baseDeps, provider }
|
|
75
|
+
: baseDeps;
|
|
76
|
+
try {
|
|
77
|
+
const { waitUntilExit } = render(React.createElement(App, { deps }), { exitOnCtrlC: true });
|
|
78
|
+
await waitUntilExit();
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
const fs = await import('node:fs');
|
|
82
|
+
const msg = err instanceof Error ? `${err.message}\n${err.stack}` : String(err);
|
|
83
|
+
fs.writeFileSync('prism-error.log', `[${new Date().toISOString()}]\n${msg}\n`);
|
|
84
|
+
this.error(`TUI crashed: ${err instanceof Error ? err.message : String(err)}\nSee prism-error.log for details.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/commands/interactive.ts"],"names":[],"mappings":"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"}
|