diff --git a/lerna.json b/lerna.json index a6559f29f6..5477109e50 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "3.8.6", + "version": "3.9.0", "npmClient": "yarn", "concurrency": 20, "command": { diff --git a/packages/backend-core/package.json b/packages/backend-core/package.json index 2ea4cb201a..f3773c0add 100644 --- a/packages/backend-core/package.json +++ b/packages/backend-core/package.json @@ -44,7 +44,7 @@ "bcryptjs": "2.4.3", "bull": "4.10.1", "correlation-id": "4.0.0", - "dd-trace": "5.43.0", + "dd-trace": "5.47.0", "dotenv": "16.0.1", "google-auth-library": "^8.0.1", "google-spreadsheet": "npm:@budibase/google-spreadsheet@4.1.5", diff --git a/packages/builder/src/analytics/constants.js b/packages/builder/src/analytics/constants.ts similarity index 100% rename from packages/builder/src/analytics/constants.js rename to packages/builder/src/analytics/constants.ts diff --git a/packages/builder/src/analytics/index.js b/packages/builder/src/analytics/index.ts similarity index 77% rename from packages/builder/src/analytics/index.js rename to packages/builder/src/analytics/index.ts index 12bd548e9b..c8fdc6223f 100644 --- a/packages/builder/src/analytics/index.js +++ b/packages/builder/src/analytics/index.ts @@ -2,9 +2,12 @@ import { API } from "@/api" import PosthogClient from "./PosthogClient" import { Events, EventSource } from "./constants" -const posthog = new PosthogClient(process.env.POSTHOG_TOKEN) +const posthog = new PosthogClient(process.env.POSTHOG_TOKEN!) class AnalyticsHub { + private initialised: boolean + private clients: PosthogClient[] + constructor() { this.clients = [posthog] this.initialised = false @@ -21,13 +24,13 @@ class AnalyticsHub { } } - identify(id) { + identify(id: string) { posthog.identify(id) } - captureException(_err) {} + captureException(_err: any) {} - captureEvent(eventName, props = {}) { + captureEvent(eventName: string, props = {}) { posthog.captureEvent(eventName, props) } diff --git a/packages/builder/src/stores/portal/auth.ts b/packages/builder/src/stores/portal/auth.ts index c3dcaa3663..b0b5fc4acb 100644 --- a/packages/builder/src/stores/portal/auth.ts +++ b/packages/builder/src/stores/portal/auth.ts @@ -48,7 +48,7 @@ class AuthStore extends BudiStore { analytics .activate() .then(() => { - analytics.identify(user._id) + analytics.identify(user._id!) }) .catch(() => { // This request may fail due to browser extensions blocking requests diff --git a/packages/frontend-core/src/utils/schema.js b/packages/frontend-core/src/utils/schema.js index 135dbd3e35..55625c19a5 100644 --- a/packages/frontend-core/src/utils/schema.js +++ b/packages/frontend-core/src/utils/schema.js @@ -12,7 +12,7 @@ export const getColumnIcon = column => { return "Calculator" } if (column.schema.autocolumn) { - return "MagicWand" + return "Shapes" } if (helpers.schema.isDeprecatedSingleUserColumn(column.schema)) { return "User" diff --git a/packages/pro b/packages/pro index 7d637cdb56..764069afd1 160000 --- a/packages/pro +++ b/packages/pro @@ -1 +1 @@ -Subproject commit 7d637cdb569623909df02a56d0b6e308472c8172 +Subproject commit 764069afd1dbb99cde73c6ad6ba550cd77398d7d diff --git a/packages/server/package.json b/packages/server/package.json index 32bc68cde6..2915e45069 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -86,7 +86,7 @@ "csvtojson": "2.0.10", "curlconverter": "3.21.0", "dayjs": "^1.10.8", - "dd-trace": "5.43.0", + "dd-trace": "5.47.0", "dotenv": "8.2.0", "extract-zip": "^2.0.1", "form-data": "4.0.0", diff --git a/packages/server/src/api/routes/tests/ai.spec.ts b/packages/server/src/api/routes/tests/ai.spec.ts index c983cd508d..9e041a619e 100644 --- a/packages/server/src/api/routes/tests/ai.spec.ts +++ b/packages/server/src/api/routes/tests/ai.spec.ts @@ -15,6 +15,7 @@ import { context } from "@budibase/backend-core" import { mocks } from "@budibase/backend-core/tests" import { MockLLMResponseFn } from "../../../tests/utilities/mocks/ai" import { mockAnthropicResponse } from "../../../tests/utilities/mocks/ai/anthropic" +import { quotas } from "@budibase/pro" function dedent(str: string) { return str @@ -301,13 +302,29 @@ describe("BudibaseAI", () => { .reply(200, license) }) + async function getQuotaUsage() { + return await context.doInSelfHostTenantUsingCloud( + config.getTenantId(), + async () => { + return await quotas.getQuotaUsage() + } + ) + } + it("handles correct chat response", async () => { + let usage = await getQuotaUsage() + expect(usage._id).toBe(`quota_usage_${config.getTenantId()}`) + expect(usage.monthly.current.budibaseAICredits).toBe(0) + mockChatGPTResponse("Hi there!") const { message } = await config.api.ai.chat({ messages: [{ role: "user", content: "Hello!" }], licenseKey: licenseKey, }) expect(message).toBe("Hi there!") + + usage = await getQuotaUsage() + expect(usage.monthly.current.budibaseAICredits).toBeGreaterThan(0) }) it("handles chat response error", async () => { diff --git a/packages/types/src/api/web/ai.ts b/packages/types/src/api/web/ai.ts index 61123f1ecf..b3e88dfe17 100644 --- a/packages/types/src/api/web/ai.ts +++ b/packages/types/src/api/web/ai.ts @@ -11,6 +11,7 @@ export interface ChatCompletionRequest { export interface ChatCompletionResponse { message?: string + tokensUsed?: number } export interface GenerateJsRequest { diff --git a/packages/worker/package.json b/packages/worker/package.json index b79b18429a..135e0528ac 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -50,7 +50,7 @@ "bcrypt": "5.1.0", "bcryptjs": "2.4.3", "bull": "4.10.1", - "dd-trace": "5.43.0", + "dd-trace": "5.47.0", "dotenv": "8.6.0", "email-validator": "^2.0.4", "global-agent": "3.0.0", diff --git a/yarn.lock b/yarn.lock index 7d54ebcb0f..e6d3422b62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3006,45 +3006,37 @@ resolved "https://registry.yarnpkg.com/@dagrejs/graphlib/-/graphlib-2.2.4.tgz#d77bfa9ff49e2307c0c6e6b8b26b5dd3c05816c4" integrity sha512-mepCf/e9+SKYy1d02/UkvSy6+6MoyXhVxP8lLDfA7BPE1X1d4dR0sZznmbM8/XVJ1GPM+Svnx7Xj6ZweByWUkw== -"@datadog/libdatadog@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@datadog/libdatadog/-/libdatadog-0.5.0.tgz#0ef2a2a76bb9505a0e7e5bc9be1415b467dbf368" - integrity sha512-YvLUVOhYVjJssm0f22/RnDQMc7ZZt/w1bA0nty1vvjyaDz5EWaHfWaaV4GYpCt5MRvnGjCBxIwwbRivmGseKeQ== +"@datadog/libdatadog@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@datadog/libdatadog/-/libdatadog-0.5.1.tgz#fe5c101c457998b74cb66f555f63197b34cad4ba" + integrity sha512-KsdOxTUmtjoygaZInSS5U0+KnqoxPKGpcBjGgOHR9NDKfXzmbpy5AmoaPL7JxmMxQzwknpxSi7qzBOSB3yMoJg== -"@datadog/native-appsec@8.5.0": - version "8.5.0" - resolved "https://registry.yarnpkg.com/@datadog/native-appsec/-/native-appsec-8.5.0.tgz#cf4eea74a07085a0dc9f3e98c130736b38cd61c9" - integrity sha512-95y+fm7jd+3iknzuu57pWEPw9fcK9uSBCPiB4kSPHszHu3bESlZM553tc4ANsz+X3gMkYGVg2pgSydG77nSDJw== +"@datadog/native-appsec@8.5.2": + version "8.5.2" + resolved "https://registry.yarnpkg.com/@datadog/native-appsec/-/native-appsec-8.5.2.tgz#93a2c15c71c2a90e19e12506fbbdec9ccbc91541" + integrity sha512-lETBaVhBk+9o0pc+LDnXvp2ImDyT8K2deuqLf8A6q4/QjzCCXyR/yZO9R5+Kdoc93jZMRTWV9Pr4pBwHEdJSVA== dependencies: node-gyp-build "^3.9.0" -"@datadog/native-iast-rewriter@2.8.0": - version "2.8.0" - resolved "https://registry.yarnpkg.com/@datadog/native-iast-rewriter/-/native-iast-rewriter-2.8.0.tgz#8a7eddf5e33266643afcdfb920ff5ccb30e1894a" - integrity sha512-DKmtvlmCld9RIJwDcPKWNkKYWYQyiuOrOtynmBppJiUv/yfCOuZtsQV4Zepj40H33sLiQyi5ct6dbWl53vxqkA== - dependencies: - lru-cache "^7.14.0" - node-gyp-build "^4.5.0" - -"@datadog/native-iast-taint-tracking@3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-3.3.0.tgz#5a9c87e07376e7c5a4b4d4985f140a60388eee00" - integrity sha512-OzmjOncer199ATSYeCAwSACCRyQimo77LKadSHDUcxa/n9FYU+2U/bYQTYsK3vquSA2E47EbSVq9rytrlTdvnA== +"@datadog/native-iast-taint-tracking@3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-3.3.1.tgz#71d2c9bdb102b4482fea145d3f22ed5453628500" + integrity sha512-TgXpoX/CDgPfYAKu9qLmEyb9UXvRVC00D71islcSb70MCFmxQwkgXGl/gAk6YA6/NmZ4j8+cgY1lSNqStGvOMg== dependencies: node-gyp-build "^3.9.0" -"@datadog/native-metrics@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@datadog/native-metrics/-/native-metrics-3.1.0.tgz#c2378841accd9fdd6866d0e49bdf6e3d76e79f22" - integrity sha512-yOBi4x0OQRaGNPZ2bx9TGvDIgEdQ8fkudLTFAe7gEM1nAlvFmbE5YfpH8WenEtTSEBwojSau06m2q7axtEEmCg== +"@datadog/native-metrics@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@datadog/native-metrics/-/native-metrics-3.1.1.tgz#4e5c9775751af13e353e64e573ab724104538cee" + integrity sha512-MU1gHrolwryrU4X9g+fylA1KPH3S46oqJPEtVyrO+3Kh29z80fegmtyrU22bNt8LigPUK/EdPCnSbMe88QbnxQ== dependencies: node-addon-api "^6.1.0" node-gyp-build "^3.9.0" -"@datadog/pprof@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@datadog/pprof/-/pprof-5.6.0.tgz#b6f5c566512ba5e55c6dbf46e9f0f020cfd5c6b5" - integrity sha512-x7yN0s4wMnRqv3PWQ6eXKH5XE5qvCOwWbOsXqpT2Irbsc7Wcl5w5JrJUcbPCdSJGihpIh6kAeIrS6w/ZCcHy2Q== +"@datadog/pprof@5.7.1": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@datadog/pprof/-/pprof-5.7.1.tgz#3ed62372af7331c37de401319bde9e3d4dc5a8c0" + integrity sha512-D5XTxsaPG36x41vZZn8hsAeC7QQDx0rv1a1Uhxo5xCXUB/9rc19+I7iCnjgJS5aH0ShXdPVOWRClo16hOSKKSw== dependencies: delay "^5.0.0" node-gyp-build "<4.0" @@ -3057,6 +3049,16 @@ resolved "https://registry.yarnpkg.com/@datadog/sketches-js/-/sketches-js-2.1.0.tgz#8c7e8028a5fc22ad102fa542b0a446c956830455" integrity sha512-smLocSfrt3s53H/XSVP3/1kP42oqvrkjUPtyaFd1F79ux24oE31BKt+q0c6lsa6hOYrFzsIwyc5GXAI5JmfOew== +"@datadog/wasm-js-rewriter@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@datadog/wasm-js-rewriter/-/wasm-js-rewriter-4.0.0.tgz#46963ffa39365f4bc0aff6114bba6545635f9c69" + integrity sha512-atw1uocrNlG3Fi7usLG5irTpasoz519YTZUyAxp7ZCppDNA+iLHpK1NksV9E2uCGMzF6dGifGmDaui0nK12nYg== + dependencies: + js-yaml "^4.1.0" + lru-cache "^7.14.0" + module-details-from-path "^1.0.3" + node-gyp-build "^4.5.0" + "@elastic/elasticsearch@7.10.0": version "7.10.0" resolved "https://registry.yarnpkg.com/@elastic/elasticsearch/-/elasticsearch-7.10.0.tgz#da105a9c1f14146f9f2cab4e7026cb7949121b8d" @@ -9978,28 +9980,28 @@ dayjs@^1.10.8: resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== -dc-polyfill@^0.1.4: - version "0.1.6" - resolved "https://registry.yarnpkg.com/dc-polyfill/-/dc-polyfill-0.1.6.tgz#c2940fa68ffb24a7bf127cc6cfdd15b39f0e7f02" - integrity sha512-UV33cugmCC49a5uWAApM+6Ev9ZdvIUMTrtCO9fj96TPGOQiea54oeO3tiEVdVeo3J9N2UdJEmbS4zOkkEA35uQ== +dc-polyfill@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/dc-polyfill/-/dc-polyfill-0.1.8.tgz#2d91dd4dd0f2e3575ce038d013f346161f5a413a" + integrity sha512-F9+06papa9GOFUMjxGiqM1bS98pOkinZpBF3Sygb46owrXaHdR2uLkftE6nygrqNcAurdwKjLAtX+0GJkSwIFQ== -dd-trace@5.43.0: - version "5.43.0" - resolved "https://registry.yarnpkg.com/dd-trace/-/dd-trace-5.43.0.tgz#f321debd74c01d9e1e6d63b99539e7247d89f10f" - integrity sha512-WtPUSZfEosSHYVBFR48FqfYBFor8QchKwAKo+LYtbgTPtFzYKyBV/FJUqYE6sDF15Raf4sJVt/LOscywgj2zEw== +dd-trace@5.47.0: + version "5.47.0" + resolved "https://registry.yarnpkg.com/dd-trace/-/dd-trace-5.47.0.tgz#c9da1469f752c002ea9947fa6535538eb496d0f5" + integrity sha512-1IrJ3LYPS/ylQdeOKpc8VscshgfngK1Ht7ZWJpNI6KlSZ6JB1rQmuDdGmhUYt7tXTTKRStTmaC4uSMJKADu8Xg== dependencies: - "@datadog/libdatadog" "^0.5.0" - "@datadog/native-appsec" "8.5.0" - "@datadog/native-iast-rewriter" "2.8.0" - "@datadog/native-iast-taint-tracking" "3.3.0" - "@datadog/native-metrics" "^3.1.0" - "@datadog/pprof" "5.6.0" + "@datadog/libdatadog" "^0.5.1" + "@datadog/native-appsec" "8.5.2" + "@datadog/native-iast-taint-tracking" "3.3.1" + "@datadog/native-metrics" "^3.1.1" + "@datadog/pprof" "5.7.1" "@datadog/sketches-js" "^2.1.0" + "@datadog/wasm-js-rewriter" "4.0.0" "@isaacs/ttlcache" "^1.4.1" "@opentelemetry/api" ">=1.0.0 <1.9.0" "@opentelemetry/core" "^1.14.0" crypto-randomuuid "^1.0.0" - dc-polyfill "^0.1.4" + dc-polyfill "0.1.8" ignore "^5.2.4" import-in-the-middle "1.13.1" istanbul-lib-coverage "3.2.0"