API reference
Core engine API
The deterministic CLI blocks: config, generators, validator, planner, LLM providers.
110 modules, 911 documented exports. Version next. All packages.
packages/core
- api-composerModule 2 — Public API Composer. Exports: checkPublicApiDrift, summaryForSpecifier, syncPublicApi
- architecture-enforcerEpic 1.2 — Layer Boundary Enforcer Exports: FILE_EXTENSIONS, checkDanglingImports, checkUnclassified, detectLayerViolations, extractImports, findTransitionHoles, hasFactoryCall, isProviderHookName, ...
- architecture-graphEpic 1.1 — Layer Graph Definition Exports: CANONICAL_LAYERS, canImport, classifyFile, classifyProjectFile, loadLayerGraph, mergeLayers, PSEUDO_LAYERS, validateGraph
- backend-rolesModule roles for `construct summarize --backend`: each backend file is classified as route, store, service, auth, job, util, config, test or other, by naming convention and content signals, with the reason for each ve... Exports: BACKEND_ROLES, classifyBackendFile, isBackendTestPath, readBackendConfig
- backend-routesThe route map of `construct summarize --backend`: replays each Express app's event timeline across files, resolving `app.use('/prefix', createRouter(...))`, imported routers, router factories and route registrars (`mo... Exports: mapRoutes
- backend-summary`construct summarize --backend <dir>`: an on-demand, read-only summary of a Node.js / Express backend: the route map, each file's role, the import graph with its cycles, environment reads (names only) and effects (fs,... Exports: BACKEND_LIMITS, BACKEND_SUMMARY_SCHEMA, renderBackendText, resolveBackendDir, summarizeBackend
- block-args(part of epic ) -- the closed choices and the argument rules of the guard, store and handler blocks, in a module that imports nothing: the plan validator (plan.mjs) reads them, and so do the blocks themselves (guard.m... Exports: FEATURE_NAME_RE, GUARD_ACCESS, HANDLER_METHODS, HANDLER_PATH_RE, MAX_ROLES, ROLE_RE, STORE_SHAPES, UNIT_NAME_RE, ...
- block-contractthe uniform block contract: `{ id, writes, declaredScope, actions, run }`. Exports: ActionRule, Block, BlockAction, DeclaredScope, ACTION_KINDS, BLOCK_ERROR_CODES, BLOCK_ID_RE, GUARDRAILS, ...
- block-flowsPLAN_FLOWS seen through the block contract (block-contract.mjs), by DERIVING a block from each flow entry rather than rewriting the registry: PLAN_FLOWS, validatePlan and planToCommand are untouched, so a plan means e... Exports: processLifecycleBlock, SCOPE_KINDS, argProblem, flowBlock, flowBlocks, flowScopeKind
- block-kit(part of epic ) -- the small pieces the guard, store and handler blocks share: where a feature lives, how a block adds its declarations to the feature's `types.ts` without touching what is there, and how a set of gene... Exports: assertFeature, entityFieldsIn, featureDirOf, withDeclarations, writeOwned, FEATURE_NAME_RE, UNIT_NAME_RE
- block-proof(part of epic ) -- what the proofs of the guard, store and handler blocks share. Exports: EXPECT_LINES, blockProofTouches, proofHeader, writeBlockProof
- builtin-commandsRegisters every command `packages/cli/construct.mjs` used to dispatch through its own hand-written `if (cmd === '...') ...` chain, now through the same `command-registry.mjs` an installed package's own commands (`plug... Exports: registerBuiltinCommands
- check-change`construct check-change`: a deterministic, LLM-free verdict on whether an unsaved/staged edit changed behaviour, shown as an indicator before saving rather than only at PR/CI time (owner steer on , 2026-09-21). Exports: checkChangeBlock, checkChangeCommand, checkChangeForFile
- chooser(epic ) -- a chooser block asks ONE closed question with 2-5 options. Exports: Chooser, ChooserExit, ChooserOption, ChooserState, ChooserSummary, Decision, CHOOSER_ERROR_CODES, CHOOSER_LIMITS, ...
- cliExports: READ_ONLY_ATTRIBUTION, addRuleCommand, checkChange, create, decide, doctor, exportCommand, feature, ...
- client-boundaryCLIENT-001: a file marked 'use client', and every file that only it (or another client file) pulls in, is shipped to the browser, so none of them may import server-only code. Exports: DEFAULT_SERVER_ONLY_MODULES, SERVER_ONLY_PACKAGE, checkClientBoundary, isServerOnlySpecifier
- command-registryA small, deterministic command registry. Exports: RegisteredCommand, createCommandRegistry
- configExports: DATA_LAYER_PROVIDERS, DEFAULT_DECISION, DEFAULT_EXECUTION_MODE, DEFAULT_LAYERS, DEFAULT_RULES, DEFAULT_TRACES, EXECUTION_MODES, FRAMEWORKS, ...
- debug-chain(epic ) -- the second worked example the harness needs before any general engine (LIN-82: "no general engine before both chains exist"). Exports: DEBUG_HARNESS_DOC, DEBUG_VERIFY_FAILED, buildDebugChain, debugChainSteps, shouldReiterate, EXIT_ANSWER
- decision-dataset(epic ) -- the dataset bundle: `decision-trace.v1` records, exported ON REQUEST, so a decision model can be trained on ANOTHER machine (train-kit/, docs/TRAIN-ELSEWHERE.md). Exports: DatasetProject, DATASET_BUNDLE_VERSION, DATASET_FILES, SPLIT_RULE, buildDatasetBundle, datasetSchema, exportDataset, findExport, ...
- decision-features(epic ) -- the JSON structured-feature classifier: a multinomial logistic regression whose WEIGHTS ARE PLAIN JSON (`features.json`), trained elsewhere (train-kit/train_features.py) and scored here in pure JavaScript. Exports: FEATURE_VERSION, FEATURES_MODEL_LIMITS, FEATURES_MODEL_SCHEMA, createFeaturesProvider, extractFeatures, routeOf, scoreSummary, validateFeaturesModel
- decision-model-bundle(epic ) -- verifying a model bundle that was trained ELSEWHERE and comes back as a folder. Exports: VerifiedModel, MODEL_ALLOWED_FILES, MODEL_BUNDLE_VERSION, MODEL_KINDS, MODEL_SIZE_CAPS, MODEL_VERSION_PATTERN, validateModelManifest, verifyModelBundle
- decision-model-registry(epic ) -- importing a verified model bundle, replaying it against the rules baseline, and the per-project MODEL REGISTRY in the state directory (`<state dir>/models/<project key>/registry.json` and one folder of veri... Exports: ModelEntry, importModel, listModels, loadRegisteredModelProvider, modelsDir, readModelRegistry, registeredModelProvider, removeModel, ...
- decision-plugin(epic ) -- loading a decision-provider plugin from a file, once, for everyone who names one: the project setting `decision: { provider, plugin }` of architecture.yml (decision-project.mjs) and `construct traces replay... Exports: PLUGIN_EXTENSIONS, PROVIDER_NAME_PATTERN, loadDecisionPlugin, validateProviderContract
- decision-project(epic ) -- the decision provider of ONE project: read `decision: { provider, plugin, timeoutMs }` from architecture.yml, load the plugin lazily (only when it is named and is not `rules` or `off`), and answer "which op... Exports: ProjectDecision, ProjectSuggestion, clearDecisionCache, openDecision, questionSummary, suggestForQuestions
- decision-prototypes(epic ) -- the local embedding classifier: a nearest-prototype scorer whose DATA is a plain `prototypes.json` (trained or curated elsewhere, imported and verified like every model, docs/TRAIN-ELSEWHERE.md) and whose E... Exports: DEFAULT_EMBEDDER, EMBED_KIND, EMBED_VERSION, PROTOTYPES_MODEL_LIMITS, PROTOTYPES_MODEL_SCHEMA, compilePrototypesModel, createPrototypesProvider, embedText, ...
- decision-providerthe decision-provider seam: given a chooser's summary (chooser.mjs `chooserSummary`), a provider suggests ONE enabled option, a short reason and a runner-up. Exports: AskStatus, DecisionProvider, Suggestion, DEFAULT_PROVIDER, DEFAULT_TIMEOUT_MS, REASON_MAX_LENGTH, SUMMARY_LIMITS, askProvider, ...
- decision-trace-adaptersturn what the chain blocks already return into the `choices` `recordChoices` (decision-trace-store.mjs) records: Exports: choiceFromCardQuestion, choiceFromProofOptions, choiceFromQuickFix, choicesFromChain, choicesFromPlacement, choicesFromWiring, placementChooserId, wiringChooserId
- decision-trace-replay(epic ) -- the yardstick: replay recorded `decision-trace.v1` decisions through any registered decision provider and score it against what people chose, against the outcomes that vouched for a choice, and against the... Exports: DEFAULT_MIN_TRACES, renderReplay, renderTraceList, renderTraceStats, replayTraces, traceStats
- decision-trace-store(epic ) -- where `decision-trace.v1` records live: an append-only JSONL file in the per-user STATE directory, keyed by project, the same place and convention as process records (`resolveStateDir` + `projectKey` of eng... Exports: RecordResult, StoreOptions, TRACE_FILE, TRACE_STORE_LIMITS, readTraces, recordChoices, recordDecisions, recordOutcome, ...
- decision-trace(epic ) -- `decision-trace.v1`: every choice made in a chain, recorded as ONE clean classification example. Exports: DecisionTrace, OutcomeRecord, TraceChooser, TraceError, TraceOutcome, TraceProvider, TraceSuggestion, OUTCOME_FIELDS, ...
- diagnosticsExports: ConstructError, EXIT_CODES, VALID_MODULES, assertValidViolation, exitCodeForViolations, formatReport, formatViolation, makeViolation, ...
- dir-browserAllowlisted, directories-only filesystem browser. Exports: DirBrowseError, DEFAULT_LIMIT, MAX_LIMIT, detectProject, isInside, listDirectories, normalizeRoots, resolveAllowedPath
- docsPackagesMaps a source path onto Construct's own generated API reference — deterministic, no network, no LLM. Exports: PACKAGES, docsPathFor, findDocsRepoRoot, packageForRelativePath
- env(part of ) -- environment configuration as a deterministic block: `add.env` adds one variable NAME to `.env.example` with a placeholder value and a comment, never a real value. Exports: ENV_FILE, ENV_NAME_RE, ENV_QUESTION_ID, ENV_SCOPES, PUBLIC_PREFIXES, addEnv, envArgIssue, envArgProblem, ...
- exceptionsScoped, time-boxed rule exceptions (architecture.yml `exceptions:`), shared by every enforcer (architecture, separation-of-concerns, readability). Exports: exceptionApplies, expiredExceptionViolations, validateExceptionsShape
- exportArchitectureRules(extends , part of 's typed-contracts epic) -- exports a project's resolved architecture.yml layer graph (packages/core/config.mjs's DEFAULT_LAYERS/canImport model, as merged by architecture-graph.mjs's loadLayerGraph... Exports: TYPES_ELEMENT_PATTERN, boundariesDependencyPolicies, boundariesElements, exportBoundariesConfig, exportBoundariesConfigFromGraph, generateEslintFlatConfigModule
- exportCi(part of , serves 's rules composer) -- export architecture.yml's layer graph to a target project's own CI tooling. Exports: EXPORT_CI_TARGETS, dependencyCruiserBoundaryRules, notExpressibleRules, renderCiExport, renderDependencyCruiserConfig
- extractExpression(part of 's Phase 3a) -- a real, mechanical ts-morph-shaped codemod (same TypeScript-compiler-API-backed approach packages/engine/tsFileMove.mjs already adopted for `construct refactor move/rename` per -- this repo ha... Exports: extractExpression, subjectOf
- file-change-trackerIn-memory "last known content" store that turns a stream of observed file contents into per-file change records. Exports: createChangeTracker
- flows(epic ) -- the open-core primitive behind the Cockpit's Envelopes composer: a named, reusable sequence of PLAN_FLOWS steps, persisted inside the project so it travels with the repo and stays workspace-contained. Exports: FLOWS_DIR, deleteFlow, flowPath, flowToEnvelopeSteps, isValidFlowName, listFlows, loadFlow, saveFlow, ...
- frozen-detector"wrap, don't duplicate": detects a page/component/controller that reimplements markup already present in a frozen (externally-authored) source instead of being a thin import + prop-forward around it. Exports: DEFAULT_THRESHOLDS, FROZEN_RULE_BY_LAYER, buildFrozenIndex, detectFrozenViolations
- frozenFrozen presentation -- externally-authored source (a design tool's synced output, e.g. Exports: assertNotFrozen, listFrozenFiles, matchFrozen, normalizeFrozen, readFrozenGlobs, resolveFrozenGlob
- fsExports: ensureDir, isInside, rel, walk, write
- generated-dependenciesevery generator that writes a bare `import ... Exports: KNOWN_GENERATED_DEPENDENCIES, bareImportPackages, ensureGeneratedDependencies, missingGeneratedDependencies
- generatorsExports: ViewModelField, EXTRACTABLE_JSX_RULES, FOLDER_TO_LAYER, LAYER_CONSTRAINTS, LAYER_ORDER, LAYER_PREREQUISITES, TYPED_STUB_LAYERS, assertLayerPrerequisites, ...
- globConstruct's path-glob matching -- the one place `**` / `*` globs (layer patterns in architecture.yml, exception `path` globs, readability/SoC exemptions, the pages editor's page-layer check) become regular expressions. Exports: globToRegExp, matchGlob
- guard(part of epic ) -- the route guard: choose who may open a screen from a short list, and the block writes the guard and wires it to the route. Exports: ACCESS_QUESTION_ID, accessOffer, cardRoles, generateGuard, guardFiles, guardProofName, guardRouteSource, guardTouches, ...
- handler(part of epic ) -- the Next.js route handler: `app/api/<x>/route.ts` as a deterministic block, so serving the endpoint a screen calls is an option, not a manual task. Exports: HANDLER_QUESTION_ID, HANDLER_SHAPE_METHODS, generateHandler, handlerContext, handlerFiles, handlerOffer, handlerProofName, handlerTouches, ...
- harness(epic , decided on -- https://github.com/thenewurbankid-web/construct/issues/524#issuecomment-5901365512) -- a harness compiles a `harness.v1` step graph over existing Choosers into an ordinary plan, so the two worked... Exports: HarnessDoc, HarnessEdge, HarnessStep, HarnessVisit, HARNESS_ERROR_CODES, HARNESS_LIMITS, HARNESS_VERSION, compileHarness, ...
- impactPublic entry point for the "impact" capability (`@line/construct-core/impact`). Exports: analyzeImpact, impactApiManifest, impactFromChangedFiles, impactFromTicketText, proposeSeedsFromText, renderImpactMarkdown, simulateRuleChangeImpact
- import-real-filesSplit out of import.mjs: `existingRealFiles` is a deterministic, read-only collision check with no LLM or network dependency of its own, but it used to live in import.mjs alongside the LLM-fill code (callLlm et al.),... Exports: IMPORT_TODO_MARKER, existingRealFiles
- import-repairdeterministic repair of relative imports a model got almost right. Exports: repairRelativeImports
- import-reviewa read-only review of an import: does what was written still do what the approved plan and the source file said? Exports: buildReviewPrompt, reviewImport
- importImport capability — scaffolds a vertical slice for an existing, non-Construct file. Exports: analyzeFiles, analyzeRoute, autoFixViolations, buildFixPlan, buildFixPrompt, executeImportPlan, importPlan, importVertical, ...
- line-sourceA minimal, hand-rolled line reader — shared by the REPL's main loop and the standalone `import --route` wizard. Exports: makeLineSource
- lint-bufferlintBuffer: rule diagnostics for one unsaved editor buffer. Exports: lintBuffer
- llm-fillShared "ask an LLM for one file's full text, but never trust it blindly" step, used by both import.mjs's per-file fill and generators.mjs's fillGeneratedFile. Exports: OUTPUT_CONTRACT, extractCode, requestFileText, whyNotCode
- llmThe one deliberate exception to "Construct makes no LLM calls" — and even here, scoped as tight as possible: this module does nothing but run a single prompt through a chosen provider's configured executor and return... Exports: DEFAULT_LLM_TIMEOUT_SEC, DEFAULT_OLLAMA_BASE_URL, DEFAULT_OLLAMA_MODEL, MAX_OLLAMA_CONTEXT, MIN_OLLAMA_CONTEXT, PROVIDERS, callLlm, ollamaContextFor, ...
- local-rules(part of 's rule-catalog epic, "Rules 4") -- project-local rules referenced from architecture.yml's `localRules:` list, using the SAME catalog shape 's design settles on for the (not-yet-built, "Rules 2") built-in rul... Exports: loadLocalRules, runDetector, scaffoldRule, validateLocalRules, validateRuleShape
- machinewhat this machine can run. Exports: Capability, Machine, LOW_FREE_RAM_MB, MIN_NODE_MAJOR, OLLAMA_DEFAULT_URL, OLLAMA_TIMEOUT_MS, RAM_TOLERANCE, TIER_ORDER, ...
- mechanical-planthe import plan, computed without a model. Exports: classify, planMechanically, readSignals
- mutation-check`construct mutation-check`: an on-demand test-strength signal for the files a session actually touched, wrapping Stryker (Apache-2.0) instead of hand-building a mutation engine. Exports: mutationCheckBlock, mutationCheck, mutationCheckCommand, summarizeMutantResults
- nonLayerNon-layer paths: `nonLayer: [<glob>, ...]` in architecture.yml declares paths that live INSIDE a feature but OUTSIDE the layer graph -- today `features/*/tests/**` (generated and authored end-to-end tests). Exports: GENERATED_TESTS_GLOB, TESTS_GLOB, isNonLayerPath, normalizeNonLayer, readNonLayerGlobs
- openapi-spec(part of epic , relates to ) -- reading an OpenAPI file, for the two blocks that need one: the service generator (`construct create service --openapi`, service-generator.mjs) and the data source of a shaped screen (sh... Exports: OPENAPI_FILES, findEntityOperation, findOpenApiFile, loadOpenApiDocument
- parserShared source-parsing engine. Exports: Summary, EXT, classifyLayer, createSummaryCache, estimateComplexity, extractExports, extractJsdoc, layerContextFor, ...
- placement(epic ) -- the placement filter. Exports: BlockShape, PlacedLayer, PlacementAnswers, PlacementBlock, PlacementDecision, PlacementError, PlacementOffer, PlacementOpen, ...
- plan-touchesthe files a writing plan step will create, worked out from its own arguments, so a plan built in the Cockpit can declare them (the approval gate refuses any file a plan did not declare, approvalGate.mjs check 2). Exports: DERIVED_FLOWS, expectedFiles
- planthe Execution Plan contract (schemas/plan.v1.json). Exports: PLAN_ERROR_CODES, PLAN_EXECUTORS, PLAN_FLOWS, PLAN_PROOF_KINDS, PLAN_REQUIRED_FIELDS, PLAN_SHAPES, PLAN_SOURCES, PLAN_STATES, ...
- plugin-commandsInstalled-package command discovery. Exports: discoverPluginCommands, findCommandPackages
- proof-browser(part of epic ) -- the Playwright browser flows of the `detail`, `form`, `dashboard` and `wizard` shapes, as generated LOCKED specs (proof.mjs writes them, `construct test run <feature> --area generated` runs them). Exports: BrowserKit, dashboardBrowserText, detailBrowserText, formBrowserText, wizardBrowserText
- proof-dashboard(part of epic ) -- the render proof of the `dashboard` shape, as a generated node test (proof.mjs writes and locks it, `construct test proof` runs it). Exports: dashboardExpectations, dashboardProofText, summaryOfRows
- proof-screens(part of epic ) -- the render proofs of the `detail` and `form` shapes, as generated node tests (proof.mjs writes and locks them, `construct test proof` runs them). Exports: ProofKit, detailProofText, formProofText, sampleValue, shownValue, sourceFlag, typedValue
- proof-wizard(part of epic ) -- the render proof of the `wizard` shape, as a generated node test (proof.mjs writes and locks it, `construct test proof` runs it). Exports: transitionRows, wizardProofText
- proof(part of epic ) -- the proof of a shaped screen: a generated, LOCKED test that shows the screen the shape wrote behaves, as a deterministic step of the Requirement chain. Exports: PLAYWRIGHT_CONFIGS, PLAYWRIGHT_SHAPES, PROOF_KINDS, PROOF_SUMMARY_LIMITS, RENDER_PROOF_NEEDS, detectPlaywright, ensureTestRegions, generatedDir, ...
- proseDeterministic, template-based code -> plain-English translator (no LLM). Exports: describeExpr, describeImplementation, describeStatement, joinEnglishList
- provider-wrap(part of ) -- "wrap with provider" as a deterministic block, so a plan (and the CLI) can do what a person does by hand: wrap a component or page with one of the project's providers, as a minimal, previewed edit of the... Exports: MAX_PROVIDER_OPTIONS, NO_PROVIDER_OPTION, PROVIDER_QUESTION_ID, providerOffer, providersOf, wrapProvider, wrapProviderTouches
- readability-enforcerReadability/naming-convention enforcement, built on packages/core/parser.mjs. Exports: READABILITY_RULES, validateReadability
- redactionwhat must never appear in text a person, an LLM, a decision model or a trace file receives: a path and a secret. Exports: PATH_LIKE_PATTERN, SECRET_PATTERNS, hidePaths, hidePathsDeep, looksLikePath, looksLikeSecret
- refactorRefactor capability — mechanical, LLM-free structural moves within a Construct project. Exports: moveLayerFile, renameLayerFile
- registryPluggable enforcer registry for `construct validate`. Exports: Enforcer, EnforcerResult, aggregateValidation
- replInteractive front-end over the exact same functions packages/cli/construct.mjs dispatches to for a one-shot invocation — no new command logic lives here, only line-reading, tokenizing, help text, and a `cd`/`pwd` conv... Exports: HELP_TOPICS, TOPIC_ORDER, getTopLevelHelpText, startRepl
- requirement-card(epic , builds on ) -- a requirement sentence is PARSED like a compiler, not reasoned about. Exports: CardAnswer, CardCheck, CardError, CardNoun, CardOpen, CardVerb, OpenQuestion, RequirementCard, ...
- route-resolverRoute resolution — a set of small, atomic, deterministic tools for going from "a Next.js route" to "the files that actually power it," so import's analysis gets a real dependency graph instead of a hand-picked directory. Exports: DEFAULT_TRACE_EXCLUDES, findControllerFile, findReactSpaRoutesFile, findRouteEntryFile, parseReactSpaRoutes, readPathAliases, resolveImportSpecifier, resolveRoute, ...
- ruleFixesthe "Mechanical" half of a quick fix: a deterministic transform for a handful of rules, run against in-memory source (never touches disk) and returned as fixed text for the caller to diff before it lands. Exports: applyMechanicalFix, mechanicalFixAvailable
- rules-catalog(part of 's epic, "Rules 3") -- a read-only metadata catalog of every rule `construct validate` can report: id, owning module, the layer(s) it applies to, whether it only needs one file's own source (`scope: 'buffer'`... Exports: RULE_METADATA, catalogRules, listRules
- scaffold`construct init` lays down a minimal, runnable project shell for the chosen framework (package.json, tsconfig, bundler config, .gitignore, ...) next to the architecture folders, so a developer can `npm install && npm... Exports: SCAFFOLD_FRAMEWORKS, scaffoldProject
- service-generatorTicket 7.5 — Configurable Service Generator (OpenAPI -> RTKQ, services/). Exports: ensureClient, generateServiceFromSpec, parseOperations, renderClient, renderEndpoints, resolveSchemaEmit, zodDeclared
- shape-dashboard(part of epic ) -- the `dashboard` shape: a titled overview screen that COMPOSES components into a row of tiles and a few panels, all fed by props from ONE typed summary. Exports: DASHBOARD_SHAPE, DASHBOARD_WORDS, MAX_PANELS, MAX_TILES, dashboardBaseOf, dashboardNames, dashboardTypes, layoutOf, ...
- shape-detail(part of epic ) -- the `detail` shape: a read-only screen bound to ONE item. Exports: DETAIL_SHAPE, detailNames, detailTypes
- shape-form(part of epic ) -- the `form` shape: a screen with one typed input per field, validation in a pure domain unit, and a submit service. Exports: FORM_SHAPE, formNames, formTypes, inputFieldsOf
- shape-kit(part of epic ) -- the small pieces every screen shape's templates share (shapes.mjs, shape-detail.mjs, shape-form.mjs): how a name is worded, how a field is typed and shown, and how a template is assembled from lines. Exports: FIELD_TYPES, TYPED_CONTRACTS_SPECIFIER, cap, importLine, kebab, labelOf, lines, lowerFirst, ...
- shape-source(part of epic , relates to ) -- where a shaped screen reads its data from, as one closed question with three stable answers. Exports: SOURCE_QUESTION_ID, SOURCES, UNSPECIFIED_SOURCE, operationOf, readSource, sourceOffer, storeNames
- shape-states(part of epic , builds on the typed state unions of ) -- what a screen shows while it loads, when there is nothing to show and when it fails, as ONE closed question with four stable answers. Exports: DEFAULT_STATES, STATES_IDS, STATES_QUESTION_ID, STATES_SHAPES, STATES_TABLE, emptyText, loadingText, proofViews, ...
- shape-wizard(part of epic ) -- the `wizard` shape: a multi-step flow backed by a real state machine in the workflow layer. Exports: DEFAULT_STEP_OPTION, DEFAULT_STEPS, MAX_STEPS, MIN_STEPS, STEP_TABLE, STEPS_QUESTION_ID, WIZARD_EVENTS, WIZARD_SHAPE, ...
- shapes(part of epic ) -- screen shapes: a named recipe whose typed templates fill the units of a feature with real, rule-conforming code instead of empty stubs. Exports: DEFAULT_FIELDS, FORM_VERBS, MAX_FIELDS, SHAPES, assertShapeLayers, endpointOf, fieldsFromProperties, generateShapeLayer, ...
- slot-projectionLIN-174 -- projecting a business-logic slot's body (stored in the map by unit-map.mjs's setMemberSlot/getMemberSlot, per the owner's "SLOT STORAGE -- DECIDED" note) into the generated file that hosts it. Exports: findValueImportsInSlot, projectSlotIntoSource, renderSlotRegion, slotMarkerLines, slotRegionMatches
- soc-enforcerModule 2 — Separation of Concerns Enforcer (Epics 2.1 and 2.2). Exports: LAYER_FOLDERS, countPrimaryExports, isPublicPath, parseIndexExports, validateSeparationOfConcerns
- store(part of epic ) -- the client-state store: shared state a screen needs (a selection, a cart, a draft) is DECLARED and TRACKED, not a bag of flags. Exports: STATE_OPTIONS, STATE_QUESTION_ID, STORE_ACTIONS, generateStore, referenceReduce, stateNounsOf, stateOffer, storeContext, ...
- story(slice 15 of epic ) -- the story.md format and its mechanical block: parse `features/<name>/story.md`, write only the tool-owned snapshot between markers, assign stable acceptance ids, compare mechanically against cod... Exports: STORY_GLOB, assignAcceptanceIds, buildStoryCitePrompt, buildStoryCiteWillSend, compareStory, computeSourceHash, ensureStoryNonLayer, parseStory, ...
- summarizeSummarization output for humans and AI agents, built on packages/core/parser.mjs. Exports: describeExport, extractDeclarationSource, summarizeCompact, summarizeProject, summarizeProse, summarizeSince
- text-diffPure before/after text diff -> a renderer-agnostic view model. Exports: buildDiffView
- timingCheap wall-clock timing helpers shared by every generation/scaffolding command's console output -- process.hrtime.bigint() deltas, no new dependency. Exports: elapsedSeconds, formatDuration, startTimer
- type-checkTYPE-001: a real TypeScript type-check as an opt-in `construct validate` rule. Exports: TYPE_CHECK_TIMEOUT_MS, parseTscOutput, resolveProjectTsc, resolveReference, runTypeCheck, runTypeCheckDetailed, solutionReferences
- unit-mapExports: EDGE_KINDS, addDependency, composedDependencyShape, dependenciesOf, dependentsOf, generateLayerWithUnit, getMemberSlot, loadUnitMap, ...
- usageThe one-shot CLI's top-level usage text (printed by packages/cli/construct.mjs when invoked with no command, or an unrecognized one). Exports: USAGE
- validate-architecture-configA single entry point that validates a proposed architecture.yml (parsed object, not yet written to disk) against every shape check loadConfig() applies piecemeal (normalizeRules, normalizeLayers, validateExceptionsSha... Exports: validateArchitectureConfig
- validatePublic entry point for the "validate" capability (`@line/construct-core/validate`). Exports: DEFAULT_ENFORCERS, aggregateValidation, ConstructError, EXIT_CODES, exitCodeForViolations, formatReport, lintBuffer, validateArchitecture
- verify(part of ) -- type-check and build as read-only plan steps whose result is CLASSIFIED, never a raw log. Exports: TYPE_ERROR_KINDS, VERIFY_LIMITS, VERIFY_OPTIONS, VERIFY_QUESTION_ID, VERIFY_TIMEOUTS, buildScriptOf, classifyBuildOutput, classifyTypeErrors, ...
- wiringthe two by-hand steps after a generated screen, as deterministic blocks a plan can carry: point the project's route entry at the new controller (`create.route`), and add the one dependency the typed units import (`add... Exports: CONSTRUCT_CORE_PACKAGE, DEPENDENCY_QUESTION_ID, RESERVED_ROUTES, ROUTE_QUESTION_ID, addDependency, constructCoreRange, dependencyOffer, dependencyTouches, ...