cohere

module
v0.0.0-...-0183ccf Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 10, 2026 License: Apache-2.0, MIT

README ΒΆ

cohere

cohere type-checks, lints, fixes and formats a TypeScript codebase in one process. The TypeScript compiler builds the program once, and that one type graph is what TypeScript's own diagnostics and every lint rule read, the rules in one walk of each file. The fix engine and the formatter run in the same process. Fixes re-read each file from disk and re-lint it until they stop landing, so they never apply to a stale copy. They land only in files the lint walk checked: a file the formatter reaches that the program does not hold, such as a bundle beside a tsconfig that does not include it, is formatted and never fixed. The formatter parses each TypeScript file it formats with the same TypeScript parser, and prints every file it formats with cohere's own printers. Keeping the rules on one graph in one walk is what lets a codebase carry hundreds of them without each one costing another pass over the code.

Install

pnpm add -D @system-inc/cohere

npm and yarn work the same way. The package installs two commands, cohere and its short form c, and pulls in one prebuilt package for your platform: macOS, Linux or Windows, each on arm64 or x64. No Go toolchain is needed. If no binary matches your platform, cohere exits with an error naming the platform rather than doing nothing.

Swift, on macOS only

A directory with a Package.swift at its root is checked as a Swift package, by cohere-swift, an engine the two macOS packages ship beside cohere. It runs on macOS 15 and later, and types the package with the Swift toolchain already on your machine. On Linux and Windows there is no Swift engine, and cohere refuses a Swift package by name and exits 1 rather than checking nothing.

Running it

Run it anywhere in a repository. It starts from the project you're in, the nearest tsconfig.json or Package.swift at or above you, or from the repository's root when there's none, and checks that project and every project below it: each TypeScript program and each Swift package, each with its own engine and its own settings, all at once. A repository holding more than one gets one report, a section per project, a line per project and one summary, and the exit code is the worst of theirs, so it's green only when every project is. A run that finds no project fails, and so does one whose every project was skipped, such as a Swift package alone under --format-only: it checked nothing.

Finding projects never enters what .gitignore ignores, at any level, nor node_modules, .build, .cache or testdata, nor a directory that is a repository of its own: a submodule stays part of the program above it, as it always was. --directory, --tsconfig or a path narrows the run to one project; --lint-config doesn't, and every project runs under the settings it names.

Each file is checked once, by the nearest tsconfig.json that includes it, the one your editor opens it under. Another tsconfig that includes it still types against it and doesn't report it, and each project formats its own directory, leaving the directories of the projects below it to theirs. A solution tsconfig.json, "files": [] with references, includes nothing to check: what it references is checked instead, whatever those tsconfigs are named.

cohere                  # type-check, lint, apply every available fix, and format, in one call
cohere --fix            # apply fixes and format, running no other phase
cohere --no-fix         # write nothing: report what fixing and formatting would change, and exit on it
cohere --lint           # report lint findings only: no fixes, no TypeScript diagnostics

A bare cohere formats the files not on record as formatted at their current bytes, so a warm run formats what you edited and nothing else. Add --no-format to any of the first three to leave formatting out.

A run prints the files it rewrote, then its findings, then one line:

πŸͺ„πŸ’… app/os/SessionRow.tsx      prefer-const Γ—2, prefer-nullish-coalescing
  πŸ’… modules/pensieve/Recall.ts
app/os/Session.ts:12:5 error nexus/consistency-no-abbreviated-identifier `ctx` is an abbreviation.
βœ— ☠️ 0.8s β€’ 1 finding β€’ 2 cohered (480 rules β€’ 3 checked β€’ 3,923 cached)

See Output for what that line says, and for --verbose and --json.

Adamic's .a files

A tsconfig that lists ".a" in a top-level "sourceExtensions" makes its .a files TypeScript source under their own names: type-checked, linted and formatted exactly as the same files named .ts, and printed as .a everywhere. Imports name the extension, import { area } from './geometry.a'. The key is read by cohere's compiler, System, Inc.'s fork of TypeScript; tsc ignores it.

.a is also a static library's extension, so cohere never reads a .a file a tsconfig doesn't claim: a libfoo.a beside your code is left alone. A claimed .a file that .gitignore ignores (C and C++ templates list *.a) is checked and not formatted, and the run names it and says so in the footer.

CohereSettings.json

With no settings file, cohere applies the house stack, each set where the code shows it fits:

  • cohere:typescript on every file. It composes two sets a configuration can also name on its own: cohere:adamic, the soundness set, whose rules hold types to the truth, and cohere:style, the taste set.
  • cohere:react on each file that imports react or a react- package, or contains JSX.
  • cohere:next on each file that imports next, and, once anything does, on Next's own files: everything under app/ and pages/, and middleware, instrumentation and next.config.
  • cohere:tailwind on every file when the root stylesheet the Tailwind rules find (app/globals.css and the others) imports tailwindcss. Without one, its rules are skipped by name.

package.json is never the evidence: a dependency the code never imports applies nothing. The run's sets: line names each set and why. The house format applies too, so the first run rewrites files into the house style.

To go your own way, write a CohereSettings.json. One that names no cohere: set keeps the detected stack and applies its own rules and format on top:

{
    "rules": { "no-continue": "off", "eqeqeq": ["error", "smart"] },
    "format": {}
}

An "off" there needs no reason, and --coverage names each one. A format block applies over Prettier's defaults, so {} means Prettier's defaults. A file that names sets in extends chooses them instead, and they apply to every file: "extends": ["cohere:react", "cohere:next"].

