behavior-contracts 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +8 -2
  2. package/dist/authoring.d.ts +202 -0
  3. package/dist/authoring.d.ts.map +1 -0
  4. package/dist/authoring.js +787 -0
  5. package/dist/authoring.js.map +1 -0
  6. package/dist/behavior.d.ts +201 -0
  7. package/dist/behavior.d.ts.map +1 -0
  8. package/dist/behavior.js +373 -0
  9. package/dist/behavior.js.map +1 -0
  10. package/dist/builder.d.ts +154 -0
  11. package/dist/builder.d.ts.map +1 -0
  12. package/dist/builder.js +574 -0
  13. package/dist/builder.js.map +1 -0
  14. package/dist/canonical.d.ts +1 -1
  15. package/dist/canonical.d.ts.map +1 -1
  16. package/dist/canonical.js +13 -1
  17. package/dist/canonical.js.map +1 -1
  18. package/dist/codec.d.ts.map +1 -1
  19. package/dist/codec.js +7 -1
  20. package/dist/codec.js.map +1 -1
  21. package/dist/expr-eval.d.ts +9 -1
  22. package/dist/expr-eval.d.ts.map +1 -1
  23. package/dist/expr-eval.js +21 -3
  24. package/dist/expr-eval.js.map +1 -1
  25. package/dist/generator/core.d.ts +89 -0
  26. package/dist/generator/core.d.ts.map +1 -0
  27. package/dist/generator/core.js +124 -0
  28. package/dist/generator/core.js.map +1 -0
  29. package/dist/generator/emit-go.d.ts +19 -0
  30. package/dist/generator/emit-go.d.ts.map +1 -0
  31. package/dist/generator/emit-go.js +79 -0
  32. package/dist/generator/emit-go.js.map +1 -0
  33. package/dist/generator/emit-php.d.ts +20 -0
  34. package/dist/generator/emit-php.d.ts.map +1 -0
  35. package/dist/generator/emit-php.js +76 -0
  36. package/dist/generator/emit-php.js.map +1 -0
  37. package/dist/generator/emit-python.d.ts +10 -0
  38. package/dist/generator/emit-python.d.ts.map +1 -0
  39. package/dist/generator/emit-python.js +75 -0
  40. package/dist/generator/emit-python.js.map +1 -0
  41. package/dist/generator/emit-rust.d.ts +25 -0
  42. package/dist/generator/emit-rust.d.ts.map +1 -0
  43. package/dist/generator/emit-rust.js +125 -0
  44. package/dist/generator/emit-rust.js.map +1 -0
  45. package/dist/generator/emit-typescript.d.ts +11 -0
  46. package/dist/generator/emit-typescript.d.ts.map +1 -0
  47. package/dist/generator/emit-typescript.js +68 -0
  48. package/dist/generator/emit-typescript.js.map +1 -0
  49. package/dist/generator/fingerprint.d.ts +14 -0
  50. package/dist/generator/fingerprint.d.ts.map +1 -0
  51. package/dist/generator/fingerprint.js +74 -0
  52. package/dist/generator/fingerprint.js.map +1 -0
  53. package/dist/generator/index.d.ts +9 -0
  54. package/dist/generator/index.d.ts.map +1 -0
  55. package/dist/generator/index.js +25 -0
  56. package/dist/generator/index.js.map +1 -0
  57. package/dist/generator/literal.d.ts +8 -0
  58. package/dist/generator/literal.d.ts.map +1 -0
  59. package/dist/generator/literal.js +191 -0
  60. package/dist/generator/literal.js.map +1 -0
  61. package/dist/guard.d.ts +18 -0
  62. package/dist/guard.d.ts.map +1 -1
  63. package/dist/guard.js +130 -0
  64. package/dist/guard.js.map +1 -1
  65. package/dist/index.d.ts +17 -6
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +18 -5
  68. package/dist/index.js.map +1 -1
  69. package/dist/plan.d.ts +36 -0
  70. package/dist/plan.d.ts.map +1 -1
  71. package/dist/plan.js +152 -14
  72. package/dist/plan.js.map +1 -1
  73. package/package.json +6 -3
