@manifesto-ai/core 0.3.0 → 1.3.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 +148 -498
- package/dist/__tests__/apply.test.d.ts +2 -0
- package/dist/__tests__/apply.test.d.ts.map +1 -0
- package/dist/__tests__/apply.test.js +144 -0
- package/dist/__tests__/apply.test.js.map +1 -0
- package/dist/__tests__/jcs.test.d.ts +2 -0
- package/dist/__tests__/jcs.test.d.ts.map +1 -0
- package/dist/__tests__/jcs.test.js +45 -0
- package/dist/__tests__/jcs.test.js.map +1 -0
- package/dist/core/apply.d.ts +17 -0
- package/dist/core/apply.d.ts.map +1 -0
- package/dist/core/apply.js +130 -0
- package/dist/core/apply.js.map +1 -0
- package/dist/core/compute.d.ts +17 -0
- package/dist/core/compute.d.ts.map +1 -0
- package/dist/core/compute.js +287 -0
- package/dist/core/compute.js.map +1 -0
- package/dist/core/compute.test.d.ts +2 -0
- package/dist/core/compute.test.d.ts.map +1 -0
- package/dist/core/compute.test.js +633 -0
- package/dist/core/compute.test.js.map +1 -0
- package/dist/core/explain.d.ts +14 -0
- package/dist/core/explain.d.ts.map +1 -0
- package/dist/core/explain.js +78 -0
- package/dist/core/explain.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +5 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/validate.d.ts +16 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +361 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/core/validate.test.d.ts +2 -0
- package/dist/core/validate.test.d.ts.map +1 -0
- package/dist/core/validate.test.js +638 -0
- package/dist/core/validate.test.js.map +1 -0
- package/dist/core/validation-utils.d.ts +20 -0
- package/dist/core/validation-utils.d.ts.map +1 -0
- package/dist/core/validation-utils.js +289 -0
- package/dist/core/validation-utils.js.map +1 -0
- package/dist/errors.d.ts +30 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +51 -0
- package/dist/errors.js.map +1 -0
- package/dist/evaluator/computed.d.ts +14 -0
- package/dist/evaluator/computed.d.ts.map +1 -0
- package/dist/evaluator/computed.js +60 -0
- package/dist/evaluator/computed.js.map +1 -0
- package/dist/evaluator/context.d.ts +59 -0
- package/dist/evaluator/context.d.ts.map +1 -0
- package/dist/evaluator/context.js +41 -0
- package/dist/evaluator/context.js.map +1 -0
- package/dist/evaluator/dag.d.ts +30 -0
- package/dist/evaluator/dag.d.ts.map +1 -0
- package/dist/evaluator/dag.js +121 -0
- package/dist/evaluator/dag.js.map +1 -0
- package/dist/evaluator/expr.d.ts +11 -0
- package/dist/evaluator/expr.d.ts.map +1 -0
- package/dist/evaluator/expr.js +649 -0
- package/dist/evaluator/expr.js.map +1 -0
- package/dist/evaluator/expr.test.d.ts +2 -0
- package/dist/evaluator/expr.test.d.ts.map +1 -0
- package/dist/evaluator/expr.test.js +449 -0
- package/dist/evaluator/expr.test.js.map +1 -0
- package/dist/evaluator/flow.d.ts +35 -0
- package/dist/evaluator/flow.d.ts.map +1 -0
- package/dist/evaluator/flow.js +387 -0
- package/dist/evaluator/flow.js.map +1 -0
- package/dist/evaluator/flow.test.d.ts +2 -0
- package/dist/evaluator/flow.test.d.ts.map +1 -0
- package/dist/evaluator/flow.test.js +499 -0
- package/dist/evaluator/flow.test.js.map +1 -0
- package/dist/evaluator/index.d.ts +6 -0
- package/dist/evaluator/index.d.ts.map +1 -0
- package/dist/evaluator/index.js +6 -0
- package/dist/evaluator/index.js.map +1 -0
- package/dist/factories.d.ts +22 -0
- package/dist/factories.d.ts.map +1 -0
- package/dist/factories.js +44 -0
- package/dist/factories.js.map +1 -0
- package/dist/index.d.ts +47 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -45
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +13 -0
- package/dist/index.test.js.map +1 -0
- package/dist/schema/action.d.ts +14 -0
- package/dist/schema/action.d.ts.map +1 -0
- package/dist/schema/action.js +30 -0
- package/dist/schema/action.js.map +1 -0
- package/dist/schema/common.d.ts +37 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +20 -0
- package/dist/schema/common.js.map +1 -0
- package/dist/schema/computed.d.ts +23 -0
- package/dist/schema/computed.d.ts.map +1 -0
- package/dist/schema/computed.js +34 -0
- package/dist/schema/computed.js.map +1 -0
- package/dist/schema/domain.d.ts +50 -0
- package/dist/schema/domain.d.ts.map +1 -0
- package/dist/schema/domain.js +60 -0
- package/dist/schema/domain.js.map +1 -0
- package/dist/schema/expr.d.ts +303 -0
- package/dist/schema/expr.d.ts.map +1 -0
- package/dist/schema/expr.js +283 -0
- package/dist/schema/expr.js.map +1 -0
- package/dist/schema/field.d.ts +48 -0
- package/dist/schema/field.d.ts.map +1 -0
- package/dist/schema/field.js +31 -0
- package/dist/schema/field.js.map +1 -0
- package/dist/schema/flow.d.ts +103 -0
- package/dist/schema/flow.d.ts.map +1 -0
- package/dist/schema/flow.js +82 -0
- package/dist/schema/flow.js.map +1 -0
- package/dist/schema/host-context.d.ts +12 -0
- package/dist/schema/host-context.d.ts.map +1 -0
- package/dist/schema/host-context.js +23 -0
- package/dist/schema/host-context.js.map +1 -0
- package/dist/schema/index.d.ts +13 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +25 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/patch.d.ts +59 -0
- package/dist/schema/patch.d.ts.map +1 -0
- package/dist/schema/patch.js +60 -0
- package/dist/schema/patch.js.map +1 -0
- package/dist/schema/result.d.ts +142 -0
- package/dist/schema/result.d.ts.map +1 -0
- package/dist/schema/result.js +94 -0
- package/dist/schema/result.js.map +1 -0
- package/dist/schema/snapshot.d.ts +153 -0
- package/dist/schema/snapshot.d.ts.map +1 -0
- package/dist/schema/snapshot.js +160 -0
- package/dist/schema/snapshot.js.map +1 -0
- package/dist/schema/trace.d.ts +98 -0
- package/dist/schema/trace.d.ts.map +1 -0
- package/dist/schema/trace.js +90 -0
- package/dist/schema/trace.js.map +1 -0
- package/dist/schema/type-spec.d.ts +34 -0
- package/dist/schema/type-spec.d.ts.map +1 -0
- package/dist/schema/type-spec.js +40 -0
- package/dist/schema/type-spec.js.map +1 -0
- package/dist/utils/canonical.d.ts +37 -0
- package/dist/utils/canonical.d.ts.map +1 -0
- package/dist/utils/canonical.js +122 -0
- package/dist/utils/canonical.js.map +1 -0
- package/dist/utils/canonical.test.d.ts +2 -0
- package/dist/utils/canonical.test.d.ts.map +1 -0
- package/dist/utils/canonical.test.js +183 -0
- package/dist/utils/canonical.test.js.map +1 -0
- package/dist/utils/hash.d.ts +28 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +152 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/hash.test.d.ts +2 -0
- package/dist/utils/hash.test.d.ts.map +1 -0
- package/dist/utils/hash.test.js +170 -0
- package/dist/utils/hash.test.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/path.d.ts +40 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +132 -0
- package/dist/utils/path.js.map +1 -0
- package/dist/utils/path.test.d.ts +2 -0
- package/dist/utils/path.test.d.ts.map +1 -0
- package/dist/utils/path.test.js +191 -0
- package/dist/utils/path.test.js.map +1 -0
- package/package.json +28 -41
- package/LICENSE +0 -21
- package/dist/dag/graph.d.ts +0 -62
- package/dist/dag/graph.d.ts.map +0 -1
- package/dist/dag/graph.js +0 -244
- package/dist/dag/graph.js.map +0 -1
- package/dist/dag/index.d.ts +0 -4
- package/dist/dag/index.d.ts.map +0 -1
- package/dist/dag/index.js +0 -4
- package/dist/dag/index.js.map +0 -1
- package/dist/dag/propagation.d.ts +0 -58
- package/dist/dag/propagation.d.ts.map +0 -1
- package/dist/dag/propagation.js +0 -224
- package/dist/dag/propagation.js.map +0 -1
- package/dist/dag/topological.d.ts +0 -33
- package/dist/dag/topological.d.ts.map +0 -1
- package/dist/dag/topological.js +0 -173
- package/dist/dag/topological.js.map +0 -1
- package/dist/domain/define.d.ts +0 -82
- package/dist/domain/define.d.ts.map +0 -1
- package/dist/domain/define.js +0 -105
- package/dist/domain/define.js.map +0 -1
- package/dist/domain/index.d.ts +0 -4
- package/dist/domain/index.d.ts.map +0 -1
- package/dist/domain/index.js +0 -4
- package/dist/domain/index.js.map +0 -1
- package/dist/domain/types.d.ts +0 -203
- package/dist/domain/types.d.ts.map +0 -1
- package/dist/domain/types.js +0 -2
- package/dist/domain/types.js.map +0 -1
- package/dist/domain/validate.d.ts +0 -17
- package/dist/domain/validate.d.ts.map +0 -1
- package/dist/domain/validate.js +0 -204
- package/dist/domain/validate.js.map +0 -1
- package/dist/effect/index.d.ts +0 -4
- package/dist/effect/index.d.ts.map +0 -1
- package/dist/effect/index.js +0 -4
- package/dist/effect/index.js.map +0 -1
- package/dist/effect/result.d.ts +0 -100
- package/dist/effect/result.d.ts.map +0 -1
- package/dist/effect/result.js +0 -163
- package/dist/effect/result.js.map +0 -1
- package/dist/effect/runner.d.ts +0 -98
- package/dist/effect/runner.d.ts.map +0 -1
- package/dist/effect/runner.js +0 -321
- package/dist/effect/runner.js.map +0 -1
- package/dist/effect/types.d.ts +0 -169
- package/dist/effect/types.d.ts.map +0 -1
- package/dist/effect/types.js +0 -28
- package/dist/effect/types.js.map +0 -1
- package/dist/expression/analyzer.d.ts +0 -42
- package/dist/expression/analyzer.d.ts.map +0 -1
- package/dist/expression/analyzer.js +0 -166
- package/dist/expression/analyzer.js.map +0 -1
- package/dist/expression/evaluator.d.ts +0 -16
- package/dist/expression/evaluator.d.ts.map +0 -1
- package/dist/expression/evaluator.js +0 -382
- package/dist/expression/evaluator.js.map +0 -1
- package/dist/expression/index.d.ts +0 -5
- package/dist/expression/index.d.ts.map +0 -1
- package/dist/expression/index.js +0 -5
- package/dist/expression/index.js.map +0 -1
- package/dist/expression/parser.d.ts +0 -37
- package/dist/expression/parser.d.ts.map +0 -1
- package/dist/expression/parser.js +0 -201
- package/dist/expression/parser.js.map +0 -1
- package/dist/expression/types.d.ts +0 -123
- package/dist/expression/types.d.ts.map +0 -1
- package/dist/expression/types.js +0 -10
- package/dist/expression/types.js.map +0 -1
- package/dist/policy/field-policy.d.ts +0 -63
- package/dist/policy/field-policy.d.ts.map +0 -1
- package/dist/policy/field-policy.js +0 -138
- package/dist/policy/field-policy.js.map +0 -1
- package/dist/policy/index.d.ts +0 -3
- package/dist/policy/index.d.ts.map +0 -1
- package/dist/policy/index.js +0 -3
- package/dist/policy/index.js.map +0 -1
- package/dist/policy/precondition.d.ts +0 -58
- package/dist/policy/precondition.d.ts.map +0 -1
- package/dist/policy/precondition.js +0 -115
- package/dist/policy/precondition.js.map +0 -1
- package/dist/runtime/index.d.ts +0 -4
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js +0 -4
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/runtime.d.ts +0 -94
- package/dist/runtime/runtime.d.ts.map +0 -1
- package/dist/runtime/runtime.js +0 -294
- package/dist/runtime/runtime.js.map +0 -1
- package/dist/runtime/snapshot.d.ts +0 -39
- package/dist/runtime/snapshot.d.ts.map +0 -1
- package/dist/runtime/snapshot.js +0 -264
- package/dist/runtime/snapshot.js.map +0 -1
- package/dist/runtime/subscription.d.ts +0 -82
- package/dist/runtime/subscription.d.ts.map +0 -1
- package/dist/runtime/subscription.js +0 -222
- package/dist/runtime/subscription.js.map +0 -1
- package/dist/schema/integration.d.ts +0 -89
- package/dist/schema/integration.d.ts.map +0 -1
- package/dist/schema/integration.js +0 -171
- package/dist/schema/integration.js.map +0 -1
- package/dist/schema/validation.d.ts +0 -51
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/schema/validation.js +0 -212
- package/dist/schema/validation.js.map +0 -1
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Expression DSL Types
|
|
3
|
-
*
|
|
4
|
-
* MapGL-like 선언적 표현식 언어
|
|
5
|
-
* - JSON-serializable (코드가 아닌 데이터)
|
|
6
|
-
* - Side-effect 없음 (순수 함수)
|
|
7
|
-
* - 정적 분석 가능 (의존성 추출, AI 파싱)
|
|
8
|
-
*/
|
|
9
|
-
import type { SemanticPath } from '../domain/types.js';
|
|
10
|
-
/** 리터럴 값 */
|
|
11
|
-
export type LiteralExpr = string | number | boolean | null;
|
|
12
|
-
/** 경로로 값 읽기 */
|
|
13
|
-
export type GetExpr = ['get', SemanticPath];
|
|
14
|
-
/** 비교 연산자 */
|
|
15
|
-
export type EqExpr = ['==', Expression, Expression];
|
|
16
|
-
export type NeqExpr = ['!=', Expression, Expression];
|
|
17
|
-
export type GtExpr = ['>', Expression, Expression];
|
|
18
|
-
export type GteExpr = ['>=', Expression, Expression];
|
|
19
|
-
export type LtExpr = ['<', Expression, Expression];
|
|
20
|
-
export type LteExpr = ['<=', Expression, Expression];
|
|
21
|
-
export type ComparisonExpr = EqExpr | NeqExpr | GtExpr | GteExpr | LtExpr | LteExpr;
|
|
22
|
-
/** 논리 연산자 */
|
|
23
|
-
export type NotExpr = ['!', Expression];
|
|
24
|
-
export type AllExpr = ['all', ...Expression[]];
|
|
25
|
-
export type AnyExpr = ['any', ...Expression[]];
|
|
26
|
-
export type LogicalExpr = NotExpr | AllExpr | AnyExpr;
|
|
27
|
-
/** 산술 연산자 */
|
|
28
|
-
export type AddExpr = ['+', Expression, Expression];
|
|
29
|
-
export type SubExpr = ['-', Expression, Expression];
|
|
30
|
-
export type MulExpr = ['*', Expression, Expression];
|
|
31
|
-
export type DivExpr = ['/', Expression, Expression];
|
|
32
|
-
export type ModExpr = ['%', Expression, Expression];
|
|
33
|
-
export type ArithmeticExpr = AddExpr | SubExpr | MulExpr | DivExpr | ModExpr;
|
|
34
|
-
/** Case clause: [condition, result] */
|
|
35
|
-
export type CaseClause = [Expression, Expression];
|
|
36
|
-
/** Match clause: [pattern, result] */
|
|
37
|
-
export type MatchClause = [Expression, Expression];
|
|
38
|
-
/** case: if-else chain */
|
|
39
|
-
export type CaseExpr = ['case', ...CaseClause[], Expression];
|
|
40
|
-
/** match: pattern match */
|
|
41
|
-
export type MatchExpr = ['match', Expression, ...MatchClause[], Expression];
|
|
42
|
-
/** coalesce: first non-null */
|
|
43
|
-
export type CoalesceExpr = ['coalesce', ...Expression[]];
|
|
44
|
-
export type ConditionalExpr = CaseExpr | MatchExpr | CoalesceExpr;
|
|
45
|
-
export type ConcatExpr = ['concat', ...Expression[]];
|
|
46
|
-
export type UpperExpr = ['upper', Expression];
|
|
47
|
-
export type LowerExpr = ['lower', Expression];
|
|
48
|
-
export type TrimExpr = ['trim', Expression];
|
|
49
|
-
export type SliceExpr = ['slice', Expression, number, number?];
|
|
50
|
-
export type SplitExpr = ['split', Expression, string];
|
|
51
|
-
export type JoinExpr = ['join', Expression, string];
|
|
52
|
-
export type MatchesExpr = ['matches', Expression, string];
|
|
53
|
-
export type ReplaceExpr = ['replace', Expression, string, string];
|
|
54
|
-
export type StringFn = ConcatExpr | UpperExpr | LowerExpr | TrimExpr | SliceExpr | SplitExpr | JoinExpr | MatchesExpr | ReplaceExpr;
|
|
55
|
-
export type LengthExpr = ['length', Expression];
|
|
56
|
-
export type AtExpr = ['at', Expression, number];
|
|
57
|
-
export type FirstExpr = ['first', Expression];
|
|
58
|
-
export type LastExpr = ['last', Expression];
|
|
59
|
-
export type IncludesExpr = ['includes', Expression, Expression];
|
|
60
|
-
export type IndexOfExpr = ['indexOf', Expression, Expression];
|
|
61
|
-
export type MapExpr = ['map', Expression, Expression];
|
|
62
|
-
export type FilterExpr = ['filter', Expression, Expression];
|
|
63
|
-
export type EveryExpr = ['every', Expression, Expression];
|
|
64
|
-
export type SomeExpr = ['some', Expression, Expression];
|
|
65
|
-
export type ReduceExpr = ['reduce', Expression, Expression, Expression];
|
|
66
|
-
export type FlattenExpr = ['flatten', Expression];
|
|
67
|
-
export type UniqueExpr = ['unique', Expression];
|
|
68
|
-
export type SortExpr = ['sort', Expression, Expression?];
|
|
69
|
-
export type ReverseExpr = ['reverse', Expression];
|
|
70
|
-
export type ArrayFn = LengthExpr | AtExpr | FirstExpr | LastExpr | IncludesExpr | IndexOfExpr | MapExpr | FilterExpr | EveryExpr | SomeExpr | ReduceExpr | FlattenExpr | UniqueExpr | SortExpr | ReverseExpr;
|
|
71
|
-
export type SumExpr = ['sum', Expression];
|
|
72
|
-
export type MinExpr = ['min', Expression];
|
|
73
|
-
export type MaxExpr = ['max', Expression];
|
|
74
|
-
export type AvgExpr = ['avg', Expression];
|
|
75
|
-
export type CountExpr = ['count', Expression];
|
|
76
|
-
export type RoundExpr = ['round', Expression, number?];
|
|
77
|
-
export type FloorExpr = ['floor', Expression];
|
|
78
|
-
export type CeilExpr = ['ceil', Expression];
|
|
79
|
-
export type AbsExpr = ['abs', Expression];
|
|
80
|
-
export type ClampExpr = ['clamp', Expression, number, number];
|
|
81
|
-
export type NumberFn = SumExpr | MinExpr | MaxExpr | AvgExpr | CountExpr | RoundExpr | FloorExpr | CeilExpr | AbsExpr | ClampExpr;
|
|
82
|
-
export type HasExpr = ['has', Expression, string];
|
|
83
|
-
export type KeysExpr = ['keys', Expression];
|
|
84
|
-
export type ValuesExpr = ['values', Expression];
|
|
85
|
-
export type EntriesExpr = ['entries', Expression];
|
|
86
|
-
export type PickExpr = ['pick', Expression, ...string[]];
|
|
87
|
-
export type OmitExpr = ['omit', Expression, ...string[]];
|
|
88
|
-
export type ObjectFn = HasExpr | KeysExpr | ValuesExpr | EntriesExpr | PickExpr | OmitExpr;
|
|
89
|
-
export type IsNullExpr = ['isNull', Expression];
|
|
90
|
-
export type IsNumberExpr = ['isNumber', Expression];
|
|
91
|
-
export type IsStringExpr = ['isString', Expression];
|
|
92
|
-
export type IsArrayExpr = ['isArray', Expression];
|
|
93
|
-
export type IsObjectExpr = ['isObject', Expression];
|
|
94
|
-
export type ToNumberExpr = ['toNumber', Expression];
|
|
95
|
-
export type ToStringExpr = ['toString', Expression];
|
|
96
|
-
export type TypeFn = IsNullExpr | IsNumberExpr | IsStringExpr | IsArrayExpr | IsObjectExpr | ToNumberExpr | ToStringExpr;
|
|
97
|
-
export type NowExpr = ['now'];
|
|
98
|
-
export type DateExpr = ['date', Expression];
|
|
99
|
-
export type YearExpr = ['year', Expression];
|
|
100
|
-
export type MonthExpr = ['month', Expression];
|
|
101
|
-
export type DayExpr = ['day', Expression];
|
|
102
|
-
export type DiffExpr = ['diff', Expression, Expression, string];
|
|
103
|
-
export type DateFn = NowExpr | DateExpr | YearExpr | MonthExpr | DayExpr | DiffExpr;
|
|
104
|
-
export type OperatorExpr = ComparisonExpr | LogicalExpr | ArithmeticExpr;
|
|
105
|
-
export type FunctionExpr = ConditionalExpr | StringFn | ArrayFn | NumberFn | ObjectFn | TypeFn | DateFn;
|
|
106
|
-
/**
|
|
107
|
-
* Expression: MapGL-like 선언적 표현식
|
|
108
|
-
*/
|
|
109
|
-
export type Expression = LiteralExpr | GetExpr | OperatorExpr | FunctionExpr;
|
|
110
|
-
/**
|
|
111
|
-
* EvaluationContext: Expression 평가에 필요한 컨텍스트
|
|
112
|
-
*/
|
|
113
|
-
export type EvaluationContext = {
|
|
114
|
-
/** 모든 경로의 값을 조회하는 함수 */
|
|
115
|
-
get: (path: SemanticPath) => unknown;
|
|
116
|
-
/** 현재 컨텍스트 값 (map/filter 내부에서 사용) */
|
|
117
|
-
current?: unknown;
|
|
118
|
-
/** 현재 인덱스 (map/filter 내부에서 사용) */
|
|
119
|
-
index?: number;
|
|
120
|
-
/** 누적값 (reduce에서 사용) */
|
|
121
|
-
accumulator?: unknown;
|
|
122
|
-
};
|
|
123
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/expression/types.ts"],"names":[],"mappings":"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"}
|
package/dist/expression/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/expression/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import type { SemanticPath, ConditionRef, FieldPolicy } from '../domain/types.js';
|
|
2
|
-
import type { EvaluationContext } from '../expression/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* FieldPolicyEvaluation: 필드 정책 평가 결과
|
|
5
|
-
*/
|
|
6
|
-
export type FieldPolicyEvaluation = {
|
|
7
|
-
/** 이 필드가 현재 의미있는지 (표시할지) */
|
|
8
|
-
relevant: boolean;
|
|
9
|
-
relevantReason?: string;
|
|
10
|
-
relevantConditions?: ConditionEvaluationDetail[];
|
|
11
|
-
/** 이 필드가 현재 수정 가능한지 */
|
|
12
|
-
editable: boolean;
|
|
13
|
-
editableReason?: string;
|
|
14
|
-
editableConditions?: ConditionEvaluationDetail[];
|
|
15
|
-
/** 이 필드가 현재 필수인지 */
|
|
16
|
-
required: boolean;
|
|
17
|
-
requiredReason?: string;
|
|
18
|
-
requiredConditions?: ConditionEvaluationDetail[];
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* ConditionEvaluationDetail: 조건 평가 상세
|
|
22
|
-
*/
|
|
23
|
-
export type ConditionEvaluationDetail = {
|
|
24
|
-
condition: ConditionRef;
|
|
25
|
-
actualValue: unknown;
|
|
26
|
-
satisfied: boolean;
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* 필드 정책 평가
|
|
30
|
-
*/
|
|
31
|
-
export declare function evaluateFieldPolicy(policy: FieldPolicy | undefined, ctx: EvaluationContext): FieldPolicyEvaluation;
|
|
32
|
-
/**
|
|
33
|
-
* UI 표현을 위한 필드 상태
|
|
34
|
-
*/
|
|
35
|
-
export type FieldUIState = {
|
|
36
|
-
/** 보여야 하는지 */
|
|
37
|
-
visible: boolean;
|
|
38
|
-
/** 활성화 상태인지 */
|
|
39
|
-
enabled: boolean;
|
|
40
|
-
/** 필수 표시를 보여야 하는지 */
|
|
41
|
-
showRequired: boolean;
|
|
42
|
-
/** 비활성화 이유 (있으면) */
|
|
43
|
-
disabledReason?: string;
|
|
44
|
-
/** 숨김 이유 (있으면) */
|
|
45
|
-
hiddenReason?: string;
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* 필드 정책을 UI 상태로 변환
|
|
49
|
-
*/
|
|
50
|
-
export declare function policyToUIState(evaluation: FieldPolicyEvaluation): FieldUIState;
|
|
51
|
-
/**
|
|
52
|
-
* 필드 정책의 의존성 추출
|
|
53
|
-
*/
|
|
54
|
-
export declare function extractFieldPolicyDependencies(policy: FieldPolicy): SemanticPath[];
|
|
55
|
-
/**
|
|
56
|
-
* 다중 필드 정책 평가 (배치)
|
|
57
|
-
*/
|
|
58
|
-
export declare function evaluateMultipleFieldPolicies(policies: Record<SemanticPath, FieldPolicy | undefined>, ctx: EvaluationContext): Record<SemanticPath, FieldPolicyEvaluation>;
|
|
59
|
-
/**
|
|
60
|
-
* AI용 필드 정책 설명 생성
|
|
61
|
-
*/
|
|
62
|
-
export declare function explainFieldPolicy(path: SemanticPath, evaluation: FieldPolicyEvaluation): string;
|
|
63
|
-
//# sourceMappingURL=field-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-policy.d.ts","sourceRoot":"","sources":["../../src/policy/field-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEjD,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEjD,oBAAoB;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,GAAG,EAAE,iBAAiB,GACrB,qBAAqB,CA0BvB;AA+CD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,cAAc;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,qBAAqB,GAAG,YAAY,CAQ/E;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,WAAW,GAAG,YAAY,EAAE,CAgBlF;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC,EACvD,GAAG,EAAE,iBAAiB,GACrB,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAQ7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,qBAAqB,GAChC,MAAM,CA4CR"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 필드 정책 평가
|
|
3
|
-
*/
|
|
4
|
-
export function evaluateFieldPolicy(policy, ctx) {
|
|
5
|
-
if (!policy) {
|
|
6
|
-
return {
|
|
7
|
-
relevant: true,
|
|
8
|
-
editable: true,
|
|
9
|
-
required: false,
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
const relevantResult = evaluateConditionList(policy.relevantWhen, ctx, true);
|
|
13
|
-
const editableResult = evaluateConditionList(policy.editableWhen, ctx, true);
|
|
14
|
-
const requiredResult = evaluateConditionList(policy.requiredWhen, ctx, false);
|
|
15
|
-
return {
|
|
16
|
-
relevant: relevantResult.satisfied,
|
|
17
|
-
relevantReason: relevantResult.reason,
|
|
18
|
-
relevantConditions: relevantResult.details,
|
|
19
|
-
editable: editableResult.satisfied,
|
|
20
|
-
editableReason: editableResult.reason,
|
|
21
|
-
editableConditions: editableResult.details,
|
|
22
|
-
required: requiredResult.satisfied,
|
|
23
|
-
requiredReason: requiredResult.reason,
|
|
24
|
-
requiredConditions: requiredResult.details,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 조건 목록 평가
|
|
29
|
-
*/
|
|
30
|
-
function evaluateConditionList(conditions, ctx, defaultValue) {
|
|
31
|
-
if (!conditions || conditions.length === 0) {
|
|
32
|
-
return { satisfied: defaultValue, details: [] };
|
|
33
|
-
}
|
|
34
|
-
const details = [];
|
|
35
|
-
let firstUnsatisfiedReason;
|
|
36
|
-
for (const condition of conditions) {
|
|
37
|
-
const actualValue = ctx.get(condition.path);
|
|
38
|
-
const actualBoolean = Boolean(actualValue);
|
|
39
|
-
const expectedBoolean = condition.expect !== 'false';
|
|
40
|
-
const satisfied = actualBoolean === expectedBoolean;
|
|
41
|
-
details.push({
|
|
42
|
-
condition,
|
|
43
|
-
actualValue,
|
|
44
|
-
satisfied,
|
|
45
|
-
});
|
|
46
|
-
if (!satisfied && !firstUnsatisfiedReason) {
|
|
47
|
-
firstUnsatisfiedReason = condition.reason;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const allSatisfied = details.every((d) => d.satisfied);
|
|
51
|
-
return {
|
|
52
|
-
satisfied: allSatisfied,
|
|
53
|
-
reason: allSatisfied ? undefined : firstUnsatisfiedReason,
|
|
54
|
-
details,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* 필드 정책을 UI 상태로 변환
|
|
59
|
-
*/
|
|
60
|
-
export function policyToUIState(evaluation) {
|
|
61
|
-
return {
|
|
62
|
-
visible: evaluation.relevant,
|
|
63
|
-
enabled: evaluation.relevant && evaluation.editable,
|
|
64
|
-
showRequired: evaluation.relevant && evaluation.required,
|
|
65
|
-
disabledReason: evaluation.editable ? undefined : evaluation.editableReason,
|
|
66
|
-
hiddenReason: evaluation.relevant ? undefined : evaluation.relevantReason,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* 필드 정책의 의존성 추출
|
|
71
|
-
*/
|
|
72
|
-
export function extractFieldPolicyDependencies(policy) {
|
|
73
|
-
const deps = new Set();
|
|
74
|
-
for (const cond of policy.relevantWhen ?? []) {
|
|
75
|
-
deps.add(cond.path);
|
|
76
|
-
}
|
|
77
|
-
for (const cond of policy.editableWhen ?? []) {
|
|
78
|
-
deps.add(cond.path);
|
|
79
|
-
}
|
|
80
|
-
for (const cond of policy.requiredWhen ?? []) {
|
|
81
|
-
deps.add(cond.path);
|
|
82
|
-
}
|
|
83
|
-
return [...deps];
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* 다중 필드 정책 평가 (배치)
|
|
87
|
-
*/
|
|
88
|
-
export function evaluateMultipleFieldPolicies(policies, ctx) {
|
|
89
|
-
const results = {};
|
|
90
|
-
for (const [path, policy] of Object.entries(policies)) {
|
|
91
|
-
results[path] = evaluateFieldPolicy(policy, ctx);
|
|
92
|
-
}
|
|
93
|
-
return results;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* AI용 필드 정책 설명 생성
|
|
97
|
-
*/
|
|
98
|
-
export function explainFieldPolicy(path, evaluation) {
|
|
99
|
-
const lines = [];
|
|
100
|
-
lines.push(`Field: ${path}`);
|
|
101
|
-
lines.push('');
|
|
102
|
-
// Relevance
|
|
103
|
-
lines.push(`Relevant: ${evaluation.relevant ? 'Yes' : 'No'}`);
|
|
104
|
-
if (!evaluation.relevant) {
|
|
105
|
-
lines.push(` Reason: ${evaluation.relevantReason ?? 'Condition not met'}`);
|
|
106
|
-
if (evaluation.relevantConditions) {
|
|
107
|
-
for (const detail of evaluation.relevantConditions) {
|
|
108
|
-
if (!detail.satisfied) {
|
|
109
|
-
lines.push(` - ${detail.condition.path}: expected ${detail.condition.expect ?? 'true'}, got ${Boolean(detail.actualValue)}`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Editable
|
|
115
|
-
lines.push(`Editable: ${evaluation.editable ? 'Yes' : 'No'}`);
|
|
116
|
-
if (!evaluation.editable) {
|
|
117
|
-
lines.push(` Reason: ${evaluation.editableReason ?? 'Condition not met'}`);
|
|
118
|
-
if (evaluation.editableConditions) {
|
|
119
|
-
for (const detail of evaluation.editableConditions) {
|
|
120
|
-
if (!detail.satisfied) {
|
|
121
|
-
lines.push(` - ${detail.condition.path}: expected ${detail.condition.expect ?? 'true'}, got ${Boolean(detail.actualValue)}`);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
// Required
|
|
127
|
-
lines.push(`Required: ${evaluation.required ? 'Yes' : 'No'}`);
|
|
128
|
-
if (evaluation.required && evaluation.requiredConditions) {
|
|
129
|
-
lines.push(' Because:');
|
|
130
|
-
for (const detail of evaluation.requiredConditions) {
|
|
131
|
-
if (detail.satisfied) {
|
|
132
|
-
lines.push(` - ${detail.condition.path} = ${JSON.stringify(detail.actualValue)}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
return lines.join('\n');
|
|
137
|
-
}
|
|
138
|
-
//# sourceMappingURL=field-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-policy.js","sourceRoot":"","sources":["../../src/policy/field-policy.ts"],"names":[],"mappings":"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"}
|
package/dist/policy/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
package/dist/policy/index.js
DELETED
package/dist/policy/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/policy/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import type { SemanticPath, ConditionRef, ActionDefinition } from '../domain/types.js';
|
|
2
|
-
import type { EvaluationContext } from '../expression/types.js';
|
|
3
|
-
/**
|
|
4
|
-
* PreconditionEvaluationResult: 전제조건 평가 결과
|
|
5
|
-
*/
|
|
6
|
-
export type PreconditionEvaluationResult = {
|
|
7
|
-
/** 조건 참조 */
|
|
8
|
-
condition: ConditionRef;
|
|
9
|
-
/** 실제 평가된 값 */
|
|
10
|
-
actualValue: unknown;
|
|
11
|
-
/** 조건 충족 여부 */
|
|
12
|
-
satisfied: boolean;
|
|
13
|
-
/** 디버그 정보 */
|
|
14
|
-
debug?: {
|
|
15
|
-
path: SemanticPath;
|
|
16
|
-
expectedBoolean: boolean;
|
|
17
|
-
actualBoolean: boolean;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* ActionAvailability: 액션 실행 가능성
|
|
22
|
-
*/
|
|
23
|
-
export type ActionAvailability = {
|
|
24
|
-
/** 실행 가능 여부 */
|
|
25
|
-
available: boolean;
|
|
26
|
-
/** 충족되지 않은 조건들 */
|
|
27
|
-
unsatisfiedConditions: PreconditionEvaluationResult[];
|
|
28
|
-
/** 사람이 읽을 수 있는 이유 */
|
|
29
|
-
reasons: string[];
|
|
30
|
-
/** AI용 상세 설명 */
|
|
31
|
-
explanation: string;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* 전제조건 평가
|
|
35
|
-
*/
|
|
36
|
-
export declare function evaluatePrecondition(condition: ConditionRef, ctx: EvaluationContext): PreconditionEvaluationResult;
|
|
37
|
-
/**
|
|
38
|
-
* 모든 전제조건 평가
|
|
39
|
-
*/
|
|
40
|
-
export declare function evaluateAllPreconditions(conditions: ConditionRef[], ctx: EvaluationContext): PreconditionEvaluationResult[];
|
|
41
|
-
/**
|
|
42
|
-
* 액션 실행 가능성 확인
|
|
43
|
-
*/
|
|
44
|
-
export declare function checkActionAvailability(action: ActionDefinition, ctx: EvaluationContext): ActionAvailability;
|
|
45
|
-
/**
|
|
46
|
-
* 전제조건 의존성 추출
|
|
47
|
-
*/
|
|
48
|
-
export declare function extractPreconditionDependencies(conditions: ConditionRef[]): SemanticPath[];
|
|
49
|
-
/**
|
|
50
|
-
* 전제조건 충족을 위한 필요 변경 분석
|
|
51
|
-
*/
|
|
52
|
-
export declare function analyzePreconditionRequirements(unsatisfied: PreconditionEvaluationResult[]): Array<{
|
|
53
|
-
path: SemanticPath;
|
|
54
|
-
currentValue: unknown;
|
|
55
|
-
requiredValue: boolean;
|
|
56
|
-
reason?: string;
|
|
57
|
-
}>;
|
|
58
|
-
//# sourceMappingURL=precondition.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"precondition.d.ts","sourceRoot":"","sources":["../../src/policy/precondition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,YAAY;IACZ,SAAS,EAAE,YAAY,CAAC;IACxB,eAAe;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa;IACb,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,YAAY,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB;IAClB,qBAAqB,EAAE,4BAA4B,EAAE,CAAC;IACtD,qBAAqB;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,YAAY,EACvB,GAAG,EAAE,iBAAiB,GACrB,4BAA4B,CAgB9B;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,YAAY,EAAE,EAC1B,GAAG,EAAE,iBAAiB,GACrB,4BAA4B,EAAE,CAEhC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,iBAAiB,GACrB,kBAAkB,CAuCpB;AA8CD;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,YAAY,EAAE,GACzB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,4BAA4B,EAAE,GAC1C,KAAK,CAAC;IACP,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CAOD"}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { evaluate } from '../expression/evaluator.js';
|
|
2
|
-
/**
|
|
3
|
-
* 전제조건 평가
|
|
4
|
-
*/
|
|
5
|
-
export function evaluatePrecondition(condition, ctx) {
|
|
6
|
-
const actualValue = ctx.get(condition.path);
|
|
7
|
-
const actualBoolean = Boolean(actualValue);
|
|
8
|
-
const expectedBoolean = condition.expect !== 'false';
|
|
9
|
-
const satisfied = actualBoolean === expectedBoolean;
|
|
10
|
-
return {
|
|
11
|
-
condition,
|
|
12
|
-
actualValue,
|
|
13
|
-
satisfied,
|
|
14
|
-
debug: {
|
|
15
|
-
path: condition.path,
|
|
16
|
-
expectedBoolean,
|
|
17
|
-
actualBoolean,
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 모든 전제조건 평가
|
|
23
|
-
*/
|
|
24
|
-
export function evaluateAllPreconditions(conditions, ctx) {
|
|
25
|
-
return conditions.map((cond) => evaluatePrecondition(cond, ctx));
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 액션 실행 가능성 확인
|
|
29
|
-
*/
|
|
30
|
-
export function checkActionAvailability(action, ctx) {
|
|
31
|
-
if (!action.preconditions || action.preconditions.length === 0) {
|
|
32
|
-
return {
|
|
33
|
-
available: true,
|
|
34
|
-
unsatisfiedConditions: [],
|
|
35
|
-
reasons: [],
|
|
36
|
-
explanation: `Action "${action.semantic.verb}" is available with no preconditions.`,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
const results = evaluateAllPreconditions(action.preconditions, ctx);
|
|
40
|
-
const unsatisfied = results.filter((r) => !r.satisfied);
|
|
41
|
-
if (unsatisfied.length === 0) {
|
|
42
|
-
return {
|
|
43
|
-
available: true,
|
|
44
|
-
unsatisfiedConditions: [],
|
|
45
|
-
reasons: [],
|
|
46
|
-
explanation: `Action "${action.semantic.verb}" is available. All ${results.length} preconditions are satisfied.`,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
const reasons = unsatisfied.map((r) => {
|
|
50
|
-
if (r.condition.reason) {
|
|
51
|
-
return r.condition.reason;
|
|
52
|
-
}
|
|
53
|
-
const expected = r.condition.expect !== 'false' ? 'true' : 'false';
|
|
54
|
-
const actual = Boolean(r.actualValue) ? 'true' : 'false';
|
|
55
|
-
return `${r.condition.path} should be ${expected}, but is ${actual}`;
|
|
56
|
-
});
|
|
57
|
-
const explanation = generateExplanation(action, unsatisfied);
|
|
58
|
-
return {
|
|
59
|
-
available: false,
|
|
60
|
-
unsatisfiedConditions: unsatisfied,
|
|
61
|
-
reasons,
|
|
62
|
-
explanation,
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* AI용 설명 생성
|
|
67
|
-
*/
|
|
68
|
-
function generateExplanation(action, unsatisfied) {
|
|
69
|
-
const lines = [];
|
|
70
|
-
lines.push(`Action "${action.semantic.verb}" is NOT available.`);
|
|
71
|
-
lines.push('');
|
|
72
|
-
lines.push('Unsatisfied preconditions:');
|
|
73
|
-
for (const result of unsatisfied) {
|
|
74
|
-
const cond = result.condition;
|
|
75
|
-
const expected = cond.expect !== 'false' ? 'true' : 'false';
|
|
76
|
-
const actual = Boolean(result.actualValue) ? 'true' : 'false';
|
|
77
|
-
lines.push(` - ${cond.path}`);
|
|
78
|
-
lines.push(` Expected: ${expected}`);
|
|
79
|
-
lines.push(` Actual: ${actual} (raw: ${JSON.stringify(result.actualValue)})`);
|
|
80
|
-
if (cond.reason) {
|
|
81
|
-
lines.push(` Reason: ${cond.reason}`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
lines.push('');
|
|
85
|
-
lines.push('To enable this action:');
|
|
86
|
-
for (const result of unsatisfied) {
|
|
87
|
-
const cond = result.condition;
|
|
88
|
-
const expected = cond.expect !== 'false';
|
|
89
|
-
if (expected) {
|
|
90
|
-
lines.push(` - Make ${cond.path} evaluate to true`);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
lines.push(` - Make ${cond.path} evaluate to false`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return lines.join('\n');
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* 전제조건 의존성 추출
|
|
100
|
-
*/
|
|
101
|
-
export function extractPreconditionDependencies(conditions) {
|
|
102
|
-
return conditions.map((c) => c.path);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* 전제조건 충족을 위한 필요 변경 분석
|
|
106
|
-
*/
|
|
107
|
-
export function analyzePreconditionRequirements(unsatisfied) {
|
|
108
|
-
return unsatisfied.map((result) => ({
|
|
109
|
-
path: result.condition.path,
|
|
110
|
-
currentValue: result.actualValue,
|
|
111
|
-
requiredValue: result.condition.expect !== 'false',
|
|
112
|
-
reason: result.condition.reason,
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=precondition.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"precondition.js","sourceRoot":"","sources":["../../src/policy/precondition.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
|
package/dist/runtime/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
|