A project that extends a cohere:system-inc/* set is one of ours, and stays strict: every off says why under reasons, every departure from an inherited ruling says why under departures, and the format comes only from the Nexus tier, so a format block anywhere else in the chain is refused.

The keys:

  • extends: a rule set cohere carries (cohere:<name>), a path to another settings file, or a list of them, applied first and in order. A rule two sets that don't extend each other both configure is an error naming both.
  • rules: each rule's severity, "off", "warn" or "error", with options where a rule takes them.
  • overrides: a list of { "files": [...], "rules": {...} } blocks that change rules for matching paths.
  • ignorePatterns: paths cohere never checks, beyond what git ignores. Ignore matching follows gitignore(5): every .gitignore from the root down and .git/info/exclude (not core.excludesFile), case sensitive (core.ignorecase is not read). A .gitignore that is a symbolic link or larger than 100 MiB is refused by name rather than skipped.
  • reasons and departures: why this file turns a rule off, or sets it differently from the file it extends. Required in our tiers, optional elsewhere. cohere prints them, so a choice stays visible.
  • format: the formatter's options, printWidth, tabWidth, useTabs, semi, singleQuote, trailingComma, bracketSpacing, bracketSameLine, arrowParens, endOfLine, and ignore, a list of paths the formatter leaves alone. An option outside that list is an error.

The full reference, every key with an example, is schema/CohereSettings.md. It is generated from the loader itself, along with two JSON schemas an editor can validate against through a "$schema" key: schema/CohereSettings.schema.json for a project's file and schema/NexusCohereSettings.schema.json for the Nexus tier. Both ship in the package, so the path works offline and matches the installed cohere:

{
    "$schema": "./node_modules/@system-inc/cohere/schema/CohereSettings.schema.json"
}

cohere --rules lists every rule cohere implements for your project's language, and cohere --rules-enabled lists the ones your settings turn on for one file (index.ts at the project root unless you name another).

Flags

Flag What it does
--fix apply fixes and format, running no other phase (--no-format to leave formatting out)
--fix-passes N how many times a file may be re-linted while fixes keep landing (default 10)
--no-fix write nothing to your source; report what fixing and formatting would change, and exit nonzero if anything would
--no-format leave formatting out of a bare run, --fix or --no-fix: fix, type-check and lint only
--format format the files not on record as formatted, or the paths you name; a bare run, --fix and --no-fix already do, so naming it there changes nothing
--format-all format every file, not only the ones not already on record as formatted (implies --format)
--format-only format only, proposing no fixes and running no other phase (implies --format); with --no-fix, the commit gate's format check (see Before you commit)
--lint run the lint rules only, reporting what they find without fixing it, and without TypeScript's diagnostics
--types report TypeScript's diagnostics only, running no rules and fixing nothing
--unused report code that is never used: unreferenced exports and unreachable statements
--unused-all list the unused findings already marked cohere-keep, not only count them (implies --unused)
--unused-deep also group the unused code into islands by what reaches what (implies --unused)
--directory PATH the project root (default: the nearest tsconfig.json or Package.swift above you)
--tsconfig PATH the tsconfig that defines the program (default: the nearest tsconfig.json)
--lint-config PATH the settings file, relative to --directory if given, else to where you run it (default: CohereSettings.json at the project root)
--no-cache read and write no cache, so every phase computes from source
--stdin-filepath PATH with --fix, read one file from stdin and print the fixed text, writing nothing
--explain FILE report what every rule did on one file, and why it ran or did not, writing nothing
--print-config print each rule's resolved severity and options for one file (index.ts unless you name one), as JSON, and exit
--rules print the rules cohere implements for your project's language, and exit
--rules-enabled print the rules your settings turn on for one file (index.ts unless you name one), with severity, and exit
--verbose print everything a run can say: each phase, the coverage summary, overrides, skips, notes, memory and the total
--phases put where the time went (graph, fix, format, types, lint) first in the footer's parentheses
--json print newline-delimited JSON for a program to read instead of the human view (see Output)
--coverage name every rule under the coverage fact that describes it, not only count them
--adamic-readiness say what share of the files are Adamic-ready, in the footer and in --json (see Output)
--timing report what building the graph cost and the CPU each rule cost, most expensive rule first
--single-threaded use one type checker instead of several
--profile FILE write a Go CPU profile of the run to FILE
--cache-dump print what this project's cache holds, and exit
--version print the version, what this binary was built from, and the Swift contract it speaks, and exit

Output

A run prints three things, in order:

  • The files it rewrote. Each line has a πŸͺ„ if fixes were applied and a πŸ’… if it was formatted, then the path, then the rules whose fixes it took, with a count past one. Past 20 files it says how many more, and --verbose lists them all.
  • Its findings, one per line, as path:line:col severity rule message.
  • Any crash, one per line, as path crash rule message: a rule cohere could not finish on a file, or a file it could not check at all. That's a bug in cohere, not in your code, and it fails the run (see Reporting bugs).
  • One footer line: the verdict (βœ“ πŸ’Ž or βœ— ☠️), how long the run took, what it found, how many files it cohered, and in the parentheses how much it covered.
βœ“ πŸ’Ž 2.4s (480 rules β€’ 3,926 checked)
βœ“ πŸ’Ž 0.7s β€’ 2 cohered (480 rules β€’ 3 checked β€’ 3,923 cached)
βœ— ☠️ 0.8s β€’ 1 type error β€’ 2 findings (480 rules β€’ 3 checked β€’ 3,923 cached)
βœ“ πŸ’Ž 2.6s (488 rules β€’ 3,926 checked) β€’ 87% Adamic-ready (3,412 of 3,926)

The last line is a run with --adamic-readiness.

The words mean exactly this:

  • cohered: files cohere rewrote, fixed or formatted, which are the files listed above the footer. Shown only when there were any.
  • checked: files examined fresh in this run.
  • cached: files the cache answered for, unchanged since a run that checked them. Checked and cached together are every file in scope.
  • rules: the rules that ran.
  • Adamic-ready: shown only with --adamic-readiness. The share of linted files whose types are true: no type error and no cohere:adamic finding, counted before any disable comment and whatever your settings turn on, since Adamic, which compiles TypeScript native, reads neither. It names the compiler options Adamic sets that your tsconfig leaves off (strict, noUncheckedIndexedAccess, exactOptionalPropertyTypes), and says not measured with the reason when it could not measure, never a number it didn't. --json gives it as the summary's adamic, which is absent without the flag. Measuring runs the set's rules your settings leave off, at the set's own options, without reporting them, so a run that doesn't ask pays nothing for it.

A count is exact, with its thousands grouped (3,923); --json gives the plain integer. A count of zero is left out, so a cold run shows no cached and a run with nothing changed no checked.

Anything the run did not check is in the footer even when it passes, so a green line never hides a gap: βœ“ πŸ’Ž 2.4s (…) β€’ πŸ’… formatting not checked. The same goes for a phase that could not run, a rule that skipped every file, a run narrowed to some of the files, and an Adamic .a file git ignores. A crash is in the footer too, and it never passes.

On a terminal the verdict and time are bold, what was found is red, and the parentheses are dim. A pipe, a file or NO_COLOR gets no color codes at all.

--phases puts where the time went first inside the parentheses: πŸ•Έ building the graph (read, parse, bind), πŸͺ„ fixing, πŸ’… formatting, πŸ”· the type check, πŸ‘‘ lint, and 🧹 unused when --unused ran. A phase that did not run is left out. Each file is formatted once its fixes settle, so the two interleave: πŸ’… is the time a format was running and πŸͺ„ the rest of the fix phase, and together they are its time. To make that a project's default, set it in CohereSettings.json:

{ "output": { "phases": true } }

--timing is separate and still prints what each rule cost, as CPU read from each walk thread's own clock, so a rule that waits or is descheduled costs nothing. Reading that clock around every call adds overhead; the phase times are free.

--verbose prints everything a run can say: each phase and why any did not run, the coverage summary, overrides, skips, notes, memory and the total. Its footer adds the syntax nodes the run walked, and says when the whole run was replayed from the cache. A note, about the cache, line endings or a scope widened to the whole tree, prints only there; one that names something left unchecked is a gap the default footer says too.

--json is for a program to read. It prints newline-delimited JSON, one object per line, each with a kind: a finding per finding, a fixed and a formatted per rewritten file, a crash per crash, and a summary last. The summary carries a schemaVersion, the verdict, the timings and counts, and gaps, everything the run did not check, which a program deciding whether to trust a passing run should read too. schema/CohereOutput.schema.json describes every field. Read --json rather than the human view, whose layout can change.

Exit codes

Code Meaning
0 no problems found
1 it found problems, cohere crashed on a file, cohere itself could not run, for example on a settings error, or there was nothing to check: no project found, or every one skipped
2 the command line was wrong, such as an unknown flag

1 covers both findings and failures, so in CI the output says which one it was.

Before you commit

cohere --no-fix --format-only --format-all

This is the commit gate's format check, and its exit code answers one question: would formatting change any file, in this repository or in the nested repositories (declared submodules) it reads? It runs no fixes, no type check and no lint, so a lint finding has no say in it.

  • 0: no file would change, here or in any nested repository.
  • nonzero: each file that would change is a finding, a nested one naming its repository. So is each file the formatter could not read, such as one that does not parse, and a format walk that failed. A run that could not check a file never exits 0.

Only declared submodules are read. A git repository inside yours that .gitmodules does not name (a clone in an ignored directory, say) is skipped and nothing in it is checked: the scope line lists it under skipped nested repositories, and nested repositories: does not count it. Declare it as a submodule, or run the gate inside it.

Drop --format-all to check only the files not on record as formatted at their current bytes, or name paths to check only those. Without --no-fix, cohere --format-only formats and writes nothing else.

Caching

cohere keeps its cache in .cache/cohere at the project root, so a run reuses what an earlier run already established. When your tsconfig sets incremental, it also keeps TypeScript's build information where the tsconfig says, and a --no-fix run leaves that file untouched. Add .cache/ to your .gitignore. --no-cache reads nothing from those caches and writes nothing to them; use it when you suspect the cache, or to time a run from scratch. Leave the files in .cache/cohere to cohere: it reads source text straight from the ones it mapped, so a tool that truncated one in place while a run was reading it would end that run with a memory fault. Deleting the directory between runs is always safe.

CI

cohere --no-fix

--no-fix makes the run read-only, so CI reports what a developer's run would have fixed and formatted instead of doing it on a machine nobody looks at. A nonzero exit fails the job, unformatted files included. --no-fix does not stop cohere writing its own cache in .cache/cohere, which is safe to persist between CI runs to speed them up, or to discard.

Verifying a release

Every release is built by release.yml in GitHub Actions, from a commit on this repository, and you can check what you installed came from it.

cohere checks part of this on every run. @system-inc/cohere ships a SHA256SUMS of every binary in its platform packages, and before running the binary it checks the binary against it. A binary that differs, from a corrupted download or cache or from tampering, is refused by name and never run. Setting COHERE_BINARY to a build of your own skips the check, since no release describes that build.

To check it yourself, run three commands from your project's root, putting your version and platform in. The first runs where you are; the other two run from the directory holding both cohere packages, which the cd finds the same way for npm and pnpm installs:

npm audit signatures

cd "$(dirname "$(realpath node_modules/@system-inc/cohere)")"
gh release download v1.0.0 --repo system-inc/cohere --pattern SHA256SUMS --output - | shasum -a 256 -c --ignore-missing
gh attestation verify cohere-darwin-arm64/bin/cohere --repo system-inc/cohere
  • npm audit signatures checks the registry's signature on every package installed, and the provenance each cohere package was published with, which names the workflow run and commit that built it. npm shows the same provenance on each package's page.
  • The SHA256SUMS attached to the GitHub release is the same file as the one inside the package, but it reaches you without going through npm, and shasum checks the installed binaries against it. A line that ends OK is a match. It exits nonzero on any mismatch, and when it finds none of the files, so running it from the wrong directory fails rather than passing.
  • gh attestation verify checks the binary against the build attestation the release made for it, signed through Sigstore by the workflow and stored on this repository. Every binary, the SHA256SUMS and the VS Code extension are attested.

The commands are written for a macOS or Linux shell.

Reporting bugs

Report a bug at https://github.com/system-inc/cohere/issues. Include the output of cohere --version, the rule, the smallest code that shows it, and what cohere printed. A crash line already says most of that, so paste it whole.

Contributing

How cohere is built, and why, is in CONTRIBUTING.md.

License

cohere is licensed under either of the Apache License, Version 2.0 (LICENSE-APACHE) or the MIT license (LICENSE-MIT), at your option. cohere is built on the TypeScript compiler, whose notice is in NOTICE, and on the projects credited, each with its license, in THIRD_PARTY_NOTICES.md. Every package it publishes carries all four files.

Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in cohere, as defined in the Apache-2.0 license, is dual licensed as above, without any additional terms or conditions.

Directories ΒΆ

Path Synopsis
command
cohere command
Command cohere type-checks, lints, fixes, and formats a TypeScript codebase in one process, over one AST, against one type graph.
Command cohere type-checks, lints, fixes, and formats a TypeScript codebase in one process, over one AST, against one type graph.
cohere-dev command
Command cohere-dev runs the house's heavy Go work within the machine's budget (#3kr3x59, #qhg0ntb).
Command cohere-dev runs the house's heavy Go work within the machine's budget (#3kr3x59, #qhg0ntb).
cohere-differential command
Command cohere-differential runs both gates over one tree and reports where they disagree.
Command cohere-differential runs both gates over one tree and reports where they disagree.
cohere-dispatch command
Command cohere-dispatch is the shim that `node_modules/.bin/cohere` runs.
Command cohere-dispatch is the shim that `node_modules/.bin/cohere` runs.
cohere-release command
Command cohere-release stages every published package for one version: a binary package per platform, and the dispatcher package that resolves between them.
Command cohere-release stages every published package for one version: a binary package per platform, and the dispatcher package that resolves between them.
formatter_comparison command
Command formatdiff measures typescript-go's formatter against an already-Prettier-formatted tree and reports the taxonomy of what differs.
Command formatdiff measures typescript-go's formatter against an already-Prettier-formatted tree and reports the taxonomy of what differs.
internal
benchresults
Package benchresults is the recorded form of a bench/quiet_machine.sh run: one JSON file per run in bench/results, committed, which the website's benchmarks page reads (#rwgs6j2, for #7tmkt32).
Package benchresults is the recorded form of a bench/quiet_machine.sh run: one JSON file per run in bench/results, committed, which the website's benchmarks page reads (#rwgs6j2, for #7tmkt32).
benchresults/tools/record command
Command record writes one bench/quiet_machine.sh run to bench/results as a validated record (internal/benchresults).
Command record writes one bench/quiet_machine.sh run to bench/results as a validated record (internal/benchresults).
benchresults/tools/runoutput command
Command runoutput prints what one measured run said about itself, read from its `--json` output (benchresults.ParseRunOutput), as quiet_machine.sh's columns: engine seconds, findings and cache use, tab-separated.
Command runoutput prints what one measured run said about itself, read from its `--json` output (benchresults.ParseRunOutput), as quiet_machine.sh's columns: engine seconds, findings and cache use, tab-separated.
corpus
Package corpus names the code outside this repository that some tests read, and is the only way a test finds it (#sycrdr6).
Package corpus names the code outside this repository that some tests read, and is the only way a test finds it (#sycrdr6).
differential
Acknowledged differences are the ones we decided on purpose.
Acknowledged differences are the ones we decided on purpose.
docsdata
Package docsdata generates the data the cohere website (system.inc/cohere) is built from, from the sources the binary itself is built from, so the site can never say something the binary does not do.
Package docsdata generates the data the cohere website (system.inc/cohere) is built from, from the sources the binary itself is built from, so the site can never say something the binary does not do.
docsdata/capture
Package capture is the record the lint test harness writes for the docs generator: one case a rule's test asserted, with the source it ran on and what the rule did there.
Package capture is the record the lint test harness writes for the docs generator: one case a rule's test asserted, with the source it ran on and what the rule did there.
docsdata/tools/generate command
Command generate writes the website's data (internal/docsdata) into the module's docs/data/ directory.
Command generate writes the website's data (internal/docsdata) into the module's docs/data/ directory.
edit
Package fix applies the repairs rules propose, and refuses the ones that would corrupt a file.
Package fix applies the repairs rules propose, and refuses the ones that would corrupt a file.
format/arena
Package arena hands out values from chunks of memory that are kept and reused, for the trees a format builds and drops one file at a time (#93dpede).
Package arena hands out values from chunks of memory that are kept and reused, for the trees a format builds and drops one file at a time (#93dpede).
format/comparison
Package formatdiff measures typescript-go's formatter against the Prettier fork that formats this codebase today.
Package formatdiff measures typescript-go's formatter against the Prettier fork that formats this codebase today.
format/css/mediaquery
Package mediaquery is postcss-media-query-parser 0.2.3 (dist/), the parser Prettier's src/language-css/parse/parse-media-query.js runs on the params of @media and @custom-media.
Package mediaquery is postcss-media-query-parser 0.2.3 (dist/), the parser Prettier's src/language-css/parse/parse-media-query.js runs on the params of @media and @custom-media.
format/css/postcss
Package postcss is postcss 8.5.16's CSS parser ported to Go: lib/tokenize.js, lib/parser.js and lib/parse.js, with the parts of lib/input.js, lib/css-syntax-error.js and the node classes they need.
Package postcss is postcss 8.5.16's CSS parser ported to Go: lib/tokenize.js, lib/parser.js and lib/parse.js, with the parts of lib/input.js, lib/css-syntax-error.js and the node classes they need.
format/css/selector
Package selector is postcss-selector-parser 2.2.3, the selector parser Prettier's CSS printer reads: dist/processor.js, dist/parser.js, dist/tokenize.js and dist/selectors/*.js, ported to Go.
Package selector is postcss-selector-parser 2.2.3, the selector parser Prettier's CSS printer reads: dist/processor.js, dist/parser.js, dist/tokenize.js and dist/selectors/*.js, ported to Go.
format/css/values
Package values ports postcss-values-parser 2.0.1 (lib/parser.js, lib/tokenize.js and the node classes), the parser Prettier's language-css hands declaration values and some at-rule params to.
Package values ports postcss-values-parser 2.0.1 (lib/parser.js, lib/tokenize.js and the node classes), the parser Prettier's language-css hands declaration values and some at-rule params to.
format/differential
Package differential measures a candidate formatter against the Prettier fork, byte for byte, over real corpora.
Package differential measures a candidate formatter against the Prettier fork, byte for byte, over real corpora.
format/doc
Package doc is Prettier's document IR and layout algorithm, ported to Go.
Package doc is Prettier's document IR and layout algorithm, ported to Go.
format/doc/tools/generate_string_width command
Command generate_string_width captures the three tables Prettier's getStringWidth depends on, from the exact package versions the fork bundles, and writes them as Go.
Command generate_string_width captures the three tables Prettier's getStringWidth depends on, from the exact package versions the fork bundles, and writes them as Go.
format/estree
Package estree is the ESTree tree Prettier's JavaScript printer reads, built from typescript-go's AST.
Package estree is the ESTree tree Prettier's JavaScript printer reads, built from typescript-go's AST.
format/formatfiles
Package formatfiles decides which files a tree offers the formatter: the walk, its ignore layers (git's ignore files, the house list, the project's ignorePatterns), and an account of every file it did not offer.
Package formatfiles decides which files a tree offers the formatter: the walk, its ignore layers (git's ignore files, the house list, the project's ignorePatterns), and an account of every file it did not offer.
format/formatoptions
Package formatoptions is what a file formats with: the options, Prettier's names for them, and how a directory resolves them from its repository's config.
Package formatoptions is what a file formats with: the options, Prettier's names for them, and how a directory resolves them from its repository's config.
format/graphql
Package graphql is Prettier's GraphQL language: graphql-js's parser, ported here, and Prettier's printer-graphql, ported beside it.
Package graphql is Prettier's GraphQL language: graphql-js's parser, ported here, and Prettier's printer-graphql, ported beside it.
format/javascript
Package javascript is Prettier's JavaScript and TypeScript printer, src/language-js in the fork, ported to Go over the ESTree tree internal/format/estree builds.
Package javascript is Prettier's JavaScript and TypeScript printer, src/language-js in the fork, ported to Go over the ESTree tree internal/format/estree builds.
format/markdown
Package markdown is Prettier's markdown printer (src/language-markdown) for the markdown parser, ported to Go over the tree internal/format/markdown/mdast builds with the same parser the fork runs.
Package markdown is Prettier's markdown printer (src/language-markdown) for the markdown parser, ported to Go over the tree internal/format/markdown/mdast builds with the same parser the fork runs.
format/markdown/mdast
Package mdast is the syntax tree Prettier's markdown printer reads, and mdast-util-from-markdown, the compiler that builds it from micromark's events.
Package mdast is the syntax tree Prettier's markdown printer reads, and mdast-util-from-markdown, the compiler that builds it from micromark's events.
format/markdown/micromark
Package micromark is micromark 4, the markdown tokenizer Prettier's markdown parser runs, ported to Go.
Package micromark is micromark 4, the markdown tokenizer Prettier's markdown parser runs, ported to Go.
format/markdown/micromark/tools/generate_characters command
Command generate_characters captures micromark's two Unicode character classes from the bundle the oracle runs, and writes them as Go.
Command generate_characters captures micromark's two Unicode character classes from the bundle the oracle runs, and writes them as Go.
format/markdown/micromark/tools/generate_entities command
Command generate_entities captures the HTML named character references micromark decodes, from the table the oracle's bundle carries, and writes them as Go.
Command generate_entities captures the HTML named character references micromark decodes, from the table the oracle's bundle carries, and writes them as Go.
format/markdown/tools/generate_classes command
Command generate_classes captures the character classes Prettier's markdown printer splits and wraps text by, from the bundle the oracle runs, and writes them as Go.
Command generate_classes captures the character classes Prettier's markdown printer splits and wraps text by, from the bundle the oracle runs, and writes them as Go.
format/markdown/tools/generate_languages command
Command generate_languages captures the languages markdown's embed infers a parser from, from the bundles the oracle runs, and writes them as Go.
Command generate_languages captures the languages markdown's embed infers a parser from, from the bundles the oracle runs, and writes them as Go.
format/native
Package native is cohere's own formatter: the printers that replace Prettier, routed by file type.
Package native is cohere's own formatter: the printers that replace Prettier, routed by file type.
format/oracletest
Package oracletest keeps what the embedded Prettier answered for a test's fixtures in a checked-in golden file, so the test compares bytes and runs no JavaScript (#nxgt2ca).
Package oracletest keeps what the embedded Prettier answered for a test's fixtures in a checked-in golden file, so the test compares bytes and runs no JavaScript (#nxgt2ca).
format/prettier
Package prettier formats source by running our own Prettier fork inside a JavaScript engine.
Package prettier formats source by running our own Prettier fork inside a JavaScript engine.
format/printing
Package printing is Prettier's print core, shared by every native printer in cohere: AstPath, the print driver that wraps each node's doc in its comments, comment attachment, and embedding.
Package printing is Prettier's print core, shared by every native printer in cohere: AstPath, the print driver that wraps each node's doc in its comments, comment attachment, and embedding.
format/yaml
Package yaml is Prettier's YAML printer (src/language-yaml) ported to Go, printing the tree internal/format/yaml/unist describes: yaml-unist-parser's, over eemeli/yaml.
Package yaml is Prettier's YAML printer (src/language-yaml) ported to Go, printing the tree internal/format/yaml/unist describes: yaml-unist-parser's, over eemeli/yaml.
format/yaml/compose
Package compose is eemeli/yaml 2.9.0's composer, dist/compose/, ported to Go with the node classes it builds (dist/nodes/), the parts of dist/doc/ it runs (the Document constructor and setSchema, the Directives), and the schemas it resolves tags against (dist/schema/: the core schema, the common map, seq, string and null tags, and the YAML 1.1 schema, which a %YAML 1.1 directive selects and six of whose tags the core schema reaches as known tags).
Package compose is eemeli/yaml 2.9.0's composer, dist/compose/, ported to Go with the node classes it builds (dist/nodes/), the parts of dist/doc/ it runs (the Document constructor and setSchema, the Directives), and the schemas it resolves tags against (dist/schema/: the core schema, the common map, seq, string and null tags, and the YAML 1.1 schema, which a %YAML 1.1 directive selects and six of whose tags the core schema reaches as known tags).
format/yaml/cst
Package cst is eemeli/yaml 2.9.0's concrete syntax tree parser, dist/parse/, ported to Go: the lexer (lexer.js), the parser (parser.js), the token types and tokenType (cst.js), and the LineCounter (line-counter.js).
Package cst is eemeli/yaml 2.9.0's concrete syntax tree parser, dist/parse/, ported to Go: the lexer (lexer.js), the parser (parser.js), the token types and tokenType (cst.js), and the LineCounter (line-counter.js).
format/yaml/unist
Package unist is the syntax tree Prettier's YAML printer reads: yaml-unist-parser 3.2.0's tree, built over the documents eemeli/yaml 2.9.0 composes.
Package unist is the syntax tree Prettier's YAML printer reads: yaml-unist-parser 3.2.0's tree, built over the documents eemeli/yaml 2.9.0 composes.
gitignore
Package gitignore decides which paths a repository's ignore files exclude, the way git decides it, without running git.
Package gitignore decides which paths a repository's ignore files exclude, the way git decides it, without running git.
lint/checking
Source: tsgolint `internal/utilities/builtin_symbol_likes.go`.
Source: tsgolint `internal/utilities/builtin_symbol_likes.go`.
lint/checking/flow
Package flow finds every place a value of one type is put into a slot of another, and relates the two part by part.
Package flow finds every place a value of one type is put into a slot of another, and relates the two part by part.
lint/configuration
Package config decides which rules apply to which files.
Package config decides which rules apply to which files.
lint/ecmascript/binding
Package binding answers whether an identifier names something this file chose.
Package binding answers whether an identifier names something this file chose.
lint/ecmascript/classmembers
Package classmembers answers which members of a class collide with each other.
Package classmembers answers which members of a class collide with each other.
lint/ecmascript/consistentreturn
Package consistentreturn answers whether the `return` statements in one function agree about carrying a value, and where to point when they do not.
Package consistentreturn answers whether the `return` statements in one function agree about carrying a value, and where to point when they do not.
lint/ecmascript/control_flow_graph
Vendored from web-infra-dev/rslint, `internal/utilities/cfg`, at commit 44956a0c53201157aaf5bc19e1c2728896c83ec4.
Vendored from web-infra-dev/rslint, `internal/utilities/cfg`, at commit 44956a0c53201157aaf5bc19e1c2728896c83ec4.
lint/ecmascript/decorators
Package decorators reads TypeScript decorators and the declared/actual nullability that the decorator parity rules compare.
Package decorators reads TypeScript decorators and the declared/actual nullability that the decorator parity rules compare.
lint/ecmascript/descriptor
Package descriptor answers whether a function is the `get` or `set` of a property descriptor passed to one of the platform methods that read descriptors: `Object.defineProperty`, `Object.defineProperties`, `Object.create` and `Reflect.defineProperty`.
Package descriptor answers whether a function is the `get` or `set` of a property descriptor passed to one of the platform methods that read descriptors: `Object.defineProperty`, `Object.defineProperties`, `Object.create` and `Reflect.defineProperty`.
lint/ecmascript/directives
Package directives is the grammar of suppression comments, and the short list of rules whose findings are about those comments.
Package directives is the grammar of suppression comments, and the short list of rules whose findings are about those comments.
lint/ecmascript/dotnotation
Package dotnotation is the judgment behind `dot-notation`: which bracket accesses with a literal key read better as dot accesses, which dot accesses must be bracketed when keywords are disallowed, and the repairs for both.
Package dotnotation is the judgment behind `dot-notation`: which bracket accesses with a literal key read better as dot accesses, which dot accesses must be bracketed when keywords are disallowed, and the repairs for both.
lint/ecmascript/high_level_intermediate_representation
Making a method call and its property agree about scopes.
Making a method call and its property agree about scopes.
lint/ecmascript/imports
Package imports answers where a file's imports come from, in every shape the language allows.
Package imports answers where a file's imports come from, in every shape the language allows.
lint/ecmascript/jsx
Package jsx answers the questions a rule asks about a JSX element: what tag it names, what attributes it writes, and what a given attribute's text is.
Package jsx answers the questions a rule asks about a JSX element: what tag it names, what attributes it writes, and what a given attribute's text is.
lint/ecmascript/literal
Package literal answers questions about the text a string literal holds, where the bytes on disk and the value the program receives are two different strings.
Package literal answers questions about the text a string literal holds, where the bytes on disk and the value the program receives are two different strings.
lint/ecmascript/module
Package module answers questions about how a file exposes its declarations.
Package module answers questions about how a file exposes its declarations.
lint/ecmascript/module_roots
Package module_roots decides which files are alive with no importer: a framework loads them by filename, a test runner by glob, a computed `import()` by directory.
Package module_roots decides which files are alive with no importer: a framework loads them by filename, a test runner by glob, a computed `import()` by directory.
lint/ecmascript/nextjs
Package nextjs answers which Next.js file a path is, for the rules that gate on it.
Package nextjs answers which Next.js file a path is, for the rules that gate on it.
lint/ecmascript/property
Package property answers what property a key or a member access names, when the syntax settles it without evaluation.
Package property answers what property a key or a member access names, when the syntax settles it without evaluation.
lint/ecmascript/react
Package react answers the questions a rule asks about React code that are not questions about JSX: is this call constructing an element, is this a component, which component encloses this.
Package react answers the questions a rule asks about React code that are not questions about JSX: is this call constructing an element, is this a component, which component encloses this.
lint/ecmascript/reference
Package reference answers what an identifier occurrence does to the binding it names.
Package reference answers what an identifier occurrence does to the binding it names.
lint/ecmascript/regexp
Package regexp compiles a JavaScript regexp the way JavaScript reads it.
Package regexp compiles a JavaScript regexp the way JavaScript reads it.
lint/ecmascript/regexpattern
Package regexpattern walks a regular expression pattern and reports each character it matches, with the structure enclosing it.
Package regexpattern walks a regular expression pattern and reports each character it matches, with the structure enclosing it.
lint/ecmascript/regexsyntax
cspell:ignore octals
cspell:ignore octals
lint/ecmascript/scope
Package scope answers which construct encloses a node.
Package scope answers which construct encloses a node.
lint/ecmascript/text
Package text holds string measurements that are not specific to any language we lint.
Package text holds string measurements that are not specific to any language we lint.
lint/ecmascript/tokens
Package tokens is a node's tokens, comments and whitespace excluded, and the questions ESLint's SourceCode asks of them: getTokenBefore, getTokenAfter and getFirstTokenBetween.
Package tokens is a node's tokens, comments and whitespace excluded, and the questions ESLint's SourceCode asks of them: getTokenBefore, getTokenAfter and getFirstTokenBetween.
lint/housesets
Package housesets decides, from the program, which house sets a zero-config run applies where (#bfxz13m, #j6p9t1g).
Package housesets decides, from the program, which house sets a zero-config run applies where (#bfxz13m, #j6p9t1g).
lint/linter
Package linter walks source files once and dispatches every rule against them.
Package linter walks source files once and dispatches every rule against them.
lint/optionschema
Package optionschema holds every ported rule's upstream options schema and checks a config's options against it, so cohere accepts exactly the option shapes ESLint accepts and refuses the rest (#pd2chkx).
Package optionschema holds every ported rule's upstream options schema and checks a config's options against it, so cohere accepts exactly the option shapes ESLint accepts and refuses the rest (#pd2chkx).
lint/registry
Package registry is the list of every rule cohere knows.
Package registry is the list of every rule cohere knows.
lint/report
Package report turns findings into what a person reads, and says what was covered.
Package report turns findings into what a person reads, and says what was covered.
lint/rule
Package rule defines what a rule is and how it speaks.
Package rule defines what a rule is and how it speaks.
lint/rules/base
Package base holds the rules that check Base's own conventions.
Package base holds the rules that check Base's own conventions.
lint/rules/boundaries
Package boundaries holds cohere's port of eslint-plugin-boundaries, which checks which parts of a codebase may import which.
Package boundaries holds cohere's port of eslint-plugin-boundaries, which checks which parts of a codebase may import which.
lint/rules/core
Package core ports ESLint's own core rules, the ones that guard JavaScript rather than any convention of ours.
Package core ports ESLint's own core rules, the ones that guard JavaScript rather than any convention of ours.
lint/rules/next
Package next holds the rules from `@next/eslint-plugin-next`, ported from Vercel's originals.
Package next holds the rules from `@next/eslint-plugin-next`, ported from Vercel's originals.
lint/rules/nexus
Package nexus holds the rules that describe how Nexus code reads, ported from the TypeScript originals in ahra's libraries/structure/libraries/nexus/code-quality/lint/rules.
Package nexus holds the rules that describe how Nexus code reads, ported from the TypeScript originals in ahra's libraries/structure/libraries/nexus/code-quality/lint/rules.
lint/rules/react
Package react holds the ported `eslint-plugin-react` rules.
Package react holds the ported `eslint-plugin-react` rules.
lint/rules/react/conformance
Package react_conformance scores an implementation against React's own compiler error fixtures.
Package react_conformance scores an implementation against React's own compiler error fixtures.
lint/rules/react/tools/vendor_fixtures command
Command vendor_fixtures re-pulls React's error-named compiler fixtures at a chosen commit.
Command vendor_fixtures re-pulls React's error-named compiler fixtures at a chosen commit.
lint/rules/structure
Package structure holds the rules for this project's own conventions, as opposed to the language rules in core and the cross-cutting ones in nexus.
Package structure holds the rules for this project's own conventions, as opposed to the language rules in core and the cross-cutting ones in nexus.
lint/rules/tailwind
The live candidate split: a class broken into the pieces that decide whether it can merge, using this repository's own roots.
The live candidate split: a class broken into the pieces that decide whether it can merge, using this repository's own roots.
lint/rules/tailwind/collapse
decodeArbitraryValue and isValidArbitrary: the two functions every arbitrary bracket in a class string is routed through before the candidate parser will look at it.
decodeArbitraryValue and isValidArbitrary: the two functions every arbitrary bracket in a class string is routed through before the candidate parser will look at it.
lint/rules/tailwind/tools/generate_candidate command
Command generate_candidate captures candidate readings from the real Tailwind candidate parser, so that the Go port in internal/lint/rules/tailwind/collapse/candidate.go is tested against measurements rather than against a reading of the TypeScript source.
Command generate_candidate captures candidate readings from the real Tailwind candidate parser, so that the Go port in internal/lint/rules/tailwind/collapse/candidate.go is tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_class_literals command
Command generate_class_literals asks better-tailwindcss itself what it reads as a class string (#btxd64n), and writes two files from its answers:
Command generate_class_literals asks better-tailwindcss itself what it reads as a class string (#btxd64n), and writes two files from its answers:
lint/rules/tailwind/tools/generate_class_order command
Command generate_class_order captures the Tier 2 differential fixture: `{order, count}` for every class in every design system, as the shipped Tailwind engine computes it, together with the per-repository tables the Go side needs to answer the same question.
Command generate_class_order captures the Tier 2 differential fixture: `{order, count}` for every class in every design system, as the shipped Tailwind engine computes it, together with the per-repository tables the Go side needs to answer the same question.
lint/rules/tailwind/tools/generate_collapse command
Command generate_collapse regenerates the Tailwind collapse table from the installed Tailwind.
Command generate_collapse regenerates the Tailwind collapse table from the installed Tailwind.
lint/rules/tailwind/tools/generate_css_parser command
Command generate_css_parser captures parse trees from the real Tailwind CSS parser, so that the Go port in internal/lint/rules/tailwind/collapse/cssparser.go is tested against measurements rather than against a reading of the TypeScript source.
Command generate_css_parser captures parse trees from the real Tailwind CSS parser, so that the Go port in internal/lint/rules/tailwind/collapse/cssparser.go is tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_data_type command
Command generate_data_type captures what the real Tailwind engine infers for a corpus of CSS value shapes, so that the Go port in internal/tailwind can be tested against measurements rather than against a reading of the TypeScript source.
Command generate_data_type captures what the real Tailwind engine infers for a corpus of CSS value shapes, so that the Go port in internal/tailwind can be tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_descriptor_base command
Command generate_descriptor_base prints the framework-invariant half of the descriptor table into shipped Go, so a design system can be given a descriptor Table without a checked-in fixture.
Command generate_descriptor_base prints the framework-invariant half of the descriptor table into shipped Go, so a design system can be given a descriptor Table without a checked-in fixture.
lint/rules/tailwind/tools/generate_descriptor_table command
Command generate_descriptor_table turns the descriptor extractor's diagnostic JSON into the Go table `internal/tailwind` looks readings up in.
Command generate_descriptor_table turns the descriptor extractor's diagnostic JSON into the Go table `internal/tailwind` looks readings up in.
lint/rules/tailwind/tools/generate_framework_variants command
Command generate_framework_variants prints the framework's variant registrations into shipped Go.
Command generate_framework_variants prints the framework's variant registrations into shipped Go.
lint/rules/tailwind/tools/generate_statics command
Command generate_statics turns the engine's own static-utility registrations into Go.
Command generate_statics turns the engine's own static-utility registrations into Go.
lint/rules/tailwind/tools/generate_syntax_tree command
Command generate_syntax_tree captures compiled utility trees from the real Tailwind engine, together with the {order, count} reading the engine takes from each, so that the Go AST and PropertySort in internal/tailwind are tested against measurements rather than against a reading of the TypeScript source.
Command generate_syntax_tree captures compiled utility trees from the real Tailwind engine, together with the {order, count} reading the engine takes from each, so that the Go AST and PropertySort in internal/tailwind are tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_theme command
Command generate_theme captures the theme the real Tailwind engine resolved for a corpus of stylesheets, so that the Go port in internal/lint/rules/tailwind/collapse/theme.go is tested against measurements rather than against a reading of the TypeScript source.
Command generate_theme captures the theme the real Tailwind engine resolved for a corpus of stylesheets, so that the Go port in internal/lint/rules/tailwind/collapse/theme.go is tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_utility command
Command generate_utility captures what the shipped Tailwind engine does with a repository's own `@utility` blocks, so that the Go evaluator in internal/lint/rules/tailwind/collapse/utility.go is tested against measurements rather than against a reading of `createCssUtility`.
Command generate_utility captures what the shipped Tailwind engine does with a repository's own `@utility` blocks, so that the Go evaluator in internal/lint/rules/tailwind/collapse/utility.go is tested against measurements rather than against a reading of `createCssUtility`.
lint/rules/tailwind/tools/generate_value_parser command
Command generate_value_parser captures the node tree the real Tailwind value parser produces for a corpus of CSS value shapes, so that the Go port in internal/tailwind is tested against measurements rather than against a reading of the TypeScript source.
Command generate_value_parser captures the node tree the real Tailwind value parser produces for a corpus of CSS value shapes, so that the Go port in internal/tailwind is tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/generate_variant command
Command generate_variant captures how the real Tailwind engine orders variants, so that the Go port in internal/lint/rules/tailwind/collapse/variant.go is tested against measurements rather than against a reading of the TypeScript source.
Command generate_variant captures how the real Tailwind engine orders variants, so that the Go port in internal/lint/rules/tailwind/collapse/variant.go is tested against measurements rather than against a reading of the TypeScript source.
lint/rules/tailwind/tools/tooldirectory
Package tooldirectory finds a generator's own source directory, where its sibling scripts live.
Package tooldirectory finds a generator's own source directory, where its sibling scripts live.
lint/rules/tailwind/vendored
Package vendored is the installed tailwindcss the Tailwind rules' tests build a design system against: a snapshot of tailwindcss 4.3.3 in testdata, so those tests run on any machine instead of only where ahra's node_modules happens to be (#sycrdr6).
Package vendored is the installed tailwindcss the Tailwind rules' tests build a design system against: a snapshot of tailwindcss 4.3.3 in testdata, so those tests run on any machine instead of only where ahra's node_modules happens to be (#sycrdr6).
lint/rules/typescript
Package typescript holds the rules from `@typescript-eslint/eslint-plugin`, ported from the originals.
Package typescript holds the rules from `@typescript-eslint/eslint-plugin`, ported from the originals.
lint/suppression
Package suppression reads the comments that tell a rule "not here", and records what they did.
Package suppression reads the comments that tell a rule "not here", and records what they did.
lint/testing
Package rule_testing runs a rule against source text and reports what it found.
Package rule_testing runs a rule against source text and reports what it found.
release/changelog
Package changelog writes a release's section of CHANGELOG.md from what changed in the rule sets cohere carries, and says the smallest version that change allows.
Package changelog writes a release's section of CHANGELOG.md from what changed in the rule sets cohere carries, and says the smallest version that change allows.
release/dispatch
Package dispatch resolves which cohere binary to run, rebuilding it when its inputs change.
Package dispatch resolves which cohere binary to run, rebuilding it when its inputs change.
release/gocache
Package gocache bounds a Go build cache by size, which Go itself never does.
Package gocache bounds a Go build cache by size, which Go itself never does.
release/notices
Package notices writes cohere's third-party notices: NOTICE, which carries the TypeScript compiler's Apache-2.0 notice, and THIRD_PARTY_NOTICES.md, which credits every other project cohere is built on with its license in full.
Package notices writes cohere's third-party notices: NOTICE, which carries the TypeScript compiler's Apache-2.0 notice, and THIRD_PARTY_NOTICES.md, which credits every other project cohere is built on with its license in full.
release/packaging
Package release holds what a shipped cohere knows about itself: which build it is, and where its binary comes from on a machine that has no source and no Go toolchain.
Package release holds what a shipped cohere knows about itself: which build it is, and where its binary comes from on a machine that has no source and no Go toolchain.
release/tools/build_dispatcher_package command
Command build_dispatcher_package writes one npm package to a directory, and compiles nothing.
Command build_dispatcher_package writes one npm package to a directory, and compiles nothing.
release/tools/changelog command
Command changelog prints a release's section of CHANGELOG.md from what changed in the rule sets, and refuses a version smaller than that change allows.
Command changelog prints a release's section of CHANGELOG.md from what changed in the rule sets, and refuses a version smaller than that change allows.
release/tools/notices command
Command notices writes NOTICE and THIRD_PARTY_NOTICES.md at the module root, from cohere's build graph and the curated upstreams in internal/release/notices.
Command notices writes NOTICE and THIRD_PARTY_NOTICES.md at the module root, from cohere's build graph and the curated upstreams in internal/release/notices.
rename
Package rename performs a program-wide symbol rename: the command-line equivalent of an editor's rename refactor, answered from the type graph rather than from a text search.
Package rename performs a program-wide symbol rename: the command-line equivalent of an editor's rename refactor, answered from the type graph rather than from a text search.
replace
Package replace puts a finished file in place of another, as one rename, on every platform cohere ships.
Package replace puts a finished file in place of another, as one rename, on every platform cohere ships.
settingsschema
Package settingsschema generates the JSON schemas for CohereSettings.json and NexusCohereSettings.json, and the reference document beside them, from the types that read those files.
Package settingsschema generates the JSON schemas for CohereSettings.json and NexusCohereSettings.json, and the reference document beside them, from the types that read those files.
settingsschema/tools/generate command
Command generate writes the settings schemas and their reference (internal/settingsschema) into the module's schema/ directory.
Command generate writes the settings schemas and their reference (internal/settingsschema) into the module's schema/ directory.
testpolicy
Package testpolicy holds the house rules for cohere's own tests, checked by tests of its own.
Package testpolicy holds the house rules for cohere's own tests, checked by tests of its own.
types/program
Package program builds the type graph and hands the other phases a checker they call as a function.
Package program builds the type graph and hands the other phases a checker they call as a function.
types/sourcename
Package sourcename says what a source file's name means to cohere's TypeScript decisions.
Package sourcename says what a source file's name means to cohere's TypeScript decisions.
unused_exports
Package unused_exports reports code that was written and never used.
Package unused_exports reports code that was written and never used.
Package policy is the house policy both engines read as data: what the Go engine embeds here, the Swift engine reads from the same file, so a decision about the house lands once and cannot drift between them.
Package policy is the house policy both engines read as data: what the Go engine embeds here, the Swift engine reads from the same file, so a decision about the house lands once and cannot drift between them.
tools/generate command
Command generate writes the Swift sources that compile cohere's policy files into the Swift engine (policy.SwiftFiles).
Command generate writes the Swift sources that compile cohere's policy files into the Swift engine (policy.SwiftFiles).
Package rule_runner runs one of cohere's rules in another program's process, over a program and checker that program already holds, so a rule lives once and is never copied (#xjdce2d, #s6z97k8).
Package rule_runner runs one of cohere's rules in another program's process, over a program and checker that program already holds, so a rule lives once and is never copied (#xjdce2d, #s6z97k8).
Package unicodeproperties provides ECMAScript character properties from Unicode 17.0.0.
Package unicodeproperties provides ECMAScript character properties from Unicode 17.0.0.
internal/generate command
Command generate produces cohere's ECMAScript Unicode property tables.
Command generate produces cohere's ECMAScript Unicode property tables.
internal/ucd
Package ucd builds ECMAScript character properties from the pinned Unicode Character Database.
Package ucd builds ECMAScript character properties from the pinned Unicode Character Database.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL