@aster-cloud/aster-lang-ts 1.0.14 → 1.0.18

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 (118) hide show
  1. package/dist/scripts/generate_error_code_docs.js +19 -9
  2. package/dist/scripts/generate_error_code_docs.js.map +1 -1
  3. package/dist/scripts/generate_error_codes.js +84 -5
  4. package/dist/scripts/generate_error_codes.js.map +1 -1
  5. package/dist/scripts/verify-lexicon-sync.js +51 -0
  6. package/dist/scripts/verify-lexicon-sync.js.map +1 -1
  7. package/dist/src/cli/commands/search.js +17 -1
  8. package/dist/src/cli/commands/search.js.map +1 -1
  9. package/dist/src/config/effect_config.d.ts.map +1 -1
  10. package/dist/src/config/effect_config.js +6 -4
  11. package/dist/src/config/effect_config.js.map +1 -1
  12. package/dist/src/config/lexicons/diagnostic-messages.d.ts +2 -0
  13. package/dist/src/config/lexicons/diagnostic-messages.d.ts.map +1 -1
  14. package/dist/src/config/lexicons/diagnostic-messages.js +9 -3
  15. package/dist/src/config/lexicons/diagnostic-messages.js.map +1 -1
  16. package/dist/src/config/lexicons/type-inference-rules.d.ts.map +1 -1
  17. package/dist/src/config/lexicons/type-inference-rules.js +8 -1
  18. package/dist/src/config/lexicons/type-inference-rules.js.map +1 -1
  19. package/dist/src/config/semantic.d.ts +13 -0
  20. package/dist/src/config/semantic.d.ts.map +1 -1
  21. package/dist/src/config/semantic.js +22 -0
  22. package/dist/src/config/semantic.js.map +1 -1
  23. package/dist/src/config/token-kind.js +1 -1
  24. package/dist/src/config/token-kind.js.map +1 -1
  25. package/dist/src/core/interpreter.js +17 -0
  26. package/dist/src/core/interpreter.js.map +1 -1
  27. package/dist/src/diagnostics/diagnostics.d.ts +6 -0
  28. package/dist/src/diagnostics/diagnostics.d.ts.map +1 -1
  29. package/dist/src/diagnostics/diagnostics.js +20 -0
  30. package/dist/src/diagnostics/diagnostics.js.map +1 -1
  31. package/dist/src/diagnostics/error_codes.d.ts +4 -2
  32. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  33. package/dist/src/diagnostics/error_codes.js +8 -4
  34. package/dist/src/diagnostics/error_codes.js.map +1 -1
  35. package/dist/src/effects/effect_inference.d.ts.map +1 -1
  36. package/dist/src/effects/effect_inference.js +62 -4
  37. package/dist/src/effects/effect_inference.js.map +1 -1
  38. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  39. package/dist/src/frontend/canonicalizer.js +95 -51
  40. package/dist/src/frontend/canonicalizer.js.map +1 -1
  41. package/dist/src/frontend/lexer.d.ts.map +1 -1
  42. package/dist/src/frontend/lexer.js +41 -5
  43. package/dist/src/frontend/lexer.js.map +1 -1
  44. package/dist/src/manifest.d.ts +4 -1
  45. package/dist/src/manifest.d.ts.map +1 -1
  46. package/dist/src/manifest.js.map +1 -1
  47. package/dist/src/package/manifest-parser.d.ts.map +1 -1
  48. package/dist/src/package/manifest-parser.js +3 -2
  49. package/dist/src/package/manifest-parser.js.map +1 -1
  50. package/dist/src/package/package-installer.d.ts.map +1 -1
  51. package/dist/src/package/package-installer.js +24 -1
  52. package/dist/src/package/package-installer.js.map +1 -1
  53. package/dist/src/parser/type-inference.d.ts.map +1 -1
  54. package/dist/src/parser/type-inference.js +15 -3
  55. package/dist/src/parser/type-inference.js.map +1 -1
  56. package/dist/src/stability/stability_gate.d.ts +68 -0
  57. package/dist/src/stability/stability_gate.d.ts.map +1 -0
  58. package/dist/src/stability/stability_gate.js +242 -0
  59. package/dist/src/stability/stability_gate.js.map +1 -0
  60. package/dist/src/typecheck/context.d.ts +19 -0
  61. package/dist/src/typecheck/context.d.ts.map +1 -1
  62. package/dist/src/typecheck/context.js +1 -1
  63. package/dist/src/typecheck/context.js.map +1 -1
  64. package/dist/src/typecheck/effects.d.ts.map +1 -1
  65. package/dist/src/typecheck/effects.js +13 -15
  66. package/dist/src/typecheck/effects.js.map +1 -1
  67. package/dist/src/typecheck/module.d.ts.map +1 -1
  68. package/dist/src/typecheck/module.js +6 -1
  69. package/dist/src/typecheck/module.js.map +1 -1
  70. package/dist/src/typecheck/pure.d.ts.map +1 -1
  71. package/dist/src/typecheck/pure.js +11 -7
  72. package/dist/src/typecheck/pure.js.map +1 -1
  73. package/dist/src/typecheck/workflow.js +4 -4
  74. package/dist/src/typecheck/workflow.js.map +1 -1
  75. package/dist/test/cli/commands/search.test.js +33 -0
  76. package/dist/test/cli/commands/search.test.js.map +1 -1
  77. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +19 -44
  78. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -1
  79. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +25 -0
  80. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -1
  81. package/dist/test/unit/config/capability-parity.test.d.ts +19 -0
  82. package/dist/test/unit/config/capability-parity.test.d.ts.map +1 -0
  83. package/dist/test/unit/config/capability-parity.test.js +117 -0
  84. package/dist/test/unit/config/capability-parity.test.js.map +1 -0
  85. package/dist/test/unit/config/config-service.test.js +7 -3
  86. package/dist/test/unit/config/config-service.test.js.map +1 -1
  87. package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts +15 -0
  88. package/dist/test/unit/diagnostics/error-codes-parity.test.d.ts.map +1 -0
  89. package/dist/test/unit/diagnostics/error-codes-parity.test.js +149 -0
  90. package/dist/test/unit/diagnostics/error-codes-parity.test.js.map +1 -0
  91. package/dist/test/unit/effect/effect-inference.test.js +43 -0
  92. package/dist/test/unit/effect/effect-inference.test.js.map +1 -1
  93. package/dist/test/unit/interpreter/interpreter.test.js +30 -0
  94. package/dist/test/unit/interpreter/interpreter.test.js.map +1 -1
  95. package/dist/test/unit/lexer/lexer.test.js +30 -0
  96. package/dist/test/unit/lexer/lexer.test.js.map +1 -1
  97. package/dist/test/unit/manifest-parser.test.js +4 -2
  98. package/dist/test/unit/manifest-parser.test.js.map +1 -1
  99. package/dist/test/unit/parser/entry-annotations.test.js +2 -2
  100. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -1
  101. package/dist/test/unit/parser/type-inference.test.js +61 -0
  102. package/dist/test/unit/parser/type-inference.test.js.map +1 -1
  103. package/dist/test/unit/stability/stability-gate.parity.test.d.ts +2 -0
  104. package/dist/test/unit/stability/stability-gate.parity.test.d.ts.map +1 -0
  105. package/dist/test/unit/stability/stability-gate.parity.test.js +34 -0
  106. package/dist/test/unit/stability/stability-gate.parity.test.js.map +1 -0
  107. package/dist/test/unit/stability/stability-gate.test.d.ts +2 -0
  108. package/dist/test/unit/stability/stability-gate.test.d.ts.map +1 -0
  109. package/dist/test/unit/stability/stability-gate.test.js +210 -0
  110. package/dist/test/unit/stability/stability-gate.test.js.map +1 -0
  111. package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts +2 -0
  112. package/dist/test/unit/typecheck/effect-prefix-injection.test.d.ts.map +1 -0
  113. package/dist/test/unit/typecheck/effect-prefix-injection.test.js +71 -0
  114. package/dist/test/unit/typecheck/effect-prefix-injection.test.js.map +1 -0
  115. package/dist/test/unit/typecheck/effects-and-capabilities.test.js +21 -0
  116. package/dist/test/unit/typecheck/effects-and-capabilities.test.js.map +1 -1
  117. package/dist/test/unit/typecheck/regression-fixes.test.js +2 -2
  118. package/package.json +1 -1
