@scriptc/compiler 0.4.8 → 0.4.9

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 (536) hide show
  1. package/ambient/node-fallback/buffer.d.ts +2 -0
  2. package/ambient/node-fallback/child_process.d.ts +9 -3
  3. package/ambient/node-fallback/dns-promises.d.ts +25 -0
  4. package/ambient/node-fallback/dns.d.ts +29 -0
  5. package/ambient/node-fallback/test.d.ts +7 -0
  6. package/ambient/scriptc-node-fallback.d.ts +145 -2
  7. package/ambient/scriptc-overrides.d.ts +22 -13
  8. package/dist/backend/build-cache.d.ts +1 -1
  9. package/dist/backend/build-cache.js +1 -1
  10. package/dist/backend/build-cache.js.map +1 -1
  11. package/dist/backend/cache-root.d.ts +7 -0
  12. package/dist/backend/cache-root.js +27 -0
  13. package/dist/backend/cache-root.js.map +1 -1
  14. package/dist/backend/executable-features.js +5 -1
  15. package/dist/backend/executable-features.js.map +1 -1
  16. package/dist/backend/link-plan.js +7 -1
  17. package/dist/backend/link-plan.js.map +1 -1
  18. package/dist/backend/llvm/bytes-loop-versions.d.ts +12 -1
  19. package/dist/backend/llvm/bytes-loop-versions.js +107 -30
  20. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  21. package/dist/backend/llvm/bytes-loop-versions.test.js +96 -0
  22. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  23. package/dist/backend/llvm/checked-value-lifetimes.js +1 -0
  24. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  25. package/dist/backend/llvm/classes.d.ts +16 -5
  26. package/dist/backend/llvm/classes.js +34 -6
  27. package/dist/backend/llvm/classes.js.map +1 -1
  28. package/dist/backend/llvm/classes.test.js +21 -2
  29. package/dist/backend/llvm/classes.test.js.map +1 -1
  30. package/dist/backend/llvm/common.d.ts +9 -0
  31. package/dist/backend/llvm/common.js +9 -0
  32. package/dist/backend/llvm/common.js.map +1 -1
  33. package/dist/backend/llvm/cpu-dispatch.d.ts +36 -2
  34. package/dist/backend/llvm/cpu-dispatch.js +96 -2
  35. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  36. package/dist/backend/llvm/dense-array-access.d.ts +5 -2
  37. package/dist/backend/llvm/dense-array-access.js +16 -12
  38. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  39. package/dist/backend/llvm/dense-array-access.test.js +3 -1
  40. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  41. package/dist/backend/llvm/dyn.d.ts +24 -0
  42. package/dist/backend/llvm/dyn.js +117 -3
  43. package/dist/backend/llvm/dyn.js.map +1 -1
  44. package/dist/backend/llvm/emit-function.js +6 -0
  45. package/dist/backend/llvm/emit-function.js.map +1 -1
  46. package/dist/backend/llvm/emit-journal.d.ts +1 -0
  47. package/dist/backend/llvm/emit-journal.js.map +1 -1
  48. package/dist/backend/llvm/emit-module.js +48 -5
  49. package/dist/backend/llvm/emit-module.js.map +1 -1
  50. package/dist/backend/llvm/emit-module.test.js +41 -0
  51. package/dist/backend/llvm/emit-module.test.js.map +1 -1
  52. package/dist/backend/llvm/emit-statements.js +11 -0
  53. package/dist/backend/llvm/emit-statements.js.map +1 -1
  54. package/dist/backend/llvm/emitter.d.ts +87 -7
  55. package/dist/backend/llvm/emitter.js +136 -15
  56. package/dist/backend/llvm/emitter.js.map +1 -1
  57. package/dist/backend/llvm/expr-async.js +28 -6
  58. package/dist/backend/llvm/expr-async.js.map +1 -1
  59. package/dist/backend/llvm/expr-containers.js +19 -5
  60. package/dist/backend/llvm/expr-containers.js.map +1 -1
  61. package/dist/backend/llvm/expr-dynamic.js +29 -1
  62. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  63. package/dist/backend/llvm/expr-primitives.js +104 -6
  64. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  65. package/dist/backend/llvm/expr-records.js +15 -1
  66. package/dist/backend/llvm/expr-records.js.map +1 -1
  67. package/dist/backend/llvm/expr-stream-bridges.js +53 -5
  68. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  69. package/dist/backend/llvm/inline-arrays.js +1 -1
  70. package/dist/backend/llvm/inline-arrays.js.map +1 -1
  71. package/dist/backend/llvm/js-ic.js +126 -2
  72. package/dist/backend/llvm/js-ic.js.map +1 -1
  73. package/dist/backend/llvm/lanes.d.ts +38 -0
  74. package/dist/backend/llvm/lanes.js +778 -0
  75. package/dist/backend/llvm/lanes.js.map +1 -0
  76. package/dist/backend/llvm/lanes.test.d.ts +1 -0
  77. package/dist/backend/llvm/lanes.test.js +402 -0
  78. package/dist/backend/llvm/lanes.test.js.map +1 -0
  79. package/dist/backend/llvm/lib-dispatch.js +9 -4
  80. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  81. package/dist/backend/llvm/lib-network.js +20 -0
  82. package/dist/backend/llvm/lib-network.js.map +1 -1
  83. package/dist/backend/llvm/lib-shared.js +27 -0
  84. package/dist/backend/llvm/lib-shared.js.map +1 -1
  85. package/dist/backend/llvm/lib-test.js +11 -0
  86. package/dist/backend/llvm/lib-test.js.map +1 -1
  87. package/dist/backend/llvm/local-array-reads.js +2 -2
  88. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  89. package/dist/backend/llvm/map-number-lookup.js +8 -2
  90. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  91. package/dist/backend/llvm/nullable-unions.js +5 -2
  92. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  93. package/dist/backend/llvm/publish.d.ts +3 -0
  94. package/dist/backend/llvm/publish.js +2 -2
  95. package/dist/backend/llvm/publish.js.map +1 -1
  96. package/dist/backend/llvm/reference-writes.js +1 -0
  97. package/dist/backend/llvm/reference-writes.js.map +1 -1
  98. package/dist/backend/llvm/region-groups.js +43 -4
  99. package/dist/backend/llvm/region-groups.js.map +1 -1
  100. package/dist/backend/llvm/region-groups.test.js +79 -0
  101. package/dist/backend/llvm/region-groups.test.js.map +1 -1
  102. package/dist/backend/llvm/runtime-registries.test.js +32 -1
  103. package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
  104. package/dist/backend/llvm/shapes.js +10 -1
  105. package/dist/backend/llvm/shapes.js.map +1 -1
  106. package/dist/backend/llvm/string-reads.d.ts +1 -1
  107. package/dist/backend/llvm/string-reads.js +1 -1
  108. package/dist/backend/llvm/string-reads.js.map +1 -1
  109. package/dist/backend/llvm/unwind-abi.js +24 -2
  110. package/dist/backend/llvm/unwind-abi.js.map +1 -1
  111. package/dist/backend/llvm/unwind-abi.test.js +38 -0
  112. package/dist/backend/llvm/unwind-abi.test.js.map +1 -1
  113. package/dist/backend/llvm/walkers.d.ts +3 -0
  114. package/dist/backend/llvm/walkers.js +20 -2
  115. package/dist/backend/llvm/walkers.js.map +1 -1
  116. package/dist/backend/native/contracts.d.ts +15 -3
  117. package/dist/backend/native/executable.js +19 -5
  118. package/dist/backend/native/executable.js.map +1 -1
  119. package/dist/backend/native-codegen-core.d.ts +20 -0
  120. package/dist/backend/native-codegen-core.js +15 -0
  121. package/dist/backend/native-codegen-core.js.map +1 -1
  122. package/dist/backend/native-codegen.d.ts +5 -0
  123. package/dist/backend/native-codegen.js +62 -8
  124. package/dist/backend/native-codegen.js.map +1 -1
  125. package/dist/backend/native-codegen.test.js +48 -8
  126. package/dist/backend/native-codegen.test.js.map +1 -1
  127. package/dist/backend/native-link-info-core.d.ts +27 -3
  128. package/dist/backend/native-link-info-core.js.map +1 -1
  129. package/dist/backend/native-link-info.test.js +17 -1
  130. package/dist/backend/native-link-info.test.js.map +1 -1
  131. package/dist/backend/native-toolchain.d.ts +1 -1
  132. package/dist/backend/native-toolchain.js +1 -1
  133. package/dist/backend/native-toolchain.js.map +1 -1
  134. package/dist/backend/native-toolchain.test.js +14 -1
  135. package/dist/backend/native-toolchain.test.js.map +1 -1
  136. package/dist/backend/runtime-pack-core.d.ts +9 -3
  137. package/dist/backend/runtime-pack-core.js +6 -1
  138. package/dist/backend/runtime-pack-core.js.map +1 -1
  139. package/dist/backend/runtime-pack.test.js +32 -1
  140. package/dist/backend/runtime-pack.test.js.map +1 -1
  141. package/dist/backend/targets.d.ts +9 -1
  142. package/dist/backend/targets.js +11 -2
  143. package/dist/backend/targets.js.map +1 -1
  144. package/dist/backend/targets.test.js +6 -0
  145. package/dist/backend/targets.test.js.map +1 -1
  146. package/dist/cli/command.js +15 -1
  147. package/dist/cli/command.js.map +1 -1
  148. package/dist/cli/host.d.ts +6 -0
  149. package/dist/cli/mcp.d.ts +72 -0
  150. package/dist/cli/mcp.js +601 -0
  151. package/dist/cli/mcp.js.map +1 -0
  152. package/dist/cli/mcp.test.d.ts +1 -0
  153. package/dist/cli/mcp.test.js +380 -0
  154. package/dist/cli/mcp.test.js.map +1 -0
  155. package/dist/cli/output-options.d.ts +1 -0
  156. package/dist/cli/output-options.js +3 -0
  157. package/dist/cli/output-options.js.map +1 -1
  158. package/dist/cli/usage.d.ts +51 -1
  159. package/dist/cli/usage.js +709 -186
  160. package/dist/cli/usage.js.map +1 -1
  161. package/dist/compat/fetch-profile.js +9 -4
  162. package/dist/compat/fetch-profile.js.map +1 -1
  163. package/dist/compile-types.d.ts +17 -0
  164. package/dist/coverage/report.d.ts +5 -9
  165. package/dist/coverage/report.js.map +1 -1
  166. package/dist/executable/executable-cache.d.ts +17 -3
  167. package/dist/executable/executable-cache.js +17 -3
  168. package/dist/executable/executable-cache.js.map +1 -1
  169. package/dist/executable/prepare.js +87 -10
  170. package/dist/executable/prepare.js.map +1 -1
  171. package/dist/frontend/analysis.js +3 -2
  172. package/dist/frontend/analysis.js.map +1 -1
  173. package/dist/frontend/canon-map.js +13 -8
  174. package/dist/frontend/canon-map.js.map +1 -1
  175. package/dist/frontend/decl-projection.d.ts +18 -0
  176. package/dist/frontend/decl-projection.js +90 -22
  177. package/dist/frontend/decl-projection.js.map +1 -1
  178. package/dist/frontend/decl-projection.test.js +47 -1
  179. package/dist/frontend/decl-projection.test.js.map +1 -1
  180. package/dist/frontend/default-library.d.ts +10 -0
  181. package/dist/frontend/default-library.js +43 -0
  182. package/dist/frontend/default-library.js.map +1 -0
  183. package/dist/frontend/fork-target.js +54 -9
  184. package/dist/frontend/fork-target.js.map +1 -1
  185. package/dist/frontend/fork-target.test.js +82 -0
  186. package/dist/frontend/fork-target.test.js.map +1 -1
  187. package/dist/frontend/inferred-js-diagnostics.test.js +73 -0
  188. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  189. package/dist/frontend/lowering/abstract-equality.d.ts +2 -1
  190. package/dist/frontend/lowering/abstract-equality.js +7 -1
  191. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  192. package/dist/frontend/lowering/array-values.js +2 -2
  193. package/dist/frontend/lowering/array-values.js.map +1 -1
  194. package/dist/frontend/lowering/assertion-members.js +52 -2
  195. package/dist/frontend/lowering/assertion-members.js.map +1 -1
  196. package/dist/frontend/lowering/builtin-namespaces.d.ts +5 -0
  197. package/dist/frontend/lowering/builtin-namespaces.js +19 -12
  198. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  199. package/dist/frontend/lowering/builtins/callable-aliases.js +42 -6
  200. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  201. package/dist/frontend/lowering/builtins/child-process.d.ts +12 -11
  202. package/dist/frontend/lowering/builtins/child-process.js +235 -38
  203. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  204. package/dist/frontend/lowering/builtins/compression.d.ts +6 -1
  205. package/dist/frontend/lowering/builtins/compression.js +3 -3
  206. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  207. package/dist/frontend/lowering/builtins/constants.js +2 -2
  208. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/crypto.d.ts +3 -1
  210. package/dist/frontend/lowering/builtins/crypto.js +9 -1
  211. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  212. package/dist/frontend/lowering/builtins/dates.js +26 -6
  213. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  214. package/dist/frontend/lowering/builtins/environment.d.ts +13 -1
  215. package/dist/frontend/lowering/builtins/environment.js +15 -4
  216. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  217. package/dist/frontend/lowering/builtins/module-bindings.d.ts +33 -0
  218. package/dist/frontend/lowering/builtins/module-bindings.js +213 -11
  219. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/module-resolution.d.ts +9 -2
  221. package/dist/frontend/lowering/builtins/module-resolution.js +187 -19
  222. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/performance.js +1 -1
  224. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  225. package/dist/frontend/lowering/builtins/process.js +40 -2
  226. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  227. package/dist/frontend/lowering/builtins/promises.js +33 -0
  228. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  229. package/dist/frontend/lowering/builtins/readline.d.ts +9 -5
  230. package/dist/frontend/lowering/builtins/readline.js +184 -75
  231. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  232. package/dist/frontend/lowering/builtins/url.d.ts +4 -0
  233. package/dist/frontend/lowering/builtins/url.js +6 -0
  234. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  235. package/dist/frontend/lowering/call-arguments.js +15 -0
  236. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  237. package/dist/frontend/lowering/callable-properties.d.ts +34 -0
  238. package/dist/frontend/lowering/callable-properties.js +210 -0
  239. package/dist/frontend/lowering/callable-properties.js.map +1 -0
  240. package/dist/frontend/lowering/cjs-inline-require.d.ts +16 -0
  241. package/dist/frontend/lowering/cjs-inline-require.js +105 -0
  242. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  243. package/dist/frontend/lowering/cjs-inline-require.test.d.ts +1 -0
  244. package/dist/frontend/lowering/cjs-inline-require.test.js +61 -0
  245. package/dist/frontend/lowering/cjs-inline-require.test.js.map +1 -0
  246. package/dist/frontend/lowering/class-dynamic-dispatch.js +82 -2
  247. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  248. package/dist/frontend/lowering/class-protocols.d.ts +57 -4
  249. package/dist/frontend/lowering/class-protocols.js +597 -30
  250. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  251. package/dist/frontend/lowering/class-unions.js +2 -2
  252. package/dist/frontend/lowering/class-unions.js.map +1 -1
  253. package/dist/frontend/lowering/coercions/function-adapters.d.ts +12 -0
  254. package/dist/frontend/lowering/coercions/function-adapters.js +62 -0
  255. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  256. package/dist/frontend/lowering/coercions/structural-plans.js +56 -1
  257. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  258. package/dist/frontend/lowering/coercions/structural.js +9 -4
  259. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  260. package/dist/frontend/lowering/collection-ingestion.d.ts +9 -0
  261. package/dist/frontend/lowering/collection-ingestion.js +115 -41
  262. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  263. package/dist/frontend/lowering/containers/array-callbacks.js +16 -0
  264. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  265. package/dist/frontend/lowering/containers/bytes.js +66 -10
  266. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  267. package/dist/frontend/lowering/containers/collection-methods.js +61 -5
  268. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  269. package/dist/frontend/lowering/containers/filter-predicates.js +11 -0
  270. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
  271. package/dist/frontend/lowering/containers/indexed-objects.d.ts +15 -0
  272. package/dist/frontend/lowering/containers/indexed-objects.js +213 -30
  273. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  274. package/dist/frontend/lowering/error-name-order.d.ts +16 -0
  275. package/dist/frontend/lowering/error-name-order.js +61 -0
  276. package/dist/frontend/lowering/error-name-order.js.map +1 -1
  277. package/dist/frontend/lowering/expressions/asserted-receiver.d.ts +17 -0
  278. package/dist/frontend/lowering/expressions/asserted-receiver.js +123 -1
  279. package/dist/frontend/lowering/expressions/asserted-receiver.js.map +1 -1
  280. package/dist/frontend/lowering/expressions/binary.js +147 -20
  281. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  282. package/dist/frontend/lowering/expressions/element-access.js +63 -14
  283. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  284. package/dist/frontend/lowering/expressions/erased-delete.d.ts +59 -0
  285. package/dist/frontend/lowering/expressions/erased-delete.js +247 -0
  286. package/dist/frontend/lowering/expressions/erased-delete.js.map +1 -0
  287. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +10 -0
  288. package/dist/frontend/lowering/expressions/hosted-narrowing.js +48 -1
  289. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
  290. package/dist/frontend/lowering/expressions/identifiers.js +20 -0
  291. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  292. package/dist/frontend/lowering/expressions/narrowing.d.ts +7 -2
  293. package/dist/frontend/lowering/expressions/narrowing.js +77 -45
  294. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/object-literals.js +62 -19
  296. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  297. package/dist/frontend/lowering/expressions/optional-chains.js +19 -0
  298. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  299. package/dist/frontend/lowering/expressions/property-access.d.ts +7 -7
  300. package/dist/frontend/lowering/expressions/property-access.js +247 -48
  301. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  302. package/dist/frontend/lowering/expressions/relational.d.ts +1 -0
  303. package/dist/frontend/lowering/expressions/relational.js +18 -8
  304. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  305. package/dist/frontend/lowering/expressions/union-fields.js +11 -5
  306. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  307. package/dist/frontend/lowering/expressions/updates.js +121 -11
  308. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  309. package/dist/frontend/lowering/function-context.d.ts +10 -0
  310. package/dist/frontend/lowering/function-context.js +36 -0
  311. package/dist/frontend/lowering/function-context.js.map +1 -1
  312. package/dist/frontend/lowering/function-returns.js +8 -8
  313. package/dist/frontend/lowering/function-returns.js.map +1 -1
  314. package/dist/frontend/lowering/handle-properties.d.ts +62 -3
  315. package/dist/frontend/lowering/handle-properties.js +674 -26
  316. package/dist/frontend/lowering/handle-properties.js.map +1 -1
  317. package/dist/frontend/lowering/handle-properties.test.js +95 -2
  318. package/dist/frontend/lowering/handle-properties.test.js.map +1 -1
  319. package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
  320. package/dist/frontend/lowering/lower-builtin-values.js +44 -0
  321. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  322. package/dist/frontend/lowering/lower-calls.js +328 -136
  323. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  324. package/dist/frontend/lowering/lower-classes.js +82 -17
  325. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  326. package/dist/frontend/lowering/lower-event-emitter.js +113 -9
  327. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  328. package/dist/frontend/lowering/lower-expando.d.ts +13 -21
  329. package/dist/frontend/lowering/lower-expando.js +90 -126
  330. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  331. package/dist/frontend/lowering/lower-exprs.js +2 -2
  332. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  333. package/dist/frontend/lowering/lower-functions.js +65 -0
  334. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  335. package/dist/frontend/lowering/lower-inspect.js +471 -0
  336. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  337. package/dist/frontend/lowering/lower-modules.js +36 -10
  338. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  339. package/dist/frontend/lowering/lower-node-island.js +28 -0
  340. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  341. package/dist/frontend/lowering/lower-server.d.ts +53 -7
  342. package/dist/frontend/lowering/lower-server.js +213 -42
  343. package/dist/frontend/lowering/lower-server.js.map +1 -1
  344. package/dist/frontend/lowering/lower-stdlib.js +50 -7
  345. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  346. package/dist/frontend/lowering/lower-stmts.d.ts +24 -0
  347. package/dist/frontend/lowering/lower-stmts.js +463 -220
  348. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  349. package/dist/frontend/lowering/lower-stream.js +2 -2
  350. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  351. package/dist/frontend/lowering/lower-test.js +71 -2
  352. package/dist/frontend/lowering/lower-test.js.map +1 -1
  353. package/dist/frontend/lowering/lowerer.d.ts +81 -10
  354. package/dist/frontend/lowering/lowerer.js +319 -72
  355. package/dist/frontend/lowering/lowerer.js.map +1 -1
  356. package/dist/frontend/lowering/new-target.js +10 -2
  357. package/dist/frontend/lowering/new-target.js.map +1 -1
  358. package/dist/frontend/lowering/nullish-empty-pattern.js +3 -3
  359. package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -1
  360. package/dist/frontend/lowering/partial-assertions.js +30 -5
  361. package/dist/frontend/lowering/partial-assertions.js.map +1 -1
  362. package/dist/frontend/lowering/primitive-throws.js +91 -1
  363. package/dist/frontend/lowering/primitive-throws.js.map +1 -1
  364. package/dist/frontend/lowering/primitive-wrappers.d.ts +9 -0
  365. package/dist/frontend/lowering/primitive-wrappers.js +2 -2
  366. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
  367. package/dist/frontend/lowering/promise-executor-adapter.js +5 -2
  368. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  369. package/dist/frontend/lowering/record-links.js +7 -2
  370. package/dist/frontend/lowering/record-links.js.map +1 -1
  371. package/dist/frontend/lowering/surfaces.d.ts +4 -0
  372. package/dist/frontend/lowering/surfaces.js +118 -2
  373. package/dist/frontend/lowering/surfaces.js.map +1 -1
  374. package/dist/frontend/lowering/surfaces.test.d.ts +1 -0
  375. package/dist/frontend/lowering/surfaces.test.js +31 -0
  376. package/dist/frontend/lowering/surfaces.test.js.map +1 -0
  377. package/dist/frontend/mock-shapes.js +3 -3
  378. package/dist/frontend/mock-shapes.js.map +1 -1
  379. package/dist/frontend/npm-static-ladder.d.ts +21 -0
  380. package/dist/frontend/npm-static-ladder.js +2 -0
  381. package/dist/frontend/npm-static-ladder.js.map +1 -0
  382. package/dist/frontend/npm-static-ladder.test.d.ts +1 -0
  383. package/dist/frontend/npm-static-ladder.test.js +138 -0
  384. package/dist/frontend/npm-static-ladder.test.js.map +1 -0
  385. package/dist/frontend/npm-static-status.d.ts +15 -0
  386. package/dist/frontend/npm-static-status.js +2 -0
  387. package/dist/frontend/npm-static-status.js.map +1 -0
  388. package/dist/frontend/package-shims.js +1 -1
  389. package/dist/frontend/package-shims.js.map +1 -1
  390. package/dist/frontend/pipeline.d.ts +1 -1
  391. package/dist/frontend/pipeline.js +222 -25
  392. package/dist/frontend/pipeline.js.map +1 -1
  393. package/dist/frontend/program-analysis.d.ts +4 -0
  394. package/dist/frontend/program-analysis.js +6 -0
  395. package/dist/frontend/program-analysis.js.map +1 -1
  396. package/dist/frontend/program.js +258 -32
  397. package/dist/frontend/program.js.map +1 -1
  398. package/dist/frontend/program.test.js +30 -0
  399. package/dist/frontend/program.test.js.map +1 -1
  400. package/dist/frontend/resolve.js +29 -5
  401. package/dist/frontend/resolve.js.map +1 -1
  402. package/dist/frontend/resolve.test.js +40 -0
  403. package/dist/frontend/resolve.test.js.map +1 -1
  404. package/dist/frontend/services.d.ts +8 -0
  405. package/dist/frontend/services.js +7 -0
  406. package/dist/frontend/services.js.map +1 -1
  407. package/dist/frontend/ts7/checker.d.ts +7 -0
  408. package/dist/frontend/ts7/checker.js +12 -0
  409. package/dist/frontend/ts7/checker.js.map +1 -1
  410. package/dist/frontend/ts7/checker.test.js +1 -0
  411. package/dist/frontend/ts7/checker.test.js.map +1 -1
  412. package/dist/frontend/ts7/program-host.d.ts +39 -2
  413. package/dist/frontend/ts7/program-host.js +62 -8
  414. package/dist/frontend/ts7/program-host.js.map +1 -1
  415. package/dist/frontend/ts7/program-host.test.js +33 -0
  416. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  417. package/dist/frontend/ts7/session-cache.d.ts +5 -1
  418. package/dist/frontend/ts7/session-cache.js +7 -1
  419. package/dist/frontend/ts7/session-cache.js.map +1 -1
  420. package/dist/frontend/ts7/session-cache.test.js +37 -0
  421. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  422. package/dist/frontend/ts7/session.js +19 -1
  423. package/dist/frontend/ts7/session.js.map +1 -1
  424. package/dist/frontend/ts7/source-parser.d.ts +17 -2
  425. package/dist/frontend/ts7/source-parser.js +61 -2
  426. package/dist/frontend/ts7/source-parser.js.map +1 -1
  427. package/dist/frontend/ts7/source-parser.test.js +55 -2
  428. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  429. package/dist/frontend/tsc-codes.d.ts +3 -2
  430. package/dist/frontend/tsc-codes.js +129 -22
  431. package/dist/frontend/tsc-codes.js.map +1 -1
  432. package/dist/frontend/type-mapper.d.ts +5 -11
  433. package/dist/frontend/type-mapper.js +380 -70
  434. package/dist/frontend/type-mapper.js.map +1 -1
  435. package/dist/index.d.ts +1 -1
  436. package/dist/index.js +67 -7
  437. package/dist/index.js.map +1 -1
  438. package/dist/ir/builtin-effects.js +29 -0
  439. package/dist/ir/builtin-effects.js.map +1 -1
  440. package/dist/ir/builtin-signatures.d.ts +1 -1
  441. package/dist/ir/builtin-signatures.js +72 -6
  442. package/dist/ir/builtin-signatures.js.map +1 -1
  443. package/dist/ir/codec.generated.d.ts +1 -1
  444. package/dist/ir/codec.generated.js +321 -263
  445. package/dist/ir/codec.generated.js.map +1 -1
  446. package/dist/ir/constant-length-clones.d.ts +26 -0
  447. package/dist/ir/constant-length-clones.js +589 -0
  448. package/dist/ir/constant-length-clones.js.map +1 -0
  449. package/dist/ir/constant-length-clones.test.d.ts +1 -0
  450. package/dist/ir/constant-length-clones.test.js +292 -0
  451. package/dist/ir/constant-length-clones.test.js.map +1 -0
  452. package/dist/ir/constant-tables.d.ts +10 -5
  453. package/dist/ir/constant-tables.js +83 -17
  454. package/dist/ir/constant-tables.js.map +1 -1
  455. package/dist/ir/constant-tables.test.js +58 -1
  456. package/dist/ir/constant-tables.test.js.map +1 -1
  457. package/dist/ir/fields.generated.js +5 -2
  458. package/dist/ir/fields.generated.js.map +1 -1
  459. package/dist/ir/function-references.js +2 -0
  460. package/dist/ir/function-references.js.map +1 -1
  461. package/dist/ir/function-references.test.js +13 -0
  462. package/dist/ir/function-references.test.js.map +1 -1
  463. package/dist/ir/integer-loops.js +1 -0
  464. package/dist/ir/integer-loops.js.map +1 -1
  465. package/dist/ir/integer-loops.test.js +16 -0
  466. package/dist/ir/integer-loops.test.js.map +1 -1
  467. package/dist/ir/ir.d.ts +50 -6
  468. package/dist/ir/ir.js +44 -2
  469. package/dist/ir/ir.js.map +1 -1
  470. package/dist/ir/ir.test.js +83 -1
  471. package/dist/ir/ir.test.js.map +1 -1
  472. package/dist/ir/js-groups.js +5 -1
  473. package/dist/ir/js-groups.js.map +1 -1
  474. package/dist/ir/js-ic.d.ts +20 -0
  475. package/dist/ir/js-ic.js +81 -4
  476. package/dist/ir/js-ic.js.map +1 -1
  477. package/dist/ir/js-ic.test.js +8 -1
  478. package/dist/ir/js-ic.test.js.map +1 -1
  479. package/dist/ir/lane-plans.d.ts +86 -0
  480. package/dist/ir/lane-plans.js +589 -0
  481. package/dist/ir/lane-plans.js.map +1 -0
  482. package/dist/ir/lane-plans.test.d.ts +1 -0
  483. package/dist/ir/lane-plans.test.js +549 -0
  484. package/dist/ir/lane-plans.test.js.map +1 -0
  485. package/dist/ir/runtime-features.d.ts +68 -10
  486. package/dist/ir/runtime-features.js +285 -17
  487. package/dist/ir/runtime-features.js.map +1 -1
  488. package/dist/ir/runtime-features.test.js +190 -1
  489. package/dist/ir/runtime-features.test.js.map +1 -1
  490. package/dist/ir/validate.js +61 -24
  491. package/dist/ir/validate.js.map +1 -1
  492. package/dist/native/cache.d.ts +5 -0
  493. package/dist/native/cache.js +23 -1
  494. package/dist/native/cache.js.map +1 -1
  495. package/dist/native/cache.test.js +29 -1
  496. package/dist/native/cache.test.js.map +1 -1
  497. package/dist/native/cli.js +4 -2
  498. package/dist/native/cli.js.map +1 -1
  499. package/dist/native/compiler.d.ts +11 -3
  500. package/dist/native/compiler.js +102 -16
  501. package/dist/native/compiler.js.map +1 -1
  502. package/dist/native/compiler.test.js +244 -2
  503. package/dist/native/compiler.test.js.map +1 -1
  504. package/dist/native/prepare.d.ts +14 -1
  505. package/dist/native/prepare.js +79 -29
  506. package/dist/native/prepare.js.map +1 -1
  507. package/dist/native/sanitizer.test.js +3 -0
  508. package/dist/native/sanitizer.test.js.map +1 -1
  509. package/dist/native/unchanged.d.ts +80 -0
  510. package/dist/native/unchanged.js +301 -0
  511. package/dist/native/unchanged.js.map +1 -0
  512. package/dist/native/unchanged.test.d.ts +1 -0
  513. package/dist/native/unchanged.test.js +249 -0
  514. package/dist/native/unchanged.test.js.map +1 -0
  515. package/dist/node-islands/boundary.d.ts +16 -0
  516. package/dist/node-islands/boundary.js +70 -7
  517. package/dist/node-islands/boundary.js.map +1 -1
  518. package/dist/node-islands/boundary.test.js +59 -14
  519. package/dist/node-islands/boundary.test.js.map +1 -1
  520. package/dist/node-islands/detect.js +203 -47
  521. package/dist/node-islands/detect.js.map +1 -1
  522. package/dist/node-islands/detect.test.js +45 -0
  523. package/dist/node-islands/detect.test.js.map +1 -1
  524. package/dist/node-islands/growth.js +4 -16
  525. package/dist/node-islands/growth.js.map +1 -1
  526. package/dist/node-islands/modules.d.ts +3 -0
  527. package/dist/node-islands/modules.js +143 -12
  528. package/dist/node-islands/modules.js.map +1 -1
  529. package/dist/node-islands/modules.test.js +125 -0
  530. package/dist/node-islands/modules.test.js.map +1 -1
  531. package/dist/node-islands/report.d.ts +1 -1
  532. package/dist/node-islands/report.js +2 -1
  533. package/dist/node-islands/report.js.map +1 -1
  534. package/package.json +20 -20
  535. package/shims/undici/core/request.ts +7 -1
  536. package/surface-manifest.json +380 -2
