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.
- package/dist/flowquery.min.js +1 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/parsing/data_structures/list_comprehension.d.ts +56 -0
- package/dist/parsing/data_structures/list_comprehension.d.ts.map +1 -0
- package/dist/parsing/data_structures/list_comprehension.js +102 -0
- package/dist/parsing/data_structures/list_comprehension.js.map +1 -0
- package/dist/parsing/parser.d.ts +18 -0
- package/dist/parsing/parser.d.ts.map +1 -1
- package/dist/parsing/parser.js +92 -0
- package/dist/parsing/parser.js.map +1 -1
- package/package.json +4 -1
- package/.editorconfig +0 -21
- package/.gitattributes +0 -3
- package/.github/workflows/npm-publish.yml +0 -32
- package/.github/workflows/python-publish.yml +0 -143
- package/.github/workflows/release.yml +0 -107
- package/.husky/pre-commit +0 -28
- package/.prettierrc +0 -22
- package/CODE_OF_CONDUCT.md +0 -10
- package/FlowQueryLogoIcon.png +0 -0
- package/SECURITY.md +0 -14
- package/SUPPORT.md +0 -13
- package/docs/flowquery.min.js +0 -1
- package/docs/index.html +0 -105
- package/flowquery-py/CONTRIBUTING.md +0 -127
- package/flowquery-py/README.md +0 -67
- package/flowquery-py/misc/data/test.json +0 -10
- package/flowquery-py/misc/data/users.json +0 -242
- package/flowquery-py/notebooks/TestFlowQuery.ipynb +0 -440
- package/flowquery-py/pyproject.toml +0 -121
- package/flowquery-py/setup_env.ps1 +0 -92
- package/flowquery-py/setup_env.sh +0 -87
- package/flowquery-py/src/__init__.py +0 -38
- package/flowquery-py/src/__main__.py +0 -10
- package/flowquery-py/src/compute/__init__.py +0 -6
- package/flowquery-py/src/compute/flowquery.py +0 -68
- package/flowquery-py/src/compute/runner.py +0 -64
- package/flowquery-py/src/extensibility.py +0 -52
- package/flowquery-py/src/graph/__init__.py +0 -31
- package/flowquery-py/src/graph/data.py +0 -136
- package/flowquery-py/src/graph/database.py +0 -141
- package/flowquery-py/src/graph/hops.py +0 -43
- package/flowquery-py/src/graph/node.py +0 -143
- package/flowquery-py/src/graph/node_data.py +0 -26
- package/flowquery-py/src/graph/node_reference.py +0 -50
- package/flowquery-py/src/graph/pattern.py +0 -115
- package/flowquery-py/src/graph/pattern_expression.py +0 -67
- package/flowquery-py/src/graph/patterns.py +0 -42
- package/flowquery-py/src/graph/physical_node.py +0 -41
- package/flowquery-py/src/graph/physical_relationship.py +0 -36
- package/flowquery-py/src/graph/relationship.py +0 -193
- package/flowquery-py/src/graph/relationship_data.py +0 -36
- package/flowquery-py/src/graph/relationship_match_collector.py +0 -85
- package/flowquery-py/src/graph/relationship_reference.py +0 -21
- package/flowquery-py/src/io/__init__.py +0 -5
- package/flowquery-py/src/io/command_line.py +0 -108
- package/flowquery-py/src/parsing/__init__.py +0 -17
- package/flowquery-py/src/parsing/alias.py +0 -20
- package/flowquery-py/src/parsing/alias_option.py +0 -11
- package/flowquery-py/src/parsing/ast_node.py +0 -147
- package/flowquery-py/src/parsing/base_parser.py +0 -84
- package/flowquery-py/src/parsing/components/__init__.py +0 -19
- package/flowquery-py/src/parsing/components/csv.py +0 -8
- package/flowquery-py/src/parsing/components/from_.py +0 -12
- package/flowquery-py/src/parsing/components/headers.py +0 -12
- package/flowquery-py/src/parsing/components/json.py +0 -8
- package/flowquery-py/src/parsing/components/null.py +0 -10
- package/flowquery-py/src/parsing/components/post.py +0 -8
- package/flowquery-py/src/parsing/components/text.py +0 -8
- package/flowquery-py/src/parsing/context.py +0 -50
- package/flowquery-py/src/parsing/data_structures/__init__.py +0 -15
- package/flowquery-py/src/parsing/data_structures/associative_array.py +0 -41
- package/flowquery-py/src/parsing/data_structures/json_array.py +0 -30
- package/flowquery-py/src/parsing/data_structures/key_value_pair.py +0 -38
- package/flowquery-py/src/parsing/data_structures/lookup.py +0 -51
- package/flowquery-py/src/parsing/data_structures/range_lookup.py +0 -42
- package/flowquery-py/src/parsing/expressions/__init__.py +0 -61
- package/flowquery-py/src/parsing/expressions/boolean.py +0 -20
- package/flowquery-py/src/parsing/expressions/expression.py +0 -141
- package/flowquery-py/src/parsing/expressions/expression_map.py +0 -26
- package/flowquery-py/src/parsing/expressions/f_string.py +0 -27
- package/flowquery-py/src/parsing/expressions/identifier.py +0 -21
- package/flowquery-py/src/parsing/expressions/number.py +0 -32
- package/flowquery-py/src/parsing/expressions/operator.py +0 -271
- package/flowquery-py/src/parsing/expressions/reference.py +0 -47
- package/flowquery-py/src/parsing/expressions/string.py +0 -27
- package/flowquery-py/src/parsing/functions/__init__.py +0 -127
- package/flowquery-py/src/parsing/functions/aggregate_function.py +0 -60
- package/flowquery-py/src/parsing/functions/async_function.py +0 -65
- package/flowquery-py/src/parsing/functions/avg.py +0 -55
- package/flowquery-py/src/parsing/functions/coalesce.py +0 -43
- package/flowquery-py/src/parsing/functions/collect.py +0 -75
- package/flowquery-py/src/parsing/functions/count.py +0 -79
- package/flowquery-py/src/parsing/functions/date_.py +0 -61
- package/flowquery-py/src/parsing/functions/datetime_.py +0 -62
- package/flowquery-py/src/parsing/functions/duration.py +0 -159
- package/flowquery-py/src/parsing/functions/element_id.py +0 -50
- package/flowquery-py/src/parsing/functions/function.py +0 -68
- package/flowquery-py/src/parsing/functions/function_factory.py +0 -170
- package/flowquery-py/src/parsing/functions/function_metadata.py +0 -148
- package/flowquery-py/src/parsing/functions/functions.py +0 -67
- package/flowquery-py/src/parsing/functions/head.py +0 -39
- package/flowquery-py/src/parsing/functions/id_.py +0 -49
- package/flowquery-py/src/parsing/functions/join.py +0 -49
- package/flowquery-py/src/parsing/functions/keys.py +0 -34
- package/flowquery-py/src/parsing/functions/last.py +0 -39
- package/flowquery-py/src/parsing/functions/localdatetime.py +0 -60
- package/flowquery-py/src/parsing/functions/localtime.py +0 -57
- package/flowquery-py/src/parsing/functions/max_.py +0 -49
- package/flowquery-py/src/parsing/functions/min_.py +0 -49
- package/flowquery-py/src/parsing/functions/nodes.py +0 -48
- package/flowquery-py/src/parsing/functions/predicate_function.py +0 -47
- package/flowquery-py/src/parsing/functions/predicate_sum.py +0 -49
- package/flowquery-py/src/parsing/functions/properties.py +0 -50
- package/flowquery-py/src/parsing/functions/rand.py +0 -28
- package/flowquery-py/src/parsing/functions/range_.py +0 -41
- package/flowquery-py/src/parsing/functions/reducer_element.py +0 -15
- package/flowquery-py/src/parsing/functions/relationships.py +0 -46
- package/flowquery-py/src/parsing/functions/replace.py +0 -39
- package/flowquery-py/src/parsing/functions/round_.py +0 -34
- package/flowquery-py/src/parsing/functions/schema.py +0 -40
- package/flowquery-py/src/parsing/functions/size.py +0 -34
- package/flowquery-py/src/parsing/functions/split.py +0 -54
- package/flowquery-py/src/parsing/functions/string_distance.py +0 -92
- package/flowquery-py/src/parsing/functions/stringify.py +0 -49
- package/flowquery-py/src/parsing/functions/substring.py +0 -76
- package/flowquery-py/src/parsing/functions/sum.py +0 -51
- package/flowquery-py/src/parsing/functions/tail.py +0 -37
- package/flowquery-py/src/parsing/functions/temporal_utils.py +0 -186
- package/flowquery-py/src/parsing/functions/time_.py +0 -57
- package/flowquery-py/src/parsing/functions/timestamp.py +0 -37
- package/flowquery-py/src/parsing/functions/to_float.py +0 -46
- package/flowquery-py/src/parsing/functions/to_integer.py +0 -46
- package/flowquery-py/src/parsing/functions/to_json.py +0 -35
- package/flowquery-py/src/parsing/functions/to_lower.py +0 -37
- package/flowquery-py/src/parsing/functions/to_string.py +0 -41
- package/flowquery-py/src/parsing/functions/trim.py +0 -37
- package/flowquery-py/src/parsing/functions/type_.py +0 -47
- package/flowquery-py/src/parsing/functions/value_holder.py +0 -24
- package/flowquery-py/src/parsing/logic/__init__.py +0 -15
- package/flowquery-py/src/parsing/logic/case.py +0 -28
- package/flowquery-py/src/parsing/logic/else_.py +0 -12
- package/flowquery-py/src/parsing/logic/end.py +0 -8
- package/flowquery-py/src/parsing/logic/then.py +0 -12
- package/flowquery-py/src/parsing/logic/when.py +0 -12
- package/flowquery-py/src/parsing/operations/__init__.py +0 -46
- package/flowquery-py/src/parsing/operations/aggregated_return.py +0 -25
- package/flowquery-py/src/parsing/operations/aggregated_with.py +0 -22
- package/flowquery-py/src/parsing/operations/call.py +0 -73
- package/flowquery-py/src/parsing/operations/create_node.py +0 -35
- package/flowquery-py/src/parsing/operations/create_relationship.py +0 -35
- package/flowquery-py/src/parsing/operations/delete_node.py +0 -29
- package/flowquery-py/src/parsing/operations/delete_relationship.py +0 -29
- package/flowquery-py/src/parsing/operations/group_by.py +0 -148
- package/flowquery-py/src/parsing/operations/limit.py +0 -33
- package/flowquery-py/src/parsing/operations/load.py +0 -148
- package/flowquery-py/src/parsing/operations/match.py +0 -52
- package/flowquery-py/src/parsing/operations/operation.py +0 -69
- package/flowquery-py/src/parsing/operations/order_by.py +0 -114
- package/flowquery-py/src/parsing/operations/projection.py +0 -21
- package/flowquery-py/src/parsing/operations/return_op.py +0 -88
- package/flowquery-py/src/parsing/operations/union.py +0 -115
- package/flowquery-py/src/parsing/operations/union_all.py +0 -17
- package/flowquery-py/src/parsing/operations/unwind.py +0 -42
- package/flowquery-py/src/parsing/operations/where.py +0 -43
- package/flowquery-py/src/parsing/operations/with_op.py +0 -18
- package/flowquery-py/src/parsing/parser.py +0 -1384
- package/flowquery-py/src/parsing/parser_state.py +0 -26
- package/flowquery-py/src/parsing/token_to_node.py +0 -109
- package/flowquery-py/src/tokenization/__init__.py +0 -23
- package/flowquery-py/src/tokenization/keyword.py +0 -54
- package/flowquery-py/src/tokenization/operator.py +0 -29
- package/flowquery-py/src/tokenization/string_walker.py +0 -158
- package/flowquery-py/src/tokenization/symbol.py +0 -19
- package/flowquery-py/src/tokenization/token.py +0 -693
- package/flowquery-py/src/tokenization/token_mapper.py +0 -53
- package/flowquery-py/src/tokenization/token_type.py +0 -21
- package/flowquery-py/src/tokenization/tokenizer.py +0 -214
- package/flowquery-py/src/tokenization/trie.py +0 -125
- package/flowquery-py/src/utils/__init__.py +0 -6
- package/flowquery-py/src/utils/object_utils.py +0 -20
- package/flowquery-py/src/utils/string_utils.py +0 -113
- package/flowquery-py/tests/__init__.py +0 -1
- package/flowquery-py/tests/compute/__init__.py +0 -1
- package/flowquery-py/tests/compute/test_runner.py +0 -4902
- package/flowquery-py/tests/graph/__init__.py +0 -1
- package/flowquery-py/tests/graph/test_create.py +0 -56
- package/flowquery-py/tests/graph/test_data.py +0 -73
- package/flowquery-py/tests/graph/test_match.py +0 -40
- package/flowquery-py/tests/parsing/__init__.py +0 -1
- package/flowquery-py/tests/parsing/test_context.py +0 -34
- package/flowquery-py/tests/parsing/test_expression.py +0 -248
- package/flowquery-py/tests/parsing/test_parser.py +0 -1237
- package/flowquery-py/tests/test_extensibility.py +0 -611
- package/flowquery-py/tests/tokenization/__init__.py +0 -1
- package/flowquery-py/tests/tokenization/test_token_mapper.py +0 -60
- package/flowquery-py/tests/tokenization/test_tokenizer.py +0 -198
- package/flowquery-py/tests/tokenization/test_trie.py +0 -30
- package/flowquery-vscode/.vscode-test.mjs +0 -5
- package/flowquery-vscode/.vscodeignore +0 -13
- package/flowquery-vscode/LICENSE +0 -21
- package/flowquery-vscode/README.md +0 -11
- package/flowquery-vscode/demo/FlowQueryVSCodeDemo.gif +0 -0
- package/flowquery-vscode/eslint.config.mjs +0 -25
- package/flowquery-vscode/extension.js +0 -508
- package/flowquery-vscode/flowQueryEngine/flowquery.min.js +0 -1
- package/flowquery-vscode/flowquery-worker.js +0 -66
- package/flowquery-vscode/images/FlowQueryLogoIcon.png +0 -0
- package/flowquery-vscode/jsconfig.json +0 -13
- package/flowquery-vscode/libs/page.css +0 -53
- package/flowquery-vscode/libs/table.css +0 -13
- package/flowquery-vscode/libs/tabs.css +0 -66
- package/flowquery-vscode/package-lock.json +0 -2917
- package/flowquery-vscode/package.json +0 -51
- package/flowquery-vscode/test/extension.test.js +0 -196
- package/flowquery-vscode/test/worker.test.js +0 -25
- package/flowquery-vscode/vsc-extension-quickstart.md +0 -42
- package/jest.config.js +0 -14
- package/misc/apps/RAG/README.md +0 -29
- package/misc/apps/RAG/data/chats.json +0 -302
- package/misc/apps/RAG/data/emails.json +0 -182
- package/misc/apps/RAG/data/events.json +0 -226
- package/misc/apps/RAG/data/files.json +0 -172
- package/misc/apps/RAG/data/users.json +0 -158
- package/misc/apps/RAG/jest.config.js +0 -21
- package/misc/apps/RAG/package.json +0 -48
- package/misc/apps/RAG/public/index.html +0 -18
- package/misc/apps/RAG/src/App.css +0 -42
- package/misc/apps/RAG/src/App.tsx +0 -50
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.css +0 -172
- package/misc/apps/RAG/src/components/AdaptiveCardRenderer.tsx +0 -380
- package/misc/apps/RAG/src/components/ApiKeySettings.tsx +0 -245
- package/misc/apps/RAG/src/components/ChatContainer.css +0 -67
- package/misc/apps/RAG/src/components/ChatContainer.tsx +0 -242
- package/misc/apps/RAG/src/components/ChatInput.css +0 -23
- package/misc/apps/RAG/src/components/ChatInput.tsx +0 -76
- package/misc/apps/RAG/src/components/ChatMessage.css +0 -160
- package/misc/apps/RAG/src/components/ChatMessage.tsx +0 -286
- package/misc/apps/RAG/src/components/FlowQueryAgent.ts +0 -708
- package/misc/apps/RAG/src/components/FlowQueryRunner.css +0 -113
- package/misc/apps/RAG/src/components/FlowQueryRunner.tsx +0 -371
- package/misc/apps/RAG/src/components/index.ts +0 -28
- package/misc/apps/RAG/src/graph/index.ts +0 -19
- package/misc/apps/RAG/src/graph/initializeGraph.ts +0 -254
- package/misc/apps/RAG/src/index.tsx +0 -29
- package/misc/apps/RAG/src/prompts/FlowQuerySystemPrompt.ts +0 -327
- package/misc/apps/RAG/src/prompts/index.ts +0 -10
- package/misc/apps/RAG/src/tests/graph.test.ts +0 -35
- package/misc/apps/RAG/src/utils/FlowQueryExecutor.ts +0 -130
- package/misc/apps/RAG/src/utils/FlowQueryExtractor.ts +0 -208
- package/misc/apps/RAG/src/utils/Llm.ts +0 -248
- package/misc/apps/RAG/src/utils/index.ts +0 -12
- package/misc/apps/RAG/tsconfig.json +0 -22
- package/misc/apps/RAG/webpack.config.js +0 -43
- package/misc/apps/README.md +0 -1
- package/misc/queries/analyze_catfacts.cql +0 -75
- package/misc/queries/azure_openai_completions.cql +0 -13
- package/misc/queries/azure_openai_models.cql +0 -9
- package/misc/queries/mock_pipeline.cql +0 -84
- package/misc/queries/openai_completions.cql +0 -15
- package/misc/queries/openai_models.cql +0 -13
- package/misc/queries/test.cql +0 -6
- package/misc/queries/tool_inference.cql +0 -24
- package/misc/queries/wisdom.cql +0 -6
- package/misc/queries/wisdom_letter_histogram.cql +0 -8
- package/src/compute/flowquery.ts +0 -46
- package/src/compute/runner.ts +0 -66
- package/src/extensibility.ts +0 -45
- package/src/graph/data.ts +0 -130
- package/src/graph/database.ts +0 -143
- package/src/graph/hops.ts +0 -22
- package/src/graph/node.ts +0 -122
- package/src/graph/node_data.ts +0 -18
- package/src/graph/node_reference.ts +0 -38
- package/src/graph/pattern.ts +0 -110
- package/src/graph/pattern_expression.ts +0 -48
- package/src/graph/patterns.ts +0 -36
- package/src/graph/physical_node.ts +0 -23
- package/src/graph/physical_relationship.ts +0 -23
- package/src/graph/relationship.ts +0 -167
- package/src/graph/relationship_data.ts +0 -31
- package/src/graph/relationship_match_collector.ts +0 -64
- package/src/graph/relationship_reference.ts +0 -25
- package/src/index.browser.ts +0 -46
- package/src/index.node.ts +0 -55
- package/src/index.ts +0 -12
- package/src/io/command_line.ts +0 -74
- package/src/parsing/alias.ts +0 -23
- package/src/parsing/alias_option.ts +0 -5
- package/src/parsing/ast_node.ts +0 -153
- package/src/parsing/base_parser.ts +0 -98
- package/src/parsing/components/csv.ts +0 -9
- package/src/parsing/components/from.ts +0 -12
- package/src/parsing/components/headers.ts +0 -12
- package/src/parsing/components/json.ts +0 -9
- package/src/parsing/components/null.ts +0 -9
- package/src/parsing/components/post.ts +0 -9
- package/src/parsing/components/text.ts +0 -9
- package/src/parsing/context.ts +0 -54
- package/src/parsing/data_structures/associative_array.ts +0 -43
- package/src/parsing/data_structures/json_array.ts +0 -31
- package/src/parsing/data_structures/key_value_pair.ts +0 -37
- package/src/parsing/data_structures/lookup.ts +0 -44
- package/src/parsing/data_structures/range_lookup.ts +0 -36
- package/src/parsing/expressions/boolean.ts +0 -21
- package/src/parsing/expressions/expression.ts +0 -150
- package/src/parsing/expressions/expression_map.ts +0 -22
- package/src/parsing/expressions/f_string.ts +0 -26
- package/src/parsing/expressions/identifier.ts +0 -22
- package/src/parsing/expressions/number.ts +0 -40
- package/src/parsing/expressions/operator.ts +0 -354
- package/src/parsing/expressions/reference.ts +0 -45
- package/src/parsing/expressions/string.ts +0 -34
- package/src/parsing/functions/aggregate_function.ts +0 -58
- package/src/parsing/functions/async_function.ts +0 -64
- package/src/parsing/functions/avg.ts +0 -47
- package/src/parsing/functions/coalesce.ts +0 -49
- package/src/parsing/functions/collect.ts +0 -54
- package/src/parsing/functions/count.ts +0 -54
- package/src/parsing/functions/date.ts +0 -63
- package/src/parsing/functions/datetime.ts +0 -63
- package/src/parsing/functions/duration.ts +0 -143
- package/src/parsing/functions/element_id.ts +0 -51
- package/src/parsing/functions/function.ts +0 -60
- package/src/parsing/functions/function_factory.ts +0 -195
- package/src/parsing/functions/function_metadata.ts +0 -217
- package/src/parsing/functions/functions.ts +0 -70
- package/src/parsing/functions/head.ts +0 -42
- package/src/parsing/functions/id.ts +0 -51
- package/src/parsing/functions/join.ts +0 -40
- package/src/parsing/functions/keys.ts +0 -29
- package/src/parsing/functions/last.ts +0 -42
- package/src/parsing/functions/localdatetime.ts +0 -63
- package/src/parsing/functions/localtime.ts +0 -58
- package/src/parsing/functions/max.ts +0 -37
- package/src/parsing/functions/min.ts +0 -37
- package/src/parsing/functions/nodes.ts +0 -54
- package/src/parsing/functions/predicate_function.ts +0 -48
- package/src/parsing/functions/predicate_sum.ts +0 -47
- package/src/parsing/functions/properties.ts +0 -56
- package/src/parsing/functions/rand.ts +0 -21
- package/src/parsing/functions/range.ts +0 -37
- package/src/parsing/functions/reducer_element.ts +0 -10
- package/src/parsing/functions/relationships.ts +0 -52
- package/src/parsing/functions/replace.ts +0 -38
- package/src/parsing/functions/round.ts +0 -28
- package/src/parsing/functions/schema.ts +0 -39
- package/src/parsing/functions/size.ts +0 -28
- package/src/parsing/functions/split.ts +0 -45
- package/src/parsing/functions/string_distance.ts +0 -83
- package/src/parsing/functions/stringify.ts +0 -37
- package/src/parsing/functions/substring.ts +0 -68
- package/src/parsing/functions/sum.ts +0 -41
- package/src/parsing/functions/tail.ts +0 -39
- package/src/parsing/functions/temporal_utils.ts +0 -180
- package/src/parsing/functions/time.ts +0 -58
- package/src/parsing/functions/timestamp.ts +0 -37
- package/src/parsing/functions/to_float.ts +0 -50
- package/src/parsing/functions/to_integer.ts +0 -50
- package/src/parsing/functions/to_json.ts +0 -28
- package/src/parsing/functions/to_lower.ts +0 -28
- package/src/parsing/functions/to_string.ts +0 -32
- package/src/parsing/functions/trim.ts +0 -28
- package/src/parsing/functions/type.ts +0 -39
- package/src/parsing/functions/value_holder.ts +0 -13
- package/src/parsing/logic/case.ts +0 -26
- package/src/parsing/logic/else.ts +0 -12
- package/src/parsing/logic/end.ts +0 -9
- package/src/parsing/logic/then.ts +0 -12
- package/src/parsing/logic/when.ts +0 -12
- package/src/parsing/operations/aggregated_return.ts +0 -22
- package/src/parsing/operations/aggregated_with.ts +0 -18
- package/src/parsing/operations/call.ts +0 -69
- package/src/parsing/operations/create_node.ts +0 -39
- package/src/parsing/operations/create_relationship.ts +0 -38
- package/src/parsing/operations/delete_node.ts +0 -33
- package/src/parsing/operations/delete_relationship.ts +0 -32
- package/src/parsing/operations/group_by.ts +0 -137
- package/src/parsing/operations/limit.ts +0 -31
- package/src/parsing/operations/load.ts +0 -146
- package/src/parsing/operations/match.ts +0 -54
- package/src/parsing/operations/operation.ts +0 -69
- package/src/parsing/operations/order_by.ts +0 -126
- package/src/parsing/operations/projection.ts +0 -18
- package/src/parsing/operations/return.ts +0 -76
- package/src/parsing/operations/union.ts +0 -114
- package/src/parsing/operations/union_all.ts +0 -16
- package/src/parsing/operations/unwind.ts +0 -36
- package/src/parsing/operations/where.ts +0 -42
- package/src/parsing/operations/with.ts +0 -20
- package/src/parsing/parser.ts +0 -1641
- package/src/parsing/parser_state.ts +0 -25
- package/src/parsing/token_to_node.ts +0 -114
- package/src/tokenization/keyword.ts +0 -50
- package/src/tokenization/operator.ts +0 -25
- package/src/tokenization/string_walker.ts +0 -197
- package/src/tokenization/symbol.ts +0 -15
- package/src/tokenization/token.ts +0 -764
- package/src/tokenization/token_mapper.ts +0 -53
- package/src/tokenization/token_type.ts +0 -16
- package/src/tokenization/tokenizer.ts +0 -250
- package/src/tokenization/trie.ts +0 -117
- package/src/utils/object_utils.ts +0 -17
- package/src/utils/string_utils.ts +0 -114
- package/tests/compute/runner.test.ts +0 -4559
- package/tests/extensibility.test.ts +0 -643
- package/tests/graph/create.test.ts +0 -36
- package/tests/graph/data.test.ts +0 -58
- package/tests/graph/match.test.ts +0 -29
- package/tests/parsing/context.test.ts +0 -27
- package/tests/parsing/expression.test.ts +0 -303
- package/tests/parsing/parser.test.ts +0 -1327
- package/tests/tokenization/token_mapper.test.ts +0 -47
- package/tests/tokenization/tokenizer.test.ts +0 -191
- package/tests/tokenization/trie.test.ts +0 -20
- package/tsconfig.json +0 -19
- package/typedoc.json +0 -16
- package/vscode-settings.json.recommended +0 -16
- 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
|
-
};
|
package/misc/apps/RAG/README.md
DELETED
|
@@ -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
|
-
]
|