@@ -0,0 +1,242 @@
1
+ /**
2
+ * StabilityGate — 编译器强制 Stable/Experimental 边界(ADR 0031,P0-C)。
3
+ *
4
+ * spec-1.0-freeze 把语言特性分 Stable / Experimental / Excluded,承诺「Stable 集 1.x 内
5
+ * 语法+语义不变」。但编译器对 Experimental 特性零拦截 → 客户可能无意依赖 Experimental
6
+ * 特性,下版本语义变了规则悄悄坏。本 gate 扫 **Core IR**(非 typecheck、非表面 AST)找
7
+ * 5 类 Experimental 特性,产 W600 诊断,warn 默认 + strict surface 可拒。
8
+ *
9
+ * ★为何扫 Core IR(ADR 0031 §3.2):aster-api 生产路径不走 typecheck(PolicyCompiler.compile
10
+ * 只 parse+lower)——gate 若挂 typecheck,服务端 compile/激活看不到 Experimental 使用,
11
+ * strict 拒不了=假门禁。StabilityGate 是独立 pass,接所有产 Core IR 的 enforcement surface。
12
+ *
13
+ * ★遍历用 {@link DefaultCoreVisitor}(显式 switch + assertNever 穷尽守卫),非结构化反射
14
+ * 遍历(Codex 审查纠正)——Java 侧可用同款显式 switch 复刻,Core union 新增 kind 时两边都
15
+ * 编译期强制更新,漏报变编译错误而非运行时沉默。
16
+ *
17
+ * ★5 类信号全部实证在 lowered Core IR 保真:
18
+ * Workflow(Start/Wait/workflow/Await) / Import.version / Func.effectCapsExplicit /
19
+ * PiiType 节点+Func.piiLevel / annotation.name∈{example,deprecated}。
20
+ *
21
+ * ★双引擎 parity:Java 侧须实现同一 5 类检测,同源码产同 featureId+nodeKind 集(M1 exit 硬门)。
22
+ */
23
+ import { DefaultCoreVisitor } from '../core/visitor.js';
24
+ /**
25
+ * W600 诊断码。★monorepo 约束:正式单源在 `shared/error_codes.json`(generator 产双引擎
26
+ * error_codes.ts + ErrorCode.java)。本仓 error_codes.ts 是 @generated 勿手改,故此处用
27
+ * 本地常量;monorepo 上下文注册 W600 后应替换为 generated enum(ADR 0031 §3.1)。
28
+ */
29
+ export const STABILITY_EXPERIMENTAL_CODE = 'W600';
30
+ function originToSpan(origin) {
31
+ if (!origin)
32
+ return undefined;
33
+ return { start: origin.start, end: origin.end };
34
+ }
35
+ function featureMessage(featureId) {
36
+ return `Experimental feature '${featureId}' is not part of the stable surface.`;
37
+ }
38
+ function featureHelp(strict) {
39
+ return strict
40
+ ? 'Remove this feature or grant an experimental exception; strict stable mode rejects modules with W600 diagnostics.'
41
+ : 'Grant experimental support to silence this warning, or avoid this feature for stable-surface compatibility.';
42
+ }
43
+ /**
44
+ * StabilityGate visitor:扩展 DefaultCoreVisitor(显式 switch 遍历),在命中 Experimental
45
+ * 节点处 emit W600,其余交 super 递归。
46
+ */
47
+ class StabilityScanner extends DefaultCoreVisitor {
48
+ emit(ctx, featureId, origin, nodeKind, detail) {
49
+ const span = originToSpan(origin);
50
+ // 去重 key:有 span 用位置(同一节点同特性只报一条);无 span 用递增序号(不误合并)。
51
+ const posKey = span
52
+ ? `${span.start.line}:${span.start.col}-${span.end.line}:${span.end.col}`
53
+ : `seq${ctx.seq.n++}`;
54
+ const key = `${featureId}|${nodeKind}|${posKey}`;
55
+ if (ctx.seen.has(key))
56
+ return;
57
+ ctx.seen.add(key);
58
+ ctx.diagnostics.push({
59
+ severity: 'warning',
60
+ code: STABILITY_EXPERIMENTAL_CODE,
61
+ message: featureMessage(featureId),
62
+ help: featureHelp(ctx.strict),
63
+ ...(span ? { span } : {}),
64
+ data: {
65
+ featureId,
66
+ moduleName: ctx.moduleName,
67
+ strict: ctx.strict,
68
+ blocking: ctx.strict,
69
+ nodeKind,
70
+ ...(detail ? { detail } : {}),
71
+ },
72
+ });
73
+ }
74
+ visitDeclaration(d, ctx) {
75
+ if (d.kind === 'Import') {
76
+ // 2. version-import:Import.version 非空(钉版本才是 experimental)。
77
+ const version = d.version;
78
+ if (version !== null && version !== undefined) {
79
+ this.emit(ctx, 'version-import', d.origin, 'Import', {
80
+ import: d.name,
81
+ version,
82
+ asName: d.asName ?? null,
83
+ });
84
+ }
85
+ }
86
+ else if (d.kind === 'Func') {
87
+ // 3. effect-capabilities:effectCapsExplicit === true(裸 @io 是 false=Stable)。
88
+ if (d.effectCapsExplicit === true) {
89
+ this.emit(ctx, 'effect-capabilities', d.origin, 'Func', {
90
+ func: d.name,
91
+ effectCaps: d.effectCaps ?? [],
92
+ });
93
+ }
94
+ // 5. deprecated-annotation:annotation.name ∈ {example, deprecated}(大小写不敏感)。
95
+ for (const anno of d.annotations ?? []) {
96
+ const lower = anno.name?.toLowerCase();
97
+ if (lower === 'example' || lower === 'deprecated') {
98
+ this.emit(ctx, 'deprecated-annotation', anno.origin ?? d.origin, 'Annotation', {
99
+ func: d.name,
100
+ annotationName: anno.name,
101
+ });
102
+ }
103
+ }
104
+ }
105
+ // 交 super 递归 Data.fields/Func.params/ret 类型(触发 visitType)+ Func.body(触发语句/表达式)。
106
+ super.visitDeclaration(d, ctx);
107
+ // 4. PII 兜底:若某 Func **签名类型树**(params/ret,不含 body)无 PiiType,但 piiLevel
108
+ // 非空 → 报一条(span 指函数)。用显式 containsPiiType 判签名(非 diagnostics 计数差,
109
+ // Codex 复审 P2:计数差会把 body 里 Lambda 的 PII 误算进签名,且不利 Java parity)。
110
+ if (d.kind === 'Func') {
111
+ const piiLevel = d.piiLevel;
112
+ if (piiLevel !== null && piiLevel !== undefined && !funcSignatureHasPii(d)) {
113
+ this.emit(ctx, 'pii', d.origin, 'Func', { func: d.name, piiLevel });
114
+ }
115
+ }
116
+ }
117
+ visitStatement(s, ctx) {
118
+ // 1. Workflow:Start/Wait/workflow 语句。emit 后交 super 递归子节点(step body 里的 Await 等)。
119
+ if (s.kind === 'Start' || s.kind === 'Wait' || s.kind === 'workflow') {
120
+ this.emit(ctx, 'workflow', s.origin, s.kind);
121
+ }
122
+ super.visitStatement(s, ctx);
123
+ }
124
+ visitExpression(e, ctx) {
125
+ // 1. Workflow:Await 表达式。
126
+ if (e.kind === 'Await') {
127
+ this.emit(ctx, 'workflow', e.origin, 'Await');
128
+ }
129
+ // ★Lambda 的参数/返回类型 base visitor 不 visitType(Codex P1 漏报)——显式补扫。
130
+ // ret ?? retType:Core.Lambda 加了 ret,但 BaseLambda 标准字段是 retType(Java/外部
131
+ // Core JSON 可能只保留 retType,Codex 复审 P2),两者都读兜底。
132
+ if (e.kind === 'Lambda') {
133
+ const lam = e;
134
+ for (const p of lam.params ?? [])
135
+ this.visitType(p.type, ctx);
136
+ const lamRet = lam.ret ?? lam.retType;
137
+ if (lamRet)
138
+ this.visitType(lamRet, ctx);
139
+ }
140
+ super.visitExpression(e, ctx);
141
+ }
142
+ /**
143
+ * 4. PII:类型树里的 PiiType。base visitor 的 visitType 只在 Data.fields/Func.params/ret
144
+ * 处**调用**但不递归嵌套类型,故此处 emit + 手动递归子类型(List/Map/Result/TypeApp/
145
+ * FuncType/PiiType.baseType),确保嵌套 PII 也被检出。
146
+ */
147
+ visitType(t, ctx) {
148
+ if (!t || typeof t !== 'object')
149
+ return;
150
+ if (t.kind === 'PiiType') {
151
+ const pt = t;
152
+ this.emit(ctx, 'pii', pt.origin, 'PiiType', {
153
+ sensitivity: pt.sensitivity,
154
+ category: pt.category,
155
+ });
156
+ }
157
+ // 递归子类型(结构化字段名固定,Java 可复刻——非反射遍历任意 key)。
158
+ for (const child of childTypes(t)) {
159
+ this.visitType(child, ctx);
160
+ }
161
+ }
162
+ }
163
+ /** 类型树里是否含 PiiType(显式布尔,供 Func 签名 PII 兜底判定——非 diagnostics 计数差)。 */
164
+ function containsPiiType(type) {
165
+ if (!type || typeof type !== 'object')
166
+ return false;
167
+ if (type.kind === 'PiiType')
168
+ return true;
169
+ return childTypes(type).some((c) => containsPiiType(c));
170
+ }
171
+ /** Func 签名(params + ret,不含 body)类型树是否含 PiiType。 */
172
+ function funcSignatureHasPii(func) {
173
+ const params = func.params ?? [];
174
+ if (params.some((p) => containsPiiType(p.type)))
175
+ return true;
176
+ return containsPiiType(func.ret);
177
+ }
178
+ /** 取一个类型节点的直接子类型(Java 侧按同名字段复刻)。 */
179
+ function childTypes(t) {
180
+ const n = t;
181
+ const out = [];
182
+ const push = (v) => {
183
+ if (v && typeof v === 'object' && typeof v.kind === 'string') {
184
+ out.push(v);
185
+ }
186
+ };
187
+ switch (n.kind) {
188
+ case 'PiiType':
189
+ push(n.baseType);
190
+ break;
191
+ case 'Maybe':
192
+ case 'Option':
193
+ case 'List':
194
+ push(n.type);
195
+ break;
196
+ case 'Result':
197
+ push(n.ok);
198
+ push(n.err);
199
+ break;
200
+ case 'Map':
201
+ // Core.Map 字段是 key/val(非 value,Codex 核实)。
202
+ push(n.key);
203
+ push(n.val);
204
+ break;
205
+ case 'TypeApp':
206
+ for (const a of n.args ?? [])
207
+ push(a);
208
+ break;
209
+ case 'FuncType':
210
+ for (const p of n.params ?? [])
211
+ push(p);
212
+ push(n.ret);
213
+ break;
214
+ default:
215
+ // TypeName / TypeVar / EffectVar 是叶子。
216
+ break;
217
+ }
218
+ return out;
219
+ }
220
+ /**
221
+ * 扫 Core Module 找 5 类 Experimental 特性。每个触发节点一条诊断。
222
+ * 返回按 decls 顺序 + 每 decl 内 DFS 顺序(确定性,便于 parity 比对)。
223
+ */
224
+ export function scan(coreModule, options) {
225
+ if (options.allowExperimental === true)
226
+ return [];
227
+ const ctx = {
228
+ moduleName: coreModule.name ?? null,
229
+ strict: options.strict,
230
+ diagnostics: [],
231
+ seen: new Set(),
232
+ seq: { n: 0 },
233
+ };
234
+ new StabilityScanner().visitModule(coreModule, ctx);
235
+ return ctx.diagnostics;
236
+ }
237
+ /** 便捷:strict surface 判断是否应拒绝(有 W600 且 strict)。 */
238
+ export function shouldRejectForStability(diagnostics, strict) {
239
+ return strict && diagnostics.some((d) => d.code === STABILITY_EXPERIMENTAL_CODE);
240
+ }
241
+ export const StabilityGate = { scan, shouldRejectForStability };
242
+ //# sourceMappingURL=stability_gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stability_gate.js","sourceRoot":"","sources":["../../../src/stability/stability_gate.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,25 @@ export interface ModuleContext {
16
16
  funcSignatures: Map<string, FunctionSignature>;
