@lobu/core 2.8.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.
- package/dist/__tests__/encryption.test.d.ts +2 -0
- package/dist/__tests__/encryption.test.d.ts.map +1 -0
- package/dist/__tests__/encryption.test.js +88 -0
- package/dist/__tests__/encryption.test.js.map +1 -0
- package/dist/__tests__/fixtures/factories.d.ts +30 -0
- package/dist/__tests__/fixtures/factories.d.ts.map +1 -0
- package/dist/__tests__/fixtures/factories.js +53 -0
- package/dist/__tests__/fixtures/factories.js.map +1 -0
- package/dist/__tests__/fixtures/index.d.ts +5 -0
- package/dist/__tests__/fixtures/index.d.ts.map +1 -0
- package/dist/__tests__/fixtures/index.js +14 -0
- package/dist/__tests__/fixtures/index.js.map +1 -0
- package/dist/__tests__/fixtures/mock-fetch.d.ts +13 -0
- package/dist/__tests__/fixtures/mock-fetch.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-fetch.js +29 -0
- package/dist/__tests__/fixtures/mock-fetch.js.map +1 -0
- package/dist/__tests__/fixtures/mock-queue.d.ts +19 -0
- package/dist/__tests__/fixtures/mock-queue.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-queue.js +45 -0
- package/dist/__tests__/fixtures/mock-queue.js.map +1 -0
- package/dist/__tests__/fixtures/mock-redis.d.ts +54 -0
- package/dist/__tests__/fixtures/mock-redis.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mock-redis.js +267 -0
- package/dist/__tests__/fixtures/mock-redis.js.map +1 -0
- package/dist/__tests__/retry.test.d.ts +2 -0
- package/dist/__tests__/retry.test.d.ts.map +1 -0
- package/dist/__tests__/retry.test.js +114 -0
- package/dist/__tests__/retry.test.js.map +1 -0
- package/dist/__tests__/sanitize.test.d.ts +2 -0
- package/dist/__tests__/sanitize.test.d.ts.map +1 -0
- package/dist/__tests__/sanitize.test.js +129 -0
- package/dist/__tests__/sanitize.test.js.map +1 -0
- package/dist/agent-policy.d.ts +21 -0
- package/dist/agent-policy.d.ts.map +1 -0
- package/dist/agent-policy.js +181 -0
- package/dist/agent-policy.js.map +1 -0
- package/dist/agent-store.d.ts +140 -0
- package/dist/agent-store.d.ts.map +1 -0
- package/dist/agent-store.js +27 -0
- package/dist/agent-store.js.map +1 -0
- package/dist/api-types.d.ts +213 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +7 -0
- package/dist/api-types.js.map +1 -0
- package/dist/command-registry.d.ts +41 -0
- package/dist/command-registry.d.ts.map +1 -0
- package/dist/command-registry.js +43 -0
- package/dist/command-registry.js.map +1 -0
- package/dist/constants.d.ts +54 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +60 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +97 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +182 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/integration-types.d.ts +22 -0
- package/dist/integration-types.d.ts.map +1 -0
- package/dist/integration-types.js +9 -0
- package/dist/integration-types.js.map +1 -0
- package/dist/logger.d.ts +15 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +223 -0
- package/dist/logger.js.map +1 -0
- package/dist/modules.d.ts +96 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +140 -0
- package/dist/modules.js.map +1 -0
- package/dist/otel.d.ts +107 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +251 -0
- package/dist/otel.js.map +1 -0
- package/dist/plugin-types.d.ts +42 -0
- package/dist/plugin-types.d.ts.map +1 -0
- package/dist/plugin-types.js +8 -0
- package/dist/plugin-types.js.map +1 -0
- package/dist/provider-config-types.d.ts +53 -0
- package/dist/provider-config-types.d.ts.map +1 -0
- package/dist/provider-config-types.js +7 -0
- package/dist/provider-config-types.js.map +1 -0
- package/dist/redis/base-store.d.ts +73 -0
- package/dist/redis/base-store.d.ts.map +1 -0
- package/dist/redis/base-store.js +174 -0
- package/dist/redis/base-store.js.map +1 -0
- package/dist/sentry.d.ts +12 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +82 -0
- package/dist/sentry.js.map +1 -0
- package/dist/trace.d.ts +25 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +32 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +373 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/encryption.d.ts +9 -0
- package/dist/utils/encryption.d.ts.map +1 -0
- package/dist/utils/encryption.js +107 -0
- package/dist/utils/encryption.js.map +1 -0
- package/dist/utils/env.d.ts +20 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +50 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/json.d.ts +11 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +38 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/lock.d.ts +34 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +66 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/mcp-tool-instructions.d.ts +6 -0
- package/dist/utils/mcp-tool-instructions.d.ts.map +1 -0
- package/dist/utils/mcp-tool-instructions.js +3 -0
- package/dist/utils/mcp-tool-instructions.js.map +1 -0
- package/dist/utils/retry.d.ts +40 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +67 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/sanitize.d.ts +55 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +111 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/worker/auth.d.ts +34 -0
- package/dist/worker/auth.d.ts.map +1 -0
- package/dist/worker/auth.js +63 -0
- package/dist/worker/auth.js.map +1 -0
- package/dist/worker/transport.d.ts +86 -0
- package/dist/worker/transport.d.ts.map +1 -0
- package/dist/worker/transport.js +13 -0
- package/dist/worker/transport.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateWorkerToken = generateWorkerToken;
|
|
4
|
+
exports.verifyWorkerToken = verifyWorkerToken;
|
|
5
|
+
const logger_1 = require("../logger");
|
|
6
|
+
const encryption_1 = require("../utils/encryption");
|
|
7
|
+
const logger = (0, logger_1.createLogger)("worker-auth");
|
|
8
|
+
/**
|
|
9
|
+
* Generate a worker authentication token by encrypting thread metadata
|
|
10
|
+
*/
|
|
11
|
+
function generateWorkerToken(userId, conversationId, deploymentName, options) {
|
|
12
|
+
// Validate required fields
|
|
13
|
+
if (!options.channelId) {
|
|
14
|
+
throw new Error("channelId is required for worker token generation");
|
|
15
|
+
}
|
|
16
|
+
const timestamp = Date.now();
|
|
17
|
+
const payload = {
|
|
18
|
+
userId,
|
|
19
|
+
conversationId,
|
|
20
|
+
channelId: options.channelId,
|
|
21
|
+
teamId: options.teamId, // Can be undefined - that's ok
|
|
22
|
+
agentId: options.agentId, // Space ID for multi-tenant credential lookup
|
|
23
|
+
connectionId: options.connectionId,
|
|
24
|
+
deploymentName,
|
|
25
|
+
timestamp,
|
|
26
|
+
platform: options.platform,
|
|
27
|
+
sessionKey: options.sessionKey,
|
|
28
|
+
traceId: options.traceId, // Trace ID for observability
|
|
29
|
+
};
|
|
30
|
+
// Encrypt the payload
|
|
31
|
+
const encrypted = (0, encryption_1.encrypt)(JSON.stringify(payload));
|
|
32
|
+
return encrypted;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Verify and decrypt a worker authentication token
|
|
36
|
+
*/
|
|
37
|
+
function verifyWorkerToken(token) {
|
|
38
|
+
try {
|
|
39
|
+
// Decrypt the token
|
|
40
|
+
const decrypted = (0, encryption_1.decrypt)(token);
|
|
41
|
+
const data = JSON.parse(decrypted);
|
|
42
|
+
if (!data.conversationId ||
|
|
43
|
+
!data.userId ||
|
|
44
|
+
!data.deploymentName ||
|
|
45
|
+
!data.timestamp) {
|
|
46
|
+
logger.error("Worker token rejected: missing required fields");
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
// Check token expiration (default 24h)
|
|
50
|
+
const parsedTtl = parseInt(process.env.WORKER_TOKEN_TTL_MS ?? "", 10);
|
|
51
|
+
const ttl = !Number.isNaN(parsedTtl) && parsedTtl > 0 ? parsedTtl : 86400000;
|
|
52
|
+
if (Date.now() - data.timestamp > ttl) {
|
|
53
|
+
logger.error("Worker token rejected: expired");
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return data;
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.error("Error verifying token:", error);
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/worker/auth.ts"],"names":[],"mappings":";;AA2BA,kDAqCC;AAKD,8CA8BC;AAnGD,sCAAyC;AACzC,oDAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,aAAa,CAAC,CAAC;AAqB3C;;GAEG;AACH,SAAgB,mBAAmB,CACjC,MAAc,EACd,cAAsB,EACtB,cAAsB,EACtB,OAQC;IAED,2BAA2B;IAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAoB;QAC/B,MAAM;QACN,cAAc;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,+BAA+B;QACvD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,8CAA8C;QACxE,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,cAAc;QACd,SAAS;QACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,6BAA6B;KACxD,CAAC;IAEF,sBAAsB;IACtB,MAAM,SAAS,GAAG,IAAA,oBAAO,EAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC;QACH,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAA,oBAAO,EAAC,KAAK,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAoB,CAAC;QAEtD,IACE,CAAC,IAAI,CAAC,cAAc;YACpB,CAAC,IAAI,CAAC,MAAM;YACZ,CAAC,IAAI,CAAC,cAAc;YACpB,CAAC,IAAI,CAAC,SAAS,EACf,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uCAAuC;QACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,GAAG,GACP,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Transport Interface
|
|
3
|
+
* Defines how workers communicate with the gateway (platform-agnostic)
|
|
4
|
+
*
|
|
5
|
+
* This abstraction allows different transport implementations:
|
|
6
|
+
* - HTTP (current implementation)
|
|
7
|
+
* - WebSocket (for real-time bidirectional communication)
|
|
8
|
+
* - gRPC (for high-performance scenarios)
|
|
9
|
+
* - Message Queue (for asynchronous processing)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Transport interface for worker-to-gateway communication
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkerTransport {
|
|
15
|
+
/**
|
|
16
|
+
* Set the job ID for this worker session
|
|
17
|
+
* Used to correlate responses with the originating request
|
|
18
|
+
*/
|
|
19
|
+
setJobId(jobId: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Set module-specific data to be included in responses
|
|
22
|
+
* Allows modules to attach metadata to worker responses
|
|
23
|
+
*/
|
|
24
|
+
setModuleData(moduleData: Record<string, unknown>): void;
|
|
25
|
+
/**
|
|
26
|
+
* Send a streaming delta to the gateway
|
|
27
|
+
*
|
|
28
|
+
* @param delta - The content delta to send
|
|
29
|
+
* @param isFullReplacement - If true, replaces entire content; if false, appends
|
|
30
|
+
* @param isFinal - If true, indicates this is the final delta
|
|
31
|
+
*/
|
|
32
|
+
sendStreamDelta(delta: string, isFullReplacement?: boolean, isFinal?: boolean): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Signal that the worker has completed processing
|
|
35
|
+
* Optionally includes a final delta
|
|
36
|
+
*
|
|
37
|
+
* @param finalDelta - Optional final content delta
|
|
38
|
+
*/
|
|
39
|
+
signalDone(finalDelta?: string): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Signal successful completion without additional content
|
|
42
|
+
*/
|
|
43
|
+
signalCompletion(): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Signal that an error occurred during processing
|
|
46
|
+
*
|
|
47
|
+
* @param error - The error that occurred
|
|
48
|
+
*/
|
|
49
|
+
signalError(error: Error, errorCode?: string): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* Send a status update to the gateway
|
|
52
|
+
* Used for long-running operations to show progress
|
|
53
|
+
*
|
|
54
|
+
* @param elapsedSeconds - Time elapsed since operation started
|
|
55
|
+
* @param state - Current state description (e.g., "processing", "waiting for API")
|
|
56
|
+
*/
|
|
57
|
+
sendStatusUpdate(elapsedSeconds: number, state: string): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Configuration for creating a worker transport
|
|
61
|
+
*/
|
|
62
|
+
export interface WorkerTransportConfig {
|
|
63
|
+
/** Gateway URL for sending responses */
|
|
64
|
+
gatewayUrl: string;
|
|
65
|
+
/** Authentication token for worker */
|
|
66
|
+
workerToken: string;
|
|
67
|
+
/** User ID who initiated the request */
|
|
68
|
+
userId: string;
|
|
69
|
+
/** Channel/conversation ID */
|
|
70
|
+
channelId: string;
|
|
71
|
+
/** Conversation ID for organizing messages */
|
|
72
|
+
conversationId: string;
|
|
73
|
+
/** Original message timestamp/ID */
|
|
74
|
+
originalMessageTs: string;
|
|
75
|
+
/** Bot's response message timestamp/ID (if exists) */
|
|
76
|
+
botResponseTs?: string;
|
|
77
|
+
/** Team/workspace ID (required for all platforms) */
|
|
78
|
+
teamId: string;
|
|
79
|
+
/** Platform identifier (slack, whatsapp, api, etc.) */
|
|
80
|
+
platform?: string;
|
|
81
|
+
/** Platform-specific metadata needed for response routing */
|
|
82
|
+
platformMetadata?: Record<string, unknown>;
|
|
83
|
+
/** IDs of messages already processed (for deduplication) */
|
|
84
|
+
processedMessageIds?: string[];
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/worker/transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAEzD;;;;;;OAMG;IACH,eAAe,CACb,KAAK,EAAE,MAAM,EACb,iBAAiB,CAAC,EAAE,OAAO,EAC3B,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElC;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;;OAMG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IAEnB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAElB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAE1B,sDAAsD;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE3C,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Worker Transport Interface
|
|
4
|
+
* Defines how workers communicate with the gateway (platform-agnostic)
|
|
5
|
+
*
|
|
6
|
+
* This abstraction allows different transport implementations:
|
|
7
|
+
* - HTTP (current implementation)
|
|
8
|
+
* - WebSocket (for real-time bidirectional communication)
|
|
9
|
+
* - gRPC (for high-performance scenarios)
|
|
10
|
+
* - Message Queue (for asynchronous processing)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/worker/transport.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lobu/core",
|
|
3
|
+
"version": "2.8.0",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"description": "Core types and utilities for Lobu agent platform",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"bun": "./dist/index.js",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"require": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./testing": {
|
|
16
|
+
"bun": "./dist/__tests__/fixtures/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"dev": "tsc --watch",
|
|
22
|
+
"test": "bun test",
|
|
23
|
+
"typecheck": "tsc --noEmit"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@opentelemetry/api": "^1.9.0",
|
|
27
|
+
"@opentelemetry/sdk-trace-node": "^1.30.0",
|
|
28
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.57.0",
|
|
29
|
+
"@opentelemetry/resources": "^1.30.0",
|
|
30
|
+
"@opentelemetry/semantic-conventions": "^1.28.0",
|
|
31
|
+
"@sentry/node": "^10.23.0",
|
|
32
|
+
"ioredis": "^5.4.1",
|
|
33
|
+
"winston": "^3.17.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/bun": "1.2.11",
|
|
37
|
+
"@types/node": "^20.0.0",
|
|
38
|
+
"typescript": "^5.8.3"
|
|
39
|
+
}
|
|
40
|
+
}
|