@forgecharts/sdk 1.2.1 → 1.2.5

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 (293) hide show
  1. package/dist/Omne-YBWT34SS.png +0 -0
  2. package/dist/Rithmic-CDB4YQEZ.png +0 -0
  3. package/dist/api/DrawingManager.d.ts +1 -1
  4. package/dist/api/DrawingManager.d.ts.map +1 -1
  5. package/dist/api/IndicatorDAG.d.ts +22 -0
  6. package/dist/api/IndicatorDAG.d.ts.map +1 -1
  7. package/dist/api/IndicatorRegistry.d.ts +6 -0
  8. package/dist/api/IndicatorRegistry.d.ts.map +1 -1
  9. package/dist/api/LayoutManager.d.ts +3 -1
  10. package/dist/api/LayoutManager.d.ts.map +1 -1
  11. package/dist/api/ReferenceAPI.d.ts +5 -0
  12. package/dist/api/ReferenceAPI.d.ts.map +1 -1
  13. package/dist/api/TChart.d.ts +69 -0
  14. package/dist/api/TChart.d.ts.map +1 -1
  15. package/dist/api/drawing tools/fib gann menu/fibChannel.d.ts +4 -0
  16. package/dist/api/drawing tools/fib gann menu/fibChannel.d.ts.map +1 -0
  17. package/dist/api/drawing tools/fib gann menu/fibCircles.d.ts +4 -0
  18. package/dist/api/drawing tools/fib gann menu/fibCircles.d.ts.map +1 -0
  19. package/dist/api/drawing tools/fib gann menu/fibRetracement.d.ts.map +1 -1
  20. package/dist/api/drawing tools/fib gann menu/fibSpeedResistanceArcs.d.ts +4 -0
  21. package/dist/api/drawing tools/fib gann menu/fibSpeedResistanceArcs.d.ts.map +1 -0
  22. package/dist/api/drawing tools/fib gann menu/fibSpeedResistanceFan.d.ts +4 -0
  23. package/dist/api/drawing tools/fib gann menu/fibSpeedResistanceFan.d.ts.map +1 -0
  24. package/dist/api/drawing tools/fib gann menu/fibSpiral.d.ts +4 -0
  25. package/dist/api/drawing tools/fib gann menu/fibSpiral.d.ts.map +1 -0
  26. package/dist/api/drawing tools/fib gann menu/fibTimeZone.d.ts +4 -0
  27. package/dist/api/drawing tools/fib gann menu/fibTimeZone.d.ts.map +1 -0
  28. package/dist/api/drawing tools/fib gann menu/fibWedge.d.ts +4 -0
  29. package/dist/api/drawing tools/fib gann menu/fibWedge.d.ts.map +1 -0
  30. package/dist/api/drawing tools/fib gann menu/gannBox.d.ts +4 -0
  31. package/dist/api/drawing tools/fib gann menu/gannBox.d.ts.map +1 -0
  32. package/dist/api/drawing tools/fib gann menu/gannFan.d.ts +4 -0
  33. package/dist/api/drawing tools/fib gann menu/gannFan.d.ts.map +1 -0
  34. package/dist/api/drawing tools/fib gann menu/gannSquare.d.ts +4 -0
  35. package/dist/api/drawing tools/fib gann menu/gannSquare.d.ts.map +1 -0
  36. package/dist/api/drawing tools/fib gann menu/gannSquareFixed.d.ts +4 -0
  37. package/dist/api/drawing tools/fib gann menu/gannSquareFixed.d.ts.map +1 -0
  38. package/dist/api/drawing tools/fib gann menu/pitchfan.d.ts +4 -0
  39. package/dist/api/drawing tools/fib gann menu/pitchfan.d.ts.map +1 -0
  40. package/dist/api/drawing tools/fib gann menu/trendBasedFibExtension.d.ts +4 -0
  41. package/dist/api/drawing tools/fib gann menu/trendBasedFibExtension.d.ts.map +1 -0
  42. package/dist/api/drawing tools/fib gann menu/trendBasedFibTime.d.ts +4 -0
  43. package/dist/api/drawing tools/fib gann menu/trendBasedFibTime.d.ts.map +1 -0
  44. package/dist/api/drawing tools/shapes menu/anchoredText.d.ts +7 -0
  45. package/dist/api/drawing tools/shapes menu/anchoredText.d.ts.map +1 -0
  46. package/dist/api/drawing tools/shapes menu/arc.d.ts +8 -0
  47. package/dist/api/drawing tools/shapes menu/arc.d.ts.map +1 -0
  48. package/dist/api/drawing tools/shapes menu/arrow.d.ts +4 -0
  49. package/dist/api/drawing tools/shapes menu/arrow.d.ts.map +1 -0
  50. package/dist/api/drawing tools/shapes menu/arrowDown.d.ts +7 -0
  51. package/dist/api/drawing tools/shapes menu/arrowDown.d.ts.map +1 -0
  52. package/dist/api/drawing tools/shapes menu/arrowUp.d.ts +7 -0
  53. package/dist/api/drawing tools/shapes menu/arrowUp.d.ts.map +1 -0
  54. package/dist/api/drawing tools/shapes menu/callout.d.ts +7 -0
  55. package/dist/api/drawing tools/shapes menu/callout.d.ts.map +1 -0
  56. package/dist/api/drawing tools/shapes menu/dateRange.d.ts +4 -0
  57. package/dist/api/drawing tools/shapes menu/dateRange.d.ts.map +1 -0
  58. package/dist/api/drawing tools/shapes menu/ellipse.d.ts +4 -0
  59. package/dist/api/drawing tools/shapes menu/ellipse.d.ts.map +1 -0
  60. package/dist/api/drawing tools/shapes menu/longPosition.d.ts +4 -0
  61. package/dist/api/drawing tools/shapes menu/longPosition.d.ts.map +1 -0
  62. package/dist/api/drawing tools/shapes menu/priceLabel.d.ts +7 -0
  63. package/dist/api/drawing tools/shapes menu/priceLabel.d.ts.map +1 -0
  64. package/dist/api/drawing tools/shapes menu/priceRange.d.ts +4 -0
  65. package/dist/api/drawing tools/shapes menu/priceRange.d.ts.map +1 -0
  66. package/dist/api/drawing tools/shapes menu/shortPosition.d.ts +4 -0
  67. package/dist/api/drawing tools/shapes menu/shortPosition.d.ts.map +1 -0
  68. package/dist/api/drawing tools/shapes menu/triangle.d.ts +4 -0
  69. package/dist/api/drawing tools/shapes menu/triangle.d.ts.map +1 -0
  70. package/dist/core/Chart.d.ts +29 -2
  71. package/dist/core/Chart.d.ts.map +1 -1
  72. package/dist/core/CoordTransform.d.ts.map +1 -1
  73. package/dist/core/Crosshair.d.ts +2 -0
  74. package/dist/core/Crosshair.d.ts.map +1 -1
  75. package/dist/core/IndicatorEngine.d.ts +15 -0
  76. package/dist/core/IndicatorEngine.d.ts.map +1 -1
  77. package/dist/core/InteractionManager.d.ts +55 -2
  78. package/dist/core/InteractionManager.d.ts.map +1 -1
  79. package/dist/core/PriceScale.d.ts +2 -0
  80. package/dist/core/PriceScale.d.ts.map +1 -1
  81. package/dist/core/Series.d.ts.map +1 -1
  82. package/dist/core/TimeScale.d.ts +52 -1
  83. package/dist/core/TimeScale.d.ts.map +1 -1
  84. package/dist/core/indicatorStyles.d.ts +37 -0
  85. package/dist/core/indicatorStyles.d.ts.map +1 -0
  86. package/dist/datafeed/DatafeedConnector.d.ts +27 -0
  87. package/dist/datafeed/DatafeedConnector.d.ts.map +1 -1
  88. package/dist/engine/CandleEngine.d.ts +2 -0
  89. package/dist/engine/CandleEngine.d.ts.map +1 -1
  90. package/dist/forgecharts.css +2029 -132
  91. package/dist/forgescript/ast.d.ts +71 -4
  92. package/dist/forgescript/ast.d.ts.map +1 -1
  93. package/dist/forgescript/builtins/collections.d.ts +56 -0
  94. package/dist/forgescript/builtins/collections.d.ts.map +1 -0
  95. package/dist/forgescript/builtins/drawing.d.ts +57 -0
  96. package/dist/forgescript/builtins/drawing.d.ts.map +1 -0
  97. package/dist/forgescript/builtins/udt.d.ts +30 -0
  98. package/dist/forgescript/builtins/udt.d.ts.map +1 -0
  99. package/dist/forgescript/conversion/index.d.ts +16 -9
  100. package/dist/forgescript/conversion/index.d.ts.map +1 -1
  101. package/dist/forgescript/conversion/types.d.ts +10 -54
  102. package/dist/forgescript/conversion/types.d.ts.map +1 -1
  103. package/dist/forgescript/conversion/validation.d.ts.map +1 -1
  104. package/dist/forgescript/datasets/DatasetStore.d.ts +65 -0
  105. package/dist/forgescript/datasets/DatasetStore.d.ts.map +1 -0
  106. package/dist/forgescript/datasets/parseDataset.d.ts +32 -0
  107. package/dist/forgescript/datasets/parseDataset.d.ts.map +1 -0
  108. package/dist/forgescript/parser.d.ts +19 -1
  109. package/dist/forgescript/parser.d.ts.map +1 -1
  110. package/dist/forgescript/runtime.d.ts +125 -104
  111. package/dist/forgescript/runtime.d.ts.map +1 -1
  112. package/dist/index.d.ts +14 -7
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +21487 -8016
  115. package/dist/index.js.map +1 -1
  116. package/dist/internal.d.ts +2 -0
  117. package/dist/internal.d.ts.map +1 -1
  118. package/dist/internal.js +19599 -6869
  119. package/dist/internal.js.map +1 -1
  120. package/dist/licensing/ChartRuntimeResolver.d.ts +134 -124
  121. package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -1
  122. package/dist/licensing/LicenseManager.d.ts.map +1 -1
  123. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts +2 -0
  124. package/dist/licensing/__tests__/ChartRuntimeResolver.test.d.ts.map +1 -1
  125. package/dist/licensing/licenseTypes.d.ts +56 -15
  126. package/dist/licensing/licenseTypes.d.ts.map +1 -1
  127. package/dist/node.d.ts +57 -0
  128. package/dist/node.d.ts.map +1 -0
  129. package/dist/pixi/PixiBenchmark.d.ts +56 -0
  130. package/dist/pixi/PixiBenchmark.d.ts.map +1 -0
  131. package/dist/pixi/PixiCandlestickRenderer.d.ts +19 -6
  132. package/dist/pixi/PixiCandlestickRenderer.d.ts.map +1 -1
  133. package/dist/pixi/PixiChart.d.ts +108 -2
  134. package/dist/pixi/PixiChart.d.ts.map +1 -1
  135. package/dist/pixi/PixiCrosshairRenderer.d.ts +10 -0
  136. package/dist/pixi/PixiCrosshairRenderer.d.ts.map +1 -1
  137. package/dist/pixi/PixiDrawingRenderer.d.ts +17 -5
  138. package/dist/pixi/PixiDrawingRenderer.d.ts.map +1 -1
  139. package/dist/pixi/PixiGridRenderer.d.ts +18 -2
  140. package/dist/pixi/PixiGridRenderer.d.ts.map +1 -1
  141. package/dist/pixi/PixiHistogramRenderer.d.ts +17 -0
  142. package/dist/pixi/PixiHistogramRenderer.d.ts.map +1 -0
  143. package/dist/pixi/PixiIndicatorRenderer.d.ts +35 -0
  144. package/dist/pixi/PixiIndicatorRenderer.d.ts.map +1 -0
  145. package/dist/pixi/PixiLastPriceRenderer.d.ts +33 -0
  146. package/dist/pixi/PixiLastPriceRenderer.d.ts.map +1 -0
  147. package/dist/pixi/PixiLayerManager.d.ts.map +1 -1
  148. package/dist/pixi/PixiLineRenderer.d.ts +19 -0
  149. package/dist/pixi/PixiLineRenderer.d.ts.map +1 -0
  150. package/dist/pixi/PixiTradingRenderer.d.ts +100 -0
  151. package/dist/pixi/PixiTradingRenderer.d.ts.map +1 -0
  152. package/dist/pixi/snap.d.ts +38 -0
  153. package/dist/pixi/snap.d.ts.map +1 -0
  154. package/dist/react/agent/AgentFAB.d.ts +21 -0
  155. package/dist/react/agent/AgentFAB.d.ts.map +1 -0
  156. package/dist/react/agent/AgentProvider.d.ts +15 -0
  157. package/dist/react/agent/AgentProvider.d.ts.map +1 -0
  158. package/dist/react/agent/AgentUIBus.d.ts +118 -0
  159. package/dist/react/agent/AgentUIBus.d.ts.map +1 -0
  160. package/dist/react/agent/AssistantPanel.d.ts +13 -0
  161. package/dist/react/agent/AssistantPanel.d.ts.map +1 -0
  162. package/dist/react/agent/CommandDispatcher.d.ts +81 -0
  163. package/dist/react/agent/CommandDispatcher.d.ts.map +1 -0
  164. package/dist/react/agent/VoiceInput.d.ts +36 -0
  165. package/dist/react/agent/VoiceInput.d.ts.map +1 -0
  166. package/dist/react/agent/contractUtils.d.ts +31 -0
  167. package/dist/react/agent/contractUtils.d.ts.map +1 -0
  168. package/dist/react/agent/index.d.ts +18 -0
  169. package/dist/react/agent/index.d.ts.map +1 -0
  170. package/dist/react/agent/useAgent.d.ts +81 -0
  171. package/dist/react/agent/useAgent.d.ts.map +1 -0
  172. package/dist/react/canvas/ChartCanvas.d.ts +55 -0
  173. package/dist/react/canvas/ChartCanvas.d.ts.map +1 -1
  174. package/dist/react/canvas/ChartContextMenu.d.ts +1 -1
  175. package/dist/react/canvas/ChartContextMenu.d.ts.map +1 -1
  176. package/dist/react/canvas/ChartSettingsDialog.d.ts +80 -2
  177. package/dist/react/canvas/ChartSettingsDialog.d.ts.map +1 -1
  178. package/dist/react/canvas/ContractSwitchDialog.d.ts +22 -0
  179. package/dist/react/canvas/ContractSwitchDialog.d.ts.map +1 -0
  180. package/dist/react/canvas/DrawingPropertiesDialog.d.ts +23 -0
  181. package/dist/react/canvas/DrawingPropertiesDialog.d.ts.map +1 -0
  182. package/dist/react/canvas/IndicatorLabel.d.ts +11 -3
  183. package/dist/react/canvas/IndicatorLabel.d.ts.map +1 -1
  184. package/dist/react/canvas/IndicatorPane.d.ts +1 -1
  185. package/dist/react/canvas/IndicatorPane.d.ts.map +1 -1
  186. package/dist/react/canvas/PointerOverlay.d.ts +6 -3
  187. package/dist/react/canvas/PointerOverlay.d.ts.map +1 -1
  188. package/dist/react/canvas/PositionPropertiesDialog.d.ts +22 -0
  189. package/dist/react/canvas/PositionPropertiesDialog.d.ts.map +1 -0
  190. package/dist/react/canvas/TableOverlay.d.ts +1 -1
  191. package/dist/react/canvas/TableOverlay.d.ts.map +1 -1
  192. package/dist/react/canvas/toolbars/LeftToolbar.d.ts +9 -2
  193. package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -1
  194. package/dist/react/hooks/useBrokerEvents.d.ts +9 -0
  195. package/dist/react/hooks/useBrokerEvents.d.ts.map +1 -1
  196. package/dist/react/hooks/useChartCapabilities.d.ts.map +1 -1
  197. package/dist/react/hooks/usePanelDrag.d.ts +2 -0
  198. package/dist/react/hooks/usePanelDrag.d.ts.map +1 -0
  199. package/dist/react/index.d.ts +3 -0
  200. package/dist/react/index.d.ts.map +1 -1
  201. package/dist/react/index.js +25769 -10541
  202. package/dist/react/index.js.map +1 -1
  203. package/dist/react/internal.js +32838 -15641
  204. package/dist/react/internal.js.map +1 -1
  205. package/dist/react/shell/DatasetImportPanel.d.ts +14 -0
  206. package/dist/react/shell/DatasetImportPanel.d.ts.map +1 -0
  207. package/dist/react/shell/DatasetManagerDrawer.d.ts +20 -0
  208. package/dist/react/shell/DatasetManagerDrawer.d.ts.map +1 -0
  209. package/dist/react/shell/DepthOfMarketPanel.d.ts +18 -0
  210. package/dist/react/shell/DepthOfMarketPanel.d.ts.map +1 -0
  211. package/dist/react/shell/DocsEditor.d.ts +17 -0
  212. package/dist/react/shell/DocsEditor.d.ts.map +1 -0
  213. package/dist/react/shell/ManagedAppShell.d.ts +27 -0
  214. package/dist/react/shell/ManagedAppShell.d.ts.map +1 -1
  215. package/dist/react/shell/OrderEntryPanel.d.ts +21 -1
  216. package/dist/react/shell/OrderEntryPanel.d.ts.map +1 -1
  217. package/dist/react/shell/ScriptDrawer.d.ts +7 -1
  218. package/dist/react/shell/ScriptDrawer.d.ts.map +1 -1
  219. package/dist/react/shell/ScriptSettings.d.ts +26 -0
  220. package/dist/react/shell/ScriptSettings.d.ts.map +1 -0
  221. package/dist/react/shell/TradeDrawer.d.ts +8 -1
  222. package/dist/react/shell/TradeDrawer.d.ts.map +1 -1
  223. package/dist/react/shell/WatchlistDrawer.d.ts +2 -1
  224. package/dist/react/shell/WatchlistDrawer.d.ts.map +1 -1
  225. package/dist/react/shell/useDepthSubscription.d.ts +12 -0
  226. package/dist/react/shell/useDepthSubscription.d.ts.map +1 -0
  227. package/dist/react/shell/useWatchlistQuotes.d.ts +6 -0
  228. package/dist/react/shell/useWatchlistQuotes.d.ts.map +1 -1
  229. package/dist/react/workspace/BottomTradingPanel.d.ts +78 -0
  230. package/dist/react/workspace/BottomTradingPanel.d.ts.map +1 -0
  231. package/dist/react/workspace/ChartWorkspace.d.ts +64 -1
  232. package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -1
  233. package/dist/react/workspace/FloatingPanel.d.ts +1 -1
  234. package/dist/react/workspace/FloatingPanel.d.ts.map +1 -1
  235. package/dist/react/workspace/GridChartContainer.d.ts +40 -0
  236. package/dist/react/workspace/GridChartContainer.d.ts.map +1 -0
  237. package/dist/react/workspace/GridSyncContext.d.ts +32 -0
  238. package/dist/react/workspace/GridSyncContext.d.ts.map +1 -0
  239. package/dist/react/workspace/GridTemplates.d.ts +16 -0
  240. package/dist/react/workspace/GridTemplates.d.ts.map +1 -0
  241. package/dist/react/workspace/IndicatorsDialog.d.ts +5 -1
  242. package/dist/react/workspace/IndicatorsDialog.d.ts.map +1 -1
  243. package/dist/react/workspace/LayoutMenu.d.ts +1 -1
  244. package/dist/react/workspace/LayoutMenu.d.ts.map +1 -1
  245. package/dist/react/workspace/LayoutTemplateSelector.d.ts +16 -0
  246. package/dist/react/workspace/LayoutTemplateSelector.d.ts.map +1 -0
  247. package/dist/react/workspace/SymbolSearchDialog.d.ts +1 -1
  248. package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -1
  249. package/dist/react/workspace/TabBar.d.ts +4 -1
  250. package/dist/react/workspace/TabBar.d.ts.map +1 -1
  251. package/dist/react/workspace/toolbars/BottomToolbar.d.ts +7 -1
  252. package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -1
  253. package/dist/react/workspace/toolbars/RightToolbar.d.ts +10 -1
  254. package/dist/react/workspace/toolbars/RightToolbar.d.ts.map +1 -1
  255. package/dist/react/workspace/toolbars/TopToolbar.d.ts +36 -2
  256. package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -1
  257. package/dist/renderers/CandlestickRenderer.d.ts.map +1 -1
  258. package/dist/services/BarPrefetchCache.d.ts +39 -0
  259. package/dist/services/BarPrefetchCache.d.ts.map +1 -0
  260. package/dist/theme/colors.d.ts.map +1 -1
  261. package/dist/trading/UnmanagedIngestion.d.ts +39 -12
  262. package/dist/trading/UnmanagedIngestion.d.ts.map +1 -1
  263. package/dist/trading/tradingTypes.d.ts +11 -2
  264. package/dist/trading/tradingTypes.d.ts.map +1 -1
  265. package/dist/types/ChartBackend.d.ts +67 -0
  266. package/dist/types/ChartBackend.d.ts.map +1 -0
  267. package/package.json +2 -2
  268. package/dist/forgescript/__tests__/ai-response-parser.test.d.ts +0 -2
  269. package/dist/forgescript/__tests__/ai-response-parser.test.d.ts.map +0 -1
  270. package/dist/forgescript/__tests__/orchestrator.test.d.ts +0 -2
  271. package/dist/forgescript/__tests__/orchestrator.test.d.ts.map +0 -1
  272. package/dist/forgescript/__tests__/pine-transpiler.test.d.ts +0 -2
  273. package/dist/forgescript/__tests__/pine-transpiler.test.d.ts.map +0 -1
  274. package/dist/forgescript/conversion/ai-conversion-agent.d.ts +0 -41
  275. package/dist/forgescript/conversion/ai-conversion-agent.d.ts.map +0 -1
  276. package/dist/forgescript/conversion/conversion-orchestrator.d.ts +0 -44
  277. package/dist/forgescript/conversion/conversion-orchestrator.d.ts.map +0 -1
  278. package/dist/forgescript/conversion/prompts/index.d.ts +0 -17
  279. package/dist/forgescript/conversion/prompts/index.d.ts.map +0 -1
  280. package/dist/forgescript/pine/PineCompiler.d.ts +0 -38
  281. package/dist/forgescript/pine/PineCompiler.d.ts.map +0 -1
  282. package/dist/forgescript/pine/diagnostics.d.ts +0 -20
  283. package/dist/forgescript/pine/diagnostics.d.ts.map +0 -1
  284. package/dist/forgescript/pine/index.d.ts +0 -8
  285. package/dist/forgescript/pine/index.d.ts.map +0 -1
  286. package/dist/forgescript/pine/pine-ast.d.ts +0 -190
  287. package/dist/forgescript/pine/pine-ast.d.ts.map +0 -1
  288. package/dist/forgescript/pine/pine-lexer.d.ts +0 -41
  289. package/dist/forgescript/pine/pine-lexer.d.ts.map +0 -1
  290. package/dist/forgescript/pine/pine-parser.d.ts +0 -108
  291. package/dist/forgescript/pine/pine-parser.d.ts.map +0 -1
  292. package/dist/forgescript/pine/pine-transpiler.d.ts +0 -40
  293. package/dist/forgescript/pine/pine-transpiler.d.ts.map +0 -1
