codex-plugin-doctor 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -9
- package/dist/run-cli.js +13 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -358,17 +358,19 @@ jobs:
|
|
|
358
358
|
runs-on: ubuntu-latest
|
|
359
359
|
steps:
|
|
360
360
|
- uses: actions/checkout@v5
|
|
361
|
-
- uses: Esquetta/CodexPluginDoctor@v1.
|
|
361
|
+
- uses: Esquetta/CodexPluginDoctor@v1.8.0
|
|
362
362
|
with:
|
|
363
|
-
version: "1.
|
|
363
|
+
version: "1.8.0"
|
|
364
364
|
path: .
|
|
365
|
-
runtime: "true"
|
|
366
|
-
policy: codex-publish
|
|
367
|
-
upload-artifact: "true"
|
|
368
|
-
artifact-name: codex-plugin-doctor-reports
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
365
|
+
runtime: "true"
|
|
366
|
+
policy: codex-publish
|
|
367
|
+
upload-artifact: "true"
|
|
368
|
+
artifact-name: codex-plugin-doctor-reports
|
|
369
|
+
review-bundle: "true"
|
|
370
|
+
review-bundle-verify: "true"
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
The action writes `codex-plugin-doctor-summary.md`, `codex-plugin-doctor-report.json`, optional `codex-plugin-doctor.sarif`, and optional signed `review-bundle/` files to `codex-plugin-doctor-reports`, appends the Markdown report to the GitHub Actions step summary, uploads the report directory as an artifact, and then returns the real validation exit code. Review bundle generation requires a signing key environment variable such as `CODEX_PLUGIN_DOCTOR_SIGNING_KEY`. For runtime probing, SARIF output, review bundle artifacts, installed plugin cache checks, CI policy presets, and pinned release examples, see [GitHub Action Usage](./docs/engineering/github-action-usage.md).
|
|
372
374
|
|
|
373
375
|
To self-test this repository after cloning it:
|
|
374
376
|
|
package/dist/run-cli.js
CHANGED
|
@@ -73,7 +73,7 @@ const defaultIo = {
|
|
|
73
73
|
}
|
|
74
74
|
};
|
|
75
75
|
function printUsage(io) {
|
|
76
|
-
io.writeStderr("Usage: codex-plugin-doctor check <path|--installed> [filter] [--policy codex-publish|mcp-strict|security] [--compat] [--json|--markdown|--badge-json|--badge-markdown] [--output <path>] [--history <path>] [--runtime] [--require-runtime-approval --runtime-approval-digest <digest>] [--verbose-runtime] [--explain] [--no-animations] [--ascii]\n codex-plugin-doctor audit --installed [filter] [--policy codex-publish|mcp-strict|security] [--security] [--compat] [--json] [--output <path>] [--cache] [--changed]\n codex-plugin-doctor mcp <path> [--json] [--output <path>]\n codex-plugin-doctor security <path> [--policy security] [--json|--scorecard]\n codex-plugin-doctor compat <path> [--all|--client <client>] [--json] [--scorecard] [--output <path>] [--install-preview|--apply --backup]\n codex-plugin-doctor fix <path> (--dry-run|--interactive --backup|--apply --backup)\n codex-plugin-doctor history <history.jsonl> [--json] [--fail-on-regression]\n codex-plugin-doctor doctor [npm <package>|contract|corpus|runtime-plan <path> [--json|--markdown] [--output <path>]|runtime-policy <path> [--json] [--output <path>]|review-bundle <path> --output <dir> --sign-key-env NAME [--json] [--allow-dirty] [--allow-untagged]|review-bundle verify <bundle-dir> --target <path> --sign-key-env NAME [--json]|review-bundle diff --before <dir> --after <dir> [--json]|attest <path> [--sign-key-env NAME]|attest verify <attestation.json> --target <path> --sign-key-env NAME|release-evidence <path> --sign-key-env NAME [--allow-dirty] [--allow-untagged] [--require-runtime-approval --runtime-approval-digest <digest>]|release-evidence verify <evidence.json> --target <path> --sign-key-env NAME|release-evidence asset <path> --tag <tag> --output <evidence.json> --sign-key-env NAME [--upload]|mcp <path>|inspector <path>|diff --before <path> --after <path>|recommend <path>|trust <path>|perf <path> [--max-total-ms <ms>] [--max-stage-ms stage=ms]|export --bundle <path>|snapshot|clients|--json|--update-check]\n codex-plugin-doctor init [path] [--template skill-only|mcp-stdio|mcp-http|full-runtime]\n codex-plugin-doctor init-ci [path]\n codex-plugin-doctor self-test\n codex-plugin-doctor list --installed\n codex-plugin-doctor explain <finding-id>\n codex-plugin-doctor --version\n\nFirst run:\n codex-plugin-doctor doctor\n codex-plugin-doctor self-test\n codex-plugin-doctor init my-plugin\n codex-plugin-doctor check . --runtime --explain");
|
|
76
|
+
io.writeStderr("Usage: codex-plugin-doctor check <path|--installed> [filter] [--policy codex-publish|mcp-strict|security] [--compat] [--json|--markdown|--badge-json|--badge-markdown] [--output <path>] [--history <path>] [--runtime] [--require-runtime-approval --runtime-approval-digest <digest>] [--verbose-runtime] [--explain] [--no-animations] [--ascii]\n codex-plugin-doctor audit --installed [filter] [--policy codex-publish|mcp-strict|security] [--security] [--compat] [--json] [--output <path>] [--cache] [--changed]\n codex-plugin-doctor mcp <path> [--json] [--output <path>]\n codex-plugin-doctor security <path> [--policy security] [--json|--scorecard]\n codex-plugin-doctor compat <path> [--all|--client <client>] [--json] [--scorecard] [--output <path>] [--install-preview|--apply --backup]\n codex-plugin-doctor fix <path> (--dry-run|--interactive --backup|--apply --backup)\n codex-plugin-doctor history <history.jsonl> [--json] [--fail-on-regression]\n codex-plugin-doctor doctor [npm <package>|contract|corpus|runtime-plan <path> [--json|--markdown] [--output <path>]|runtime-policy <path> [--json] [--output <path>]|review-bundle <path> --output <dir> --sign-key-env NAME [--json] [--allow-dirty] [--allow-untagged]|review-bundle verify <bundle-dir> --target <path> --sign-key-env NAME [--json] [--output <path>]|review-bundle diff --before <dir> --after <dir> [--json]|attest <path> [--sign-key-env NAME]|attest verify <attestation.json> --target <path> --sign-key-env NAME|release-evidence <path> --sign-key-env NAME [--allow-dirty] [--allow-untagged] [--require-runtime-approval --runtime-approval-digest <digest>]|release-evidence verify <evidence.json> --target <path> --sign-key-env NAME|release-evidence asset <path> --tag <tag> --output <evidence.json> --sign-key-env NAME [--upload]|mcp <path>|inspector <path>|diff --before <path> --after <path>|recommend <path>|trust <path>|perf <path> [--max-total-ms <ms>] [--max-stage-ms stage=ms]|export --bundle <path>|snapshot|clients|--json|--update-check]\n codex-plugin-doctor init [path] [--template skill-only|mcp-stdio|mcp-http|full-runtime]\n codex-plugin-doctor init-ci [path]\n codex-plugin-doctor self-test\n codex-plugin-doctor list --installed\n codex-plugin-doctor explain <finding-id>\n codex-plugin-doctor --version\n\nFirst run:\n codex-plugin-doctor doctor\n codex-plugin-doctor self-test\n codex-plugin-doctor init my-plugin\n codex-plugin-doctor check . --runtime --explain");
|
|
77
77
|
}
|
|
78
78
|
const performanceStageNames = new Set([
|
|
79
79
|
"validation",
|
|
@@ -449,6 +449,8 @@ export async function runCli(args, io = defaultIo, options = {}) {
|
|
|
449
449
|
: null;
|
|
450
450
|
const verifyFlags = bundleDirectory ? remainingArgs.slice(2) : remainingArgs.slice(1);
|
|
451
451
|
const jsonOutput = verifyFlags.includes("--json");
|
|
452
|
+
const outputIndex = verifyFlags.indexOf("--output");
|
|
453
|
+
const outputPath = outputIndex === -1 ? null : verifyFlags[outputIndex + 1];
|
|
452
454
|
const targetIndex = verifyFlags.indexOf("--target");
|
|
453
455
|
const targetPath = targetIndex === -1 ? null : verifyFlags[targetIndex + 1];
|
|
454
456
|
const signKeyEnvIndex = verifyFlags.indexOf("--sign-key-env");
|
|
@@ -465,6 +467,10 @@ export async function runCli(args, io = defaultIo, options = {}) {
|
|
|
465
467
|
io.writeStderr("Missing path after --target.");
|
|
466
468
|
return 2;
|
|
467
469
|
}
|
|
470
|
+
if (outputIndex !== -1 && (!outputPath || outputPath.startsWith("--"))) {
|
|
471
|
+
io.writeStderr("Missing path after --output.");
|
|
472
|
+
return 2;
|
|
473
|
+
}
|
|
468
474
|
if (signKeyEnvIndex === -1) {
|
|
469
475
|
io.writeStderr("Missing signing key. Use --sign-key-env <name>.");
|
|
470
476
|
return 2;
|
|
@@ -482,9 +488,13 @@ export async function runCli(args, io = defaultIo, options = {}) {
|
|
|
482
488
|
signingKey,
|
|
483
489
|
targetPath
|
|
484
490
|
});
|
|
485
|
-
|
|
491
|
+
const renderedReport = jsonOutput
|
|
486
492
|
? renderDoctorReviewBundleVerificationJson(report)
|
|
487
|
-
: renderDoctorReviewBundleVerification(report)
|
|
493
|
+
: renderDoctorReviewBundleVerification(report);
|
|
494
|
+
if (outputPath) {
|
|
495
|
+
await writeFile(outputPath, renderedReport, "utf8");
|
|
496
|
+
}
|
|
497
|
+
io.writeStdout(renderedReport);
|
|
488
498
|
return report.exitCode;
|
|
489
499
|
}
|
|
490
500
|
const targetPath = remainingArgs[0] && !remainingArgs[0].startsWith("--")
|
package/package.json
CHANGED