@@ -0,0 +1,380 @@
1
+ import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join, resolve } from "node:path";
4
+ import { afterAll, beforeEach, expect, test, vi } from "vitest";
5
+ import { runCli } from "./command.js";
6
+ import { callResult, McpServer, MessageReader, toolArgv, toolDefinition, toolName } from "./mcp.js";
7
+ import { CLI_COMMANDS, CLI_OPTIONS } from "./usage.js";
8
+ const scratch = mkdtempSync(join(tmpdir(), "scriptc-mcp-test-"));
9
+ const declaration = join(scratch, "host.d.ts");
10
+ writeFileSync(declaration, "export declare const value: number;\n");
11
+ afterAll(() => rmSync(scratch, { recursive: true, force: true }));
12
+ beforeEach(() => {
13
+ vi.spyOn(process.stderr, "write").mockImplementation(() => true);
14
+ vi.spyOn(process.stdout, "write").mockImplementation(() => true);
15
+ return () => vi.restoreAllMocks();
16
+ });
17
+ function command(name) {
18
+ const found = CLI_COMMANDS.find((candidate) => candidate.name === name);
19
+ if (found === undefined)
20
+ throw new Error(`no command ${name}`);
21
+ return found;
22
+ }
23
+ class Reached extends Error {
24
+ operation;
25
+ detail;
26
+ constructor(operation, detail) {
27
+ super(operation);
28
+ this.operation = operation;
29
+ this.detail = detail;
30
+ }
31
+ }
32
+ let reached = null;
33
+ /** A host whose every compiler operation records what reached it and stops the command by
34
+ * throwing, so a test can tell an accepted command line from a refused one. */
35
+ function stubHost(platform = "linux") {
36
+ const reach = (operation) => (...detail) => {
37
+ reached = new Reached(operation, detail);
38
+ throw reached;
39
+ };
40
+ return {
41
+ version: () => "0.0.0-test",
42
+ sourceTargetPlatform: () => platform,
43
+ analyze: reach("analyze"),
44
+ compile: reach("compile"),
45
+ compileLibrary: reach("compileLibrary"),
46
+ resolveProvenanceSources: reach("resolveProvenanceSources"),
47
+ warmNativeCaches: reach("warmNativeCaches"),
48
+ mergeProfiles: reach("mergeProfiles"),
49
+ typePatches: reach("typePatches"),
50
+ run: reach("run"),
51
+ reinvoke: (args) => ({ file: process.execPath, args }),
52
+ };
53
+ }
54
+ /** Runs the command line and returns what reached the compiler, or the exit status it refused with. */
55
+ async function dispatch(argv, platform) {
56
+ reached = null;
57
+ let status;
58
+ try {
59
+ status = await runCli(argv, stubHost(platform));
60
+ }
61
+ catch (error) {
62
+ if (!(error instanceof Reached))
63
+ throw error;
64
+ return error;
65
+ }
66
+ return reached ?? status;
67
+ }
68
+ const SAMPLES = {
69
+ file: join(scratch, "main.ts"),
70
+ package: "commander",
71
+ selector: "HelpContext.helpWidth",
72
+ type: "| undefined",
73
+ profiles: ["runtime"],
74
+ out: join(scratch, "out"),
75
+ emit: "exe",
76
+ backend: "llvm",
77
+ optimization: "release",
78
+ windows_subsystem: "console",
79
+ libnode: "beside",
80
+ exceptions: "rare",
81
+ target_cpu: "baseline",
82
+ profile_generate: join(scratch, "run-%p.profraw"),
83
+ profile_use: join(scratch, "merged.profdata"),
84
+ ffi: join(scratch, "ffi.json"),
85
+ npm_static: ["auto"],
86
+ external_types: [`host-module=${declaration}`],
87
+ tier: "auto",
88
+ explain_dynamic: "",
89
+ node_islands: "auto",
90
+ node_island: ["left-pad"],
91
+ native: ["right-pad"],
92
+ node: process.execPath,
93
+ wasm: [join(scratch, "module.wasm")],
94
+ range: "^1.0.0",
95
+ profile: join(scratch, "profile.json"),
96
+ fail_on: "blockers",
97
+ };
98
+ function sample(name, schema) {
99
+ if (schema["type"] === "boolean")
100
+ return true;
101
+ const value = SAMPLES[name];
102
+ if (value === undefined)
103
+ throw new Error(`no sample value for ${name}`);
104
+ return value;
105
+ }
106
+ function requiredArgs(definition) {
107
+ const schema = definition["inputSchema"];
108
+ const properties = schema["properties"];
109
+ const args = {};
110
+ for (const name of schema["required"] ?? []) {
111
+ args[name] = sample(name, properties[name]);
112
+ }
113
+ return args;
114
+ }
115
+ test("every command is one tool with a portable, unique name", () => {
116
+ const names = CLI_COMMANDS.map(toolName);
117
+ expect(new Set(names).size).toBe(names.length);
118
+ for (const name of names)
119
+ expect(name).toMatch(/^[a-zA-Z0-9_]{1,64}$/);
120
+ });
121
+ test("a tool's properties are unique and its required names exist", () => {
122
+ for (const cmd of CLI_COMMANDS) {
123
+ const schema = toolDefinition(cmd)["inputSchema"];
124
+ const properties = Object.keys(schema["properties"]);
125
+ const hidden = cmd.diagnostics
126
+ ? cmd.options.filter((option) => option === "print" || option === "explain-island").length
127
+ : 0;
128
+ const declared = cmd.positionals.length + cmd.options.length - hidden;
129
+ expect(properties.length, cmd.name).toBe(declared);
130
+ for (const name of schema["required"] ?? [])
131
+ expect(properties, cmd.name).toContain(name);
132
+ expect(schema["additionalProperties"]).toBe(false);
133
+ }
134
+ });
135
+ test("every CLI option belongs to a command or is --help or --version", () => {
136
+ const used = new Set(CLI_COMMANDS.flatMap((cmd) => [...cmd.options, ...cmd.argv]));
137
+ for (const option of Object.keys(CLI_OPTIONS)) {
138
+ if (option === "help" || option === "version")
139
+ continue;
140
+ expect(used.has(option) || used.has(`--${option}`), option).toBe(true);
141
+ }
142
+ });
143
+ test("the command line accepts every tool with only its required arguments", async () => {
144
+ for (const cmd of CLI_COMMANDS) {
145
+ const outcome = await dispatch(toolArgv(cmd, requiredArgs(toolDefinition(cmd))));
146
+ expect(outcome, cmd.name).toBeInstanceOf(Reached);
147
+ }
148
+ });
149
+ test("the command line accepts every property of every tool, true and false", async () => {
150
+ let checked = 0;
151
+ for (const cmd of CLI_COMMANDS) {
152
+ const definition = toolDefinition(cmd);
153
+ const properties = definition["inputSchema"]["properties"];
154
+ for (const [name, schema] of Object.entries(properties)) {
155
+ const values = schema["type"] === "boolean"
156
+ ? [true, false]
157
+ : [sample(name, schema)];
158
+ for (const value of values) {
159
+ const args = { ...requiredArgs(definition), [name]: value };
160
+ const platform = name === "windows_subsystem" ? "win32" : "linux";
161
+ const outcome = await dispatch(toolArgv(cmd, args), platform);
162
+ expect(outcome, `${cmd.name} ${name}=${JSON.stringify(value)}`).toBeInstanceOf(Reached);
163
+ checked++;
164
+ }
165
+ }
166
+ }
167
+ expect(checked).toBeGreaterThan(60);
168
+ });
169
+ test("flag-shaped values stay values", async () => {
170
+ const hostile = "--print=native-link-info";
171
+ const outcome = await dispatch(toolArgv(command("build"), { file: hostile, out: "--emit=llvm", node_island: ["-o"] }));
172
+ expect(outcome).toBeInstanceOf(Reached);
173
+ const [entry, options] = outcome.detail;
174
+ expect(entry).toBe(resolve(hostile));
175
+ expect(options["outPath"]).toBe(resolve("--emit=llvm"));
176
+ expect(options["outputKind"]).toBe("exe");
177
+ expect(options["nativeLinkInfo"]).toBeUndefined();
178
+ expect(options["nodeIslands"]).toEqual({ islands: ["-o"] });
179
+ const patch = await dispatch(toolArgv(command("types-patch"), {
180
+ package: "--dry-run",
181
+ selector: "--range=*",
182
+ type: "-h",
183
+ }));
184
+ expect(patch).toBeInstanceOf(Reached);
185
+ expect(patch.detail).toEqual([
186
+ expect.objectContaining({
187
+ action: "patch",
188
+ pkg: "--dry-run",
189
+ selector: "--range=*",
190
+ type: "-h",
191
+ range: null,
192
+ dryRun: false,
193
+ }),
194
+ ]);
195
+ });
196
+ test("build and coverage always write the diagnostics envelope, and --print is the server's", () => {
197
+ expect(toolArgv(command("build"), { file: "a.ts" })).toEqual([
198
+ "build",
199
+ "--print=diagnostics",
200
+ "--",
201
+ "a.ts",
202
+ ]);
203
+ expect(() => toolArgv(command("build"), { file: "a.ts", print: "native-link-info" })).toThrow(/unknown argument "print"/);
204
+ expect(() => toolArgv(command("run"), { file: "a.ts", print: "diagnostics" })).toThrow(/unknown argument "print"/);
205
+ });
206
+ test("wrong types and unknown arguments are refused before anything runs", () => {
207
+ const build = command("build");
208
+ expect(() => toolArgv(build, { file: 1 })).toThrow("file must be a string");
209
+ expect(() => toolArgv(build, { strip: "yes" })).toThrow("strip must be a boolean");
210
+ expect(() => toolArgv(build, { out: ["a"] })).toThrow("out must be a string");
211
+ expect(() => toolArgv(build, { npm_static: "auto" })).toThrow("npm_static must be an array");
212
+ expect(() => toolArgv(build, { npm_static: [["auto"]] })).toThrow("npm_static must be an array");
213
+ expect(() => toolArgv(build, { fail_on: "blockers" })).toThrow(/unknown argument "fail_on"/);
214
+ expect(() => toolArgv(build, { "keep-llvm": true })).toThrow(/unknown argument "keep-llvm"/);
215
+ expect(() => toolArgv(build, JSON.parse('{"__proto__":{"strip":true}}'))).toThrow(/unknown argument "__proto__"/);
216
+ expect(() => toolArgv(build, { constructor: "x" })).toThrow(/unknown argument "constructor"/);
217
+ expect(() => toolArgv(command("merge-profiles"), { profiles: "a.profraw" })).toThrow("profiles must be an array of strings");
218
+ expect(toolArgv(build, { file: "a.ts", out: null, keep_llvm: false })).toEqual([
219
+ "build",
220
+ "--no-keep-llvm",
221
+ "--print=diagnostics",
222
+ "--",
223
+ "a.ts",
224
+ ]);
225
+ });
226
+ function server() {
227
+ const sent = [];
228
+ return {
229
+ server: new McpServer(stubHost(), (message) => sent.push(message), scratch),
230
+ sent,
231
+ };
232
+ }
233
+ test("legacy initialize negotiates, and modern requests check their version", () => {
234
+ const { server: mcp, sent } = server();
235
+ mcp.handle({
236
+ jsonrpc: "2.0",
237
+ id: 1,
238
+ method: "initialize",
239
+ params: { protocolVersion: "2025-06-18" },
240
+ });
241
+ mcp.handle({
242
+ jsonrpc: "2.0",
243
+ id: 2,
244
+ method: "initialize",
245
+ params: { protocolVersion: "1999-01-01" },
246
+ });
247
+ mcp.handle({
248
+ jsonrpc: "2.0",
249
+ id: 3,
250
+ method: "tools/list",
251
+ params: { _meta: { "io.modelcontextprotocol/protocolVersion": "1999-01-01" } },
252
+ });
253
+ mcp.handle({
254
+ jsonrpc: "2.0",
255
+ id: 4,
256
+ method: "server/discover",
257
+ params: { _meta: { "io.modelcontextprotocol/protocolVersion": "2026-07-28" } },
258
+ });
259
+ const [echoed, fallback, refused, discovered] = sent;
260
+ expect(echoed["result"]["protocolVersion"]).toBe("2025-06-18");
261
+ expect(fallback["result"]["protocolVersion"]).toBe("2025-11-25");
262
+ expect(refused["error"]).toMatchObject({ code: -32022, data: { requested: "1999-01-01" } });
263
+ expect(discovered["result"]).toMatchObject({
264
+ resultType: "complete",
265
+ supportedVersions: ["2026-07-28", "2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"],
266
+ capabilities: { tools: {} },
267
+ cacheScope: "private",
268
+ });
269
+ });
270
+ test("tools/list returns every tool in command order, cacheable", () => {
271
+ const { server: mcp, sent } = server();
272
+ mcp.handle({ jsonrpc: "2.0", id: "list", method: "tools/list" });
273
+ const result = sent[0]["result"];
274
+ expect(result["tools"].map((tool) => tool["name"])).toEqual(CLI_COMMANDS.map(toolName));
275
+ expect(result).toMatchObject({ resultType: "complete", cacheScope: "public" });
276
+ });
277
+ test("malformed messages get JSON-RPC errors and notifications get no answer", () => {
278
+ const { server: mcp, sent } = server();
279
+ mcp.handle([{ jsonrpc: "2.0", id: 1, method: "ping" }]);
280
+ mcp.handle(42);
281
+ mcp.handle({ jsonrpc: "2.0", id: null, method: "ping" });
282
+ mcp.handle({ jsonrpc: "2.0", id: { nested: true }, method: "ping" });
283
+ mcp.handle({ jsonrpc: "2.0", id: 5, method: 7 });
284
+ mcp.handle({ jsonrpc: "2.0", id: 6, method: "resources/list" });
285
+ mcp.handle({ jsonrpc: "2.0", id: 7, method: "tools/call", params: { name: "scriptc_nope" } });
286
+ mcp.handle({
287
+ jsonrpc: "2.0",
288
+ id: 8,
289
+ method: "tools/call",
290
+ params: { name: "scriptc_run", arguments: ["a.ts"] },
291
+ });
292
+ mcp.handle({ jsonrpc: "2.0", method: "notifications/initialized" });
293
+ mcp.handle({ jsonrpc: "2.0", method: "notifications/cancelled", params: { requestId: 99 } });
294
+ mcp.handle({ jsonrpc: "2.0", id: 9, result: {} });
295
+ mcp.handle({ jsonrpc: "2.0", id: 10, method: "ping" });
296
+ expect(sent.map((message) => [message["id"], message["error"]?.["code"]])).toEqual([
297
+ [null, -32600],
298
+ [null, -32600],
299
+ [null, -32600],
300
+ [null, -32600],
301
+ [5, -32600],
302
+ [6, -32601],
303
+ [7, -32602],
304
+ [8, -32602],
305
+ [10, undefined],
306
+ ]);
307
+ });
308
+ test("invalid tool arguments are tool errors the model can correct", () => {
309
+ const { server: mcp, sent } = server();
310
+ mcp.handle({
311
+ jsonrpc: "2.0",
312
+ id: 1,
313
+ method: "tools/call",
314
+ params: { name: "scriptc_run", arguments: { file: "a.ts", shell: "rm -rf /" } },
315
+ });
316
+ expect(sent[0]["result"]).toMatchObject({ isError: true });
317
+ expect(JSON.stringify(sent[0])).toContain('unknown argument \\"shell\\"');
318
+ });
319
+ test("an oversized message is refused and the next one still reads", () => {
320
+ const lines = [];
321
+ let oversized = 0;
322
+ const reader = new MessageReader((line) => lines.push(line), () => oversized++);
323
+ const huge = "x".repeat(1024 * 1024);
324
+ reader.push('{"id":1}\n{"id":');
325
+ for (let i = 0; i < 5; i++)
326
+ reader.push(huge);
327
+ reader.push('2}\n\n{"id"');
328
+ reader.push(":3}\r\n");
329
+ reader.push('{"id":4}');
330
+ reader.end();
331
+ expect(oversized).toBe(1);
332
+ expect(lines).toEqual(['{"id":1}', '{"id":3}\r', '{"id":4}']);
333
+ });
334
+ test("results carry the diagnostics envelope, or the output as text", () => {
335
+ const envelope = { schema: "scriptc-diagnostics", schemaVersion: 1, success: false };
336
+ const failed = callResult(command("build"), {
337
+ exitCode: 1,
338
+ signal: null,
339
+ timedOut: false,
340
+ stdout: JSON.stringify(envelope),
341
+ stderr: "",
342
+ truncated: false,
343
+ });
344
+ expect(failed).toMatchObject({
345
+ isError: true,
346
+ structuredContent: { exitCode: 1, diagnostics: envelope },
347
+ });
348
+ const other = callResult(command("build"), {
349
+ exitCode: 0,
350
+ signal: null,
351
+ timedOut: false,
352
+ stdout: '{"schema":"other"}',
353
+ stderr: "warning\n",
354
+ truncated: false,
355
+ });
356
+ expect(other["structuredContent"]).toEqual({
357
+ exitCode: 0,
358
+ stdout: '{"schema":"other"}',
359
+ stderr: "warning\n",
360
+ });
361
+ const killed = callResult(command("run"), {
362
+ exitCode: null,
363
+ signal: "SIGKILL",
364
+ timedOut: true,
365
+ stdout: "partial",
366
+ stderr: "",
367
+ truncated: true,
368
+ });
369
+ expect(killed).toMatchObject({
370
+ isError: true,
371
+ structuredContent: {
372
+ exitCode: null,
373
+ signal: "SIGKILL",
374
+ timedOut: true,
375
+ stdout: "partial",
376
+ truncated: true,
377
+ },
378
+ });
379
+ });
380
+ //# sourceMappingURL=mcp.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../src/cli/mcp.test.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export interface OutputOptionValues {
11
11
  staticLink?: boolean;