17
17
  importedEffects: Map<string, EffectSignature>;
18
18
  moduleSearchPaths: readonly string[];
19
+ /**
20
+ * effect 推断用的 IO / CPU 名称前缀(issue #88)。
21
+ *
22
+ * <p>**由调用方注入,而非由 effects.ts 自行 import**。原因是浏览器边界:
23
+ * `browser.ts` 直接 `import { checkEffects } from './effects.js'`,而读配置的
24
+ * `typecheck/utils.ts` 静态引用了 `node:module` / `node:path`——effects.ts 一旦
25
+ * import 它,Node 内置模块就会被拉进浏览器 bundle 闭包(`pure.ts` 头注释 R15 记载
26
+ * 过这条约束:**即使包在 try/catch 里**,打包器仍会看到该引用)。
27
+ *
28
+ * 注入让两侧各取所需:Node 入口传 `getIOPrefixesCompat()` 的配置值,浏览器入口
29
+ * 留空、由 effects.ts 回落到 `pure.ts` 的内置默认值。effects.ts 因此保持
30
+ * browser-safe,同时用户自定义 effect 配置在 Node 侧真正生效。
31
+ *
32
+ * 省略时等价于内置默认值。
33
+ */
34
+ effectPrefixes?: {
35
+ readonly io: readonly string[];
36
+ readonly cpu: readonly string[];
37
+ };
19
38
  }
