@txn-signal/lang-en 0.1.0

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 (172) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/.turbo/turbo-lint.log +6 -0
  3. package/.turbo/turbo-test.log +14 -0
  4. package/.turbo/turbo-typecheck.log +5 -0
  5. package/dist/core/src/analyze.d.ts +9 -0
  6. package/dist/core/src/analyze.d.ts.map +1 -0
  7. package/dist/core/src/analyze.js +5 -0
  8. package/dist/core/src/analyze.js.map +1 -0
  9. package/dist/core/src/domain/enums.d.ts +41 -0
  10. package/dist/core/src/domain/enums.d.ts.map +1 -0
  11. package/dist/core/src/domain/enums.js +46 -0
  12. package/dist/core/src/domain/enums.js.map +1 -0
  13. package/dist/core/src/domain/event-type.d.ts +12 -0
  14. package/dist/core/src/domain/event-type.d.ts.map +1 -0
  15. package/dist/core/src/domain/event-type.js +13 -0
  16. package/dist/core/src/domain/event-type.js.map +1 -0
  17. package/dist/core/src/domain/explain.d.ts +8 -0
  18. package/dist/core/src/domain/explain.d.ts.map +1 -0
  19. package/dist/core/src/domain/explain.js +2 -0
  20. package/dist/core/src/domain/explain.js.map +1 -0
  21. package/dist/core/src/domain/fingerprint.d.ts +2 -0
  22. package/dist/core/src/domain/fingerprint.d.ts.map +1 -0
  23. package/dist/core/src/domain/fingerprint.js +9 -0
  24. package/dist/core/src/domain/fingerprint.js.map +1 -0
  25. package/dist/core/src/domain/metadata.d.ts +21 -0
  26. package/dist/core/src/domain/metadata.d.ts.map +1 -0
  27. package/dist/core/src/domain/metadata.js +2 -0
  28. package/dist/core/src/domain/metadata.js.map +1 -0
  29. package/dist/core/src/domain/signal.d.ts +18 -0
  30. package/dist/core/src/domain/signal.d.ts.map +1 -0
  31. package/dist/core/src/domain/signal.js +2 -0
  32. package/dist/core/src/domain/signal.js.map +1 -0
  33. package/dist/core/src/grammar/structural-extractor.d.ts +4 -0
  34. package/dist/core/src/grammar/structural-extractor.d.ts.map +1 -0
  35. package/dist/core/src/grammar/structural-extractor.js +99 -0
  36. package/dist/core/src/grammar/structural-extractor.js.map +1 -0
  37. package/dist/core/src/grammar/types.d.ts +13 -0
  38. package/dist/core/src/grammar/types.d.ts.map +1 -0
  39. package/dist/core/src/grammar/types.js +2 -0
  40. package/dist/core/src/grammar/types.js.map +1 -0
  41. package/dist/core/src/index.d.ts +12 -0
  42. package/dist/core/src/index.d.ts.map +1 -0
  43. package/dist/core/src/index.js +8 -0
  44. package/dist/core/src/index.js.map +1 -0
  45. package/dist/core/src/pipeline/gate1-prefilter.d.ts +4 -0
  46. package/dist/core/src/pipeline/gate1-prefilter.d.ts.map +1 -0
  47. package/dist/core/src/pipeline/gate1-prefilter.js +35 -0
  48. package/dist/core/src/pipeline/gate1-prefilter.js.map +1 -0
  49. package/dist/core/src/pipeline/gate2-structural.d.ts +4 -0
  50. package/dist/core/src/pipeline/gate2-structural.d.ts.map +1 -0
  51. package/dist/core/src/pipeline/gate2-structural.js +14 -0
  52. package/dist/core/src/pipeline/gate2-structural.js.map +1 -0
  53. package/dist/core/src/pipeline/gate3-semantic.d.ts +4 -0
  54. package/dist/core/src/pipeline/gate3-semantic.d.ts.map +1 -0
  55. package/dist/core/src/pipeline/gate3-semantic.js +70 -0
  56. package/dist/core/src/pipeline/gate3-semantic.js.map +1 -0
  57. package/dist/core/src/pipeline/grammar-engine.d.ts +9 -0
  58. package/dist/core/src/pipeline/grammar-engine.d.ts.map +1 -0
  59. package/dist/core/src/pipeline/grammar-engine.js +19 -0
  60. package/dist/core/src/pipeline/grammar-engine.js.map +1 -0
  61. package/dist/core/src/pipeline/interpretation.d.ts +16 -0
  62. package/dist/core/src/pipeline/interpretation.d.ts.map +1 -0
  63. package/dist/core/src/pipeline/interpretation.js +89 -0
  64. package/dist/core/src/pipeline/interpretation.js.map +1 -0
  65. package/dist/core/src/pipeline/metadata-detector.d.ts +14 -0
  66. package/dist/core/src/pipeline/metadata-detector.d.ts.map +1 -0
  67. package/dist/core/src/pipeline/metadata-detector.js +58 -0
  68. package/dist/core/src/pipeline/metadata-detector.js.map +1 -0
  69. package/dist/core/src/pipeline/normalization.d.ts +12 -0
  70. package/dist/core/src/pipeline/normalization.d.ts.map +1 -0
  71. package/dist/core/src/pipeline/normalization.js +46 -0
  72. package/dist/core/src/pipeline/normalization.js.map +1 -0
  73. package/dist/core/src/pipeline/orchestrator.d.ts +4 -0
  74. package/dist/core/src/pipeline/orchestrator.d.ts.map +1 -0
  75. package/dist/core/src/pipeline/orchestrator.js +117 -0
  76. package/dist/core/src/pipeline/orchestrator.js.map +1 -0
  77. package/dist/core/src/pipeline/plugin-refinement.d.ts +8 -0
  78. package/dist/core/src/pipeline/plugin-refinement.d.ts.map +1 -0
  79. package/dist/core/src/pipeline/plugin-refinement.js +34 -0
  80. package/dist/core/src/pipeline/plugin-refinement.js.map +1 -0
  81. package/dist/core/src/pipeline/role-tagger.d.ts +9 -0
  82. package/dist/core/src/pipeline/role-tagger.d.ts.map +1 -0
  83. package/dist/core/src/pipeline/role-tagger.js +36 -0
  84. package/dist/core/src/pipeline/role-tagger.js.map +1 -0
  85. package/dist/core/src/pipeline/scoring.d.ts +11 -0
  86. package/dist/core/src/pipeline/scoring.d.ts.map +1 -0
  87. package/dist/core/src/pipeline/scoring.js +19 -0
  88. package/dist/core/src/pipeline/scoring.js.map +1 -0
  89. package/dist/core/src/pipeline/soft-event-mapper.d.ts +9 -0
  90. package/dist/core/src/pipeline/soft-event-mapper.d.ts.map +1 -0
  91. package/dist/core/src/pipeline/soft-event-mapper.js +59 -0
  92. package/dist/core/src/pipeline/soft-event-mapper.js.map +1 -0
  93. package/dist/core/src/pipeline/tokenizer.d.ts +9 -0
  94. package/dist/core/src/pipeline/tokenizer.d.ts.map +1 -0
  95. package/dist/core/src/pipeline/tokenizer.js +27 -0
  96. package/dist/core/src/pipeline/tokenizer.js.map +1 -0
  97. package/dist/core/src/pipeline/trait-extractor.d.ts +31 -0
  98. package/dist/core/src/pipeline/trait-extractor.d.ts.map +1 -0
  99. package/dist/core/src/pipeline/trait-extractor.js +36 -0
  100. package/dist/core/src/pipeline/trait-extractor.js.map +1 -0
  101. package/dist/core/src/plugins/plugin-runner.d.ts +3 -0
  102. package/dist/core/src/plugins/plugin-runner.d.ts.map +1 -0
  103. package/dist/core/src/plugins/plugin-runner.js +13 -0
  104. package/dist/core/src/plugins/plugin-runner.js.map +1 -0
  105. package/dist/core/src/registry/language-registry.d.ts +5 -0
  106. package/dist/core/src/registry/language-registry.d.ts.map +1 -0
  107. package/dist/core/src/registry/language-registry.js +17 -0
  108. package/dist/core/src/registry/language-registry.js.map +1 -0
  109. package/dist/core/src/registry/plugin-registry.d.ts +4 -0
  110. package/dist/core/src/registry/plugin-registry.d.ts.map +1 -0
  111. package/dist/core/src/registry/plugin-registry.js +13 -0
  112. package/dist/core/src/registry/plugin-registry.js.map +1 -0
  113. package/dist/core/src/registry/rail-registry.d.ts +4 -0
  114. package/dist/core/src/registry/rail-registry.d.ts.map +1 -0
  115. package/dist/core/src/registry/rail-registry.js +13 -0
  116. package/dist/core/src/registry/rail-registry.js.map +1 -0
  117. package/dist/core/src/registry/types.d.ts +32 -0
  118. package/dist/core/src/registry/types.d.ts.map +1 -0
  119. package/dist/core/src/registry/types.js +2 -0
  120. package/dist/core/src/registry/types.js.map +1 -0
  121. package/dist/core/src/roles/role-tagger.d.ts +5 -0
  122. package/dist/core/src/roles/role-tagger.d.ts.map +1 -0
  123. package/dist/core/src/roles/role-tagger.js +209 -0
  124. package/dist/core/src/roles/role-tagger.js.map +1 -0
  125. package/dist/core/src/roles/role-types.d.ts +36 -0
  126. package/dist/core/src/roles/role-types.d.ts.map +1 -0
  127. package/dist/core/src/roles/role-types.js +28 -0
  128. package/dist/core/src/roles/role-types.js.map +1 -0
  129. package/dist/core/src/scoring/scoring-engine.d.ts +7 -0
  130. package/dist/core/src/scoring/scoring-engine.d.ts.map +1 -0
  131. package/dist/core/src/scoring/scoring-engine.js +32 -0
  132. package/dist/core/src/scoring/scoring-engine.js.map +1 -0
  133. package/dist/core/src/scoring/weights.d.ts +13 -0
  134. package/dist/core/src/scoring/weights.d.ts.map +1 -0
  135. package/dist/core/src/scoring/weights.js +13 -0
  136. package/dist/core/src/scoring/weights.js.map +1 -0
  137. package/dist/core/src/tokenization/semantic-tokenizer.d.ts +3 -0
  138. package/dist/core/src/tokenization/semantic-tokenizer.d.ts.map +1 -0
  139. package/dist/core/src/tokenization/semantic-tokenizer.js +207 -0
  140. package/dist/core/src/tokenization/semantic-tokenizer.js.map +1 -0
  141. package/dist/core/src/tokenization/token-types.d.ts +25 -0
  142. package/dist/core/src/tokenization/token-types.d.ts.map +1 -0
  143. package/dist/core/src/tokenization/token-types.js +13 -0
  144. package/dist/core/src/tokenization/token-types.js.map +1 -0
  145. package/dist/core/src/tokenization/tokenizer-registry.d.ts +9 -0
  146. package/dist/core/src/tokenization/tokenizer-registry.d.ts.map +1 -0
  147. package/dist/core/src/tokenization/tokenizer-registry.js +9 -0
  148. package/dist/core/src/tokenization/tokenizer-registry.js.map +1 -0
  149. package/dist/core/src/types.d.ts +11 -0
  150. package/dist/core/src/types.d.ts.map +1 -0
  151. package/dist/core/src/types.js +2 -0
  152. package/dist/core/src/types.js.map +1 -0
  153. package/dist/core/src/utils/string.d.ts +3 -0
  154. package/dist/core/src/utils/string.d.ts.map +1 -0
  155. package/dist/core/src/utils/string.js +7 -0
  156. package/dist/core/src/utils/string.js.map +1 -0
  157. package/dist/core/src/version.d.ts +2 -0
  158. package/dist/core/src/version.d.ts.map +1 -0
  159. package/dist/core/src/version.js +2 -0
  160. package/dist/core/src/version.js.map +1 -0
  161. package/dist/lang-en/src/index.d.ts +2 -0
  162. package/dist/lang-en/src/index.d.ts.map +1 -0
  163. package/dist/lang-en/src/index.js +12 -0
  164. package/dist/lang-en/src/index.js.map +1 -0
  165. package/dist/lang-en/src/lexicon.d.ts +12 -0
  166. package/dist/lang-en/src/lexicon.d.ts.map +1 -0
  167. package/dist/lang-en/src/lexicon.js +29 -0
  168. package/dist/lang-en/src/lexicon.js.map +1 -0
  169. package/package.json +22 -0
  170. package/src/index.ts +12 -0
  171. package/src/lexicon.ts +31 -0
  172. package/tsconfig.json +7 -0
