@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,601 @@
1
+ /** `scriptc mcp`: a Model Context Protocol server over stdio. Every command in `CLI_COMMANDS` is
2
+ * one tool, its input schema comes from the command's positionals and options, and a call runs the
3
+ * command as a child process of this same compiler, so the server shares the command line's
4
+ * parsing, validation and output. */
5
+ import { spawn } from "node:child_process";
6
+ import { CLI_COMMANDS, CLI_OPTION_DOCS, CLI_OPTIONS, } from "./usage.js";
7
+ const MODERN_VERSION = "2026-07-28";
8
+ const LEGACY_VERSIONS = ["2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05"];
9
+ const PROTOCOL_VERSION_META = "io.modelcontextprotocol/protocolVersion";
10
+ const SERVER_INFO_META = "io.modelcontextprotocol/serverInfo";
11
+ const TOOL_PREFIX = "scriptc_";
12
+ const TOOLS_TTL_MS = 86_400_000;
13
+ const MAX_MESSAGE_CHARS = 4 * 1024 * 1024;
14
+ const MAX_OUTPUT_CHARS = 8 * 1024 * 1024;
15
+ const MAX_CONCURRENT_CALLS = 4;
16
+ const CALL_TIMEOUT_MS = 10 * 60 * 1000;
17
+ const OUTPUT_DRAIN_MS = 2000;
18
+ const DIAGNOSTICS_SCHEMA = "scriptc-diagnostics";
19
+ /** A JSON-RPC error. */
20
+ export class RpcError extends Error {
21
+ code;
22
+ data;
23
+ constructor(code, message, data) {
24
+ super(message);
25
+ this.code = code;
26
+ this.data = data;
27
+ this.name = "RpcError";
28
+ }
29
+ }
30
+ /** The tool name of a command. */
31
+ export function toolName(command) {
32
+ return TOOL_PREFIX + command.name.replaceAll("-", "_");
33
+ }
34
+ function propertyName(option) {
35
+ return option.replaceAll("-", "_");
36
+ }
37
+ /** The options a tool exposes: the command's options, less those the diagnostics envelope makes
38
+ * meaningless for commands that write it: `--print`, which the server owns, and
39
+ * `--explain-island`, which only changes the human-readable report. */
40
+ function toolOptions(command) {
41
+ return command.options.filter((option) => !(command.diagnostics && (option === "print" || option === "explain-island")));
42
+ }
43
+ function optionSummary(option) {
44
+ const doc = CLI_OPTION_DOCS[option] ?? { entries: [] };
45
+ const lines = doc.entries.map((entry) => {
46
+ const text = entry.help.join(" ");
47
+ return `${entry.term.startsWith("--no-") ? "false means " : ""}${entry.term}: ${text}`;
48
+ });
49
+ return [...(doc.summary === undefined ? [] : [doc.summary]), ...lines].join(" ");
50
+ }
51
+ function optionSchema(option) {
52
+ const config = CLI_OPTIONS[option];
53
+ const description = optionSummary(option);
54
+ if (config.type === "boolean") {
55
+ return config.default === undefined
56
+ ? { type: "boolean", description }
57
+ : { type: "boolean", default: config.default, description };
58
+ }
59
+ if (config.multiple === true)
60
+ return { type: "array", items: { type: "string" }, description };
61
+ return { type: "string", description };
62
+ }
63
+ function outputSchema(command) {
64
+ const properties = {
65
+ exitCode: { type: ["integer", "null"], description: "the command's exit status" },
66
+ signal: { type: "string", description: "the signal that ended the command" },
67
+ timedOut: { type: "boolean", description: "the command ran out of time and was stopped" },
68
+ stdout: { type: "string" },
69
+ stderr: { type: "string" },
70
+ truncated: { type: "boolean", description: "stdout or stderr was cut at the output limit" },
71
+ };
72
+ if (command.diagnostics) {
73
+ properties["diagnostics"] = {
74
+ type: "object",
75
+ description: "the scriptc-diagnostics JSON envelope that --print=diagnostics writes",
76
+ };
77
+ }
78
+ return { type: "object", properties, required: ["exitCode"], additionalProperties: false };
79
+ }
80
+ /** The MCP `Tool` object for a command. */
81
+ export function toolDefinition(command) {
82
+ const properties = {};
83
+ const required = [];
84
+ for (const positional of command.positionals) {
85
+ properties[positional.name] = positional.variadic
86
+ ? {
87
+ type: "array",
88
+ items: { type: "string" },
89
+ ...(positional.required ? { minItems: 1 } : {}),
90
+ description: positional.summary,
91
+ }
92
+ : { type: "string", description: positional.summary };
93
+ if (positional.required)
94
+ required.push(positional.name);
95
+ }
96
+ for (const option of toolOptions(command)) {
97
+ properties[propertyName(option)] = optionSchema(option);
98
+ if (command.requiredOptions.includes(option))
99
+ required.push(propertyName(option));
100
+ }
101
+ const inputSchema = { type: "object", properties, additionalProperties: false };
102
+ if (required.length > 0)
103
+ inputSchema["required"] = required;
104
+ const readOnly = command.effect === "read";
105
+ return {
106
+ name: toolName(command),
107
+ title: ["scriptc", ...command.argv].join(" "),
108
+ description: command.usage.map((entry) => `${entry.term}: ${entry.help.join(" ")}`).join("\n"),
109
+ inputSchema,
110
+ outputSchema: outputSchema(command),
111
+ annotations: {
112
+ readOnlyHint: readOnly,
113
+ ...(readOnly ? {} : { destructiveHint: true }),
114
+ openWorldHint: command.effect === "execute" || command.options.includes("provenance-sources"),
115
+ },
116
+ };
117
+ }
118
+ /** `value` as a JSON object, or null when it is any other JSON value. */
119
+ function asObject(value) {
120
+ return typeof value === "object" && value !== null && !Array.isArray(value)
121
+ ? value
122
+ : null;
123
+ }
124
+ /** `value` as a list of strings, or an error naming `key`. */
125
+ function stringList(key, value) {
126
+ if (!Array.isArray(value))
127
+ throw new Error(`${key} must be an array of strings`);
128
+ const items = value;
129
+ const list = [];
130
+ for (const item of items) {
131
+ if (typeof item !== "string")
132
+ throw new Error(`${key} must be an array of strings`);
133
+ list.push(item);
134
+ }
135
+ return list;
136
+ }
137
+ /** The command-line arguments, after the executable, that run `command` with tool `args`. Option
138
+ * values are always joined to their flag and positionals follow `--`, so no value can be read as
139
+ * a flag. A null value counts as omitted. */
140
+ export function toolArgv(command, args) {
141
+ const options = [];
142
+ const positionals = new Map();
143
+ for (const [key, value] of Object.entries(args)) {
144
+ if (value === null)
145
+ continue;
146
+ const positional = command.positionals.find((candidate) => candidate.name === key);
147
+ if (positional !== undefined) {
148
+ if (positional.variadic) {
149
+ positionals.set(key, stringList(key, value));
150
+ }
151
+ else {
152
+ if (typeof value !== "string")
153
+ throw new Error(`${key} must be a string`);
154
+ positionals.set(key, [value]);
155
+ }
156
+ continue;
157
+ }
158
+ const option = toolOptions(command).find((candidate) => propertyName(candidate) === key);
159
+ if (option === undefined) {
160
+ const known = [
161
+ ...command.positionals.map((candidate) => candidate.name),
162
+ ...toolOptions(command).map(propertyName),
163
+ ];
164
+ throw new Error(`unknown argument ${JSON.stringify(key)} for ${toolName(command)} (accepted: ${known.join(", ") || "none"})`);
165
+ }
166
+ const config = CLI_OPTIONS[option];
167
+ if (config.type === "boolean") {
168
+ if (typeof value !== "boolean")
169
+ throw new Error(`${key} must be a boolean`);
170
+ options.push(value ? `--${option}` : `--no-${option}`);
171
+ }
172
+ else if (config.multiple === true) {
173
+ for (const item of stringList(key, value))
174
+ options.push(`--${option}=${item}`);
175
+ }
176
+ else {
177
+ if (typeof value !== "string")
178
+ throw new Error(`${key} must be a string`);
179
+ options.push(`--${option}=${value}`);
180
+ }
181
+ }
182
+ if (command.diagnostics)
183
+ options.push("--print=diagnostics");
184
+ const trailing = command.positionals.flatMap((positional) => positionals.get(positional.name) ?? []);
185
+ return [...command.argv, ...options, ...(trailing.length > 0 ? ["--", ...trailing] : [])];
186
+ }
187
+ /** Maps a finished command to a `CallToolResult`. A diagnostics envelope on stdout becomes the
188
+ * `diagnostics` field; anything else stays text. */
189
+ export function callResult(command, output) {
190
+ const structured = { exitCode: output.exitCode };
191
+ if (output.signal !== null)
192
+ structured["signal"] = output.signal;
193
+ if (output.timedOut)
194
+ structured["timedOut"] = true;
195
+ let diagnostics = null;
196
+ if (command.diagnostics && !output.truncated) {
197
+ try {
198
+ const envelope = asObject(JSON.parse(output.stdout));
199
+ if (envelope !== null && envelope["schema"] === DIAGNOSTICS_SCHEMA)
200
+ diagnostics = envelope;
201
+ }
202
+ catch {
203
+ diagnostics = null;
204
+ }
205
+ }
206
+ if (diagnostics !== null)
207
+ structured["diagnostics"] = diagnostics;
208
+ else if (output.stdout !== "")
209
+ structured["stdout"] = output.stdout;
210
+ if (output.stderr !== "")
211
+ structured["stderr"] = output.stderr;
212
+ if (output.truncated)
213
+ structured["truncated"] = true;
214
+ return {
215
+ content: [{ type: "text", text: JSON.stringify(structured) }],
216
+ structuredContent: structured,
217
+ isError: output.exitCode !== 0,
218
+ };
219
+ }
220
+ function errorResult(message) {
221
+ return {
222
+ content: [{ type: "text", text: message }],
223
+ structuredContent: { exitCode: null, stderr: message },
224
+ isError: true,
225
+ };
226
+ }
227
+ /** Collects one output stream up to `MAX_OUTPUT_CHARS`. */
228
+ class OutputBuffer {
229
+ text = "";
230
+ truncated = false;
231
+ append(chunk) {
232
+ if (this.truncated)
233
+ return;
234
+ const room = MAX_OUTPUT_CHARS - this.text.length;
235
+ if (chunk.length <= room) {
236
+ this.text += chunk;
237
+ return;
238
+ }
239
+ this.text += chunk.slice(0, room);
240
+ this.truncated = true;
241
+ }
242
+ }
243
+ /** Stops a child and every process it started: its process group on POSIX, even after the child
244
+ * itself exited, and its tree on Windows. */
245
+ function killTree(child) {
246
+ const pid = child.pid;
247
+ if (pid === undefined)
248
+ return;
249
+ if (process.platform === "win32" && (child.exitCode !== null || child.signalCode !== null))
250
+ return;
251
+ try {
252
+ if (process.platform === "win32") {
253
+ spawn("taskkill", ["/pid", String(pid), "/T", "/F"], { stdio: "ignore" }).on("error", () => {
254
+ child.kill();
255
+ });
256
+ }
257
+ else {
258
+ process.kill(-pid, "SIGKILL");
259
+ }
260
+ }
261
+ catch {
262
+ child.kill("SIGKILL");
263
+ }
264
+ }
265
+ /** The protocol state of one server: it answers each message through `write`. */
266
+ export class McpServer {
267
+ host;
268
+ write;
269
+ cwd;
270
+ running = new Map();
271
+ idle = [];
272
+ info = null;
273
+ constructor(host, write, cwd) {
274
+ this.host = host;
275
+ this.write = write;
276
+ this.cwd = cwd;
277
+ }
278
+ instructions() {
279
+ return ("scriptc compiles TypeScript and JavaScript to native executables and WebAssembly. Each tool " +
280
+ "runs the scriptc command of the same name. Start with scriptc_coverage to see what " +
281
+ "compiles and why not; scriptc_build and scriptc_coverage return the JSON diagnostics " +
282
+ "envelope, with an SC code, a location and usually a rewrite hint for each problem. " +
283
+ "scriptc_run compiles and runs a program with its stdin closed and returns its output. " +
284
+ `Relative paths resolve against ${this.cwd}.`);
285
+ }
286
+ serverInfo() {
287
+ this.info ??= { name: "scriptc", version: this.host.version() };
288
+ return this.info;
289
+ }
290
+ /** Handles one parsed message; a request gets exactly one response unless it is cancelled. */
291
+ handle(parsed) {
292
+ const message = asObject(parsed);
293
+ if (message === null) {
294
+ this.respondError(null, new RpcError(-32600, "Invalid Request: expected one JSON-RPC object"));
295
+ return;
296
+ }
297
+ const method = message["method"];
298
+ const id = message["id"];
299
+ if (method === undefined && (message["result"] !== undefined || message["error"] !== undefined))
300
+ return;
301
+ const params = asObject(message["params"]) ?? {};
302
+ if (id === undefined) {
303
+ if (method === "notifications/cancelled")
304
+ this.cancel(params["requestId"]);
305
+ return;
306
+ }
307
+ if (id === null || (typeof id !== "string" && typeof id !== "number")) {
308
+ this.respondError(null, new RpcError(-32600, "Invalid Request: id must be a string or number"));
309
+ return;
310
+ }
311
+ if (typeof method !== "string") {
312
+ this.respondError(id, new RpcError(-32600, "Invalid Request: method must be a string"));
313
+ return;
314
+ }
315
+ try {
316
+ this.checkVersion(method, params);
317
+ if (method === "tools/call") {
318
+ this.startCall(id, params);
319
+ return;
320
+ }
321
+ this.respond(id, this.result(method, params));
322
+ }
323
+ catch (error) {
324
+ this.respondError(id, error instanceof RpcError ? error : new RpcError(-32603, String(error)));
325
+ }
326
+ }
327
+ /** Resolves once every running call has answered. */
328
+ drain() {
329
+ return new Promise((resolveIdle) => {
330
+ if (this.running.size === 0)
331
+ resolveIdle();
332
+ else
333
+ this.idle.push(resolveIdle);
334
+ });
335
+ }
336
+ /** Stops every running call. */
337
+ stopAll() {
338
+ for (const call of this.running.values()) {
339
+ call.cancelled = true;
340
+ if (call.child !== null)
341
+ killTree(call.child);
342
+ }
343
+ }
344
+ checkVersion(method, params) {
345
+ const meta = asObject(params["_meta"]);
346
+ if (meta === null)
347
+ return;
348
+ const requested = meta[PROTOCOL_VERSION_META];
349
+ if (requested === undefined || method === "initialize")
350
+ return;
351
+ if (requested !== MODERN_VERSION) {
352
+ throw new RpcError(-32022, "Unsupported protocol version", {
353
+ supported: [MODERN_VERSION, ...LEGACY_VERSIONS],
354
+ requested,
355
+ });
356
+ }
357
+ }
358
+ result(method, params) {
359
+ if (method === "initialize") {
360
+ const requested = params["protocolVersion"];
361
+ return {
362
+ protocolVersion: typeof requested === "string" && LEGACY_VERSIONS.includes(requested)
363
+ ? requested
364
+ : LEGACY_VERSIONS[0],
365
+ capabilities: { tools: {} },
366
+ serverInfo: this.serverInfo(),
367
+ instructions: this.instructions(),
368
+ };
369
+ }
370
+ if (method === "server/discover") {
371
+ return {
372
+ supportedVersions: [MODERN_VERSION, ...LEGACY_VERSIONS],
373
+ capabilities: { tools: {} },
374
+ instructions: this.instructions(),
375
+ ttlMs: TOOLS_TTL_MS,
376
+ cacheScope: "private",
377
+ };
378
+ }
379
+ if (method === "ping")
380
+ return {};
381
+ if (method === "tools/list") {
382
+ return { tools: CLI_COMMANDS.map(toolDefinition), ttlMs: TOOLS_TTL_MS, cacheScope: "public" };
383
+ }
384
+ throw new RpcError(-32601, `Method not found: ${method}`);
385
+ }
386
+ startCall(id, params) {
387
+ const name = params["name"];
388
+ if (typeof name !== "string")
389
+ throw new RpcError(-32602, "tools/call needs a tool name");
390
+ const command = CLI_COMMANDS.find((candidate) => toolName(candidate) === name);
391
+ if (command === undefined)
392
+ throw new RpcError(-32602, `Unknown tool: ${name}`);
393
+ const given = params["arguments"];
394
+ const args = given === undefined || given === null ? {} : asObject(given);
395
+ if (args === null)
396
+ throw new RpcError(-32602, "tool arguments must be an object");
397
+ const key = JSON.stringify(id);
398
+ if (this.running.has(key))
399
+ throw new RpcError(-32600, `request id ${key} is already running`);
400
+ if (this.running.size >= MAX_CONCURRENT_CALLS) {
401
+ this.respond(id, errorResult(`${MAX_CONCURRENT_CALLS} tool calls are already running; retry when one finishes`));
402
+ return;
403
+ }
404
+ let argv;
405
+ try {
406
+ argv = toolArgv(command, args);
407
+ }
408
+ catch (error) {
409
+ this.respond(id, errorResult(error instanceof Error ? error.message : String(error)));
410
+ return;
411
+ }
412
+ const call = { child: null, cancelled: false };
413
+ this.running.set(key, call);
414
+ void this.runCall(command, argv, call).then((result) => {
415
+ this.running.delete(key);
416
+ if (!call.cancelled)
417
+ this.respond(id, result);
418
+ if (this.running.size === 0)
419
+ for (const resolveIdle of this.idle.splice(0))
420
+ resolveIdle();
421
+ });
422
+ }
423
+ runCall(command, argv, call) {
424
+ return new Promise((resolveResult) => {
425
+ const invocation = this.host.reinvoke(argv);
426
+ let child;
427
+ try {
428
+ child = spawn(invocation.file, invocation.args, {
429
+ cwd: this.cwd,
430
+ stdio: ["ignore", "pipe", "pipe"],
431
+ detached: process.platform !== "win32",
432
+ windowsHide: true,
433
+ });
434
+ }
435
+ catch (error) {
436
+ resolveResult(errorResult(`cannot start scriptc: ${String(error)}`));
437
+ return;
438
+ }
439
+ call.child = child;
440
+ const stdout = new OutputBuffer();
441
+ const stderr = new OutputBuffer();
442
+ let timedOut = false;
443
+ const timer = setTimeout(() => {
444
+ timedOut = true;
445
+ killTree(child);
446
+ }, CALL_TIMEOUT_MS);
447
+ child.stdout?.setEncoding("utf8");
448
+ child.stderr?.setEncoding("utf8");
449
+ child.stdout?.on("data", (chunk) => stdout.append(chunk));
450
+ child.stderr?.on("data", (chunk) => stderr.append(chunk));
451
+ let drain;
452
+ let settled = false;
453
+ const settle = (result) => {
454
+ if (settled)
455
+ return;
456
+ settled = true;
457
+ clearTimeout(timer);
458
+ if (drain !== undefined)
459
+ clearTimeout(drain);
460
+ resolveResult(result);
461
+ };
462
+ const finish = (exitCode, signal) => settle(callResult(command, {
463
+ exitCode,
464
+ signal,
465
+ timedOut,
466
+ stdout: stdout.text,
467
+ stderr: stderr.text,
468
+ truncated: stdout.truncated || stderr.truncated,
469
+ }));
470
+ child.on("error", (error) => settle(errorResult(`cannot start scriptc: ${error.message}`)));
471
+ child.on("exit", (exitCode, signal) => {
472
+ clearTimeout(timer);
473
+ drain = setTimeout(() => {
474
+ child.stdout?.pause();
475
+ child.stderr?.pause();
476
+ finish(exitCode, signal);
477
+ }, OUTPUT_DRAIN_MS);
478
+ });
479
+ child.on("close", (exitCode, signal) => finish(exitCode, signal));
480
+ });
481
+ }
482
+ cancel(requestId) {
483
+ if (typeof requestId !== "string" && typeof requestId !== "number")
484
+ return;
485
+ const call = this.running.get(JSON.stringify(requestId));
486
+ if (call === undefined)
487
+ return;
488
+ call.cancelled = true;
489
+ if (call.child !== null)
490
+ killTree(call.child);
491
+ }
492
+ respond(id, result) {
493
+ this.write({
494
+ jsonrpc: "2.0",
495
+ id,
496
+ result: {
497
+ ...result,
498
+ resultType: "complete",
499
+ _meta: { [SERVER_INFO_META]: this.serverInfo() },
500
+ },
501
+ });
502
+ }
503
+ respondError(id, error) {
504
+ const body = { code: error.code, message: error.message };
505
+ if (error.data !== undefined)
506
+ body["data"] = error.data;
507
+ this.write({ jsonrpc: "2.0", id, error: body });
508
+ }
509
+ }
510
+ /** Splits newline-delimited messages, refusing any message longer than `MAX_MESSAGE_CHARS`
511
+ * without buffering the rest of it. */
512
+ export class MessageReader {
513
+ onMessage;
514
+ onOversized;
515
+ buffer = "";
516
+ discarding = false;
517
+ constructor(onMessage, onOversized) {
518
+ this.onMessage = onMessage;
519
+ this.onOversized = onOversized;
520
+ }
521
+ push(chunk) {
522
+ let rest = chunk;
523
+ for (;;) {
524
+ const newline = rest.indexOf("\n");
525
+ if (newline === -1)
526
+ break;
527
+ this.finish(rest.slice(0, newline));
528
+ rest = rest.slice(newline + 1);
529
+ }
530
+ this.take(rest);
531
+ }
532
+ end() {
533
+ this.finish("");
534
+ }
535
+ take(text) {
536
+ if (this.discarding)
537
+ return;
538
+ if (this.buffer.length + text.length > MAX_MESSAGE_CHARS) {
539
+ this.buffer = "";
540
+ this.discarding = true;
541
+ this.onOversized();
542
+ return;
543
+ }
544
+ this.buffer += text;
545
+ }
546
+ finish(text) {
547
+ const wasDiscarding = this.discarding;
548
+ this.take(text);
549
+ const line = this.buffer;
550
+ this.buffer = "";
551
+ if (wasDiscarding || this.discarding) {
552
+ this.discarding = false;
553
+ return;
554
+ }
555
+ if (line.trim() !== "")
556
+ this.onMessage(line);
557
+ }
558
+ }
559
+ /** Serves MCP on stdin and stdout until stdin ends, waits for the running calls, and exits once
560
+ * stdout has flushed: a process a call left behind can still hold one of the server's pipes open,
561
+ * which would otherwise keep it running. A SIGTERM or SIGINT stops every running call first. */
562
+ export function serveMcp(host) {
563
+ const server = new McpServer(host, (message) => process.stdout.write(`${JSON.stringify(message)}\n`), process.cwd());
564
+ const reader = new MessageReader((line) => {
565
+ let message;
566
+ try {
567
+ message = JSON.parse(line);
568
+ }
569
+ catch (error) {
570
+ process.stdout.write(`${JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32700, message: `Parse error: ${error instanceof Error ? error.message : String(error)}` } })}\n`);
571
+ return;
572
+ }
573
+ server.handle(message);
574
+ }, () => process.stdout.write(`${JSON.stringify({ jsonrpc: "2.0", id: null, error: { code: -32600, message: `Invalid Request: message exceeds ${MAX_MESSAGE_CHARS} characters` } })}\n`));
575
+ return new Promise(() => {
576
+ const decoder = new TextDecoder();
577
+ process.stdin.on("data", (chunk) => reader.push(decoder.decode(chunk, { stream: true })));
578
+ let ended = false;
579
+ const finish = () => {
580
+ if (ended)
581
+ return;
582
+ ended = true;
583
+ reader.push(decoder.decode());
584
+ reader.end();
585
+ void server.drain().then(() => {
586
+ const status = typeof process.exitCode === "number" ? process.exitCode : 0;
587
+ process.stdout.write("", () => process.exit(status));
588
+ });
589
+ };
590
+ const stop = (status) => {
591
+ server.stopAll();
592
+ process.exitCode = status;
593
+ process.stdin.destroy();
594
+ finish();
595
+ };
596
+ process.once("SIGTERM", () => stop(143));
597
+ process.once("SIGINT", () => stop(130));
598
+ process.stdin.on("end", finish);
599
+ });
600
+ }
601
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/cli/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};