/** * behavior-contracts — **hand-author 面**(`@behavior` / `@leaf` 宣言のためのエントリ)。 * * consumer が手で書くのは behavior 宣言だけであり、その宣言に必要な記号だけをここに置く * (native-ts-authoring.md §6)。本体は **ネイティブ TS**(`+` / `?:` / `&&` / `if` / `.map` / * `?.` / テンプレートリテラル)で書き、SCP→IR compile は AST リーダー(`bc generate --from`)が * **ソースを読んで** 行う(宣言モジュールは実行されない)。したがって authoring 面に式ビルダ・ * recorder・IR 型は存在しない。 * * 公開するのは 7 記号だけ: * - `@behavior` / `@leaf` — root / leaf マーカー(static メソッドに付ける・runtime no-op) * - `Int` / `Float` — 数値 Input Port の精度宣言(裸の `number` は型抽出で fail-closed) * - `WireValue` — 不透明 wire 値の Input Port 宣言(`value` / `WireValue[]` = `{arr:"value"}`・入力専用) * - `opt` — optional-chain source(`opt(x).f` = refOpt) * - `refsConnection` — refs fanout(dedupe + implicit-source 剥がし) * (加えて compile 失敗型 `AuthoringFailure` / `AuthoringFailureCode`。) * * **実行時 API はこのエントリには無い**: `runBehavior` / `runPlan` / `loadCompiledIR` / * `codegenPrimitives` / spec バージョン等は **`behavior-contracts/runtime`**(`./runtime.ts`)が * 公開する。それらを import するのは **生成コードと conformance runner** であって、宣言を書く人 * ではない。codegen(`generateModule` / emitter 群)は build-time 専用の internal で、唯一の入口は * `bc` CLI。 */ export { behavior, leaf, opt, refsConnection, AuthoringFailure } from "./authoring.js"; export type { Int, Float, WireValue, AuthoringFailureCode } from "./authoring.js"; //# sourceMappingURL=index.d.ts.map