@forgecharts/sdk 1.1.32 → 1.1.34

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 (161) hide show
  1. package/dist/api/IndicatorDAG.d.ts +2 -0
  2. package/dist/api/IndicatorDAG.d.ts.map +1 -1
  3. package/dist/api/TChart.d.ts +13 -0
  4. package/dist/api/TChart.d.ts.map +1 -1
  5. package/dist/api/drawingUtils.d.ts +6 -0
  6. package/dist/api/drawingUtils.d.ts.map +1 -1
  7. package/dist/core/Chart.d.ts +30 -1
  8. package/dist/core/Chart.d.ts.map +1 -1
  9. package/dist/core/Crosshair.d.ts.map +1 -1
  10. package/dist/core/InteractionManager.d.ts +16 -1
  11. package/dist/core/InteractionManager.d.ts.map +1 -1
  12. package/dist/core/TimeScale.d.ts.map +1 -1
  13. package/dist/datafeed/DatafeedConnector.d.ts.map +1 -1
  14. package/dist/{tscript/TScriptIndicator.d.ts → forgescript/ForgeScriptIndicator.d.ts} +19 -5
  15. package/dist/forgescript/ForgeScriptIndicator.d.ts.map +1 -0
  16. package/dist/forgescript/ForgeScriptTypes.d.ts +89 -0
  17. package/dist/forgescript/ForgeScriptTypes.d.ts.map +1 -0
  18. package/dist/forgescript/__tests__/ai-response-parser.test.d.ts +2 -0
  19. package/dist/forgescript/__tests__/ai-response-parser.test.d.ts.map +1 -0
  20. package/dist/forgescript/__tests__/language-detector.test.d.ts +2 -0
  21. package/dist/forgescript/__tests__/language-detector.test.d.ts.map +1 -0
  22. package/dist/forgescript/__tests__/lexer.test.d.ts +2 -0
  23. package/dist/forgescript/__tests__/lexer.test.d.ts.map +1 -0
  24. package/dist/forgescript/__tests__/orchestrator.test.d.ts +2 -0
  25. package/dist/forgescript/__tests__/orchestrator.test.d.ts.map +1 -0
  26. package/dist/forgescript/__tests__/parser.test.d.ts +2 -0
  27. package/dist/forgescript/__tests__/parser.test.d.ts.map +1 -0
  28. package/dist/forgescript/__tests__/pine-transpiler.test.d.ts +2 -0
  29. package/dist/forgescript/__tests__/pine-transpiler.test.d.ts.map +1 -0
  30. package/dist/forgescript/__tests__/runtime.test.d.ts +2 -0
  31. package/dist/forgescript/__tests__/runtime.test.d.ts.map +1 -0
  32. package/dist/forgescript/__tests__/sandbox.test.d.ts +2 -0
  33. package/dist/forgescript/__tests__/sandbox.test.d.ts.map +1 -0
  34. package/dist/forgescript/__tests__/save-gate.test.d.ts +2 -0
  35. package/dist/forgescript/__tests__/save-gate.test.d.ts.map +1 -0
  36. package/dist/forgescript/__tests__/series.test.d.ts +2 -0
  37. package/dist/forgescript/__tests__/series.test.d.ts.map +1 -0
  38. package/dist/forgescript/__tests__/telemetry.test.d.ts +2 -0
  39. package/dist/forgescript/__tests__/telemetry.test.d.ts.map +1 -0
  40. package/dist/forgescript/__tests__/validation.test.d.ts +2 -0
  41. package/dist/forgescript/__tests__/validation.test.d.ts.map +1 -0
  42. package/dist/forgescript/ast.d.ts +153 -0
  43. package/dist/forgescript/ast.d.ts.map +1 -0
  44. package/dist/forgescript/builtins/color.d.ts +29 -0
  45. package/dist/forgescript/builtins/color.d.ts.map +1 -0
  46. package/dist/forgescript/builtins/math.d.ts +22 -0
  47. package/dist/forgescript/builtins/math.d.ts.map +1 -0
  48. package/dist/forgescript/builtins/request.d.ts +22 -0
  49. package/dist/forgescript/builtins/request.d.ts.map +1 -0
  50. package/dist/forgescript/builtins/syminfo.d.ts +27 -0
  51. package/dist/forgescript/builtins/syminfo.d.ts.map +1 -0
  52. package/dist/forgescript/builtins/ta.d.ts +39 -0
  53. package/dist/forgescript/builtins/ta.d.ts.map +1 -0
  54. package/dist/forgescript/conversion/ai-conversion-agent.d.ts +41 -0
  55. package/dist/forgescript/conversion/ai-conversion-agent.d.ts.map +1 -0
  56. package/dist/forgescript/conversion/conversion-orchestrator.d.ts +44 -0
  57. package/dist/forgescript/conversion/conversion-orchestrator.d.ts.map +1 -0
  58. package/dist/forgescript/conversion/index.d.ts +19 -0
  59. package/dist/forgescript/conversion/index.d.ts.map +1 -0
  60. package/dist/forgescript/conversion/language-detector.d.ts +27 -0
  61. package/dist/forgescript/conversion/language-detector.d.ts.map +1 -0
  62. package/dist/forgescript/conversion/prompts/index.d.ts +17 -0
  63. package/dist/forgescript/conversion/prompts/index.d.ts.map +1 -0
  64. package/dist/forgescript/conversion/sandbox.d.ts +23 -0
  65. package/dist/forgescript/conversion/sandbox.d.ts.map +1 -0
  66. package/dist/forgescript/conversion/save-gate.d.ts +29 -0
  67. package/dist/forgescript/conversion/save-gate.d.ts.map +1 -0
  68. package/dist/forgescript/conversion/telemetry.d.ts +22 -0
  69. package/dist/forgescript/conversion/telemetry.d.ts.map +1 -0
  70. package/dist/forgescript/conversion/types.d.ts +120 -0
  71. package/dist/forgescript/conversion/types.d.ts.map +1 -0
  72. package/dist/forgescript/conversion/validation.d.ts +18 -0
  73. package/dist/forgescript/conversion/validation.d.ts.map +1 -0
  74. package/dist/{tscript → forgescript}/lexer.d.ts +7 -1
  75. package/dist/forgescript/lexer.d.ts.map +1 -0
  76. package/dist/{tscript → forgescript}/parser.d.ts +14 -0
  77. package/dist/forgescript/parser.d.ts.map +1 -0
  78. package/dist/{pine → forgescript/pine}/PineCompiler.d.ts +7 -4
  79. package/dist/forgescript/pine/PineCompiler.d.ts.map +1 -0
  80. package/dist/forgescript/pine/diagnostics.d.ts.map +1 -0
  81. package/dist/forgescript/pine/index.d.ts.map +1 -0
  82. package/dist/{pine → forgescript/pine}/pine-ast.d.ts +50 -2
  83. package/dist/forgescript/pine/pine-ast.d.ts.map +1 -0
  84. package/dist/forgescript/pine/pine-lexer.d.ts.map +1 -0
  85. package/dist/forgescript/pine/pine-parser.d.ts +108 -0
  86. package/dist/forgescript/pine/pine-parser.d.ts.map +1 -0
  87. package/dist/{pine → forgescript/pine}/pine-transpiler.d.ts +10 -3
  88. package/dist/forgescript/pine/pine-transpiler.d.ts.map +1 -0
  89. package/dist/forgescript/runtime.d.ts +307 -0
  90. package/dist/forgescript/runtime.d.ts.map +1 -0
  91. package/dist/forgescript/series.d.ts.map +1 -0
  92. package/dist/index.d.ts +9 -6
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +3365 -265
  95. package/dist/index.js.map +1 -1
  96. package/dist/internal.js +3409 -309
  97. package/dist/internal.js.map +1 -1
  98. package/dist/licensing/ChartRuntimeResolver.d.ts +4 -0
  99. package/dist/licensing/ChartRuntimeResolver.d.ts.map +1 -1
  100. package/dist/licensing/licenseTypes.d.ts +18 -0
  101. package/dist/licensing/licenseTypes.d.ts.map +1 -1
  102. package/dist/logo_dark-B2KCSRPJ.png +0 -0
  103. package/dist/logo_light-NAWNBY4G.png +0 -0
  104. package/dist/react/canvas/ChartCanvas.d.ts +18 -2
  105. package/dist/react/canvas/ChartCanvas.d.ts.map +1 -1
  106. package/dist/react/canvas/PointerOverlay.d.ts +3 -1
  107. package/dist/react/canvas/PointerOverlay.d.ts.map +1 -1
  108. package/dist/react/canvas/TableOverlay.d.ts +12 -0
  109. package/dist/react/canvas/TableOverlay.d.ts.map +1 -0
  110. package/dist/react/canvas/toolbars/LeftToolbar.d.ts +7 -1
  111. package/dist/react/canvas/toolbars/LeftToolbar.d.ts.map +1 -1
  112. package/dist/react/hooks/useBrokerEvents.d.ts +32 -0
  113. package/dist/react/hooks/useBrokerEvents.d.ts.map +1 -0
  114. package/dist/react/index.js +2506 -387
  115. package/dist/react/index.js.map +1 -1
  116. package/dist/react/internal.d.ts +1 -1
  117. package/dist/react/internal.d.ts.map +1 -1
  118. package/dist/react/internal.js +5103 -988
  119. package/dist/react/internal.js.map +1 -1
  120. package/dist/react/shell/ManagedAppShell.d.ts +20 -0
  121. package/dist/react/shell/ManagedAppShell.d.ts.map +1 -1
  122. package/dist/react/shell/OrderEntryPanel.d.ts +73 -1
  123. package/dist/react/shell/OrderEntryPanel.d.ts.map +1 -1
  124. package/dist/react/shell/ScriptDrawer.d.ts +5 -1
  125. package/dist/react/shell/ScriptDrawer.d.ts.map +1 -1
  126. package/dist/react/shell/TradeDrawer.d.ts +8 -1
  127. package/dist/react/shell/TradeDrawer.d.ts.map +1 -1
  128. package/dist/react/shell/WatchlistDrawer.d.ts.map +1 -1
  129. package/dist/react/shell/useWatchlistQuotes.d.ts +1 -0
  130. package/dist/react/shell/useWatchlistQuotes.d.ts.map +1 -1
  131. package/dist/react/workspace/ChartWorkspace.d.ts +5 -1
  132. package/dist/react/workspace/ChartWorkspace.d.ts.map +1 -1
  133. package/dist/react/workspace/SymbolSearchDialog.d.ts.map +1 -1
  134. package/dist/react/workspace/TabBar.d.ts.map +1 -1
  135. package/dist/react/workspace/toolbars/BottomToolbar.d.ts.map +1 -1
  136. package/dist/react/workspace/toolbars/TopToolbar.d.ts +2 -1
  137. package/dist/react/workspace/toolbars/TopToolbar.d.ts.map +1 -1
  138. package/dist/renderers/CandlestickRenderer.d.ts.map +1 -1
  139. package/dist/services/serverClock.d.ts +61 -0
  140. package/dist/services/serverClock.d.ts.map +1 -0
  141. package/package.json +1 -1
  142. package/dist/pine/PineCompiler.d.ts.map +0 -1
  143. package/dist/pine/diagnostics.d.ts.map +0 -1
  144. package/dist/pine/index.d.ts.map +0 -1
  145. package/dist/pine/pine-ast.d.ts.map +0 -1
  146. package/dist/pine/pine-lexer.d.ts.map +0 -1
  147. package/dist/pine/pine-parser.d.ts +0 -51
  148. package/dist/pine/pine-parser.d.ts.map +0 -1
  149. package/dist/pine/pine-transpiler.d.ts.map +0 -1
  150. package/dist/tscript/TScriptIndicator.d.ts.map +0 -1
  151. package/dist/tscript/ast.d.ts +0 -89
  152. package/dist/tscript/ast.d.ts.map +0 -1
  153. package/dist/tscript/lexer.d.ts.map +0 -1
  154. package/dist/tscript/parser.d.ts.map +0 -1
  155. package/dist/tscript/runtime.d.ts +0 -123
  156. package/dist/tscript/runtime.d.ts.map +0 -1
  157. package/dist/tscript/series.d.ts.map +0 -1
  158. /package/dist/{pine → forgescript/pine}/diagnostics.d.ts +0 -0
  159. /package/dist/{pine → forgescript/pine}/index.d.ts +0 -0
  160. /package/dist/{pine → forgescript/pine}/pine-lexer.d.ts +0 -0
  161. /package/dist/{tscript → forgescript}/series.d.ts +0 -0
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Shared types for the AI-assisted script conversion system.
3
+ *
4
+ * ForgeScript is the canonical target language. All conversions produce
5
+ * ForgeScript source that must pass validation before saving.
6
+ */
7
+ /** Languages the conversion system can accept as input. */
8
+ export type SourceLanguage = 'pine' | 'python' | 'javascript' | 'forgescript' | 'unknown';
9
+ /** Confidence level for language detection or AI conversion. */
10
+ export type Confidence = 'HIGH' | 'MEDIUM' | 'LOW';
11
+ /** Result of language detection. */
12
+ export interface LanguageDetectionResult {
13
+ /** Best-guess language. */
14
+ readonly language: SourceLanguage;
15
+ /** Confidence of the detection. */
16
+ readonly confidence: Confidence;
17
+ /** Human-readable reason. */
18
+ readonly reason: string;
19
+ /** Heuristic scores used to pick the language. */
20
+ readonly scores: Readonly<Record<SourceLanguage, number>>;
21
+ }
22
+ /** Which conversion strategy was used. */
23
+ export type ConversionPath = 'deterministic' | 'ai' | 'hybrid' | 'passthrough';
24
+ /** A single warning surfaced during conversion. */
25
+ export interface ConversionWarning {
26
+ readonly severity: 'info' | 'warning' | 'error';
27
+ readonly category: 'approximation' | 'unsupported' | 'semantic_risk' | 'hallucination' | 'general';
28
+ readonly message: string;
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
+ /** A single validation issue. */
49
+ export interface ValidationIssue {
50
+ readonly severity: 'error' | 'warning';
51
+ readonly code: string;
52
+ readonly message: string;
53
+ readonly line?: number;
54
+ readonly col?: number;
55
+ }
56
+ /** Full validation report. */
57
+ export interface ValidationResult {
58
+ readonly ok: boolean;
59
+ readonly issues: ValidationIssue[];
60
+ }
61
+ /** Result of a sandbox execution run. */
62
+ export interface SandboxResult {
63
+ readonly ok: boolean;
64
+ readonly plotCount: number;
65
+ readonly barCount: number;
66
+ readonly error?: string;
67
+ /** First few output values per plot (for preview). */
68
+ readonly preview: Array<{
69
+ title: string;
70
+ lastValue: number;
71
+ }>;
72
+ }
73
+ /** Check result for the save gate. */
74
+ export interface SaveGateCheck {
75
+ readonly canSave: boolean;
76
+ readonly blockers: string[];
77
+ readonly warningsToAcknowledge: string[];
78
+ }
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
+ }
107
+ /** Event emitted for observability. */
108
+ export interface ConversionTelemetryEvent {
109
+ readonly timestamp: number;
110
+ readonly sourceLanguage: SourceLanguage;
111
+ readonly detectionConfidence: Confidence;
112
+ readonly conversionPath: ConversionPath;
113
+ readonly validationOk: boolean;
114
+ readonly sandboxOk: boolean | null;
115
+ readonly savedByUser: boolean | null;
116
+ readonly errorCount: number;
117
+ readonly warningCount: number;
118
+ readonly unsupportedCount: number;
119
+ }
120
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * ForgeScript Validation Layer — post-conversion validation.
3
+ *
4
+ * Validates converted ForgeScript source across four dimensions:
5
+ * 1. Syntax — can the source be parsed without errors?
6
+ * 2. Runtime — are all referenced functions & namespaces supported?
7
+ * 3. Capability — are lookback/permission limits respected?
8
+ * 4. Hallucination — reject unknown identifiers & APIs
9
+ *
10
+ * If any error-severity issue is found, the script MUST NOT be saved.
11
+ */
12
+ import type { ValidationResult } from './types';
13
+ /**
14
+ * Validate a ForgeScript source string.
15
+ * Returns a full validation report with zero or more issues.
16
+ */
17
+ export declare function validateForgeScript(source: string): ValidationResult;
18
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +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"}
@@ -10,7 +10,7 @@
10
10
  * LPAREN, RPAREN, LBRACKET, RBRACKET, COMMA, EQ, NEWLINE
