@dexto/core 1.6.26 → 1.6.27

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 (103) hide show
  1. package/dist/agent/DextoAgent.cjs +75 -90
  2. package/dist/agent/DextoAgent.d.ts +4 -4
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +76 -91
  5. package/dist/agent/error-codes.cjs +1 -0
  6. package/dist/agent/error-codes.d.ts +1 -0
  7. package/dist/agent/error-codes.d.ts.map +1 -1
  8. package/dist/agent/error-codes.js +1 -0
  9. package/dist/agent/errors.cjs +13 -0
  10. package/dist/agent/errors.d.ts +6 -0
  11. package/dist/agent/errors.d.ts.map +1 -1
  12. package/dist/agent/errors.js +13 -0
  13. package/dist/agent/index.d.ts +1 -0
  14. package/dist/agent/index.d.ts.map +1 -1
  15. package/dist/agent/schemas.d.ts +2 -2
  16. package/dist/agent/types.d.ts +11 -0
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/approval/factory.cjs +1 -0
  19. package/dist/approval/factory.d.ts.map +1 -1
  20. package/dist/approval/factory.js +1 -0
  21. package/dist/approval/manager.cjs +19 -6
  22. package/dist/approval/manager.d.ts +6 -0
  23. package/dist/approval/manager.d.ts.map +1 -1
  24. package/dist/approval/manager.js +19 -6
  25. package/dist/approval/schemas.cjs +10 -0
  26. package/dist/approval/schemas.d.ts +305 -0
  27. package/dist/approval/schemas.d.ts.map +1 -1
  28. package/dist/approval/schemas.js +10 -0
  29. package/dist/events/index.cjs +210 -75
  30. package/dist/events/index.d.ts +44 -181
  31. package/dist/events/index.d.ts.map +1 -1
  32. package/dist/events/index.js +206 -74
  33. package/dist/hooks/manager.cjs +5 -2
  34. package/dist/hooks/manager.d.ts +2 -0
  35. package/dist/hooks/manager.d.ts.map +1 -1
  36. package/dist/hooks/manager.js +5 -2
  37. package/dist/hooks/types.d.ts +3 -0
  38. package/dist/hooks/types.d.ts.map +1 -1
  39. package/dist/index.browser.d.ts +1 -0
  40. package/dist/index.browser.d.ts.map +1 -1
  41. package/dist/index.cjs +3 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -0
  45. package/dist/llm/executor/turn-executor.cjs +8 -4
  46. package/dist/llm/executor/turn-executor.d.ts +3 -1
  47. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  48. package/dist/llm/executor/turn-executor.js +8 -4
  49. package/dist/llm/services/vercel.cjs +29 -6
  50. package/dist/llm/services/vercel.d.ts +3 -0
  51. package/dist/llm/services/vercel.d.ts.map +1 -1
  52. package/dist/llm/services/vercel.js +27 -5
  53. package/dist/mcp/manager.cjs +7 -2
  54. package/dist/mcp/manager.d.ts +3 -1
  55. package/dist/mcp/manager.d.ts.map +1 -1
  56. package/dist/mcp/manager.js +7 -2
  57. package/dist/mcp/mcp-client.cjs +71 -62
  58. package/dist/mcp/mcp-client.d.ts +3 -2
  59. package/dist/mcp/mcp-client.d.ts.map +1 -1
  60. package/dist/mcp/mcp-client.js +71 -62
  61. package/dist/mcp/schemas.d.ts +10 -10
  62. package/dist/resources/handlers/filesystem-handler.cjs +22 -3
  63. package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
  64. package/dist/resources/handlers/filesystem-handler.js +22 -3
  65. package/dist/runtime/host-runtime.cjs +163 -0
  66. package/dist/runtime/host-runtime.d.ts +23 -0
  67. package/dist/runtime/host-runtime.d.ts.map +1 -0
  68. package/dist/runtime/host-runtime.js +133 -0
  69. package/dist/runtime/index.cjs +42 -0
  70. package/dist/runtime/index.d.ts +2 -0
  71. package/dist/runtime/index.d.ts.map +1 -0
  72. package/dist/runtime/index.js +21 -0
  73. package/dist/runtime/run-context.cjs +53 -0
  74. package/dist/runtime/run-context.d.ts +13 -0
  75. package/dist/runtime/run-context.d.ts.map +1 -0
  76. package/dist/runtime/run-context.js +34 -0
  77. package/dist/session/chat-session.cjs +30 -32
  78. package/dist/session/chat-session.d.ts +5 -15
  79. package/dist/session/chat-session.d.ts.map +1 -1
  80. package/dist/session/chat-session.js +31 -33
  81. package/dist/session/error-codes.cjs +1 -0
  82. package/dist/session/error-codes.d.ts +2 -1
  83. package/dist/session/error-codes.d.ts.map +1 -1
  84. package/dist/session/error-codes.js +1 -0
  85. package/dist/session/errors.cjs +13 -0
  86. package/dist/session/errors.d.ts +6 -0
  87. package/dist/session/errors.d.ts.map +1 -1
  88. package/dist/session/errors.js +13 -0
  89. package/dist/telemetry/decorators.cjs +75 -57
  90. package/dist/telemetry/decorators.d.ts +2 -0
  91. package/dist/telemetry/decorators.d.ts.map +1 -1
  92. package/dist/telemetry/decorators.js +75 -57
  93. package/dist/telemetry/utils.cjs +9 -6
  94. package/dist/telemetry/utils.d.ts +3 -0
  95. package/dist/telemetry/utils.d.ts.map +1 -1
  96. package/dist/telemetry/utils.js +9 -6
  97. package/dist/tools/tool-manager.cjs +92 -36
  98. package/dist/tools/tool-manager.d.ts +12 -3
  99. package/dist/tools/tool-manager.d.ts.map +1 -1
  100. package/dist/tools/tool-manager.js +92 -36
  101. package/dist/tools/types.d.ts +7 -1
  102. package/dist/tools/types.d.ts.map +1 -1
  103. package/package.json +1 -1
