@hivehub/rulebook 5.5.2 → 5.7.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/.claude/commands/rulebook-learn-capture.md +41 -48
- package/.claude/commands/rulebook-learn-list.md +13 -13
- package/README.md +332 -394
- package/dist/cli/commands/context-intelligence.d.ts +0 -1
- package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
- package/dist/cli/commands/context-intelligence.js +12 -33
- package/dist/cli/commands/context-intelligence.js.map +1 -1
- package/dist/cli/commands/index.d.ts +4 -7
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +4 -7
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +40 -81
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +0 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +1 -7
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +7 -1
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +51 -57
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/misc.d.ts +1 -15
- package/dist/cli/commands/misc.d.ts.map +1 -1
- package/dist/cli/commands/misc.js +36 -215
- package/dist/cli/commands/misc.js.map +1 -1
- package/dist/cli/commands/plans.d.ts +0 -6
- package/dist/cli/commands/plans.d.ts.map +1 -1
- package/dist/cli/commands/plans.js +9 -77
- package/dist/cli/commands/plans.js.map +1 -1
- package/dist/cli/commands/skills.js +6 -6
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/task.js +4 -4
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +122 -52
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/prompts.d.ts.map +1 -1
- package/dist/cli/prompts.js +1 -78
- package/dist/cli/prompts.js.map +1 -1
- package/dist/core/claude/claude-mcp.d.ts +59 -0
- package/dist/core/claude/claude-mcp.d.ts.map +1 -0
- package/dist/core/claude/claude-mcp.js +220 -0
- package/dist/core/claude/claude-mcp.js.map +1 -0
- package/dist/core/claude/claude-md-generator.d.ts +52 -0
- package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
- package/dist/core/claude/claude-md-generator.js +104 -0
- package/dist/core/claude/claude-md-generator.js.map +1 -0
- package/dist/core/claude/claude-settings-manager.d.ts +44 -0
- package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
- package/dist/core/claude/claude-settings-manager.js +194 -0
- package/dist/core/claude/claude-settings-manager.js.map +1 -0
- package/dist/core/console/cli-bridge.d.ts +113 -0
- package/dist/core/console/cli-bridge.d.ts.map +1 -0
- package/dist/core/console/cli-bridge.js +1094 -0
- package/dist/core/console/cli-bridge.js.map +1 -0
- package/dist/core/detect/detector.d.ts +35 -0
- package/dist/core/detect/detector.d.ts.map +1 -0
- package/dist/core/detect/detector.js +541 -0
- package/dist/core/detect/detector.js.map +1 -0
- package/dist/core/docs/docs-generator.d.ts +9 -0
- package/dist/core/docs/docs-generator.d.ts.map +1 -0
- package/dist/core/docs/docs-generator.js +531 -0
- package/dist/core/docs/docs-generator.js.map +1 -0
- package/dist/core/docs/mcp-reference-generator.d.ts +13 -0
- package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
- package/dist/core/docs/mcp-reference-generator.js +66 -0
- package/dist/core/docs/mcp-reference-generator.js.map +1 -0
- package/dist/core/generators/generator.d.ts +54 -0
- package/dist/core/generators/generator.d.ts.map +1 -0
- package/dist/core/generators/generator.js +1041 -0
- package/dist/core/generators/generator.js.map +1 -0
- package/dist/core/generators/gitignore-generator.d.ts +13 -0
- package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
- package/dist/core/generators/gitignore-generator.js +307 -0
- package/dist/core/generators/gitignore-generator.js.map +1 -0
- package/dist/core/generators/minimal-scaffolder.d.ts +8 -0
- package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
- package/dist/core/generators/minimal-scaffolder.js +51 -0
- package/dist/core/generators/minimal-scaffolder.js.map +1 -0
- package/dist/core/generators/rules-generator.d.ts +73 -0
- package/dist/core/generators/rules-generator.d.ts.map +1 -0
- package/dist/core/generators/rules-generator.js +202 -0
- package/dist/core/generators/rules-generator.js.map +1 -0
- package/dist/core/generators/workflow-generator.d.ts +15 -0
- package/dist/core/generators/workflow-generator.d.ts.map +1 -0
- package/dist/core/generators/workflow-generator.js +390 -0
- package/dist/core/generators/workflow-generator.js.map +1 -0
- package/dist/core/ide/multi-tool-generator.d.ts +59 -0
- package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
- package/dist/core/ide/multi-tool-generator.js +157 -0
- package/dist/core/ide/multi-tool-generator.js.map +1 -0
- package/dist/core/ide/opencode-generator.d.ts +72 -0
- package/dist/core/ide/opencode-generator.d.ts.map +1 -0
- package/dist/core/ide/opencode-generator.js +450 -0
- package/dist/core/ide/opencode-generator.js.map +1 -0
- package/dist/core/merger.d.ts +1 -1
- package/dist/core/merger.d.ts.map +1 -1
- package/dist/core/merger.js +5 -5
- package/dist/core/merger.js.map +1 -1
- package/dist/core/migrator.d.ts +0 -1
- package/dist/core/migrator.d.ts.map +1 -1
- package/dist/core/migrator.js +4 -29
- package/dist/core/migrator.js.map +1 -1
- package/dist/core/quality/coverage-checker.d.ts +14 -0
- package/dist/core/quality/coverage-checker.d.ts.map +1 -0
- package/dist/core/quality/coverage-checker.js +176 -0
- package/dist/core/quality/coverage-checker.js.map +1 -0
- package/dist/core/quality/dependency-checker.d.ts +21 -0
- package/dist/core/quality/dependency-checker.d.ts.map +1 -0
- package/dist/core/quality/dependency-checker.js +247 -0
- package/dist/core/quality/dependency-checker.js.map +1 -0
- package/dist/core/quality/doctor.d.ts +19 -0
- package/dist/core/quality/doctor.d.ts.map +1 -0
- package/dist/core/quality/doctor.js +163 -0
- package/dist/core/quality/doctor.js.map +1 -0
- package/dist/core/quality/validator.d.ts +21 -0
- package/dist/core/quality/validator.d.ts.map +1 -0
- package/dist/core/quality/validator.js +177 -0
- package/dist/core/quality/validator.js.map +1 -0
- package/dist/core/skills/skills-manager.d.ts +126 -0
- package/dist/core/skills/skills-manager.d.ts.map +1 -0
- package/dist/core/skills/skills-manager.js +630 -0
- package/dist/core/skills/skills-manager.js.map +1 -0
- package/dist/core/state/config-manager.d.ts +86 -0
- package/dist/core/state/config-manager.d.ts.map +1 -0
- package/dist/core/state/config-manager.js +562 -0
- package/dist/core/state/config-manager.js.map +1 -0
- package/dist/core/state/override-manager.d.ts +23 -0
- package/dist/core/state/override-manager.d.ts.map +1 -0
- package/dist/core/state/override-manager.js +82 -0
- package/dist/core/state/override-manager.js.map +1 -0
- package/dist/core/state/state-writer.d.ts +34 -0
- package/dist/core/state/state-writer.d.ts.map +1 -0
- package/dist/core/state/state-writer.js +78 -0
- package/dist/core/state/state-writer.js.map +1 -0
- package/dist/core/state/version-bumper.d.ts +19 -0
- package/dist/core/state/version-bumper.d.ts.map +1 -0
- package/dist/core/state/version-bumper.js +180 -0
- package/dist/core/state/version-bumper.js.map +1 -0
- package/dist/core/tasks/decision-manager.d.ts +25 -0
- package/dist/core/tasks/decision-manager.d.ts.map +1 -0
- package/dist/core/tasks/decision-manager.js +183 -0
- package/dist/core/tasks/decision-manager.js.map +1 -0
- package/dist/core/tasks/knowledge-manager.d.ts +24 -0
- package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
- package/dist/core/tasks/knowledge-manager.js +173 -0
- package/dist/core/tasks/knowledge-manager.js.map +1 -0
- package/dist/core/tasks/learn-manager.d.ts +27 -0
- package/dist/core/tasks/learn-manager.d.ts.map +1 -0
- package/dist/core/tasks/learn-manager.js +121 -0
- package/dist/core/tasks/learn-manager.js.map +1 -0
- package/dist/core/tasks/plans-manager.d.ts +46 -0
- package/dist/core/tasks/plans-manager.d.ts.map +1 -0
- package/dist/core/tasks/plans-manager.js +158 -0
- package/dist/core/tasks/plans-manager.js.map +1 -0
- package/dist/core/tasks/task-manager.d.ts +127 -0
- package/dist/core/tasks/task-manager.d.ts.map +1 -0
- package/dist/core/tasks/task-manager.js +607 -0
- package/dist/core/tasks/task-manager.js.map +1 -0
- package/dist/core/workspace/project-worker.d.ts +6 -6
- package/dist/core/workspace/project-worker.d.ts.map +1 -1
- package/dist/core/workspace/project-worker.js +6 -6
- package/dist/core/workspace/project-worker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -176
- package/dist/index.js.map +1 -1
- package/dist/mcp/rulebook-server.d.ts.map +1 -1
- package/dist/mcp/rulebook-server.js +16 -960
- package/dist/mcp/rulebook-server.js.map +1 -1
- package/dist/memory/file-search.d.ts +43 -0
- package/dist/memory/file-search.d.ts.map +1 -0
- package/dist/memory/file-search.js +228 -0
- package/dist/memory/file-search.js.map +1 -0
- package/dist/memory/file-store.d.ts +99 -0
- package/dist/memory/file-store.d.ts.map +1 -0
- package/dist/memory/file-store.js +615 -0
- package/dist/memory/file-store.js.map +1 -0
- package/dist/memory/legacy-migrator.d.ts +27 -0
- package/dist/memory/legacy-migrator.d.ts.map +1 -0
- package/dist/memory/legacy-migrator.js +185 -0
- package/dist/memory/legacy-migrator.js.map +1 -0
- package/dist/memory/memory-manager.d.ts +25 -24
- package/dist/memory/memory-manager.d.ts.map +1 -1
- package/dist/memory/memory-manager.js +97 -140
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/memory/memory-types.d.ts +1 -1
- package/dist/memory/memory-types.d.ts.map +1 -1
- package/dist/types.d.ts +8 -119
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -6
- package/templates/agents/context-intelligence.md +50 -52
- package/templates/cli/OPENCODE.md +85 -18
- package/templates/commands/rulebook-learn-capture.md +41 -48
- package/templates/commands/rulebook-learn-list.md +13 -13
- package/templates/core/AGENTS_LEAN.md +0 -14
- package/templates/hooks/check-context-and-handoff.sh +8 -10
- package/templates/hooks/enforce-pre-tool.sh +70 -0
- package/templates/hooks/terse-mode-tracker.sh +146 -143
- package/templates/ides/OPENCODE.md +63 -0
- package/templates/skills/cli/opencode/SKILL.md +82 -28
- package/.claude/commands/ralph-config.md +0 -112
- package/.claude/commands/ralph-history.md +0 -110
- package/.claude/commands/ralph-init.md +0 -72
- package/.claude/commands/ralph-pause-resume.md +0 -105
- package/.claude/commands/ralph-run.md +0 -101
- package/.claude/commands/ralph-status.md +0 -76
- package/templates/core/RALPH.md +0 -471
- package/templates/frameworks/ANGULAR.md +0 -36
- package/templates/frameworks/DJANGO.md +0 -83
- package/templates/frameworks/ELECTRON.md +0 -147
- package/templates/frameworks/FLASK.md +0 -38
- package/templates/frameworks/FLUTTER.md +0 -55
- package/templates/frameworks/JQUERY.md +0 -32
- package/templates/frameworks/LARAVEL.md +0 -38
- package/templates/frameworks/NESTJS.md +0 -43
- package/templates/frameworks/NEXTJS.md +0 -127
- package/templates/frameworks/NUXT.md +0 -40
- package/templates/frameworks/RAILS.md +0 -66
- package/templates/frameworks/REACT.md +0 -38
- package/templates/frameworks/REACT_NATIVE.md +0 -47
- package/templates/frameworks/SPRING.md +0 -39
- package/templates/frameworks/SYMFONY.md +0 -36
- package/templates/frameworks/VUE.md +0 -36
- package/templates/frameworks/ZEND.md +0 -35
- package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
- package/templates/hooks/enforce-no-deferred.sh +0 -21
- package/templates/hooks/enforce-no-shortcuts.sh +0 -31
- package/templates/ides/COPILOT.md +0 -37
- package/templates/ides/CURSOR.md +0 -43
- package/templates/ides/JETBRAINS_AI.md +0 -35
- package/templates/ides/REPLIT.md +0 -36
- package/templates/ides/TABNINE.md +0 -29
- package/templates/ides/VSCODE.md +0 -40
- package/templates/ides/WINDSURF.md +0 -36
- package/templates/ides/ZED.md +0 -32
- package/templates/ides/cursor-mdc/go.mdc +0 -24
- package/templates/ides/cursor-mdc/python.mdc +0 -24
- package/templates/ides/cursor-mdc/quality.mdc +0 -25
- package/templates/ides/cursor-mdc/ralph.mdc +0 -39
- package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
- package/templates/ides/cursor-mdc/rust.mdc +0 -24
- package/templates/ides/cursor-mdc/typescript.mdc +0 -25
- package/templates/ralph/ralph-history.bat +0 -4
- package/templates/ralph/ralph-history.sh +0 -5
- package/templates/ralph/ralph-init.bat +0 -5
- package/templates/ralph/ralph-init.sh +0 -5
- package/templates/ralph/ralph-pause.bat +0 -5
- package/templates/ralph/ralph-pause.sh +0 -5
- package/templates/ralph/ralph-run.bat +0 -5
- package/templates/ralph/ralph-run.sh +0 -5
- package/templates/ralph/ralph-status.bat +0 -4
- package/templates/ralph/ralph-status.sh +0 -5
- package/templates/services/AZURE_BLOB.md +0 -184
- package/templates/services/CASSANDRA.md +0 -239
- package/templates/services/DATADOG.md +0 -26
- package/templates/services/DOCKER.md +0 -124
- package/templates/services/DOCKER_COMPOSE.md +0 -168
- package/templates/services/DYNAMODB.md +0 -308
- package/templates/services/ELASTICSEARCH.md +0 -347
- package/templates/services/GCS.md +0 -178
- package/templates/services/HELM.md +0 -194
- package/templates/services/INFLUXDB.md +0 -265
- package/templates/services/KAFKA.md +0 -341
- package/templates/services/KUBERNETES.md +0 -208
- package/templates/services/MARIADB.md +0 -183
- package/templates/services/MEMCACHED.md +0 -242
- package/templates/services/MINIO.md +0 -201
- package/templates/services/MONGODB.md +0 -268
- package/templates/services/MYSQL.md +0 -358
- package/templates/services/NEO4J.md +0 -247
- package/templates/services/OPENTELEMETRY.md +0 -25
- package/templates/services/ORACLE.md +0 -290
- package/templates/services/PINO.md +0 -24
- package/templates/services/POSTGRESQL.md +0 -326
- package/templates/services/PROMETHEUS.md +0 -33
- package/templates/services/RABBITMQ.md +0 -286
- package/templates/services/REDIS.md +0 -292
- package/templates/services/S3.md +0 -298
- package/templates/services/SENTRY.md +0 -23
- package/templates/services/SQLITE.md +0 -294
- package/templates/services/SQLSERVER.md +0 -294
- package/templates/services/WINSTON.md +0 -30
- package/templates/skills/frameworks/angular/SKILL.md +0 -46
- package/templates/skills/frameworks/django/SKILL.md +0 -93
- package/templates/skills/frameworks/electron/SKILL.md +0 -157
- package/templates/skills/frameworks/flask/SKILL.md +0 -48
- package/templates/skills/frameworks/flutter/SKILL.md +0 -65
- package/templates/skills/frameworks/jquery/SKILL.md +0 -42
- package/templates/skills/frameworks/laravel/SKILL.md +0 -48
- package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
- package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
- package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
- package/templates/skills/frameworks/rails/SKILL.md +0 -76
- package/templates/skills/frameworks/react/SKILL.md +0 -48
- package/templates/skills/frameworks/react-native/SKILL.md +0 -57
- package/templates/skills/frameworks/spring/SKILL.md +0 -49
- package/templates/skills/frameworks/symfony/SKILL.md +0 -46
- package/templates/skills/frameworks/vue/SKILL.md +0 -46
- package/templates/skills/frameworks/zend/SKILL.md +0 -45
- package/templates/skills/services/azure-blob/SKILL.md +0 -194
- package/templates/skills/services/cassandra/SKILL.md +0 -249
- package/templates/skills/services/dynamodb/SKILL.md +0 -318
- package/templates/skills/services/elasticsearch/SKILL.md +0 -357
- package/templates/skills/services/gcs/SKILL.md +0 -188
- package/templates/skills/services/influxdb/SKILL.md +0 -275
- package/templates/skills/services/kafka/SKILL.md +0 -351
- package/templates/skills/services/mariadb/SKILL.md +0 -193
- package/templates/skills/services/memcached/SKILL.md +0 -252
- package/templates/skills/services/minio/SKILL.md +0 -211
- package/templates/skills/services/mongodb/SKILL.md +0 -278
- package/templates/skills/services/mysql/SKILL.md +0 -368
- package/templates/skills/services/neo4j/SKILL.md +0 -257
- package/templates/skills/services/oracle/SKILL.md +0 -300
- package/templates/skills/services/postgresql/SKILL.md +0 -336
- package/templates/skills/services/rabbitmq/SKILL.md +0 -296
- package/templates/skills/services/redis/SKILL.md +0 -302
- package/templates/skills/services/s3/SKILL.md +0 -308
- package/templates/skills/services/sqlite/SKILL.md +0 -304
- package/templates/skills/services/sqlserver/SKILL.md +0 -304
- package/templates/skills/workflows/ralph/SETUP.md +0 -228
- package/templates/skills/workflows/ralph/SKILL.md +0 -309
- package/templates/skills/workflows/ralph/install.sh +0 -87
- package/templates/skills/workflows/ralph/manifest.json +0 -158
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/core/migrator.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAErF,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../src/core/migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface CoverageResult {
|
|
2
|
+
percentage: number;
|
|
3
|
+
meetsThreshold: boolean;
|
|
4
|
+
threshold: number;
|
|
5
|
+
details?: CoverageDetails;
|
|
6
|
+
}
|
|
7
|
+
export interface CoverageDetails {
|
|
8
|
+
lines?: number;
|
|
9
|
+
statements?: number;
|
|
10
|
+
functions?: number;
|
|
11
|
+
branches?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function checkCoverage(cwd?: string, threshold?: number): Promise<CoverageResult>;
|
|
14
|
+
//# sourceMappingURL=coverage-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-checker.d.ts","sourceRoot":"","sources":["../../../src/core/quality/coverage-checker.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,aAAa,CACjC,GAAG,GAAE,MAAsB,EAC3B,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,cAAc,CAAC,CAyBzB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { fileExists } from '../../utils/file-system.js';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
export async function checkCoverage(cwd = process.cwd(), threshold = 95) {
|
|
7
|
+
// Try different coverage tools based on project type
|
|
8
|
+
const hasPackageJson = await fileExists(path.join(cwd, 'package.json'));
|
|
9
|
+
const hasCargoToml = await fileExists(path.join(cwd, 'Cargo.toml'));
|
|
10
|
+
const hasPyprojectToml = await fileExists(path.join(cwd, 'pyproject.toml'));
|
|
11
|
+
const hasGoMod = await fileExists(path.join(cwd, 'go.mod'));
|
|
12
|
+
const hasPomXml = await fileExists(path.join(cwd, 'pom.xml'));
|
|
13
|
+
if (hasPackageJson) {
|
|
14
|
+
return await checkNpmCoverage(cwd, threshold);
|
|
15
|
+
}
|
|
16
|
+
else if (hasCargoToml) {
|
|
17
|
+
return await checkCargoCoverage(cwd, threshold);
|
|
18
|
+
}
|
|
19
|
+
else if (hasPyprojectToml) {
|
|
20
|
+
return await checkPythonCoverage(cwd, threshold);
|
|
21
|
+
}
|
|
22
|
+
else if (hasGoMod) {
|
|
23
|
+
return await checkGoCoverage(cwd, threshold);
|
|
24
|
+
}
|
|
25
|
+
else if (hasPomXml) {
|
|
26
|
+
return await checkJavaCoverage(cwd, threshold);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
percentage: 0,
|
|
30
|
+
meetsThreshold: false,
|
|
31
|
+
threshold,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async function checkNpmCoverage(cwd, threshold) {
|
|
35
|
+
try {
|
|
36
|
+
// Try to run coverage
|
|
37
|
+
await execAsync('npm test -- --coverage --run', { cwd });
|
|
38
|
+
// Read coverage report
|
|
39
|
+
const coveragePath = path.join(cwd, 'coverage', 'coverage-summary.json');
|
|
40
|
+
if (await fileExists(coveragePath)) {
|
|
41
|
+
const coverage = await import(coveragePath);
|
|
42
|
+
const total = coverage.total;
|
|
43
|
+
const percentage = total.lines.pct || 0;
|
|
44
|
+
return {
|
|
45
|
+
percentage,
|
|
46
|
+
meetsThreshold: percentage >= threshold,
|
|
47
|
+
threshold,
|
|
48
|
+
details: {
|
|
49
|
+
lines: total.lines.pct,
|
|
50
|
+
statements: total.statements.pct,
|
|
51
|
+
functions: total.functions.pct,
|
|
52
|
+
branches: total.branches.pct,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Coverage not available
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
percentage: 0,
|
|
62
|
+
meetsThreshold: false,
|
|
63
|
+
threshold,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async function checkCargoCoverage(cwd, threshold) {
|
|
67
|
+
try {
|
|
68
|
+
const { stdout } = await execAsync('cargo llvm-cov --summary-only', { cwd });
|
|
69
|
+
// Parse output for coverage percentage
|
|
70
|
+
const match = stdout.match(/TOTAL.*?(\d+\.\d+)%/);
|
|
71
|
+
if (match) {
|
|
72
|
+
const percentage = parseFloat(match[1]);
|
|
73
|
+
return {
|
|
74
|
+
percentage,
|
|
75
|
+
meetsThreshold: percentage >= threshold,
|
|
76
|
+
threshold,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// cargo llvm-cov not available
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
percentage: 0,
|
|
85
|
+
meetsThreshold: false,
|
|
86
|
+
threshold,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async function checkPythonCoverage(cwd, threshold) {
|
|
90
|
+
try {
|
|
91
|
+
const { stdout } = await execAsync('pytest --cov=. --cov-report=term', { cwd });
|
|
92
|
+
// Parse output for coverage percentage
|
|
93
|
+
const match = stdout.match(/TOTAL.*?(\d+)%/);
|
|
94
|
+
if (match) {
|
|
95
|
+
const percentage = parseInt(match[1], 10);
|
|
96
|
+
return {
|
|
97
|
+
percentage,
|
|
98
|
+
meetsThreshold: percentage >= threshold,
|
|
99
|
+
threshold,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// pytest not available
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
percentage: 0,
|
|
108
|
+
meetsThreshold: false,
|
|
109
|
+
threshold,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async function checkGoCoverage(cwd, threshold) {
|
|
113
|
+
try {
|
|
114
|
+
const { stdout } = await execAsync('go test -cover ./...', { cwd });
|
|
115
|
+
// Parse output for coverage percentage
|
|
116
|
+
const matches = stdout.matchAll(/coverage: (\d+\.\d+)% of statements/g);
|
|
117
|
+
const coverages = Array.from(matches).map((m) => parseFloat(m[1]));
|
|
118
|
+
if (coverages.length > 0) {
|
|
119
|
+
const avgCoverage = coverages.reduce((a, b) => a + b, 0) / coverages.length;
|
|
120
|
+
return {
|
|
121
|
+
percentage: avgCoverage,
|
|
122
|
+
meetsThreshold: avgCoverage >= threshold,
|
|
123
|
+
threshold,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// go test failed
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
percentage: 0,
|
|
132
|
+
meetsThreshold: false,
|
|
133
|
+
threshold,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async function checkJavaCoverage(cwd, threshold) {
|
|
137
|
+
try {
|
|
138
|
+
// Try Maven first
|
|
139
|
+
await execAsync('mvn jacoco:report', { cwd });
|
|
140
|
+
// Import readFile
|
|
141
|
+
const { readFile } = await import('../../utils/file-system.js');
|
|
142
|
+
// Read Jacoco XML report
|
|
143
|
+
const reportPath = path.join(cwd, 'target', 'site', 'jacoco', 'jacoco.xml');
|
|
144
|
+
if (await fileExists(reportPath)) {
|
|
145
|
+
const report = await readFile(reportPath);
|
|
146
|
+
// Parse XML for coverage (simplified)
|
|
147
|
+
const match = report.match(/type="LINE".*?covered="(\d+)".*?missed="(\d+)"/);
|
|
148
|
+
if (match) {
|
|
149
|
+
const covered = parseInt(match[1], 10);
|
|
150
|
+
const missed = parseInt(match[2], 10);
|
|
151
|
+
const percentage = (covered / (covered + missed)) * 100;
|
|
152
|
+
return {
|
|
153
|
+
percentage,
|
|
154
|
+
meetsThreshold: percentage >= threshold,
|
|
155
|
+
threshold,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// Try Gradle
|
|
162
|
+
try {
|
|
163
|
+
await execAsync('./gradlew jacocoTestReport', { cwd });
|
|
164
|
+
// Similar XML parsing for Gradle
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Neither Maven nor Gradle coverage available
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
percentage: 0,
|
|
172
|
+
meetsThreshold: false,
|
|
173
|
+
threshold,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=coverage-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage-checker.js","sourceRoot":"","sources":["../../../src/core/quality/coverage-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface DependencyCheckResult {
|
|
2
|
+
outdated: OutdatedDependency[];
|
|
3
|
+
vulnerable: VulnerableDependency[];
|
|
4
|
+
total: number;
|
|
5
|
+
upToDate: number;
|
|
6
|
+
}
|
|
7
|
+
export interface OutdatedDependency {
|
|
8
|
+
name: string;
|
|
9
|
+
current: string;
|
|
10
|
+
latest: string;
|
|
11
|
+
type: 'dependency' | 'devDependency';
|
|
12
|
+
}
|
|
13
|
+
export interface VulnerableDependency {
|
|
14
|
+
name: string;
|
|
15
|
+
severity: 'low' | 'moderate' | 'high' | 'critical';
|
|
16
|
+
title: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function checkDependencies(cwd?: string): Promise<DependencyCheckResult>;
|
|
20
|
+
export declare function formatDependencyReport(result: DependencyCheckResult): string;
|
|
21
|
+
//# sourceMappingURL=dependency-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.d.ts","sourceRoot":"","sources":["../../../src/core/quality/dependency-checker.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,iBAAiB,CACrC,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CA+BhC;AAkND,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAuC5E"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { exec } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { fileExists, readFile, readJsonFile } from '../../utils/file-system.js';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
export async function checkDependencies(cwd = process.cwd()) {
|
|
7
|
+
const result = {
|
|
8
|
+
outdated: [],
|
|
9
|
+
vulnerable: [],
|
|
10
|
+
total: 0,
|
|
11
|
+
upToDate: 0,
|
|
12
|
+
};
|
|
13
|
+
// Check for different project types
|
|
14
|
+
const hasPackageJson = await fileExists(path.join(cwd, 'package.json'));
|
|
15
|
+
const hasCargoToml = await fileExists(path.join(cwd, 'Cargo.toml'));
|
|
16
|
+
const hasPyprojectToml = await fileExists(path.join(cwd, 'pyproject.toml'));
|
|
17
|
+
const hasGoMod = await fileExists(path.join(cwd, 'go.mod'));
|
|
18
|
+
if (hasPackageJson) {
|
|
19
|
+
await checkNpmDependencies(cwd, result);
|
|
20
|
+
}
|
|
21
|
+
if (hasCargoToml) {
|
|
22
|
+
await checkCargoDependencies(cwd, result);
|
|
23
|
+
}
|
|
24
|
+
if (hasPyprojectToml) {
|
|
25
|
+
await checkPythonDependencies(cwd, result);
|
|
26
|
+
}
|
|
27
|
+
if (hasGoMod) {
|
|
28
|
+
await checkGoDependencies(cwd, result);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
async function checkNpmDependencies(cwd, result) {
|
|
33
|
+
try {
|
|
34
|
+
const packageJson = await readJsonFile(path.join(cwd, 'package.json'));
|
|
35
|
+
if (!packageJson)
|
|
36
|
+
return;
|
|
37
|
+
const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
|
|
38
|
+
result.total += Object.keys(deps).length;
|
|
39
|
+
// Check for outdated
|
|
40
|
+
try {
|
|
41
|
+
const { stdout } = await execAsync('npm outdated --json', { cwd });
|
|
42
|
+
const outdated = JSON.parse(stdout);
|
|
43
|
+
for (const [name, info] of Object.entries(outdated)) {
|
|
44
|
+
result.outdated.push({
|
|
45
|
+
name,
|
|
46
|
+
current: info.current,
|
|
47
|
+
latest: info.latest,
|
|
48
|
+
type: packageJson.dependencies?.[name] ? 'dependency' : 'devDependency',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// npm outdated exits with code 1 when there are outdated packages
|
|
54
|
+
}
|
|
55
|
+
// Check for vulnerabilities
|
|
56
|
+
try {
|
|
57
|
+
const { stdout } = await execAsync('npm audit --json', { cwd });
|
|
58
|
+
const audit = JSON.parse(stdout);
|
|
59
|
+
if (audit.vulnerabilities) {
|
|
60
|
+
for (const [name, vuln] of Object.entries(audit.vulnerabilities)) {
|
|
61
|
+
result.vulnerable.push({
|
|
62
|
+
name,
|
|
63
|
+
severity: vuln.severity,
|
|
64
|
+
title: vuln.via?.[0]?.title || 'Vulnerability found',
|
|
65
|
+
url: vuln.via?.[0]?.url,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Ignore audit errors
|
|
72
|
+
}
|
|
73
|
+
result.upToDate = result.total - result.outdated.length;
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// Ignore errors
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function checkCargoDependencies(cwd, result) {
|
|
80
|
+
try {
|
|
81
|
+
const cargoToml = await readFile(path.join(cwd, 'Cargo.toml'));
|
|
82
|
+
const depMatches = cargoToml.match(/\[dependencies\]([\s\S]*?)(\[|$)/);
|
|
83
|
+
if (depMatches) {
|
|
84
|
+
const deps = depMatches[1].split('\n').filter((l) => l.trim() && !l.startsWith('#'));
|
|
85
|
+
result.total += deps.filter((l) => l.includes('=')).length;
|
|
86
|
+
}
|
|
87
|
+
// Check with cargo-outdated if available
|
|
88
|
+
try {
|
|
89
|
+
const { stdout } = await execAsync('cargo outdated --format json', { cwd });
|
|
90
|
+
const outdated = JSON.parse(stdout);
|
|
91
|
+
if (outdated.dependencies) {
|
|
92
|
+
for (const dep of outdated.dependencies) {
|
|
93
|
+
result.outdated.push({
|
|
94
|
+
name: dep.name,
|
|
95
|
+
current: dep.project,
|
|
96
|
+
latest: dep.latest,
|
|
97
|
+
type: 'dependency',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// cargo-outdated not installed or failed
|
|
104
|
+
}
|
|
105
|
+
// Check with cargo-audit if available
|
|
106
|
+
try {
|
|
107
|
+
const { stdout } = await execAsync('cargo audit --json', { cwd });
|
|
108
|
+
const audit = JSON.parse(stdout);
|
|
109
|
+
if (audit.vulnerabilities?.list) {
|
|
110
|
+
for (const vuln of audit.vulnerabilities.list) {
|
|
111
|
+
result.vulnerable.push({
|
|
112
|
+
name: vuln.package?.name || 'unknown',
|
|
113
|
+
severity: vuln.advisory?.severity || 'moderate',
|
|
114
|
+
title: vuln.advisory?.title || 'Vulnerability found',
|
|
115
|
+
url: vuln.advisory?.url,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// cargo-audit not installed or failed
|
|
122
|
+
}
|
|
123
|
+
result.upToDate = Math.max(0, result.total - result.outdated.length);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
// Ignore errors
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async function checkPythonDependencies(cwd, result) {
|
|
130
|
+
try {
|
|
131
|
+
// Check requirements.txt if exists
|
|
132
|
+
const requirementsPath = path.join(cwd, 'requirements.txt');
|
|
133
|
+
if (await fileExists(requirementsPath)) {
|
|
134
|
+
const requirements = await readFile(requirementsPath);
|
|
135
|
+
const deps = requirements.split('\n').filter((l) => l.trim() && !l.startsWith('#'));
|
|
136
|
+
result.total += deps.length;
|
|
137
|
+
}
|
|
138
|
+
// Check pyproject.toml if exists
|
|
139
|
+
const pyprojectPath = path.join(cwd, 'pyproject.toml');
|
|
140
|
+
if (await fileExists(pyprojectPath)) {
|
|
141
|
+
const content = await readFile(pyprojectPath);
|
|
142
|
+
const depMatches = content.match(/\[tool\.poetry\.dependencies\]([\s\S]*?)(\[|$)/);
|
|
143
|
+
if (depMatches) {
|
|
144
|
+
const deps = depMatches[1].split('\n').filter((l) => l.trim() && !l.startsWith('#'));
|
|
145
|
+
result.total += deps.filter((l) => l.includes('=')).length;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Check with pip-audit if available
|
|
149
|
+
try {
|
|
150
|
+
const { stdout } = await execAsync('pip-audit --format json', { cwd });
|
|
151
|
+
const audit = JSON.parse(stdout);
|
|
152
|
+
if (audit.dependencies) {
|
|
153
|
+
for (const dep of audit.dependencies) {
|
|
154
|
+
if (dep.vulns && dep.vulns.length > 0) {
|
|
155
|
+
for (const vuln of dep.vulns) {
|
|
156
|
+
result.vulnerable.push({
|
|
157
|
+
name: dep.name,
|
|
158
|
+
severity: vuln.severity || 'moderate',
|
|
159
|
+
title: vuln.description || 'Vulnerability found',
|
|
160
|
+
url: vuln.url,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch {
|
|
168
|
+
// pip-audit not installed or failed
|
|
169
|
+
}
|
|
170
|
+
result.upToDate = Math.max(0, result.total - result.outdated.length);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Ignore errors
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function checkGoDependencies(cwd, result) {
|
|
177
|
+
try {
|
|
178
|
+
const goMod = await readFile(path.join(cwd, 'go.mod'));
|
|
179
|
+
const requires = goMod.match(/require \(([\s\S]*?)\)/);
|
|
180
|
+
if (requires) {
|
|
181
|
+
const deps = requires[1].split('\n').filter((l) => l.trim() && !l.startsWith('//'));
|
|
182
|
+
result.total += deps.length;
|
|
183
|
+
}
|
|
184
|
+
// Check with go list if available
|
|
185
|
+
try {
|
|
186
|
+
const { stdout } = await execAsync('go list -u -m -json all', { cwd });
|
|
187
|
+
const modules = stdout
|
|
188
|
+
.trim()
|
|
189
|
+
.split('\n')
|
|
190
|
+
.filter((l) => l)
|
|
191
|
+
.map((l) => JSON.parse(l));
|
|
192
|
+
for (const mod of modules) {
|
|
193
|
+
if (mod.Update) {
|
|
194
|
+
result.outdated.push({
|
|
195
|
+
name: mod.Path,
|
|
196
|
+
current: mod.Version,
|
|
197
|
+
latest: mod.Update.Version,
|
|
198
|
+
type: 'dependency',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// go list failed
|
|
205
|
+
}
|
|
206
|
+
result.upToDate = Math.max(0, result.total - result.outdated.length);
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// Ignore errors
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export function formatDependencyReport(result) {
|
|
213
|
+
const lines = [];
|
|
214
|
+
lines.push('# Dependency Check Report');
|
|
215
|
+
lines.push('');
|
|
216
|
+
lines.push(`**Total Dependencies**: ${result.total}`);
|
|
217
|
+
lines.push(`**Up-to-Date**: ${result.upToDate}`);
|
|
218
|
+
lines.push(`**Outdated**: ${result.outdated.length}`);
|
|
219
|
+
lines.push(`**Vulnerable**: ${result.vulnerable.length}`);
|
|
220
|
+
lines.push('');
|
|
221
|
+
if (result.outdated.length > 0) {
|
|
222
|
+
lines.push('## Outdated Dependencies');
|
|
223
|
+
lines.push('');
|
|
224
|
+
for (const dep of result.outdated) {
|
|
225
|
+
lines.push(`- **${dep.name}**: ${dep.current} → ${dep.latest} (${dep.type})`);
|
|
226
|
+
}
|
|
227
|
+
lines.push('');
|
|
228
|
+
}
|
|
229
|
+
if (result.vulnerable.length > 0) {
|
|
230
|
+
lines.push('## Vulnerable Dependencies');
|
|
231
|
+
lines.push('');
|
|
232
|
+
for (const vuln of result.vulnerable) {
|
|
233
|
+
lines.push(`- ❌ **${vuln.name}** (${vuln.severity}): ${vuln.title}`);
|
|
234
|
+
if (vuln.url) {
|
|
235
|
+
lines.push(` More info: ${vuln.url}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
lines.push('');
|
|
239
|
+
}
|
|
240
|
+
if (result.outdated.length === 0 && result.vulnerable.length === 0) {
|
|
241
|
+
lines.push('## Summary');
|
|
242
|
+
lines.push('');
|
|
243
|
+
lines.push('✅ All dependencies are up-to-date and secure!');
|
|
244
|
+
}
|
|
245
|
+
return lines.join('\n');
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=dependency-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-checker.js","sourceRoot":"","sources":["../../../src/core/quality/dependency-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v5.3.0 F7 — `rulebook doctor`.
|
|
3
|
+
*
|
|
4
|
+
* Runs a suite of health checks against the project's rulebook setup
|
|
5
|
+
* and reports issues with actionable suggestions.
|
|
6
|
+
*/
|
|
7
|
+
export interface DoctorCheck {
|
|
8
|
+
name: string;
|
|
9
|
+
status: 'pass' | 'warn' | 'fail';
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export interface DoctorReport {
|
|
13
|
+
checks: DoctorCheck[];
|
|
14
|
+
passCount: number;
|
|
15
|
+
warnCount: number;
|
|
16
|
+
failCount: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function runDoctor(projectRoot: string): Promise<DoctorReport>;
|
|
19
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/core/quality/doctor.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,wBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAiB1E"}
|