# configuration/strings/index.strings.ts

> 77 lines of code and 16 definitions.

Tree: GovLab Docs
Language: typescript
Layer: product
Canonical: https://banes-lab.com/anatomy/docs#file-docs-configuration-strings-index-strings-ts
Source text: https://banes-lab.com/source/docs/configuration/strings/index.strings.ts.txt

Listed in [configuration/strings](https://banes-lab.com/api/source/docs/configuration/strings.md), after [configuration/strings/graph.strings.ts](https://banes-lab.com/source/docs/configuration/strings/graph.strings.ts.md) and before [configuration/strings/invocation.strings.ts](https://banes-lab.com/source/docs/configuration/strings/invocation.strings.ts.md).

## Definitions

- `wroteFile` (lexical_declaration, line 86, exported)
- `reproduceNote` (lexical_declaration, line 33, exported)
- `concernRow` (lexical_declaration, line 52, exported)
- `indexSummary` (lexical_declaration, line 60, exported)
- `composeLine` (lexical_declaration, line 70, exported)
- `standaloneLine` (lexical_declaration, line 74, exported)
- `regeneratedIndex` (lexical_declaration, line 78, exported)
- `upToDate` (lexical_declaration, line 82, exported)
- `indexedCount` (lexical_declaration, line 90, exported)
- `GROUP_ROLES` (lexical_declaration, line 1, exported)
- `INDEX_HEADINGS` (lexical_declaration, line 7, exported)
- `INDEX_TEXT` (lexical_declaration, line 18, exported)
- `INDEX_TABLES` (lexical_declaration, line 27, exported)
- `composesPeers` (lexical_declaration, line 37, exported)
- `inventoryRow` (lexical_declaration, line 41, exported)
- `groupRow` (lexical_declaration, line 56, exported)

## Contained in

- [configuration/strings](https://banes-lab.com/anatomy/docs/folder-docs-configuration-strings.md)

## Used by

- [core/coordinators/index.coordinator.ts](https://banes-lab.com/source/docs/core/coordinators/index.coordinator.ts.md)
- [core/formatters/index.formatter.ts](https://banes-lab.com/source/docs/core/formatters/index.formatter.ts.md)

## Linked from

- [core/coordinators](https://banes-lab.com/anatomy/docs/folder-docs-core-coordinators.md)
- [core/formatters](https://banes-lab.com/anatomy/docs/folder-docs-core-formatters.md)

## Source

```typescript
export const GROUP_ROLES = {
    application: "the application — the governed subject",
    tooling: "the govlab tooling that governs this monorepo",
    unclassified: "(unclassified group)",
} as const;

export const INDEX_HEADINGS = {
    composition: "## What can work together",
    concerns: "## Concerns ownership",
    dependencies: "## Dependency graph (composing packages)",
    groups: "## Groups",
    inventory: "## Per-package inventory",
    reproduce: "## Reproducing this file",
    title: "# Workspace Index",
    tree: "## Workspace tree",
} as const;

export const INDEX_TEXT = {
    composeIntro: "Direct composition (a composing package pulls all the leaves below it):",
    concernsNote:
        "_One concern per package; if two rows look like they collide, one is misplaced or the wrong package is consuming the other._",
    noComposers: "_(no composing packages yet — all leaves)_",
    standaloneIntro: "Standalone use (any leaf can be consumed without dragging in its framework):",
    treeRoot: "banes-lab/",
} as const;

export const INDEX_TABLES = {
    concerns: ["| Concern | Owner |", "|---|---|"],
    groups: ["| Group | Role | Packages |", "|---|---|---|"],
    inventory: ["| Package | Group | Sibling deps | Surface | Source files | LOC |", "|---|---|---|---|---|---|"],
} as const;

export const reproduceNote = function reproduceNote(entrypoint: string): string {
    return `This file is regenerated from \`${entrypoint}\` (\`npm run docs:generate\`). The script expands the root \`package.json\` \`workspaces\` globs, parses each \`package.json\`, extracts the README "What is it" paragraph, counts barrel exports in \`index.ts\`, and tallies non-blank source LOC. The machine-readable peer of this file is \`INDEX.generated.json\`.`;
};

export const composesPeers = function composesPeers(count: number): string {
    return ` ← composes ${count} peers`;
};

export const inventoryRow = function inventoryRow(parts: {
    exports: number;
    group: string;
    loc: number;
    name: string;
    siblings: string;
    sources: number;
}): string {
    return `| \`${parts.name}\` | ${parts.group} | ${parts.siblings} | ${parts.exports} exports | ${parts.sources} | ${parts.loc} |`;
};

export const concernRow = function concernRow(concern: string, name: string): string {
    return `| ${concern} | \`${name}\` |`;
};

export const groupRow = function groupRow(group: string, role: string, count: number): string {
    return `| \`${group}\` | ${role} | ${count} |`;
};

export const indexSummary = function indexSummary(parts: {
    composers: number;
    exports: number;
    leaves: number;
    loc: number;
    packages: number;
}): string {
    return `**${parts.packages} packages** — ${parts.leaves} leaves, ${parts.composers} composers, **${parts.exports} barrel exports**, **${parts.loc} non-blank source LOC**.`;
};

export const composeLine = function composeLine(name: string, peers: string): string {
    return `- Use \`${name}\` to get \`${peers}\` already wired together.`;
};

export const standaloneLine = function standaloneLine(name: string, purpose: string): string {
    return `- \`${name}\` — ${purpose}`;
};

export const regeneratedIndex = function regeneratedIndex(markdown: string, json: string): string {
    return `index: regenerated ${markdown} / ${json}`;
};

export const upToDate = function upToDate(markdown: string): string {
    return `index: ${markdown} up to date`;
};

export const wroteFile = function wroteFile(file: string): string {
    return `Wrote ${file}`;
};

export const indexedCount = function indexedCount(packages: number, groups: number): string {
    return `Indexed ${packages} packages across ${groups} groups.`;
};
```