@@ -3,12 +3,15 @@
3
3
  *
4
4
  * Grammar (simplified):
5
5
  * program → stmt*
6
- * stmt → indicator_decl | var_decl | assign | reassign | for | while | if | expr_stmt
6
+ * stmt → indicator_decl | var_decl | assign | reassign | for | while | if | try | type_decl | import_stmt | expr_stmt
7
7
  * var_decl → ('var' | 'varip') IDENT '=' expr
8
8
  * assign → IDENT '=' expr
9
9
  * reassign → IDENT ':=' expr
10
10
  * for → 'for' IDENT '=' expr 'to' expr ('by' expr)? NEWLINE block
11
11
  * indicator → 'indicator' '(' STRING (',' namedArgs)* ')'
12
+ * try → 'try' NEWLINE block 'catch' IDENT NEWLINE block
13
+ * type_decl → 'type' IDENT NEWLINE INDENT (IDENT IDENT NEWLINE)+ DEDENT
14
+ * import_stmt → 'import' STRING ('as' IDENT)?
12
15
  * expr → ternary
13
16
  * ternary → or ('?' expr ':' expr)?
14
17
  * or → and ('or' and)*
@@ -18,9 +21,10 @@
18
21
  * addition → multiplication (('+' | '-') multiplication)*
19
22
  * multiplication→ unary (('*' | '/' | '%') unary)*
