@superblocksteam/sdk 2.0.18 → 2.0.19-next.0

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 (54) hide show
  1. package/dist/application-build.mjs +1 -1
  2. package/dist/application-build.mjs.map +1 -1
  3. package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -1
  4. package/dist/cli-replacement/automatic-upgrades.js +3 -2
  5. package/dist/cli-replacement/automatic-upgrades.js.map +1 -1
  6. package/dist/cli-replacement/dev.d.mts +1 -2
  7. package/dist/cli-replacement/dev.d.mts.map +1 -1
  8. package/dist/cli-replacement/dev.mjs +9 -6
  9. package/dist/cli-replacement/dev.mjs.map +1 -1
  10. package/dist/dev-utils/dev-server.d.mts.map +1 -1
  11. package/dist/dev-utils/dev-server.mjs +4 -4
  12. package/dist/dev-utils/dev-server.mjs.map +1 -1
  13. package/dist/socket/index.js +2 -2
  14. package/dist/socket/index.js.map +1 -1
  15. package/dist/telemetry/attributes.d.ts +6 -0
  16. package/dist/telemetry/attributes.d.ts.map +1 -0
  17. package/dist/telemetry/attributes.js +8 -0
  18. package/dist/telemetry/attributes.js.map +1 -0
  19. package/dist/telemetry/index.d.ts +7 -0
  20. package/dist/telemetry/index.d.ts.map +1 -0
  21. package/dist/telemetry/index.js +79 -0
  22. package/dist/telemetry/index.js.map +1 -0
  23. package/dist/{dev-utils/dev-logger.d.mts → telemetry/logging.d.ts} +3 -4
  24. package/dist/telemetry/logging.d.ts.map +1 -0
  25. package/dist/{dev-utils/dev-logger.mjs → telemetry/logging.js} +35 -7
  26. package/dist/telemetry/logging.js.map +1 -0
  27. package/dist/telemetry/util.d.ts +10 -0
  28. package/dist/telemetry/util.d.ts.map +1 -0
  29. package/dist/telemetry/util.js +28 -0
  30. package/dist/telemetry/util.js.map +1 -0
  31. package/dist/vite-plugin-generate-build-manifest.mjs +1 -1
  32. package/dist/vite-plugin-generate-build-manifest.mjs.map +1 -1
  33. package/dist/vite-plugin-inject-sb-ids-transform.mjs +1 -1
  34. package/dist/vite-plugin-inject-sb-ids-transform.mjs.map +1 -1
  35. package/package.json +8 -5
  36. package/src/application-build.mts +1 -1
  37. package/src/cli-replacement/automatic-upgrades.ts +3 -2
  38. package/src/cli-replacement/dev.mts +13 -12
  39. package/src/dev-utils/dev-server.mts +5 -5
  40. package/src/socket/index.ts +2 -2
  41. package/src/telemetry/attributes.ts +7 -0
  42. package/src/telemetry/index.ts +100 -0
  43. package/src/{dev-utils/dev-logger.mts → telemetry/logging.ts} +37 -17
  44. package/src/telemetry/util.ts +31 -0
  45. package/src/vite-plugin-generate-build-manifest.mts +1 -1
  46. package/src/vite-plugin-inject-sb-ids-transform.mts +1 -1
  47. package/tsconfig.tsbuildinfo +1 -1
  48. package/dist/dev-utils/dev-logger.d.mts.map +0 -1
  49. package/dist/dev-utils/dev-logger.mjs.map +0 -1
  50. package/dist/dev-utils/dev-tracer.d.ts +0 -5
  51. package/dist/dev-utils/dev-tracer.d.ts.map +0 -1
  52. package/dist/dev-utils/dev-tracer.js +0 -109
  53. package/dist/dev-utils/dev-tracer.js.map +0 -1
  54. package/src/dev-utils/dev-tracer.ts +0 -123
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-logger.d.mts","sourceRoot":"","sources":["../../src/dev-utils/dev-logger.mts"],"names":[],"mappings":"AA4CA,UAAU,SAAS;IACjB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,IAAI,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;CACpD;AAsBD,wBAAgB,SAAS,CACvB,cAAc,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,GAC/C,SAAS,CAYX;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAgBtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-logger.mjs","sourceRoot":"","sources":["../../src/dev-utils/dev-logger.mts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { ApplicationConfig } from "../types/index.js";
2
- export declare const initializeTracingSdk: (applicationConfig?: ApplicationConfig) => void;
3
- declare const tracer: import("@opentelemetry/api").Tracer;
4
- export default tracer;
5
- //# sourceMappingURL=dev-tracer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-tracer.d.ts","sourceRoot":"","sources":["../../src/dev-utils/dev-tracer.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA6B3D,eAAO,MAAM,oBAAoB,GAAI,oBAAoB,iBAAiB,SAuEzE,CAAC;AAGF,QAAA,MAAM,MAAM,qCAAqD,CAAC;AAElE,eAAe,MAAM,CAAC"}
@@ -1,109 +0,0 @@
1
- import { trace } from "@opentelemetry/api";
2
- import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
3
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
4
- import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
5
- import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
6
- import { Resource } from "@opentelemetry/resources";
7
- import { NodeSDK } from "@opentelemetry/sdk-node";
8
- import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
9
- import { OBS_TAG_APPLICATION_ID, OBS_TAG_BRANCH, OBS_TAG_ORG_ID, OBS_TAG_USER_EMAIL, } from "@superblocksteam/shared";
10
- import { getLocalTokenWithUrl } from "@superblocksteam/util";
11
- import ddTrace from "dd-trace";
12
- import packageJson from "../../package.json" with { type: "json" };
13
- // NOTE: @joeyagreco - this is how the "env" facet is determined in datadog: https://docs.datadoghq.com/opentelemetry/setup/collector_exporter/#3---configure-your-application
14
- const ATTR_DEPLOYMENT_ENVIRONMENT = "deployment.environment";
15
- // NOTE: @joeyagreco - this can be used to determine if we are using mock-csb, staging-csb, prod-csb, etc
16
- const ATTR_SUPERBLOCKS_BASE_URL = "superblocks.base_url";
17
- const ATTR_SUPERBLOCKS_CLI_TOKEN = "superblocks.cli_token";
18
- const ATTR_SUPERBLOCKS_IS_CSB = "superblocks.is_csb";
19
- const ATTR_SUPERBLOCKS_USER_ID = "user-id";
20
- let superblocksTracesUrl = undefined;
21
- let superblocksHostname = "unknown";
22
- let token = "unknown";
23
- try {
24
- const tokenWithUrl = await getLocalTokenWithUrl();
25
- const superblocksBaseUrl = new URL(tokenWithUrl.superblocksBaseUrl);
26
- superblocksTracesUrl = superblocksBaseUrl.origin + "/api/v1/traces";
27
- superblocksHostname = superblocksBaseUrl.hostname;
28
- if ("token" in tokenWithUrl) {
29
- token = tokenWithUrl.token.substring(0, 8);
30
- }
31
- }
32
- catch (e) {
33
- console.error("[tracing init] could not determine superblocks base url", e);
34
- }
35
- const SERVICE_NAME = "sdk-dev-server";
36
- // NOTE: @joeyagreco - we do this because (per DataDog support):
37
- // NOTE: @joeyagreco - "There is currently no way to define a retention filter directly for “LLM apps” unless those apps are associated with a specific service tag."
38
- const SERVICE_NAME_LLM = "superblocks-ai-code-gen";
39
- export const initializeTracingSdk = (applicationConfig) => {
40
- // --- Initialize dd-trace for LLM Observability ---
41
- // https://docs.datadoghq.com/llm_observability/sdk/?tab=nodejs
42
- // traces will show up here: https://app.datadoghq.com/llm/traces
43
- // IMPORTANT: @joeyagreco - to make tracing work, DD_API_KEY must be set as an env var
44
- // NOTE: @joeyagreco - at this time we will only ever use this DD_SITE
45
- process.env.DD_SITE = "datadoghq.com";
46
- ddTrace.init({
47
- env: process.env.SUPERBLOCKS_CLI_ENV,
48
- service: SERVICE_NAME_LLM,
49
- version: packageJson.version,
50
- plugins: false,
51
- tags: {
52
- "superblocks.base_url": superblocksHostname,
53
- "superblocks.cli_token": token,
54
- "superblocks.is_csb": process.env.SUPERBLOCKS_IS_CSB,
55
- [OBS_TAG_APPLICATION_ID]: applicationConfig?.id,
56
- [OBS_TAG_BRANCH]: applicationConfig?.branchName,
57
- },
58
- llmobs: {
59
- mlApp: SERVICE_NAME_LLM,
60
- agentlessEnabled: true,
61
- },
62
- });
63
- // Initialize the OpenTelemetry SDK
64
- const sdk = new NodeSDK({
65
- resource: Resource.default().merge(new Resource({
66
- [ATTR_SERVICE_NAME]: "sdk-dev-server",
67
- [ATTR_DEPLOYMENT_ENVIRONMENT]: process.env.SUPERBLOCKS_CLI_ENV,
68
- [ATTR_SUPERBLOCKS_BASE_URL]: superblocksHostname,
69
- [ATTR_SUPERBLOCKS_CLI_TOKEN]: token,
70
- [OBS_TAG_APPLICATION_ID]: applicationConfig?.id,
71
- [OBS_TAG_BRANCH]: applicationConfig?.branchName,
72
- [ATTR_SUPERBLOCKS_IS_CSB]: process.env.SUPERBLOCKS_IS_CSB,
73
- [OBS_TAG_USER_EMAIL]: applicationConfig?.userEmail,
74
- [ATTR_SUPERBLOCKS_USER_ID]: applicationConfig?.userId,
75
- [OBS_TAG_ORG_ID]: applicationConfig?.organizationId,
76
- })),
77
- traceExporter: new OTLPTraceExporter({
78
- url: superblocksTracesUrl, // OTLPTraceExporter defaults to sending traffic to http://localhost:4318/v1/traces
79
- }),
80
- contextManager: new AsyncLocalStorageContextManager(),
81
- instrumentations: [
82
- // Configure HTTP instrumentation with custom attributes
83
- new HttpInstrumentation({
84
- requestHook: (span, request) => {
85
- let resource = "GET";
86
- if (request) {
87
- resource = `${request.method} ${request.url || request.path}`;
88
- }
89
- span.setAttributes({
90
- "resource.name": resource,
91
- });
92
- },
93
- }),
94
- // Configure Express instrumentation
95
- new ExpressInstrumentation({
96
- requestHook: (span, request) => {
97
- span.setAttributes({
98
- "resource.name": `${request.method} ${request.url}`,
99
- });
100
- },
101
- }),
102
- ],
103
- });
104
- sdk.start();
105
- };
106
- // Get a tracer instance
107
- const tracer = trace.getTracer(SERVICE_NAME, packageJson.version);
108
- export default tracer;
109
- //# sourceMappingURL=dev-tracer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-tracer.js","sourceRoot":"","sources":["../../src/dev-utils/dev-tracer.ts"],"names":[],"mappings":"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"}
@@ -1,123 +0,0 @@
1
- import { trace } from "@opentelemetry/api";
2
- import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
3
- import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
4
- import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
5
- import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
6
- import { Resource } from "@opentelemetry/resources";
7
- import { NodeSDK } from "@opentelemetry/sdk-node";
8
- import { ATTR_SERVICE_NAME } from "@opentelemetry/semantic-conventions";
9
- import {
10
- OBS_TAG_APPLICATION_ID,
11
- OBS_TAG_BRANCH,
12
- OBS_TAG_ORG_ID,
13
- OBS_TAG_USER_EMAIL,
14
- } from "@superblocksteam/shared";
15
- import { getLocalTokenWithUrl } from "@superblocksteam/util";
16
- import ddTrace from "dd-trace";
17
- import packageJson from "../../package.json" with { type: "json" };
18
- import type { ApplicationConfig } from "../types/index.js";
19
- import type { Span } from "@opentelemetry/api";
20
-
21
- // NOTE: @joeyagreco - this is how the "env" facet is determined in datadog: https://docs.datadoghq.com/opentelemetry/setup/collector_exporter/#3---configure-your-application
22
- const ATTR_DEPLOYMENT_ENVIRONMENT = "deployment.environment";
23
- // NOTE: @joeyagreco - this can be used to determine if we are using mock-csb, staging-csb, prod-csb, etc
24
- const ATTR_SUPERBLOCKS_BASE_URL = "superblocks.base_url";
25
- const ATTR_SUPERBLOCKS_CLI_TOKEN = "superblocks.cli_token";
26
- const ATTR_SUPERBLOCKS_IS_CSB = "superblocks.is_csb";
27
- const ATTR_SUPERBLOCKS_USER_ID = "user-id";
28
- let superblocksTracesUrl = undefined;
29
- let superblocksHostname = "unknown";
30
- let token = "unknown";
31
- try {
32
- const tokenWithUrl = await getLocalTokenWithUrl();
33
- const superblocksBaseUrl = new URL(tokenWithUrl.superblocksBaseUrl);
34
- superblocksTracesUrl = superblocksBaseUrl.origin + "/api/v1/traces";
35
- superblocksHostname = superblocksBaseUrl.hostname;
36
- if ("token" in tokenWithUrl) {
37
- token = tokenWithUrl.token.substring(0, 8);
38
- }
39
- } catch (e) {
40
- console.error("[tracing init] could not determine superblocks base url", e);
41
- }
42
-
43
- const SERVICE_NAME = "sdk-dev-server";
44
- // NOTE: @joeyagreco - we do this because (per DataDog support):
45
- // NOTE: @joeyagreco - "There is currently no way to define a retention filter directly for “LLM apps” unless those apps are associated with a specific service tag."
46
- const SERVICE_NAME_LLM = "superblocks-ai-code-gen";
47
- export const initializeTracingSdk = (applicationConfig?: ApplicationConfig) => {
48
- // --- Initialize dd-trace for LLM Observability ---
49
- // https://docs.datadoghq.com/llm_observability/sdk/?tab=nodejs
50
- // traces will show up here: https://app.datadoghq.com/llm/traces
51
-
52
- // IMPORTANT: @joeyagreco - to make tracing work, DD_API_KEY must be set as an env var
53
- // NOTE: @joeyagreco - at this time we will only ever use this DD_SITE
54
- process.env.DD_SITE = "datadoghq.com";
55
- ddTrace.init({
56
- env: process.env.SUPERBLOCKS_CLI_ENV,
57
- service: SERVICE_NAME_LLM,
58
- version: packageJson.version,
59
- plugins: false,
60
- tags: {
61
- "superblocks.base_url": superblocksHostname,
62
- "superblocks.cli_token": token,
63
- "superblocks.is_csb": process.env.SUPERBLOCKS_IS_CSB,
64
- [OBS_TAG_APPLICATION_ID]: applicationConfig?.id,
65
- [OBS_TAG_BRANCH]: applicationConfig?.branchName,
66
- },
67
- llmobs: {
68
- mlApp: SERVICE_NAME_LLM,
69
- agentlessEnabled: true,
70
- },
71
- });
72
-
73
- // Initialize the OpenTelemetry SDK
74
- const sdk = new NodeSDK({
75
- resource: Resource.default().merge(
76
- new Resource({
77
- [ATTR_SERVICE_NAME]: "sdk-dev-server",
78
- [ATTR_DEPLOYMENT_ENVIRONMENT]: process.env.SUPERBLOCKS_CLI_ENV,
79
- [ATTR_SUPERBLOCKS_BASE_URL]: superblocksHostname,
80
- [ATTR_SUPERBLOCKS_CLI_TOKEN]: token,
81
- [OBS_TAG_APPLICATION_ID]: applicationConfig?.id,
82
- [OBS_TAG_BRANCH]: applicationConfig?.branchName,
83
- [ATTR_SUPERBLOCKS_IS_CSB]: process.env.SUPERBLOCKS_IS_CSB,
84
- [OBS_TAG_USER_EMAIL]: applicationConfig?.userEmail,
85
- [ATTR_SUPERBLOCKS_USER_ID]: applicationConfig?.userId,
86
- [OBS_TAG_ORG_ID]: applicationConfig?.organizationId,
87
- }),
88
- ),
89
- traceExporter: new OTLPTraceExporter({
90
- url: superblocksTracesUrl, // OTLPTraceExporter defaults to sending traffic to http://localhost:4318/v1/traces
91
- }),
92
- contextManager: new AsyncLocalStorageContextManager(),
93
- instrumentations: [
94
- // Configure HTTP instrumentation with custom attributes
95
- new HttpInstrumentation({
96
- requestHook: (span: Span, request: any) => {
97
- let resource = "GET";
98
- if (request) {
99
- resource = `${request.method} ${request.url || request.path}`;
100
- }
101
- span.setAttributes({
102
- "resource.name": resource,
103
- });
104
- },
105
- }),
106
- // Configure Express instrumentation
107
- new ExpressInstrumentation({
108
- requestHook: (span: Span, request: any) => {
109
- span.setAttributes({
110
- "resource.name": `${request.method} ${request.url}`,
111
- });
112
- },
113
- }),
114
- ],
115
- });
116
-
117
- sdk.start();
118
- };
119
-
120
- // Get a tracer instance
121
- const tracer = trace.getTracer(SERVICE_NAME, packageJson.version);
122
-
123
- export default tracer;