flowquery 1.0.46 → 1.0.48

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 (422) hide show
  1. package/dist/flowquery.min.js +1 -1
  2. package/dist/index.d.ts +0 -7
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +6 -4
  5. package/dist/index.js.map +1 -1
  6. package/dist/parsing/data_structures/list_comprehension.d.ts +56 -0
  7. package/dist/parsing/data_structures/list_comprehension.d.ts.map +1 -0
  8. package/dist/parsing/data_structures/list_comprehension.js +102 -0
  9. package/dist/parsing/data_structures/list_comprehension.js.map +1 -0
  10. package/dist/parsing/parser.d.ts +18 -0
  11. package/dist/parsing/parser.d.ts.map +1 -1
  12. package/dist/parsing/parser.js +92 -0
  13. package/dist/parsing/parser.js.map +1 -1
  14. package/package.json +4 -1
  15. package/.editorconfig +0 -21
  16. package/.gitattributes +0 -3
  17. package/.github/workflows/npm-publish.yml +0 -32
  18. package/.github/workflows/python-publish.yml +0 -143
  19. package/.github/workflows/release.yml +0 -107
  20. package/.husky/pre-commit +0 -28
  21. package/.prettierrc +0 -22
  22. package/CODE_OF_CONDUCT.md +0 -10
  23. package/FlowQueryLogoIcon.png +0 -0
  24. package/SECURITY.md +0 -14
  25. package/SUPPORT.md +0 -13
  26. package/docs/flowquery.min.js +0 -1
  27. package/docs/index.html +0 -105
  28. package/flowquery-py/CONTRIBUTING.md +0 -127
  29. package/flowquery-py/README.md +0 -67
  30. package/flowquery-py/misc/data/test.json +0 -10
  31. package/flowquery-py/misc/data/users.json +0 -242
  32. package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
  33. package/flowquery-py/pyproject.toml +0 -121
  34. package/flowquery-py/setup_env.ps1 +0 -92
  35. package/flowquery-py/setup_env.sh +0 -87
  36. package/flowquery-py/src/__init__.py +0 -38
  37. package/flowquery-py/src/__main__.py +0 -10
  38. package/flowquery-py/src/compute/__init__.py +0 -6
  39. package/flowquery-py/src/compute/flowquery.py +0 -68
  40. package/flowquery-py/src/compute/runner.py +0 -64
  41. package/flowquery-py/src/extensibility.py +0 -52
  42. package/flowquery-py/src/graph/__init__.py +0 -31
  43. package/flowquery-py/src/graph/data.py +0 -136
  44. package/flowquery-py/src/graph/database.py +0 -141
  45. package/flowquery-py/src/graph/hops.py +0 -43
  46. package/flowquery-py/src/graph/node.py +0 -143
  47. package/flowquery-py/src/graph/node_data.py +0 -26
  48. package/flowquery-py/src/graph/node_reference.py +0 -50
  49. package/flowquery-py/src/graph/pattern.py +0 -115
  50. package/flowquery-py/src/graph/pattern_expression.py +0 -67
  51. package/flowquery-py/src/graph/patterns.py +0 -42
  52. package/flowquery-py/src/graph/physical_node.py +0 -41
  53. package/flowquery-py/src/graph/physical_relationship.py +0 -36
  54. package/flowquery-py/src/graph/relationship.py +0 -193
  55. package/flowquery-py/src/graph/relationship_data.py +0 -36
  56. package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
  57. package/flowquery-py/src/graph/relationship_reference.py +0 -21
  58. package/flowquery-py/src/io/__init__.py +0 -5
  59. package/flowquery-py/src/io/command_line.py +0 -108
  60. package/flowquery-py/src/parsing/__init__.py +0 -17
  61. package/flowquery-py/src/parsing/alias.py +0 -20
  62. package/flowquery-py/src/parsing/alias_option.py +0 -11
  63. package/flowquery-py/src/parsing/ast_node.py +0 -147
  64. package/flowquery-py/src/parsing/base_parser.py +0 -84
  65. package/flowquery-py/src/parsing/components/__init__.py +0 -19
  66. package/flowquery-py/src/parsing/components/csv.py +0 -8
  67. package/flowquery-py/src/parsing/components/from_.py +0 -12
  68. package/flowquery-py/src/parsing/components/headers.py +0 -12
  69. package/flowquery-py/src/parsing/components/json.py +0 -8
  70. package/flowquery-py/src/parsing/components/null.py +0 -10
  71. package/flowquery-py/src/parsing/components/post.py +0 -8
  72. package/flowquery-py/src/parsing/components/text.py +0 -8
  73. package/flowquery-py/src/parsing/context.py +0 -50
  74. package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
  75. package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
  76. package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
  77. package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
  78. package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
  79. package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
  80. package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
  81. package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
  82. package/flowquery-py/src/parsing/expressions/expression.py +0 -141
  83. package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
  84. package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
  85. package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
  86. package/flowquery-py/src/parsing/expressions/number.py +0 -32
  87. package/flowquery-py/src/parsing/expressions/operator.py +0 -271
  88. package/flowquery-py/src/parsing/expressions/reference.py +0 -47
  89. package/flowquery-py/src/parsing/expressions/string.py +0 -27
  90. package/flowquery-py/src/parsing/functions/__init__.py +0 -127
  91. package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
  92. package/flowquery-py/src/parsing/functions/async_function.py +0 -65
  93. package/flowquery-py/src/parsing/functions/avg.py +0 -55
  94. package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
  95. package/flowquery-py/src/parsing/functions/collect.py +0 -75
  96. package/flowquery-py/src/parsing/functions/count.py +0 -79
  97. package/flowquery-py/src/parsing/functions/date_.py +0 -61
  98. package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
  99. package/flowquery-py/src/parsing/functions/duration.py +0 -159
  100. package/flowquery-py/src/parsing/functions/element_id.py +0 -50
  101. package/flowquery-py/src/parsing/functions/function.py +0 -68
  102. package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
  103. package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
  104. package/flowquery-py/src/parsing/functions/functions.py +0 -67
  105. package/flowquery-py/src/parsing/functions/head.py +0 -39
  106. package/flowquery-py/src/parsing/functions/id_.py +0 -49
  107. package/flowquery-py/src/parsing/functions/join.py +0 -49
  108. package/flowquery-py/src/parsing/functions/keys.py +0 -34
  109. package/flowquery-py/src/parsing/functions/last.py +0 -39
  110. package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
  111. package/flowquery-py/src/parsing/functions/localtime.py +0 -57
  112. package/flowquery-py/src/parsing/functions/max_.py +0 -49
  113. package/flowquery-py/src/parsing/functions/min_.py +0 -49
  114. package/flowquery-py/src/parsing/functions/nodes.py +0 -48
  115. package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
  116. package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
  117. package/flowquery-py/src/parsing/functions/properties.py +0 -50
  118. package/flowquery-py/src/parsing/functions/rand.py +0 -28
  119. package/flowquery-py/src/parsing/functions/range_.py +0 -41
  120. package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
  121. package/flowquery-py/src/parsing/functions/relationships.py +0 -46
  122. package/flowquery-py/src/parsing/functions/replace.py +0 -39
  123. package/flowquery-py/src/parsing/functions/round_.py +0 -34
  124. package/flowquery-py/src/parsing/functions/schema.py +0 -40
  125. package/flowquery-py/src/parsing/functions/size.py +0 -34
  126. package/flowquery-py/src/parsing/functions/split.py +0 -54
  127. package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
  128. package/flowquery-py/src/parsing/functions/stringify.py +0 -49
  129. package/flowquery-py/src/parsing/functions/substring.py +0 -76
  130. package/flowquery-py/src/parsing/functions/sum.py +0 -51
  131. package/flowquery-py/src/parsing/functions/tail.py +0 -37
  132. package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
  133. package/flowquery-py/src/parsing/functions/time_.py +0 -57
  134. package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
  135. package/flowquery-py/src/parsing/functions/to_float.py +0 -46
  136. package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
  137. package/flowquery-py/src/parsing/functions/to_json.py +0 -35
  138. package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
  139. package/flowquery-py/src/parsing/functions/to_string.py +0 -41
  140. package/flowquery-py/src/parsing/functions/trim.py +0 -37
  141. package/flowquery-py/src/parsing/functions/type_.py +0 -47
  142. package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
  143. package/flowquery-py/src/parsing/logic/__init__.py +0 -15
  144. package/flowquery-py/src/parsing/logic/case.py +0 -28
  145. package/flowquery-py/src/parsing/logic/else_.py +0 -12
  146. package/flowquery-py/src/parsing/logic/end.py +0 -8
  147. package/flowquery-py/src/parsing/logic/then.py +0 -12
  148. package/flowquery-py/src/parsing/logic/when.py +0 -12
  149. package/flowquery-py/src/parsing/operations/__init__.py +0 -46
  150. package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
  151. package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
  152. package/flowquery-py/src/parsing/operations/call.py +0 -73
  153. package/flowquery-py/src/parsing/operations/create_node.py +0 -35
  154. package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
  155. package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
  156. package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
  157. package/flowquery-py/src/parsing/operations/group_by.py +0 -148
  158. package/flowquery-py/src/parsing/operations/limit.py +0 -33
  159. package/flowquery-py/src/parsing/operations/load.py +0 -148
  160. package/flowquery-py/src/parsing/operations/match.py +0 -52
  161. package/flowquery-py/src/parsing/operations/operation.py +0 -69
  162. package/flowquery-py/src/parsing/operations/order_by.py +0 -114
  163. package/flowquery-py/src/parsing/operations/projection.py +0 -21
  164. package/flowquery-py/src/parsing/operations/return_op.py +0 -88
  165. package/flowquery-py/src/parsing/operations/union.py +0 -115
  166. package/flowquery-py/src/parsing/operations/union_all.py +0 -17
  167. package/flowquery-py/src/parsing/operations/unwind.py +0 -42
  168. package/flowquery-py/src/parsing/operations/where.py +0 -43
  169. package/flowquery-py/src/parsing/operations/with_op.py +0 -18
  170. package/flowquery-py/src/parsing/parser.py +0 -1384
  171. package/flowquery-py/src/parsing/parser_state.py +0 -26
  172. package/flowquery-py/src/parsing/token_to_node.py +0 -109
  173. package/flowquery-py/src/tokenization/__init__.py +0 -23
  174. package/flowquery-py/src/tokenization/keyword.py +0 -54
  175. package/flowquery-py/src/tokenization/operator.py +0 -29
  176. package/flowquery-py/src/tokenization/string_walker.py +0 -158
  177. package/flowquery-py/src/tokenization/symbol.py +0 -19
  178. package/flowquery-py/src/tokenization/token.py +0 -693
  179. package/flowquery-py/src/tokenization/token_mapper.py +0 -53
  180. package/flowquery-py/src/tokenization/token_type.py +0 -21
  181. package/flowquery-py/src/tokenization/tokenizer.py +0 -214
  182. package/flowquery-py/src/tokenization/trie.py +0 -125
  183. package/flowquery-py/src/utils/__init__.py +0 -6
  184. package/flowquery-py/src/utils/object_utils.py +0 -20
  185. package/flowquery-py/src/utils/string_utils.py +0 -113
  186. package/flowquery-py/tests/__init__.py +0 -1
  187. package/flowquery-py/tests/compute/__init__.py +0 -1
  188. package/flowquery-py/tests/compute/test_runner.py +0 -4902
  189. package/flowquery-py/tests/graph/__init__.py +0 -1
  190. package/flowquery-py/tests/graph/test_create.py +0 -56
  191. package/flowquery-py/tests/graph/test_data.py +0 -73
  192. package/flowquery-py/tests/graph/test_match.py +0 -40
  193. package/flowquery-py/tests/parsing/__init__.py +0 -1
  194. package/flowquery-py/tests/parsing/test_context.py +0 -34
  195. package/flowquery-py/tests/parsing/test_expression.py +0 -248
  196. package/flowquery-py/tests/parsing/test_parser.py +0 -1237
  197. package/flowquery-py/tests/test_extensibility.py +0 -611
  198. package/flowquery-py/tests/tokenization/__init__.py +0 -1
  199. package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
  200. package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
  201. package/flowquery-py/tests/tokenization/test_trie.py +0 -30
  202. package/flowquery-vscode/.vscode-test.mjs +0 -5
  203. package/flowquery-vscode/.vscodeignore +0 -13
  204. package/flowquery-vscode/LICENSE +0 -21
  205. package/flowquery-vscode/README.md +0 -11
  206. package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
  207. package/flowquery-vscode/eslint.config.mjs +0 -25
  208. package/flowquery-vscode/extension.js +0 -508
  209. package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
  210. package/flowquery-vscode/flowquery-worker.js +0 -66
  211. package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
  212. package/flowquery-vscode/jsconfig.json +0 -13
  213. package/flowquery-vscode/libs/page.css +0 -53
  214. package/flowquery-vscode/libs/table.css +0 -13
  215. package/flowquery-vscode/libs/tabs.css +0 -66
  216. package/flowquery-vscode/package-lock.json +0 -2917
  217. package/flowquery-vscode/package.json +0 -51
  218. package/flowquery-vscode/test/extension.test.js +0 -196
  219. package/flowquery-vscode/test/worker.test.js +0 -25
  220. package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
  221. package/jest.config.js +0 -14
  222. package/misc/apps/RAG/README.md +0 -29
  223. package/misc/apps/RAG/data/chats.json +0 -302
  224. package/misc/apps/RAG/data/emails.json +0 -182
  225. package/misc/apps/RAG/data/events.json +0 -226
  226. package/misc/apps/RAG/data/files.json +0 -172
  227. package/misc/apps/RAG/data/users.json +0 -158
  228. package/misc/apps/RAG/jest.config.js +0 -21
  229. package/misc/apps/RAG/package.json +0 -48
  230. package/misc/apps/RAG/public/index.html +0 -18
  231. package/misc/apps/RAG/src/App.css +0 -42
  232. package/misc/apps/RAG/src/App.tsx +0 -50
  233. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
  234. package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
  235. package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
  236. package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
  237. package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
  238. package/misc/apps/RAG/src/components/ChatInput.css +0 -23
  239. package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
  240. package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
  241. package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
  242. package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
  243. package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
  244. package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
  245. package/misc/apps/RAG/src/components/index.ts +0 -28
  246. package/misc/apps/RAG/src/graph/index.ts +0 -19
  247. package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
  248. package/misc/apps/RAG/src/index.tsx +0 -29
  249. package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
  250. package/misc/apps/RAG/src/prompts/index.ts +0 -10
  251. package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
  252. package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
  253. package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
  254. package/misc/apps/RAG/src/utils/Llm.ts +0 -248
  255. package/misc/apps/RAG/src/utils/index.ts +0 -12
  256. package/misc/apps/RAG/tsconfig.json +0 -22
  257. package/misc/apps/RAG/webpack.config.js +0 -43
  258. package/misc/apps/README.md +0 -1
  259. package/misc/queries/analyze_catfacts.cql +0 -75
  260. package/misc/queries/azure_openai_completions.cql +0 -13
  261. package/misc/queries/azure_openai_models.cql +0 -9
  262. package/misc/queries/mock_pipeline.cql +0 -84
  263. package/misc/queries/openai_completions.cql +0 -15
  264. package/misc/queries/openai_models.cql +0 -13
  265. package/misc/queries/test.cql +0 -6
  266. package/misc/queries/tool_inference.cql +0 -24
  267. package/misc/queries/wisdom.cql +0 -6
  268. package/misc/queries/wisdom_letter_histogram.cql +0 -8
  269. package/src/compute/flowquery.ts +0 -46
  270. package/src/compute/runner.ts +0 -66
  271. package/src/extensibility.ts +0 -45
  272. package/src/graph/data.ts +0 -130
  273. package/src/graph/database.ts +0 -143
  274. package/src/graph/hops.ts +0 -22
  275. package/src/graph/node.ts +0 -122
  276. package/src/graph/node_data.ts +0 -18
  277. package/src/graph/node_reference.ts +0 -38
  278. package/src/graph/pattern.ts +0 -110
  279. package/src/graph/pattern_expression.ts +0 -48
  280. package/src/graph/patterns.ts +0 -36
  281. package/src/graph/physical_node.ts +0 -23
  282. package/src/graph/physical_relationship.ts +0 -23
  283. package/src/graph/relationship.ts +0 -167
  284. package/src/graph/relationship_data.ts +0 -31
  285. package/src/graph/relationship_match_collector.ts +0 -64
  286. package/src/graph/relationship_reference.ts +0 -25
  287. package/src/index.browser.ts +0 -46
  288. package/src/index.node.ts +0 -55
  289. package/src/index.ts +0 -12
  290. package/src/io/command_line.ts +0 -74
  291. package/src/parsing/alias.ts +0 -23
  292. package/src/parsing/alias_option.ts +0 -5
  293. package/src/parsing/ast_node.ts +0 -153
  294. package/src/parsing/base_parser.ts +0 -98
  295. package/src/parsing/components/csv.ts +0 -9
  296. package/src/parsing/components/from.ts +0 -12
  297. package/src/parsing/components/headers.ts +0 -12
  298. package/src/parsing/components/json.ts +0 -9
  299. package/src/parsing/components/null.ts +0 -9
  300. package/src/parsing/components/post.ts +0 -9
  301. package/src/parsing/components/text.ts +0 -9
  302. package/src/parsing/context.ts +0 -54
  303. package/src/parsing/data_structures/associative_array.ts +0 -43
  304. package/src/parsing/data_structures/json_array.ts +0 -31
  305. package/src/parsing/data_structures/key_value_pair.ts +0 -37
  306. package/src/parsing/data_structures/lookup.ts +0 -44
  307. package/src/parsing/data_structures/range_lookup.ts +0 -36
  308. package/src/parsing/expressions/boolean.ts +0 -21
  309. package/src/parsing/expressions/expression.ts +0 -150
  310. package/src/parsing/expressions/expression_map.ts +0 -22
  311. package/src/parsing/expressions/f_string.ts +0 -26
  312. package/src/parsing/expressions/identifier.ts +0 -22
  313. package/src/parsing/expressions/number.ts +0 -40
  314. package/src/parsing/expressions/operator.ts +0 -354
  315. package/src/parsing/expressions/reference.ts +0 -45
  316. package/src/parsing/expressions/string.ts +0 -34
  317. package/src/parsing/functions/aggregate_function.ts +0 -58
  318. package/src/parsing/functions/async_function.ts +0 -64
  319. package/src/parsing/functions/avg.ts +0 -47
  320. package/src/parsing/functions/coalesce.ts +0 -49
  321. package/src/parsing/functions/collect.ts +0 -54
  322. package/src/parsing/functions/count.ts +0 -54
  323. package/src/parsing/functions/date.ts +0 -63
  324. package/src/parsing/functions/datetime.ts +0 -63
  325. package/src/parsing/functions/duration.ts +0 -143
  326. package/src/parsing/functions/element_id.ts +0 -51
  327. package/src/parsing/functions/function.ts +0 -60
  328. package/src/parsing/functions/function_factory.ts +0 -195
  329. package/src/parsing/functions/function_metadata.ts +0 -217
  330. package/src/parsing/functions/functions.ts +0 -70
  331. package/src/parsing/functions/head.ts +0 -42
  332. package/src/parsing/functions/id.ts +0 -51
  333. package/src/parsing/functions/join.ts +0 -40
  334. package/src/parsing/functions/keys.ts +0 -29
  335. package/src/parsing/functions/last.ts +0 -42
  336. package/src/parsing/functions/localdatetime.ts +0 -63
  337. package/src/parsing/functions/localtime.ts +0 -58
  338. package/src/parsing/functions/max.ts +0 -37
  339. package/src/parsing/functions/min.ts +0 -37
  340. package/src/parsing/functions/nodes.ts +0 -54
  341. package/src/parsing/functions/predicate_function.ts +0 -48
  342. package/src/parsing/functions/predicate_sum.ts +0 -47
  343. package/src/parsing/functions/properties.ts +0 -56
  344. package/src/parsing/functions/rand.ts +0 -21
  345. package/src/parsing/functions/range.ts +0 -37
  346. package/src/parsing/functions/reducer_element.ts +0 -10
  347. package/src/parsing/functions/relationships.ts +0 -52
  348. package/src/parsing/functions/replace.ts +0 -38
  349. package/src/parsing/functions/round.ts +0 -28
  350. package/src/parsing/functions/schema.ts +0 -39
  351. package/src/parsing/functions/size.ts +0 -28
  352. package/src/parsing/functions/split.ts +0 -45
  353. package/src/parsing/functions/string_distance.ts +0 -83
  354. package/src/parsing/functions/stringify.ts +0 -37
  355. package/src/parsing/functions/substring.ts +0 -68
  356. package/src/parsing/functions/sum.ts +0 -41
  357. package/src/parsing/functions/tail.ts +0 -39
  358. package/src/parsing/functions/temporal_utils.ts +0 -180
  359. package/src/parsing/functions/time.ts +0 -58
  360. package/src/parsing/functions/timestamp.ts +0 -37
  361. package/src/parsing/functions/to_float.ts +0 -50
  362. package/src/parsing/functions/to_integer.ts +0 -50
  363. package/src/parsing/functions/to_json.ts +0 -28
  364. package/src/parsing/functions/to_lower.ts +0 -28
  365. package/src/parsing/functions/to_string.ts +0 -32
  366. package/src/parsing/functions/trim.ts +0 -28
  367. package/src/parsing/functions/type.ts +0 -39
  368. package/src/parsing/functions/value_holder.ts +0 -13
  369. package/src/parsing/logic/case.ts +0 -26
  370. package/src/parsing/logic/else.ts +0 -12
  371. package/src/parsing/logic/end.ts +0 -9
  372. package/src/parsing/logic/then.ts +0 -12
  373. package/src/parsing/logic/when.ts +0 -12
  374. package/src/parsing/operations/aggregated_return.ts +0 -22
  375. package/src/parsing/operations/aggregated_with.ts +0 -18
  376. package/src/parsing/operations/call.ts +0 -69
  377. package/src/parsing/operations/create_node.ts +0 -39
  378. package/src/parsing/operations/create_relationship.ts +0 -38
  379. package/src/parsing/operations/delete_node.ts +0 -33
  380. package/src/parsing/operations/delete_relationship.ts +0 -32
  381. package/src/parsing/operations/group_by.ts +0 -137
  382. package/src/parsing/operations/limit.ts +0 -31
  383. package/src/parsing/operations/load.ts +0 -146
  384. package/src/parsing/operations/match.ts +0 -54
  385. package/src/parsing/operations/operation.ts +0 -69
  386. package/src/parsing/operations/order_by.ts +0 -126
  387. package/src/parsing/operations/projection.ts +0 -18
  388. package/src/parsing/operations/return.ts +0 -76
  389. package/src/parsing/operations/union.ts +0 -114
  390. package/src/parsing/operations/union_all.ts +0 -16
  391. package/src/parsing/operations/unwind.ts +0 -36
  392. package/src/parsing/operations/where.ts +0 -42
  393. package/src/parsing/operations/with.ts +0 -20
  394. package/src/parsing/parser.ts +0 -1641
  395. package/src/parsing/parser_state.ts +0 -25
  396. package/src/parsing/token_to_node.ts +0 -114
  397. package/src/tokenization/keyword.ts +0 -50
  398. package/src/tokenization/operator.ts +0 -25
  399. package/src/tokenization/string_walker.ts +0 -197
  400. package/src/tokenization/symbol.ts +0 -15
  401. package/src/tokenization/token.ts +0 -764
  402. package/src/tokenization/token_mapper.ts +0 -53
  403. package/src/tokenization/token_type.ts +0 -16
  404. package/src/tokenization/tokenizer.ts +0 -250
  405. package/src/tokenization/trie.ts +0 -117
  406. package/src/utils/object_utils.ts +0 -17
  407. package/src/utils/string_utils.ts +0 -114
  408. package/tests/compute/runner.test.ts +0 -4559
  409. package/tests/extensibility.test.ts +0 -643
  410. package/tests/graph/create.test.ts +0 -36
  411. package/tests/graph/data.test.ts +0 -58
  412. package/tests/graph/match.test.ts +0 -29
  413. package/tests/parsing/context.test.ts +0 -27
  414. package/tests/parsing/expression.test.ts +0 -303
  415. package/tests/parsing/parser.test.ts +0 -1327
  416. package/tests/tokenization/token_mapper.test.ts +0 -47
  417. package/tests/tokenization/tokenizer.test.ts +0 -191
  418. package/tests/tokenization/trie.test.ts +0 -20
  419. package/tsconfig.json +0 -19
  420. package/typedoc.json +0 -16
  421. package/vscode-settings.json.recommended +0 -16
  422. package/webpack.config.js +0 -26
