behavior-contracts 0.1.3 → 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.
- package/README.md +8 -2
- package/dist/authoring.d.ts +202 -0
- package/dist/authoring.d.ts.map +1 -0
- package/dist/authoring.js +787 -0
- package/dist/authoring.js.map +1 -0
- package/dist/behavior.d.ts +201 -0
- package/dist/behavior.d.ts.map +1 -0
- package/dist/behavior.js +373 -0
- package/dist/behavior.js.map +1 -0
- package/dist/builder.d.ts +154 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +574 -0
- package/dist/builder.js.map +1 -0
- package/dist/generator/core.d.ts +89 -0
- package/dist/generator/core.d.ts.map +1 -0
- package/dist/generator/core.js +124 -0
- package/dist/generator/core.js.map +1 -0
- package/dist/generator/emit-go.d.ts +19 -0
- package/dist/generator/emit-go.d.ts.map +1 -0
- package/dist/generator/emit-go.js +79 -0
- package/dist/generator/emit-go.js.map +1 -0
- package/dist/generator/emit-php.d.ts +20 -0
- package/dist/generator/emit-php.d.ts.map +1 -0
- package/dist/generator/emit-php.js +76 -0
- package/dist/generator/emit-php.js.map +1 -0
- package/dist/generator/emit-python.d.ts +10 -0
- package/dist/generator/emit-python.d.ts.map +1 -0
- package/dist/generator/emit-python.js +75 -0
- package/dist/generator/emit-python.js.map +1 -0
- package/dist/generator/emit-rust.d.ts +25 -0
- package/dist/generator/emit-rust.d.ts.map +1 -0
- package/dist/generator/emit-rust.js +125 -0
- package/dist/generator/emit-rust.js.map +1 -0
- package/dist/generator/emit-typescript.d.ts +11 -0
- package/dist/generator/emit-typescript.d.ts.map +1 -0
- package/dist/generator/emit-typescript.js +68 -0
- package/dist/generator/emit-typescript.js.map +1 -0
- package/dist/generator/fingerprint.d.ts +14 -0
- package/dist/generator/fingerprint.d.ts.map +1 -0
- package/dist/generator/fingerprint.js +74 -0
- package/dist/generator/fingerprint.js.map +1 -0
- package/dist/generator/index.d.ts +9 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +25 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/literal.d.ts +8 -0
- package/dist/generator/literal.d.ts.map +1 -0
- package/dist/generator/literal.js +191 -0
- package/dist/generator/literal.js.map +1 -0
- package/dist/guard.d.ts +18 -0
- package/dist/guard.d.ts.map +1 -1
- package/dist/guard.js +130 -0
- package/dist/guard.js.map +1 -1
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/plan.d.ts +36 -0
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +152 -14
- package/dist/plan.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring.js","sourceRoot":"","sources":["../src/authoring.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* behavior.ts — component-graph IR schema + `runBehavior` unified execution IF (COMMON).
|
|
3
|
+
*
|
|
4
|
+
* scp-ir-architecture.md §5–§7 の規範実装。P0-1/P0-2/P0-3 の behavior-contracts 側。
|
|
5
|
+
*
|
|
6
|
+
* 「振る舞い=Behavior をコンポーネントとして契約化し、Port と Wire で合成する」SCP の
|
|
7
|
+
* 可搬 IR は **component-graph**(`components[]{ name, inputPorts, body[], output, plan }`)で
|
|
8
|
+
* 表現される。`body` ノード種は:
|
|
9
|
+
* - `componentRef` — catalog 名(文字列参照のみ)+ port 式(Expression IR)
|
|
10
|
+
* - `map` — 配列 Port 反復(`over`/`as`/component/ports、v2: `when`/`into`/`batched`)
|
|
11
|
+
* - `cond` — Conditional(`if`/`then`/`else`、純 Expression。handler を呼ばない)
|
|
12
|
+
*
|
|
13
|
+
* 実行機構(§7.2)は既存 COMMON をそのまま使う:
|
|
14
|
+
* - SCP汎用層(合成・plan)= runPlan(stage 実行・Skip 伝播・Policy Kind)+ evaluateExpression。
|
|
15
|
+
* - 専用コンポーネント実行 = runPlan の `exec` seam を、catalog名 → handlers[name] で解決して呼ぶ
|
|
16
|
+
* (汎用層=COMMON、専用コンポーネント=CONSUMER, runtime-boundary.md の分類に一致)。
|
|
17
|
+
*
|
|
18
|
+
* handler は境界注入(`IR + {effects,config,hooks}` 不変則, concept.md §4.4)。IR には catalog
|
|
19
|
+
* 参照名+Port配線だけが載り、実装(副作用・SDK)は載らない(C4)。
|
|
20
|
+
*/
|
|
21
|
+
import { type Value, type Scope } from "./expr-eval.js";
|
|
22
|
+
import { type ExecutionPlanSpec, type ExecOutcome, type PolicyKind, type RelationKind } from "./plan.js";
|
|
23
|
+
/** Port schema エントリ(IR 側が配線先を静的検証できる最小契約)。 */
|
|
24
|
+
export interface PortSchema {
|
|
25
|
+
type: string;
|
|
26
|
+
required?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/** 未生成表現の種別(single=null / connection=空 / item / items)。 */
|
|
29
|
+
export interface CatalogOutput {
|
|
30
|
+
shape: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* catalog エントリ(DSL固有・§6)。名前+Port契約+出力形まで。ハンドラ実装(④)とは分離。
|
|
34
|
+
* `portableToIR` が false のコンポーネント参照は可搬 IR に載せてはならない(ts-runtime 専用)。
|
|
35
|
+
*/
|
|
36
|
+
export interface CatalogEntry {
|
|
37
|
+
name: string;
|
|
38
|
+
inputPorts: Record<string, PortSchema>;
|
|
39
|
+
output?: CatalogOutput;
|
|
40
|
+
portableToIR: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 未宣言 Port の受容ポリシー(bc#26。既定 false = fail-closed: `inputPorts` に無い Port は
|
|
43
|
+
* 拒否)。**動的 port 群**(`item.<field>` / `key.<attr>` / `changes.<field>` /
|
|
44
|
+
* `condition.equals.<field>` 等、field 名が model 由来で flatten されるキー)を受ける
|
|
45
|
+
* write 系エントリだけが `true` で opt-in する。宣言済み Port は additionalPorts に
|
|
46
|
+
* 関わらず検査される(required / スカラリテラル型 — builder.ts の共有 port 照合)。
|
|
47
|
+
*/
|
|
48
|
+
additionalPorts?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export type Catalog = Record<string, CatalogEntry>;
|
|
51
|
+
/** 専用コンポーネント参照(catalog名+Port配線=Expression IR)。 */
|
|
52
|
+
export interface ComponentRefNode {
|
|
53
|
+
id: string;
|
|
54
|
+
/** ②catalog への参照(名前のみ。実装は載らない — C4)。 */
|
|
55
|
+
component: string;
|
|
56
|
+
/** Port 配線(各値は Expression IR ノード)。 */
|
|
57
|
+
ports: Record<string, unknown>;
|
|
58
|
+
/** 依存する親ノード id(Wire)。root は省略。 */
|
|
59
|
+
parent?: string;
|
|
60
|
+
/** 親 result のどのフィールドを束縛キーに読むか(null/欠落なら Skip)。 */
|
|
61
|
+
bindField?: string;
|
|
62
|
+
/** 未生成表現の種別。 */
|
|
63
|
+
relationKind?: RelationKind;
|
|
64
|
+
/** Error Policy Kind(既定 fail)。 */
|
|
65
|
+
policy?: PolicyKind;
|
|
66
|
+
}
|
|
67
|
+
/** SCP の Map(配列 Port 反復。単一静的ノード)。 */
|
|
68
|
+
export interface MapNode {
|
|
69
|
+
id: string;
|
|
70
|
+
map: {
|
|
71
|
+
/** 反復する配列 Port(Expression IR)。 */
|
|
72
|
+
over: unknown;
|
|
73
|
+
/** 各要素を束縛する名前(例 `"$t"`)。 */
|
|
74
|
+
as: string;
|
|
75
|
+
/** 各要素で呼ぶ専用コンポーネント(catalog 名)。 */
|
|
76
|
+
component: string;
|
|
77
|
+
/** Port 配線(`as` 束縛を参照できる Expression IR)。 */
|
|
78
|
+
ports: Record<string, unknown>;
|
|
79
|
+
/**
|
|
80
|
+
* per-element guard(Expression IR、`as` 束縛入りスコープで評価。behaviorVersion 2)。
|
|
81
|
+
* `{cond:[when,true,false]}` へ lower して評価する(cond と同じ strict-bool 規律 —
|
|
82
|
+
* 非 bool は TYPE_MISMATCH で fail-closed)。false の要素は skip(handler 未呼び出し・
|
|
83
|
+
* 結果リストから除外。順序は保持)。
|
|
84
|
+
*/
|
|
85
|
+
when?: unknown;
|
|
86
|
+
/**
|
|
87
|
+
* zip-attach キー(behaviorVersion 2)。指定時、この map ノードの結果は「`over` の各要素へ
|
|
88
|
+
* `into` キーで対応する handler 結果を書き戻した augment 済みリスト」(over と同じ長さ・順序)。
|
|
89
|
+
* `when` で skip された要素は **無変更で pass through**(`into` キーは付かない)。
|
|
90
|
+
* 親ノードの results は変異しない(コピーして augment)。guard 通過要素が object でなければ
|
|
91
|
+
* MAP_INTO_ELEMENT_NOT_OBJECT で fail-closed。
|
|
92
|
+
*/
|
|
93
|
+
into?: string;
|
|
94
|
+
/**
|
|
95
|
+
* バッチ fan-out(behaviorVersion 2)。true なら guard 通過全要素の ports を先に評価し、
|
|
96
|
+
* handler を **1 回だけ** `handler({items:[<ports>…]}, ctx)` で呼ぶ。handler は items と
|
|
97
|
+
* 同じ長さ・順序の結果リストを返す契約(違反は MAP_BATCH_RESULT_MISMATCH で fail-closed)。
|
|
98
|
+
* guard 通過要素が 0 件なら handler は呼ばれず結果は空リスト。dedupe/chunk/retry は
|
|
99
|
+
* CONSUMER handler 内の責務。
|
|
100
|
+
*/
|
|
101
|
+
batched?: boolean;
|
|
102
|
+
parent?: string;
|
|
103
|
+
relationKind?: RelationKind;
|
|
104
|
+
policy?: PolicyKind;
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/** SCP の Conditional(純 Expression。handler は呼ばない)。 */
|
|
108
|
+
export interface CondNode {
|
|
109
|
+
id: string;
|
|
110
|
+
cond: {
|
|
111
|
+
/** 条件(Expression IR、bool を返す)。 */
|
|
112
|
+
if: unknown;
|
|
113
|
+
/** 採用側 Expression。 */
|
|
114
|
+
then: unknown;
|
|
115
|
+
else: unknown;
|
|
116
|
+
parent?: string;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export type BodyNode = ComponentRefNode | MapNode | CondNode;
|
|
120
|
+
/** 合成コンポーネント定義(=公開メソッド, §5)。 */
|
|
121
|
+
export interface Component {
|
|
122
|
+
name: string;
|
|
123
|
+
inputPorts: Record<string, PortSchema>;
|
|
124
|
+
body: BodyNode[];
|
|
125
|
+
/** 合流(Φ): body ノード結果を参照して最終出力を組む Expression IR。 */
|
|
126
|
+
output: unknown;
|
|
127
|
+
/** 依存から導出された plan(`{groups, concurrency}`)。省略時は body 順の逐次。 */
|
|
128
|
+
plan?: ExecutionPlanSpec;
|
|
129
|
+
}
|
|
130
|
+
/** 可搬 IR ルート(普遍形式・全 SCP ライブラリ共通, §5)。 */
|
|
131
|
+
export interface ComponentGraphIR {
|
|
132
|
+
irVersion: 1;
|
|
133
|
+
exprVersion: number;
|
|
134
|
+
components: Component[];
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* handler ctx(behaviorVersion 2)。runBehavior が全 handler 呼び出しに node identity
|
|
138
|
+
* (`nodeId` = body ノード id / `component` = catalog 名)を渡す。エラー文脈・トレース用。
|
|
139
|
+
* map(非 batched)ではさらに `bound` = `as` 束縛の要素値。追加のみ(既存 handler 互換)。
|
|
140
|
+
*/
|
|
141
|
+
export interface HandlerCtx {
|
|
142
|
+
nodeId: string;
|
|
143
|
+
component: string;
|
|
144
|
+
bound?: Value;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 専用コンポーネント handler。評価済み Port({name: Value})と ctx(node identity +
|
|
148
|
+
* map 要素の束縛値)を受け取り、ExecOutcome を返す。副作用・SDK・config・hooks はこの
|
|
149
|
+
* handler が閉じ込める(IR には載らない — C4 / concept.md §4.4 の `IR + {effects,config,hooks}`)。
|
|
150
|
+
* `map.batched` の handler は ports として `{items:[<要素ごとの評価済み ports>…]}` を受け取り、
|
|
151
|
+
* items と同じ長さ・順序の結果リストを返す。
|
|
152
|
+
*/
|
|
153
|
+
export type Handler = (ports: Record<string, Value>, ctx: HandlerCtx) => ExecOutcome;
|
|
154
|
+
export type Handlers = Record<string, Handler>;
|
|
155
|
+
/**
|
|
156
|
+
* 非同期 handler(runBehaviorAsync 用)。ExecOutcome を同期で返しても Promise で返してもよい。
|
|
157
|
+
* `plan.concurrency > 1` の component では、同一 stage 内の兄弟ノードに対して**並行に
|
|
158
|
+
* 呼ばれ得る**(bc#23。並行呼び出しを許容しない consumer は `concurrency: 1` を出荷する)。
|
|
159
|
+
*/
|
|
160
|
+
export type AsyncHandler = (ports: Record<string, Value>, ctx: HandlerCtx) => ExecOutcome | Promise<ExecOutcome>;
|
|
161
|
+
export type AsyncHandlers = Record<string, AsyncHandler>;
|
|
162
|
+
export type BehaviorFailureCode = "UNKNOWN_COMPONENT" | "UNKNOWN_NODE_KIND" | "MAP_OVER_NOT_ARRAY" | "MAP_INTO_ELEMENT_NOT_OBJECT" | "MAP_BATCH_RESULT_MISMATCH" | "UNKNOWN_ENTRY";
|
|
163
|
+
export declare class BehaviorFailure extends Error {
|
|
164
|
+
code: BehaviorFailureCode;
|
|
165
|
+
constructor(code: BehaviorFailureCode, message: string);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* runBehavior — component-graph IR の統合実行 IF(§7)。
|
|
169
|
+
*
|
|
170
|
+
* @param ir component-graph 可搬 IR。
|
|
171
|
+
* @param handlers 専用コンポーネント handler registry(catalog名 → 実装。境界注入)。
|
|
172
|
+
* @param input エントリ component の inputPorts 束縛(param 値)。
|
|
173
|
+
* @param entry 実行する component 名(省略時は先頭 component)。
|
|
174
|
+
* @returns `output` を評価した最終 Value(Φ 合流)。
|
|
175
|
+
*
|
|
176
|
+
* 責務(P0-3): ①plan の stage 実行(runPlan)、②各 componentRef の port 式を
|
|
177
|
+
* evaluateExpression で評価、③catalog名→handlers[name] を解決し exec 委譲、④map/cond/Skip 伝播。
|
|
178
|
+
*
|
|
179
|
+
* 同期 handler seam のため stage 内は逐次実行(execution-plan.md §4.1 の conforming
|
|
180
|
+
* fallback)。stage 内 bounded 並列が必要な consumer は {@link runBehaviorAsync} を使う
|
|
181
|
+
* (観測結果は本関数と byte 一致 — 本関数が規範実装)。
|
|
182
|
+
*/
|
|
183
|
+
export declare function runBehavior(ir: ComponentGraphIR, handlers: Handlers, input?: Scope, entry?: string): Value;
|
|
184
|
+
/**
|
|
185
|
+
* runBehaviorAsync — runBehavior の非同期版(bc#23)。handler が Promise を返せる。
|
|
186
|
+
*
|
|
187
|
+
* plan の stage 実行を {@link runPlanAsync} に委譲することで、同一 stage 内の兄弟ノードを
|
|
188
|
+
* `plan.concurrency` を上限とした bounded 並列で実行する(旧 graphddb の sibling relation
|
|
189
|
+
* query thread-overlap の回復)。map ノード**内部**の要素反復は宣言どおり逐次
|
|
190
|
+
* (stage 間/stage 内の並列単位は body ノード — §7)。
|
|
191
|
+
*
|
|
192
|
+
* 観測等価: 結果・Skip/Policy 伝播・Failure(code/message)は {@link runBehavior} と
|
|
193
|
+
* 完全一致(runBehavior が規範実装。等価性は conformance vectors の両経路 PASS で担保)。
|
|
194
|
+
* 相違は投機的 dispatch のみ(runPlanAsync の決定的 commit プロトコル参照)。
|
|
195
|
+
*
|
|
196
|
+
* 並行呼び出し契約: `concurrency > 1` の plan を持つ component では、同一 stage 内の
|
|
197
|
+
* 兄弟ノードの handler が並行に呼ばれ得る。並行呼び出しを許容しない consumer は
|
|
198
|
+
* `concurrency: 1` の plan を出荷する(concurrency は plan 構造の一部 — execution-plan.md §3)。
|
|
199
|
+
*/
|
|
200
|
+
export declare function runBehaviorAsync(ir: ComponentGraphIR, handlers: AsyncHandlers, input?: Scope, entry?: string): Promise<Value>;
|
|
201
|
+
//# sourceMappingURL=behavior.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../src/behavior.ts"],"names":[],"mappings":"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"}
|
package/dist/behavior.js
ADDED
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* behavior.ts — component-graph IR schema + `runBehavior` unified execution IF (COMMON).
|
|
3
|
+
*
|
|
4
|
+
* scp-ir-architecture.md §5–§7 の規範実装。P0-1/P0-2/P0-3 の behavior-contracts 側。
|
|
5
|
+
*
|
|
6
|
+
* 「振る舞い=Behavior をコンポーネントとして契約化し、Port と Wire で合成する」SCP の
|
|
7
|
+
* 可搬 IR は **component-graph**(`components[]{ name, inputPorts, body[], output, plan }`)で
|
|
8
|
+
* 表現される。`body` ノード種は:
|
|
9
|
+
* - `componentRef` — catalog 名(文字列参照のみ)+ port 式(Expression IR)
|
|
10
|
+
* - `map` — 配列 Port 反復(`over`/`as`/component/ports、v2: `when`/`into`/`batched`)
|
|
11
|
+
* - `cond` — Conditional(`if`/`then`/`else`、純 Expression。handler を呼ばない)
|
|
12
|
+
*
|
|
13
|
+
* 実行機構(§7.2)は既存 COMMON をそのまま使う:
|
|
14
|
+
* - SCP汎用層(合成・plan)= runPlan(stage 実行・Skip 伝播・Policy Kind)+ evaluateExpression。
|
|
15
|
+
* - 専用コンポーネント実行 = runPlan の `exec` seam を、catalog名 → handlers[name] で解決して呼ぶ
|
|
16
|
+
* (汎用層=COMMON、専用コンポーネント=CONSUMER, runtime-boundary.md の分類に一致)。
|
|
17
|
+
*
|
|
18
|
+
* handler は境界注入(`IR + {effects,config,hooks}` 不変則, concept.md §4.4)。IR には catalog
|
|
19
|
+
* 参照名+Port配線だけが載り、実装(副作用・SDK)は載らない(C4)。
|
|
20
|
+
*/
|
|
21
|
+
import { evaluate as evaluateExpression } from "./expr-eval.js";
|
|
22
|
+
import { runPlan, runPlanAsync, } from "./plan.js";
|
|
23
|
+
export class BehaviorFailure extends Error {
|
|
24
|
+
code;
|
|
25
|
+
constructor(code, message) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.code = code;
|
|
28
|
+
this.name = "BehaviorFailure";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function bfail(code, message) {
|
|
32
|
+
throw new BehaviorFailure(code, message);
|
|
33
|
+
}
|
|
34
|
+
// ── ノード種判定 ─────────────────────────────────────────────────────────────────
|
|
35
|
+
function nodeKind(n) {
|
|
36
|
+
if ("map" in n)
|
|
37
|
+
return "map";
|
|
38
|
+
if ("cond" in n)
|
|
39
|
+
return "cond";
|
|
40
|
+
if ("component" in n)
|
|
41
|
+
return "componentRef";
|
|
42
|
+
bfail("UNKNOWN_NODE_KIND", `body node '${n.id ?? "?"}' is not componentRef/map/cond`);
|
|
43
|
+
}
|
|
44
|
+
/** body ノードの依存親 id(Wire)を取り出す(root は undefined)。 */
|
|
45
|
+
function nodeParent(n) {
|
|
46
|
+
if ("map" in n)
|
|
47
|
+
return n.map.parent;
|
|
48
|
+
if ("cond" in n)
|
|
49
|
+
return n.cond.parent;
|
|
50
|
+
return n.parent;
|
|
51
|
+
}
|
|
52
|
+
/** componentRef の bindField(null-binding skip のキー)。map/cond は持たない。 */
|
|
53
|
+
function nodeBindField(n) {
|
|
54
|
+
if ("map" in n || "cond" in n)
|
|
55
|
+
return undefined;
|
|
56
|
+
return n.bindField;
|
|
57
|
+
}
|
|
58
|
+
function nodePolicy(n) {
|
|
59
|
+
if ("map" in n)
|
|
60
|
+
return n.map.policy;
|
|
61
|
+
if ("cond" in n)
|
|
62
|
+
return undefined;
|
|
63
|
+
return n.policy;
|
|
64
|
+
}
|
|
65
|
+
function nodeRelationKind(n) {
|
|
66
|
+
if ("map" in n)
|
|
67
|
+
return n.map.relationKind;
|
|
68
|
+
if ("cond" in n)
|
|
69
|
+
return undefined;
|
|
70
|
+
return n.relationKind;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* ports オブジェクトの各値を Expression IR として評価する(key はソートせず宣言順のまま)。
|
|
74
|
+
* FORBIDDEN_KEY 等の失敗は evaluateExpression が投げる(fail-closed)。
|
|
75
|
+
*/
|
|
76
|
+
function evalPorts(ports, scope) {
|
|
77
|
+
const out = {};
|
|
78
|
+
for (const k of Object.keys(ports))
|
|
79
|
+
out[k] = evaluateExpression(ports[k], scope);
|
|
80
|
+
return out;
|
|
81
|
+
}
|
|
82
|
+
/** entry 解決(runBehavior / runBehaviorAsync 共有)。 */
|
|
83
|
+
function resolveEntry(ir, entry) {
|
|
84
|
+
const comp = entry
|
|
85
|
+
? ir.components.find((c) => c.name === entry)
|
|
86
|
+
: ir.components[0];
|
|
87
|
+
if (!comp)
|
|
88
|
+
bfail("UNKNOWN_ENTRY", `component '${entry ?? "<first>"}' not found in IR`);
|
|
89
|
+
return comp;
|
|
90
|
+
}
|
|
91
|
+
/** body ノード → OpSpec(runPlan の staging に載せる)。parent は id → index に解決。 */
|
|
92
|
+
function buildOps(body, idToIndex) {
|
|
93
|
+
return body.map((n) => {
|
|
94
|
+
const pid = nodeParent(n);
|
|
95
|
+
const parent = pid !== undefined ? idToIndex.get(pid) ?? null : null;
|
|
96
|
+
const spec = { id: n.id, parent };
|
|
97
|
+
const bf = nodeBindField(n);
|
|
98
|
+
if (bf !== undefined)
|
|
99
|
+
spec.bindField = bf;
|
|
100
|
+
const rk = nodeRelationKind(n);
|
|
101
|
+
if (rk !== undefined)
|
|
102
|
+
spec.relationKind = rk;
|
|
103
|
+
const pol = nodePolicy(n);
|
|
104
|
+
if (pol !== undefined)
|
|
105
|
+
spec.policy = pol;
|
|
106
|
+
return spec;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/** map.batched の整列契約検査(violation は MAP_BATCH_RESULT_MISMATCH で fail-closed)。 */
|
|
110
|
+
function checkBatchAligned(opId, r, want) {
|
|
111
|
+
if (!Array.isArray(r) || r.length !== want)
|
|
112
|
+
bfail("MAP_BATCH_RESULT_MISMATCH", `map '${opId}': batched handler must return a list aligned to items (want ${want}, got ${Array.isArray(r) ? r.length : typeof r})`);
|
|
113
|
+
return r;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* map.into(v2): over と同じ長さ・順序の augment 済みリストを組む(親 results は不変)。
|
|
117
|
+
* guard 通過要素は shallow copy + `into` キー、skip 要素は無変更で pass through。
|
|
118
|
+
*/
|
|
119
|
+
function applyInto(opId, into, over, keptIdx, collected) {
|
|
120
|
+
const augmented = [];
|
|
121
|
+
let k = 0;
|
|
122
|
+
for (let i = 0; i < over.length; i++) {
|
|
123
|
+
const el = over[i];
|
|
124
|
+
if (k < keptIdx.length && keptIdx[k] === i) {
|
|
125
|
+
if (el === null || typeof el !== "object" || Array.isArray(el))
|
|
126
|
+
bfail("MAP_INTO_ELEMENT_NOT_OBJECT", `map '${opId}': 'into' requires object elements (element ${i} is not an object)`);
|
|
127
|
+
augmented.push({ ...el, [into]: collected[k] });
|
|
128
|
+
k++;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
augmented.push(el);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return augmented;
|
|
135
|
+
}
|
|
136
|
+
/** Skip されたノードの未生成表現を results に書き戻す(output の ref が読めるように)。 */
|
|
137
|
+
function writeUnproduced(states, ops, body, results) {
|
|
138
|
+
states.forEach((s, i) => {
|
|
139
|
+
if (s.status === "skipped") {
|
|
140
|
+
results[ops[i].id] =
|
|
141
|
+
nodeRelationKind(body[i]) === "connection" ? { items: [], cursor: null } : null;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* runBehavior — component-graph IR の統合実行 IF(§7)。
|
|
147
|
+
*
|
|
148
|
+
* @param ir component-graph 可搬 IR。
|
|
149
|
+
* @param handlers 専用コンポーネント handler registry(catalog名 → 実装。境界注入)。
|
|
150
|
+
* @param input エントリ component の inputPorts 束縛(param 値)。
|
|
151
|
+
* @param entry 実行する component 名(省略時は先頭 component)。
|
|
152
|
+
* @returns `output` を評価した最終 Value(Φ 合流)。
|
|
153
|
+
*
|
|
154
|
+
* 責務(P0-3): ①plan の stage 実行(runPlan)、②各 componentRef の port 式を
|
|
155
|
+
* evaluateExpression で評価、③catalog名→handlers[name] を解決し exec 委譲、④map/cond/Skip 伝播。
|
|
156
|
+
*
|
|
157
|
+
* 同期 handler seam のため stage 内は逐次実行(execution-plan.md §4.1 の conforming
|
|
158
|
+
* fallback)。stage 内 bounded 並列が必要な consumer は {@link runBehaviorAsync} を使う
|
|
159
|
+
* (観測結果は本関数と byte 一致 — 本関数が規範実装)。
|
|
160
|
+
*/
|
|
161
|
+
export function runBehavior(ir, handlers, input = {}, entry) {
|
|
162
|
+
const comp = resolveEntry(ir, entry);
|
|
163
|
+
const body = comp.body;
|
|
164
|
+
const idToIndex = new Map();
|
|
165
|
+
body.forEach((n, i) => idToIndex.set(n.id, i));
|
|
166
|
+
const ops = buildOps(body, idToIndex);
|
|
167
|
+
// 各 op 実行時に参照するスコープ: input params + それまでに ok になった node 結果(id → Value)。
|
|
168
|
+
const results = {};
|
|
169
|
+
const baseScope = () => ({ ...input, ...results });
|
|
170
|
+
const exec = (op) => {
|
|
171
|
+
const idx = idToIndex.get(op.id);
|
|
172
|
+
const node = body[idx];
|
|
173
|
+
const kind = nodeKind(node);
|
|
174
|
+
if (kind === "cond") {
|
|
175
|
+
// Conditional は純 Expression。cond 演算子([if,then,else])へ lower して評価。
|
|
176
|
+
const c = node.cond;
|
|
177
|
+
const value = evaluateExpression({ cond: [c.if, c.then, c.else] }, baseScope());
|
|
178
|
+
return { ok: value };
|
|
179
|
+
}
|
|
180
|
+
if (kind === "map") {
|
|
181
|
+
const m = node.map;
|
|
182
|
+
const over = evaluateExpression(m.over, baseScope());
|
|
183
|
+
if (!Array.isArray(over))
|
|
184
|
+
bfail("MAP_OVER_NOT_ARRAY", `map '${op.id}': 'over' did not evaluate to an array`);
|
|
185
|
+
const handler = handlers[m.component];
|
|
186
|
+
if (!handler)
|
|
187
|
+
bfail("UNKNOWN_COMPONENT", `component '${m.component}' has no handler (fail-closed)`);
|
|
188
|
+
const ctx = { nodeId: op.id, component: m.component };
|
|
189
|
+
// per-element guard(v2): `{cond:[when,true,false]}` へ lower(strict-bool、fail-closed)。
|
|
190
|
+
const keep = (el, scope) => m.when === undefined ||
|
|
191
|
+
evaluateExpression({ cond: [m.when, true, false] }, scope) === true;
|
|
192
|
+
const keptIdx = []; // over 内で guard を通過した要素 index(into の整列用)
|
|
193
|
+
let collected;
|
|
194
|
+
if (m.batched === true) {
|
|
195
|
+
// batched(v2): guard 通過全要素の ports を先に評価し、handler を 1 回だけ呼ぶ。
|
|
196
|
+
const items = [];
|
|
197
|
+
over.forEach((el, i) => {
|
|
198
|
+
const scope = { ...baseScope(), [m.as]: el };
|
|
199
|
+
if (!keep(el, scope))
|
|
200
|
+
return;
|
|
201
|
+
items.push(evalPorts(m.ports, scope));
|
|
202
|
+
keptIdx.push(i);
|
|
203
|
+
});
|
|
204
|
+
if (items.length === 0) {
|
|
205
|
+
collected = []; // guard 全落ち: handler は呼ばれない(空バッチを発行しない)
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const outcome = handler({ items }, ctx);
|
|
209
|
+
if ("error" in outcome)
|
|
210
|
+
return outcome; // policy Kind は runPlan が解釈
|
|
211
|
+
collected = checkBatchAligned(op.id, outcome.ok, items.length);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
collected = [];
|
|
216
|
+
for (let i = 0; i < over.length; i++) {
|
|
217
|
+
const el = over[i];
|
|
218
|
+
const scope = { ...baseScope(), [m.as]: el };
|
|
219
|
+
if (!keep(el, scope))
|
|
220
|
+
continue;
|
|
221
|
+
const ports = evalPorts(m.ports, scope);
|
|
222
|
+
const outcome = handler(ports, { ...ctx, bound: el });
|
|
223
|
+
if ("error" in outcome)
|
|
224
|
+
return outcome; // policy Kind は runPlan が解釈
|
|
225
|
+
collected.push(outcome.ok);
|
|
226
|
+
keptIdx.push(i);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (m.into === undefined)
|
|
230
|
+
return { ok: collected };
|
|
231
|
+
return { ok: applyInto(op.id, m.into, over, keptIdx, collected) };
|
|
232
|
+
}
|
|
233
|
+
// componentRef
|
|
234
|
+
const cr = node;
|
|
235
|
+
const handler = handlers[cr.component];
|
|
236
|
+
if (!handler)
|
|
237
|
+
bfail("UNKNOWN_COMPONENT", `component '${cr.component}' has no handler (fail-closed)`);
|
|
238
|
+
const ports = evalPorts(cr.ports, baseScope());
|
|
239
|
+
return handler(ports, { nodeId: op.id, component: cr.component });
|
|
240
|
+
};
|
|
241
|
+
// runPlan は stage 実行・Skip 伝播・Policy Kind を担う。exec 内で results を蓄積する必要が
|
|
242
|
+
// あるため、成功結果を runPlan の外側(results)へも写す薄いラッパで包む。
|
|
243
|
+
const wrappedExec = (op, bound) => {
|
|
244
|
+
const outcome = exec(op, bound);
|
|
245
|
+
if ("ok" in outcome)
|
|
246
|
+
results[op.id] = outcome.ok;
|
|
247
|
+
return outcome;
|
|
248
|
+
};
|
|
249
|
+
const plan = comp.plan ?? null;
|
|
250
|
+
const run = runPlan(plan, ops, wrappedExec);
|
|
251
|
+
// Skip されたノードは未生成表現を results に載せる(output の ref が読めるように)。
|
|
252
|
+
writeUnproduced(run.states, ops, body, results);
|
|
253
|
+
// output(Φ 合流)を Expression IR として評価。
|
|
254
|
+
return evaluateExpression(comp.output, baseScope());
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* runBehaviorAsync — runBehavior の非同期版(bc#23)。handler が Promise を返せる。
|
|
258
|
+
*
|
|
259
|
+
* plan の stage 実行を {@link runPlanAsync} に委譲することで、同一 stage 内の兄弟ノードを
|
|
260
|
+
* `plan.concurrency` を上限とした bounded 並列で実行する(旧 graphddb の sibling relation
|
|
261
|
+
* query thread-overlap の回復)。map ノード**内部**の要素反復は宣言どおり逐次
|
|
262
|
+
* (stage 間/stage 内の並列単位は body ノード — §7)。
|
|
263
|
+
*
|
|
264
|
+
* 観測等価: 結果・Skip/Policy 伝播・Failure(code/message)は {@link runBehavior} と
|
|
265
|
+
* 完全一致(runBehavior が規範実装。等価性は conformance vectors の両経路 PASS で担保)。
|
|
266
|
+
* 相違は投機的 dispatch のみ(runPlanAsync の決定的 commit プロトコル参照)。
|
|
267
|
+
*
|
|
268
|
+
* 並行呼び出し契約: `concurrency > 1` の plan を持つ component では、同一 stage 内の
|
|
269
|
+
* 兄弟ノードの handler が並行に呼ばれ得る。並行呼び出しを許容しない consumer は
|
|
270
|
+
* `concurrency: 1` の plan を出荷する(concurrency は plan 構造の一部 — execution-plan.md §3)。
|
|
271
|
+
*/
|
|
272
|
+
export async function runBehaviorAsync(ir, handlers, input = {}, entry) {
|
|
273
|
+
const comp = resolveEntry(ir, entry);
|
|
274
|
+
const body = comp.body;
|
|
275
|
+
const idToIndex = new Map();
|
|
276
|
+
body.forEach((n, i) => idToIndex.set(n.id, i));
|
|
277
|
+
const ops = buildOps(body, idToIndex);
|
|
278
|
+
// 各 op 実行時に参照するスコープ: input params + それまでに ok になった node 結果(id → Value)。
|
|
279
|
+
// 並列 stage の兄弟同士は互いの結果を参照しない(§1: stage 内は相互独立)ので、
|
|
280
|
+
// dispatch 時点のスナップショットは前 stage までの確定結果と一致する。
|
|
281
|
+
const results = {};
|
|
282
|
+
const baseScope = () => ({ ...input, ...results });
|
|
283
|
+
// 以降の各分岐は runBehavior(規範実装)の同期 exec と**鏡映**であること。
|
|
284
|
+
// 相違は handler 呼び出しの await のみ(等価性は plan-async.test.ts が全 behavior
|
|
285
|
+
// vectors の両経路比較で強制する)。
|
|
286
|
+
const exec = async (op) => {
|
|
287
|
+
const idx = idToIndex.get(op.id);
|
|
288
|
+
const node = body[idx];
|
|
289
|
+
const kind = nodeKind(node);
|
|
290
|
+
if (kind === "cond") {
|
|
291
|
+
// Conditional は純 Expression。cond 演算子([if,then,else])へ lower して評価。
|
|
292
|
+
const c = node.cond;
|
|
293
|
+
const value = evaluateExpression({ cond: [c.if, c.then, c.else] }, baseScope());
|
|
294
|
+
return { ok: value };
|
|
295
|
+
}
|
|
296
|
+
if (kind === "map") {
|
|
297
|
+
const m = node.map;
|
|
298
|
+
const over = evaluateExpression(m.over, baseScope());
|
|
299
|
+
if (!Array.isArray(over))
|
|
300
|
+
bfail("MAP_OVER_NOT_ARRAY", `map '${op.id}': 'over' did not evaluate to an array`);
|
|
301
|
+
const handler = handlers[m.component];
|
|
302
|
+
if (!handler)
|
|
303
|
+
bfail("UNKNOWN_COMPONENT", `component '${m.component}' has no handler (fail-closed)`);
|
|
304
|
+
const ctx = { nodeId: op.id, component: m.component };
|
|
305
|
+
// per-element guard(v2): `{cond:[when,true,false]}` へ lower(strict-bool、fail-closed)。
|
|
306
|
+
const keep = (el, scope) => m.when === undefined ||
|
|
307
|
+
evaluateExpression({ cond: [m.when, true, false] }, scope) === true;
|
|
308
|
+
const keptIdx = []; // over 内で guard を通過した要素 index(into の整列用)
|
|
309
|
+
let collected;
|
|
310
|
+
if (m.batched === true) {
|
|
311
|
+
// batched(v2): guard 通過全要素の ports を先に評価し、handler を 1 回だけ呼ぶ。
|
|
312
|
+
const items = [];
|
|
313
|
+
over.forEach((el, i) => {
|
|
314
|
+
const scope = { ...baseScope(), [m.as]: el };
|
|
315
|
+
if (!keep(el, scope))
|
|
316
|
+
return;
|
|
317
|
+
items.push(evalPorts(m.ports, scope));
|
|
318
|
+
keptIdx.push(i);
|
|
319
|
+
});
|
|
320
|
+
if (items.length === 0) {
|
|
321
|
+
collected = []; // guard 全落ち: handler は呼ばれない(空バッチを発行しない)
|
|
322
|
+
}
|
|
323
|
+
else {
|
|
324
|
+
const outcome = await handler({ items }, ctx);
|
|
325
|
+
if ("error" in outcome)
|
|
326
|
+
return outcome; // policy Kind は runPlanAsync が解釈
|
|
327
|
+
collected = checkBatchAligned(op.id, outcome.ok, items.length);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
collected = [];
|
|
332
|
+
for (let i = 0; i < over.length; i++) {
|
|
333
|
+
const el = over[i];
|
|
334
|
+
const scope = { ...baseScope(), [m.as]: el };
|
|
335
|
+
if (!keep(el, scope))
|
|
336
|
+
continue;
|
|
337
|
+
const ports = evalPorts(m.ports, scope);
|
|
338
|
+
const outcome = await handler(ports, { ...ctx, bound: el });
|
|
339
|
+
if ("error" in outcome)
|
|
340
|
+
return outcome; // policy Kind は runPlanAsync が解釈
|
|
341
|
+
collected.push(outcome.ok);
|
|
342
|
+
keptIdx.push(i);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (m.into === undefined)
|
|
346
|
+
return { ok: collected };
|
|
347
|
+
return { ok: applyInto(op.id, m.into, over, keptIdx, collected) };
|
|
348
|
+
}
|
|
349
|
+
// componentRef
|
|
350
|
+
const cr = node;
|
|
351
|
+
const handler = handlers[cr.component];
|
|
352
|
+
if (!handler)
|
|
353
|
+
bfail("UNKNOWN_COMPONENT", `component '${cr.component}' has no handler (fail-closed)`);
|
|
354
|
+
const ports = evalPorts(cr.ports, baseScope());
|
|
355
|
+
return handler(ports, { nodeId: op.id, component: cr.component });
|
|
356
|
+
};
|
|
357
|
+
// 成功結果を results へ写す薄いラッパ(runBehavior と同形)。並列 stage では兄弟の
|
|
358
|
+
// 書き込みが宣言順と異なる wall-clock 順で起き得るが、書き込み先は disjoint スロット
|
|
359
|
+
// (自ノード id)であり、兄弟は互いのスロットを読まない(§1)ため結果は決定的。
|
|
360
|
+
const wrappedExec = async (op, bound) => {
|
|
361
|
+
const outcome = await exec(op, bound);
|
|
362
|
+
if ("ok" in outcome)
|
|
363
|
+
results[op.id] = outcome.ok;
|
|
364
|
+
return outcome;
|
|
365
|
+
};
|
|
366
|
+
const plan = comp.plan ?? null;
|
|
367
|
+
const run = await runPlanAsync(plan, ops, wrappedExec);
|
|
368
|
+
// Skip されたノードは未生成表現を results に載せる(output の ref が読めるように)。
|
|
369
|
+
writeUnproduced(run.states, ops, body, results);
|
|
370
|
+
// output(Φ 合流)を Expression IR として評価。
|
|
371
|
+
return evaluateExpression(comp.output, baseScope());
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=behavior.js.map
|