@chemx/starter-kit 26.10.8-344 → 26.10.10-75
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/AGENTS.md +135 -32
- package/README.md +253 -199
- package/blueprints/atoms/a-button.svelte +11 -9
- package/blueprints/atoms/a-button.vue +2 -1
- package/blueprints/molecule-capsule/m-chemx-badge/m-chemx-badge.svelte +8 -4
- package/blueprints/molecule-capsule/m-chemx-badge/m-chemx-badge.tsx +8 -4
- package/blueprints/molecule-capsule/m-chemx-badge/m-chemx-badge.vue +8 -4
- package/blueprints/molecule-capsule/m-sample-card.svelte +2 -1
- package/blueprints/molecule-capsule/m-sample-card.tsx +2 -1
- package/blueprints/molecule-capsule/m-sample-card.vue +4 -2
- package/blueprints/workflows/chemx-audit.yml +15 -46
- package/cli/agent-json.js +40 -0
- package/cli/apply-edits.js +195 -0
- package/cli/audit/ai-slop-detector.js +62 -35
- package/cli/audit/ast-passes.js +52 -0
- package/cli/audit/ast-visitors.js +142 -83
- package/cli/audit/audit-plain.js +26 -0
- package/cli/audit/audit-summary.js +16 -3
- package/cli/audit/autofix-content.js +122 -0
- package/cli/audit/autofix.js +74 -159
- package/cli/audit/budget-rules.js +84 -0
- package/cli/audit/catch-predicates.js +51 -0
- package/cli/audit/chemx-dir.js +76 -0
- package/cli/audit/clone-detector.js +4 -2
- package/cli/audit/comment-regions.js +83 -0
- package/cli/audit/coverage.js +48 -0
- package/cli/audit/csharp-analyzer.js +47 -22
- package/cli/audit/discussion-store.js +9 -4
- package/cli/audit/extended-text-patterns.js +104 -54
- package/cli/audit/extended-visitors.js +26 -12
- package/cli/audit/feed.d.ts +77 -0
- package/cli/audit/feed.js +146 -0
- package/cli/audit/gate-delta.js +91 -0
- package/cli/audit/gate-verdict.js +25 -3
- package/cli/audit/history.d.ts +14 -2
- package/cli/audit/history.js +89 -101
- package/cli/audit/hook-shape-validator.js +18 -9
- package/cli/audit/lexicon-predicates.js +125 -0
- package/cli/audit/lifecycle-predicates.js +106 -0
- package/cli/audit/line-budgets.js +154 -0
- package/cli/audit/metrics.js +56 -37
- package/cli/audit/mutable-ref-predicate.js +54 -0
- package/cli/audit/parseable-code.js +11 -0
- package/cli/audit/pattern-detector.js +56 -28
- package/cli/audit/project-figures.js +28 -0
- package/cli/audit/prompt-rule-lines.js +46 -0
- package/cli/audit/prompts.js +74 -46
- package/cli/audit/prop-surface.js +74 -0
- package/cli/audit/ratchet.js +112 -23
- package/cli/audit/render-depth.js +79 -0
- package/cli/audit/reporter-banner.js +7 -4
- package/cli/audit/reporter-grades.js +52 -34
- package/cli/audit/reporter-grouping.js +10 -5
- package/cli/audit/reporter-markdown.js +16 -8
- package/cli/audit/reporter-sections.js +31 -16
- package/cli/audit/reporter-summary.js +28 -16
- package/cli/audit/reporter-utils.js +54 -30
- package/cli/audit/roadmap.js +20 -15
- package/cli/audit/rule-overrides.js +78 -0
- package/cli/audit/rule-pillars.js +43 -0
- package/cli/audit/rule-revisions.js +42 -0
- package/cli/audit/rules-helpers.js +13 -63
- package/cli/audit/rules-predicates.d.ts +1 -0
- package/cli/audit/rules-predicates.js +84 -64
- package/cli/audit/rules-registry.js +94 -10
- package/cli/audit/rules.js +92 -171
- package/cli/audit/shallow-catch-csharp.js +49 -0
- package/cli/audit/shallow-catch-escalation.js +157 -0
- package/cli/audit/shallow-catch-reads.js +116 -0
- package/cli/audit/social-gh.js +18 -9
- package/cli/audit/social-git.js +82 -40
- package/cli/audit/social-http.js +17 -9
- package/cli/audit/social-publisher.js +14 -7
- package/cli/audit/social.js +39 -30
- package/cli/audit/staged-delta.js +67 -0
- package/cli/audit/status-file.js +67 -0
- package/cli/audit/structural-weight-evaluator.js +17 -29
- package/cli/audit/structural-weight.js +30 -13
- package/cli/audit/suppressions.js +130 -0
- package/cli/audit/template-rules.js +82 -0
- package/cli/audit/types.d.ts +24 -1
- package/cli/audit-engine.js +128 -0
- package/cli/audit-preflight-git.js +15 -1
- package/cli/audit-preflight.js +6 -4
- package/cli/audit-scan.js +180 -0
- package/cli/audit-scope.js +31 -14
- package/cli/audit.js +6 -201
- package/cli/babel-lazy.js +41 -0
- package/cli/badge.js +9 -6
- package/cli/banner.js +37 -0
- package/cli/build/child-registry.js +57 -0
- package/cli/build/executor.js +122 -48
- package/cli/build.js +75 -25
- package/cli/cli-args.js +107 -0
- package/cli/columnar.js +6 -3
- package/cli/commands/cmd-audit-each.js +164 -0
- package/cli/commands/cmd-audit-feed.js +78 -0
- package/cli/commands/cmd-audit.js +136 -57
- package/cli/commands/cmd-batch.js +60 -0
- package/cli/commands/cmd-check.js +74 -0
- package/cli/commands/cmd-project.js +18 -9
- package/cli/commands/cmd-router.js +148 -32
- package/cli/commands/cmd-show.js +56 -0
- package/cli/commands/cmd-staged-delta.js +27 -0
- package/cli/commands/cmd-wrappers-files.js +77 -0
- package/cli/commands/cmd-wrappers-git.js +122 -0
- package/cli/commands/cmd-wrappers-json.js +101 -0
- package/cli/commands/cmd-wrappers.js +7 -322
- package/cli/commands/unknown-flags.js +228 -0
- package/cli/commands-schema-badge.js +73 -0
- package/cli/commands-schema-commit.js +21 -0
- package/cli/commands-schema-edit.js +106 -0
- package/cli/commands-schema-host.js +65 -0
- package/cli/commands-schema-ops.js +127 -0
- package/cli/commands-schema-patterns.js +69 -0
- package/cli/commands-schema-report.js +18 -0
- package/cli/commands-schema-search.js +121 -0
- package/cli/commands-schema-setup.js +30 -0
- package/cli/commands-schema-verify.js +89 -0
- package/cli/commands-schema-wrappers.js +131 -0
- package/cli/commands-schema.js +26 -408
- package/cli/comment-ranges.js +108 -0
- package/cli/commit/commit-args.js +73 -0
- package/cli/commit/commit-cli.js +25 -0
- package/cli/commit/commit-facts.js +49 -0
- package/cli/commit/commit-git.js +98 -0
- package/cli/commit/commit-index.js +35 -0
- package/cli/commit/commit-message.js +52 -0
- package/cli/commit/commit-record.js +68 -0
- package/cli/commit/commit-run.js +160 -0
- package/cli/commit/commit-validate.js +62 -0
- package/cli/config/index.js +54 -8
- package/cli/config/loader.js +77 -8
- package/cli/config/profiles.js +7 -0
- package/cli/conflicts-cli.js +118 -0
- package/cli/conflicts.js +104 -0
- package/cli/create.js +11 -6
- package/cli/db-project-stamp.js +124 -0
- package/cli/docs-check/command-tree.js +27 -0
- package/cli/docs-check/extract.js +151 -0
- package/cli/docs-check/resolve.js +85 -0
- package/cli/docs-check/run.js +88 -0
- package/cli/doctor/check-env.js +43 -0
- package/cli/doctor/check-host.js +115 -0
- package/cli/doctor/check-index.js +93 -0
- package/cli/doctor/check-mcp.js +78 -0
- package/cli/doctor/doctor-cli.js +60 -0
- package/cli/doctor/kit-locate.js +40 -0
- package/cli/doctor/proc-scan.js +66 -0
- package/cli/edit-atomic.js +75 -0
- package/cli/edit-diff.js +98 -0
- package/cli/edit-guardrails.js +77 -0
- package/cli/edit-locks.js +128 -0
- package/cli/embeddings/vectorizer.js +9 -5
- package/cli/errors/catcher.js +45 -52
- package/cli/errors/formatter.js +14 -10
- package/cli/errors/policy.js +26 -0
- package/cli/errors/publisher.js +5 -1
- package/cli/errors/report-output.js +67 -0
- package/cli/errors/sanitizer.js +52 -3
- package/cli/errors/storage.js +17 -5
- package/cli/explode-importers.js +102 -0
- package/cli/explode-path-args.js +115 -0
- package/cli/explode-plan.js +153 -0
- package/cli/explode-prologue.js +43 -0
- package/cli/explode-relocate.js +73 -0
- package/cli/exploder.js +205 -193
- package/cli/forge/anchors.js +50 -0
- package/cli/forge/audit-forge.js +58 -0
- package/cli/forge/binding-walk.js +84 -0
- package/cli/forge/bindings.js +238 -0
- package/cli/forge/blueprint-cli.js +153 -0
- package/cli/forge/blueprint-context.js +69 -0
- package/cli/forge/blueprint-members.js +82 -0
- package/cli/forge/blueprint-store.js +106 -0
- package/cli/forge/blueprint-target.js +44 -0
- package/cli/forge/blueprint.js +276 -0
- package/cli/forge/body-end-cache.js +34 -0
- package/cli/forge/body-ends.js +86 -0
- package/cli/forge/canon-inline.js +342 -0
- package/cli/forge/canon-logic.js +106 -0
- package/cli/forge/canon-nodes.js +270 -0
- package/cli/forge/canon-print.js +120 -0
- package/cli/forge/canonicalize.js +49 -0
- package/cli/forge/conventions.js +51 -0
- package/cli/forge/drift.js +120 -0
- package/cli/forge/exclusions.js +21 -0
- package/cli/forge/exits.js +76 -0
- package/cli/forge/facets.js +86 -0
- package/cli/forge/file-units.js +53 -0
- package/cli/forge/fingerprint-file.js +52 -0
- package/cli/forge/fingerprint-session.js +215 -0
- package/cli/forge/fingerprint-sync.js +74 -0
- package/cli/forge/fingerprint-visitors.js +66 -0
- package/cli/forge/fixtures/heal/a7-dry-run.diff.txt +179 -0
- package/cli/forge/fixtures/heal/cli/commit/commit-facts.js.txt +49 -0
- package/cli/forge/fixtures/heal/cli/doctor/check-host.js.txt +117 -0
- package/cli/forge/fixtures/heal/cli/doctor/kit-locate.js.txt +42 -0
- package/cli/forge/fixtures/heal/cli/hooks/guard-paths.js.txt +80 -0
- package/cli/forge/fixtures/heal/cli/hooks/project-status.js.txt +62 -0
- package/cli/forge/fixtures/heal/cli/main.js.txt +169 -0
- package/cli/forge/fixtures/heal/cli/mcp/context.js.txt +81 -0
- package/cli/forge/fixtures/heal/cli/mcp/installer-report.js.txt +47 -0
- package/cli/forge/fixtures/heal/cli/path-scope.js.txt +169 -0
- package/cli/forge/fixtures/heal/cli/project-detector.js.txt +364 -0
- package/cli/forge/fixtures/heal/cli/project-markers.js.txt +42 -0
- package/cli/forge/fixtures/heal/cli/team/coordination-root.js.txt +161 -0
- package/cli/forge/fixtures/heal/cli/team/usage-reader.js.txt +109 -0
- package/cli/forge/fixtures/heal/cli/test-slots.js.txt +129 -0
- package/cli/forge/fixtures/social-gh.js.txt +131 -0
- package/cli/forge/fixtures/team-flags.js.txt +214 -0
- package/cli/forge/fold.js +199 -0
- package/cli/forge/forge-groups.js +200 -0
- package/cli/forge/forge-report.js +73 -0
- package/cli/forge/fuzz/binding-hook.js +36 -0
- package/cli/forge/fuzz/choices.js +40 -0
- package/cli/forge/fuzz/classes.js +41 -0
- package/cli/forge/fuzz/coverage.js +26 -0
- package/cli/forge/fuzz/gen-alias.js +61 -0
- package/cli/forge/fuzz/gen-control.js +73 -0
- package/cli/forge/fuzz/gen-kit.js +75 -0
- package/cli/forge/fuzz/gen-logic.js +77 -0
- package/cli/forge/fuzz/gen-mixed.js +204 -0
- package/cli/forge/fuzz/gen-modules.js +80 -0
- package/cli/forge/fuzz/gen-objects.js +92 -0
- package/cli/forge/fuzz/gen-scope.js +131 -0
- package/cli/forge/fuzz/gen-templates.js +87 -0
- package/cli/forge/fuzz/harness.js +314 -0
- package/cli/forge/fuzz/pair-check.js +115 -0
- package/cli/forge/fuzz/resolve.js +32 -0
- package/cli/forge/fuzz/run.js +121 -0
- package/cli/forge/fuzz/sandbox.js +108 -0
- package/cli/forge/fuzz/seeds.js +119 -0
- package/cli/forge/fuzz/slow-shard.js +60 -0
- package/cli/forge/fuzz/template-oracle.js +148 -0
- package/cli/forge/fuzz/transpile.js +61 -0
- package/cli/forge/gates.js +115 -0
- package/cli/forge/group-shape.js +137 -0
- package/cli/forge/group-store.js +160 -0
- package/cli/forge/group.js +280 -0
- package/cli/forge/gt-sandbox.js +83 -0
- package/cli/forge/gt-scaffold.js +110 -0
- package/cli/forge/hash-labels.js +117 -0
- package/cli/forge/hash.js +119 -0
- package/cli/forge/heal-apply.js +170 -0
- package/cli/forge/heal-cli.js +132 -0
- package/cli/forge/heal-leases.js +52 -0
- package/cli/forge/heal-locate.js +70 -0
- package/cli/forge/heal-match.js +208 -0
- package/cli/forge/heal-ops.js +197 -0
- package/cli/forge/heal-plan.js +143 -0
- package/cli/forge/heal-sandbox.js +126 -0
- package/cli/forge/heal-specs.js +80 -0
- package/cli/forge/heal-store.js +80 -0
- package/cli/forge/heal-text.js +60 -0
- package/cli/forge/heal-typecheck.js +108 -0
- package/cli/forge/heal-undo.js +74 -0
- package/cli/forge/heal-verify.js +148 -0
- package/cli/forge/hole-kinds.js +126 -0
- package/cli/forge/inline-mode.js +6 -0
- package/cli/forge/inline-on.setup.js +4 -0
- package/cli/forge/lgg-stage.js +125 -0
- package/cli/forge/lgg.js +197 -0
- package/cli/forge/library-match.js +74 -0
- package/cli/forge/murmur.js +86 -0
- package/cli/forge/naming.js +101 -0
- package/cli/forge/pattern-schema-ddl.js +157 -0
- package/cli/forge/placement.js +165 -0
- package/cli/forge/rank.js +174 -0
- package/cli/forge/refine.js +93 -0
- package/cli/forge/rejected-members.js +92 -0
- package/cli/forge/rejects.js +77 -0
- package/cli/forge/root-shapes.js +84 -0
- package/cli/forge/run-cache.js +145 -0
- package/cli/forge/sibling-blocks.js +41 -0
- package/cli/forge/siblings.js +140 -0
- package/cli/forge/store.js +180 -0
- package/cli/forge/template-normalize.js +209 -0
- package/cli/forge/template-roles.js +86 -0
- package/cli/forge/template-units.js +148 -0
- package/cli/forge/templates.js +42 -0
- package/cli/forge/unify-step.js +65 -0
- package/cli/forge/unit-floor.js +74 -0
- package/cli/forge/unit-hash.js +229 -0
- package/cli/forge/unit-trees.js +153 -0
- package/cli/forge/units.js +261 -0
- package/cli/forge/windows.js +129 -0
- package/cli/friction/friction-cli.js +71 -0
- package/cli/friction/friction-export.js +54 -0
- package/cli/friction/friction-log.js +54 -0
- package/cli/friction/usage-classify.js +56 -0
- package/cli/friction/usage-report.js +86 -0
- package/cli/friction/wrong-call.js +12 -0
- package/cli/fs-json.js +17 -0
- package/cli/generator-compact.js +55 -0
- package/cli/generator-help.js +16 -15
- package/cli/generator-indexer.js +2 -1
- package/cli/generator-jig-cli.js +11 -7
- package/cli/generator-jig.js +38 -33
- package/cli/generator-templates/archetypes/index.js +30 -13
- package/cli/generator-templates/archetypes/vector-matcher.js +8 -4
- package/cli/generator-templates/compact.js +4 -2
- package/cli/generator-templates/controller-converters.js +23 -14
- package/cli/generator-templates/controller.js +10 -5
- package/cli/generator-templates/hooks.js +4 -2
- package/cli/generator-templates/naming.js +2 -1
- package/cli/generator-templates/react.js +2 -1
- package/cli/generator-templates/specs.js +4 -2
- package/cli/generator-templates/svelte.js +4 -2
- package/cli/generator-templates/types.js +6 -3
- package/cli/generator-templates/views.js +4 -2
- package/cli/generator-templates/vue.js +4 -2
- package/cli/generator-writes.js +24 -0
- package/cli/generator.d.ts +1 -1
- package/cli/generator.js +86 -127
- package/cli/git-file-listing.js +69 -0
- package/cli/help-args.js +18 -0
- package/cli/help.d.ts +7 -3
- package/cli/help.js +94 -149
- package/cli/hooks/bypass-log.js +44 -0
- package/cli/hooks/claude-post-edit.js +79 -0
- package/cli/hooks/claude-pre-tool.js +178 -0
- package/cli/hooks/claude-settings-merge.js +101 -0
- package/cli/hooks/dispatch-identity.js +125 -0
- package/cli/hooks/entry.js +181 -0
- package/cli/hooks/foreign-identity.js +60 -0
- package/cli/hooks/guard-args.js +55 -0
- package/cli/hooks/guard-cases.js +94 -0
- package/cli/hooks/guard-config.js +43 -0
- package/cli/hooks/guard-invocation.js +106 -0
- package/cli/hooks/guard-paths.js +80 -0
- package/cli/hooks/guard-route.js +211 -0
- package/cli/hooks/guard-rules-nudge.js +37 -0
- package/cli/hooks/guard-rules-reads.js +66 -0
- package/cli/hooks/guard-rules-shell.js +239 -0
- package/cli/hooks/guard-rules.js +114 -0
- package/cli/hooks/hook-commands.js +21 -0
- package/cli/hooks/install-hooks-apply.js +36 -0
- package/cli/hooks/install-hooks-cli.js +100 -0
- package/cli/hooks/install-hooks-config.js +48 -0
- package/cli/hooks/install-hooks-pins.js +66 -0
- package/cli/hooks/install-hooks-plan.js +56 -0
- package/cli/hooks/install-hooks-status.js +7 -0
- package/cli/hooks/interpreter-writes.js +195 -0
- package/cli/hooks/launcher.js +60 -0
- package/cli/hooks/mcp-json-merge.js +39 -0
- package/cli/hooks/native-edit-lock.js +40 -0
- package/cli/hooks/native-tool-policy.js +152 -0
- package/cli/hooks/out-of-band-edits.js +141 -0
- package/cli/hooks/post-edit-scope.js +43 -0
- package/cli/hooks/project-status.js +59 -0
- package/cli/hooks/repo-membership.js +32 -0
- package/cli/hooks/run-hook.js +79 -0
- package/cli/hooks/session-identity.js +153 -0
- package/cli/hooks/session-start.js +50 -0
- package/cli/hooks/shell-lexer-readers.js +76 -0
- package/cli/hooks/shell-lexer-state.js +59 -0
- package/cli/hooks/shell-lexer.js +110 -0
- package/cli/hooks/shell-parse.js +232 -0
- package/cli/hooks/statusline.js +27 -0
- package/cli/hooks/xatoms-hints.js +38 -0
- package/cli/host-protocol.js +109 -0
- package/cli/host-shims.js +9 -8
- package/cli/index-admission.js +41 -0
- package/cli/index-freshness.js +83 -0
- package/cli/index-row-check.js +58 -0
- package/cli/index.js +52 -150
- package/cli/installer-templates.js +67 -75
- package/cli/installer.d.ts +16 -1
- package/cli/installer.js +159 -58
- package/cli/languages.js +8 -4
- package/cli/lattice-directives.js +24 -0
- package/cli/lattice-payload.js +34 -0
- package/cli/{tesseract-state.js → lattice-state.js} +8 -4
- package/cli/lease-view.js +48 -0
- package/cli/library/entry-fp.js +42 -0
- package/cli/library/entry-schema.js +90 -0
- package/cli/library/library-tasks.js +25 -0
- package/cli/library/registry.js +56 -0
- package/cli/library/reverify.js +56 -0
- package/cli/library/verify-checks.js +89 -0
- package/cli/library/verify.js +81 -0
- package/cli/license-config.js +124 -0
- package/cli/license.js +168 -135
- package/cli/line-count.js +23 -0
- package/cli/literal-replace.js +107 -0
- package/cli/main.js +166 -0
- package/cli/mcp/antigravity.js +11 -9
- package/cli/mcp/batch.js +59 -0
- package/cli/mcp/call-args.js +75 -0
- package/cli/mcp/call-effects.js +57 -0
- package/cli/mcp/call-scope.js +70 -62
- package/cli/mcp/context.js +81 -0
- package/cli/mcp/envelope.js +62 -0
- package/cli/mcp/fingerprint.js +26 -0
- package/cli/mcp/fresh-entry.js +34 -0
- package/cli/mcp/fresh-protocol.js +37 -0
- package/cli/mcp/fresh-runner.js +40 -0
- package/cli/mcp/help.js +53 -0
- package/cli/mcp/index.js +9 -5
- package/cli/mcp/inflight.js +47 -0
- package/cli/mcp/installer-jsonc.js +64 -0
- package/cli/mcp/installer-package.js +54 -0
- package/cli/mcp/installer-report.js +47 -0
- package/cli/mcp/installer-write.js +117 -0
- package/cli/mcp/installer.js +88 -187
- package/cli/mcp/manifests-analysis.js +156 -0
- package/cli/mcp/manifests-runners.js +48 -0
- package/cli/mcp/manifests-team.js +100 -0
- package/cli/mcp/manifests.js +69 -309
- package/cli/mcp/offload-worker.js +11 -0
- package/cli/mcp/offload.js +18 -0
- package/cli/mcp/patterns-cli.js +76 -0
- package/cli/mcp/patterns-forge-cli.js +120 -0
- package/cli/mcp/prompts.js +13 -10
- package/cli/mcp/resources.js +8 -35
- package/cli/mcp/roots.js +46 -0
- package/cli/mcp/scorecard-worker.js +7 -0
- package/cli/mcp/scorecard.js +42 -0
- package/cli/mcp/server-info.js +28 -0
- package/cli/mcp/server.js +91 -291
- package/cli/mcp/spec-harness.js +62 -0
- package/cli/mcp/stale-exec.js +48 -0
- package/cli/mcp/staleness.js +26 -0
- package/cli/mcp/stdio.js +141 -0
- package/cli/mcp/tool-call.js +73 -0
- package/cli/mcp/tools-audit-feed.js +33 -0
- package/cli/mcp/tools-audit.js +13 -7
- package/cli/mcp/tools-generate.js +3 -3
- package/cli/mcp/tools-lazy.js +39 -0
- package/cli/mcp/tools-patch.js +93 -21
- package/cli/mcp/tools-patterns.js +6 -3
- package/cli/mcp/tools-project.js +8 -4
- package/cli/mcp/tools-q-modes.js +15 -14
- package/cli/mcp/tools-q.js +94 -33
- package/cli/mcp/tools-read.js +30 -80
- package/cli/mcp/tools-team-feed.js +10 -8
- package/cli/mcp/tools-team-locks.js +22 -10
- package/cli/mcp/tools-team-mailbox.js +8 -7
- package/cli/mcp/tools-team-tasks.js +125 -38
- package/cli/mcp/tools-team.js +14 -7
- package/cli/mcp/tools-verify.js +44 -15
- package/cli/mcp/tools-write.js +11 -16
- package/cli/mcp/tools.js +202 -68
- package/cli/mcp/worker-run.js +24 -0
- package/cli/missing-imports.js +52 -0
- package/cli/mutation-args.js +96 -0
- package/cli/mutators.js +164 -61
- package/cli/navigator-actions.js +19 -13
- package/cli/navigator-banner-helpers.js +1 -26
- package/cli/navigator-banner.js +5 -3
- package/cli/navigator-conversion.js +23 -12
- package/cli/navigator-grades.js +70 -35
- package/cli/navigator-guide.js +13 -11
- package/cli/navigator-menu.js +80 -166
- package/cli/navigator-paged.js +15 -8
- package/cli/navigator-sections.js +32 -0
- package/cli/navigator-share.js +53 -39
- package/cli/navigator.d.ts +25 -5
- package/cli/navigator.js +14 -41
- package/cli/network-policy.js +72 -0
- package/cli/network-recorder.fixture.mjs +35 -0
- package/cli/outline/ast-outline.js +120 -0
- package/cli/outline/style-outline.js +42 -0
- package/cli/outline/vue-outline.js +88 -0
- package/cli/patcher-cli.js +255 -0
- package/cli/patcher.d.ts +55 -24
- package/cli/patcher.js +167 -358
- package/cli/path-scope.js +78 -22
- package/cli/patterns/fixtures/gt/A1.txt +109 -0
- package/cli/patterns/fixtures/gt/A10.txt +13 -0
- package/cli/patterns/fixtures/gt/A11.txt +10 -0
- package/cli/patterns/fixtures/gt/A12.txt +29 -0
- package/cli/patterns/fixtures/gt/A13.txt +39 -0
- package/cli/patterns/fixtures/gt/A14.txt +45 -0
- package/cli/patterns/fixtures/gt/A15.txt +70 -0
- package/cli/patterns/fixtures/gt/A16.txt +59 -0
- package/cli/patterns/fixtures/gt/A17.txt +29 -0
- package/cli/patterns/fixtures/gt/A18.txt +9 -0
- package/cli/patterns/fixtures/gt/A19.txt +29 -0
- package/cli/patterns/fixtures/gt/A2.txt +28 -0
- package/cli/patterns/fixtures/gt/A20.txt +83 -0
- package/cli/patterns/fixtures/gt/A21.txt +138 -0
- package/cli/patterns/fixtures/gt/A22.txt +32 -0
- package/cli/patterns/fixtures/gt/A23.txt +37 -0
- package/cli/patterns/fixtures/gt/A24.txt +67 -0
- package/cli/patterns/fixtures/gt/A25.txt +41 -0
- package/cli/patterns/fixtures/gt/A26.txt +29 -0
- package/cli/patterns/fixtures/gt/A3.txt +17 -0
- package/cli/patterns/fixtures/gt/A4.txt +44 -0
- package/cli/patterns/fixtures/gt/A5.txt +32 -0
- package/cli/patterns/fixtures/gt/A6.txt +15 -0
- package/cli/patterns/fixtures/gt/A7.txt +79 -0
- package/cli/patterns/fixtures/gt/A8.txt +41 -0
- package/cli/patterns/fixtures/gt/A9.txt +42 -0
- package/cli/patterns/fixtures/gt/B1.txt +11 -0
- package/cli/patterns/fixtures/gt/B10.txt +41 -0
- package/cli/patterns/fixtures/gt/B11.txt +7 -0
- package/cli/patterns/fixtures/gt/B2.txt +19 -0
- package/cli/patterns/fixtures/gt/B3.txt +70 -0
- package/cli/patterns/fixtures/gt/B4.txt +55 -0
- package/cli/patterns/fixtures/gt/B5.txt +21 -0
- package/cli/patterns/fixtures/gt/B6.txt +15 -0
- package/cli/patterns/fixtures/gt/B7.txt +24 -0
- package/cli/patterns/fixtures/gt/B8.txt +40 -0
- package/cli/patterns/fixtures/gt/B9.txt +18 -0
- package/cli/patterns/fixtures/gt/C1.txt +26 -0
- package/cli/patterns/fixtures/gt/C2.txt +33 -0
- package/cli/patterns/fixtures/gt/C3.txt +26 -0
- package/cli/patterns/fixtures/gt/C4.txt +7 -0
- package/cli/patterns/fixtures/gt/C5.txt +29 -0
- package/cli/patterns/fixtures/gt/C6.txt +7 -0
- package/cli/patterns/fixtures/gt/C7.txt +18 -0
- package/cli/patterns/fixtures/gt/labels.json +1837 -0
- package/cli/patterns/gt-build.js +55 -0
- package/cli/patterns/gt-locations.js +76 -0
- package/cli/patterns/gt-resolve.js +66 -0
- package/cli/patterns/gt-score-cli.js +80 -0
- package/cli/patterns/gt-score.js +188 -0
- package/cli/patterns/gt-text.js +79 -0
- package/cli/pillars-wizard.js +53 -24
- package/cli/pillars-write-guard.js +4 -1
- package/cli/postinstall.js +22 -19
- package/cli/project-detector.js +60 -35
- package/cli/project-markers.js +42 -0
- package/cli/project-scope.js +20 -0
- package/cli/read-revision.js +70 -0
- package/cli/reader-cards-gate.js +29 -0
- package/cli/reader-cards.js +153 -0
- package/cli/reader-cli.js +45 -18
- package/cli/reader-format.js +48 -0
- package/cli/reader-logic.js +128 -250
- package/cli/reader.js +210 -221
- package/cli/request-context.js +9 -0
- package/cli/result-status.js +23 -0
- package/cli/rules.js +81 -0
- package/cli/scaffold.js +80 -51
- package/cli/scan-ignore.js +12 -0
- package/cli/search-args.js +102 -0
- package/cli/search-ast-module.js +103 -0
- package/cli/search-ast.js +75 -112
- package/cli/search-commands-blast.js +70 -0
- package/cli/search-commands-graph.js +57 -105
- package/cli/search-commands-hazards.js +105 -0
- package/cli/search-commands-literal.js +102 -0
- package/cli/search-commands-semantic.js +39 -27
- package/cli/search-commands.js +93 -186
- package/cli/search-db.js +52 -252
- package/cli/search-debug.js +13 -0
- package/cli/search-graph-edges.js +112 -0
- package/cli/search-index-meta.js +66 -0
- package/cli/search-index-write.js +153 -0
- package/cli/search-literal-files.js +64 -0
- package/cli/search-literal.js +150 -0
- package/cli/search-output.js +88 -0
- package/cli/search-queries-graph.js +120 -193
- package/cli/search-queries-semantic.js +41 -14
- package/cli/search-queries-similar.js +2 -1
- package/cli/search-queries.js +46 -21
- package/cli/search-query-view.js +67 -0
- package/cli/search-rank.js +54 -0
- package/cli/search-replace-blocks.js +120 -0
- package/cli/search-resolve.js +52 -0
- package/cli/search-root.js +78 -0
- package/cli/search-scan.js +102 -0
- package/cli/search-schema-ddl.js +172 -0
- package/cli/search-schema.js +135 -220
- package/cli/search-session.js +11 -0
- package/cli/search-sync-paths.js +78 -0
- package/cli/search-sync-plan.js +63 -0
- package/cli/search-sync-rows.js +96 -0
- package/cli/search-sync.js +128 -0
- package/cli/search-tokenizer.js +8 -4
- package/cli/search.d.ts +26 -5
- package/cli/search.js +156 -410
- package/cli/sfc/component-resolver.js +96 -0
- package/cli/sfc/import-coverage.js +24 -0
- package/cli/sfc/module-aliases.js +102 -0
- package/cli/sfc/script-asts.js +51 -0
- package/cli/sfc/sfc-metadata.js +104 -0
- package/cli/sfc/sfc-parse.js +101 -0
- package/cli/sfc/svelte-parse.js +46 -0
- package/cli/sfc/template-walk.js +78 -0
- package/cli/sfc-scripts.js +60 -0
- package/cli/share-consent.js +49 -0
- package/cli/share-outcome.js +57 -0
- package/cli/silence-warnings.js +2 -1
- package/cli/source-parse.js +130 -0
- package/cli/spec-isolated-home.js +17 -0
- package/cli/spec-support/import-trace.mjs +22 -0
- package/cli/spec-support/run-cli.js +58 -0
- package/cli/sqlite-memory.js +47 -0
- package/cli/status-command.js +107 -0
- package/cli/symbol-locator.js +121 -0
- package/cli/team/agent-identity.js +58 -0
- package/cli/team/audit-run-adoption.js +117 -0
- package/cli/team/audit-run-bypass.js +177 -0
- package/cli/team/audit-run-calls.js +108 -0
- package/cli/team/audit-run-db.js +181 -0
- package/cli/team/audit-run-identity.js +80 -0
- package/cli/team/audit-run-invocations.js +130 -0
- package/cli/team/audit-run-protocol.js +258 -0
- package/cli/team/audit-run-render.js +107 -0
- package/cli/team/audit-run-shas.js +179 -0
- package/cli/team/audit-run.js +203 -0
- package/cli/team/claim-ignore-deps.js +16 -0
- package/cli/team/coordination-busy.js +164 -0
- package/cli/team/coordination-db.js +85 -0
- package/cli/team/coordination-fixture.js +53 -0
- package/cli/team/coordination-repos.js +72 -0
- package/cli/team/coordination-root.js +161 -0
- package/cli/team/coordination-target.js +114 -0
- package/cli/team/dispatch-templates/dispatch-v1.js +228 -0
- package/cli/team/edit-shas.js +45 -0
- package/cli/team/lease-activity.js +130 -0
- package/cli/team/lease-cap.js +67 -0
- package/cli/team/lease-contention.js +30 -0
- package/cli/team/lease-key.js +46 -0
- package/cli/team/lease-lapse.js +83 -0
- package/cli/team/lease-reacquire.js +99 -0
- package/cli/team/lease-renew.js +97 -0
- package/cli/team/lease-roots.js +30 -0
- package/cli/team/lease-waiter-notice.js +48 -0
- package/cli/team/staged-leases.js +64 -0
- package/cli/team/task-completion-output.js +78 -0
- package/cli/team/task-detail-sections.js +86 -0
- package/cli/team/task-list-view.js +10 -1
- package/cli/team/task-ref.js +73 -0
- package/cli/team/task-target.js +53 -0
- package/cli/team/task-tier.js +17 -0
- package/cli/team/team-brief.js +78 -0
- package/cli/team/team-commands-board.js +118 -0
- package/cli/team/team-commands-dispatch.js +85 -0
- package/cli/team/team-commands-lock-staged.js +87 -0
- package/cli/team/team-commands-lock-views.js +144 -0
- package/cli/team/team-commands-lock.js +115 -26
- package/cli/team/team-commands-migrate.js +171 -0
- package/cli/team/team-commands-profile.js +44 -0
- package/cli/team/team-commands-repo.js +114 -0
- package/cli/team/team-commands-task.js +312 -0
- package/cli/team/team-commands-tokens.js +57 -0
- package/cli/team/team-commands-triage.js +43 -0
- package/cli/team/team-commands-vds.js +2 -1
- package/cli/team/team-commands.js +108 -463
- package/cli/team/team-db-agents.js +12 -6
- package/cli/team/team-db-feed.js +25 -13
- package/cli/team/team-db-lock-promotion.js +95 -51
- package/cli/team/team-db-locks.js +167 -35
- package/cli/team/team-db-mailbox.js +15 -8
- package/cli/team/team-db-readonly.js +76 -0
- package/cli/team/team-db-task-helpers.js +68 -19
- package/cli/team/team-db-tasks.js +21 -9
- package/cli/team/team-db-transaction.js +20 -5
- package/cli/team/team-db.js +11 -4
- package/cli/team/team-dispatch-batches.js +271 -0
- package/cli/team/team-dispatch-prompts.js +152 -0
- package/cli/team/team-dispatch-render.js +154 -0
- package/cli/team/team-dispatch-run-cli.js +154 -0
- package/cli/team/team-dispatch-runs.js +155 -0
- package/cli/team/team-dispatch-script.js +67 -0
- package/cli/team/team-dispatch-select.js +220 -0
- package/cli/team/team-dispatch-v2-fixture.js +62 -0
- package/cli/team/team-dispatch-v2.js +207 -0
- package/cli/team/team-dispatch.js +229 -0
- package/cli/team/team-dispatcher-authority.js +43 -0
- package/cli/team/team-flags.js +222 -48
- package/cli/team/team-format.js +80 -26
- package/cli/team/team-handoff-hint.js +9 -0
- package/cli/team/team-migrate-agents.js +52 -0
- package/cli/team/team-migrate-apply.js +178 -0
- package/cli/team/team-migrate-junk.js +55 -0
- package/cli/team/team-migrate-metadata.js +80 -0
- package/cli/team/team-migrate-paths.js +50 -0
- package/cli/team/team-migrate-plan.js +85 -0
- package/cli/team/team-migrate-report.js +89 -0
- package/cli/team/team-migrate-tables.js +85 -0
- package/cli/team/team-migrate.js +193 -0
- package/cli/team/team-needs.js +99 -0
- package/cli/team/team-profile-format.js +126 -0
- package/cli/team/team-profile.js +144 -0
- package/cli/team/team-projects-coordinator.js +54 -33
- package/cli/team/team-projects-format.js +8 -4
- package/cli/team/team-projects-memory.js +6 -3
- package/cli/team/team-projects.js +2 -1
- package/cli/team/team-release-train.js +2 -1
- package/cli/team/team-route.js +132 -0
- package/cli/team/team-schema-repo.js +48 -0
- package/cli/team/team-schema-usage.js +25 -0
- package/cli/team/team-schema-vds.js +7 -3
- package/cli/team/team-schema.js +24 -4
- package/cli/team/team-task-close.js +132 -0
- package/cli/team/team-task-guard.js +24 -0
- package/cli/team/team-task-handoff.js +122 -0
- package/cli/team/team-task-ownership.js +74 -0
- package/cli/team/team-task-rules.js +21 -0
- package/cli/team/team-task-uncommitted.js +49 -0
- package/cli/team/team-telemetry.js +44 -32
- package/cli/team/team-tokens.js +4 -1
- package/cli/team/team-triage-generate.js +212 -0
- package/cli/team/team-triage-log.js +11 -0
- package/cli/team/team-triage-verify.js +153 -0
- package/cli/team/team-triage.js +92 -339
- package/cli/team/team-vds.js +2 -1
- package/cli/team/usage-compute.js +70 -0
- package/cli/team/usage-pricing.js +62 -0
- package/cli/team/usage-reader.js +106 -0
- package/cli/team/usage-render.js +72 -0
- package/cli/team/usage-store.js +56 -0
- package/cli/team/usage-transcript.js +127 -0
- package/cli/team/write-lock-guard.js +48 -0
- package/cli/telemetry/call-ledger.js +264 -0
- package/cli/telemetry/call-schema.js +53 -0
- package/cli/telemetry/savings-dbs.js +111 -0
- package/cli/telemetry/savings-render.js +68 -0
- package/cli/telemetry/savings-report.js +101 -0
- package/cli/telemetry/savings-routing.js +66 -0
- package/cli/telemetry/savings-tooling.js +140 -0
- package/cli/terminal.js +38 -40
- package/cli/tesseract-manifesto.js +2 -17
- package/cli/tesseract.js +8 -21
- package/cli/test-audit.js +218 -0
- package/cli/test-changes.js +60 -0
- package/cli/test-command.js +201 -0
- package/cli/test-depth.js +43 -0
- package/cli/test-failures.js +170 -0
- package/cli/test-graph-open.js +150 -0
- package/cli/test-graph.js +188 -0
- package/cli/test-lanes.js +117 -0
- package/cli/test-output.js +155 -0
- package/cli/test-paths.js +51 -0
- package/cli/test-profile.js +64 -0
- package/cli/test-report.js +112 -0
- package/cli/test-run.js +53 -0
- package/cli/test-scope.js +55 -0
- package/cli/test-select.js +107 -0
- package/cli/test-slots.js +276 -0
- package/cli/test-workers.js +45 -0
- package/cli/test-workspace.js +83 -0
- package/cli/theme.js +6 -3
- package/cli/timers.js +6 -0
- package/cli/trend.js +10 -5
- package/cli/tsconfig-shape.js +20 -0
- package/cli/tty-banner.js +11 -0
- package/cli/typecheck-audit.js +146 -0
- package/cli/typecheck-command.js +94 -0
- package/cli/typecheck-sandbox.js +93 -0
- package/cli/ui-actions-codebase.js +20 -7
- package/cli/ui-actions-helpers.js +9 -0
- package/cli/ui-actions-studio.js +11 -7
- package/cli/ui-actions-tasks.js +3 -2
- package/cli/ui-actions-vds.js +2 -1
- package/cli/ui-actions.js +4 -2
- package/cli/ui-attention.js +28 -12
- package/cli/ui-auth-hosts.js +46 -0
- package/cli/ui-auth.js +89 -0
- package/cli/ui-client-cert.js +2 -1
- package/cli/ui-client-filetree.js +2 -2
- package/cli/ui-db-studio.js +23 -33
- package/cli/ui-dev-watcher.js +2 -1
- package/cli/ui-forum-data.js +45 -46
- package/cli/ui-forum-topics.js +6 -3
- package/cli/ui-fresh-index.js +11 -0
- package/cli/ui-handlers.js +6 -6
- package/cli/ui-html.js +6 -12
- package/cli/ui-index.html +3 -3
- package/cli/ui-route-helpers.js +10 -0
- package/cli/ui-server-routes.js +15 -17
- package/cli/ui-server.js +49 -50
- package/cli/ui-sql-guard.js +76 -0
- package/cli/ui-sql-mask.js +61 -0
- package/cli/ui-sse.js +5 -4
- package/cli/ui-template-filetree.js +4 -4
- package/cli/ui-template-kanban.js +4 -7
- package/cli/verify-changed.js +43 -0
- package/cli/verify-helpers.js +21 -207
- package/cli/verify-lint.js +54 -20
- package/cli/verify-report.js +117 -0
- package/cli/verify-steps.js +71 -0
- package/cli/verify.js +111 -372
- package/cli/wait-command.js +147 -0
- package/cli/workspace-run.js +153 -0
- package/cli/workspace.js +147 -0
- package/cli/write-append.js +28 -0
- package/library/node-js/is-path-inside/entry.json +57 -0
- package/library/node-js/is-path-inside/negative/path-scope.js.txt +13 -0
- package/library/node-js/is-path-inside/piece.js +15 -0
- package/library/node-js/is-path-inside/piece.spec.js +38 -0
- package/library/node-js/read-json-or/entry.json +70 -0
- package/library/node-js/read-json-or/negative/ratchet.js.txt +14 -0
- package/library/node-js/read-json-or/negative/workspace.js.txt +8 -0
- package/library/node-js/read-json-or/piece.js +17 -0
- package/library/node-js/read-json-or/piece.spec.js +36 -0
- package/library/vue-ts/nullable-timer-handle/ambient.d.ts +5 -0
- package/library/vue-ts/nullable-timer-handle/entry.json +84 -0
- package/library/vue-ts/nullable-timer-handle/negative/const-alias.ts.txt +17 -0
- package/library/vue-ts/nullable-timer-handle/negative/inline-guard.ts.txt +15 -0
- package/library/vue-ts/nullable-timer-handle/piece.spec.js +48 -0
- package/library/vue-ts/nullable-timer-handle/piece.ts +41 -0
- package/package.json +9 -3
- package/scripts/check-framework-generation.mjs +32 -12
- package/scripts/direct-run.mjs +9 -0
- package/scripts/pre-commit.sh +48 -74
- package/scripts/publish-both.mjs +24 -16
- package/scripts/publish-summary.mjs +14 -0
- package/scripts/postinstall.mjs +0 -27
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vue-aware outline lines: compiler macros (defineProps, defineEmits, defineModel,
|
|
3
|
+
* defineExpose, withDefaults), Options API objects (defineComponent / export
|
|
4
|
+
* default {}), and Pinia defineStore (options and setup forms).
|
|
5
|
+
*/
|
|
6
|
+
import { lazyTypes as t } from '../babel-lazy.js';
|
|
7
|
+
|
|
8
|
+
const MACROS = new Set(['defineProps', 'defineEmits', 'defineModel', 'defineExpose', 'defineSlots', 'defineOptions']);
|
|
9
|
+
const OPTION_SECTIONS = ['props', 'emits', 'data', 'computed', 'methods', 'watch', 'setup', 'state', 'getters', 'actions'];
|
|
10
|
+
|
|
11
|
+
const isCallNamed = (node, names) => t.isCallExpression(node) && t.isIdentifier(node.callee) && names.has(node.callee.name);
|
|
12
|
+
const keyName = (key) => {
|
|
13
|
+
const isIdentifierKey = t.isIdentifier(key);
|
|
14
|
+
if (isIdentifierKey) return key.name;
|
|
15
|
+
const isStringKey = t.isStringLiteral(key);
|
|
16
|
+
return isStringKey ? key.value : '';
|
|
17
|
+
};
|
|
18
|
+
const objectKeys = (obj) => (t.isObjectExpression(obj) ? obj.properties.map((p) => keyName(p.key)).filter(Boolean) : []);
|
|
19
|
+
const compact = (text) => text.replace(/\s+/g, ' ').trim();
|
|
20
|
+
|
|
21
|
+
const returnedObject = (fn) => {
|
|
22
|
+
const isFunction = t.isArrowFunctionExpression(fn) || t.isFunctionExpression(fn) || t.isObjectMethod(fn);
|
|
23
|
+
if (!isFunction) return null;
|
|
24
|
+
if (t.isObjectExpression(fn.body)) return fn.body;
|
|
25
|
+
const isParenthesized = t.isParenthesizedExpression(fn.body) && t.isObjectExpression(fn.body.expression);
|
|
26
|
+
if (isParenthesized) return fn.body.expression;
|
|
27
|
+
const body = t.isBlockStatement(fn.body) ? fn.body.body : [];
|
|
28
|
+
const ret = [...body].reverse().find((stmt) => t.isReturnStatement(stmt));
|
|
29
|
+
return t.isObjectExpression(ret?.argument) ? ret.argument : null;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const typeMemberNames = (code, typeNode) => {
|
|
33
|
+
if (!t.isTSTypeLiteral(typeNode)) return compact(code.slice(typeNode.start, typeNode.end));
|
|
34
|
+
return typeNode.members.map((m) => {
|
|
35
|
+
const isCallSignature = t.isTSCallSignatureDeclaration(m);
|
|
36
|
+
const firstParam = isCallSignature ? m.parameters[0]?.typeAnnotation?.typeAnnotation : null;
|
|
37
|
+
const eventName = firstParam?.literal?.value;
|
|
38
|
+
if (eventName) return eventName;
|
|
39
|
+
return compact(code.slice(m.start, m.end)).replace(/;$/, '');
|
|
40
|
+
}).join(', ');
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/** `defineProps { title: string, count?: number }` style line, or null. */
|
|
44
|
+
export const describeVueMacro = (code, node) => {
|
|
45
|
+
const isWithDefaults = isCallNamed(node, new Set(['withDefaults'])) && isCallNamed(node.arguments[0], MACROS);
|
|
46
|
+
const call = isWithDefaults ? node.arguments[0] : node;
|
|
47
|
+
if (!isCallNamed(call, MACROS)) return null;
|
|
48
|
+
const typeArg = call.typeParameters?.params?.[0];
|
|
49
|
+
const arg = call.arguments[0];
|
|
50
|
+
let detail = '';
|
|
51
|
+
if (typeArg) detail = typeMemberNames(code, typeArg);
|
|
52
|
+
else if (t.isObjectExpression(arg)) detail = objectKeys(arg).join(', ');
|
|
53
|
+
else if (t.isArrayExpression(arg)) detail = arg.elements.filter(t.isStringLiteral).map((el) => el.value).join(', ');
|
|
54
|
+
return `${call.callee.name} { ${detail} }`;
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const describeSections = (obj, indent = ' ') => {
|
|
58
|
+
const lines = [];
|
|
59
|
+
for (const prop of obj.properties) {
|
|
60
|
+
const section = keyName(prop.key);
|
|
61
|
+
const isOptionSection = OPTION_SECTIONS.includes(section);
|
|
62
|
+
if (!isOptionSection) continue;
|
|
63
|
+
const value = t.isObjectProperty(prop) ? prop.value : prop;
|
|
64
|
+
const returned = returnedObject(value);
|
|
65
|
+
const members = returned ? objectKeys(returned) : objectKeys(value);
|
|
66
|
+
const isArray = t.isArrayExpression(value);
|
|
67
|
+
const names = isArray ? value.elements.filter(t.isStringLiteral).map((el) => el.value) : members;
|
|
68
|
+
const hasNames = names.length > 0;
|
|
69
|
+
if (hasNames) lines.push(`${indent}${section}: ${names.join(', ')}`);
|
|
70
|
+
}
|
|
71
|
+
return lines;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/** One level into `export default {}` / `defineComponent({})`. */
|
|
75
|
+
export const describeComponentOptions = (code, decl) => {
|
|
76
|
+
const isDefineComponent = isCallNamed(decl, new Set(['defineComponent'])) && t.isObjectExpression(decl.arguments[0]);
|
|
77
|
+
const obj = isDefineComponent ? decl.arguments[0] : decl;
|
|
78
|
+
return t.isObjectExpression(obj) ? describeSections(obj) : [];
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/** Members of a Pinia store: options form sections, or the setup function's returned keys. */
|
|
82
|
+
export const describeStore = (code, init) => {
|
|
83
|
+
if (!isCallNamed(init, new Set(['defineStore']))) return null;
|
|
84
|
+
const definition = init.arguments.find((arg) => t.isObjectExpression(arg) || t.isArrowFunctionExpression(arg) || t.isFunctionExpression(arg));
|
|
85
|
+
if (t.isObjectExpression(definition)) return describeSections(definition);
|
|
86
|
+
const returned = returnedObject(definition);
|
|
87
|
+
return returned ? [` returns: ${objectKeys(returned).join(', ')}`] : [];
|
|
88
|
+
};
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI runners for `chemx patch` and `chemx write`. Both preview with --dry-run (printing the
|
|
3
|
+
* full unified diff) and refuse rather than guess: a missing --content never becomes '' and an
|
|
4
|
+
* unknown flag refuses instead of being ignored.
|
|
5
|
+
*/
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import { ANSI } from './theme.js';
|
|
8
|
+
import { isStdinTty } from './terminal.js';
|
|
9
|
+
import { parseValueFlags, hasFlag, splitList, hasPreviewFlag, findUnknownFlags, unknownFlagsMessage } from './cli-args.js';
|
|
10
|
+
import { patchFile } from './patcher.js';
|
|
11
|
+
import { writeOrAppend } from './write-append.js';
|
|
12
|
+
import { parseSearchReplaceBlocks } from './search-replace-blocks.js';
|
|
13
|
+
|
|
14
|
+
const PATCH_HELP = [
|
|
15
|
+
'USAGE',
|
|
16
|
+
" chemx patch <file> [options] <<'EOF'",
|
|
17
|
+
' <<<<<<< SEARCH',
|
|
18
|
+
' exact old text (any number of lines; quotes, $ and backticks are literal)',
|
|
19
|
+
' =======',
|
|
20
|
+
' new text (empty deletes the SEARCH lines)',
|
|
21
|
+
' >>>>>>> REPLACE',
|
|
22
|
+
' EOF',
|
|
23
|
+
' chemx patch <file> --target="text" --replacement="new" [options]',
|
|
24
|
+
'',
|
|
25
|
+
' Markers sit at column 0 inside the heredoc; repeat the block for more edits. Blocks apply',
|
|
26
|
+
' in order and all-or-nothing: one unmatched block fails the call and writes nothing.',
|
|
27
|
+
'',
|
|
28
|
+
'OPTIONS',
|
|
29
|
+
' --target=<text> Exact text to replace (literal; never empty)',
|
|
30
|
+
' --replacement=<new> Replacement text (literal; `$` is not special)',
|
|
31
|
+
' --target-file=<path> Read the target from a file',
|
|
32
|
+
' --replacement-file=<p> Read the replacement from a file',
|
|
33
|
+
' --multiple Replace every occurrence',
|
|
34
|
+
' --allow-remove=<a,b> Top-level declarations the patch may remove',
|
|
35
|
+
' --allow-missing-import Allow the edit although it leaves an import unresolved',
|
|
36
|
+
' --as=<agent> Agent id for team lock checks (default $CHEMX_AGENT_ID, else unique to this process)',
|
|
37
|
+
' -n, --dry-run Print the unified diff without writing (--dryRun, --dry-run=<any> too)',
|
|
38
|
+
' --json Output result as JSON',
|
|
39
|
+
' -h, --help Show this help message',
|
|
40
|
+
''
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const WRITE_HELP = [
|
|
44
|
+
'USAGE',
|
|
45
|
+
" chemx write <file> - [options] <<'EOF'",
|
|
46
|
+
' whole file content',
|
|
47
|
+
' EOF',
|
|
48
|
+
' chemx write <file> --content="text" [options]',
|
|
49
|
+
'',
|
|
50
|
+
'OPTIONS',
|
|
51
|
+
' -, --stdin Read content from stdin (heredoc)',
|
|
52
|
+
' --content=<text> File content (also: --content <text>)',
|
|
53
|
+
' --content-file=<path> Read content from a file',
|
|
54
|
+
' --overwrite Allow replacing an existing file',
|
|
55
|
+
' --append Add the content to the end of the file (created if missing); same checks as a write; not with --overwrite',
|
|
56
|
+
' --allow-remove=<a,b> Top-level declarations an overwrite may remove',
|
|
57
|
+
' --allow-missing-import Allow the write although it leaves an import unresolved',
|
|
58
|
+
' --as=<agent> Agent id for team lock checks',
|
|
59
|
+
' -n, --dry-run Print the unified diff without writing (--dryRun, --dry-run=<any> too)',
|
|
60
|
+
' --json Output result as JSON',
|
|
61
|
+
' -h, --help Show this help message',
|
|
62
|
+
''
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
const isHelpRequest = (args) => hasFlag(args, ['--help', '-h', 'help']);
|
|
66
|
+
|
|
67
|
+
const showHelp = (args, lines, isCli) => {
|
|
68
|
+
const isJson = args.includes('--json');
|
|
69
|
+
process.stdout.write(isJson ? `${JSON.stringify({ help: true, success: true })}\n` : lines.join('\n'));
|
|
70
|
+
if (isCli) process.exit(0);
|
|
71
|
+
return { help: true, success: true };
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const fail = (message, isCli) => {
|
|
75
|
+
process.stderr.write(`${ANSI.RED}✕ ${message}${ANSI.RESET}\n`);
|
|
76
|
+
if (isCli) process.exit(1);
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
const fromFileOr = (inline, filePath) => (filePath ? fs.readFileSync(filePath, 'utf-8') : inline);
|
|
81
|
+
|
|
82
|
+
const printDeclarations = (res) => {
|
|
83
|
+
const removed = res.declarations?.removed || [];
|
|
84
|
+
const added = res.declarations?.added || [];
|
|
85
|
+
const hasDeclarationChange = removed.length > 0 || added.length > 0;
|
|
86
|
+
if (hasDeclarationChange) {
|
|
87
|
+
process.stdout.write(` Declarations: removed [${removed.join(', ')}], added [${added.join(', ')}]\n`);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const printParseNote = (res) => {
|
|
92
|
+
const note = res.parse?.note;
|
|
93
|
+
const hasNote = Boolean(note);
|
|
94
|
+
if (hasNote) process.stdout.write(` ${ANSI.GOLD}⚠ Parse: ${note}${ANSI.RESET}\n`);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const printOutcome = (res, verb, isJson) => {
|
|
98
|
+
if (isJson) {
|
|
99
|
+
process.stdout.write(`${JSON.stringify(res, null, 2)}\n`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const isPreview = Boolean(res.dryRun);
|
|
103
|
+
if (isPreview) {
|
|
104
|
+
process.stdout.write(`${ANSI.GOLD}[DRY RUN] Would ${verb} ${res.file}. No changes were written to disk.${ANSI.RESET}\n`);
|
|
105
|
+
process.stdout.write(`${res.diff || '(no change)'}\n`);
|
|
106
|
+
printDeclarations(res);
|
|
107
|
+
printParseNote(res);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const range = res.changedLines ? `L${res.changedLines.start}-${res.changedLines.end}` : '';
|
|
111
|
+
const isMultiBlock = res.blocks > 1;
|
|
112
|
+
const where = isMultiBlock ? ` (${res.blocks} blocks, first at ${range})` : (range && `:${range}`);
|
|
113
|
+
const writeVerb = res.created ? 'Created' : 'Updated';
|
|
114
|
+
const doneVerb = verb === 'patch' ? 'Patched' : writeVerb;
|
|
115
|
+
process.stdout.write(`${ANSI.GREEN}✔ ${doneVerb} ${res.file}${where}${res.backup ? ` (backup: ${res.backup})` : ''}${ANSI.RESET}\n`);
|
|
116
|
+
(res.leaseNotes ?? []).forEach((note) => process.stdout.write(` ${ANSI.GOLD}⚠ ${note}${ANSI.RESET}\n`));
|
|
117
|
+
const isOverBudget = Boolean(res.lineBudget) && !res.lineBudget.passed;
|
|
118
|
+
if (isOverBudget) {
|
|
119
|
+
process.stdout.write(` ${ANSI.RED}⚠ Line Budget: ${res.lineBudget.lines}L exceeds ${res.lineBudget.limit}L limit (Directive 1.A)${ANSI.RESET}\n`);
|
|
120
|
+
}
|
|
121
|
+
printDeclarations(res);
|
|
122
|
+
printParseNote(res);
|
|
123
|
+
const introduced = res.introducedViolations || [];
|
|
124
|
+
const preExisting = res.preExistingViolations || [];
|
|
125
|
+
const hasIntroduced = introduced.length > 0;
|
|
126
|
+
if (hasIntroduced) {
|
|
127
|
+
process.stdout.write(` ${ANSI.RED}⚠ ${introduced.length} introduced architecture hazard(s):${ANSI.RESET}\n`);
|
|
128
|
+
for (const h of introduced) {
|
|
129
|
+
process.stdout.write(` [${h.severity}] line ${h.line}: ${h.hazard}\n`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const hasPreExisting = preExisting.length > 0;
|
|
133
|
+
if (hasPreExisting) {
|
|
134
|
+
process.stdout.write(` ${ANSI.DIM} (${preExisting.length} pre-existing hazard(s))${ANSI.RESET}\n`);
|
|
135
|
+
}
|
|
136
|
+
const hasNoIntroduced = introduced.length === 0;
|
|
137
|
+
const hasNoPreExisting = preExisting.length === 0;
|
|
138
|
+
const hasNeither = hasNoIntroduced && hasNoPreExisting;
|
|
139
|
+
if (hasNeither) {
|
|
140
|
+
const hasViolations = res.violationsCount > 0;
|
|
141
|
+
if (hasViolations) {
|
|
142
|
+
process.stdout.write(` ${ANSI.GOLD}⚠ ${res.violationsCount} architecture hazard(s) detected (Run chemx check ${res.file})${ANSI.RESET}\n`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const runGuarded = (action, verb, isJson, isCli) => {
|
|
148
|
+
try {
|
|
149
|
+
const res = action();
|
|
150
|
+
printOutcome(res, verb, isJson);
|
|
151
|
+
if (isCli) process.exit(0);
|
|
152
|
+
return res;
|
|
153
|
+
} catch (err) {
|
|
154
|
+
return fail(err instanceof Error ? err.message : String(err), isCli);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const PATCH_FLAGS = {
|
|
159
|
+
target: ['--target'], replacement: ['--replacement', '--replace'],
|
|
160
|
+
targetFile: ['--target-file'], replacementFile: ['--replacement-file'],
|
|
161
|
+
allowRemove: ['--allow-remove'], as: ['--as']
|
|
162
|
+
};
|
|
163
|
+
const PATCH_SWITCHES = ['--multiple', '--allow-multiple', '--allow-missing-import'];
|
|
164
|
+
const NO_PATCH_INPUT = `chemx patch needs SEARCH/REPLACE blocks on stdin (chemx patch <file> <<'EOF' ... EOF) or --target/--replacement. Nothing was changed.`;
|
|
165
|
+
|
|
166
|
+
// An interactive terminal never counts as input: refusing beats blocking on, or writing, nothing.
|
|
167
|
+
const readStdin = () => (isStdinTty() ? null : fs.readFileSync(0, 'utf-8'));
|
|
168
|
+
|
|
169
|
+
const readStdinBlocks = () => {
|
|
170
|
+
const text = readStdin() ?? '';
|
|
171
|
+
const isEmpty = text.trim() === '';
|
|
172
|
+
if (isEmpty) throw new Error(NO_PATCH_INPUT);
|
|
173
|
+
return parseSearchReplaceBlocks(text);
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Repair path for the boot shim (cli/index.js): when the CLI proper cannot load (for example a
|
|
178
|
+
* half-written commands-schema-*.js), `patch`, `edit` and `write` still run from here. This module
|
|
179
|
+
* and its imports never touch the command-schema modules. It skips the router's lease renewal and
|
|
180
|
+
* call ledger; nothing else about the edit is relaxed. Returns false for any other command.
|
|
181
|
+
*/
|
|
182
|
+
export const REPAIR_COMMANDS = ['patch', 'edit', 'write'];
|
|
183
|
+
// `hook <name>` also runs from here (no stderr note: hosts read hook stderr), so a broken schema module
|
|
184
|
+
// cannot take the guard down. The hook modules load on their own; a schema module they import breaks only that hook.
|
|
185
|
+
export const runRepairCommand = async (command, args) => {
|
|
186
|
+
const isHookCommand = command === 'hook' || command === 'hooks';
|
|
187
|
+
if (isHookCommand) {
|
|
188
|
+
const { HOOKS, runHookCli } = await import('./hooks/run-hook.js');
|
|
189
|
+
const isKnownHook = Object.hasOwn(HOOKS, args[0] ?? '');
|
|
190
|
+
if (!isKnownHook) return false;
|
|
191
|
+
process.exitCode = await runHookCli(args);
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
const isRepairable = REPAIR_COMMANDS.includes(command);
|
|
195
|
+
if (!isRepairable) return false;
|
|
196
|
+
const run = command === 'write' ? runWriterCli : runPatcherCli;
|
|
197
|
+
run(args, true);
|
|
198
|
+
return true;
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
export const runPatcherCli = (args, isCli = false) => {
|
|
202
|
+
if (isHelpRequest(args)) return showHelp(args, PATCH_HELP, isCli);
|
|
203
|
+
const unknown = findUnknownFlags(args, [...Object.values(PATCH_FLAGS).flat(), ...PATCH_SWITCHES]);
|
|
204
|
+
const hasUnknownFlags = unknown.length > 0;
|
|
205
|
+
if (hasUnknownFlags) return fail(unknownFlagsMessage('patch', unknown), isCli);
|
|
206
|
+
const { values, positionals } = parseValueFlags(args, PATCH_FLAGS);
|
|
207
|
+
const filePath = positionals[0];
|
|
208
|
+
const hasFilePath = Boolean(filePath);
|
|
209
|
+
if (!hasFilePath) return fail('Missing file path. Usage: chemx patch <file> --target="text" --replacement="new" [--json]', isCli);
|
|
210
|
+
|
|
211
|
+
const hasInlineTarget = values.target !== undefined || values.targetFile !== undefined;
|
|
212
|
+
return runGuarded(() => patchFile(filePath, {
|
|
213
|
+
blocks: hasInlineTarget ? undefined : readStdinBlocks(),
|
|
214
|
+
targetContent: fromFileOr(values.target ?? null, values.targetFile),
|
|
215
|
+
replacementContent: fromFileOr(values.replacement ?? null, values.replacementFile),
|
|
216
|
+
allowMultiple: hasFlag(args, PATCH_SWITCHES),
|
|
217
|
+
dryRun: hasPreviewFlag(args),
|
|
218
|
+
allowRemoved: splitList(values.allowRemove),
|
|
219
|
+
allowMissingImport: args.includes('--allow-missing-import'),
|
|
220
|
+
agentId: values.as
|
|
221
|
+
}), 'patch', args.includes('--json'), isCli);
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const WRITE_FLAGS = { content: ['--content'], contentFile: ['--content-file'], allowRemove: ['--allow-remove'], as: ['--as'] };
|
|
225
|
+
const WRITE_SWITCHES = ['--stdin', '--overwrite', '--append', '--allow-missing-import'];
|
|
226
|
+
const MISSING_CONTENT = 'chemx write needs --content=<text>, --content-file=<path> or --stdin (a value starting with "-" needs the --content=<text> form). Refusing to write.';
|
|
227
|
+
|
|
228
|
+
const readWriteContent = (args, values) => {
|
|
229
|
+
const isStdin = args.includes('--stdin') || args.includes('-');
|
|
230
|
+
const content = isStdin ? readStdin() : fromFileOr(values.content, values.contentFile);
|
|
231
|
+
const isMissingContent = typeof content !== 'string';
|
|
232
|
+
if (isMissingContent) throw new Error(MISSING_CONTENT);
|
|
233
|
+
return content;
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
export const runWriterCli = (args, isCli = false) => {
|
|
237
|
+
if (isHelpRequest(args)) return showHelp(args, WRITE_HELP, isCli);
|
|
238
|
+
const unknown = findUnknownFlags(args, [...Object.values(WRITE_FLAGS).flat(), ...WRITE_SWITCHES]);
|
|
239
|
+
const hasUnknownFlags = unknown.length > 0;
|
|
240
|
+
if (hasUnknownFlags) return fail(unknownFlagsMessage('write', unknown), isCli);
|
|
241
|
+
const { values, positionals } = parseValueFlags(args, WRITE_FLAGS);
|
|
242
|
+
const filePath = positionals[0];
|
|
243
|
+
const hasFilePath = Boolean(filePath);
|
|
244
|
+
if (!hasFilePath) return fail('Missing file path. Usage: chemx write <file> --content="text" [--json]', isCli);
|
|
245
|
+
|
|
246
|
+
return runGuarded(() => writeOrAppend(filePath, {
|
|
247
|
+
content: readWriteContent(args, values),
|
|
248
|
+
overwrite: args.includes('--overwrite'),
|
|
249
|
+
append: args.includes('--append'),
|
|
250
|
+
dryRun: hasPreviewFlag(args),
|
|
251
|
+
allowRemoved: splitList(values.allowRemove),
|
|
252
|
+
allowMissingImport: args.includes('--allow-missing-import'),
|
|
253
|
+
agentId: values.as
|
|
254
|
+
}), 'write', args.includes('--json'), isCli);
|
|
255
|
+
};
|
package/cli/patcher.d.ts
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
export interface
|
|
2
|
-
readonly targetContent: string;
|
|
3
|
-
readonly replacementContent: string;
|
|
4
|
-
readonly allowMultiple?: boolean;
|
|
1
|
+
export interface MutationSafetyOptions {
|
|
5
2
|
readonly cwd?: string;
|
|
6
3
|
readonly skipIndex?: boolean;
|
|
7
4
|
readonly skipCheck?: boolean;
|
|
5
|
+
/** Validate and diff without writing. */
|
|
6
|
+
readonly dryRun?: boolean;
|
|
7
|
+
/** Top-level declarations this edit may remove (a net loss is otherwise refused). */
|
|
8
|
+
readonly allowRemoved?: readonly string[];
|
|
9
|
+
/** Caller identity for team lock checks (default $CHEMX_AGENT_ID, else '@agent'). */
|
|
10
|
+
readonly agentId?: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface SearchReplaceBlock {
|
|
14
|
+
readonly search: string;
|
|
15
|
+
readonly replace: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface PatchOptions extends MutationSafetyOptions {
|
|
19
|
+
/** Required unless blocks is given. */
|
|
20
|
+
readonly targetContent?: string;
|
|
21
|
+
readonly replacementContent?: string;
|
|
22
|
+
/** Applied in order to one copy; any unmatched block fails the call and writes nothing. */
|
|
23
|
+
readonly blocks?: readonly SearchReplaceBlock[];
|
|
24
|
+
readonly allowMultiple?: boolean;
|
|
8
25
|
}
|
|
9
26
|
|
|
10
27
|
export interface LineBudgetResult {
|
|
@@ -14,14 +31,12 @@ export interface LineBudgetResult {
|
|
|
14
31
|
readonly warning: string | null;
|
|
15
32
|
}
|
|
16
33
|
|
|
17
|
-
export interface
|
|
18
|
-
readonly
|
|
19
|
-
readonly
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
readonly lineDelta: number;
|
|
24
|
-
readonly indexed: boolean;
|
|
34
|
+
export interface DeclarationDelta {
|
|
35
|
+
readonly removed: readonly string[];
|
|
36
|
+
readonly added: readonly string[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface GuardrailResult {
|
|
25
40
|
readonly lineBudget: LineBudgetResult;
|
|
26
41
|
readonly isClean: boolean;
|
|
27
42
|
readonly violationsCount: number;
|
|
@@ -30,6 +45,26 @@ export interface PatchResult {
|
|
|
30
45
|
readonly violations: readonly any[];
|
|
31
46
|
}
|
|
32
47
|
|
|
48
|
+
export interface PatchResult extends GuardrailResult {
|
|
49
|
+
readonly file: string;
|
|
50
|
+
readonly status: 'ok';
|
|
51
|
+
readonly dryRun: boolean;
|
|
52
|
+
readonly replaced: number;
|
|
53
|
+
/** Number of SEARCH/REPLACE blocks applied (only for a blocks patch). */
|
|
54
|
+
readonly blocks?: number;
|
|
55
|
+
readonly matchLines: readonly number[];
|
|
56
|
+
readonly changedLines: { readonly start: number; readonly end: number };
|
|
57
|
+
readonly eol: 'as-is' | 'crlf-normalized';
|
|
58
|
+
readonly originalLines: number;
|
|
59
|
+
readonly newLines: number;
|
|
60
|
+
readonly lineDelta: number;
|
|
61
|
+
readonly indexed: boolean;
|
|
62
|
+
readonly backup: string | null;
|
|
63
|
+
readonly declarations: DeclarationDelta;
|
|
64
|
+
/** Uncapped unified diff of the change. */
|
|
65
|
+
readonly diff: string;
|
|
66
|
+
}
|
|
67
|
+
|
|
33
68
|
export declare function patchFile(
|
|
34
69
|
targetPath: string,
|
|
35
70
|
params: PatchOptions
|
|
@@ -40,25 +75,22 @@ export declare function runPatcherCli(
|
|
|
40
75
|
isCli?: boolean
|
|
41
76
|
): PatchResult | null;
|
|
42
77
|
|
|
43
|
-
export interface WriteOptions {
|
|
78
|
+
export interface WriteOptions extends MutationSafetyOptions {
|
|
44
79
|
readonly content: string;
|
|
45
|
-
|
|
46
|
-
readonly
|
|
47
|
-
readonly skipCheck?: boolean;
|
|
80
|
+
/** Required to replace an existing file. */
|
|
81
|
+
readonly overwrite?: boolean;
|
|
48
82
|
}
|
|
49
83
|
|
|
50
|
-
export interface WriteResult {
|
|
84
|
+
export interface WriteResult extends GuardrailResult {
|
|
51
85
|
readonly file: string;
|
|
52
86
|
readonly status: 'ok';
|
|
87
|
+
readonly dryRun: boolean;
|
|
53
88
|
readonly created: boolean;
|
|
54
89
|
readonly lines: number;
|
|
55
90
|
readonly indexed: boolean;
|
|
56
|
-
readonly
|
|
57
|
-
readonly
|
|
58
|
-
readonly
|
|
59
|
-
readonly criticalCount: number;
|
|
60
|
-
readonly highCount: number;
|
|
61
|
-
readonly violations: readonly any[];
|
|
91
|
+
readonly backup: string | null;
|
|
92
|
+
readonly declarations: DeclarationDelta;
|
|
93
|
+
readonly diff: string;
|
|
62
94
|
}
|
|
63
95
|
|
|
64
96
|
export declare function writeFile(
|
|
@@ -70,4 +102,3 @@ export declare function runWriterCli(
|
|
|
70
102
|
args: readonly string[],
|
|
71
103
|
isCli?: boolean
|
|
72
104
|
): WriteResult | null;
|
|
73
|
-
|