@xano/xanoscript-language-server 11.12.1 → 11.12.3
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/lexer/tokens.js +22 -3
- package/package.json +25 -1
- package/.claude/memory/feedback_no_git.md +0 -11
- package/.claude/settings.local.json +0 -21
- package/.github/copilot-instructions.md +0 -190
- package/.github/workflows/ci.yml +0 -31
- package/.husky/pre-commit +0 -1
- package/CLAUDE.md +0 -256
- package/eslint.config.js +0 -24
- package/lexer/comment.spec.js +0 -77
- package/lexer/multiline.spec.js +0 -179
- package/lexer/tests/query/query_lexer.spec.js +0 -36
- package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
- package/lexer/tests/query/valid_sources/db_query.xs +0 -77
- package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
- package/lexer/tests/query/valid_sources/header_query.xs +0 -15
- package/lexer/tests/table/basic_table.xs +0 -17
- package/lexer/tests/table/empty_table.xs +0 -3
- package/lexer/tests/table/table_lexer.spec.js +0 -324
- package/lexer/utils.spec.js +0 -61
- package/onCompletion/contentAssist.spec.js +0 -275
- package/onDefinition/onDefinition.spec.js +0 -313
- package/onHover/FilterMessageProvider.spec.js +0 -85
- package/onHover/FunctionMessageProvider.spec.js +0 -128
- package/onHover/InputFilterMessageProvider.spec.js +0 -329
- package/onHover/QueryFilterMessageProvider.spec.js +0 -164
- package/onHover/onHoverDocument.spec.js +0 -660
- package/parser/addon_parser.spec.js +0 -88
- package/parser/agent_parser.spec.js +0 -599
- package/parser/agent_trigger_parser.spec.js +0 -525
- package/parser/api_group_parser.spec.js +0 -137
- package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
- package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
- package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
- package/parser/attributes/docsFieldAttribute.spec.js +0 -44
- package/parser/attributes/guidFieldAttribute.spec.js +0 -93
- package/parser/attributes/inputFilterFn.spec.js +0 -39
- package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
- package/parser/attributes/valueFieldAttribute.spec.js +0 -54
- package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
- package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
- package/parser/branch_parser.spec.js +0 -34
- package/parser/clauses/agentClause.spec.js +0 -34
- package/parser/clauses/authClause.spec.js +0 -39
- package/parser/clauses/cacheClause.spec.js +0 -103
- package/parser/clauses/canonicalClause.spec.js +0 -34
- package/parser/clauses/channelClause.spec.js +0 -34
- package/parser/clauses/dbTableClause.spec.js +0 -34
- package/parser/clauses/historyClause.spec.js +0 -53
- package/parser/clauses/indexClause.spec.js +0 -47
- package/parser/clauses/inputClause.spec.js +0 -96
- package/parser/clauses/mcpServerClause.spec.js +0 -34
- package/parser/clauses/middlewareClause.spec.js +0 -161
- package/parser/clauses/nakedStackFn.spec.js +0 -73
- package/parser/clauses/responseClause.spec.js +0 -47
- package/parser/clauses/scheduleClause.spec.js +0 -71
- package/parser/clauses/schemaClause.spec.js +0 -102
- package/parser/clauses/testClause.spec.js +0 -69
- package/parser/clauses/viewClause.spec.js +0 -163
- package/parser/definitions/arraySlice.spec.js +0 -49
- package/parser/definitions/columnDefinition.spec.js +0 -199
- package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
- package/parser/definitions/enumColumnDefinition.spec.js +0 -108
- package/parser/definitions/filterDefinition.spec.js +0 -43
- package/parser/definitions/objectColumnDefinition.spec.js +0 -118
- package/parser/function_parser.spec.js +0 -131
- package/parser/functions/actionCallFn.spec.js +0 -51
- package/parser/functions/addonCallFn.spec.js +0 -41
- package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
- package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
- package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
- package/parser/functions/aiFn.spec.js +0 -51
- package/parser/functions/api/apiCallFn.spec.js +0 -62
- package/parser/functions/api/apiLambdaFn.spec.js +0 -63
- package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
- package/parser/functions/api/apiRequestFn.spec.js +0 -113
- package/parser/functions/api/apiStreamFn.spec.js +0 -44
- package/parser/functions/api/webflowRequestFn.spec.js +0 -114
- package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
- package/parser/functions/array/arrayFindFn.spec.js +0 -44
- package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
- package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
- package/parser/functions/array/arrayMapFn.spec.js +0 -37
- package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
- package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
- package/parser/functions/array/arrayUnionFn.spec.js +0 -22
- package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
- package/parser/functions/array/arrayValueOnly.spec.js +0 -61
- package/parser/functions/array/valueAttrOnly.spec.js +0 -61
- package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
- package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
- package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
- package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
- package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
- package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
- package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
- package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
- package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
- package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
- package/parser/functions/controls/awaitFn.spec.js +0 -48
- package/parser/functions/controls/conditionalFn.spec.js +0 -188
- package/parser/functions/controls/forEachFn.spec.js +0 -109
- package/parser/functions/controls/forFn.spec.js +0 -85
- package/parser/functions/controls/functionRunFn.spec.js +0 -77
- package/parser/functions/controls/groupFn.spec.js +0 -63
- package/parser/functions/controls/preconditionFn.spec.js +0 -107
- package/parser/functions/controls/returnFn.spec.js +0 -44
- package/parser/functions/controls/switchFn.spec.js +0 -118
- package/parser/functions/controls/throwFn.spec.js +0 -56
- package/parser/functions/controls/tryCatchFn.spec.js +0 -193
- package/parser/functions/controls/whileFn.spec.js +0 -94
- package/parser/functions/db/dbAddFn.spec.js +0 -72
- package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
- package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
- package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
- package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
- package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
- package/parser/functions/db/dbDelFn.spec.js +0 -67
- package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
- package/parser/functions/db/dbEditFn.spec.js +0 -122
- package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
- package/parser/functions/db/dbGetFn.spec.js +0 -117
- package/parser/functions/db/dbHasFn.spec.js +0 -62
- package/parser/functions/db/dbPatchFn.spec.js +0 -88
- package/parser/functions/db/dbQueryFn.spec.js +0 -380
- package/parser/functions/db/dbSchemaFn.spec.js +0 -42
- package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
- package/parser/functions/db/dbTransactionFn.spec.js +0 -63
- package/parser/functions/db/dbTruncateFn.spec.js +0 -42
- package/parser/functions/debug/debugLogFn.spec.js +0 -44
- package/parser/functions/debug/debugStopFn.spec.js +0 -44
- package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
- package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
- package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
- package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
- package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
- package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
- package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
- package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
- package/parser/functions/math/allMathFn.spec.js +0 -100
- package/parser/functions/middlewareCallFn.spec.js +0 -44
- package/parser/functions/object/objectEntriesFn.spec.js +0 -44
- package/parser/functions/object/objectKeysFn.spec.js +0 -44
- package/parser/functions/object/objectValuesFn.spec.js +0 -44
- package/parser/functions/redis/redisCountFn.spec.js +0 -58
- package/parser/functions/redis/redisDecrFn.spec.js +0 -47
- package/parser/functions/redis/redisDelFn.spec.js +0 -58
- package/parser/functions/redis/redisGetFn.spec.js +0 -67
- package/parser/functions/redis/redisHasFn.spec.js +0 -58
- package/parser/functions/redis/redisIncrFn.spec.js +0 -74
- package/parser/functions/redis/redisKeysFn.spec.js +0 -67
- package/parser/functions/redis/redisPopFn.spec.js +0 -75
- package/parser/functions/redis/redisPushFn.spec.js +0 -71
- package/parser/functions/redis/redisRangeFn.spec.js +0 -80
- package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
- package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
- package/parser/functions/redis/redisSetFn.spec.js +0 -89
- package/parser/functions/redis/redisShiftFn.spec.js +0 -75
- package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
- package/parser/functions/schema/schemaFn.spec.js +0 -92
- package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
- package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
- package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
- package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
- package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
- package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
- package/parser/functions/schema/utils.spec.js +0 -27
- package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
- package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
- package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
- package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
- package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
- package/parser/functions/security/securityDecryptFn.spec.js +0 -24
- package/parser/functions/security/securityEncryptFn.spec.js +0 -24
- package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
- package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
- package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
- package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
- package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
- package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
- package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
- package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
- package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
- package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
- package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
- package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
- package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
- package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
- package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
- package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
- package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
- package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
- package/parser/functions/toolCallFn.spec.js +0 -28
- package/parser/functions/triggerCallFn.spec.js +0 -51
- package/parser/functions/unitExpectFn.spec.js +0 -21
- package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
- package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
- package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
- package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
- package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
- package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
- package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
- package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
- package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
- package/parser/functions/util/utilSleepFn.spec.js +0 -44
- package/parser/functions/util/utilTemplateFn.spec.js +0 -78
- package/parser/functions/varFn.spec.js +0 -332
- package/parser/functions/workflowExpectFn.spec.js +0 -32
- package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
- package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
- package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
- package/parser/functions/zip/zipExtractFn.spec.js +0 -52
- package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
- package/parser/generic/arrayWithValues.spec.js +0 -72
- package/parser/generic/asVariable.spec.js +0 -117
- package/parser/generic/assignableVariableAs.spec.js +0 -126
- package/parser/generic/assignableVariableProperty.spec.js +0 -138
- package/parser/generic/castedValue.spec.js +0 -29
- package/parser/generic/chainedIdentifier.spec.js +0 -89
- package/parser/generic/completeAuthVariable.spec.js +0 -23
- package/parser/generic/completeEnvVariable.spec.js +0 -99
- package/parser/generic/completeErrorVariable.spec.js +0 -17
- package/parser/generic/completeInputVariable.spec.js +0 -53
- package/parser/generic/expressionFn.spec.js +0 -605
- package/parser/generic/filterFn.spec.js +0 -47
- package/parser/generic/functionAttrReq.spec.js +0 -353
- package/parser/generic/longFormVariable.spec.js +0 -25
- package/parser/generic/minimalFnBody.spec.js +0 -47
- package/parser/generic/mockAttribute.spec.js +0 -57
- package/parser/generic/multilineFilterFn.spec.js +0 -51
- package/parser/generic/objectWithAttributes.spec.js +0 -147
- package/parser/generic/requiredValueFnBody.spec.js +0 -56
- package/parser/generic/shortFormVariable.spec.js +0 -27
- package/parser/generic/stringArray.spec.js +0 -55
- package/parser/generic/tagsAttribute.spec.js +0 -47
- package/parser/generic/variableOnly.spec.js +0 -47
- package/parser/mcp_server_parser.spec.js +0 -478
- package/parser/mcp_server_trigger_parser.spec.js +0 -396
- package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
- package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
- package/parser/middleware_parser.spec.js +0 -230
- package/parser/multidoc.spec.js +0 -946
- package/parser/query_parser.spec.js +0 -202
- package/parser/realtime_channel_parser.spec.js +0 -20
- package/parser/realtime_trigger_parser.spec.js +0 -469
- package/parser/run_parser.spec.js +0 -100
- package/parser/table_parser.spec.js +0 -176
- package/parser/table_trigger_parser.spec.js +0 -478
- package/parser/task_parser.spec.js +0 -94
- package/parser/tests/agent/agent_parser.spec.js +0 -52
- package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
- package/parser/tests/api_group/api_group_parser.spec.js +0 -52
- package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
- package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
- package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
- package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
- package/parser/tests/function/function_parser.spec.js +0 -52
- package/parser/tests/function/valid_sources/all_controls.xs +0 -68
- package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
- package/parser/tests/function/valid_sources/all_storage.xs +0 -45
- package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
- package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
- package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
- package/parser/tests/function/valid_sources/filter_query.xs +0 -82
- package/parser/tests/function/valid_sources/large_regex.xs +0 -13
- package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
- package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
- package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
- package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
- package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
- package/parser/tests/function/valid_sources/webflow.xs +0 -18
- package/parser/tests/multidoc/multidoc_parser.spec.js +0 -55
- package/parser/tests/multidoc/valid_sources/function_stack.xs +0 -130603
- package/parser/tests/query/query_parser.spec.js +0 -54
- package/parser/tests/query/valid_sources/all_basics.xs +0 -51
- package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
- package/parser/tests/query/valid_sources/all_db.xs +0 -102
- package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
- package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
- package/parser/tests/query/valid_sources/all_math.xs +0 -53
- package/parser/tests/query/valid_sources/all_object.xs +0 -25
- package/parser/tests/query/valid_sources/all_redis.xs +0 -106
- package/parser/tests/query/valid_sources/all_security.xs +0 -105
- package/parser/tests/query/valid_sources/all_stream.xs +0 -69
- package/parser/tests/query/valid_sources/all_text.xs +0 -54
- package/parser/tests/query/valid_sources/all_util.xs +0 -66
- package/parser/tests/query/valid_sources/all_zip.xs +0 -39
- package/parser/tests/query/valid_sources/arrays.xs +0 -33
- package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
- package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
- package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
- package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
- package/parser/tests/query/valid_sources/query_cache.xs +0 -34
- package/parser/tests/query/valid_sources/query_example.xs +0 -43
- package/parser/tests/query/valid_sources/query_mini.xs +0 -11
- package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
- package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
- package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
- package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
- package/parser/tests/table/table_parser.spec.js +0 -52
- package/parser/tests/table/valid_sources/account.xs +0 -31
- package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
- package/parser/tests/table/valid_sources/basic_table.xs +0 -15
- package/parser/tests/table/valid_sources/empty_object.xs +0 -17
- package/parser/tests/table/valid_sources/empty_table.xs +0 -3
- package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
- package/parser/tests/table/valid_sources/relation.xs +0 -44
- package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
- package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
- package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
- package/parser/tests/table/valid_sources/view_table.xs +0 -62
- package/parser/tests/task/task_parser.spec.js +0 -53
- package/parser/tests/task/valid_sources/active_event.xs +0 -11
- package/parser/tests/task/valid_sources/all_events.xs +0 -17
- package/parser/tests/task/valid_sources/create_leak.xs +0 -165
- package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
- package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
- package/parser/tests/variable_test/coverage_check.xs +0 -293
- package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
- package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
- package/parser/tool_parser.spec.js +0 -115
- package/parser/variableValidator.spec.js +0 -179
- package/parser/workflow_test_parser.spec.js +0 -136
- package/parser/workspace_parser.spec.js +0 -142
- package/parser/workspace_trigger_parser.spec.js +0 -332
- package/toTmLanguage.js +0 -75
- package/utils.spec.js +0 -369
- package/workspace/crossFileValidator.spec.js +0 -654
- package/workspace/referenceTracking.spec.js +0 -420
- package/workspace/workspaceIndex.spec.js +0 -189
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
import { expect } from "chai";
|
|
2
|
-
import { describe, it } from "mocha";
|
|
3
|
-
import { xanoscriptParser } from "./parser.js";
|
|
4
|
-
|
|
5
|
-
describe("mcp_server", () => {
|
|
6
|
-
it("should parse a minimal mcp_server with only required fields", () => {
|
|
7
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
8
|
-
tools = []
|
|
9
|
-
canonical = "abc123"
|
|
10
|
-
}`);
|
|
11
|
-
|
|
12
|
-
expect(parser.errors).to.be.empty;
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
it("should parse mcp_server with string literal name", () => {
|
|
16
|
-
const parser = xanoscriptParser(`mcp_server "My Test Server" {
|
|
17
|
-
canonical = "abc123"
|
|
18
|
-
tools = []
|
|
19
|
-
}`);
|
|
20
|
-
|
|
21
|
-
expect(parser.errors).to.be.empty;
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
it("should parse mcp_server with identifier name", () => {
|
|
25
|
-
const parser = xanoscriptParser(`mcp_server my_test_server {
|
|
26
|
-
tools = []
|
|
27
|
-
canonical = "abc123"
|
|
28
|
-
}`);
|
|
29
|
-
|
|
30
|
-
expect(parser.errors).to.be.empty;
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
it("should fail when tools is missing", () => {
|
|
34
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
35
|
-
active = true
|
|
36
|
-
}`);
|
|
37
|
-
|
|
38
|
-
expect(parser.errors).to.not.be.empty;
|
|
39
|
-
expect(parser.errors[0].message).to.include("missing tools clause");
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
it("should parse mcp_server with active field", () => {
|
|
43
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
44
|
-
canonical = "abc123"
|
|
45
|
-
tools = []
|
|
46
|
-
active = true
|
|
47
|
-
}`);
|
|
48
|
-
|
|
49
|
-
expect(parser.errors).to.be.empty;
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("should parse mcp_server with active = false", () => {
|
|
53
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
54
|
-
canonical = "abc123"
|
|
55
|
-
tools = []
|
|
56
|
-
active = false
|
|
57
|
-
}`);
|
|
58
|
-
|
|
59
|
-
expect(parser.errors).to.be.empty;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("should parse mcp_server with description", () => {
|
|
63
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
64
|
-
canonical = "abc123"
|
|
65
|
-
tools = []
|
|
66
|
-
description = "This is a test MCP server"
|
|
67
|
-
}`);
|
|
68
|
-
|
|
69
|
-
expect(parser.errors).to.be.empty;
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("should parse mcp_server with docs as single line string", () => {
|
|
73
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
74
|
-
canonical = "abc123"
|
|
75
|
-
tools = []
|
|
76
|
-
docs = "This is documentation for the MCP server"
|
|
77
|
-
}`);
|
|
78
|
-
|
|
79
|
-
expect(parser.errors).to.be.empty;
|
|
80
|
-
});
|
|
81
|
-
|
|
82
|
-
it("should parse mcp_server with docs as multiline string", () => {
|
|
83
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
84
|
-
canonical = "abc123"
|
|
85
|
-
tools = []
|
|
86
|
-
docs = """
|
|
87
|
-
This is multiline documentation
|
|
88
|
-
for the MCP server
|
|
89
|
-
with multiple lines
|
|
90
|
-
"""
|
|
91
|
-
}`);
|
|
92
|
-
|
|
93
|
-
expect(parser.errors).to.be.empty;
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
it("should parse mcp_server with history clause", () => {
|
|
97
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
98
|
-
canonical = "abc123"
|
|
99
|
-
tools = []
|
|
100
|
-
history = 100
|
|
101
|
-
}`);
|
|
102
|
-
|
|
103
|
-
expect(parser.errors).to.be.empty;
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
it("should parse mcp_server with minimal history clause", () => {
|
|
107
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
108
|
-
tools = []
|
|
109
|
-
canonical = "abc123"
|
|
110
|
-
history = "inherit"
|
|
111
|
-
}`);
|
|
112
|
-
|
|
113
|
-
expect(parser.errors).to.be.empty;
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
it("should parse mcp_server with instructions as single line string", () => {
|
|
117
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
118
|
-
canonical = "abc123"
|
|
119
|
-
tools = []
|
|
120
|
-
instructions = "Follow these instructions carefully"
|
|
121
|
-
}`);
|
|
122
|
-
|
|
123
|
-
expect(parser.errors).to.be.empty;
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
it("should parse mcp_server with instructions as multiline string", () => {
|
|
127
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
128
|
-
canonical = "abc123"
|
|
129
|
-
tools = []
|
|
130
|
-
instructions = """
|
|
131
|
-
Step 1: Do this
|
|
132
|
-
Step 2: Do that
|
|
133
|
-
Step 3: Finish up
|
|
134
|
-
"""
|
|
135
|
-
}`);
|
|
136
|
-
|
|
137
|
-
expect(parser.errors).to.be.empty;
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
it("should parse mcp_server with tags", () => {
|
|
141
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
142
|
-
canonical = "abc123"
|
|
143
|
-
tools = []
|
|
144
|
-
tags = ["tag1", "tag2", "tag3"]
|
|
145
|
-
}`);
|
|
146
|
-
|
|
147
|
-
expect(parser.errors).to.be.empty;
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it("should parse mcp_server with empty tools array", () => {
|
|
151
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
152
|
-
canonical = "abc123"
|
|
153
|
-
tools = []
|
|
154
|
-
}`);
|
|
155
|
-
|
|
156
|
-
expect(parser.errors).to.be.empty;
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it("should parse mcp_server with single tool", () => {
|
|
160
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
161
|
-
canonical = "abc123"
|
|
162
|
-
tools = [{"name": "my_tool"}]
|
|
163
|
-
}`);
|
|
164
|
-
|
|
165
|
-
expect(parser.errors).to.be.empty;
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
it("should parse mcp_server with multiple tools", () => {
|
|
169
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
170
|
-
canonical = "abc123"
|
|
171
|
-
tools = [
|
|
172
|
-
{"name": "tool1"},
|
|
173
|
-
{"name": "tool2"},
|
|
174
|
-
{"name": "tool3"}
|
|
175
|
-
]
|
|
176
|
-
}`);
|
|
177
|
-
|
|
178
|
-
expect(parser.errors).to.be.empty;
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
it("should parse mcp_server with tool having active field", () => {
|
|
182
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
183
|
-
canonical = "abc123"
|
|
184
|
-
tools = [{"name": "my_tool", "active": true}]
|
|
185
|
-
}`);
|
|
186
|
-
|
|
187
|
-
expect(parser.errors).to.be.empty;
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
it("should parse mcp_server with tool having auth field", () => {
|
|
191
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
192
|
-
canonical = "abc123"
|
|
193
|
-
tools = [{"name": "my_tool", "auth": "bearer"}]
|
|
194
|
-
}`);
|
|
195
|
-
|
|
196
|
-
expect(parser.errors).to.be.empty;
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it("should parse mcp_server with tool having all fields", () => {
|
|
200
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
201
|
-
canonical = "abc123"
|
|
202
|
-
tools = [{"name": "my_tool", "active": false, "auth": "oauth"}]
|
|
203
|
-
}`);
|
|
204
|
-
|
|
205
|
-
expect(parser.errors).to.be.empty;
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
it("should parse mcp_server with mixed tool configurations", () => {
|
|
209
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
210
|
-
canonical = "abc123"
|
|
211
|
-
tools = [
|
|
212
|
-
{"name": "tool1"},
|
|
213
|
-
{"name": "tool2", "active": true},
|
|
214
|
-
{"name": "tool3", "auth": "api_key"},
|
|
215
|
-
{"name": "tool4", "active": false, "auth": "basic"}
|
|
216
|
-
]
|
|
217
|
-
}`);
|
|
218
|
-
|
|
219
|
-
expect(parser.errors).to.be.empty;
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
it("should fail when tool is missing required name field", () => {
|
|
223
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
224
|
-
canonical = "abc123"
|
|
225
|
-
tools = [{"active": true}]
|
|
226
|
-
}`);
|
|
227
|
-
|
|
228
|
-
expect(parser.errors).to.not.be.empty;
|
|
229
|
-
});
|
|
230
|
-
|
|
231
|
-
it("should fail when tool has invalid field type for active", () => {
|
|
232
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
233
|
-
canonical = "abc123"
|
|
234
|
-
tools = [{"name": "my_tool", "active": "yes"}]
|
|
235
|
-
}`);
|
|
236
|
-
|
|
237
|
-
expect(parser.errors).to.not.be.empty;
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
it("should parse mcp_server with all fields", () => {
|
|
241
|
-
const parser = xanoscriptParser(`mcp_server "Complete Test Server" {
|
|
242
|
-
canonical = "abc123"
|
|
243
|
-
active = true
|
|
244
|
-
description = "A complete test MCP server with all fields"
|
|
245
|
-
docs = """
|
|
246
|
-
This is the documentation for the MCP server.
|
|
247
|
-
It contains multiple lines of helpful information.
|
|
248
|
-
"""
|
|
249
|
-
history = 100
|
|
250
|
-
instructions = """
|
|
251
|
-
Follow these detailed instructions:
|
|
252
|
-
1. Initialize the server
|
|
253
|
-
2. Configure settings
|
|
254
|
-
3. Run the server
|
|
255
|
-
"""
|
|
256
|
-
tags = ["test", "complete", "mcp"]
|
|
257
|
-
tools = [
|
|
258
|
-
{"name": "tool1", "active": true},
|
|
259
|
-
{"name": "tool2", "auth": "bearer"}
|
|
260
|
-
]
|
|
261
|
-
}`);
|
|
262
|
-
|
|
263
|
-
expect(parser.errors).to.be.empty;
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
it("should parse mcp_server with fields in different order", () => {
|
|
267
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
268
|
-
tools = [{"name": "my_tool"}]
|
|
269
|
-
tags = ["tag1", "tag2"]
|
|
270
|
-
instructions = "Instructions here"
|
|
271
|
-
history = false
|
|
272
|
-
docs = "Documentation here"
|
|
273
|
-
description = "Server description"
|
|
274
|
-
canonical = "abc123"
|
|
275
|
-
active = false
|
|
276
|
-
}`);
|
|
277
|
-
|
|
278
|
-
expect(parser.errors).to.be.empty;
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
it("should parse mcp_server with newlines between fields", () => {
|
|
282
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
283
|
-
canonical = "abc123"
|
|
284
|
-
active = true
|
|
285
|
-
description = "Test server"
|
|
286
|
-
tools = [{"name": "test_tool"}]
|
|
287
|
-
}`);
|
|
288
|
-
|
|
289
|
-
expect(parser.errors).to.be.empty;
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
it("should parse mcp_server with multiple newlines", () => {
|
|
293
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
294
|
-
canonical = "abc123"
|
|
295
|
-
tools = []
|
|
296
|
-
active = true
|
|
297
|
-
|
|
298
|
-
}`);
|
|
299
|
-
|
|
300
|
-
expect(parser.errors).to.be.empty;
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
it("should fail when duplicate active field is present", () => {
|
|
304
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
305
|
-
tools = []
|
|
306
|
-
canonical = "abc123"
|
|
307
|
-
active = true
|
|
308
|
-
active = false
|
|
309
|
-
}`);
|
|
310
|
-
|
|
311
|
-
expect(parser.errors).to.not.be.empty;
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
it("should parse mcp_server with empty tags array", () => {
|
|
315
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
316
|
-
canonical = "abc123"
|
|
317
|
-
tools = []
|
|
318
|
-
tags = []
|
|
319
|
-
}`);
|
|
320
|
-
|
|
321
|
-
expect(parser.errors).to.be.empty;
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
it("should parse mcp_server with single tag", () => {
|
|
325
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
326
|
-
tools = []
|
|
327
|
-
canonical = "abc123"
|
|
328
|
-
tags = ["single"]
|
|
329
|
-
}`);
|
|
330
|
-
|
|
331
|
-
expect(parser.errors).to.be.empty;
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
it("should parse mcp_server with numeric values in tags", () => {
|
|
335
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
336
|
-
tools = []
|
|
337
|
-
canonical = "abc123"
|
|
338
|
-
tags = ["tag1", "tag2", "123", "456"]
|
|
339
|
-
}`);
|
|
340
|
-
|
|
341
|
-
expect(parser.errors).to.be.empty;
|
|
342
|
-
});
|
|
343
|
-
|
|
344
|
-
it("should parse mcp_server with trailing newlines", () => {
|
|
345
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
346
|
-
tools = []
|
|
347
|
-
canonical = "abc123"
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
`);
|
|
352
|
-
|
|
353
|
-
expect(parser.errors).to.be.empty;
|
|
354
|
-
});
|
|
355
|
-
|
|
356
|
-
it("should parse mcp_server with leading spaces", () => {
|
|
357
|
-
const parser = xanoscriptParser(` mcp_server test_server {
|
|
358
|
-
canonical = "abc123"
|
|
359
|
-
tools = []
|
|
360
|
-
}`);
|
|
361
|
-
|
|
362
|
-
expect(parser.errors).to.be.empty;
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it("should parse mcp_server with history inherit as false", () => {
|
|
366
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
367
|
-
canonical = "abc123"
|
|
368
|
-
tools = []
|
|
369
|
-
history = false
|
|
370
|
-
}`);
|
|
371
|
-
|
|
372
|
-
expect(parser.errors).to.be.empty;
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
it("should parse mcp_server with empty docs string", () => {
|
|
376
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
377
|
-
canonical = "abc123"
|
|
378
|
-
docs = ""
|
|
379
|
-
tools = []
|
|
380
|
-
}`);
|
|
381
|
-
|
|
382
|
-
expect(parser.errors).to.be.empty;
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
it("should parse mcp_server with empty instructions string", () => {
|
|
386
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
387
|
-
canonical = "abc123"
|
|
388
|
-
instructions = ""
|
|
389
|
-
tools = []
|
|
390
|
-
}`);
|
|
391
|
-
|
|
392
|
-
expect(parser.errors).to.be.empty;
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
it("should parse mcp_server with only canonical and tools", () => {
|
|
396
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
397
|
-
canonical = "abc123"
|
|
398
|
-
tools = [{"name": "tool1"}]
|
|
399
|
-
}`);
|
|
400
|
-
|
|
401
|
-
expect(parser.errors).to.be.empty;
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
it("should parse mcp_server with special characters in name", () => {
|
|
405
|
-
const parser = xanoscriptParser(`mcp_server test_server_123 {
|
|
406
|
-
tools = []
|
|
407
|
-
canonical = "abc123"
|
|
408
|
-
}`);
|
|
409
|
-
|
|
410
|
-
expect(parser.errors).to.be.empty;
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
it("should parse mcp_server with complex history configuration", () => {
|
|
414
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
415
|
-
canonical = "abc123"
|
|
416
|
-
history = 100
|
|
417
|
-
tools = []
|
|
418
|
-
}`);
|
|
419
|
-
|
|
420
|
-
expect(parser.errors).to.be.empty;
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
it("should fail with empty canonical value", () => {
|
|
424
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
425
|
-
canonical = ""
|
|
426
|
-
tools = []
|
|
427
|
-
}`);
|
|
428
|
-
|
|
429
|
-
expect(parser.errors).to.not.be.empty;
|
|
430
|
-
expect(parser.errors[0].message).to.include("canonical cannot be empty");
|
|
431
|
-
});
|
|
432
|
-
|
|
433
|
-
it("should parse mcp_server with multiline docs using triple quotes", () => {
|
|
434
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
435
|
-
tools = []
|
|
436
|
-
canonical = "abc123"
|
|
437
|
-
docs = """
|
|
438
|
-
Line 1
|
|
439
|
-
Line 2
|
|
440
|
-
Line 3
|
|
441
|
-
"""
|
|
442
|
-
}`);
|
|
443
|
-
expect(parser.errors).to.be.empty;
|
|
444
|
-
});
|
|
445
|
-
|
|
446
|
-
it("should parse mcp_server with multiline instructions using triple quotes", () => {
|
|
447
|
-
const parser = xanoscriptParser(`mcp_server test_server {
|
|
448
|
-
tools = []
|
|
449
|
-
canonical = "abc123"
|
|
450
|
-
instructions = """
|
|
451
|
-
Step 1
|
|
452
|
-
Step 2
|
|
453
|
-
Step 3
|
|
454
|
-
"""
|
|
455
|
-
}`);
|
|
456
|
-
|
|
457
|
-
expect(parser.errors).to.be.empty;
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
it("should parse mcp_server with minimal syntax", () => {
|
|
461
|
-
const parser = xanoscriptParser(`mcp_server s {
|
|
462
|
-
canonical = "x"
|
|
463
|
-
tools = []
|
|
464
|
-
}`);
|
|
465
|
-
|
|
466
|
-
expect(parser.errors).to.be.empty;
|
|
467
|
-
});
|
|
468
|
-
|
|
469
|
-
it("should parse mcp_server with compact syntax and multiple fields", () => {
|
|
470
|
-
const parser = xanoscriptParser(`mcp_server s {
|
|
471
|
-
canonical = "x"
|
|
472
|
-
active = true
|
|
473
|
-
tools = [{"name": "t"}]
|
|
474
|
-
}`);
|
|
475
|
-
|
|
476
|
-
expect(parser.errors).to.be.empty;
|
|
477
|
-
});
|
|
478
|
-
});
|