@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.
Files changed (339) hide show
  1. package/lexer/tokens.js +22 -3
  2. package/package.json +25 -1
  3. package/.claude/memory/feedback_no_git.md +0 -11
  4. package/.claude/settings.local.json +0 -21
  5. package/.github/copilot-instructions.md +0 -190
  6. package/.github/workflows/ci.yml +0 -31
  7. package/.husky/pre-commit +0 -1
  8. package/CLAUDE.md +0 -256
  9. package/eslint.config.js +0 -24
  10. package/lexer/comment.spec.js +0 -77
  11. package/lexer/multiline.spec.js +0 -179
  12. package/lexer/tests/query/query_lexer.spec.js +0 -36
  13. package/lexer/tests/query/valid_sources/basic_query.xs +0 -44
  14. package/lexer/tests/query/valid_sources/db_query.xs +0 -77
  15. package/lexer/tests/query/valid_sources/empty_query.xs +0 -5
  16. package/lexer/tests/query/valid_sources/header_query.xs +0 -15
  17. package/lexer/tests/table/basic_table.xs +0 -17
  18. package/lexer/tests/table/empty_table.xs +0 -3
  19. package/lexer/tests/table/table_lexer.spec.js +0 -324
  20. package/lexer/utils.spec.js +0 -61
  21. package/onCompletion/contentAssist.spec.js +0 -275
  22. package/onDefinition/onDefinition.spec.js +0 -313
  23. package/onHover/FilterMessageProvider.spec.js +0 -85
  24. package/onHover/FunctionMessageProvider.spec.js +0 -128
  25. package/onHover/InputFilterMessageProvider.spec.js +0 -329
  26. package/onHover/QueryFilterMessageProvider.spec.js +0 -164
  27. package/onHover/onHoverDocument.spec.js +0 -660
  28. package/parser/addon_parser.spec.js +0 -88
  29. package/parser/agent_parser.spec.js +0 -599
  30. package/parser/agent_trigger_parser.spec.js +0 -525
  31. package/parser/api_group_parser.spec.js +0 -137
  32. package/parser/attributes/columnDefaultValueAttribute.spec.js +0 -49
  33. package/parser/attributes/descriptionFieldAttribute.spec.js +0 -39
  34. package/parser/attributes/disabledFieldAttribute.spec.js +0 -34
  35. package/parser/attributes/docsFieldAttribute.spec.js +0 -44
  36. package/parser/attributes/guidFieldAttribute.spec.js +0 -93
  37. package/parser/attributes/inputFilterFn.spec.js +0 -39
  38. package/parser/attributes/sensitiveFieldAttribute.spec.js +0 -39
  39. package/parser/attributes/valueFieldAttribute.spec.js +0 -54
  40. package/parser/attributes/valuesFieldAttribute.spec.js +0 -44
  41. package/parser/attributes/visibilityFieldAttribute.spec.js +0 -44
  42. package/parser/branch_parser.spec.js +0 -34
  43. package/parser/clauses/agentClause.spec.js +0 -34
  44. package/parser/clauses/authClause.spec.js +0 -39
  45. package/parser/clauses/cacheClause.spec.js +0 -103
  46. package/parser/clauses/canonicalClause.spec.js +0 -34
  47. package/parser/clauses/channelClause.spec.js +0 -34
  48. package/parser/clauses/dbTableClause.spec.js +0 -34
  49. package/parser/clauses/historyClause.spec.js +0 -53
  50. package/parser/clauses/indexClause.spec.js +0 -47
  51. package/parser/clauses/inputClause.spec.js +0 -96
  52. package/parser/clauses/mcpServerClause.spec.js +0 -34
  53. package/parser/clauses/middlewareClause.spec.js +0 -161
  54. package/parser/clauses/nakedStackFn.spec.js +0 -73
  55. package/parser/clauses/responseClause.spec.js +0 -47
  56. package/parser/clauses/scheduleClause.spec.js +0 -71
  57. package/parser/clauses/schemaClause.spec.js +0 -102
  58. package/parser/clauses/testClause.spec.js +0 -69
  59. package/parser/clauses/viewClause.spec.js +0 -163
  60. package/parser/definitions/arraySlice.spec.js +0 -49
  61. package/parser/definitions/columnDefinition.spec.js +0 -199
  62. package/parser/definitions/dbLinkColumnDefinition.spec.js +0 -45
  63. package/parser/definitions/enumColumnDefinition.spec.js +0 -108
  64. package/parser/definitions/filterDefinition.spec.js +0 -43
  65. package/parser/definitions/objectColumnDefinition.spec.js +0 -118
  66. package/parser/function_parser.spec.js +0 -131
  67. package/parser/functions/actionCallFn.spec.js +0 -51
  68. package/parser/functions/addonCallFn.spec.js +0 -41
  69. package/parser/functions/ai/aiAgentRunFn.spec.js +0 -94
  70. package/parser/functions/ai/aiExternalMcpServerDetailsFn.spec.js +0 -85
  71. package/parser/functions/ai/aiExternalMcpToolListFn.spec.js +0 -85
  72. package/parser/functions/ai/aiExternalMcpToolRunFn.spec.js +0 -101
  73. package/parser/functions/aiFn.spec.js +0 -51
  74. package/parser/functions/api/apiCallFn.spec.js +0 -62
  75. package/parser/functions/api/apiLambdaFn.spec.js +0 -63
  76. package/parser/functions/api/apiRealtimeEventFn.spec.js +0 -82
  77. package/parser/functions/api/apiRequestFn.spec.js +0 -113
  78. package/parser/functions/api/apiStreamFn.spec.js +0 -44
  79. package/parser/functions/api/webflowRequestFn.spec.js +0 -114
  80. package/parser/functions/array/arrayDifferenceFn.spec.js +0 -34
  81. package/parser/functions/array/arrayFindFn.spec.js +0 -44
  82. package/parser/functions/array/arrayGroupByFn.spec.js +0 -41
  83. package/parser/functions/array/arrayIntersectionFn.spec.js +0 -22
  84. package/parser/functions/array/arrayMapFn.spec.js +0 -37
  85. package/parser/functions/array/arrayNoValueAs.spec.js +0 -56
  86. package/parser/functions/array/arrayPartitionFn.spec.js +0 -29
  87. package/parser/functions/array/arrayUnionFn.spec.js +0 -22
  88. package/parser/functions/array/arrayValueIfAs.spec.js +0 -54
  89. package/parser/functions/array/arrayValueOnly.spec.js +0 -61
  90. package/parser/functions/array/valueAttrOnly.spec.js +0 -61
  91. package/parser/functions/cloud/cloudAlgoliaRequestFn.spec.js +0 -30
  92. package/parser/functions/cloud/cloudAwsS3Fn.spec.js +0 -21
  93. package/parser/functions/cloud/cloudDeleteFileFn.spec.js +0 -25
  94. package/parser/functions/cloud/cloudGetFileInfoFn.spec.js +0 -25
  95. package/parser/functions/cloud/cloudListDirectoryFn.spec.js +0 -26
  96. package/parser/functions/cloud/cloudReadFileFn.spec.js +0 -25
  97. package/parser/functions/cloud/cloudSearchDocumentFn.spec.js +0 -28
  98. package/parser/functions/cloud/cloudSearchQueryFn.spec.js +0 -32
  99. package/parser/functions/cloud/cloudSearchRequestFn.spec.js +0 -32
  100. package/parser/functions/cloud/cloudSignUrlFn.spec.js +0 -26
  101. package/parser/functions/cloud/cloudStorageFn.spec.js +0 -21
  102. package/parser/functions/cloud/cloudUploadFileFn.spec.js +0 -29
  103. package/parser/functions/controls/awaitFn.spec.js +0 -48
  104. package/parser/functions/controls/conditionalFn.spec.js +0 -188
  105. package/parser/functions/controls/forEachFn.spec.js +0 -109
  106. package/parser/functions/controls/forFn.spec.js +0 -85
  107. package/parser/functions/controls/functionRunFn.spec.js +0 -77
  108. package/parser/functions/controls/groupFn.spec.js +0 -63
  109. package/parser/functions/controls/preconditionFn.spec.js +0 -107
  110. package/parser/functions/controls/returnFn.spec.js +0 -44
  111. package/parser/functions/controls/switchFn.spec.js +0 -118
  112. package/parser/functions/controls/throwFn.spec.js +0 -56
  113. package/parser/functions/controls/tryCatchFn.spec.js +0 -193
  114. package/parser/functions/controls/whileFn.spec.js +0 -94
  115. package/parser/functions/db/dbAddFn.spec.js +0 -72
  116. package/parser/functions/db/dbAddOrEditFn.spec.js +0 -97
  117. package/parser/functions/db/dbBulkAddFn.spec.js +0 -94
  118. package/parser/functions/db/dbBulkDeleteFn.spec.js +0 -28
  119. package/parser/functions/db/dbBulkPatchFn.spec.js +0 -42
  120. package/parser/functions/db/dbBulkUpdateFn.spec.js +0 -42
  121. package/parser/functions/db/dbDelFn.spec.js +0 -67
  122. package/parser/functions/db/dbDirectQueryFn.spec.js +0 -104
  123. package/parser/functions/db/dbEditFn.spec.js +0 -122
  124. package/parser/functions/db/dbExternalDirectQueryFn.spec.js +0 -103
  125. package/parser/functions/db/dbGetFn.spec.js +0 -117
  126. package/parser/functions/db/dbHasFn.spec.js +0 -62
  127. package/parser/functions/db/dbPatchFn.spec.js +0 -88
  128. package/parser/functions/db/dbQueryFn.spec.js +0 -380
  129. package/parser/functions/db/dbSchemaFn.spec.js +0 -42
  130. package/parser/functions/db/dbSetDatasourceFn.spec.js +0 -44
  131. package/parser/functions/db/dbTransactionFn.spec.js +0 -63
  132. package/parser/functions/db/dbTruncateFn.spec.js +0 -42
  133. package/parser/functions/debug/debugLogFn.spec.js +0 -44
  134. package/parser/functions/debug/debugStopFn.spec.js +0 -44
  135. package/parser/functions/expect/unitExpectToBeWithinFn.spec.js +0 -63
  136. package/parser/functions/expect/unitExpectToThrowFn.spec.js +0 -40
  137. package/parser/functions/expect/unitExpectWithArgumentsFn.spec.js +0 -355
  138. package/parser/functions/expect/unitExpectWithoutArgumentsFn.spec.js +0 -69
  139. package/parser/functions/expect/workflowExpectToBeWithinFn.spec.js +0 -70
  140. package/parser/functions/expect/workflowExpectToThrowFn.spec.js +0 -56
  141. package/parser/functions/expect/workflowExpectWithArgumentsFn.spec.js +0 -308
  142. package/parser/functions/expect/workflowExpectWithoutArgumentsFn.spec.js +0 -87
  143. package/parser/functions/math/allMathFn.spec.js +0 -100
  144. package/parser/functions/middlewareCallFn.spec.js +0 -44
  145. package/parser/functions/object/objectEntriesFn.spec.js +0 -44
  146. package/parser/functions/object/objectKeysFn.spec.js +0 -44
  147. package/parser/functions/object/objectValuesFn.spec.js +0 -44
  148. package/parser/functions/redis/redisCountFn.spec.js +0 -58
  149. package/parser/functions/redis/redisDecrFn.spec.js +0 -47
  150. package/parser/functions/redis/redisDelFn.spec.js +0 -58
  151. package/parser/functions/redis/redisGetFn.spec.js +0 -67
  152. package/parser/functions/redis/redisHasFn.spec.js +0 -58
  153. package/parser/functions/redis/redisIncrFn.spec.js +0 -74
  154. package/parser/functions/redis/redisKeysFn.spec.js +0 -67
  155. package/parser/functions/redis/redisPopFn.spec.js +0 -75
  156. package/parser/functions/redis/redisPushFn.spec.js +0 -71
  157. package/parser/functions/redis/redisRangeFn.spec.js +0 -80
  158. package/parser/functions/redis/redisRateLimitFn.spec.js +0 -87
  159. package/parser/functions/redis/redisRemoveFn.spec.js +0 -65
  160. package/parser/functions/redis/redisSetFn.spec.js +0 -89
  161. package/parser/functions/redis/redisShiftFn.spec.js +0 -75
  162. package/parser/functions/redis/redisUnshiftFn.spec.js +0 -73
  163. package/parser/functions/schema/schemaFn.spec.js +0 -92
  164. package/parser/functions/schema/schemaParseArrayFn.spec.js +0 -134
  165. package/parser/functions/schema/schemaParseAttributeFn.spec.js +0 -285
  166. package/parser/functions/schema/schemaParseConstantFn.spec.js +0 -122
  167. package/parser/functions/schema/schemaParseEnum.spec.js +0 -47
  168. package/parser/functions/schema/schemaParseImmutableFn.spec.js +0 -99
  169. package/parser/functions/schema/schemaParseObjectFn.spec.js +0 -223
  170. package/parser/functions/schema/utils.spec.js +0 -27
  171. package/parser/functions/security/securityCheckPasswordFn.spec.js +0 -22
  172. package/parser/functions/security/securityCreateAuthTokenFn.spec.js +0 -51
  173. package/parser/functions/security/securityCreateCurveKeyFn.spec.js +0 -22
  174. package/parser/functions/security/securityCreatePasswordFn.spec.js +0 -26
  175. package/parser/functions/security/securityCreateRsaKeyFn.spec.js +0 -22
  176. package/parser/functions/security/securityCreateSecretKeyFn.spec.js +0 -22
  177. package/parser/functions/security/securityCreateUuidFn.spec.js +0 -27
  178. package/parser/functions/security/securityDecryptFn.spec.js +0 -24
  179. package/parser/functions/security/securityEncryptFn.spec.js +0 -24
  180. package/parser/functions/security/securityJweDecodeFn.spec.js +0 -26
  181. package/parser/functions/security/securityJweDecodeLegacyFn.spec.js +0 -26
  182. package/parser/functions/security/securityJweEncodeFn.spec.js +0 -26
  183. package/parser/functions/security/securityJweEncodeLegacyFn.spec.js +0 -25
  184. package/parser/functions/security/securityJwsDecodeFn.spec.js +0 -25
  185. package/parser/functions/security/securityJwsEncodeFn.spec.js +0 -25
  186. package/parser/functions/security/securityRandomBytesFn.spec.js +0 -21
  187. package/parser/functions/security/securityRandomNumberFn.spec.js +0 -22
  188. package/parser/functions/storage/storageCreateAttachmentFn.spec.js +0 -87
  189. package/parser/functions/storage/storageCreateAudioFn.spec.js +0 -98
  190. package/parser/functions/storage/storageCreateFileResourceFn.spec.js +0 -72
  191. package/parser/functions/storage/storageCreateImageFn.spec.js +0 -98
  192. package/parser/functions/storage/storageCreateVideoFn.spec.js +0 -99
  193. package/parser/functions/storage/storageDeleteFileFn.spec.js +0 -67
  194. package/parser/functions/storage/storageReadFileResourceFn.spec.js +0 -60
  195. package/parser/functions/storage/storageSignPrivateUrlFn.spec.js +0 -72
  196. package/parser/functions/stream/streamFromCsvFn.spec.js +0 -69
  197. package/parser/functions/stream/streamFromJsonlFn.spec.js +0 -47
  198. package/parser/functions/stream/streamFromRequestFn.spec.js +0 -103
  199. package/parser/functions/text/allTextWithReturnValueFn.spec.js +0 -100
  200. package/parser/functions/text/allTextWithoutReturnValueFn.spec.js +0 -122
  201. package/parser/functions/toolCallFn.spec.js +0 -28
  202. package/parser/functions/triggerCallFn.spec.js +0 -51
  203. package/parser/functions/unitExpectFn.spec.js +0 -21
  204. package/parser/functions/util/utilGeoDistanceFn.spec.js +0 -79
  205. package/parser/functions/util/utilGetAllInputFn.spec.js +0 -33
  206. package/parser/functions/util/utilGetEnvFn.spec.js +0 -33
  207. package/parser/functions/util/utilGetRawInputFn.spec.js +0 -62
  208. package/parser/functions/util/utilGetVarsFn.spec.js +0 -33
  209. package/parser/functions/util/utilIpLookupFn.spec.js +0 -37
  210. package/parser/functions/util/utilPostProcessFn.spec.js +0 -63
  211. package/parser/functions/util/utilSendEmailFn.spec.js +0 -62
  212. package/parser/functions/util/utilSetHeaderFn.spec.js +0 -48
  213. package/parser/functions/util/utilSleepFn.spec.js +0 -44
  214. package/parser/functions/util/utilTemplateFn.spec.js +0 -78
  215. package/parser/functions/varFn.spec.js +0 -332
  216. package/parser/functions/workflowExpectFn.spec.js +0 -32
  217. package/parser/functions/zip/zipAddToArchiveFn.spec.js +0 -78
  218. package/parser/functions/zip/zipCreateArchiveFn.spec.js +0 -53
  219. package/parser/functions/zip/zipDeleteFromArchiveFn.spec.js +0 -69
  220. package/parser/functions/zip/zipExtractFn.spec.js +0 -52
  221. package/parser/functions/zip/zipViewContentsFn.spec.js +0 -52
  222. package/parser/generic/arrayWithValues.spec.js +0 -72
  223. package/parser/generic/asVariable.spec.js +0 -117
  224. package/parser/generic/assignableVariableAs.spec.js +0 -126
  225. package/parser/generic/assignableVariableProperty.spec.js +0 -138
  226. package/parser/generic/castedValue.spec.js +0 -29
  227. package/parser/generic/chainedIdentifier.spec.js +0 -89
  228. package/parser/generic/completeAuthVariable.spec.js +0 -23
  229. package/parser/generic/completeEnvVariable.spec.js +0 -99
  230. package/parser/generic/completeErrorVariable.spec.js +0 -17
  231. package/parser/generic/completeInputVariable.spec.js +0 -53
  232. package/parser/generic/expressionFn.spec.js +0 -605
  233. package/parser/generic/filterFn.spec.js +0 -47
  234. package/parser/generic/functionAttrReq.spec.js +0 -353
  235. package/parser/generic/longFormVariable.spec.js +0 -25
  236. package/parser/generic/minimalFnBody.spec.js +0 -47
  237. package/parser/generic/mockAttribute.spec.js +0 -57
  238. package/parser/generic/multilineFilterFn.spec.js +0 -51
  239. package/parser/generic/objectWithAttributes.spec.js +0 -147
  240. package/parser/generic/requiredValueFnBody.spec.js +0 -56
  241. package/parser/generic/shortFormVariable.spec.js +0 -27
  242. package/parser/generic/stringArray.spec.js +0 -55
  243. package/parser/generic/tagsAttribute.spec.js +0 -47
  244. package/parser/generic/variableOnly.spec.js +0 -47
  245. package/parser/mcp_server_parser.spec.js +0 -478
  246. package/parser/mcp_server_trigger_parser.spec.js +0 -396
  247. package/parser/metadata/columnMetadataDefinition.spec.js +0 -47
  248. package/parser/metadata/enumColumnMetadataDefinition.spec.js +0 -81
  249. package/parser/middleware_parser.spec.js +0 -230
  250. package/parser/multidoc.spec.js +0 -946
  251. package/parser/query_parser.spec.js +0 -202
  252. package/parser/realtime_channel_parser.spec.js +0 -20
  253. package/parser/realtime_trigger_parser.spec.js +0 -469
  254. package/parser/run_parser.spec.js +0 -100
  255. package/parser/table_parser.spec.js +0 -176
  256. package/parser/table_trigger_parser.spec.js +0 -478
  257. package/parser/task_parser.spec.js +0 -94
  258. package/parser/tests/agent/agent_parser.spec.js +0 -52
  259. package/parser/tests/agent/valid_sources/customer_servier_agent.xs +0 -45
  260. package/parser/tests/api_group/api_group_parser.spec.js +0 -52
  261. package/parser/tests/api_group/valid_sources/api_group_history.xs +0 -4
  262. package/parser/tests/api_group/valid_sources/basic_api_group.xs +0 -3
  263. package/parser/tests/api_group/valid_sources/complete_api_group.xs +0 -7
  264. package/parser/tests/api_group/valid_sources/protected_api_group.xs +0 -7
  265. package/parser/tests/function/function_parser.spec.js +0 -52
  266. package/parser/tests/function/valid_sources/all_controls.xs +0 -68
  267. package/parser/tests/function/valid_sources/all_query_return_types.xs +0 -227
  268. package/parser/tests/function/valid_sources/all_storage.xs +0 -45
  269. package/parser/tests/function/valid_sources/discord_poll_send_to_slack.xs +0 -133
  270. package/parser/tests/function/valid_sources/expression_in_response.xs +0 -22
  271. package/parser/tests/function/valid_sources/filter_by_value.xs +0 -55
  272. package/parser/tests/function/valid_sources/filter_query.xs +0 -82
  273. package/parser/tests/function/valid_sources/large_regex.xs +0 -13
  274. package/parser/tests/function/valid_sources/ledash_ends_with.xs +0 -90
  275. package/parser/tests/function/valid_sources/multiline_description.xs +0 -28
  276. package/parser/tests/function/valid_sources/multiline_expr.xs +0 -41
  277. package/parser/tests/function/valid_sources/set_theory_fn.xs +0 -129
  278. package/parser/tests/function/valid_sources/simple_unit_test.xs +0 -33
  279. package/parser/tests/function/valid_sources/valid_officer.xs +0 -57
  280. package/parser/tests/function/valid_sources/webflow.xs +0 -18
  281. package/parser/tests/multidoc/multidoc_parser.spec.js +0 -55
  282. package/parser/tests/multidoc/valid_sources/function_stack.xs +0 -130603
  283. package/parser/tests/query/query_parser.spec.js +0 -54
  284. package/parser/tests/query/valid_sources/all_basics.xs +0 -51
  285. package/parser/tests/query/valid_sources/all_cloud.xs +0 -141
  286. package/parser/tests/query/valid_sources/all_db.xs +0 -102
  287. package/parser/tests/query/valid_sources/all_external_db.xs +0 -43
  288. package/parser/tests/query/valid_sources/all_keywords.xs +0 -65
  289. package/parser/tests/query/valid_sources/all_math.xs +0 -53
  290. package/parser/tests/query/valid_sources/all_object.xs +0 -25
  291. package/parser/tests/query/valid_sources/all_redis.xs +0 -106
  292. package/parser/tests/query/valid_sources/all_security.xs +0 -105
  293. package/parser/tests/query/valid_sources/all_stream.xs +0 -69
  294. package/parser/tests/query/valid_sources/all_text.xs +0 -54
  295. package/parser/tests/query/valid_sources/all_util.xs +0 -66
  296. package/parser/tests/query/valid_sources/all_zip.xs +0 -39
  297. package/parser/tests/query/valid_sources/arrays.xs +0 -33
  298. package/parser/tests/query/valid_sources/disabled_response.xs +0 -27
  299. package/parser/tests/query/valid_sources/multiline_lambda_GET.xs +0 -50
  300. package/parser/tests/query/valid_sources/mutliline_query.xs +0 -140
  301. package/parser/tests/query/valid_sources/patch_expression_multiline.xs +0 -27
  302. package/parser/tests/query/valid_sources/query_cache.xs +0 -34
  303. package/parser/tests/query/valid_sources/query_example.xs +0 -43
  304. package/parser/tests/query/valid_sources/query_mini.xs +0 -11
  305. package/parser/tests/query/valid_sources/query_rich_inputs.xs +0 -32
  306. package/parser/tests/query/valid_sources/simple_unit_test.xs +0 -33
  307. package/parser/tests/query/valid_sources/test_with_slashes.xs +0 -22
  308. package/parser/tests/query/valid_sources/with_unit_test.xs +0 -97
  309. package/parser/tests/table/table_parser.spec.js +0 -52
  310. package/parser/tests/table/valid_sources/account.xs +0 -31
  311. package/parser/tests/table/valid_sources/all_basic_columns.xs +0 -44
  312. package/parser/tests/table/valid_sources/basic_table.xs +0 -15
  313. package/parser/tests/table/valid_sources/empty_object.xs +0 -17
  314. package/parser/tests/table/valid_sources/empty_table.xs +0 -3
  315. package/parser/tests/table/valid_sources/multiline_index.xs +0 -33
  316. package/parser/tests/table/valid_sources/relation.xs +0 -44
  317. package/parser/tests/table/valid_sources/rich_columns.xs +0 -31
  318. package/parser/tests/table/valid_sources/table_with_comments.xs +0 -17
  319. package/parser/tests/table/valid_sources/table_with_search_index.xs +0 -31
  320. package/parser/tests/table/valid_sources/view_table.xs +0 -62
  321. package/parser/tests/task/task_parser.spec.js +0 -53
  322. package/parser/tests/task/valid_sources/active_event.xs +0 -11
  323. package/parser/tests/task/valid_sources/all_events.xs +0 -17
  324. package/parser/tests/task/valid_sources/create_leak.xs +0 -165
  325. package/parser/tests/task/valid_sources/daily_sales_report.xs +0 -56
  326. package/parser/tests/task/valid_sources/inactive_event.xs +0 -11
  327. package/parser/tests/variable_test/coverage_check.xs +0 -293
  328. package/parser/tests/workflow_test/valid_sources/basic_workflow_test.xs +0 -13
  329. package/parser/tests/workflow_test/workflow_test_parser.spec.js +0 -52
  330. package/parser/tool_parser.spec.js +0 -115
  331. package/parser/variableValidator.spec.js +0 -179
  332. package/parser/workflow_test_parser.spec.js +0 -136
  333. package/parser/workspace_parser.spec.js +0 -142
  334. package/parser/workspace_trigger_parser.spec.js +0 -332
  335. package/toTmLanguage.js +0 -75
  336. package/utils.spec.js +0 -369
  337. package/workspace/crossFileValidator.spec.js +0 -654
  338. package/workspace/referenceTracking.spec.js +0 -420
  339. package/workspace/workspaceIndex.spec.js +0 -189
