CLAUDE.md@deno/core/dsl/operation/oas · git:20260610.b0535dc · 2026-06-10 · sha256 53cb1ea14b976386
CLAUDE.md@deno/core/dsl/operation/oas git:20260610.b0535dcA
Immutable. This exact content is served forever at /api/v1/blob/53cb1ea14b976386.
# core/dsl/operation/oas — directory guide
This directory contains the OAS-operation half of the projection
machinery. Files:
- `toOasOperationProjectionBase.ts` — factory. Takes a
`base: LangSnippetConstructor` (pre-bound by the lang veneer — e.g.
`toOasOperationProjectionBase` from `@skmtc/lang-typescript`) and
builds a class on it carrying the projection machinery (`settings`,
`operation`, `generatorKey` injection, `insertOperation` /
`insertModel` / `insertNormalizedModel`) plus the statics
`toIdentifier` / `toExportPath` / `toEnrichments` / `isSupported` /
`id` / `type` / the inherited `lang`. Defines NO register — that's
the veneer's. The constructor reads `args.settings.variant` and
threads it into the `toOasOperationGeneratorKey` call so the
resulting Definition's `generatorKey` carries the variant.
- `toOasOperationEntry.ts` — pipeline-side factory. Wraps user's
`isSupported` / `transform` etc. in a config object. The
`isSupported` wrapper does its own enrichment-path walk via
`lodash-es/get(..., \`enrichments.${id}.${path}.${method}.${variant}\`)`
before calling the user's predicate.
- `OasOperationDriver.ts` — the insertion lifecycle (compose
`ContentSettings`, look up via `findDefinition`, integrity-check
via `affirmDefinition`, register the Definition, register the
import). Variant-related entry points:
- Constructor takes a `variant: string` arg and stores it on the
instance.
- `assertPeerVariantExists` runs before `toOperationContentSettings`
— throws if the caller asked for a non-`'main'` variant the peer
doesn't declare.
- `affirmDefinition` builds the call's `generatorKey` with variant
in the 4th segment; the cache key uniqueness invariant is
enforced here.
- `types.ts` — arg shapes. Every `To*Args` and `Transform*Args`
carries `variant: string`.
**Variants-aware vs unaware:**
- *Unaware*: destructure `variant` in `toExportPath` (since the body
calls `this.toIdentifier({…, variant})`), ignore it in
`toIdentifier`. Engine still dispatches with `variant: 'main'` for
every operation.
- *Aware*: `toIdentifier` folds variant into the name via
`withVariant(base, variant)` from `@/helpers/withVariant.ts`.
`toExportPath` inherits the suffix through the
`this.toIdentifier({…, variant})` call.
Tests pinning variant invariants: `OasOperationDriver.test.ts` →
"Variant validation"; cross-package tests in `core/context/`.
Concept doc: `docs/concepts/variants.md`. Skill: `docs/skills/skmtc-generator/SKILL.md`.
---
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### May 6, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #19181 | 9:27 PM | 🔵 | Generator registration architecture separates artifact definitions from import statements | ~461 |
### May 11, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #20459 | 7:04 PM | 🔄 | OasOperationDriver simplified using Identifier.toImport pattern | ~540 |
| #20457 | " | 🔄 | Completed task 3 updating driver implementations | ~373 |
| #20430 | 7:01 PM | ⚖️ | Add toImport method to Identifier class for consistent ImportNameArg construction | ~494 |
| #20428 | 7:00 PM | 🔵 | OasOperationDriver automatically registers imports with isType flag based on identifier entity type | ~537 |
| #20419 | 6:59 PM | 🔵 | isType flag implementation across core DSL import system | ~592 |
### May 12, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #20928 | 2:20 PM | 🔵 | Critical enrichment routing path discrepancy discovered in documentation | ~940 |
| #20654 | 8:47 AM | 🔵 | SKMTC driver pattern for projection lifecycle and definition caching | ~680 |
</claude-mem-context>