@@ -27,6 +27,7 @@ var SessionErrorCode = /* @__PURE__ */ ((SessionErrorCode2) => {
27
27
  SessionErrorCode2["SESSION_MAX_SESSIONS_EXCEEDED"] = "session_max_sessions_exceeded";
28
28
  SessionErrorCode2["SESSION_STORAGE_FAILED"] = "session_storage_failed";
29
29
  SessionErrorCode2["SESSION_RESET_FAILED"] = "session_reset_failed";
30
+ SessionErrorCode2["SESSION_BUSY"] = "session_busy";
30
31
  return SessionErrorCode2;
31
32
  })(SessionErrorCode || {});
32
33
  // Annotate the CommonJS export names for ESM import in node:
@@ -7,6 +7,7 @@ export declare enum SessionErrorCode {
7
7
  SESSION_INITIALIZATION_FAILED = "session_initialization_failed",
8
8
  SESSION_MAX_SESSIONS_EXCEEDED = "session_max_sessions_exceeded",
9
9
  SESSION_STORAGE_FAILED = "session_storage_failed",
10
- SESSION_RESET_FAILED = "session_reset_failed"
10
+ SESSION_RESET_FAILED = "session_reset_failed",
11
+ SESSION_BUSY = "session_busy"
11
12
  }
12
13
  //# sourceMappingURL=error-codes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/session/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,gBAAgB;IAExB,iBAAiB,sBAAsB;IACvC,6BAA6B,kCAAkC;IAC/D,6BAA6B,kCAAkC;IAG/D,sBAAsB,2BAA2B;IAGjD,oBAAoB,yBAAyB;CAChD"}