package/dist/canonical.js CHANGED
@@ -1,4 +1,4 @@
1
- import { cmpCodePoints } from "./expr-eval.js";
1
+ import { cmpCodePoints, FORBIDDEN_OBJECT_KEY } from "./expr-eval.js";
2
2
  export class CanonicalFailure extends Error {
3
3
  code;
4
4
  constructor(code, message) {
@@ -124,6 +124,7 @@ function formatScientific(digits, decpt) {
124
124
  */
125
125
  export function canonicalValue(v) {
126
126
  if (isPlainObject(v)) {
127
+ guardKeys(Object.keys(v));
127
128
  const keys = Object.keys(v).sort(cmpCodePoints); // トップレベルのみソート(code-point 順)
128
129
  const parts = keys.map((k) => `${jsonString(k)}:${encodeNested(v[k])}`);
129
130
  return `{${parts.join(",")}}`;
@@ -134,6 +135,7 @@ export function canonicalValue(v) {
134
135
  /** canonicalJson — fingerprint 用。全 object 階層のキーを昇順ソート(配列は順序保持)。 */
135
136
  export function canonicalJson(v) {
136
137
  if (isPlainObject(v)) {
138
+ guardKeys(Object.keys(v));
137
139
  const keys = Object.keys(v).sort(cmpCodePoints);
138
140
  const parts = keys.map((k) => `${jsonString(k)}:${canonicalJson(v[k])}`);
139
141
  return `{${parts.join(",")}}`;
@@ -145,6 +147,7 @@ export function canonicalJson(v) {
145
147
  // ── 内部: ネスト値の直列化(canonicalValue 用。ネスト object は挿入順)──────────────
146
148
  function encodeNested(v) {
147
149
  if (isPlainObject(v)) {
150
+ guardKeys(Object.keys(v));
148
151
  const parts = Object.keys(v).map((k) => `${jsonString(k)}:${encodeNested(v[k])}`);
149
152
  return `{${parts.join(",")}}`;
150
153
  }
@@ -179,4 +182,13 @@ function jsonString(s) {
179
182
  function isPlainObject(v) {
180
183
  return typeof v === "object" && v !== null && !Array.isArray(v);
181
184
  }
185
+ /**
186
+ * guardKeys — obj 値の own key に `"__proto__"` があれば fail-closed(FORBIDDEN_KEY)。
187
+ * canonicalValue/canonicalJson/encodeNested の全経路で適用し、expression の obj ノードと
188
+ * 同一の禁止キー規律を持つ(expression-ir.md §2.3/§8)。
189
+ */
190
+ function guardKeys(keys) {
191
+ if (keys.includes(FORBIDDEN_OBJECT_KEY))
192
+ fail("FORBIDDEN_KEY", `object key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
193
+ }
182
194
  //# sourceMappingURL=canonical.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../src/canonical.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CAqB7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CActD"}
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,KAAK,CA2B7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CActD"}
package/dist/codec.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { ExprFailure, FORBIDDEN_OBJECT_KEY } from "./expr-eval.js";
1
2
  /**
2
3
  * decodeValue — golden vector の JSON 値表現を runtime {@link Value} へ復元する。
3
4
  * expression-ir.md §2.3 の逆写像:
@@ -30,8 +31,13 @@ export function decodeValue(x) {
30
31
  return o.inf < 0 ? -Infinity : Infinity;
31
32
  }
32
33
  const out = {};
33
- for (const k of keys)
34
+ for (const k of keys) {
35
+ // fail-closed: own key "__proto__" は言語間で発散する(TS では prototype セッタで
36
+ // 消え、他言語は保持)。全経路で拒否する(expression-ir.md §2.3/§8)。
37
+ if (k === FORBIDDEN_OBJECT_KEY)
38
+ throw new ExprFailure("FORBIDDEN_KEY", `object key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
34
39
  out[k] = decodeValue(o[k]);
40
+ }
35
41
  return out;
36
42
  }
37
43
  throw new Error(`cannot decode value: ${String(x)}`);
package/dist/codec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codec.js","sourceRoot":"","sources":["../src/codec.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,20 @@ export type Value = bigint | number | string | boolean | null | Value[] | {
17
17
  [k: string]: Value;
18
18
  };
19
19
  export type Scope = Record<string, Value>;
20
- export type FailureCode = "INT_OVERFLOW" | "NAN_OR_INF" | "MOD_ZERO" | "PRECISION_LOSS" | "TYPE_MISMATCH" | "NULL_REF" | "MISSING_PROP" | "UNKNOWN_BINDING" | "UNKNOWN_OP" | "INVALID_NODE" | "INVALID_LITERAL";
20
+ export type FailureCode = "INT_OVERFLOW" | "NAN_OR_INF" | "MOD_ZERO" | "PRECISION_LOSS" | "TYPE_MISMATCH" | "NULL_REF" | "MISSING_PROP" | "UNKNOWN_BINDING" | "UNKNOWN_OP" | "INVALID_NODE" | "INVALID_LITERAL" | "FORBIDDEN_KEY";
21
21
  export declare class ExprFailure extends Error {
22
22
  code: FailureCode;
23
23
  constructor(code: FailureCode, message: string);
24
24
  }
25
25
  export declare function cmpCodePoints(a: string, b: string): -1 | 0 | 1;
26
+ /**
27
+ * 禁止キー(expression-ir.md §2.3/§8)。IR/JSON 由来の任意文字列キーからオブジェクトを
28
+ * 構築するすべての経路で own key `"__proto__"` を fail-closed で拒否する。JS では
29
+ * `out["__proto__"] = v` が prototype セッタを叩きキーが値として保持されない(TS では消える)
30
+ * 一方、Python/Rust/Go は素直に保持するため、同一 IR が言語間で発散する(prototype
31
+ * pollution の温床でもある)。全言語で `FORBIDDEN_KEY` に倒して一致させる。
32
+ */
33
+ export declare const FORBIDDEN_OBJECT_KEY = "__proto__";
26
34
  export declare function evaluate(node: unknown, scope?: Scope): Value;
27
35
  export declare function encodeValue(v: Value): unknown;
28
36
  //# sourceMappingURL=expr-eval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"expr-eval.d.ts","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,MAAM,MAAM,KAAK,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,KAAK,EAAE,GACP;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAG1C,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,iBAAiB,CAAC;AAEtB,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,WAAW,CAAC;gBACN,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;CAK/C;AAgCD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAa9D;AAsBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAE,KAAU,GAAG,KAAK,CAkLhE;AAoCD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAa7C"}
1
+ {"version":3,"file":"expr-eval.d.ts","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,MAAM,MAAM,KAAK,GACb,MAAM,GACN,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,KAAK,EAAE,GACP;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAG1C,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,YAAY,GACZ,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,UAAU,GACV,cAAc,GACd,iBAAiB,GACjB,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,eAAe,CAAC;AAEpB,qBAAa,WAAY,SAAQ,KAAK;IACpC,IAAI,EAAE,WAAW,CAAC;gBACN,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM;CAK/C;AAgCD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAa9D;AAqBD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,cAAc,CAAC;AAGhD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,GAAE,KAAU,GAAG,KAAK,CA6LhE;AAoCD,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAa7C"}
package/dist/expr-eval.js CHANGED
@@ -87,6 +87,14 @@ function requireBool(v, ctx) {
87
87
  function isPlainObject(v) {
88
88
  return typeof v === "object" && v !== null && !Array.isArray(v);
89
89
  }
90
+ /**
91
+ * 禁止キー(expression-ir.md §2.3/§8)。IR/JSON 由来の任意文字列キーからオブジェクトを
92
+ * 構築するすべての経路で own key `"__proto__"` を fail-closed で拒否する。JS では
93
+ * `out["__proto__"] = v` が prototype セッタを叩きキーが値として保持されない(TS では消える)
94
+ * 一方、Python/Rust/Go は素直に保持するため、同一 IR が言語間で発散する(prototype
95
+ * pollution の温床でもある)。全言語で `FORBIDDEN_KEY` に倒して一致させる。
96
+ */
97
+ export const FORBIDDEN_OBJECT_KEY = "__proto__";
90
98
  // ── 評価器本体 ───────────────────────────────────────────────────────────────
91
99
  export function evaluate(node, scope = {}) {
92
100
  // リテラル
@@ -161,8 +169,14 @@ export function evaluate(node, scope = {}) {
161
169
  if (!isPlainObject(arg))
162
170
  fail("INVALID_NODE", "{obj: ...} expects an object");
163
171
  const out = {};
164
- for (const [k, v] of Object.entries(arg))
165
- out[k] = evaluate(v, scope);
172
+ // own key の走査は Object.keys(JSON.parse は "__proto__" を own enumerable として作る)。
173
+ for (const k of Object.keys(arg)) {
174
+ if (k === FORBIDDEN_OBJECT_KEY)
175
+ fail("FORBIDDEN_KEY", `obj key "${FORBIDDEN_OBJECT_KEY}" is forbidden (fail-closed)`);
176
+ // 代入も明示 own property に(prototype セッタを踏まないよう defineProperty ではなく
177
+ // 事前 reject で担保。ここに来る時点で k は __proto__ ではない)。
178
+ out[k] = evaluate(arg[k], scope);
179
+ }
166
180
  return out;
167
181
  }
168
182
  case "arr":
@@ -209,7 +223,11 @@ export function evaluate(node, scope = {}) {
209
223
  }
210
224
  // ── 文字列 ──
211
225
  case "concat": {
212
- const parts = argArray(op, arg).map((e) => evaluate(e, scope));
226
+ const rawParts = argArray(op, arg);
227
+ // n-ary(min 2 args)。arity<2 は不正 IR(expression-ir.md §2.1/§3/§6)。
228
+ if (rawParts.length < 2)
229
+ fail("INVALID_NODE", `concat expects >= 2 args, got ${rawParts.length}`);
230
+ const parts = rawParts.map((e) => evaluate(e, scope));
213
231
  for (const p of parts)
214
232
  if (typeof p !== "string")
215
233
  fail("TYPE_MISMATCH", `concat: string のみ(got ${typeName(p)}。数値の暗黙 toString は存在しない)`);
@@ -1 +1 @@
1
- {"version":3,"file":"expr-eval.js","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expr-eval.js","sourceRoot":"","sources":["../src/expr-eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import type { ComponentGraphIR } from "../behavior.js";
2
+ export type GeneratorFailureCode = "INPUT_NOT_PORTABLE_IR" | "UNSUPPORTED_IR_VERSION" | "UNSUPPORTED_EXPR_VERSION" | "EMPTY_IR" | "DUPLICATE_COMPONENT" | "UNKNOWN_LANGUAGE";
3
+ export declare class GeneratorFailure extends Error {
4
+ code: GeneratorFailureCode;
5
+ constructor(code: GeneratorFailureCode, message: string);
6
+ }
7
+ /** 生成時に emitter へ渡される言語中立コンテキスト(検証済み)。 */
8
+ export interface EmitContext {
9
+ /** 検証済み可搬 IR(構造は入力のまま — キー順保存)。 */
10
+ ir: ComponentGraphIR;
11
+ /** source IR の fingerprint(`"fnv1a64:<16hex>"`)。 */
12
+ fingerprint: string;
13
+ /** 生成時 SPEC_VERSIONS のうち実行経路が依存する版(焼き込み対象)。 */
14
+ specVersions: {
15
+ behavior: number;
16
+ expression: number;
17
+ plan: number;
18
+ };
19
+ /** IR 内の component 名(宣言順)。 */
20
+ componentNames: string[];
21
+ /** runtime-core を import するモジュール指定子(emitter の既定を上書き可)。 */
22
+ runtimeImport: string;
23
+ }
24
+ /** 言語 emitter プラグイン。DSL 非依存の EmitContext からモジュール全文を emit する。 */
25
+ export interface EmitterPlugin {
26
+ /** 言語識別子(`generateModule` の `language`)。 */
27
+ language: string;
28
+ /** 生成ファイルの拡張子(`.ts` / `.py` …)。 */
29
+ fileExtension: string;
30
+ /** runtime-core の既定 import 指定子(`"behavior-contracts"` / `"behavior_contracts"`)。 */
31
+ defaultRuntimeImport: string;
32
+ /**
33
+ * 推奨ファイル名の上書き(省略時は `behaviors.generated` + fileExtension)。
34
+ * Rust のように `.` 区切りがモジュール名として使えない言語が指定する。
35
+ */
36
+ filenameHint?: string;
37
+ /** モジュール全文を emit(決定的であること)。 */
38
+ emit(ctx: EmitContext): string;
39
+ }
40
+ /**
41
+ * registerEmitter — 言語 emitter を登録する(consumer / 後続 SP の言語追加 seam)。
42
+ * 同名言語の再登録は上書き(テスト・差し替え用)。
43
+ */
44
+ export declare function registerEmitter(plugin: EmitterPlugin): void;
45
+ /** 登録済み言語の一覧(宣言順不定 — 表示用途はソートして使う)。 */
46
+ export declare function registeredLanguages(): string[];
47
+ export interface GenerateOptions {
48
+ /** 生成先言語(登録済み emitter の識別子。SP1: "typescript" | "python")。 */
49
+ language: string;
50
+ /**
51
+ * runtime-core を import するモジュール指定子。省略時は emitter の既定
52
+ * (npm/PyPI パッケージ名)。テスト・vendored 配置ではソースへの相対パス等を渡す。
53
+ * 生成コードの決定性は指定子込み(同一 IR + 同一オプション → byte-identical)。
54
+ */
55
+ runtimeImport?: string;
56
+ }
57
+ export interface GeneratedModule {
58
+ /** 生成言語。 */
59
+ language: string;
60
+ /** モジュール全文(実行可能なソースコード)。 */
61
+ code: string;
62
+ /** source IR の fingerprint(生成コードにも定数として焼き込み済み)。 */
63
+ fingerprint: string;
64
+ /** 焼き込んだ spec versions。 */
65
+ specVersions: {
66
+ behavior: number;
67
+ expression: number;
68
+ plan: number;
69
+ };
70
+ /** bind で公開される component 名(IR 宣言順)。 */
71
+ componentNames: string[];
72
+ /** 推奨ファイル名(`behaviors.generated` + 言語拡張子)。 */
73
+ filenameHint: string;
74
+ }
75
+ /**
76
+ * generateModule — 可搬 component-graph IR から言語ネイティブの実行モジュールを生成する。
77
+ *
78
+ * 生成物の形(全言語共通の契約):
79
+ * - IR がネイティブリテラル定数として埋め込まれる(実行時 JSON パースなし)。
80
+ * - `EXPECTED_SPEC_VERSIONS` / `IR_FINGERPRINT` 定数 + ロード時 fail-closed 検査。
81
+ * - `bind(handlers)`(TS はさらに `bindAsync`): handler 注入を受けて
82
+ * `{component名: (input) => runBehavior(IR, handlers, input, name)}` を返す薄い束ね。
83
+ * **handler は常に境界注入**であり、生成対象にならない(C4)。
84
+ *
85
+ * @throws {GeneratorFailure} 入力が可搬 IR でない / 版超過 / 未知言語(fail-closed)。
86
+ * @throws {PortabilityError} IR が Portability Guard に違反するとき。
87
+ */
88
+ export declare function generateModule(ir: unknown, options: GenerateOptions): GeneratedModule;
89
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/generator/core.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,MAAM,MAAM,oBAAoB,GAC5B,uBAAuB,GACvB,wBAAwB,GACxB,0BAA0B,GAC1B,UAAU,GACV,qBAAqB,GACrB,kBAAkB,CAAC;AAEvB,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,IAAI,EAAE,oBAAoB,CAAC;gBACf,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM;CAKxD;AAOD,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,EAAE,EAAE,gBAAgB,CAAC;IACrB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,8BAA8B;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AA8CD,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,YAAY,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,eAAe,CA+BrF"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * core.ts — SCP Runtime Code Generation Layer: 共通 Generator 本体(bc#13 SP1)。
3
+ *
4
+ * docs/scp-ir-architecture.md §7.2–§7.4 の規範実装:
5
+ * - **入力は可搬 IR のみ**(§5 の component-graph ドキュメント。ソース/内部 IR は拒否 —
6
+ * concept.md §5.6 Generator Interface)。生成時に envelope(irVersion / exprVersion)と
7
+ * assertPortableComponentGraph を fail-closed で検査する。
8
+ * - **DSL 非依存**: components[] / Expression IR / plan という DSL 不変部(§7.4)だけを
9
+ * 消費する。DSL 固有部(catalog 実装・handler)は生成コードに載らず、実行時に
10
+ * `IR + {effects,config,hooks}` 境界で注入される(concept.md §4.4)。
11
+ * - **実行ロジックを再実装しない**: 生成コードは事前構築済みネイティブリテラルを既存の
12
+ * runtime-core API(runBehavior / runBehaviorAsync / run_behavior)へ渡す薄い束ね
13
+ * (runtime≈0 追加。graphddb #208 の AOT パターンの一般化)。
14
+ * - **決定的**: 同一 IR ドキュメント → byte-identical な生成コード(タイムスタンプ・
15
+ * 絶対パス等の非決定要素を埋め込まない)。
16
+ * - **spec-version / fingerprint 焼き込み**: 生成時の SPEC_VERSIONS(behavior /
17
+ * expression / plan)と source IR の fingerprint を定数として焼き込み、生成モジュールは
18
+ * ロード時に runtime の定数と照合して skew を LOUD reject する(#208 の
19
+ * prepared-artifact 規律)。
20
+ *
21
+ * 経路の恒久併存(§7.2): この codegen 経路(エンドポイント 3)は動的 JSON 経路
22
+ * (エンドポイント 2)を置き換えない。両経路は同一 IR に対して観測等価であることが
23
+ * conformance ゲート(§7.3 — ts/test/codegen-conformance.test.ts)で強制される。
24
+ */
25
+ import { SPEC_VERSIONS } from "../index.js";
26
+ import { assertPortableComponentGraph } from "../guard.js";
27
+ import { fingerprintComponentGraph } from "./fingerprint.js";
28
+ export class GeneratorFailure extends Error {
29
+ code;
30
+ constructor(code, message) {
31
+ super(message);
32
+ this.code = code;
33
+ this.name = "GeneratorFailure";
34
+ }
35
+ }
36
+ function gfail(code, message) {
37
+ throw new GeneratorFailure(code, message);
38
+ }
39
+ const registry = new Map();
40
+ /**
41
+ * registerEmitter — 言語 emitter を登録する(consumer / 後続 SP の言語追加 seam)。
42
+ * 同名言語の再登録は上書き(テスト・差し替え用)。
43
+ */
44
+ export function registerEmitter(plugin) {
45
+ registry.set(plugin.language, plugin);
46
+ }
47
+ /** 登録済み言語の一覧(宣言順不定 — 表示用途はソートして使う)。 */
48
+ export function registeredLanguages() {
49
+ return [...registry.keys()].sort();
50
+ }
51
+ // ── 入力検証(生成時 fail-closed)────────────────────────────────────────────
52
+ /**
53
+ * 可搬 IR envelope 検査 + Portability Guard。**可搬 component-graph IR 以外は LOUD reject**
54
+ * (graphddb operations.json のような consumer bundle・内部 IR・任意 JSON を黙って
55
+ * 受け付けない)。
56
+ */
57
+ function validateGeneratorInput(ir) {
58
+ if (ir === null || typeof ir !== "object" || Array.isArray(ir))
59
+ gfail("INPUT_NOT_PORTABLE_IR", "generator input must be a portable component-graph IR document ({irVersion, exprVersion, components[]} — scp-ir-architecture.md §5); got a non-object (fail-closed)");
60
+ const doc = ir;
61
+ if (doc.irVersion === undefined || doc.components === undefined)
62
+ gfail("INPUT_NOT_PORTABLE_IR", "generator input must be a portable component-graph IR document ({irVersion, exprVersion, components[]}); the codegen path consumes portable IR ONLY — never source/internal IR or consumer bundles (fail-closed)");
63
+ if (doc.irVersion !== 1)
64
+ gfail("UNSUPPORTED_IR_VERSION", `irVersion ${String(doc.irVersion)} is not supported (supported: 1) (fail-closed)`);
65
+ const exprVersion = doc.exprVersion;
66
+ if (typeof exprVersion !== "number" || !Number.isInteger(exprVersion) || exprVersion < 1)
67
+ gfail("INPUT_NOT_PORTABLE_IR", `exprVersion must be a positive integer, got ${String(exprVersion)} (fail-closed)`);
68
+ if (exprVersion > SPEC_VERSIONS.expression)
69
+ gfail("UNSUPPORTED_EXPR_VERSION", `exprVersion ${exprVersion} exceeds supported expression version ${SPEC_VERSIONS.expression} (fail-closed)`);
70
+ // Portability Guard(P0-2): 関数残存・非文字列 component 参照・未知 operator を静的拒否。
71
+ assertPortableComponentGraph(ir);
72
+ const components = doc.components;
73
+ if (components.length === 0)
74
+ gfail("EMPTY_IR", "IR has no components — nothing to generate (fail-closed)");
75
+ const seen = new Set();
76
+ for (const c of components) {
77
+ if (seen.has(c.name))
78
+ gfail("DUPLICATE_COMPONENT", `component name '${c.name}' appears more than once — bind() keys must be unique (fail-closed)`);
79
+ seen.add(c.name);
80
+ }
81
+ return ir;
82
+ }
83
+ /**
84
+ * generateModule — 可搬 component-graph IR から言語ネイティブの実行モジュールを生成する。
85
+ *
86
+ * 生成物の形(全言語共通の契約):
87
+ * - IR がネイティブリテラル定数として埋め込まれる(実行時 JSON パースなし)。
88
+ * - `EXPECTED_SPEC_VERSIONS` / `IR_FINGERPRINT` 定数 + ロード時 fail-closed 検査。
89
+ * - `bind(handlers)`(TS はさらに `bindAsync`): handler 注入を受けて
90
+ * `{component名: (input) => runBehavior(IR, handlers, input, name)}` を返す薄い束ね。
91
+ * **handler は常に境界注入**であり、生成対象にならない(C4)。
92
+ *
93
+ * @throws {GeneratorFailure} 入力が可搬 IR でない / 版超過 / 未知言語(fail-closed)。
94
+ * @throws {PortabilityError} IR が Portability Guard に違反するとき。
95
+ */
96
+ export function generateModule(ir, options) {
97
+ const plugin = registry.get(options.language);
98
+ if (!plugin)
99
+ gfail("UNKNOWN_LANGUAGE", `no emitter registered for language '${options.language}' (registered: ${registeredLanguages().join(", ")}) (fail-closed)`);
100
+ const validated = validateGeneratorInput(ir);
101
+ const fingerprint = fingerprintComponentGraph(validated);
102
+ const specVersions = {
103
+ behavior: SPEC_VERSIONS.behavior,
104
+ expression: SPEC_VERSIONS.expression,
105
+ plan: SPEC_VERSIONS.plan,
106
+ };
107
+ const componentNames = validated.components.map((c) => c.name);
108
+ const ctx = {
109
+ ir: validated,
110
+ fingerprint,
111
+ specVersions,
112
+ componentNames,
113
+ runtimeImport: options.runtimeImport ?? plugin.defaultRuntimeImport,
114
+ };
115
+ return {
116
+ language: plugin.language,
117
+ code: plugin.emit(ctx),
118
+ fingerprint,
119
+ specVersions,
120
+ componentNames,
121
+ filenameHint: plugin.filenameHint ?? `behaviors.generated${plugin.fileExtension}`,
122
+ };
123
+ }
124
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/generator/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * emit-go.ts — Go emitter(共通 Generator, bc#13 SP2)。
3
+ *
4
+ * 生成物: 可搬 IR を **JNode ネイティブ複合リテラル**(`dslcontracts.JObjOf` /
5
+ * `[]dslcontracts.JNode` / `json.Number` — RunBehavior が消費する JNode ドメイン。
6
+ * dynamic 経路の ParseJSONOrdered 出力と同型)として埋め込み、runtime-core の
7
+ * `RunBehavior` に handler 注入で渡す薄い accessor(`Bind`)を公開する .go ファイル。
8
+ *
9
+ * ロード時検査は **init 時**(package import 時): spec-version skew / fingerprint
10
+ * mismatch は `init()` の panic で LOUD reject — 生成 package を import しただけで
11
+ * プロセスが起動不能になる(#208 prepared-artifact 規律。first-Bind 遅延ではなく
12
+ * init を選ぶ: Go では import 副作用が慣用で、検査漏れの窓が生じない)。
13
+ *
14
+ * 出力は gofmt-clean(tab インデント・trailing comma)— CI の gofmt -l ゲートと
15
+ * fixture byte-drift ゲートの両立のため、emitter 出力自体が gofmt 不動点である。
16
+ */
17
+ import type { EmitterPlugin } from "./core.js";
18
+ export declare const goEmitter: EmitterPlugin;
19
+ //# sourceMappingURL=emit-go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-go.d.ts","sourceRoot":"","sources":["../../src/generator/emit-go.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AA2E5D,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { emitDocLiteral } from "./literal.js";
2
+ function emit(ctx) {
3
+ const { fingerprint, specVersions, componentNames, runtimeImport } = ctx;
4
+ const names = componentNames.map((n) => JSON.stringify(n)).join(", ");
5
+ const irLiteral = emitDocLiteral(ctx.ir, "go");
6
+ return `// GENERATED by behavior-contracts common generator (bc#13) — DO NOT EDIT.
7
+ // Input: portable component-graph IR only (scp-ir-architecture.md §5/§7.4).
8
+ // This module is the codegen endpoint (§7.3 endpoint 3): the IR is embedded as a
9
+ // native JNode composite literal and handed to the EXISTING runtime core
10
+ // (RunBehavior) — no execution logic is generated. Handlers are ALWAYS injected
11
+ // at the boundary (IR + {effects,config,hooks} — concept.md §4.4); they are
12
+ // never generated.
13
+ // irFingerprint: ${fingerprint}
14
+
15
+ package behaviors
16
+
17
+ import (
18
+ "encoding/json"
19
+ "fmt"
20
+
21
+ dslcontracts ${JSON.stringify(runtimeImport)}
22
+ )
23
+
24
+ // ExpectedSpecVersions are the spec versions baked at generation time
25
+ // (fail-closed constant comparison at init).
26
+ var ExpectedSpecVersions = map[string]int64{"behavior": ${specVersions.behavior}, "expression": ${specVersions.expression}, "plan": ${specVersions.plan}}
27
+
28
+ // IRFingerprint is the FNV-1a 64 fingerprint of the source portable IR
29
+ // (CanonicalJSON discipline, #208).
30
+ const IRFingerprint = ${JSON.stringify(fingerprint)}
31
+
32
+ // ComponentNames are the components exposed by Bind(), in IR declaration order.
33
+ var ComponentNames = []string{${names}}
34
+
35
+ // IR is the portable component-graph IR, embedded as a native JNode composite
36
+ // literal (no JSON parse at runtime).
37
+ var IR dslcontracts.JNode = ${irLiteral}
38
+
39
+ // init — load-time fail-closed checks (#208 prepared-artifact discipline).
40
+ // A spec-version skew or fingerprint mismatch panics at package initialization,
41
+ // so importing a stale/tampered generated module fails LOUDLY before any
42
+ // behavior can run.
43
+ func init() {
44
+ for k, want := range ExpectedSpecVersions {
45
+ if got := dslcontracts.SpecVersions[k]; got != want {
46
+ panic(fmt.Sprintf("behavior-contracts generated module: spec-version skew for '%s' (generated=%d, runtime=%d) — regenerate against this runtime (fail-closed)", k, want, got))
47
+ }
48
+ }
49
+ got, err := dslcontracts.FingerprintComponentGraph(IR)
50
+ if err != nil {
51
+ panic(fmt.Sprintf("behavior-contracts generated module: fingerprint recompute failed: %v (fail-closed)", err))
52
+ }
53
+ if got != IRFingerprint {
54
+ panic(fmt.Sprintf("behavior-contracts generated module: IR fingerprint mismatch (baked=%s, embedded literal=%s) — the generated code was modified or corrupted (fail-closed)", IRFingerprint, got))
55
+ }
56
+ }
57
+
58
+ // Bind — inject handlers (boundary injection; catalog name → implementation) and
59
+ // get one executor func per component. Each call delegates to the runtime core's
60
+ // RunBehavior over the embedded IR (dynamic-path equivalent — §7.3).
61
+ func Bind(handlers dslcontracts.ComponentExec) map[string]func(input *dslcontracts.Obj) (dslcontracts.Value, error) {
62
+ bound := make(map[string]func(input *dslcontracts.Obj) (dslcontracts.Value, error), len(ComponentNames))
63
+ for _, name := range ComponentNames {
64
+ n := name
65
+ bound[n] = func(input *dslcontracts.Obj) (dslcontracts.Value, error) {
66
+ return dslcontracts.RunBehavior(IR, handlers, input, n)
67
+ }
68
+ }
69
+ return bound
70
+ }
71
+ `;
72
+ }
73
+ export const goEmitter = {
74
+ language: "go",
75
+ fileExtension: ".go",
76
+ defaultRuntimeImport: "github.com/foo-ogawa/behavior-contracts/go",
77
+ emit,
78
+ };
79
+ //# sourceMappingURL=emit-go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-go.js","sourceRoot":"","sources":["../../src/generator/emit-go.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,SAAS,IAAI,CAAC,GAAgB;IAC5B,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;IACzE,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO;;;;;;;oBAOW,WAAW;;;;;;;;gBAQf,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;;;0DAKa,YAAY,CAAC,QAAQ,mBAAmB,YAAY,CAAC,UAAU,aAAa,YAAY,CAAC,IAAI;;;;wBAI/H,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;gCAGnB,KAAK;;;;8BAIP,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCtC,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAkB;IACtC,QAAQ,EAAE,IAAI;IACd,aAAa,EAAE,KAAK;IACpB,oBAAoB,EAAE,4CAA4C;IAClE,IAAI;CACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * emit-php.ts — PHP emitter(共通 Generator, bc#13 SP2)。
3
+ *
4
+ * 生成物: 可搬 IR を **ネイティブ配列/stdClass リテラル**(`(object) [...]` /
5
+ * `[...]` — Behavior::runBehavior が消費する json_decode(.., false) 同型ドメイン)
6
+ * として埋め込み、`Behavior::runBehavior` に handler 注入で渡す accessor
7
+ * (`bind` クロージャ)を公開する .php ファイル。
8
+ *
9
+ * ロード形: PHP に「モジュール」概念は無いため、生成ファイルは **require の戻り値**
10
+ * としてモジュールオブジェクト(stdClass: EXPECTED_SPEC_VERSIONS / IR_FINGERPRINT /
11
+ * COMPONENT_NAMES / IR / bind)を返す。トップレベルシンボルを定義しないので、
12
+ * 同一プロセスで複数の生成モジュールを衝突なく require できる
13
+ * (変数スコープ漏れを避けるにはクロージャ内で require すること)。
14
+ *
15
+ * ロード時検査は **require 時**: spec-version skew / fingerprint mismatch は
16
+ * RuntimeException で LOUD reject(#208 prepared-artifact 規律)。
17
+ */
18
+ import type { EmitterPlugin } from "./core.js";
19
+ export declare const phpEmitter: EmitterPlugin;
20
+ //# sourceMappingURL=emit-php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-php.d.ts","sourceRoot":"","sources":["../../src/generator/emit-php.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAyE5D,eAAO,MAAM,UAAU,EAAE,aAKxB,CAAC"}