20
39
  export interface TypecheckWalkerContext {
21
40
  module: ModuleContext;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,IAAI,GACV,IAAI,CAcN;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAc9G"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC/C,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC9C,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CACtF;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,WAAW,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,sBAAsB,EAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,UAAU,EAChB,IAAI,CAAC,EAAE,IAAI,GACV,IAAI,CAcN;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAc9G"}
@@ -4,7 +4,7 @@ export function defineSymbol(context, name, type, kind, span) {
4
4
  const existing = context.symbols.lookupInCurrentScope(name);
5
5
  if (existing) {
6
6
  // 报告重复符号错误,而非静默覆盖
7
- context.diagnostics.error("E102" /* ErrorCode.DUPLICATE_SYMBOL */, span, {
7
+ context.diagnostics.error("E104" /* ErrorCode.DUPLICATE_SYMBOL */, span, {
8
8
  name,
9
9
  previous: existing.span,
10
10
  });
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA+BnD,MAAM,UAAU,YAAY,CAC1B,OAA+B,EAC/B,IAAY,EACZ,IAAe,EACf,IAAgB,EAChB,IAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB;QAClB,OAAO,CAAC,WAAW,CAAC,KAAK,0CAA6B,IAAI,EAAE;YAC1D,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;IACnC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,IAAY,EAAE,IAAe,EAAE,IAAW;IACtG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,WAAW,CAAC,KAAK,8CAAiC,IAAI,EAAE;YAC9D,IAAI;YACJ,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/typecheck/context.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AA+CnD,MAAM,UAAU,YAAY,CAC1B,OAA+B,EAC/B,IAAY,EACZ,IAAe,EACf,IAAgB,EAChB,IAAW;IAEX,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,QAAQ,EAAE,CAAC;QACb,kBAAkB;QAClB,OAAO,CAAC,WAAW,CAAC,KAAK,0CAA6B,IAAI,EAAE;YAC1D,IAAI;YACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,IAAI,IAAI;QAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;IACnC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA+B,EAAE,IAAY,EAAE,IAAe,EAAE,IAAW;IACtG,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,OAAO,CAAC,WAAW,CAAC,KAAK,8CAAiC,IAAI,EAAE;YAC9D,IAAI;YACJ,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YACjC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CA4BvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAyDtG;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAmDpG"}
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAIxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa1D;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAiCvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAyDtG;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,GAAG,IAAI,CA2CpG"}
@@ -1,4 +1,4 @@
1
- import { CapabilityKind } from '../config/semantic.js';
1
+ import { isCpuClassCapability, isIoClassCapability } from '../config/semantic.js';
2
2
  import { DefaultCoreVisitor, createVisitorContext } from '../core/visitor.js';
3
3
  import { CPU_PREFIXES, IO_PREFIXES, originToSpan, resolveAlias, } from './pure.js';
4
4
  import { collectCapabilities, collectWorkflows, reportWorkflowCapabilityViolation, } from './capabilities.js';
@@ -7,6 +7,9 @@ import { collectCapabilities, collectWorkflows, reportWorkflowCapabilityViolatio
7
7
  */
8
8
  export function collectEffects(ctx, block) {
9
9
  const effects = new Set();
10
+ // 未注入时回落 pure.ts 的内置默认值(浏览器路径 / 未接配置的调用方)。
11
+ const ioPrefixes = ctx.effectPrefixes?.io ?? IO_PREFIXES;
12
+ const cpuPrefixes = ctx.effectPrefixes?.cpu ?? CPU_PREFIXES;
10
13
  class EffectsVisitor extends DefaultCoreVisitor {
11
14
  visitStatement(statement, context) {
12
15
  if (statement.kind === 'workflow') {
@@ -25,9 +28,11 @@ export function collectEffects(ctx, block) {
25
28
  if (expression.kind === 'Call' && expression.target.kind === 'Name') {
26
29
  const rawName = expression.target.name;
27
30
  const resolvedName = resolveAlias(rawName, ctx.imports);
28
- if (IO_PREFIXES.some(prefix => resolvedName.startsWith(prefix)))
31
+ // 前缀由 ctx 注入(issue #88):Node 入口传配置值、浏览器入口留空回落内置默认。
32
+ // 不在此 import 配置模块——那会把 node:module/node:path 拉进浏览器 bundle。
33
+ if (ioPrefixes.some(prefix => resolvedName.startsWith(prefix)))
29
34
  effects.add('io');
30
- if (CPU_PREFIXES.some(prefix => resolvedName.startsWith(prefix)))
35
+ if (cpuPrefixes.some(prefix => resolvedName.startsWith(prefix)))
31
36
  effects.add('cpu');
32
37
  }
33
38
  super.visitExpression(expression, context);
@@ -93,18 +98,11 @@ export function checkCapabilityInferredEffects(func, diagnostics) {
93
98
  return;
94
99
  const hasIO = func.effects.some(eff => String(eff).toLowerCase() === 'io');
95
100
  const hasCPU = func.effects.some(eff => String(eff).toLowerCase() === 'cpu');
96
- // CPU-class capabilities:本地计算密集型,需要 @cpu 不需要 @io
97
- // - CPU:显式 cpu 调用
98
- // - CRYPTO:哈希/签名/加密 —— 即使包含密钥操作,也常常是 CPU 密集,
99
- // 若涉及远程 KMS 应通过显式 @io + Network/Secrets capability 标注,
100
- // 这里按 CPU 处理避免对纯本地密码学误报。
101
- const CPU_CLASS = new Set([
102
- CapabilityKind.CPU,
103
- CapabilityKind.CRYPTO,
104
- ]);
101
+ // capability 的 effect 分类走单源 CAPABILITY_EFFECT_CLASS(shared/capabilities.json)。
102
+ // io-class 需 @io;cpu-class(CPU/CRYPTO,本地计算密集)需 @cpu 或 @io。
105
103
  const ioCaps = [];
106
104
  for (const cap of observed.keys()) {
107
- if (!CPU_CLASS.has(cap)) {
105
+ if (isIoClassCapability(cap)) {
108
106
  ioCaps.push(cap);
109
107
  }
110
108
  }
@@ -120,8 +118,8 @@ export function checkCapabilityInferredEffects(func, diagnostics) {
120
118
  calls: calls || undefined,
121
119
  });
122
120
  }
123
- // CPU 类(含 Crypto)需要 @cpu 或 @io(@io 隐含可计算)
124
- const cpuClassObserved = Array.from(observed.keys()).filter(cap => CPU_CLASS.has(cap));
121
+ // cpu 类(含 Crypto)需要 @cpu 或 @io(@io 隐含可计算)
122
+ const cpuClassObserved = Array.from(observed.keys()).filter(cap => isCpuClassCapability(cap));
125
123
  if (cpuClassObserved.length > 0 && !(hasCPU || hasIO)) {
126
124
  const cpuCalls = cpuClassObserved
127
125
  .flatMap(cap => observed.get(cap) ?? [])
@@ -1 +1 @@
1
- {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../../src/typecheck/effects.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAC;AA6BtB,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CA+FjG;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,EAC/B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,mBAAmB,CAyCpD;AAED,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,IAAI,CAAC,MAAM,EACd,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,mBAAmB,EAAE,CA2CvB"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,KAAK,kBAAkB,EAKxB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAsB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAGL,KAAK,gBAAgB,EAEtB,MAAM,cAAc,CAAC;AA+BtB,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAoGjG;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,EAC/B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,GAC7B,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,mBAAmB,CAyCpD;AAED,wBAAgB,+BAA+B,CAC7C,CAAC,EAAE,IAAI,CAAC,MAAM,EACd,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,mBAAmB,EAAE,CA2CvB"}
@@ -8,7 +8,7 @@ import { defaultModuleCache } from '../lsp/module_cache.js';
8
8
  import { defineSymbol, } from './context.js';
9
9
  import { DiagnosticBuilder } from './diagnostics.js';
10
10
  import { SymbolTable } from './symbol_table.js';
11
- import { formatType, isUnknown, buildFieldTypeMap, checkEntryRuleUniqueness, normalizeModuleSearchPaths, normalizeType, typesEqual, unknownType, } from './utils.js';
11
+ import { formatType, isUnknown, buildFieldTypeMap, checkEntryRuleUniqueness, getCPUPrefixesCompat, getIOPrefixesCompat, normalizeModuleSearchPaths, normalizeType, typesEqual, unknownType, } from './utils.js';
12
12
  import { checkAsyncDiscipline } from './async.js';
13
13
  import { typecheckBlock } from './statement.js';
14
14
  import { collectCapabilities, checkCapabilities, } from './capabilities.js';
@@ -35,6 +35,11 @@ export function typecheckModule(m, options) {
35
35
  funcSignatures: new Map(),
36
36
  importedEffects: new Map(),
37
37
  moduleSearchPaths,
38
+ // issue #88:Node 路径注入**配置驱动**的 effect 前缀。effects.ts 自己不 import
39
+ // 配置模块(会把 node:module/node:path 拉进浏览器 bundle),改由这里注入;
40
+ // browser.ts 不注入,effects.ts 回落 pure.ts 内置默认值。
41
+ // module.ts 本就 import utils.js,故此处不新增任何浏览器侧暴露面。
42
+ effectPrefixes: { io: getIOPrefixesCompat(), cpu: getCPUPrefixesCompat() },
38
43
  };
39
44
  const importDecls = [];
40
45
  const fieldTypes = buildFieldTypeMap(m.decls);
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/typecheck/module.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,IAA2B,CAAC;AAC5D,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,IAAyC,CAAC;AACvE,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,IAAuC,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,IAAwC,CAAC;AAC5E,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,IAAyC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAO,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGrE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAAC,IAAI,CAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAc5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAkBlG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAK/D;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,MAAM,UAAQ,GACb,OAAO,CAYT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACpC,MAAM,UAAQ,GACb,OAAO,CAsBT;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
1
+ {"version":3,"file":"pure.d.ts","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAM3E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,IAA2B,CAAC;AAC5D,eAAO,MAAM,SAAS,EAAE,IAAI,CAAC,IAAyC,CAAC;AACvE,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,IAAuC,CAAC;AAC1E,eAAO,MAAM,eAAe,EAAE,IAAI,CAAC,IAAwC,CAAC;AAC5E,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,IAAyC,CAAC;AAE9E;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,MAAM,EAQxC,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAO,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGrE;AAED,wBAAgB,WAAW,IAAI,IAAI,CAAC,IAAI,CAEvC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAE3E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAc5F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,GAAG,mBAAmB,EAAE,CAsBlG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAEpE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAK/D;AAED,wBAAgB,UAAU,CACxB,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EAC/B,MAAM,UAAQ,GACb,OAAO,CAYT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACtC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,SAAS,GAAG,IAAI,EACpC,MAAM,UAAQ,GACb,OAAO,CAsBT;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
@@ -77,17 +77,21 @@ export function checkEntryRuleUniqueness(decls) {
77
77
  const entryFuncs = decls.filter((decl) => decl.kind === 'Func' && (decl.annotations ?? []).some(annotation => annotation.name === 'entry'));
78
78
  if (entryFuncs.length <= 1)
79
79
  return [];
80
- const first = entryFuncs[0];
81
- const second = entryFuncs[1];
80
+ // 与 Java TypeChecker.checkEntryRuleUniqueness 对齐:穷尽列出全部冲突规则名
81
+ // (逗号拼接),而非仅报前两条;诊断锚点取首个 @entry 规则的 origin。
82
+ const ruleNames = entryFuncs
83
+ .map(func => func.name)
84
+ .filter((name) => typeof name === 'string');
82
85
  const diagnostic = {
83
86
  severity: 'error',
84
- code: "MULTIPLE_ENTRY_RULES" /* ErrorCode.MULTIPLE_ENTRY_RULES */,
85
- message: `Multiple @entry rules found in module: ${first.name} and ${second.name}`,
87
+ code: "E102" /* ErrorCode.MULTIPLE_ENTRY_RULES */,
88
+ message: `Multiple @entry rules in module: ${ruleNames.join(', ')}`,
86
89
  help: 'Keep at most one Rule annotated with @entry in a module.',
87
- data: { first: first.name, second: second.name },
90
+ data: { rules: ruleNames.join(', ') },
88
91
  };
89
- if (second.origin)
90
- diagnostic.origin = second.origin;
92
+ const anchor = entryFuncs[0].origin;
93
+ if (anchor)
94
+ diagnostic.origin = anchor;
91
95
  return [diagnostic];
92
96
  }
93
97
  export function formatType(type) {
@@ -1 +1 @@
1
- {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pure.js","sourceRoot":"","sources":["../../../src/typecheck/pure.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { CapabilityKind } from '../config/semantic.js';
1
+ import { isCpuClassCapability, isIoClassCapability } from '../config/semantic.js';
2
2
  import { TypeSystem } from './type_system.js';
3
3
  import { CPU_EFFECT_TYPE, IO_EFFECT_TYPE, PURE_EFFECT_TYPE, UNIT_TYPE, formatType, isUnknown, normalizeType, originToSpan, unknownType, } from './pure.js';
4
4
  import { collectEffects } from './effects.js';
@@ -147,8 +147,8 @@ function validateCompensateBlock(context, step, bodyType, compensateType) {
147
147
  }
148
148
  }
149
149
  function workflowEffectType(context, workflow, cachedEffects) {
150
- let hasIOCap = workflow.effectCaps.some(cap => cap !== CapabilityKind.CPU);
151
- let hasCpuCap = workflow.effectCaps.some(cap => cap === CapabilityKind.CPU);
150
+ let hasIOCap = workflow.effectCaps.some(cap => isIoClassCapability(cap));
151
+ let hasCpuCap = workflow.effectCaps.some(cap => isCpuClassCapability(cap));
152
152
  if (!hasIOCap) {
153
153
  for (const step of workflow.steps) {
154
154
  // 优先使用缓存(已包含 compensate 效应),否则动态收集
@@ -242,6 +242,6 @@ function validateWorkflowMetadata(workflow, diagnostics) {
242
242
  function stepHasSideEffects(step, effects) {
243
243
  if (effects.has('io'))
244
244
  return true;
245
- return step.effectCaps.some(cap => cap !== CapabilityKind.CPU);
245
+ return step.effectCaps.some(cap => isIoClassCapability(cap));
246
246
  }
247
247
  //# sourceMappingURL=workflow.js.map