11
11
  * EOF
12
12
  */
13
- export type TokenKind = 'NUMBER' | 'STRING' | 'BOOL' | 'IDENT' | 'PLUS' | 'MINUS' | 'STAR' | 'SLASH' | 'PERCENT' | 'LT' | 'GT' | 'LTE' | 'GTE' | 'EQEQ' | 'NEQ' | 'QMARK' | 'COLON' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'COMMA' | 'EQ' | 'NEWLINE' | 'EOF';
13
+ export type TokenKind = 'NUMBER' | 'STRING' | 'BOOL' | 'IDENT' | 'COLOR' | 'PLUS' | 'MINUS' | 'STAR' | 'SLASH' | 'PERCENT' | 'LT' | 'GT' | 'LTE' | 'GTE' | 'EQEQ' | 'NEQ' | 'QMARK' | 'COLON' | 'COLONEQ' | 'DOT' | 'LPAREN' | 'RPAREN' | 'LBRACKET' | 'RBRACKET' | 'COMMA' | 'EQ' | 'ARROW' | 'INDENT' | 'DEDENT' | 'NEWLINE' | 'EOF';
14
14
  export type Token = {
15
15
  kind: TokenKind;
16
16
  value: string;
@@ -24,6 +24,10 @@ export declare class Lexer {
24
24
  private _col;
25
25
  constructor(src: string);
26
26
  tokenize(): Token[];
27
+ /** After each NEWLINE, inject INDENT/DEDENT tokens based on the indentation
28
+ * of the following non-blank line. Enables indented if/else blocks. */
29
+ private _injectIndents;
30
+ private _rawTokenize;
27
31
  private _make;
28
32
  private _peek;
29
33
  private _isAlpha;
@@ -32,5 +36,7 @@ export declare class Lexer {
32
36
  private _readNumber;
33
37
  private _readString;
34
38
  private _readIdent;
39
+ private _readColor;
40
+ private _isHex;
35
41
  }
36
42
  //# sourceMappingURL=lexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../../src/forgescript/lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,SAAS,GACjB,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAChD,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAC/C,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAC5C,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GACrC,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAC7C,OAAO,GAAG,IAAI,GAAG,OAAO,GACxB,QAAQ,GAAG,QAAQ,GACnB,SAAS,GAAG,KAAK,CAAC;AAEtB,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAI,SAAS,CAAC;IAClB,KAAK,EAAG,MAAM,CAAC;IACf,IAAI,EAAI,MAAM,CAAC;IACf,GAAG,EAAK,MAAM,CAAC;CAChB,CAAC;AAKF,qBAAa,KAAK;IAChB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,IAAI,CAAc;gBAEd,GAAG,EAAE,MAAM;IAIvB,QAAQ,IAAI,KAAK,EAAE;IAMnB;4EACwE;IACxE,OAAO,CAAC,cAAc;IAoDtB,OAAO,CAAC,YAAY;IA2EpB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,MAAM;CAGf"}
@@ -20,8 +20,18 @@ export declare class Parser {
20
20
  parse(): Program;
21
21
  private _stmt;
22
22
  private _indicatorDecl;
23
+ private _varDeclStmt;
24
+ private _reassign;
25
+ private _forStmt;
23
26
  private _assign;
24
27
  private _exprStmt;
28
+ private _ifStmt;
29
+ private _whileStmt;
30
+ /** Lookahead: is this IDENT '(' ... ')' '=>'? Scans without consuming. */
31
+ private _isFnDecl;
32
+ /** Parse: name(p1, p2, ...) => expr OR name(p1, p2, ...) =>\n block */
33
+ private _fnDeclStmt;
34
+ private _indentedBlock;
25
35
  private _expr;
26
36
  private _ternary;
27
37
  private _or;
@@ -32,7 +42,11 @@ export declare class Parser {
32
42
  private _multiplication;
33
43
  private _unary;
34
44
  private _primary;
45
+ /** Parse IDENT.IDENT or IDENT.IDENT(args) */
46
+ private _nsCallOrMember;
35
47
  private _callExpr;
48
+ /** Parse a mixed positional + named argument list. */
49
+ private _argList;
36
50
  private _binop;
37
51
  private _current;
38
52
  private _advance;
@@ -0,0 +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"}
@@ -3,15 +3,18 @@
3
3
  *
4
4
  * Pipeline:
5
5
  * Pine source → PineLexer → PineToken[] → PineParser → PineProgram
6
- * → PineTranspiler → TScript source → TScriptIndicator runtime
6
+ * → PineTranspiler → ForgeScript source → ForgeScriptIndicator runtime
7
+ *
8
+ * Supported versions: Pine v5 and v6.
9
+ * Scripts tagged //@version=N where N > 6 will compile with a warning.
7
10
  */
8
11
  import type { Diagnostic } from './diagnostics';
9
12
  import type { OHLCV } from '@forgecharts/types';
10
- import type { IndicatorPoint } from '../core/IndicatorEngine';
13
+ import type { IndicatorPoint } from '../../core/IndicatorEngine';
11
14
  export type { Diagnostic };
12
15
  export type { DiagnosticSeverity } from './diagnostics';
13
16
  export interface PineCompileResult {
14
- /** The transpiled TScript source string. */
17
+ /** The transpiled ForgeScript source string. */
15
18
  readonly tscript: string;
16
19
  readonly diagnostics: readonly Diagnostic[];
17
20
  /** `true` when there are no error-severity diagnostics. */
@@ -19,7 +22,7 @@ export interface PineCompileResult {
19
22
  }
20
23
  export declare class PineCompiler {
21
24
  /**
22
- * Compile Pine Script source to TScript.
25
+ * Compile Pine Script source to ForgeScript.
23
26
  * Parse errors throw a `SyntaxError`; semantic problems populate diagnostics.
24
27
  */
25
28
  compile(pineSource: string): PineCompileResult;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PineCompiler.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/PineCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAY,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,YAAY,EAAE,UAAU,EAAE,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,OAAO,EAAM,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,EAAW,OAAO,CAAC;CAC/B;AAED,qBAAa,YAAY;IACvB;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAkC9C;;;OAGG;IACH,MAAM,CAAC,GAAG,CACR,UAAU,EAAE,MAAM,EAClB,IAAI,EAAQ,SAAS,KAAK,EAAE,GAC3B;QAAE,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;QAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE;CAYrE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/diagnostics.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAM,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAO,MAAM,CAAC;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAM,MAAM,CAAC;CAC3B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,GAAG,CACD,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAG,MAAM,EAChB,GAAG,EAAO;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACvC,IAAI,EAAM,MAAM,GACf,IAAI;IAIP,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAAwB;IAEhE,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAU,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAO,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAQ,gBAAgB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACpE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Pine Script AST types — subset understood by the ForgeCharts Pine compat layer.
3
3
  *
4
- * Supported Pine v5 constructs:
4
+ * Supported Pine v5/v6 constructs:
5
5
  * indicator(title, overlay?, ...)
6
6
  * input(defval, title?, ...) / input.int() / input.float() / input.bool() / input.source()
7
7
  * ta.sma() ta.ema() ta.wma() ta.rma() ta.rsi() ta.macd()
@@ -9,9 +9,14 @@
9
9
  * ta.crossover() ta.crossunder() ta.barssince()
10
10
  * math.abs() math.max() math.min() math.round() math.floor() math.ceil()
11
11
  * math.sqrt() math.log() math.pow() math.sign()
12
+ * str.* (partial — unsupported functions emit a diagnostic)
12
13
  * plot() plotshape()
13
14
  * nz() na()
14
15
  * if / else blocks
16
+ * switch expression/statement (v6+)
17
+ * while loop (v6+)
18
+ * for...in loop (v6+ — emits unsupported diagnostic)
19
+ * type / method / import / export / enum (v6+ — silently skipped with diagnostics)
15
20
  * var declarations
16
21
  * ternary a ? b : c
17
22
  */
@@ -133,7 +138,50 @@ export type PineIf = {
133
138
  else_: PineStmt[];
134
139
  loc: Loc;
135
140
  };
136
- export type PineStmt = PineIndicatorDecl | PineVarDecl | PineAssign | PineExprStmt | PineIf;
141
+ export type PineSwitchCase = {
142
+ /** null = default / else case (no condition) */
143
+ condition: PineExpr | null;
144
+ body: PineStmt[];
145
+ };
146
+ /**
147
+ * Pine v6 switch statement/expression.
148
+ *
149
+ * switch subject → equality-compare each case against subject
150
+ * switch (no subject) → each case condition is evaluated as a boolean
151
+ */
152
+ export type PineSwitch = {
153
+ kind: 'PineSwitch';
154
+ subject: PineExpr | null;
155
+ cases: PineSwitchCase[];
156
+ loc: Loc;
157
+ };
158
+ export type PineWhile = {
159
+ kind: 'PineWhile';
160
+ condition: PineExpr;
161
+ body: PineStmt[];
162
+ loc: Loc;
163
+ };
164
+ export type PineForIn = {
165
+ kind: 'PineForIn';
166
+ varName: string;
167
+ iterable: PineExpr;
168
+ body: PineStmt[];
169
+ loc: Loc;
170
+ };
171
+ /** User-defined type declaration (v6). Transpiled to a no-op with a diagnostic. */
172
+ export type PineTypeDef = {
173
+ kind: 'PineTypeDef';
174
+ name: string;
175
+ loc: Loc;
176
+ };
177
+ /** Library import statement (v6). Transpiled to a no-op with a diagnostic. */
178
+ export type PineImport = {
179
+ kind: 'PineImport';
180
+ path: string;
181
+ alias: string;
182
+ loc: Loc;
183
+ };
184
+ export type PineStmt = PineIndicatorDecl | PineVarDecl | PineAssign | PineExprStmt | PineIf | PineSwitch | PineWhile | PineForIn | PineTypeDef | PineImport;
137
185
  export type PineProgram = {
138
186
  kind: 'PineProgram';
139
187
  version: number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pine-ast.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/pine-ast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pine-lexer.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/pine-lexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GACf,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GACtC,OAAO,GACP,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAC/C,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAC5C,OAAO,GAAG,OAAO,GAAG,OAAO,GAC3B,QAAQ,GAAG,UAAU,GACrB,KAAK,GACL,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAC7C,OAAO,GACP,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAC/B,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAG,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAG,MAAM,CAAC;IACd,GAAG,EAAI,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,IAAI,CAAgB;IAE5B,4CAA4C;IAC5C,OAAO,SAAK;gBAEA,GAAG,EAAE,MAAM;IAIvB,QAAQ,IAAI,SAAS,EAAE;IASvB,OAAO,CAAC,YAAY;IAoFpB,OAAO,CAAC,cAAc;IA2DtB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,UAAU;CAYnB"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Pine Script Parser — recursive-descent, produces a PineProgram AST.
3
+ *
4
+ * Handles Pine v5 and v6 constructs:
5
+ * indicator(), input.*(), ta.*(), math.*(), str.*(), plot(), plotshape()
6
+ * var / varip declarations
7
+ * := reassignment
8
+ * if / else (indented blocks)
9
+ * switch statement/expression (v6+)
10
+ * while loop (v6+)
11
+ * for...in loop (v6+, emits unsupported diagnostic)
12
+ * type / method / enum declarations (v6+, silently skipped)
13
+ * import / export statements (v6+, silently skipped)
14
+ * ternary a ? b : c
15
+ * namespace.member and namespace.call(...)
16
+ */
17
+ import type { PineProgram } from './pine-ast';
18
+ export declare class PineParser {
19
+ private _tokens;
20
+ private _pos;
21
+ readonly version: number;
22
+ constructor(src: string);
23
+ parse(): PineProgram;
24
+ private _stmt;
25
+ private _varDecl;
26
+ private _assignStmt;
27
+ private _indicatorDecl;
28
+ private _ifStmt;
29
+ private _indentedBlock;
30
+ /**
31
+ * switch expr
32
+ * val1 => body ← single-line
33
+ * val2 => ← multi-line
34
+ * stmt1
35
+ * => defaultBody ← default / else (no condition)
36
+ *
37
+ * OR boolean-style (no subject):
38
+ * switch
39
+ * cond1 => body
40
+ * cond2 => body
41
+ * => defaultBody
42
+ */
43
+ private _switchStmt;
44
+ /** Parse single-line body (after =>) OR consume NL and parse an indented block. */
45
+ private _singleLineOrBlock;
46
+ private _whileStmt;
47
+ private _forInStmt;
48
+ /**
49
+ * type MyType
50
+ * float field1 = 0
51
+ * int field2 = 0
52
+ *
53
+ * We parse the name and skip the indented field block.
54
+ */
55
+ private _typeDefStmt;
56
+ /**
57
+ * import username/libraryname/version as alias
58
+ */
59
+ private _importStmt;
60
+ /**
61
+ * Returns true if the current position looks like a user-defined function
62
+ * declaration: `IDENT '(' ... ')' '=>'`.
63
+ * Scans forward to find the matching RPAREN, then checks for ARROW.
64
+ */
65
+ private _looksLikeFuncDef;
66
+ /**
67
+ * Skip a user-defined function declaration and its body.
68
+ *
69
+ * funcname(param, ...) =>
70
+ * body
71
+ *
72
+ * OR single-line:
73
+ * funcname(params) => expr
74
+ *
75
+ * Emits no output — user-defined functions are unsupported in ForgeScript.
76
+ */
77
+ private _funcDefStmt;
78
+ /** Skip to end of current line (consumes any tokens before NEWLINE/EOF). */
79
+ private _skipToNL;
80
+ /** Skip a full INDENT…DEDENT block, handling nesting. Does nothing if no INDENT. */
81
+ private _skipBlock;
82
+ private _expr;
83
+ private _ternary;
84
+ private _or;
85
+ private _and;
86
+ private _not;
87
+ private _comparison;
88
+ private _addition;
89
+ private _multiply;
90
+ private _unary;
91
+ private _postfix;
92
+ private _primary;
93
+ private _argList;
94
+ private _parseOneArg;
95
+ private _cur;
96
+ private _advance;
97
+ private _check;
98
+ private _checkIdent;
99
+ private _peekKind;
100
+ private _match;
101
+ private _consume;
102
+ private _skipNL;
103
+ private _consumeNLorEOF;
104
+ private _locOfCur;
105
+ private _locOf;
106
+ private _bin;
107
+ }
108
+ //# sourceMappingURL=pine-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pine-parser.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/pine-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EACV,WAAW,EAOZ,MAAM,YAAY,CAAC;AAGpB,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,IAAI,CAAQ;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,GAAG,EAAE,MAAM;IAMvB,KAAK,IAAI,WAAW;IAapB,OAAO,CAAC,KAAK;IA2Fb,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,WAAW;IAuBnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,OAAO;IAoBf,OAAO,CAAC,cAAc;IAgBtB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,WAAW;IAwCnB,mFAAmF;IACnF,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,UAAU;IA+BlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,YAAY;IAsBpB,4EAA4E;IAC5E,OAAO,CAAC,SAAS;IAOjB,oFAAoF;IACpF,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,KAAK;IAEb,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,QAAQ;IAmHhB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,SAAS;IAGjB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAGf,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IAEd,OAAO,CAAC,IAAI;CAGb"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Pine Script → TScript transpiler.
2
+ * Pine Script → ForgeScript transpiler.
3
3
  *
4
- * Walks a `PineProgram` AST and emits a TScript source string that is
5
- * directly executable by the existing `TScriptRuntime`.
4
+ * Walks a `PineProgram` AST and emits a ForgeScript source string that is
5
+ * directly executable by the existing `ForgeScriptRuntime`.
6
+ * Supports Pine v5 and v6 constructs.
6
7
  */
7
8
  import type { PineProgram } from './pine-ast';
8
9
  import { DiagnosticBag } from './diagnostics';
@@ -18,11 +19,17 @@ export declare class PineTranspiler {
18
19
  private _assign;
19
20
  private _exprStmt;
20
21
  private _ifStmt;
22
+ private _switchStmt;
23
+ private _whileStmt;
24
+ private _forInStmt;
21
25
  private _expr;
22
26
  private _numLit;
23
27
  private _nsCall;
24
28
  private _inputNsCall;
29
+ private _strNsCall;
25
30
  private _call;
31
+ /** Transpile supported output functions, preserving named args */
32
+ private _outputFnCall;
26
33
  private _plotCall;
27
34
  private _member;
28
35
  private _binary;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pine-transpiler.d.ts","sourceRoot":"","sources":["../../../src/forgescript/pine/pine-transpiler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,WAAW,EAMZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAkG9C,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,IAAI,CAAgB;gBAEhB,IAAI,EAAE,aAAa;IAI/B,SAAS,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM;IAWpC,OAAO,CAAC,KAAK;IAeb,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,KAAK;IAmBb,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,OAAO;IAmEf,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,KAAK;IAiCb,kEAAkE;IAClE,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,OAAO;IAmCf,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,KAAK;CAId"}