20
23
  * unary → '-' unary | primary
21
- * primary → NUMBER | STRING | BOOL | COLOR | IDENT ('[' expr ']')? | ns_call | call | '(' expr ')'
24
+ * primary → NUMBER | STRING | BOOL | COLOR | IDENT ('[' expr ']')? | ns_call | call | '(' expr ')' | object_lit
22
25
  * ns_call → IDENT '.' IDENT '(' args ')'
23
26
  * call → IDENT '(' args (',' IDENT '=' expr)* ')'
27
+ * object_lit → IDENT '{' (IDENT ':' expr (',' IDENT ':' expr)*)? '}'
24
28
  */
25
29
  export type NumberLit = {
26
30
  kind: 'NumberLit';
@@ -90,7 +94,17 @@ export type LogicalExpr = {
90
94
  left: Expr;
91
95
  right: Expr;
92
96
  };
93
- export type Expr = NumberLit | StringLit | BoolLit | ColorLit | Identifier | IndexExpr | CallExpr | NsCallExpr | MemberExpr | BinaryExpr | UnaryExpr | TernaryExpr | LogicalExpr;
97
+ export type ArrayLit = {
98
+ kind: 'ArrayLit';
99
+ elements: Expr[];
100
+ };
101
+ /** Object/UDT instantiation: MyType.new(field1=val, ...) — parsed as NsCallExpr with fn='new' */
102
+ export type ObjectLit = {
103
+ kind: 'ObjectLit';
104
+ typeName: string;
105
+ fields: Map<string, Expr>;
106
+ };
107
+ export type Expr = NumberLit | StringLit | BoolLit | ColorLit | Identifier | IndexExpr | CallExpr | NsCallExpr | MemberExpr | BinaryExpr | UnaryExpr | TernaryExpr | LogicalExpr | ArrayLit | ObjectLit;
94
108
  export type IndicatorDecl = {
95
109
  kind: 'IndicatorDecl';
96
110
  title: string;
@@ -145,7 +159,60 @@ export type FnDeclStmt = {
145
159
  params: string[];
146
160
  body: Stmt[];
147
161
  };
148
- export type Stmt = IndicatorDecl | VarDeclStmt | AssignStmt | ReassignStmt | ExprStmt | IfStmt | WhileStmt | ForStmt | FnDeclStmt;
162
+ /** for x in array iterate over TArray elements */
163
+ export type ForInStmt = {
164
+ kind: 'ForInStmt';
165
+ name: string;
166
+ iterable: Expr;
167
+ body: Stmt[];
168
+ };
169
+ /** break — exit the nearest enclosing loop */
170
+ export type BreakStmt = {
171
+ kind: 'BreakStmt';
172
+ };
173
+ /** continue — skip to next iteration of the nearest enclosing loop */
174
+ export type ContinueStmt = {
175
+ kind: 'ContinueStmt';
176
+ };
177
+ /**
178
+ * try / catch — graceful error handling.
179
+ * try
180
+ * <body>
181
+ * catch <errorVar>
182
+ * <handler>
183
+ */
184
+ export type TryCatchStmt = {
185
+ kind: 'TryCatchStmt';
186
+ body: Stmt[];
187
+ errorVar: string;
188
+ handler: Stmt[];
189
+ };
190
+ /**
191
+ * User-Defined Type declaration:
192
+ * type MyType
193
+ * float price = 0
194
+ * int count = 0
195
+ * bool active = false
196
+ */
197
+ export type TypeDeclStmt = {
198
+ kind: 'TypeDeclStmt';
199
+ name: string;
200
+ fields: Array<{
201
+ name: string;
202
+ typeName: string;
203
+ defaultValue: Expr;
204
+ }>;
205
+ };
206
+ /**
207
+ * import "library-name" [as alias]
208
+ * Loads a named built-in library into scope.
209
+ */
210
+ export type ImportStmt = {
211
+ kind: 'ImportStmt';
212
+ path: string;
213
+ alias: string | null;
214
+ };
215
+ export type Stmt = IndicatorDecl | VarDeclStmt | AssignStmt | ReassignStmt | ExprStmt | IfStmt | WhileStmt | ForStmt | FnDeclStmt | ForInStmt | BreakStmt | ContinueStmt | TryCatchStmt | TypeDeclStmt | ImportStmt;
149
216
  export type Program = {
150
217
  kind: 'Program';
151
218
  stmts: Stmt[];
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/forgescript/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/forgescript/ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ForgeScript Collections — TMap and TMatrix runtime types.
3
+ *
4
+ * TMap — associative key→value store (map.* namespace)
5
+ * TMatrix — 2-D numeric grid (matrix.* namespace)
6
+ */
7
+ import type { TValue } from '../runtime';
8
+ export declare class TMap {
9
+ readonly _data: Map<TValue, TValue>;
10
+ constructor();
11
+ put(key: TValue, value: TValue): void;
12
+ get(key: TValue): TValue;
13
+ remove(key: TValue): TValue;
14
+ contains(key: TValue): boolean;
15
+ size(): number;
16
+ clear(): void;
17
+ keys(): TValue[];
18
+ values(): TValue[];
19
+ }
20
+ export declare class TMatrix {
21
+ private _rows;
22
+ private _cols;
23
+ private _data;
24
+ constructor(rows: number, cols: number, fillValue?: number);
25
+ rows(): number;
26
+ cols(): number;
27
+ get(row: number, col: number): number;
28
+ set(row: number, col: number, value: number): void;
29
+ /** Add a row at the end, optionally filled with a value. */
30
+ addRow(fillValue?: number): void;
31
+ /** Add a column at the end, optionally filled with a value. */
32
+ addCol(fillValue?: number): void;
33
+ /** Remove the last row. */
34
+ removeRow(): void;
35
+ /** Remove the last column. */
36
+ removeCol(): void;
37
+ /** Swap two rows in-place. */
38
+ swapRows(r1: number, r2: number): void;
39
+ /** Swap two columns in-place. */
40
+ swapCols(c1: number, c2: number): void;
41
+ /** Transpose (returns a new matrix). */
42
+ transpose(): TMatrix;
43
+ /** Element-wise sum of all values. */
44
+ sum(): number;
45
+ /** Average of all values. */
46
+ avg(): number;
47
+ /** Min of all values. */
48
+ min(): number;
49
+ /** Max of all values. */
50
+ max(): number;
51
+ /** Return a copy. */
52
+ copy(): TMatrix;
53
+ /** Fill all cells with a value. */
54
+ fill(value: number): void;
55
+ }
56
+ //# sourceMappingURL=collections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../src/forgescript/builtins/collections.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,qBAAa,IAAI;IACf,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;;IAMpC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKxB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAM3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI9B,IAAI,IAAI,MAAM;IAId,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM,EAAE;IAIhB,MAAM,IAAI,MAAM,EAAE;CAGnB;AAID,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,KAAK,CAAe;gBAEhB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM;IAMvD,IAAI,IAAI,MAAM;IACd,IAAI,IAAI,MAAM;IAEd,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAKrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD,4DAA4D;IAC5D,MAAM,CAAC,SAAS,SAAM,GAAG,IAAI;IAO7B,+DAA+D;IAC/D,MAAM,CAAC,SAAS,SAAM,GAAG,IAAI;IAY7B,2BAA2B;IAC3B,SAAS,IAAI,IAAI;IAMjB,8BAA8B;IAC9B,SAAS,IAAI,IAAI;IAYjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAStC,iCAAiC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI;IAStC,wCAAwC;IACxC,SAAS,IAAI,OAAO;IAUpB,sCAAsC;IACtC,GAAG,IAAI,MAAM;IASb,6BAA6B;IAC7B,GAAG,IAAI,MAAM;IASb,yBAAyB;IACzB,GAAG,IAAI,MAAM;IASb,yBAAyB;IACzB,GAAG,IAAI,MAAM;IASb,qBAAqB;IACrB,IAAI,IAAI,OAAO;IAMf,mCAAmC;IACnC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAG1B"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * ForgeScript Drawing Objects — line, label, box
3
+ *
4
+ * These are dynamically created chart objects that persist across bars and
5
+ * are rendered as canvas overlays by the chart renderer.
6
+ */
7
+ export interface DrawingLine {
8
+ kind: 'line';
9
+ id: string;
10
+ x1: number;
11
+ y1: number;
12
+ x2: number;
13
+ y2: number;
14
+ xloc: string;
15
+ extend: string;
16
+ color: string;
17
+ style: string;
18
+ width: number;
19
+ deleted: boolean;
20
+ }
21
+ export interface DrawingLabel {
22
+ kind: 'label';
23
+ id: string;
24
+ x: number;
25
+ y: number;
26
+ xloc: string;
27
+ yloc: string;
28
+ text: string;
29
+ style: string;
30
+ color: string;
31
+ textColor: string;
32
+ size: string;
33
+ tooltip: string;
34
+ deleted: boolean;
35
+ }
36
+ export interface DrawingBox {
37
+ kind: 'box';
38
+ id: string;
39
+ left: number;
40
+ top: number;
41
+ right: number;
42
+ bottom: number;
43
+ xloc: string;
44
+ borderColor: string;
45
+ borderWidth: number;
46
+ borderStyle: string;
47
+ bgColor: string;
48
+ extend: string;
49
+ textStr: string;
50
+ textColor: string;
51
+ textSize: string;
52
+ textHAlign: string;
53
+ textVAlign: string;
54
+ deleted: boolean;
55
+ }
56
+ export type DrawingObject = DrawingLine | DrawingLabel | DrawingBox;
57
+ //# sourceMappingURL=drawing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawing.d.ts","sourceRoot":"","sources":["../../../src/forgescript/builtins/drawing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAO,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,EAAE,EAAS,MAAM,CAAC;IAClB,IAAI,EAAO,MAAM,CAAC;IAClB,MAAM,EAAK,MAAM,CAAC;IAClB,KAAK,EAAM,MAAM,CAAC;IAClB,KAAK,EAAM,MAAM,CAAC;IAClB,KAAK,EAAM,MAAM,CAAC;IAClB,OAAO,EAAI,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAO,OAAO,CAAC;IACnB,EAAE,EAAS,MAAM,CAAC;IAClB,CAAC,EAAU,MAAM,CAAC;IAClB,CAAC,EAAU,MAAM,CAAC;IAClB,IAAI,EAAO,MAAM,CAAC;IAClB,IAAI,EAAO,MAAM,CAAC;IAClB,IAAI,EAAO,MAAM,CAAC;IAClB,KAAK,EAAM,MAAM,CAAC;IAClB,KAAK,EAAM,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAO,MAAM,CAAC;IAClB,OAAO,EAAI,MAAM,CAAC;IAClB,OAAO,EAAI,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,UAAU;IACzB,IAAI,EAAS,KAAK,CAAC;IACnB,EAAE,EAAW,MAAM,CAAC;IACpB,IAAI,EAAS,MAAM,CAAC;IACpB,GAAG,EAAU,MAAM,CAAC;IACpB,KAAK,EAAQ,MAAM,CAAC;IACpB,MAAM,EAAO,MAAM,CAAC;IACpB,IAAI,EAAS,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAM,MAAM,CAAC;IACpB,MAAM,EAAO,MAAM,CAAC;IACpB,OAAO,EAAM,MAAM,CAAC;IACpB,SAAS,EAAI,MAAM,CAAC;IACpB,QAAQ,EAAK,MAAM,CAAC;IACpB,UAAU,EAAG,MAAM,CAAC;IACpB,UAAU,EAAG,MAAM,CAAC;IACpB,OAAO,EAAM,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ForgeScript User-Defined Types (UDTs)
3
+ *
4
+ * A UDT instance is a simple record of named fields.
5
+ * Methods are stored as user-defined functions in the runtime scope and
6
+ * invoked as `MyType.method(instance, ...)`.
7
+ */
8
+ import type { TValue } from '../runtime';
9
+ /** A UDT field descriptor (from the type declaration). */
10
+ export interface UDTFieldDef {
11
+ name: string;
12
+ typeName: string;
13
+ defaultValue: TValue;
14
+ }
15
+ /** A UDT type descriptor (registered when a `type` declaration is executed). */
16
+ export interface UDTTypeDef {
17
+ name: string;
18
+ fields: UDTFieldDef[];
19
+ }
20
+ /** A live UDT instance — holds field values. */
21
+ export declare class TUDTInstance {
22
+ readonly typeName: string;
23
+ readonly fields: Map<string, TValue>;
24
+ constructor(typeName: string, fields: Map<string, TValue>);
25
+ get(field: string): TValue;
26
+ set(field: string, value: TValue): void;
27
+ /** Return a shallow copy of this instance. */
28
+ copy(): TUDTInstance;
29
+ }
30
+ //# sourceMappingURL=udt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udt.d.ts","sourceRoot":"","sources":["../../../src/forgescript/builtins/udt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAS,MAAM,CAAC;IACpB,QAAQ,EAAK,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,gFAAgF;AAChF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAI,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,gDAAgD;AAChD,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAE3B,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAKzD,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAO1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOvC,8CAA8C;IAC9C,IAAI,IAAI,YAAY;CAGrB"}
@@ -1,19 +1,26 @@
1
1
  /**
2
- * AI-Assisted Script Conversion System — public API.
2
+ * ForgeScript Conversion Utilities — public API.
3
3
  *
4
- * Re-exports the conversion pipeline, language detection, validation,
5
- * sandbox, save gate, AI agent, prompt templates, and telemetry.
4
+ * The AI conversion pipeline (OpenAI) has been removed as part of the
5
+ * Claude agent migration (see AGENT_INTEGRATION_DESIGN.md §12).
6
+ *
7
+ * Retained modules:
8
+ * - validation — ForgeScript syntax & runtime validation
9
+ * - sandbox — isolated script execution for testing
10
+ * - save-gate — pre-save safety checks
11
+ * - language-detector — heuristic source language identification
12
+ * - telemetry — conversion event tracking
13
+ *
14
+ * Removed modules (gutted, pending physical deletion):
15
+ * - conversion-orchestrator — replaced by agent chat
16
+ * - ai-conversion-agent — replaced by Claude via /agent/chat
17
+ * - prompts — migrated to apps/api/src/agent/knowledge.ts
6
18
  */
7
- export type { SourceLanguage, Confidence, LanguageDetectionResult, ConversionPath, ConversionWarning, ConversionAssumption, ReviewItem, AIConversionResponse, ValidationIssue, ValidationResult, SandboxResult, SaveGateCheck, ConversionResult, ConversionTelemetryEvent, } from './types';
19
+ export type { SourceLanguage, Confidence, LanguageDetectionResult, ConversionWarning, ValidationIssue, ValidationResult, SandboxResult, SaveGateCheck, ConversionTelemetryEvent, } from './types';
8
20
  export { detectLanguage, detectLanguageWithFallback } from './language-detector';
9
21
  export type { AILanguageClassifier } from './language-detector';
10
- export { convertScript } from './conversion-orchestrator';
11
- export type { ConversionOptions } from './conversion-orchestrator';
12
22
  export { validateForgeScript } from './validation';
13
23
  export { runSandbox } from './sandbox';
14
24
  export { evaluateSaveGate } from './save-gate';
15
- export { runAIConversion, parseAIResponse } from './ai-conversion-agent';
16
- export type { LLMProvider, ChatMessage } from './ai-conversion-agent';
17
- export { getSystemPrompt, buildConversionPrompt, FORGESCRIPT_REFERENCE } from './prompts';
18
25
  export { onConversionEvent, emitConversionEvent, buildTelemetryEvent, clearTelemetryListeners, } from './telemetry';
19
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAG1F,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,YAAY,EACV,cAAc,EACd,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,wBAAwB,GACzB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,aAAa,CAAC"}
@@ -1,12 +1,14 @@
1
1
  /**
2
- * Shared types for the AI-assisted script conversion system.
2
+ * Shared types for the ForgeScript conversion utilities.
3
3
  *
4
- * ForgeScript is the canonical target language. All conversions produce
5
- * ForgeScript source that must pass validation before saving.
4
+ * AI-specific types (AIConversionResponse, ConversionAssumption, ReviewItem,
5
+ * ConversionResult, ConversionPath, ConversionOptions, LLMProvider, ChatMessage)
6
+ * have been removed as part of the OpenAI → Claude migration.
7
+ * See AGENT_INTEGRATION_DESIGN.md §12.
6
8
  */
7
- /** Languages the conversion system can accept as input. */
9
+ /** Languages the detection system can identify. */
8
10
  export type SourceLanguage = 'pine' | 'python' | 'javascript' | 'forgescript' | 'unknown';
9
- /** Confidence level for language detection or AI conversion. */
11
+ /** Confidence level for language detection. */
10
12
  export type Confidence = 'HIGH' | 'MEDIUM' | 'LOW';
11
13
  /** Result of language detection. */
12
14
  export interface LanguageDetectionResult {
@@ -19,32 +21,12 @@ export interface LanguageDetectionResult {
19
21
  /** Heuristic scores used to pick the language. */
20
22
  readonly scores: Readonly<Record<SourceLanguage, number>>;
21
23
  }
22
- /** Which conversion strategy was used. */
23
- export type ConversionPath = 'deterministic' | 'ai' | 'hybrid' | 'passthrough';
24
- /** A single warning surfaced during conversion. */
24
+ /** A single warning surfaced during conversion or validation. */
25
25
  export interface ConversionWarning {
26
26
  readonly severity: 'info' | 'warning' | 'error';
27
27
  readonly category: 'approximation' | 'unsupported' | 'semantic_risk' | 'hallucination' | 'general';
28
28
  readonly message: string;
29
29
  }
30
- /** An assumption the converter made on behalf of the user. */
31
- export interface ConversionAssumption {
32
- readonly description: string;
33
- }
34
- /** Item the user should manually verify. */
35
- export interface ReviewItem {
36
- readonly description: string;
37
- }
38
- /** Parsed structured response from the AI conversion agent. */
39
- export interface AIConversionResponse {
40
- readonly forgeScript: string;
41
- readonly warnings: ConversionWarning[];
42
- readonly assumptions: ConversionAssumption[];
43
- readonly reviewChecklist: ReviewItem[];
44
- readonly unsupportedFeatures: string[];
45
- readonly confidence: Confidence;
46
- readonly confidenceExplanation: string;
47
- }
48
30
  /** A single validation issue. */
49
31
  export interface ValidationIssue {
50
32
  readonly severity: 'error' | 'warning';
@@ -76,34 +58,8 @@ export interface SaveGateCheck {
76
58
  readonly blockers: string[];
77
59
  readonly warningsToAcknowledge: string[];
78
60
  }
79
- /** Complete result of the conversion pipeline. */
80
- export interface ConversionResult {
81
- /** The detected or user-selected source language. */
82
- readonly sourceLanguage: SourceLanguage;
83
- /** Which conversion path was taken. */
84
- readonly conversionPath: ConversionPath;
85
- /** The converted ForgeScript source (empty string if conversion failed). */
86
- readonly forgeScript: string;
87
- /** Validation result against the ForgeScript grammar & runtime. */
88
- readonly validation: ValidationResult;
89
- /** Sandbox execution result (null if sandbox was skipped). */
90
- readonly sandbox: SandboxResult | null;
91
- /** Save-gate check. */
92
- readonly saveGate: SaveGateCheck;
93
- /** Human-readable warnings from the conversion itself. */
94
- readonly warnings: ConversionWarning[];
95
- /** Assumptions made during conversion. */
96
- readonly assumptions: ConversionAssumption[];
97
- /** Items the user should manually verify. */
98
- readonly reviewChecklist: ReviewItem[];
99
- /** Features that could not be converted. */
100
- readonly unsupportedFeatures: string[];
101
- /** Overall confidence in the conversion quality. */
102
- readonly confidence: Confidence;
103
- readonly confidenceExplanation: string;
104
- /** Deterministic output (when applicable) for comparison. */
105
- readonly deterministicOutput?: string;
106
- }
61
+ /** Conversion path type retained for telemetry. */
62
+ export type ConversionPath = 'deterministic' | 'ai' | 'hybrid' | 'passthrough';
107
63
  /** Event emitted for observability. */
108
64
  export interface ConversionTelemetryEvent {
109
65
  readonly timestamp: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAE1F,gEAAgE;AAChE,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAID,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,IAAI,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE/E,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,4CAA4C;AAC5C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,+DAA+D;AAC/D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC7C,QAAQ,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAID,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;CACpC;AAID,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAID,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CAC1C;AAID,kDAAkD;AAClD,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,uCAAuC;IACvC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,uBAAuB;IACvB,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC7C,6CAA6C;IAC7C,QAAQ,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IACvC,oDAAoD;IACpD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,6DAA6D;IAC7D,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,uCAAuC;AACvC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,mDAAmD;AACnD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAE1F,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,mCAAmC;IACnC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3D;AAID,iEAAiE;AACjE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,GAAG,SAAS,CAAC;IACnG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAID,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8BAA8B;AAC9B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;CACpC;AAID,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAID,sCAAsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;CAC1C;AAID,qDAAqD;AACrD,MAAM,MAAM,cAAc,GAAG,eAAe,GAAG,IAAI,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE/E,uCAAuC;AACvC,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AAgEjE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAwLpE"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/forgescript/conversion/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,SAAS,CAAC;AA4FjE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAuNpE"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * DatasetStore — central registry for user-imported external datasets.
3
+ *
4
+ * A dataset is a named, time-indexed table of numeric columns that a
5
+ * ForgeScript indicator can read via `request.data("name", "column")`.
6
+ *
7
+ * Datasets are keyed by a user-chosen name (case-insensitive).
8
+ * Each row must have a `time` field (Unix seconds) and one or more
9
+ * numeric columns. The store keeps rows sorted ascending by time so
10
+ * the runtime can binary-search for the bar-aligned value efficiently.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * DatasetStore.register("sentiment", [
15
+ * { time: 1700000000, score: 0.72, volume: 1200 },
16
+ * { time: 1700086400, score: 0.55, volume: 980 },
17
+ * ]);
18
+ * ```
19
+ */
20
+ /** A single row in a user dataset — must include `time` (Unix seconds). */
21
+ export type DatasetRow = {
22
+ readonly time: number;
23
+ readonly [column: string]: number | string;
24
+ };
25
+ /** A registered dataset — sorted ascending by time. */
26
+ export type UserDataset = {
27
+ readonly name: string;
28
+ readonly columns: readonly string[];
29
+ readonly rows: readonly DatasetRow[];
30
+ };
31
+ export declare const DatasetStore: {
32
+ /**
33
+ * Register (or replace) a named dataset.
34
+ * Rows are automatically sorted ascending by `time`.
35
+ *
36
+ * @param name Case-insensitive dataset identifier used in `request.data()`.
37
+ * @param rows Array of row objects — each must have a numeric `time` field.
38
+ */
39
+ register(name: string, rows: DatasetRow[]): void;
40
+ /**
41
+ * Remove a dataset by name.
42
+ */
43
+ remove(name: string): void;
44
+ /**
45
+ * Clear all registered datasets.
46
+ */
47
+ clear(): void;
48
+ /**
49
+ * List all registered dataset names.
50
+ */
51
+ list(): string[];
52
+ /**
53
+ * Retrieve a dataset by name.
54
+ */
55
+ get(name: string): UserDataset | undefined;
56
+ /**
57
+ * Look up the value of `column` in dataset `name` at the bar whose
58
+ * open time is closest to (and not after) `barTime` (Unix seconds).
59
+ *
60
+ * Returns `NaN` if the dataset does not exist, the column is missing,
61
+ * or no row falls on or before `barTime`.
62
+ */
63
+ lookup(name: string, column: string, barTime: number): number;
64
+ };
65
+ //# sourceMappingURL=DatasetStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasetStore.d.ts","sourceRoot":"","sources":["../../../src/forgescript/datasets/DatasetStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC5C,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAK,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAK,SAAS,UAAU,EAAE,CAAC;CACzC,CAAC;AAMF,eAAO,MAAM,YAAY;IACvB;;;;;;OAMG;mBACY,MAAM,QAAQ,UAAU,EAAE,GAAG,IAAI;IAShD;;OAEG;iBACU,MAAM,GAAG,IAAI;IAI1B;;OAEG;aACM,IAAI;IAIb;;OAEG;YACK,MAAM,EAAE;IAIhB;;OAEG;cACO,MAAM,GAAG,WAAW,GAAG,SAAS;IAI1C;;;;;;OAMG;iBACU,MAAM,UAAU,MAAM,WAAW,MAAM,GAAG,MAAM;CA6B9D,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * parseDataset — parse CSV or JSON text into DatasetRow[].
3
+ *
4
+ * CSV rules:
5
+ * - First row must be a header row.
6
+ * - One column must be named `time`, `date`, or `timestamp` (case-insensitive).
7
+ * It may be a Unix timestamp (seconds or milliseconds) or an ISO 8601 date string.
8
+ * - All other columns are treated as numeric values.
9
+ * - Empty cells become NaN.
10
+ *
11
+ * JSON rules:
12
+ * - Must be an array of objects.
13
+ * - Same `time`/`date`/`timestamp` column requirement as CSV.
14
+ *
15
+ * @throws {Error} if the input cannot be parsed or has no time column.
16
+ */
17
+ import type { DatasetRow } from './DatasetStore';
18
+ export type ParseResult = {
19
+ readonly rows: DatasetRow[];
20
+ readonly columns: string[];
21
+ readonly rowCount: number;
22
+ };
23
+ /**
24
+ * Parse a CSV or JSON string into DatasetRow[].
25
+ *
26
+ * Auto-detects format: if the trimmed text starts with `[` or `{` it is
27
+ * treated as JSON, otherwise as CSV.
28
+ *
29
+ * @throws {Error} on parse failure or missing time column.
30
+ */
31
+ export declare function parseDataset(text: string): ParseResult;
32
+ //# sourceMappingURL=parseDataset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDataset.d.ts","sourceRoot":"","sources":["../../../src/forgescript/datasets/parseDataset.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA+IjD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAK,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAWtD"}
@@ -27,6 +27,24 @@ export declare class Parser {
27
27
  private _exprStmt;
28
28
  private _ifStmt;
29
29
  private _whileStmt;
30
+ /**
31
+ * try
32
+ * <body>
33
+ * catch err
34
+ * <handler>
35
+ */
36
+ private _tryCatchStmt;
37
+ /**
38
+ * type MyType
39
+ * float price = 0
40
+ * int count = 0
41
+ */
42
+ private _typeDeclStmt;
43
+ /**
44
+ * import "library-name"
45
+ * import "library-name" as alias
46
+ */
47
+ private _importStmt;
30
48
  /** Lookahead: is this IDENT '(' ... ')' '=>'? Scans without consuming. */
31
49
  private _isFnDecl;
32
50
  /** Parse: name(p1, p2, ...) => expr OR name(p1, p2, ...) =>\n block */
@@ -42,7 +60,7 @@ export declare class Parser {
42
60
  private _multiplication;
43
61
  private _unary;
44
62
  private _primary;
45
- /** Parse IDENT.IDENT or IDENT.IDENT(args) */
63
+ /** Parse IDENT.IDENT or IDENT.IDENT(args) — also handles chained member access */
46
64
  private _nsCallOrMember;
47
65
  private _callExpr;
48
66
  /** Parse a mixed positional + named argument list. */
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/forgescript/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,OAAO,EAMR,MAAM,OAAO,CAAC;AAIf,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,GAAG,EAAE,MAAM;IAIvB,KAAK,IAAI,OAAO;IAYhB,OAAO,CAAC,KAAK;IA6Cb,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,UAAU;IAQlB,0EAA0E;IAC1E,OAAO,CAAC,SAAS;IAejB,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,QAAQ;IA4EhB,6CAA6C;IAC7C,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,SAAS;IAQjB,sDAAsD;IACtD,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,oBAAoB;CAC7B"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/forgescript/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,OAAO,EAOR,MAAM,OAAO,CAAC;AAIf,qBAAa,MAAM;IACjB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,GAAG,EAAE,MAAM;IAIvB,KAAK,IAAI,OAAO;IAYhB,OAAO,CAAC,KAAK;IAwEb,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,UAAU;IAQlB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAYnB,0EAA0E;IAC1E,OAAO,CAAC,SAAS;IAejB,0EAA0E;IAC1E,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,GAAG;IAWX,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,QAAQ;IA4FhB,kFAAkF;IAClF,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,SAAS;IAQjB,sDAAsD;IACtD,OAAO,CAAC,QAAQ;IA0BhB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,oBAAoB;CAC7B"}