1
+ {"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../../src/session/error-codes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,gBAAgB;IAExB,iBAAiB,sBAAsB;IACvC,6BAA6B,kCAAkC;IAC/D,6BAA6B,kCAAkC;IAG/D,sBAAsB,2BAA2B;IAGjD,oBAAoB,yBAAyB;IAC7C,YAAY,iBAAiB;CAChC"}
@@ -5,6 +5,7 @@ var SessionErrorCode = /* @__PURE__ */ ((SessionErrorCode2) => {
5
5
  SessionErrorCode2["SESSION_MAX_SESSIONS_EXCEEDED"] = "session_max_sessions_exceeded";
6
6
  SessionErrorCode2["SESSION_STORAGE_FAILED"] = "session_storage_failed";
7
7
  SessionErrorCode2["SESSION_RESET_FAILED"] = "session_reset_failed";
8
+ SessionErrorCode2["SESSION_BUSY"] = "session_busy";
8
9
  return SessionErrorCode2;
9
10
  })(SessionErrorCode || {});
10
11
  export {
@@ -86,6 +86,19 @@ class SessionError {
86
86
  { sessionId, reason }
87
87
  );
88
88
  }
89
+ /**
90
+ * Session already processing a run
91
+ */
92
+ static busy(sessionId) {
93
+ return new import_DextoRuntimeError.DextoRuntimeError(
94
+ import_error_codes.SessionErrorCode.SESSION_BUSY,
95
+ import_types.ErrorScope.SESSION,
96
+ import_types.ErrorType.CONFLICT,
97
+ `Session '${sessionId}' is already processing a message`,
98
+ { sessionId },
99
+ "Wait for the current run to finish before starting another one"
100
+ );
101
+ }
89
102
  }
90
103
  // Annotate the CommonJS export names for ESM import in node:
91
104
  0 && (module.exports = {
@@ -39,5 +39,11 @@ export declare class SessionError {
39
39
  sessionId: string;
40
40
  reason: string;
41
41
  }>;
42
+ /**
43
+ * Session already processing a run
44
+ */
45
+ static busy(sessionId: string): DextoRuntimeError<{
46
+ sessionId: string;
47
+ }>;
42
48
  }
43
49
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAInE;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;;;IAUjC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAU7D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;IAWpE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;IAUzE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;CASvD"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/session/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAInE;;;GAGG;AACH,qBAAa,YAAY;IACrB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM;;;IAUjC;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAU7D;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;IAWpE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;IAUzE;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;IAUpD;;OAEG;IACH,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM;;;CAUhC"}
@@ -64,6 +64,19 @@ class SessionError {
64
64
  { sessionId, reason }
65
65
  );
66
66
  }
67
+ /**
68
+ * Session already processing a run
69
+ */
70
+ static busy(sessionId) {
71
+ return new DextoRuntimeError(
72
+ SessionErrorCode.SESSION_BUSY,
73
+ ErrorScope.SESSION,
74
+ ErrorType.CONFLICT,
75
+ `Session '${sessionId}' is already processing a message`,
76
+ { sessionId },
77
+ "Wait for the current run to finish before starting another one"
78
+ );
79
+ }
67
80
  }
