aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
55 lines • 2.43 kB
TypeScript
/**
* Heuristic Project-Type Inference
*
* Fallback used by `project-status` (and any other `kind: status` aggregator)
* when contributor discovery returns zero in-use contributors. Detects what
* kind of project this is from cheap local signals — manifest files, file
* extensions, basic git presence — so the report still says something useful
* for projects that have not opted into AIWG contributors.
*
* Local-only by design: no network calls, no `npm outdated`, no GitHub API.
* The whole inference returns in O(few hundred ms) on a typical repo because
* it only checks a small number of well-known paths and runs a handful of
* bounded globs.
*
* @architecture @.aiwg/architecture/decisions/ADR-023-contributor-discovery-convention.md
* @issue #941
*/
/**
* Discriminator for the kind of dimension a heuristic detected. Future
* dimensions register by adding a string here without breaking consumers.
*/
export type HeuristicDimensionKind = 'code' | 'docs' | 'assets' | 'mixed' | string;
/**
* One dimension of the inferred project type. A project may have several —
* a code repo with a docs/ subdir surfaces both `code` and `docs`. The
* `confidence` field is a coarse signal-strength indicator the caller can
* surface in the report ("(high confidence)").
*/
export interface HeuristicDimension {
kind: HeuristicDimensionKind;
/** Coarse confidence: 'high' = strong signal, 'medium' = present but mixed, 'low' = weak */
confidence: 'high' | 'medium' | 'low';
/** Human-readable summary line for the dimension. */
summary: string;
/** Structured detail rows for verbose output / --json. */
details: Array<{
label: string;
value: string;
}>;
}
export interface HeuristicReport {
/** Always 'heuristic' so callers can stamp `origin: heuristic` on the block. */
origin: 'heuristic';
/** Dimensions in priority order: code, docs, assets, then anything else. */
dimensions: HeuristicDimension[];
/** True when no signals fired and the report has nothing to show. */
empty: boolean;
}
/**
* Run all heuristic detectors and return a unified report. The caller
* decides whether to surface this to the user — typically only when
* `discoverContributors()` returns zero in-use contributors.
*/
export declare function inferProjectType(projectRoot: string): Promise<HeuristicReport>;
//# sourceMappingURL=heuristic.d.ts.map