@@ -1,51 +0,0 @@
1
- {
2
- "name": "flowquery-vscode",
3
- "displayName": "FlowQuery-VSCode",
4
- "icon": "images/FlowQueryLogoIcon.png",
5
- "description": "FlowQuery - A declarative query language for data processing pipelines.",
6
- "version": "0.0.1",
7
- "publisher": "FlowQuery",
8
- "license": "MIT",
9
- "repository": {
10
- "type": "git",
11
- "url": "https://github.com/microsoft/FlowQuery"
12
- },
13
- "engines": {
14
- "vscode": "^1.104.0"
15
- },
16
- "categories": [
17
- "Other"
18
- ],
19
- "activationEvents": [
20
- "onCommand:extension.runFlowQueryStatement"
21
- ],
22
- "main": "./extension.js",
23
- "contributes": {
24
- "commands": [
25
- {
26
- "command": "extension.runFlowQueryStatement",
27
- "title": "Run FlowQuery statement"
28
- }
29
- ],
30
- "keybindings": [
31
- {
32
- "command": "extension.runFlowQueryStatement",
33
- "key": "shift+enter",
34
- "when": "editorTextFocus && resourceExtname == .cql"
35
- }
36
- ]
37
- },
38
- "scripts": {
39
- "lint": "eslint .",
40
- "pretest": "npm run lint",
41
- "test": "vscode-test"
42
- },
43
- "devDependencies": {
44
- "@types/vscode": "^1.104.0",
45
- "@types/mocha": "^10.0.10",
46
- "@types/node": "22.x",
47
- "eslint": "^9.34.0",
48
- "@vscode/test-cli": "^0.0.11",
49
- "@vscode/test-electron": "^2.5.2"
50
- }
51
- }
@@ -1,196 +0,0 @@
1
- const assert = require('assert');
2
- const vscode = require('vscode');
3
-
4
- suite('Extension Test Suite', () => {
5
- vscode.window.showInformationMessage('Start all tests.');
6
-
7
- test('command is registered', async () => {
8
- // Explicitly activate the extension under test before checking registered commands.
9
- let ext = vscode.extensions.getExtension('Microsoft.flowquery-vscode');
10
- if (!ext) {
11
- ext = vscode.extensions.all.find(e => e.packageJSON && e.packageJSON.name === 'flowquery-vscode');
12
- }
13
- if (!ext) {
14
- assert.fail('Extension under test not found in extension host');
15
- }
16
- await ext.activate();
17
-
18
- const commands = await vscode.commands.getCommands(true);
19
- assert.ok(commands.includes('extension.runFlowQueryStatement'), 'extension.runFlowQueryStatement should be registered');
20
- });
21
-
22
- test('runFlowQueryStatement produces expected output', async function() {
23
- this.timeout(5000);
24
-
25
- // Activate the extension and arrange multiple capture strategies (appendLine + information messages)
26
- const outputs = [];
27
- const messages = [];
28
- const origShowInformationMessage = vscode.window.showInformationMessage;
29
- vscode.window.showInformationMessage = function(msg) { messages.push(msg); return origShowInformationMessage.call(vscode.window, msg); };
30
-
31
- // Stub createWebviewPanel so we can capture webview.html being set by the extension
32
- const origCreateWebviewPanel = vscode.window.createWebviewPanel;
33
- let capturedHtml = null;
34
- vscode.window.createWebviewPanel = /** @type {any} */ (function() {
35
- const webview = {};
36
- Object.defineProperty(webview, 'html', {
37
- set: function(html) { capturedHtml = html; },
38
- get: function() { return capturedHtml; }
39
- });
40
- webview.onDidReceiveMessage = function() { return { dispose: function() {} }; };
41
- return /** @type {any} */ ({ webview });
42
- });
43
-
44
- let ext = vscode.extensions.getExtension('Microsoft.flowquery-vscode');
45
- if (!ext) {
46
- ext = vscode.extensions.all.find(e => e.packageJSON && e.packageJSON.name === 'flowquery-vscode');
47
- }
48
- if (!ext) {
49
- assert.fail('Extension under test not found in extension host');
50
- }
51
- await ext.activate();
52
-
53
- let channel, origAppendLine;
54
- if (ext.exports && ext.exports._outputChannel) {
55
- channel = ext.exports._outputChannel;
56
- origAppendLine = channel.appendLine.bind(channel);
57
- channel.appendLine = (text) => { outputs.push(text); return origAppendLine(text); };
58
- }
59
-
60
- try {
61
- const doc = await vscode.workspace.openTextDocument({ content: 'return "hello from test"' });
62
- await vscode.window.showTextDocument(doc);
63
- await vscode.commands.executeCommand('extension.runFlowQueryStatement');
64
-
65
- // The command should execute without throwing. Ensure the extension exposes the output channel
66
- // so callers/tests can instrument or observe output if desired.
67
- // assert.ok(ext.exports && ext.exports._outputChannel, 'Expected extension to expose _outputChannel for instrumentation');
68
-
69
- // Ensure the command executed without throwing
70
- assert.ok(true, 'Command executed without throwing');
71
- } finally {
72
- // Restore original appendLine implementation on the wrapped output channel, if used
73
- if (typeof channel !== 'undefined' && typeof origAppendLine !== 'undefined') {
74
- channel.appendLine = origAppendLine;
75
- }
76
- // Restore original showInformationMessage implementation
77
- vscode.window.showInformationMessage = origShowInformationMessage;
78
- // Restore original createWebviewPanel implementation
79
- vscode.window.createWebviewPanel = origCreateWebviewPanel;
80
- }
81
- });
82
-
83
- test('cancellation terminates worker and logs cancellation', async function() {
84
- this.timeout(8000);
85
-
86
- // Activate extension
87
- let ext = vscode.extensions.getExtension('Microsoft.flowquery-vscode');
88
- if (!ext) {
89
- ext = vscode.extensions.all.find(e => e.packageJSON && e.packageJSON.name === 'flowquery-vscode');
90
- }
91
- if (!ext) {
92
- assert.fail('Extension under test not found in extension host');
93
- }
94
- await ext.activate();
95
-
96
- const outputs = [];
97
- let channel, origAppendLine;
98
- if (ext.exports && ext.exports._outputChannel) {
99
- channel = ext.exports._outputChannel;
100
- origAppendLine = channel.appendLine.bind(channel);
101
- channel.appendLine = (text) => { outputs.push(text); return origAppendLine(text); };
102
- }
103
-
104
- try {
105
- const doc = await vscode.workspace.openTextDocument({ content: '__TEST_SLEEP__:3000' });
106
- await vscode.window.showTextDocument(doc);
107
-
108
- // Start the query but don't await its completion so we can cancel it
109
- const execPromise = vscode.commands.executeCommand('extension.runFlowQueryStatement');
110
-
111
- // Wait for the extension to expose the running worker/process so we can reliably cancel it
112
- const start2 = Date.now();
113
- while (Date.now() - start2 < 2000) {
114
- if (ext.exports && ext.exports._lastWorker) break;
115
- await new Promise(r => setTimeout(r, 50));
116
- }
117
-
118
- // Programmatically cancel the running worker via exported test helper
119
- if (ext.exports && typeof ext.exports._cancelCurrentlyRunningQuery === 'function') {
120
- ext.exports._cancelCurrentlyRunningQuery();
121
- } else {
122
- // If helper isn't available, try an alternate test command (no-op if not present)
123
- try { await vscode.commands.executeCommand('extension._testCancelQuery'); } catch {}
124
- }
125
-
126
- // Wait up to 4s for the extension to append a cancellation message
127
- const start = Date.now();
128
- while (Date.now() - start < 4000) {
129
- if (outputs.some(s => /cancel/i.test(s))) break;
130
- await new Promise(r => setTimeout(r, 100));
131
- }
132
-
133
- // Wait for the extension to clear the lastWorker reference after cancellation
134
- const waitClearStart = Date.now();
135
- while (Date.now() - waitClearStart < 4000) {
136
- if (!(ext.exports && ext.exports._lastWorker)) break;
137
- await new Promise(r => setTimeout(r, 50));
138
- }
139
- assert.ok(!(ext.exports && ext.exports._lastWorker), `Expected lastWorker to be cleared after cancellation. lastWorker: ${ext.exports && ext.exports._lastWorker}`);
140
- // If outputs were captured, ensure the extension did not append a JSON result after cancellation
141
- if (outputs.length > 0) {
142
- const jsonCandidate = outputs.find(s => s.trim().startsWith('[') || s.trim().startsWith('{'));
143
- assert.ok(!jsonCandidate, `Expected no JSON result after cancellation but found: ${jsonCandidate}`);
144
- }
145
-
146
- // Ensure the command finishes before exiting the test
147
- try { await execPromise; } catch { /* ignore errors from cancelled execution */ }
148
- } finally {
149
- if (typeof channel !== 'undefined' && typeof origAppendLine !== 'undefined') {
150
- channel.appendLine = origAppendLine;
151
- }
152
- }
153
- });
154
-
155
- test('env file substitutions are applied', async function() {
156
- this.timeout(2000);
157
-
158
- const os = require('os');
159
- const fs = require('fs');
160
- const path = require('path');
161
-
162
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'flowquery-env-'));
163
- try {
164
- fs.writeFileSync(path.join(tmpDir, '.env'), 'GREETING=world\nFOO="bar baz"\n', 'utf8');
165
- const docPath = path.join(tmpDir, 'query.fq');
166
- const docText = 'return $GREETING; return "$FOO"';
167
- fs.writeFileSync(docPath, docText, 'utf8');
168
-
169
- let ext = vscode.extensions.getExtension('Microsoft.flowquery-vscode');
170
- if (!ext) {
171
- ext = vscode.extensions.all.find(e => e.packageJSON && e.packageJSON.name === 'flowquery-vscode');
172
- }
173
- if (!ext) {
174
- assert.fail('Extension under test not found in extension host');
175
- }
176
- await ext.activate();
177
-
178
- // Require the extension module directly so we can call the helper synchronously
179
- const extModule = require(path.join(__dirname, '..', 'extension.js'));
180
- const substituted = typeof extModule._applyEnvSubstitutions === 'function'
181
- ? extModule._applyEnvSubstitutions(docText, docPath)
182
- : docText;
183
-
184
- // For debugging in CI logs, show the substituted value briefly
185
- console.log('SUBSTITUTED:', substituted);
186
-
187
- // Validate substitutions were applied
188
- assert.ok(substituted.includes('world'), `Expected substituted string to include 'world' but got: ${substituted}`);
189
- assert.ok(substituted.includes('bar baz'), `Expected substituted string to include 'bar baz' but got: ${substituted}`);
190
- } finally {
191
- try { fs.unlinkSync(path.join(tmpDir, '.env')); } catch {}
192
- try { fs.unlinkSync(path.join(tmpDir, 'query.fq')); } catch {}
193
- try { fs.rmdirSync(tmpDir); } catch {}
194
- }
195
- });
196
- });
@@ -1,25 +0,0 @@
1
- const assert = require('assert');
2
- const cp = require('child_process');
3
- const path = require('path');
4
-
5
- suite('Worker Test Suite', () => {
6
- test('worker responds to TEST_SLEEP payload', async function() {
7
- this.timeout(5000);
8
- const workerPath = path.join(__dirname, '..', 'flowquery-worker.js');
9
- const proc = cp.fork(workerPath);
10
- const result = await new Promise((resolve, reject) => {
11
- proc.on('message', (msg) => {
12
- const m = /** @type {any} */ (msg);
13
- if (m && m.type === 'results') resolve(m.results);
14
- else if (m && m.type === 'error') reject(new Error(m.message || 'unknown'));
15
- });
16
- proc.on('error', reject);
17
- proc.on('exit', (code) => { if (code !== 0) reject(new Error('exit ' + code)); });
18
- proc.send('__TEST_SLEEP__:50');
19
- });
20
-
21
- assert.ok(Array.isArray(result));
22
- assert.ok(result[0] && result[0].expr0 && result[0].expr0.indexOf('slept') === 0);
23
- });
24
-
25
- });
@@ -1,42 +0,0 @@
1
- # Welcome to your VS Code Extension
2
-
3
- ## What's in the folder
4
-
5
- * This folder contains all of the files necessary for your extension.
6
- * `package.json` - this is the manifest file in which you declare your extension and command.
7
- * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin.
8
- * `extension.js` - this is the main file where you will provide the implementation of your command.
9
- * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`.
10
- * We pass the function containing the implementation of the command as the second parameter to `registerCommand`.
11
-
12
- ## Get up and running straight away
13
-
14
- * Press `F5` to open a new window with your extension loaded.
15
- * Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`.
16
- * Set breakpoints in your code inside `extension.js` to debug your extension.
17
- * Find output from your extension in the debug console.
18
-
19
- ## Make changes
20
-
21
- * You can relaunch the extension from the debug toolbar after changing code in `extension.js`.
22
- * You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes.
23
-
24
- ## Explore the API
25
-
26
- * You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`.
27
-
28
- ## Run tests
29
-
30
- * Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner)
31
- * Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A`
32
- * See the output of the test result in the Test Results view.
33
- * Make changes to `test/extension.test.js` or create new test files inside the `test` folder.
34
- * The provided test runner will only consider files matching the name pattern `**.test.js`.
35
- * You can create folders inside the `test` folder to structure your tests any way you want.
36
-
37
- ## Go further
38
-
39
- * [Follow UX guidelines](https://code.visualstudio.com/api/ux-guidelines/overview) to create extensions that seamlessly integrate with VS Code's native interface and patterns.
40
- * [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace.
41
- * Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration).
42
- * Integrate to the [report issue](https://code.visualstudio.com/api/get-started/wrapping-up#issue-reporting) flow to get issue and feature requests reported by users.
package/jest.config.js DELETED
@@ -1,14 +0,0 @@
1
- /** @type {import('ts-jest').JestConfigWithTsJest} **/
2
- module.exports = {
3
- testEnvironment: "node",
4
- transform: {
5
- "^.+.tsx?$": ["ts-jest", {}],
6
- },
7
- testPathIgnorePatterns: [
8
- "/node_modules/",
9
- "/flowquery-py/",
10
- "/flowquery-vscode/",
11
- "/docs/",
12
- "/misc/",
13
- ],
14
- };
@@ -1,29 +0,0 @@
1
- # RAG FlowQuery App
2
-
3
- A RAG (Retrieval Augmented Generation) loop based on [FlowQuery](https://www.npmjs.com/package/flowquery).
4
-
5
- ## Prerequisites
6
-
7
- - Node.js 18+
8
- - npm
9
-
10
- ## Getting Started
11
-
12
- ```bash
13
- # Install dependencies
14
- npm install
15
- ```
16
-
17
- ## Available Scripts
18
-
19
- | Script | Description |
20
- |--------|-------------|
21
- | `npm run dev` | Run directly with ts-node (for development) |
22
- | `npm run build` | Compile TypeScript to `dist/` |
23
- | `npm start` | Run the compiled JavaScript |
24
- | `npm run build:bundle` | Create a webpack bundle |
25
- | `npm run watch` | Watch mode for TypeScript compilation |
26
-
27
- ## License
28
-
29
- MIT
@@ -1,302 +0,0 @@
1
- [
2
- {
3
- "id": "ch-001",
4
- "topic": "Project Aurora",
5
- "type": "channel",
6
- "teamName": "Product & Engineering",
7
- "members": ["u-002", "u-003", "u-005", "u-006", "u-007", "u-008", "u-009"],
8
- "messages": [
9
- {
10
- "id": "msg-001",
11
- "from": "u-008",
12
- "timestamp": "2026-01-10T09:15:00Z",
13
- "body": "Hey team! Mia just shared the Aurora mockups. They look amazing. Let's review before the design meeting Tuesday.",
14
- "reactions": [{ "type": "thumbsUp", "users": ["u-005", "u-009"] }],
15
- "mentions": ["u-009"],
16
- "relatedFiles": ["f-003"]
17
- },
18
- {
19
- "id": "msg-002",
20
- "from": "u-005",
21
- "timestamp": "2026-01-10T09:32:00Z",
22
- "body": "Just looked through them - the drag-and-drop widget approach is really clean. I think we can leverage the existing React DnD library for that. Should be straightforward.",
23
- "reactions": [{ "type": "thumbsUp", "users": ["u-009", "u-008"] }],
24
- "mentions": []
25
- },
26
- {
27
- "id": "msg-003",
28
- "from": "u-009",
29
- "timestamp": "2026-01-10T09:40:00Z",
30
- "body": "Thanks Emily! I designed the grid system with 12-column breakpoints so it maps well to a component-based layout. Happy to walk through the interaction specs.",
31
- "reactions": [],
32
- "mentions": ["u-005"]
33
- },
34
- {
35
- "id": "msg-004",
36
- "from": "u-002",
37
- "timestamp": "2026-01-10T10:05:00Z",
38
- "body": "Great collaboration you two. @Liam, can you make sure we have story points estimated for the frontend work before sprint planning Monday?",
39
- "reactions": [{ "type": "thumbsUp", "users": ["u-008"] }],
40
- "mentions": ["u-008"]
41
- },
42
- {
43
- "id": "msg-005",
44
- "from": "u-008",
45
- "timestamp": "2026-01-10T10:08:00Z",
46
- "body": "Will do. I'll break it into epics: widget framework, chart components, real-time data layer, and settings/preferences.",
47
- "reactions": [],
48
- "mentions": []
49
- }
50
- ]
51
- },
52
- {
53
- "id": "ch-002",
54
- "topic": "DevOps & Infrastructure",
55
- "type": "channel",
56
- "teamName": "Engineering",
57
- "members": ["u-002", "u-005", "u-006", "u-007", "u-012"],
58
- "messages": [
59
- {
60
- "id": "msg-006",
61
- "from": "u-007",
62
- "timestamp": "2026-01-08T11:00:00Z",
63
- "body": "Migration plan for AKS is shared in the Engineering folder. @David, can you review the CosmosDB connection string migration section? Want to make sure the failover logic is right.",
64
- "reactions": [],
65
- "mentions": ["u-006"],
66
- "relatedFiles": ["f-004"]
67
- },
68
- {
69
- "id": "msg-007",
70
- "from": "u-006",
71
- "timestamp": "2026-01-08T11:25:00Z",
72
- "body": "Looking at it now. One thing - we should use managed identity instead of connection strings for the new cluster. I'll update the Terraform configs.",
73
- "reactions": [{ "type": "thumbsUp", "users": ["u-007", "u-012"] }],
74
- "mentions": []
75
- },
76
- {
77
- "id": "msg-008",
78
- "from": "u-012",
79
- "timestamp": "2026-01-08T11:45:00Z",
80
- "body": "Good call David. I've already set up the managed identity in Azure AD for the staging subscription. I'll send you the resource IDs.",
81
- "reactions": [{ "type": "heart", "users": ["u-006"] }],
82
- "mentions": ["u-006"]
83
- },
84
- {
85
- "id": "msg-009",
86
- "from": "u-007",
87
- "timestamp": "2026-01-08T12:00:00Z",
88
- "body": "Perfect teamwork 🎉 Updated the plan to reflect managed identity approach. The staging migration window is confirmed for Jan 20-24. I'll send a calendar invite.",
89
- "reactions": [{ "type": "thumbsUp", "users": ["u-002", "u-006", "u-012"] }],
90
- "mentions": [],
91
- "relatedEvents": ["ev-005"]
92
- }
93
- ]
94
- },
95
- {
96
- "id": "ch-003",
97
- "topic": null,
98
- "type": "oneOnOne",
99
- "teamName": null,
100
- "members": ["u-004", "u-010"],
101
- "messages": [
102
- {
103
- "id": "msg-010",
104
- "from": "u-010",
105
- "timestamp": "2026-01-09T14:50:00Z",
106
- "body": "James, just got off the call with Contoso. They're in! 200 seats. 🎉",
107
- "reactions": [{ "type": "celebrate", "users": ["u-004"] }],
108
- "mentions": []
109
- },
110
- {
111
- "id": "msg-011",
112
- "from": "u-004",
113
- "timestamp": "2026-01-09T14:52:00Z",
114
- "body": "That's incredible Ryan!! Best news all week. Can you send me the details over email so I can loop in Sarah and Marcus?",
115
- "reactions": [],
116
- "mentions": []
117
- },
118
- {
119
- "id": "msg-012",
120
- "from": "u-010",
121
- "timestamp": "2026-01-09T14:55:00Z",
122
- "body": "Sending now. They need SSO scoping and a data residency conversation. I told them we'd get back to them by end of next week.",
123
- "reactions": [{ "type": "thumbsUp", "users": ["u-004"] }],
124
- "mentions": [],
125
- "relatedEmails": ["em-005"]
126
- }
127
- ]
128
- },
129
- {
130
- "id": "ch-004",
131
- "topic": "Security & Compliance",
132
- "type": "channel",
133
- "teamName": "Engineering",
134
- "members": ["u-002", "u-005", "u-006", "u-007", "u-012"],
135
- "messages": [
136
- {
137
- "id": "msg-013",
138
- "from": "u-012",
139
- "timestamp": "2026-01-13T09:30:00Z",
140
- "body": "Heads up team - just sent the Q4 security audit findings via email. Three items need attention within 14 days. Most critical: npm CVEs in the frontend build.",
141
- "reactions": [],
142
- "mentions": [],
143
- "relatedEmails": ["em-009"],
144
- "relatedFiles": ["f-007"]
145
- },
146
- {
147
- "id": "msg-014",
148
- "from": "u-005",
149
- "timestamp": "2026-01-13T09:45:00Z",
150
- "body": "I saw the report. Two of the three CVEs are in transitive dependencies. I can bump the parent packages and run the test suite today.",
151
- "reactions": [{ "type": "thumbsUp", "users": ["u-012", "u-002"] }],
152
- "mentions": []
153
- },
154
- {
155
- "id": "msg-015",
156
- "from": "u-007",
157
- "timestamp": "2026-01-13T10:00:00Z",
158
- "body": "I'll handle the TLS 1.0 deprecation on the legacy gateway. Should be a config change + testing. @Noah, can you verify from the network side after I push?",
159
- "reactions": [],
160
- "mentions": ["u-012"]
161
- },
162
- {
163
- "id": "msg-016",
164
- "from": "u-012",
165
- "timestamp": "2026-01-13T10:05:00Z",
166
- "body": "Absolutely. I'll set up the TLS scanner to validate. For the service account permissions, I can tighten those in Azure AD this afternoon - just need Marcus to approve the scope changes.",
167
- "reactions": [{ "type": "thumbsUp", "users": ["u-002"] }],
168
- "mentions": ["u-002"]
169
- },
170
- {
171
- "id": "msg-017",
172
- "from": "u-002",
173
- "timestamp": "2026-01-13T10:12:00Z",
174
- "body": "Approved. Go ahead Noah. And let's add the security items to sprint 25 backlog. @Liam can you create the tickets?",
175
- "reactions": [{ "type": "thumbsUp", "users": ["u-012", "u-008"] }],
176
- "mentions": ["u-008"]
177
- }
178
- ]
179
- },
180
- {
181
- "id": "ch-005",
182
- "topic": null,
183
- "type": "oneOnOne",
184
- "teamName": null,
185
- "members": ["u-003", "u-009"],
186
- "messages": [
187
- {
188
- "id": "msg-018",
189
- "from": "u-003",
190
- "timestamp": "2026-01-10T09:00:00Z",
191
- "body": "Mia, the mockups look fantastic! Quick question - did we consider the accessibility requirements for the color contrast in dark mode?",
192
- "reactions": [],
193
- "mentions": [],
194
- "relatedFiles": ["f-003"]
195
- },
196
- {
197
- "id": "msg-019",
198
- "from": "u-009",
199
- "timestamp": "2026-01-10T09:10:00Z",
200
- "body": "Yes! All color combinations meet WCAG 2.1 AA standards. I used the Figma contrast checker plugin. I'll add the accessibility notes to the design spec doc.",
201
- "reactions": [{ "type": "heart", "users": ["u-003"] }],
202
- "mentions": []
203
- },
204
- {
205
- "id": "msg-020",
206
- "from": "u-003",
207
- "timestamp": "2026-01-10T09:12:00Z",
208
- "body": "Perfect. Let's make sure Emily knows about the ARIA roles needed for the drag-and-drop. Great work!",
209
- "reactions": [{ "type": "thumbsUp", "users": ["u-009"] }],
210
- "mentions": ["u-005"]
211
- }
212
- ]
213
- },
214
- {
215
- "id": "ch-006",
216
- "topic": "Sales & Marketing",
217
- "type": "channel",
218
- "teamName": "Sales & Marketing",
219
- "members": ["u-004", "u-010", "u-011"],
220
- "messages": [
221
- {
222
- "id": "msg-021",
223
- "from": "u-011",
224
- "timestamp": "2026-01-12T14:00:00Z",
225
- "body": "Blog post draft is out for review. @James and @Sarah have it. Targeting Jan 15th publish date.",
226
- "reactions": [],
227
- "mentions": ["u-004"],
228
- "relatedEmails": ["em-008"],
229
- "relatedFiles": ["f-006"]
230
- },
231
- {
232
- "id": "msg-022",
233
- "from": "u-004",
234
- "timestamp": "2026-01-12T14:15:00Z",
235
- "body": "Great timing Olivia. Also - Fabrikam wants to do a joint webinar Feb 12th. Can you start planning the logistics?",
236
- "reactions": [],
237
- "mentions": [],
238
- "relatedEmails": ["em-011"]
239
- },
240
- {
241
- "id": "msg-023",
242
- "from": "u-011",
243
- "timestamp": "2026-01-12T14:20:00Z",
244
- "body": "On it! I'll draft a landing page and promotional email sequence. We should aim for 200+ registrations. Ryan, can you share the Contoso win as a case study teaser?",
245
- "reactions": [{ "type": "thumbsUp", "users": ["u-004"] }],
246
- "mentions": ["u-010"]
247
- },
248
- {
249
- "id": "msg-024",
250
- "from": "u-010",
251
- "timestamp": "2026-01-12T14:30:00Z",
252
- "body": "Definitely! Once the deal is signed I'll get a quote from their CTO. Should make great social proof.",
253
- "reactions": [{ "type": "fire", "users": ["u-011", "u-004"] }],
254
- "mentions": []
255
- }
256
- ]
257
- },
258
- {
259
- "id": "ch-007",
260
- "topic": null,
261
- "type": "groupChat",
262
- "teamName": null,
263
- "members": ["u-005", "u-006", "u-007"],
264
- "messages": [
265
- {
266
- "id": "msg-025",
267
- "from": "u-006",
268
- "timestamp": "2026-01-16T12:00:00Z",
269
- "body": "Hey, did either of you see the Python SDK beta results? 9 out of 12 rated DX as excellent or good!",
270
- "reactions": [{ "type": "celebrate", "users": ["u-005", "u-007"] }],
271
- "mentions": [],
272
- "relatedEmails": ["em-012"],
273
- "relatedFiles": ["f-008"]
274
- },
275
- {
276
- "id": "msg-026",
277
- "from": "u-005",
278
- "timestamp": "2026-01-16T12:05:00Z",
279
- "body": "That's awesome David! The auth token refresh bugs - are those in the same area I refactored last sprint?",
280
- "reactions": [],
281
- "mentions": ["u-006"]
282
- },
283
- {
284
- "id": "msg-027",
285
- "from": "u-006",
286
- "timestamp": "2026-01-16T12:10:00Z",
287
- "body": "Different code path actually. It's the background renewal timer in the async client. I have a fix ready, just need to add retry logic.",
288
- "reactions": [{ "type": "thumbsUp", "users": ["u-005"] }],
289
- "mentions": []
290
- },
291
- {
292
- "id": "msg-028",
293
- "from": "u-007",
294
- "timestamp": "2026-01-16T12:15:00Z",
295
- "body": "Nice work both of you! David, make sure the fix goes through the security scan pipeline before merging. Noah flagged some dependency issues yesterday.",
296
- "reactions": [{ "type": "thumbsUp", "users": ["u-006"] }],
297
- "mentions": ["u-006"],
298
- "relatedEmails": ["em-009"]
299
- }
300
- ]
301
- }
302
- ]