68
81
  export {
69
82
  SessionError
@@ -25,6 +25,7 @@ module.exports = __toCommonJS(decorators_exports);
25
25
  var import_api = require("@opentelemetry/api");
26
26
  var import_utils = require("./utils.js");
27
27
  var import_safe_stringify = require("../utils/safe-stringify.js");
28
+ var import_runtime = require("../runtime/index.js");
28
29
  function withSpan(options) {
29
30
  return function(_target, propertyKey, descriptor) {
30
31
  if (!descriptor || typeof descriptor === "number") return;
@@ -53,7 +54,15 @@ function withSpan(options) {
53
54
  args.forEach((arg, index) => {
54
55
  span.setAttribute(`${spanName}.argument.${index}`, (0, import_safe_stringify.safeStringify)(arg, 8192));
55
56
  });
56
- const { requestId, componentName, runId, threadId, resourceId, sessionId } = (0, import_utils.getBaggageValues)(ctx);
57
+ const {
58
+ requestId,
59
+ componentName,
60
+ runId,
61
+ threadId,
62
+ resourceId,
63
+ sessionId,
64
+ hostRuntime
65
+ } = (0, import_utils.getBaggageValues)(ctx);
57
66
  if (sessionId) {
58
67
  span.setAttribute("sessionId", sessionId);
59
68
  span.setAttribute("baggage.sessionId", sessionId);
@@ -74,65 +83,73 @@ function withSpan(options) {
74
83
  span.setAttribute("runId", String(runId));
75
84
  span.setAttribute("baggage.runId", String(runId));
76
85
  }
86
+ for (const [key, value] of Object.entries((0, import_runtime.getHostRuntimeAttributes)(hostRuntime))) {
87
+ span.setAttribute(key, value);
88
+ }
89
+ const inferredComponentName = options?.componentName;
90
+ const effectiveHostRuntime = hostRuntime;
91
+ const effectiveRunId = effectiveHostRuntime?.ids?.runId ?? runId;
77
92
  if (componentName) {
78
93
  span.setAttribute("componentName", componentName);
79
94
  span.setAttribute("baggage.componentName", componentName);
80
- } else if (this && typeof this === "object") {
81
- const contextObj = this;
82
- const inferredName = contextObj.name ?? contextObj.constructor?.name;
83
- if (inferredName) {
84
- span.setAttribute("componentName", inferredName);
85
- }
86
- if (contextObj.runId) {
87
- span.setAttribute("runId", contextObj.runId);
88
- span.setAttribute("baggage.runId", contextObj.runId);
89
- }
90
- const existingBaggage = import_api.propagation.getBaggage(ctx);
91
- const baggageEntries = {};
92
- if (existingBaggage) {
93
- existingBaggage.getAllEntries().forEach(([key, entry]) => {
94
- baggageEntries[key] = entry;
95
- });
96
- }
97
- if (sessionId !== void 0) {
98
- baggageEntries.sessionId = {
99
- ...baggageEntries.sessionId,
100
- value: String(sessionId)
101
- };
102
- }
103
- if (requestId !== void 0) {
104
- baggageEntries["http.request_id"] = {
105
- ...baggageEntries["http.request_id"],
106
- value: String(requestId)
107
- };
108
- }
109
- if (threadId !== void 0) {
110
- baggageEntries.threadId = {
111
- ...baggageEntries.threadId,
112
- value: String(threadId)
113
- };
114
- }
115
- if (resourceId !== void 0) {
116
- baggageEntries.resourceId = {
117
- ...baggageEntries.resourceId,
118
- value: String(resourceId)
119
- };
120
- }
121
- if (inferredName !== void 0) {
122
- baggageEntries.componentName = {
123
- ...baggageEntries.componentName,
124
- value: String(inferredName)
125
- };
126
- }
127
- if (contextObj.runId !== void 0) {
128
- baggageEntries.runId = {
129
- ...baggageEntries.runId,
130
- value: String(contextObj.runId)
131
- };
132
- }
133
- if (Object.keys(baggageEntries).length > 0) {
134
- ctx = import_api.propagation.setBaggage(ctx, import_api.propagation.createBaggage(baggageEntries));
135
- }
95
+ } else if (inferredComponentName) {
96
+ span.setAttribute("componentName", inferredComponentName);
97
+ }
98
+ if (effectiveRunId !== void 0) {
99
+ span.setAttribute("runId", String(effectiveRunId));
100
+ span.setAttribute("baggage.runId", String(effectiveRunId));
101
+ }
102
+ for (const [key, value] of Object.entries(
103
+ (0, import_runtime.getHostRuntimeAttributes)(effectiveHostRuntime)
104
+ )) {
105
+ span.setAttribute(key, value);
106
+ }
107
+ const existingBaggage = import_api.propagation.getBaggage(ctx);
108
+ const baggageEntries = {};
109
+ if (existingBaggage) {
110
+ existingBaggage.getAllEntries().forEach(([key, entry]) => {
111
+ baggageEntries[key] = entry;
112
+ });
113
+ }
114
+ if (sessionId !== void 0) {
115
+ baggageEntries.sessionId = {
116
+ ...baggageEntries.sessionId,
117
+ value: String(sessionId)
118
+ };
119
+ }
120
+ if (requestId !== void 0) {
121
+ baggageEntries["http.request_id"] = {
122
+ ...baggageEntries["http.request_id"],
123
+ value: String(requestId)
124
+ };
125
+ }
126
+ if (threadId !== void 0) {
127
+ baggageEntries.threadId = {
128
+ ...baggageEntries.threadId,
129
+ value: String(threadId)
130
+ };
131
+ }
132
+ if (resourceId !== void 0) {
133
+ baggageEntries.resourceId = {
134
+ ...baggageEntries.resourceId,
135
+ value: String(resourceId)
136
+ };
137
+ }
138
+ if (componentName === void 0 && inferredComponentName !== void 0) {
139
+ baggageEntries.componentName = {
140
+ ...baggageEntries.componentName,
141
+ value: String(inferredComponentName)
142
+ };
143
+ }
144
+ if (effectiveRunId !== void 0) {
145
+ baggageEntries.runId = {
146
+ ...baggageEntries.runId,
147
+ value: String(effectiveRunId)
148
+ };
149
+ }
150
+ Object.assign(baggageEntries, (0, import_runtime.getHostRuntimeBaggageEntries)(effectiveHostRuntime));
151
+ if (Object.keys(baggageEntries).length > 0) {
152
+ ctx = import_api.propagation.setBaggage(ctx, import_api.propagation.createBaggage(baggageEntries));
136
153
  }
137
154
  let result;
138
155
  try {
@@ -197,6 +214,7 @@ function InstrumentClass(options) {
197
214
  spanName: options?.prefix ? `${options.prefix}.${method}` : method,
198
215
  skipIfNoTelemetry: true,
199
216
  spanKind: options?.spanKind || import_api.SpanKind.INTERNAL,
217
+ componentName: options?.componentName ?? target.name,
200
218
  ...options?.tracerName !== void 0 && {
201
219
  tracerName: options.tracerName
202
220
  }
@@ -1,12 +1,14 @@
1
1
  import { SpanKind } from '@opentelemetry/api';
2
2
  export declare function withSpan(options: {
3
3
  spanName?: string;
4
+ componentName?: string;
4
5
  skipIfNoTelemetry?: boolean;
5
6
  spanKind?: SpanKind;
6
7
  tracerName?: string;
7
8
  }): any;
8
9
  export declare function InstrumentClass(options?: {
9
10
  prefix?: string;
11
+ componentName?: string;
10
12
  spanKind?: SpanKind;
11
13
  excludeMethods?: string[];
12
14
  methodFilter?: (methodName: string) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/telemetry/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,QAAQ,EAIX,MAAM,oBAAoB,CAAC;AAM5B,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,GAAG,CAqNN;AAGD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,IACoB,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,QAAQ,CAAC,OA4BrE"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/telemetry/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,QAAQ,EAIX,MAAM,oBAAoB,CAAC;AAO5B,wBAAgB,QAAQ,CAAC,OAAO,EAAE;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,GAAG,CAgON;AAGD,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,IACoB,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;CAAE,EAAE,QAAQ,CAAC,OA6BrE"}
@@ -8,6 +8,7 @@ import {
8
8
  } from "@opentelemetry/api";
9
9
  import { hasActiveTelemetry, getBaggageValues } from "./utils.js";
10
10
  import { safeStringify } from "../utils/safe-stringify.js";
11
+ import { getHostRuntimeAttributes, getHostRuntimeBaggageEntries } from "../runtime/index.js";
11
12
  function withSpan(options) {
12
13
  return function(_target, propertyKey, descriptor) {
13
14
  if (!descriptor || typeof descriptor === "number") return;
@@ -36,7 +37,15 @@ function withSpan(options) {
36
37
  args.forEach((arg, index) => {
37
38
  span.setAttribute(`${spanName}.argument.${index}`, safeStringify(arg, 8192));
38
39
  });
39
- const { requestId, componentName, runId, threadId, resourceId, sessionId } = getBaggageValues(ctx);
40
+ const {
41
+ requestId,
42
+ componentName,
43
+ runId,
44
+ threadId,
45
+ resourceId,
46
+ sessionId,
47
+ hostRuntime
48
+ } = getBaggageValues(ctx);
40
49
  if (sessionId) {
41
50
  span.setAttribute("sessionId", sessionId);
42
51
  span.setAttribute("baggage.sessionId", sessionId);
@@ -57,65 +66,73 @@ function withSpan(options) {
57
66
  span.setAttribute("runId", String(runId));
58
67
  span.setAttribute("baggage.runId", String(runId));
59
68
  }
69
+ for (const [key, value] of Object.entries(getHostRuntimeAttributes(hostRuntime))) {
70
+ span.setAttribute(key, value);
71
+ }
72
+ const inferredComponentName = options?.componentName;
73
+ const effectiveHostRuntime = hostRuntime;
74
+ const effectiveRunId = effectiveHostRuntime?.ids?.runId ?? runId;
60
75
  if (componentName) {
61
76
  span.setAttribute("componentName", componentName);
62
77
  span.setAttribute("baggage.componentName", componentName);
63
- } else if (this && typeof this === "object") {
64
- const contextObj = this;
65
- const inferredName = contextObj.name ?? contextObj.constructor?.name;
66
- if (inferredName) {
67
- span.setAttribute("componentName", inferredName);
68
- }
69
- if (contextObj.runId) {
70
- span.setAttribute("runId", contextObj.runId);
71
- span.setAttribute("baggage.runId", contextObj.runId);
72
- }
73
- const existingBaggage = propagation.getBaggage(ctx);
74
- const baggageEntries = {};
75
- if (existingBaggage) {
76
- existingBaggage.getAllEntries().forEach(([key, entry]) => {
77
- baggageEntries[key] = entry;
78
- });
79
- }
80
- if (sessionId !== void 0) {
81
- baggageEntries.sessionId = {
82
- ...baggageEntries.sessionId,
83
- value: String(sessionId)
84
- };
85
- }
86
- if (requestId !== void 0) {
87
- baggageEntries["http.request_id"] = {
88
- ...baggageEntries["http.request_id"],
89
- value: String(requestId)
90
- };
91
- }
92
- if (threadId !== void 0) {
93
- baggageEntries.threadId = {
94
- ...baggageEntries.threadId,
95
- value: String(threadId)
96
- };
97
- }
98
- if (resourceId !== void 0) {
99
- baggageEntries.resourceId = {
100
- ...baggageEntries.resourceId,
101
- value: String(resourceId)
102
- };
103
- }
104
- if (inferredName !== void 0) {
105
- baggageEntries.componentName = {
106
- ...baggageEntries.componentName,
107
- value: String(inferredName)
108
- };
109
- }
110
- if (contextObj.runId !== void 0) {
111
- baggageEntries.runId = {
112
- ...baggageEntries.runId,
113
- value: String(contextObj.runId)
114
- };
115
- }
116
- if (Object.keys(baggageEntries).length > 0) {
117
- ctx = propagation.setBaggage(ctx, propagation.createBaggage(baggageEntries));
118
- }
78
+ } else if (inferredComponentName) {
79
+ span.setAttribute("componentName", inferredComponentName);
80
+ }
81
+ if (effectiveRunId !== void 0) {
82
+ span.setAttribute("runId", String(effectiveRunId));
83
+ span.setAttribute("baggage.runId", String(effectiveRunId));
84
+ }
85
+ for (const [key, value] of Object.entries(
86
+ getHostRuntimeAttributes(effectiveHostRuntime)
87
+ )) {
88
+ span.setAttribute(key, value);
89
+ }
90
+ const existingBaggage = propagation.getBaggage(ctx);
91
+ const baggageEntries = {};
92
+ if (existingBaggage) {
93
+ existingBaggage.getAllEntries().forEach(([key, entry]) => {
94
+ baggageEntries[key] = entry;
95
+ });
96
+ }
97
+ if (sessionId !== void 0) {
98
+ baggageEntries.sessionId = {
99
+ ...baggageEntries.sessionId,
100
+ value: String(sessionId)
101
+ };
102
+ }
103
+ if (requestId !== void 0) {
104
+ baggageEntries["http.request_id"] = {
105
+ ...baggageEntries["http.request_id"],
106
+ value: String(requestId)
107
+ };
108
+ }
109
+ if (threadId !== void 0) {
110
+ baggageEntries.threadId = {
111
+ ...baggageEntries.threadId,
112
+ value: String(threadId)
113
+ };
114
+ }
115
+ if (resourceId !== void 0) {
116
+ baggageEntries.resourceId = {
117
+ ...baggageEntries.resourceId,
118
+ value: String(resourceId)
119
+ };
120
+ }
121
+ if (componentName === void 0 && inferredComponentName !== void 0) {
122
+ baggageEntries.componentName = {
123
+ ...baggageEntries.componentName,
124
+ value: String(inferredComponentName)
125
+ };
126
+ }
127
+ if (effectiveRunId !== void 0) {
128
+ baggageEntries.runId = {
129
+ ...baggageEntries.runId,
130
+ value: String(effectiveRunId)
131
+ };
132
+ }
133
+ Object.assign(baggageEntries, getHostRuntimeBaggageEntries(effectiveHostRuntime));
134
+ if (Object.keys(baggageEntries).length > 0) {
135
+ ctx = propagation.setBaggage(ctx, propagation.createBaggage(baggageEntries));
119
136
  }
120
137
  let result;
121
138
  try {
@@ -180,6 +197,7 @@ function InstrumentClass(options) {
180
197
  spanName: options?.prefix ? `${options.prefix}.${method}` : method,
181
198
  skipIfNoTelemetry: true,
182
199
  spanKind: options?.spanKind || SpanKind.INTERNAL,
200
+ componentName: options?.componentName ?? target.name,
183
201
  ...options?.tracerName !== void 0 && {
184
202
  tracerName: options.tracerName
185
203
  }
@@ -25,6 +25,7 @@ __export(utils_exports, {
25
25
  module.exports = __toCommonJS(utils_exports);
26
26
  var import_api = require("@opentelemetry/api");
27
27
  var import_telemetry = require("./telemetry.js");
28
+ var import_runtime = require("../runtime/index.js");
28
29
  function hasActiveTelemetry(logger) {
29
30
  logger?.silly("hasActiveTelemetry called.");
30
31
  try {
@@ -48,8 +49,9 @@ function getBaggageValues(ctx, logger) {
48
49
  const threadId = currentBaggage?.getEntry("threadId")?.value;
49
50
  const resourceId = currentBaggage?.getEntry("resourceId")?.value;
50
51
  const sessionId = currentBaggage?.getEntry("sessionId")?.value;
52
+ const hostRuntime = (0, import_runtime.getHostRuntimeContextFromBaggage)(ctx);
51
53
  logger?.silly(
52
- `getBaggageValues: Extracted - requestId: ${requestId}, componentName: ${componentName}, runId: ${runId}, threadId: ${threadId}, resourceId: ${resourceId}, sessionId: ${sessionId}`
54
+ `getBaggageValues: Extracted - requestId: ${requestId}, componentName: ${componentName}, runId: ${runId}, threadId: ${threadId}, resourceId: ${resourceId}, sessionId: ${sessionId}, hostRuntimeIds: ${JSON.stringify(hostRuntime?.ids ?? {})}`
53
55
  );
54
56
  return {
55
57
  requestId,
@@ -57,15 +59,13 @@ function getBaggageValues(ctx, logger) {
57
59
  runId,
58
60
  threadId,
59
61
  resourceId,
60
- sessionId
62
+ sessionId,
63
+ hostRuntime
61
64
  };
62
65
  }
63
66
  function addBaggageAttributesToSpan(span, ctx, logger) {
64
67
  logger?.debug("addBaggageAttributesToSpan called.");
65
- const { requestId, componentName, runId, threadId, resourceId, sessionId } = getBaggageValues(
66
- ctx,
67
- logger
68
- );
68
+ const { requestId, componentName, runId, threadId, resourceId, sessionId, hostRuntime } = getBaggageValues(ctx, logger);
69
69
  if (componentName) {
70
70
  span.setAttribute("componentName", componentName);
71
71
  }
@@ -84,6 +84,9 @@ function addBaggageAttributesToSpan(span, ctx, logger) {
84
84
  if (sessionId) {
85
85
  span.setAttribute("sessionId", sessionId);
86
86
  }
87
+ for (const [key, value] of Object.entries((0, import_runtime.getHostRuntimeAttributes)(hostRuntime))) {
88
+ span.setAttribute(key, value);
89
+ }
87
90
  logger?.debug("addBaggageAttributesToSpan: Baggage attributes added to span.");
88
91
  }
89
92
  // Annotate the CommonJS export names for ESM import in node:
@@ -14,6 +14,9 @@ export declare function getBaggageValues(ctx: Context, logger?: Logger): {
14
14
  threadId: string | undefined;
15
15
  resourceId: string | undefined;
16
16
  sessionId: string | undefined;
17
+ hostRuntime: {
18
+ ids?: Record<string, string> | undefined;
19
+ } | undefined;
17
20
  };
18
21
  /**
19
22
  * Attaches baggage values from the given context to the provided span as attributes.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/telemetry/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAa3D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;EAoB7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA0B1F"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/telemetry/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIpD,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAa3D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;EAsB7D;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CA2B1F"}
@@ -1,6 +1,7 @@
1
1
  import "../chunk-PTJYTZNU.js";
2
2
  import { propagation } from "@opentelemetry/api";
3
3
  import { Telemetry } from "./telemetry.js";
4
+ import { getHostRuntimeAttributes, getHostRuntimeContextFromBaggage } from "../runtime/index.js";
4
5
  function hasActiveTelemetry(logger) {
5
6
  logger?.silly("hasActiveTelemetry called.");
6
7
  try {
@@ -24,8 +25,9 @@ function getBaggageValues(ctx, logger) {
24
25
  const threadId = currentBaggage?.getEntry("threadId")?.value;
25
26
  const resourceId = currentBaggage?.getEntry("resourceId")?.value;
26
27
  const sessionId = currentBaggage?.getEntry("sessionId")?.value;
28
+ const hostRuntime = getHostRuntimeContextFromBaggage(ctx);
27
29
  logger?.silly(
28
- `getBaggageValues: Extracted - requestId: ${requestId}, componentName: ${componentName}, runId: ${runId}, threadId: ${threadId}, resourceId: ${resourceId}, sessionId: ${sessionId}`
30
+ `getBaggageValues: Extracted - requestId: ${requestId}, componentName: ${componentName}, runId: ${runId}, threadId: ${threadId}, resourceId: ${resourceId}, sessionId: ${sessionId}, hostRuntimeIds: ${JSON.stringify(hostRuntime?.ids ?? {})}`
29
31
  );
30
32
  return {
31
33
  requestId,
@@ -33,15 +35,13 @@ function getBaggageValues(ctx, logger) {
33
35
  runId,
34
36
  threadId,
35
37
  resourceId,
36
- sessionId
38
+ sessionId,
39
+ hostRuntime
37
40
  };
38
41
  }
39
42
  function addBaggageAttributesToSpan(span, ctx, logger) {
40
43
  logger?.debug("addBaggageAttributesToSpan called.");
41
- const { requestId, componentName, runId, threadId, resourceId, sessionId } = getBaggageValues(
42
- ctx,
43
- logger
44
- );
44
+ const { requestId, componentName, runId, threadId, resourceId, sessionId, hostRuntime } = getBaggageValues(ctx, logger);
45
45
  if (componentName) {
46
46
  span.setAttribute("componentName", componentName);
47
47
  }
@@ -60,6 +60,9 @@ function addBaggageAttributesToSpan(span, ctx, logger) {
60
60
  if (sessionId) {
61
61
  span.setAttribute("sessionId", sessionId);
62
62
  }
63
+ for (const [key, value] of Object.entries(getHostRuntimeAttributes(hostRuntime))) {
64
+ span.setAttribute(key, value);
65
+ }
63
66
  logger?.debug("addBaggageAttributesToSpan: Baggage attributes added to span.");
64
67
  }
65
68
  export {