@@ -0,0 +1,5 @@
1
+
2
+ 
3
+ > @txn-signal/lang-en@0.1.0 build /Users/dhairya/Desktop/transection-analyser/packages/lang-en
4
+ > tsc -p tsconfig.json
5
+
@@ -0,0 +1,6 @@
1
+
2
+ 
3
+ > @txn-signal/lang-en@0.1.0 lint /Users/dhairya/Desktop/transection-analyser/packages/lang-en
4
+ > echo "lint not configured"
5
+
6
+ lint not configured
@@ -0,0 +1,14 @@
1
+
2
+ 
3
+ > @txn-signal/lang-en@0.1.0 test /Users/dhairya/Desktop/transection-analyser/packages/lang-en
4
+ > vitest run
5
+
6
+ [?25l
7
+  RUN  v3.2.4 /Users/dhairya/Desktop/transection-analyser/packages/lang-en
8
+
9
+ No test files found, exiting with code 1
10
+ 
11
+ include: **/*.{test,spec}.?(c|m)[jt]s?(x)
12
+ exclude: **/node_modules/**, **/dist/**, **/cypress/**, **/.{idea,git,cache,output,temp}/**, **/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*
13
+
14
+ [?25h ELIFECYCLE  Test failed. See above for more details.
@@ -0,0 +1,5 @@
1
+
2
+ 
3
+ > @txn-signal/lang-en@0.1.0 typecheck /Users/dhairya/Desktop/transection-analyser/packages/lang-en
4
+ > tsc --noEmit
5
+
@@ -0,0 +1,9 @@
1
+ import type { Signal } from './domain/signal.js';
2
+ import type { AnalyzeOptions, RawMessage } from './domain/metadata.js';
3
+ export interface AnalysisResult {
4
+ signals: Signal[];
5
+ rejectedAt?: string;
6
+ rejectionReason?: string;
7
+ }
8
+ export declare function analyzeSignal(input: RawMessage, options?: AnalyzeOptions): AnalysisResult;
9
+ //# sourceMappingURL=analyze.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../core/src/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvE,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,cAAc,CAE7F"}
@@ -0,0 +1,5 @@
1
+ import { orchestrate } from './pipeline/orchestrator.js';
2
+ export function analyzeSignal(input, options = {}) {
3
+ return orchestrate(input, options);
4
+ }
5
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../../core/src/analyze.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAQzD,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,UAA0B,EAAE;IAC3E,OAAO,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,41 @@
1
+ export declare enum Direction {
2
+ Debit = "debit",
3
+ Credit = "credit",
4
+ Unknown = "unknown"
5
+ }
6
+ export declare enum TransactionState {
7
+ Authorized = "authorized",
8
+ Posted = "posted",
9
+ Reversed = "reversed",
10
+ Refunded = "refunded",
11
+ Failed = "failed",
12
+ Unknown = "unknown"
13
+ }
14
+ export declare enum FlowType {
15
+ Expense = "expense",
16
+ Income = "income",
17
+ LiabilityPayment = "liability_payment",
18
+ InternalTransfer = "internal_transfer",
19
+ Unknown = "unknown"
20
+ }
21
+ export declare enum FundingSourceType {
22
+ BankAccount = "bank_account",
23
+ CreditCard = "credit_card",
24
+ DebitCard = "debit_card",
25
+ Wallet = "wallet",
26
+ Unknown = "unknown"
27
+ }
28
+ export declare enum PaymentRail {
29
+ UPI = "upi",
30
+ IMPS = "imps",
31
+ NEFT = "neft",
32
+ SEPA = "sepa",
33
+ ACH = "ach",
34
+ PIX = "pix",
35
+ FasterPayments = "faster_payments",
36
+ CardPOS = "card_pos",
37
+ CardOnline = "card_online",
38
+ ATM = "atm",
39
+ Unknown = "unknown"
40
+ }
41
+ //# sourceMappingURL=enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,gBAAgB;IAC1B,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,OAAO,YAAY;CACpB;AAED,oBAAY,iBAAiB;IAC3B,WAAW,iBAAiB;IAC5B,UAAU,gBAAgB;IAC1B,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,cAAc,oBAAoB;IAClC,OAAO,aAAa;IACpB,UAAU,gBAAgB;IAC1B,GAAG,QAAQ;IACX,OAAO,YAAY;CACpB"}
@@ -0,0 +1,46 @@
1
+ export var Direction;
2
+ (function (Direction) {
3
+ Direction["Debit"] = "debit";
4
+ Direction["Credit"] = "credit";
5
+ Direction["Unknown"] = "unknown";
6
+ })(Direction || (Direction = {}));
7
+ export var TransactionState;
8
+ (function (TransactionState) {
9
+ TransactionState["Authorized"] = "authorized";
10
+ TransactionState["Posted"] = "posted";
11
+ TransactionState["Reversed"] = "reversed";
12
+ TransactionState["Refunded"] = "refunded";
13
+ TransactionState["Failed"] = "failed";
14
+ TransactionState["Unknown"] = "unknown";
15
+ })(TransactionState || (TransactionState = {}));
16
+ export var FlowType;
17
+ (function (FlowType) {
18
+ FlowType["Expense"] = "expense";
19
+ FlowType["Income"] = "income";
20
+ FlowType["LiabilityPayment"] = "liability_payment";
21
+ FlowType["InternalTransfer"] = "internal_transfer";
22
+ FlowType["Unknown"] = "unknown";
23
+ })(FlowType || (FlowType = {}));
24
+ export var FundingSourceType;
25
+ (function (FundingSourceType) {
26
+ FundingSourceType["BankAccount"] = "bank_account";
27
+ FundingSourceType["CreditCard"] = "credit_card";
28
+ FundingSourceType["DebitCard"] = "debit_card";
29
+ FundingSourceType["Wallet"] = "wallet";
30
+ FundingSourceType["Unknown"] = "unknown";
31
+ })(FundingSourceType || (FundingSourceType = {}));
32
+ export var PaymentRail;
33
+ (function (PaymentRail) {
34
+ PaymentRail["UPI"] = "upi";
35
+ PaymentRail["IMPS"] = "imps";
36
+ PaymentRail["NEFT"] = "neft";
37
+ PaymentRail["SEPA"] = "sepa";
38
+ PaymentRail["ACH"] = "ach";
39
+ PaymentRail["PIX"] = "pix";
40
+ PaymentRail["FasterPayments"] = "faster_payments";
41
+ PaymentRail["CardPOS"] = "card_pos";
42
+ PaymentRail["CardOnline"] = "card_online";
43
+ PaymentRail["ATM"] = "atm";
44
+ PaymentRail["Unknown"] = "unknown";
45
+ })(PaymentRail || (PaymentRail = {}));
46
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../core/src/domain/enums.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,4BAAe,CAAA;IACf,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;AACrB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,6CAAyB,CAAA;IACzB,qCAAiB,CAAA;IACjB,yCAAqB,CAAA;IACrB,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;AACrB,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAED,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,kDAAsC,CAAA;IACtC,kDAAsC,CAAA;IACtC,+BAAmB,CAAA;AACrB,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB;AAED,MAAM,CAAN,IAAY,iBAMX;AAND,WAAY,iBAAiB;IAC3B,iDAA4B,CAAA;IAC5B,+CAA0B,CAAA;IAC1B,6CAAwB,CAAA;IACxB,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;AACrB,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,MAAM,CAAN,IAAY,WAYX;AAZD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,4BAAa,CAAA;IACb,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,iDAAkC,CAAA;IAClC,mCAAoB,CAAA;IACpB,yCAA0B,CAAA;IAC1B,0BAAW,CAAA;IACX,kCAAmB,CAAA;AACrB,CAAC,EAZW,WAAW,KAAX,WAAW,QAYtB"}
@@ -0,0 +1,12 @@
1
+ export declare enum EventType {
2
+ CardPurchase = "card_purchase",
3
+ BankDebit = "bank_debit",
4
+ BankCredit = "bank_credit",
5
+ LiabilityPayment = "liability_payment",
6
+ Refund = "refund",
7
+ Reversal = "reversal",
8
+ Authorization = "authorization",
9
+ InternalTransfer = "internal_transfer",
10
+ Cashback = "cashback"
11
+ }
12
+ //# sourceMappingURL=event-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-type.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/event-type.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACjB,YAAY,kBAAkB;IAC9B,SAAS,eAAe;IACxB,UAAU,gBAAgB;IAC1B,gBAAgB,sBAAsB;IACtC,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,gBAAgB,sBAAsB;IACtC,QAAQ,aAAa;CACxB"}
@@ -0,0 +1,13 @@
1
+ export var EventType;
2
+ (function (EventType) {
3
+ EventType["CardPurchase"] = "card_purchase";
4
+ EventType["BankDebit"] = "bank_debit";
5
+ EventType["BankCredit"] = "bank_credit";
6
+ EventType["LiabilityPayment"] = "liability_payment";
7
+ EventType["Refund"] = "refund";
8
+ EventType["Reversal"] = "reversal";
9
+ EventType["Authorization"] = "authorization";
10
+ EventType["InternalTransfer"] = "internal_transfer";
11
+ EventType["Cashback"] = "cashback";
12
+ })(EventType || (EventType = {}));
13
+ //# sourceMappingURL=event-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-type.js","sourceRoot":"","sources":["../../../../../core/src/domain/event-type.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,SAUX;AAVD,WAAY,SAAS;IACjB,2CAA8B,CAAA;IAC9B,qCAAwB,CAAA;IACxB,uCAA0B,CAAA;IAC1B,mDAAsC,CAAA;IACtC,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;IACrB,4CAA+B,CAAA;IAC/B,mDAAsC,CAAA;IACtC,kCAAqB,CAAA;AACzB,CAAC,EAVW,SAAS,KAAT,SAAS,QAUpB"}
@@ -0,0 +1,8 @@
1
+ export interface ExplainTrace {
2
+ gatesPassed: string[];
3
+ matchedPattern: string;
4
+ featuresDetected: string[];
5
+ pluginApplied?: string;
6
+ scoringBreakdown: Record<string, number>;
7
+ }
8
+ //# sourceMappingURL=explain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/explain.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=explain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../../../core/src/domain/explain.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare function fingerprint(input: string): string;
2
+ //# sourceMappingURL=fingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/fingerprint.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjD"}
@@ -0,0 +1,9 @@
1
+ export function fingerprint(input) {
2
+ let hash = 5381;
3
+ for (let index = 0; index < input.length; index += 1) {
4
+ hash = ((hash << 5) + hash) + input.charCodeAt(index);
5
+ hash |= 0;
6
+ }
7
+ return `tx_${Math.abs(hash).toString(16)}`;
8
+ }
9
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../../../core/src/domain/fingerprint.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { FundingSourceType, PaymentRail } from './enums.js';
2
+ export interface PaymentMetadata {
3
+ fundingSourceType: FundingSourceType;
4
+ fundingSourceMasked?: string;
5
+ paymentRail: PaymentRail;
6
+ merchant?: string;
7
+ referenceNumber?: string;
8
+ transactionTime?: string;
9
+ }
10
+ export interface RawMessage {
11
+ body: string;
12
+ sender?: string;
13
+ subject?: string;
14
+ receivedAt?: string;
15
+ localeHint?: string;
16
+ }
17
+ export interface AnalyzeOptions {
18
+ explain?: boolean;
19
+ languageCode?: string;
20
+ }
21
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../../../core/src/domain/metadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { Direction, FlowType, TransactionState } from './enums.js';
2
+ import type { ExplainTrace } from './explain.js';
3
+ import type { PaymentMetadata } from './metadata.js';
4
+ import type { EventType } from './event-type.js';
5
+ export interface Signal {
6
+ id: string;
7
+ eventType: EventType;
8
+ amountMinor: number;
9
+ currency: string;
10
+ direction: Direction;
11
+ state: TransactionState;
12
+ flowType: FlowType;
13
+ metadata: PaymentMetadata;
14
+ confidence: number;
15
+ explain?: ExplainTrace;
16
+ engineVersion: string;
17
+ }
18
+ //# sourceMappingURL=signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../../../../core/src/domain/signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal.js","sourceRoot":"","sources":["../../../../../core/src/domain/signal.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { RoleTag } from '../roles/role-types.js';
2
+ import type { StructuralCandidate } from './types.js';
3
+ export declare function extractStructuralCandidates(tags: RoleTag[]): StructuralCandidate[];
4
+ //# sourceMappingURL=structural-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-extractor.d.ts","sourceRoot":"","sources":["../../../../../core/src/grammar/structural-extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAoEtD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CA2DlF"}
@@ -0,0 +1,99 @@
1
+ import { Role } from '../roles/role-types.js';
2
+ const WINDOW_RADIUS = 12;
3
+ const MIN_STRUCTURAL_SCORE = 2;
4
+ function pickDirectionHint(window) {
5
+ const directionTag = window.find(tag => tag.role === Role.DirectionVerb);
6
+ const verbType = directionTag?.meta?.verbType;
7
+ if (verbType === 'debit' || verbType === 'credit') {
8
+ return verbType;
9
+ }
10
+ return undefined;
11
+ }
12
+ function pickSourceType(window) {
13
+ if (window.some(tag => tag.role === Role.CardContext)) {
14
+ return 'card';
15
+ }
16
+ if (window.some(tag => tag.role === Role.SourceAccount ||
17
+ tag.role === Role.BankContext ||
18
+ tag.role === Role.RailKeyword)) {
19
+ return 'bank';
20
+ }
21
+ return undefined;
22
+ }
23
+ function candidateStrength(candidate) {
24
+ let score = 0;
25
+ if (candidate.directionHint)
26
+ score += 4;
27
+ if (candidate.sourceType)
28
+ score += 3;
29
+ if (candidate.referenceNumber)
30
+ score += 2;
31
+ if (candidate.merchant)
32
+ score += 1;
33
+ return score;
34
+ }
35
+ function computeStructuralScore(window) {
36
+ const hasDirection = window.some(tag => tag.role === Role.DirectionVerb);
37
+ const hasSourceContext = window.some(tag => tag.role === Role.SourceAccount ||
38
+ tag.role === Role.DestinationAccount ||
39
+ tag.role === Role.BankContext);
40
+ const hasCardContext = window.some(tag => tag.role === Role.CardContext);
41
+ const hasTxnOrPaymentKeyword = window.some(tag => tag.role === Role.TransactionKeyword ||
42
+ tag.role === Role.PaymentKeyword);
43
+ const hasReference = window.some(tag => tag.role === Role.ReferenceNumber);
44
+ const hasRail = window.some(tag => tag.role === Role.RailKeyword);
45
+ const hasMerchant = window.some(tag => tag.role === Role.MerchantCandidate);
46
+ return Number(hasDirection) +
47
+ Number(hasSourceContext) +
48
+ Number(hasCardContext) +
49
+ Number(hasTxnOrPaymentKeyword) +
50
+ Number(hasReference) +
51
+ Number(hasRail) +
52
+ Number(hasMerchant);
53
+ }
54
+ export function extractStructuralCandidates(tags) {
55
+ const draftCandidates = [];
56
+ const amountAnchors = tags
57
+ .map((tag, index) => ({ tag, index }))
58
+ .filter(({ tag }) => tag.role === Role.Amount);
59
+ for (const { tag: amountTag, index: amountIndex } of amountAnchors) {
60
+ const amountMinor = typeof amountTag.meta?.amountMinor === 'number'
61
+ ? amountTag.meta.amountMinor
62
+ : 0;
63
+ if (amountMinor <= 0) {
64
+ continue;
65
+ }
66
+ const start = Math.max(0, amountIndex - WINDOW_RADIUS);
67
+ const end = Math.min(tags.length - 1, amountIndex + WINDOW_RADIUS);
68
+ const window = tags.slice(start, end + 1);
69
+ const structuralScore = computeStructuralScore(window);
70
+ if (structuralScore < MIN_STRUCTURAL_SCORE) {
71
+ continue;
72
+ }
73
+ const currency = typeof amountTag.meta?.currency === 'string'
74
+ ? amountTag.meta.currency
75
+ : 'UNKNOWN';
76
+ const merchantTag = window.find(tag => tag.role === Role.MerchantCandidate);
77
+ const referenceTag = window.find(tag => tag.role === Role.ReferenceNumber);
78
+ const directionHint = pickDirectionHint(window);
79
+ const sourceType = pickSourceType(window);
80
+ draftCandidates.push({
81
+ amountMinor,
82
+ currency,
83
+ ...(directionHint ? { directionHint } : {}),
84
+ ...(sourceType ? { sourceType } : {}),
85
+ ...(merchantTag ? { merchant: merchantTag.value } : {}),
86
+ ...(referenceTag ? { referenceNumber: referenceTag.value } : {}),
87
+ });
88
+ }
89
+ const bestByAmount = new Map();
90
+ for (const candidate of draftCandidates) {
91
+ const key = `${candidate.amountMinor}:${candidate.currency}`;
92
+ const current = bestByAmount.get(key);
93
+ if (!current || candidateStrength(candidate) > candidateStrength(current)) {
94
+ bestByAmount.set(key, candidate);
95
+ }
96
+ }
97
+ return Array.from(bestByAmount.values());
98
+ }
99
+ //# sourceMappingURL=structural-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structural-extractor.js","sourceRoot":"","sources":["../../../../../core/src/grammar/structural-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { EventType } from '../domain/event-type.js';
2
+ export interface StructuralCandidate {
3
+ amountMinor: number;
4
+ currency: string;
5
+ directionHint?: 'debit' | 'credit';
6
+ sourceType?: 'bank' | 'card';
7
+ merchant?: string;
8
+ referenceNumber?: string;
9
+ }
10
+ export interface TransactionCandidate extends StructuralCandidate {
11
+ eventType: EventType;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../core/src/grammar/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,SAAS,EAAE,SAAS,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../core/src/grammar/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ export { analyzeSignal } from './analyze.js';
2
+ export { ENGINE_VERSION } from './version.js';
3
+ export type { Signal } from './domain/signal.js';
4
+ export type { AnalyzeOptions, RawMessage, PaymentMetadata } from './domain/metadata.js';
5
+ export type { ExplainTrace } from './domain/explain.js';
6
+ export { Direction, TransactionState, FlowType, FundingSourceType, PaymentRail, } from './domain/enums.js';
7
+ export { EventType } from './domain/event-type.js';
8
+ export { registerLanguagePack, getLanguagePack, listLanguagePacks } from './registry/language-registry.js';
9
+ export { registerRailPack, listRailPacks } from './registry/rail-registry.js';
10
+ export { registerPlugin, listPlugins } from './registry/plugin-registry.js';
11
+ export type { LanguagePack, RailPack, ExtractionContext, TransactionCandidate, ExtractionPlugin } from './registry/types.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { analyzeSignal } from './analyze.js';
2
+ export { ENGINE_VERSION } from './version.js';
3
+ export { Direction, TransactionState, FlowType, FundingSourceType, PaymentRail, } from './domain/enums.js';
4
+ export { EventType } from './domain/event-type.js';
5
+ export { registerLanguagePack, getLanguagePack, listLanguagePacks } from './registry/language-registry.js';
6
+ export { registerRailPack, listRailPacks } from './registry/rail-registry.js';
7
+ export { registerPlugin, listPlugins } from './registry/plugin-registry.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../core/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAM9C,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAEnD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StageResult } from '../types.js';
2
+ import type { Normalized } from './normalization.js';
3
+ export declare function gate1Prefilter(normalized: Normalized): StageResult<Normalized>;
4
+ //# sourceMappingURL=gate1-prefilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate1-prefilter.d.ts","sourceRoot":"","sources":["../../../../../core/src/pipeline/gate1-prefilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAcrD,wBAAgB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAiC9E"}
@@ -0,0 +1,35 @@
1
+ const DIGIT_REGEX = /\d/;
2
+ const CURRENCY_REGEX = /(₹|\$|€|£|\b(?:inr|usd|eur|gbp)\b|\b(?:inr|usd|eur|gbp)(?=\d)|\b[rR][sS]\.?\b)/i;
3
+ const MASKED_REGEX = /(X{2,}\d{2,}|\*{2,}\d{2,})/i;
4
+ const DIRECTION_REGEX = /\b(debited|credited|sent|received|paid|charged|refunded|reversed)\b/i;
5
+ const RAIL_REGEX = /\b(upi|imps|neft|sepa|ach|pix|faster)\b/i;
6
+ const FINANCIAL_KEYWORD_REGEX = /\b(txn|transaction|payment|autopay|mandate|e-mandate|card)\b/i;
7
+ export function gate1Prefilter(normalized) {
8
+ const text = normalized.cleaned;
9
+ const hasDigit = DIGIT_REGEX.test(text);
10
+ if (!hasDigit) {
11
+ return {
12
+ type: 'Rejected',
13
+ stage: 'Gate1',
14
+ reason: 'no digit found',
15
+ };
16
+ }
17
+ const hasCurrency = CURRENCY_REGEX.test(text);
18
+ const hasMasked = MASKED_REGEX.test(text);
19
+ const hasDirection = DIRECTION_REGEX.test(text);
20
+ const hasRail = RAIL_REGEX.test(text);
21
+ const hasFinancialKeyword = FINANCIAL_KEYWORD_REGEX.test(text);
22
+ const plausibleFinancial = hasCurrency || hasMasked || hasDirection || hasRail || hasFinancialKeyword;
23
+ if (!plausibleFinancial) {
24
+ return {
25
+ type: 'Rejected',
26
+ stage: 'Gate1',
27
+ reason: 'no financial markers',
28
+ };
29
+ }
30
+ return {
31
+ type: 'Continue',
32
+ data: normalized,
33
+ };
34
+ }
35
+ //# sourceMappingURL=gate1-prefilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate1-prefilter.js","sourceRoot":"","sources":["../../../../../core/src/pipeline/gate1-prefilter.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,MAAM,cAAc,GAAG,iFAAiF,CAAC;AAEzG,MAAM,YAAY,GAAG,6BAA6B,CAAC;AAEnD,MAAM,eAAe,GAAG,sEAAsE,CAAC;AAE/F,MAAM,UAAU,GAAG,0CAA0C,CAAC;AAE9D,MAAM,uBAAuB,GAAG,+DAA+D,CAAC;AAEhG,MAAM,UAAU,cAAc,CAAC,UAAsB;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;IAEhC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,gBAAgB;SACzB,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,kBAAkB,GACtB,WAAW,IAAI,SAAS,IAAI,YAAY,IAAI,OAAO,IAAI,mBAAmB,CAAC;IAE7E,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,sBAAsB;SAC/B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;KACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { GrammarMatched } from './grammar-engine.js';
2
+ import type { StageResult } from '../types.js';
3
+ export declare function gate2Structural(grammarMatched: GrammarMatched): StageResult<GrammarMatched>;
4
+ //# sourceMappingURL=gate2-structural.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate2-structural.d.ts","sourceRoot":"","sources":["../../../../../core/src/pipeline/gate2-structural.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,eAAe,CAC7B,cAAc,EAAE,cAAc,GAC7B,WAAW,CAAC,cAAc,CAAC,CAc7B"}
@@ -0,0 +1,14 @@
1
+ export function gate2Structural(grammarMatched) {
2
+ if (!grammarMatched.candidates.length) {
3
+ return {
4
+ type: 'Rejected',
5
+ stage: 'Gate2',
6
+ reason: 'no structural grammar match',
7
+ };
8
+ }
9
+ return {
10
+ type: 'Continue',
11
+ data: grammarMatched,
12
+ };
13
+ }
14
+ //# sourceMappingURL=gate2-structural.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate2-structural.js","sourceRoot":"","sources":["../../../../../core/src/pipeline/gate2-structural.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAC7B,cAA8B;IAG9B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,6BAA6B;SACtC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StageResult } from '../types.js';
2
+ import type { TraitEnriched } from './trait-extractor.js';
3
+ export declare function gate3Semantic(enriched: TraitEnriched): StageResult<TraitEnriched>;
4
+ //# sourceMappingURL=gate3-semantic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gate3-semantic.d.ts","sourceRoot":"","sources":["../../../../../core/src/pipeline/gate3-semantic.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,GACtB,WAAW,CAAC,aAAa,CAAC,CAqF5B"}