12
12
  windowsSubsystem?: string;
13
13
  detachedExit?: boolean;
14
+ stdoutBuffering?: boolean;
14
15
  largePages?: boolean;
15
16
  cpuDispatch?: boolean;
16
17
  profileGenerate?: string;
@@ -43,6 +43,9 @@ export function resolveOutputOptions(command, values) {
43
43
  if (values.detachedExit && emit !== "exe") {
44
44
  return { ok: false, message: `--detached-exit is only supported with --emit=exe` };
45
45
  }
46
+ if (values.stdoutBuffering && emit !== "exe") {
47
+ return { ok: false, message: `--stdout-buffering is only supported with --emit=exe` };
48
+ }
46
49
  if (values.largePages && emit !== "exe") {
47
50
  return { ok: false, message: `--large-pages is only supported with --emit=exe` };
48
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"output-options.js","sourceRoot":"","sources":["../../src/cli/output-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output-options.js","sourceRoot":"","sources":["../../src/cli/output-options.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- export declare const USAGE = "scriptc \u2014 TypeScript/JavaScript to native and WebAssembly executables (experimental)\n\nUsage:\n scriptc build <file.ts|.js> [options] compile to an executable or source artifact\n scriptc run <file.ts|.js> [options] compile and run\n scriptc coverage <file.ts|.js> how much compiles statically, and why not\n scriptc coverage <file.ts|.js> --external-types <specifier=file.d.ts>\n type-resolve an embedder-provided module for analysis\n scriptc build --lib --profile <p.json> library mode: compile the profile's entry\n module to a linkable static archive\n (<name>.lib.a), or a Wasm reactor\n (<name>.wasm) on wasm32-wasi,\n exporting the profile symbols; a profile\n with a sidecar section also gets the\n contract sidecar JSON beside the archive\n scriptc types patch <package> <selector> <type> [--range <r>] [--dry-run]\n fix a wrong declaration of an installed\n package: shows what the selector\n matches and adds the type patch to\n package.json (\"| undefined\" widens)\n scriptc types list the project's type patches and what\n they match\n scriptc cache warm [runtime|tls\u2026] verify and load precompiled runtime families\n for the current compiler/SDK/target\n scriptc merge-profiles -o <out.profdata> [--sparse] <profile\u2026>\n merge the raw profiles that\n --profile-generate runs wrote (or\n earlier merged profiles) into one\n profile for --profile-use;\n --sparse leaves out functions\n that never ran (a smaller file)\n\nOptions:\n -o, --out <path> primary output path (default: .scriptc/<name><suffix>)\n --emit <kind> primary output: ir, llvm, asm, obj, or exe\n (default: exe). asm/obj use the matching platform helper\n --print <kind> print machine-readable metadata instead of the output path\n (native-link-info implies --emit=obj and never links;\n diagnostics prints the versioned JSON diagnostics\n envelope for build and coverage)\n --fail-on <blockers|divergences|dynamic|dynamic-slots|node-islands|eager-node-islands|island-gaps>\n coverage only: exit 1 when the entry path has blockers\n (a build would fail), or also when it has Node\n divergences, likely-hot functions that use untyped\n values (SC6101), dynamic slots (SC6104), any Node\n island (eager-node-islands is the same until deferred\n evaluation lands), or a gap island (a package scriptc\n should compile but cannot yet)\n --backend <b> code generator (llvm)\n --optimization <release|dev|speed>\n native optimization posture (default: release/-O2). dev\n uses -O0, source breakpoints, and cached LLVM object shards;\n macOS executable builds also produce an adjacent .dSYM.\n speed trades larger executables and longer builds for\n faster programs (runtime inlining, inline reference\n counting, cache-line-aligned runtime code on x86-64)\n --strip remove symbol/debug payload from the linked executable\n for smaller builds (opt in; --emit=exe only)\n --static Linux: link the C library into the executable, which\n then starts without the dynamic loader. glibc builds\n need its static libraries (libc.a) on the build host\n and refuse executables that include host, user or\n group name lookups (opt in; --emit=exe only)\n --windows-subsystem <console|gui>\n Windows executable subsystem (default: console). gui\n prevents Windows from opening a console window\n --detached-exit\n Linux: after process.exit, free the program's memory in\n a helper process so the parent sees the exit sooner. The\n helper keeps the executable mapped and its memory charged\n for up to ~100 ms after exit (opt in; --emit=exe only)\n --libnode <dir|beside>\n the libnode pack that calls into Node.js (@scriptc/node)\n load at run time, or beside to copy it next to the\n executable (default: SCRIPTC_LIBNODE at build time;\n SCRIPTC_LIBNODE overrides it at run time)\n --large-pages Linux: at startup, move the executable's code onto 2 MiB\n transparent huge pages when the system allows them, for\n large programs. Takes about 3 ms per 10 MiB of code, and\n all of the moved code stays resident (opt in; --emit=exe\n only)\n --exceptions <common|rare>\n Linux: how often the program throws (default: common).\n rare lets recursive functions and functions near a\n throw propagate exceptions by unwinding: their calls\n need no exception check, and a throw that crosses them\n costs a native unwind of several microseconds\n --target-cpu <baseline|x86-64-v2|x86-64-v3|x86-64-v4|native>\n x86-64: compile the program's code for a CPU level\n (default: baseline, which runs on any x86-64 CPU). The\n executable then requires that level: v3 adds AVX2, BMI2\n and FMA, v4 adds AVX-512. native uses the build host's\n level. The runtime keeps its baseline code\n --cpu-dispatch x86-64: also compile the program's code for x86-64-v3\n (AVX2), and run that copy on CPUs that support it. The\n executable still runs on any x86-64 CPU. Not used with\n --target-cpu above baseline. The SCRIPTC_CPU_LEVEL\n environment variable (0 to 4, or a level name) caps the\n level at run time (opt in; --emit=exe only)\n --profile-generate <pattern>\n Linux: instrument the executable for profile-guided\n optimization. Each run writes a raw profile to the\n pattern (%p expands to the process id; the\n LLVM_PROFILE_FILE environment variable overrides it).\n Instrumented programs run slower (--emit=exe only)\n --profile-use <file.profdata>\n optimize with a merged profile (scriptc merge-profiles):\n code is laid out, inlined and split by how the profiled\n runs used it. Code the profile does not describe, or\n describes from an older version of the program, is\n optimized as without one, unless a .blocks file beside\n the profile describes it. build prints how the profile\n matched on stderr, and warns when more than 10% of the\n functions it describes changed (release or speed;\n --emit=exe only)\n --keep-llvm keep generated LLVM IR beside the executable (default)\n --no-keep-llvm delete generated LLVM IR after compiling\n --emit-ir also write IR beside an executable or library archive;\n deprecated for executables: use --emit=ir for primary IR\n --sanitize build with ASan + runtime RC audit\n --ffi <file> bind signature-only TypeScript declarations to native\n C symbols and link the manifest's archives/libraries\n --npm-static <pkg[,pkg\u2026]|auto>\n compile the named npm packages' shipped JS statically as\n program modules (repeatable; \"auto\" opts in every eligible\n direct import: own .d.ts, no build-transform markers;\n \"pkg...\" also names every package pkg depends on).\n Packages that fail preflight are refused with a\n diagnostic. Eligible dependencies compile automatically.\n --no-shape-overlay\n compile npm packages' JavaScript without the types shape\n inference proves (per package: \"scriptc\": {\"packages\":\n {\"<name>\": {\"shapes\": false}}} in package.json)\n --provenance-sources\n EXPERIMENTAL: compile npm dependencies from their\n provenance-attested SOURCE (fetched at the attested\n commit) as static program modules; packages without a\n usable attestation use their published source\n --external-types <specifier=file.d.ts>\n coverage only: map an exact bare module specifier to a\n local declaration file. The declaration supplies types\n for analysis; the host module remains an explicit\n external-boundary blocker (repeatable)\n --tier <auto|static-only>\n tier policy (default: auto). static-only keeps every\n construct without a static lowering a compile error, so\n the program has no dynamic-tier demotions. Both modes\n currently compile identically\n --explain-dynamic[=<name>]\n coverage only: list the functions that operate on dynamic\n values and the bindings, fields, functions, classes and\n modules the dynamic tier would take over, with the\n refusal behind each; a name shows only that unit's chain\n --no-dynamic-tier-warning\n build and coverage: leave out SC6101, the warning that\n names likely-hot functions that use untyped values\n --node-islands <auto|explicit|off>\n Node island policy (default: auto): npm packages outside\n the native subset run in Node automatically; explicit\n allows only marked islands; off allows none. REPORT-ONLY\n in this version: coverage reports the islands a build\n would choose; builds compile as before\n --node-island <pkg-or-path>\n mark an npm package or one of your modules (a path or\n glob) to run in a Node island (repeatable, comma lists;\n report-only)\n --native <pkg> require an npm package to compile natively; outside the\n native subset it is SC8003 (repeatable; report-only)\n --node <path> the node executable Node islands use (report-only)\n --explain-island <pkg>\n coverage only: why a package would run in a Node island,\n with the first reason per module, the native import\n sites and the packages inside its closure\n --strict-user-js\n coverage only: report constructor functions, prototype\n and shape mutation, sloppy-mode semantics and builtin\n patching in your own .js/.cjs/.mjs modules as\n SC8101\u2013SC8105 blockers\n --wasm <file.wasm>\n coverage only: report a WebAssembly module the program\n loads whose path its sources do not spell (repeatable;\n modules the sources name, inline modules and packaged\n .wasm files are found without it)\n -h, --help show this help\n -v, --version print the version\n";
1
+ /** The scriptc command line's commands and options. `CLI_OPTIONS` configures the argument
2
+ * parser, `CLI_OPTION_DOCS` and `CLI_COMMANDS` describe every option and command, and the help
3
+ * text and the MCP tools are both generated from these tables. */
2
4
  export declare const CLI_OPTIONS: {
3
5
  readonly out: {
4
6
  readonly type: "string";
@@ -34,6 +36,10 @@ export declare const CLI_OPTIONS: {
34
36
  readonly type: "boolean";
35
37
  readonly default: false;
36
38
  };
39
+ readonly "stdout-buffering": {
40
+ readonly type: "boolean";
41
+ readonly default: false;
42
+ };
37
43
  readonly libnode: {
38
44
  readonly type: "string";
39
45
  };
@@ -150,3 +156,47 @@ export declare const CLI_OPTIONS: {
150
156
  readonly default: false;
151
157
  };
152
158
  };
159
+ /** A command-line option, named as `parseArgs` and `--<name>` spell it. */
160
+ export type CliOptionName = keyof typeof CLI_OPTIONS;
161
+ /** A term in the help text, such as a flag or a command's syntax, and the lines that explain it. */
162
+ export interface CliHelpEntry {
163
+ readonly term: string;
164
+ readonly help: readonly string[];
165
+ }
166
+ /** How the help documents an option. `entries` are its lines in the Options section. An option
167
+ * that only a command's usage line names has no entries, and `summary` says what it does. */
168
+ export interface CliOptionDoc {
169
+ readonly entries: readonly CliHelpEntry[];
170
+ readonly summary?: string;
171
+ }
172
+ /** Every option's documentation, in the order the Options section lists them; `satisfies`
173
+ * makes the compiler require one entry per option. */
174
+ export declare const CLI_OPTION_DOCS: Readonly<Record<string, CliOptionDoc>>;
175
+ /** A positional argument of a command. */
176
+ export interface CliPositional {
177
+ readonly name: string;
178
+ readonly summary: string;
179
+ readonly required: boolean;
180
+ readonly variadic: boolean;
181
+ }
182
+ /** The strongest effect a command can have: read files, write files, or execute the program it
183
+ * compiles. */
184
+ export type CliCommandEffect = "read" | "write" | "execute";
185
+ /** A command: the arguments that select it, its help, and the positionals and options it takes. */
186
+ export interface CliCommand {
187
+ /** The command's words joined by hyphens, such as `types-patch`. */
188
+ readonly name: string;
189
+ /** The leading arguments that select the command. */
190
+ readonly argv: readonly string[];
191
+ readonly usage: readonly CliHelpEntry[];
192
+ readonly positionals: readonly CliPositional[];
193
+ readonly options: readonly CliOptionName[];
194
+ readonly requiredOptions: readonly CliOptionName[];
195
+ /** Whether `--print=diagnostics` makes the command write the JSON diagnostics envelope. */
196
+ readonly diagnostics: boolean;
197
+ readonly effect: CliCommandEffect;
198
+ }
199
+ /** Every command, in the order the help lists them. */
200
+ export declare const CLI_COMMANDS: readonly CliCommand[];
201
+ /** The `--help` text. */
202
+ export declare const USAGE: string;