@@ -1,88 +0,0 @@
1
- import { expect } from "chai";
2
- import { describe, it } from "mocha";
3
- import { xanoscriptParser } from "./parser.js";
4
-
5
- describe("addon_parser", () => {
6
- it("should parse a basic addon", () => {
7
- const parser = xanoscriptParser(`addon foo {
8
- input {
9
- }
10
-
11
- stack {
12
- }
13
- }`);
14
- expect(parser.errors).to.be.empty;
15
- });
16
-
17
- it("should parse a basic a string addon url", () => {
18
- const parser = xanoscriptParser(`addon "foo/bar" {
19
- input {
20
- }
21
-
22
- stack {
23
- }
24
- }`);
25
-
26
- expect(parser.errors).to.be.empty;
27
- });
28
-
29
- it("should accept an input and a db.query statement", () => {
30
- const parser = xanoscriptParser(`addon tweet_liked_by_user {
31
- input {
32
- // ID of the tweet to check
33
- int tweet_id? {
34
- table = "tweet"
35
- }
36
-
37
- // ID of the user to check
38
- int user_id? {
39
- table = "user"
40
- }
41
- }
42
-
43
- stack {
44
- db.query like {
45
- where = $db.like.tweet_id == $input.tweet_id && $db.like.user_id == $input.user_id
46
- return = {type: "exists"}
47
- }
48
- }
49
- }`);
50
-
51
- expect(parser.warnings).to.be.empty;
52
- expect(parser.errors).to.be.empty;
53
- });
54
-
55
- it("should not accept an input that is not a db.query", () => {
56
- const parser = xanoscriptParser(`addon post_author {
57
- input {
58
- int user_id {
59
- table = "user"
60
- description = "The ID of the user/author"
61
- }
62
- }
63
-
64
- stack {
65
- db.get user {
66
- field_name = "id"
67
- field_value = $input.user_id
68
- output = ["id", "name", "avatar_url"]
69
- } as $author
70
- }
71
- }`);
72
-
73
- expect(parser.errors).to.not.be.empty;
74
- });
75
-
76
- it("addon don't accept dynamic params", () => {
77
- const parser = xanoscriptParser(`addon foo/{user_id} {
78
- input {
79
- text user_id filters=trim
80
- }
81
-
82
- stack {
83
- }
84
- }`);
85
-
86
- expect(parser.errors).to.not.be.empty;
87
- });
88
- });
@@ -1,599 +0,0 @@
1
- import { expect } from "chai";
2
- import { describe, it } from "mocha";
3
- import { xanoscriptParser } from "./parser.js";
4
-
5
- describe("agent", () => {
6
- it("should parse a basic agent", () => {
7
- const parser = xanoscriptParser(`agent sadf {
8
- canonical = "blFYWn_e"
9
-
10
- llm = {
11
- type : "xano-free"
12
- system_prompt: "You are a helpful AI Agent that completes tasks accurately. When you need additional information to complete a task, use the available tools. Always explain your reasoning and provide clear responses."
13
- max_steps : 5
14
- prompt : "some prompt"
15
- }
16
-
17
- tools = []
18
- }`);
19
-
20
- expect(parser.errors).to.be.empty;
21
- });
22
-
23
- it("should require a type", () => {
24
- const parser = xanoscriptParser(`agent sadf {
25
- canonical = "blFYWn_e"
26
-
27
- llm = {
28
- system_prompt: "You are a helpful AI Agent that completes tasks accurately. When you need additional information to complete a task, use the available tools. Always explain your reasoning and provide clear responses."
29
- max_steps : 5
30
- prompt : "some prompt"
31
- }
32
-
33
- tools = []
34
- }`);
35
-
36
- expect(parser.errors).to.not.be.empty;
37
- });
38
-
39
- it("should fail on invalid agent type", () => {
40
- const parser = xanoscriptParser(`agent sadf {
41
- canonical = "blFYWn_e"
42
-
43
- llm = {
44
- type : "yoyoyo"
45
- system_prompt: "You are a helpful AI Agent that completes tasks accurately. When you need additional information to complete a task, use the available tools. Always explain your reasoning and provide clear responses."
46
- max_steps : 5
47
- prompt : "some prompt"
48
- }
49
-
50
- tools = []
51
- }`);
52
-
53
- expect(parser.errors).to.not.be.empty;
54
- });
55
-
56
- it("should parse a basic agent with tags", () => {
57
- const parser = xanoscriptParser(`agent sadf {
58
- canonical = "blFYWn_e"
59
- tags = ["a", "b", "c"]
60
-
61
- llm = {
62
- type : "xano-free"
63
- system_prompt: "You are a helpful AI Agent that completes tasks accurately. When you need additional information to complete a task, use the available tools. Always explain your reasoning and provide clear responses."
64
- max_steps : 5
65
- prompt : "some prompt"
66
- }
67
-
68
- tools = []
69
- }`);
70
-
71
- expect(parser.errors).to.be.empty;
72
- });
73
-
74
- it("should parse an anthropic agent", () => {
75
- const parser = xanoscriptParser(`agent sadf {
76
- canonical = "blFYWn_e"
77
- llm = {
78
- type : "anthropic"
79
- system_prompt: "You are a helpful AI Agent that completes tasks accurately."
80
- max_steps : 5
81
- prompt : """
82
- some multi-line
83
- prompt
84
- """
85
- model : "claude-4-sonnet-20250514"
86
- temperature: 3
87
- reasoning : true
88
- headers : "[]"
89
- }
90
- tools = []
91
- }`);
92
-
93
- expect(parser.errors).to.be.empty;
94
- });
95
-
96
- it("should parse an anthropic agent with optional fields", () => {
97
- const parser = xanoscriptParser(`agent sadf {
98
- canonical = "blFYWn_e"
99
- llm = {
100
- type : "anthropic"
101
- system_prompt: "You are a helpful AI Agent."
102
- max_steps : 10
103
- prompt : "some prompt"
104
- model : "claude-4-sonnet-20250514"
105
- temperature: 0.7
106
- reasoning : false
107
- headers : "{}"
108
- api_key : "test-key"
109
- thinking_tokens: 1000
110
- baseURL : "https://api.anthropic.com"
111
- }
112
- tools = []
113
- }`);
114
-
115
- expect(parser.errors).to.be.empty;
116
- });
117
-
118
- it("should parse a google_genai agent", () => {
119
- const parser = xanoscriptParser(`agent test_google {
120
- canonical = "test_123"
121
- llm = {
122
- type : "google-genai"
123
- system_prompt: "You are a Google AI assistant."
124
- max_steps : 8
125
- prompt : "some prompt"
126
- model : "gemini-1.5-pro"
127
- temperature: 0.5
128
- reasoning : true
129
- headers : "[]"
130
- search_grounding: true
131
- include_thoughts: false
132
- }
133
- tools = []
134
- }`);
135
-
136
- expect(parser.errors).to.be.empty;
137
- });
138
-
139
- it("should parse a google_genai agent with optional fields", () => {
140
- const parser = xanoscriptParser(`agent test_google {
141
- canonical = "test_456"
142
- llm = {
143
- type : "google-genai"
144
- system_prompt: "Advanced Google AI assistant."
145
- max_steps : 15
146
- prompt : "some prompt"
147
- model : "gemini-1.5-flash"
148
- temperature: 0.8
149
- reasoning : false
150
- headers : "{}"
151
- search_grounding: false
152
- include_thoughts: true
153
- api_key : "test-google-key"
154
- thinking_tokens: 2000
155
- baseURL : "https://generativelanguage.googleapis.com"
156
- safety_settings: "strict"
157
- dynamic_retrival: "enabled"
158
- }
159
- tools = []
160
- }`);
161
-
162
- expect(parser.errors).to.be.empty;
163
- });
164
-
165
- it("should accept a structuredOutput definition", () => {
166
- const parser = xanoscriptParser(`agent test_google {
167
- canonical = "test_456"
168
- llm = {
169
- type : "google-genai"
170
- system_prompt: "Advanced Google AI assistant."
171
- max_steps : 15
172
- prompt : "some prompt"
173
- model : "gemini-1.5-flash"
174
- temperature: 0.8
175
- reasoning : false
176
- headers : "{}"
177
- search_grounding: false
178
- include_thoughts: true
179
- api_key : "test-google-key"
180
- thinking_tokens: 2000
181
- baseURL : "https://generativelanguage.googleapis.com"
182
- safety_settings: "strict"
183
- dynamic_retrival: ""
184
- }
185
- tools = []
186
-
187
- output {
188
- text text? filters=trim
189
- bool is_correct?
190
- int confidence_score? {
191
- description = "Max 100"
192
- }
193
- }
194
- }`);
195
-
196
- expect(parser.errors).to.be.empty;
197
- });
198
-
199
- it("should parse an openai agent", () => {
200
- const parser = xanoscriptParser(`agent test_openai {
201
- canonical = "openai_123"
202
- llm = {
203
- type : "openai"
204
- system_prompt: "You are an OpenAI assistant."
205
- max_steps : 6
206
- prompt : "some prompt"
207
- model : "gpt-4o"
208
- temperature : 0.6
209
- reasoning_effort: "medium"
210
- }
211
- tools = []
212
- }`);
213
-
214
- expect(parser.errors).to.be.empty;
215
- });
216
-
217
- it("should reject openai agent with non-existent fields", () => {
218
- const parser = xanoscriptParser(`agent test_openai {
219
- canonical = "openai_123"
220
- llm = {
221
- type : "openai"
222
- system_prompt: "You are an OpenAI assistant."
223
- max_steps : 6
224
- prompt : "some prompt"
225
- model : "gpt-4o"
226
- temperature : 0.6
227
- reasoning_effort: "medium"
228
- search_grounding: true
229
- }
230
- tools = []
231
- }`);
232
-
233
- expect(parser.errors).to.not.be.empty;
234
- });
235
-
236
- it("should reject openai agent with a missing required fields", () => {
237
- const parser = xanoscriptParser(`agent test_openai {
238
- canonical = "openai_123"
239
- llm = {
240
- type : "openai"
241
- system_prompt: "You are an OpenAI assistant."
242
- max_steps : 6
243
- prompt : "some prompt"
244
- model : "gpt-4o"
245
- temperature : 0.6
246
- }
247
- tools = []
248
- }`);
249
-
250
- expect(parser.errors).to.not.be.empty;
251
- });
252
-
253
- it("should parse an openai agent with optional fields", () => {
254
- const parser = xanoscriptParser(`agent test_openai {
255
- canonical = "openai_456"
256
- llm = {
257
- type : "openai"
258
- system_prompt: "Advanced OpenAI assistant with custom config."
259
- max_steps : 12
260
- prompt : "some prompt"
261
- model : "gpt-4o-mini"
262
- temperature: 0.9
263
- reasoning_effort: "high"
264
- api_key : "sk-test-key"
265
- baseURL : "https://api.openai.com"
266
- headers : "{}"
267
- organization: "org-123"
268
- project : "project-456"
269
- compatibility: "strict"
270
- }
271
- tools = []
272
- }`);
273
-
274
- expect(parser.errors).to.be.empty;
275
- });
276
-
277
- it("should parse a xano_free agent", () => {
278
- const parser = xanoscriptParser(`agent test_xano {
279
- canonical = "xano_123"
280
- llm = {
281
- type : "xano-free"
282
- system_prompt: "You are a Xano free tier assistant."
283
- max_steps : 3
284
- prompt : "some prompt"
285
- temperature: 0.4
286
- search_grounding: true
287
- }
288
- tools = []
289
- }`);
290
-
291
- expect(parser.errors).to.be.empty;
292
- });
293
-
294
- it("should allow a messages field instead of prompt", () => {
295
- const parser = xanoscriptParser(`agent test_xano {
296
- canonical = "xano_789"
297
- llm = {
298
- type : "xano-free"
299
- system_prompt: "Advanced Xano free tier assistant."
300
- max_steps : 7
301
- messages : "{{ $args.messages|json_encode() }}"
302
- temperature: 0.7
303
- search_grounding: false
304
- baseURL : "https://api.xano.com"
305
- headers : "{}"
306
- safety_settings: "moderate"
307
- dynamic_retrival: "disabled"
308
- }
309
- tools = []
310
- }`);
311
-
312
- expect(parser.errors).to.be.empty;
313
- });
314
-
315
- it("should require having at least a prompt or a messages field", () => {
316
- const parser = xanoscriptParser(`agent test_xano {
317
- canonical = "xano_789"
318
- llm = {
319
- type : "xano-free"
320
- system_prompt: "Advanced Xano free tier assistant."
321
- max_steps : 7
322
- temperature: 0.7
323
- search_grounding: false
324
- baseURL : "https://api.xano.com"
325
- headers : "{}"
326
- safety_settings: "moderate"
327
- dynamic_retrival: "disabled"
328
- }
329
- tools = []
330
- }`);
331
-
332
- expect(parser.errors).to.not.be.empty;
333
- });
334
-
335
- it("should reject having both a prompt and messages field", () => {
336
- const parser = xanoscriptParser(`agent test_xano {
337
- canonical = "xano_789"
338
- llm = {
339
- type : "xano-free"
340
- system_prompt: "Advanced Xano free tier assistant."
341
- max_steps : 7
342
- messages : "{{ $args.messages|json_encode() }}"
343
- prompt : "some prompt"
344
- temperature: 0.7
345
- search_grounding: false
346
- baseURL : "https://api.xano.com"
347
- headers : "{}"
348
- safety_settings: "moderate"
349
- dynamic_retrival: "disabled"
350
- }
351
- tools = []
352
- }`);
353
-
354
- expect(parser.errors).to.not.be.empty;
355
- });
356
-
357
- it("should parse a xano_free agent with optional fields", () => {
358
- const parser = xanoscriptParser(`agent test_xano {
359
- canonical = "xano_789"
360
- llm = {
361
- type : "xano-free"
362
- system_prompt: "Advanced Xano free tier assistant."
363
- max_steps : 7
364
- prompt : "some prompt"
365
- temperature: 0.7
366
- search_grounding: false
367
- baseURL : "https://api.xano.com"
368
- headers : "{}"
369
- safety_settings: "moderate"
370
- dynamic_retrival: "disabled"
371
- }
372
- tools = []
373
- }`);
374
-
375
- expect(parser.errors).to.be.empty;
376
- });
377
-
378
- it("should parse tools with single tool", () => {
379
- const parser = xanoscriptParser(`agent with_tools {
380
- canonical = "tools_123"
381
- llm = {
382
- type : "xano-free"
383
- system_prompt: "You are a helpful assistant."
384
- prompt : "some prompt"
385
- max_steps : 5
386
- temperature: 0.5
387
- search_grounding: true
388
- }
389
- tools = [
390
- {name: "calculator"}
391
- ]
392
- }`);
393
-
394
- expect(parser.errors).to.be.empty;
395
- });
396
-
397
- it("should parse tools with multiple tools", () => {
398
- const parser = xanoscriptParser(`agent multi_tools {
399
- canonical = "multi_tools_123"
400
- llm = {
401
- type : "xano-free"
402
- system_prompt: "You are a helpful assistant."
403
- max_steps : 5
404
- prompt : "some prompt"
405
- temperature: 0.5
406
- search_grounding: true
407
- }
408
- tools = [
409
- {name: "calculator"},
410
- {name: "weather_api"},
411
- {name: "search_tool"}
412
- ]
413
- }`);
414
-
415
- expect(parser.errors).to.be.empty;
416
- });
417
-
418
- it("should parse tools with active field", () => {
419
- const parser = xanoscriptParser(`agent tools_active {
420
- canonical = "active_123"
421
- llm = {
422
- type : "xano-free"
423
- system_prompt: "You are a helpful assistant."
424
- max_steps : 5
425
- prompt : "some prompt"
426
- temperature: 0.5
427
- search_grounding: true
428
- }
429
- tools = [
430
- {name: "calculator", active: true},
431
- {name: "weather_api", active: false}
432
- ]
433
- }`);
434
-
435
- expect(parser.errors).to.be.empty;
436
- });
437
-
438
- it("should parse tools with auth field", () => {
439
- const parser = xanoscriptParser(`agent tools_auth {
440
- canonical = "auth_123"
441
- llm = {
442
- type : "xano-free"
443
- system_prompt: "You are a helpful assistant."
444
- max_steps : 5
445
- prompt : "some prompt"
446
- temperature: 0.5
447
- search_grounding: true
448
- }
449
- tools = [
450
- {name: "api_tool", auth: "bearer_token"},
451
- {name: "database", auth: "basic_auth"}
452
- ]
453
- }`);
454
-
455
- expect(parser.errors).to.be.empty;
456
- });
457
-
458
- it("should parse tools with all optional fields", () => {
459
- const parser = xanoscriptParser(`agent tools_all_fields {
460
- canonical = "all_fields_123"
461
- llm = {
462
- type : "xano-free"
463
- system_prompt: "You are a helpful assistant."
464
- max_steps : 5
465
- prompt : "some prompt"
466
- temperature: 0.5
467
- search_grounding: true
468
- }
469
- tools = [
470
- {
471
- name: "advanced_tool"
472
- active: true
473
- auth: "oauth2"
474
- },
475
- {
476
- name: "simple_tool"
477
- active: false
478
- },
479
- {
480
- name: "auth_only_tool"
481
- auth: "api_key"
482
- }
483
- ]
484
- }`);
485
-
486
- expect(parser.errors).to.be.empty;
487
- });
488
-
489
- it("should parse tools with mixed formatting", () => {
490
- const parser = xanoscriptParser(`agent tools_formatting {
491
- canonical = "format_123"
492
- llm = {
493
- type : "xano-free"
494
- system_prompt: "You are a helpful assistant."
495
- max_steps : 5
496
- prompt : ""
497
- temperature: 0.5
498
- search_grounding: true
499
- }
500
- tools = [
501
- {name: "tool1", active: true, auth: "key1"},
502
- {
503
- name: "tool2"
504
- active: false
505
- auth: "key2"
506
- },
507
- {name: "tool3"}
508
- ]
509
- }`);
510
-
511
- expect(parser.errors).to.be.empty;
512
- });
513
-
514
- it("should fail when tools missing required name field", () => {
515
- const parser = xanoscriptParser(`agent tools_missing_name {
516
- canonical = "missing_123"
517
- llm = {
518
- type : "xano-free"
519
- system_prompt: "You are a helpful assistant."
520
- max_steps : 5
521
- prompt : "some prompt"
522
- temperature: 0.5
523
- search_grounding: true
524
- }
525
- tools = [
526
- {active: true, auth: "key1"}
527
- ]
528
- }`);
529
-
530
- expect(parser.errors).to.not.be.empty;
531
- });
532
-
533
- it("should parse agent with description and docs", () => {
534
- const parser = xanoscriptParser(`agent full_featured {
535
- canonical = "full_123"
536
- description = "A fully featured agent with all fields"
537
- docs = "This is documentation for the agent"
538
- tags = ["ai", "assistant", "tools"]
539
- llm = {
540
- type : "anthropic"
541
- system_prompt: "You are a helpful assistant."
542
- max_steps : 10
543
- prompt : "test"
544
- model : "claude-4-sonnet-20250514"
545
- temperature: 0.7
546
- reasoning : true
547
- headers : "[]"
548
- }
549
- tools = [
550
- {name: "calculator", active: true},
551
- {name: "weather", auth: "api_key"}
552
- ]
553
- }`);
554
-
555
- expect(parser.errors).to.be.empty;
556
- });
557
-
558
- it("should parse agent with history clause", () => {
559
- const parser = xanoscriptParser(`agent with_history {
560
- canonical = "history_123"
561
- history = 100
562
- llm = {
563
- type : "xano-free"
564
- system_prompt: "You are a helpful assistant."
565
- max_steps : 5
566
- prompt : "some prompt"
567
- temperature: 0.5
568
- search_grounding: true
569
- }
570
- tools = [
571
- {name: "tool1"}
572
- ]
573
- }`);
574
-
575
- expect(parser.errors).to.be.empty;
576
- });
577
-
578
- it("should allow comments prior to agent declaration", () => {
579
- const parser = xanoscriptParser(`// This is a comment
580
- // on multiple lines
581
- agent with_history {
582
- canonical = "history_123"
583
- history = 100
584
- llm = {
585
- type : "xano-free"
586
- system_prompt: "You are a helpful assistant."
587
- max_steps : 5
588
- prompt : "some prompt"
589
- temperature: 0.5
590
- search_grounding: true
591
- }
592
- tools = [
593
- {name: "tool1"}
594
- ]
595
- }`);
596
-
597
- expect(parser.errors).to.be.empty;
598
- });
599
- });