@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,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CommandRegistry = void 0;
|
|
4
|
+
const logger_1 = require("./logger");
|
|
5
|
+
const logger = (0, logger_1.createLogger)("command-registry");
|
|
6
|
+
/**
|
|
7
|
+
* Shared command registry used by all platform adapters.
|
|
8
|
+
* Matches OpenClaw's registerCommand() shape so migration is a simple swap.
|
|
9
|
+
*/
|
|
10
|
+
class CommandRegistry {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.commands = new Map();
|
|
13
|
+
}
|
|
14
|
+
register(cmd) {
|
|
15
|
+
this.commands.set(cmd.name, cmd);
|
|
16
|
+
logger.debug({ command: cmd.name }, "Command registered");
|
|
17
|
+
}
|
|
18
|
+
get(name) {
|
|
19
|
+
return this.commands.get(name);
|
|
20
|
+
}
|
|
21
|
+
getAll() {
|
|
22
|
+
return Array.from(this.commands.values());
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Try to handle a command by name. Returns true if handled.
|
|
26
|
+
*/
|
|
27
|
+
async tryHandle(name, ctx) {
|
|
28
|
+
const cmd = this.commands.get(name);
|
|
29
|
+
if (!cmd)
|
|
30
|
+
return false;
|
|
31
|
+
try {
|
|
32
|
+
await cmd.handler(ctx);
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger.error({ command: name, error: String(error) }, "Command handler failed");
|
|
37
|
+
await ctx.reply("Sorry, something went wrong executing that command. Please try again.");
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.CommandRegistry = CommandRegistry;
|
|
43
|
+
//# sourceMappingURL=command-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":";;;AAAA,qCAAwC;AAExC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,kBAAkB,CAAC,CAAC;AA6BhD;;;GAGG;AACH,MAAa,eAAe;IAA5B;QACU,aAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAoC1D,CAAC;IAlCC,QAAQ,CAAC,GAAsB;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,GAAmB;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CACV,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EACvC,wBAAwB,CACzB,CAAC;YACF,MAAM,GAAG,CAAC,KAAK,CACb,uEAAuE,CACxE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AArCD,0CAqCC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
/**
|
|
3
|
+
* Shared constants across all packages
|
|
4
|
+
* These are platform-agnostic and used by core, gateway, and platform adapters
|
|
5
|
+
*/
|
|
6
|
+
export declare const TIME: {
|
|
7
|
+
/** One hour in milliseconds */
|
|
8
|
+
readonly HOUR_MS: number;
|
|
9
|
+
/** One day in milliseconds */
|
|
10
|
+
readonly DAY_MS: number;
|
|
11
|
+
/** One hour in seconds */
|
|
12
|
+
readonly HOUR_SECONDS: 3600;
|
|
13
|
+
/** One day in seconds */
|
|
14
|
+
readonly DAY_SECONDS: number;
|
|
15
|
+
/** One minute in milliseconds */
|
|
16
|
+
readonly MINUTE_MS: number;
|
|
17
|
+
/** Five seconds in milliseconds */
|
|
18
|
+
readonly FIVE_SECONDS_MS: 5000;
|
|
19
|
+
/** Thirty seconds */
|
|
20
|
+
readonly THIRTY_SECONDS: 30;
|
|
21
|
+
/** Three hours in milliseconds (for interaction timeout) */
|
|
22
|
+
readonly THREE_HOURS_MS: number;
|
|
23
|
+
/** Three hours in seconds (for Redis TTL) */
|
|
24
|
+
readonly THREE_HOURS_SECONDS: number;
|
|
25
|
+
};
|
|
26
|
+
export declare const REDIS_KEYS: {
|
|
27
|
+
/** Prefix for bot message timestamps */
|
|
28
|
+
readonly BOT_MESSAGES: "bot_messages:";
|
|
29
|
+
/** Prefix for session data */
|
|
30
|
+
readonly SESSION: "session:";
|
|
31
|
+
/** Prefix for thread ownership */
|
|
32
|
+
readonly THREAD_OWNER: "thread_owner:";
|
|
33
|
+
/** Prefix for MCP credentials */
|
|
34
|
+
readonly MCP_CREDENTIAL: "mcp:credential:";
|
|
35
|
+
/** Prefix for MCP OAuth state */
|
|
36
|
+
readonly MCP_OAUTH_STATE: "mcp:oauth:state:";
|
|
37
|
+
/** Prefix for MCP inputs */
|
|
38
|
+
readonly MCP_INPUT: "mcp:input:";
|
|
39
|
+
};
|
|
40
|
+
export declare const DEFAULTS: {
|
|
41
|
+
/** Default session TTL in milliseconds */
|
|
42
|
+
readonly SESSION_TTL_MS: number;
|
|
43
|
+
/** Default session TTL in seconds */
|
|
44
|
+
readonly SESSION_TTL_SECONDS: number;
|
|
45
|
+
/** Default queue expiration in hours */
|
|
46
|
+
readonly QUEUE_EXPIRE_HOURS: 24;
|
|
47
|
+
/** Default retry limit for queue operations */
|
|
48
|
+
readonly QUEUE_RETRY_LIMIT: 3;
|
|
49
|
+
/** Default retry delay in seconds */
|
|
50
|
+
readonly QUEUE_RETRY_DELAY_SECONDS: 30;
|
|
51
|
+
/** Default session timeout in minutes */
|
|
52
|
+
readonly SESSION_TIMEOUT_MINUTES: 5;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAGH,eAAO,MAAM,IAAI;IACf,+BAA+B;;IAE/B,8BAA8B;;IAE9B,0BAA0B;;IAE1B,yBAAyB;;IAEzB,iCAAiC;;IAEjC,mCAAmC;;IAEnC,qBAAqB;;IAErB,4DAA4D;;IAE5D,6CAA6C;;CAErC,CAAC;AAGX,eAAO,MAAM,UAAU;IACrB,wCAAwC;;IAExC,8BAA8B;;IAE9B,kCAAkC;;IAElC,iCAAiC;;IAEjC,iCAAiC;;IAEjC,4BAA4B;;CAEpB,CAAC;AAGX,eAAO,MAAM,QAAQ;IACnB,0CAA0C;;IAE1C,qCAAqC;;IAErC,wCAAwC;;IAExC,+CAA+C;;IAE/C,qCAAqC;;IAErC,yCAAyC;;CAEjC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Shared constants across all packages
|
|
5
|
+
* These are platform-agnostic and used by core, gateway, and platform adapters
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DEFAULTS = exports.REDIS_KEYS = exports.TIME = void 0;
|
|
9
|
+
// Time constants (milliseconds)
|
|
10
|
+
exports.TIME = {
|
|
11
|
+
/** One hour in milliseconds */
|
|
12
|
+
HOUR_MS: 60 * 60 * 1000,
|
|
13
|
+
/** One day in milliseconds */
|
|
14
|
+
DAY_MS: 24 * 60 * 60 * 1000,
|
|
15
|
+
/** One hour in seconds */
|
|
16
|
+
HOUR_SECONDS: 3600,
|
|
17
|
+
/** One day in seconds */
|
|
18
|
+
DAY_SECONDS: 24 * 60 * 60,
|
|
19
|
+
/** One minute in milliseconds */
|
|
20
|
+
MINUTE_MS: 60 * 1000,
|
|
21
|
+
/** Five seconds in milliseconds */
|
|
22
|
+
FIVE_SECONDS_MS: 5000,
|
|
23
|
+
/** Thirty seconds */
|
|
24
|
+
THIRTY_SECONDS: 30,
|
|
25
|
+
/** Three hours in milliseconds (for interaction timeout) */
|
|
26
|
+
THREE_HOURS_MS: 3 * 60 * 60 * 1000,
|
|
27
|
+
/** Three hours in seconds (for Redis TTL) */
|
|
28
|
+
THREE_HOURS_SECONDS: 3 * 60 * 60,
|
|
29
|
+
};
|
|
30
|
+
// Redis key prefixes
|
|
31
|
+
exports.REDIS_KEYS = {
|
|
32
|
+
/** Prefix for bot message timestamps */
|
|
33
|
+
BOT_MESSAGES: "bot_messages:",
|
|
34
|
+
/** Prefix for session data */
|
|
35
|
+
SESSION: "session:",
|
|
36
|
+
/** Prefix for thread ownership */
|
|
37
|
+
THREAD_OWNER: "thread_owner:",
|
|
38
|
+
/** Prefix for MCP credentials */
|
|
39
|
+
MCP_CREDENTIAL: "mcp:credential:",
|
|
40
|
+
/** Prefix for MCP OAuth state */
|
|
41
|
+
MCP_OAUTH_STATE: "mcp:oauth:state:",
|
|
42
|
+
/** Prefix for MCP inputs */
|
|
43
|
+
MCP_INPUT: "mcp:input:",
|
|
44
|
+
};
|
|
45
|
+
// Default configuration values
|
|
46
|
+
exports.DEFAULTS = {
|
|
47
|
+
/** Default session TTL in milliseconds */
|
|
48
|
+
SESSION_TTL_MS: exports.TIME.DAY_MS,
|
|
49
|
+
/** Default session TTL in seconds */
|
|
50
|
+
SESSION_TTL_SECONDS: exports.TIME.DAY_SECONDS,
|
|
51
|
+
/** Default queue expiration in hours */
|
|
52
|
+
QUEUE_EXPIRE_HOURS: 24,
|
|
53
|
+
/** Default retry limit for queue operations */
|
|
54
|
+
QUEUE_RETRY_LIMIT: 3,
|
|
55
|
+
/** Default retry delay in seconds */
|
|
56
|
+
QUEUE_RETRY_DELAY_SECONDS: exports.TIME.THIRTY_SECONDS,
|
|
57
|
+
/** Default session timeout in minutes */
|
|
58
|
+
SESSION_TIMEOUT_MINUTES: 5,
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;;AAEH,gCAAgC;AACnB,QAAA,IAAI,GAAG;IAClB,+BAA+B;IAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACvB,8BAA8B;IAC9B,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAC3B,0BAA0B;IAC1B,YAAY,EAAE,IAAI;IAClB,yBAAyB;IACzB,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;IACzB,iCAAiC;IACjC,SAAS,EAAE,EAAE,GAAG,IAAI;IACpB,mCAAmC;IACnC,eAAe,EAAE,IAAI;IACrB,qBAAqB;IACrB,cAAc,EAAE,EAAE;IAClB,4DAA4D;IAC5D,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAClC,6CAA6C;IAC7C,mBAAmB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE;CACxB,CAAC;AAEX,qBAAqB;AACR,QAAA,UAAU,GAAG;IACxB,wCAAwC;IACxC,YAAY,EAAE,eAAe;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,UAAU;IACnB,kCAAkC;IAClC,YAAY,EAAE,eAAe;IAC7B,iCAAiC;IACjC,cAAc,EAAE,iBAAiB;IACjC,iCAAiC;IACjC,eAAe,EAAE,kBAAkB;IACnC,4BAA4B;IAC5B,SAAS,EAAE,YAAY;CACf,CAAC;AAEX,+BAA+B;AAClB,QAAA,QAAQ,GAAG;IACtB,0CAA0C;IAC1C,cAAc,EAAE,YAAI,CAAC,MAAM;IAC3B,qCAAqC;IACrC,mBAAmB,EAAE,YAAI,CAAC,WAAW;IACrC,wCAAwC;IACxC,kBAAkB,EAAE,EAAE;IACtB,+CAA+C;IAC/C,iBAAiB,EAAE,CAAC;IACpB,qCAAqC;IACrC,yBAAyB,EAAE,YAAI,CAAC,cAAc;IAC9C,yCAAyC;IACzC,uBAAuB,EAAE,CAAC;CAClB,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all lobu errors
|
|
3
|
+
*/
|
|
4
|
+
export declare abstract class BaseError extends Error {
|
|
5
|
+
cause?: Error | undefined;
|
|
6
|
+
abstract readonly name: string;
|
|
7
|
+
operation?: string;
|
|
8
|
+
constructor(message: string, cause?: Error | undefined);
|
|
9
|
+
/**
|
|
10
|
+
* Get the full error chain as a string
|
|
11
|
+
*/
|
|
12
|
+
getFullMessage(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Convert error to JSON for logging/serialization
|
|
15
|
+
*/
|
|
16
|
+
toJSON(): Record<string, any>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Error class for worker-related operations
|
|
20
|
+
*/
|
|
21
|
+
export declare class WorkerError extends BaseError {
|
|
22
|
+
readonly name = "WorkerError";
|
|
23
|
+
constructor(operation: string, message: string, cause?: Error);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Error class for workspace-related operations
|
|
27
|
+
*/
|
|
28
|
+
export declare class WorkspaceError extends BaseError {
|
|
29
|
+
readonly name = "WorkspaceError";
|
|
30
|
+
constructor(operation: string, message: string, cause?: Error);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Error class for platform-related operations (Slack, WhatsApp, etc.)
|
|
34
|
+
*/
|
|
35
|
+
export declare class PlatformError extends BaseError {
|
|
36
|
+
platform: string;
|
|
37
|
+
readonly name = "PlatformError";
|
|
38
|
+
constructor(platform: string, operation: string, message: string, cause?: Error);
|
|
39
|
+
toJSON(): Record<string, any>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Error class for session-related operations
|
|
43
|
+
*/
|
|
44
|
+
export declare class SessionError extends BaseError {
|
|
45
|
+
sessionKey: string;
|
|
46
|
+
code: string;
|
|
47
|
+
readonly name = "SessionError";
|
|
48
|
+
constructor(sessionKey: string, code: string, message: string, cause?: Error);
|
|
49
|
+
toJSON(): Record<string, any>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Worker error variant with workerId for core operations
|
|
53
|
+
*/
|
|
54
|
+
export declare class CoreWorkerError extends WorkerError {
|
|
55
|
+
workerId: string;
|
|
56
|
+
constructor(workerId: string, operation: string, message: string, cause?: Error);
|
|
57
|
+
toJSON(): Record<string, any>;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Error class for dispatcher-related operations
|
|
61
|
+
*/
|
|
62
|
+
export declare class DispatcherError extends BaseError {
|
|
63
|
+
readonly name = "DispatcherError";
|
|
64
|
+
constructor(operation: string, message: string, cause?: Error);
|
|
65
|
+
}
|
|
66
|
+
export declare enum ErrorCode {
|
|
67
|
+
DATABASE_CONNECTION_FAILED = "DATABASE_CONNECTION_FAILED",
|
|
68
|
+
KUBERNETES_API_ERROR = "KUBERNETES_API_ERROR",
|
|
69
|
+
DEPLOYMENT_SCALE_FAILED = "DEPLOYMENT_SCALE_FAILED",
|
|
70
|
+
DEPLOYMENT_CREATE_FAILED = "DEPLOYMENT_CREATE_FAILED",
|
|
71
|
+
DEPLOYMENT_DELETE_FAILED = "DEPLOYMENT_DELETE_FAILED",
|
|
72
|
+
QUEUE_JOB_PROCESSING_FAILED = "QUEUE_JOB_PROCESSING_FAILED",
|
|
73
|
+
USER_CREDENTIALS_CREATE_FAILED = "USER_CREDENTIALS_CREATE_FAILED",
|
|
74
|
+
INVALID_CONFIGURATION = "INVALID_CONFIGURATION",
|
|
75
|
+
THREAD_DEPLOYMENT_NOT_FOUND = "THREAD_DEPLOYMENT_NOT_FOUND",
|
|
76
|
+
USER_QUEUE_NOT_FOUND = "USER_QUEUE_NOT_FOUND"
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Error class for orchestrator-related operations
|
|
80
|
+
*/
|
|
81
|
+
export declare class OrchestratorError extends BaseError {
|
|
82
|
+
code: ErrorCode;
|
|
83
|
+
details?: any | undefined;
|
|
84
|
+
shouldRetry: boolean;
|
|
85
|
+
readonly name = "OrchestratorError";
|
|
86
|
+
constructor(code: ErrorCode, message: string, details?: any | undefined, shouldRetry?: boolean, cause?: Error);
|
|
87
|
+
static fromDatabaseError(error: any): OrchestratorError;
|
|
88
|
+
static fromKubernetesError(error: any): OrchestratorError;
|
|
89
|
+
toJSON(): Record<string, any>;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Error class for configuration-related operations
|
|
93
|
+
*/
|
|
94
|
+
export declare class ConfigError extends BaseError {
|
|
95
|
+
readonly name = "ConfigError";
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigError = exports.OrchestratorError = exports.ErrorCode = exports.DispatcherError = exports.CoreWorkerError = exports.SessionError = exports.PlatformError = exports.WorkspaceError = exports.WorkerError = exports.BaseError = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for all lobu errors
|
|
6
|
+
*/
|
|
7
|
+
class BaseError extends Error {
|
|
8
|
+
constructor(message, cause) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.cause = cause;
|
|
11
|
+
// Maintain proper prototype chain for instanceof checks
|
|
12
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the full error chain as a string
|
|
16
|
+
*/
|
|
17
|
+
getFullMessage() {
|
|
18
|
+
let message = `${this.name}: ${this.message}`;
|
|
19
|
+
if (this.cause) {
|
|
20
|
+
if (this.cause instanceof BaseError) {
|
|
21
|
+
message += `\nCaused by: ${this.cause.getFullMessage()}`;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
message += `\nCaused by: ${this.cause.message}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return message;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert error to JSON for logging/serialization
|
|
31
|
+
*/
|
|
32
|
+
toJSON() {
|
|
33
|
+
return {
|
|
34
|
+
name: this.name,
|
|
35
|
+
message: this.message,
|
|
36
|
+
...(this.operation && { operation: this.operation }),
|
|
37
|
+
cause: this.cause instanceof BaseError
|
|
38
|
+
? this.cause.toJSON()
|
|
39
|
+
: this.cause?.message,
|
|
40
|
+
stack: this.stack,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.BaseError = BaseError;
|
|
45
|
+
/**
|
|
46
|
+
* Error class for worker-related operations
|
|
47
|
+
*/
|
|
48
|
+
class WorkerError extends BaseError {
|
|
49
|
+
constructor(operation, message, cause) {
|
|
50
|
+
super(message, cause);
|
|
51
|
+
this.name = "WorkerError";
|
|
52
|
+
this.operation = operation;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.WorkerError = WorkerError;
|
|
56
|
+
/**
|
|
57
|
+
* Error class for workspace-related operations
|
|
58
|
+
*/
|
|
59
|
+
class WorkspaceError extends BaseError {
|
|
60
|
+
constructor(operation, message, cause) {
|
|
61
|
+
super(message, cause);
|
|
62
|
+
this.name = "WorkspaceError";
|
|
63
|
+
this.operation = operation;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.WorkspaceError = WorkspaceError;
|
|
67
|
+
/**
|
|
68
|
+
* Error class for platform-related operations (Slack, WhatsApp, etc.)
|
|
69
|
+
*/
|
|
70
|
+
class PlatformError extends BaseError {
|
|
71
|
+
constructor(platform, operation, message, cause) {
|
|
72
|
+
super(message, cause);
|
|
73
|
+
this.platform = platform;
|
|
74
|
+
this.name = "PlatformError";
|
|
75
|
+
this.operation = operation;
|
|
76
|
+
}
|
|
77
|
+
toJSON() {
|
|
78
|
+
return {
|
|
79
|
+
...super.toJSON(),
|
|
80
|
+
platform: this.platform,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.PlatformError = PlatformError;
|
|
85
|
+
/**
|
|
86
|
+
* Error class for session-related operations
|
|
87
|
+
*/
|
|
88
|
+
class SessionError extends BaseError {
|
|
89
|
+
constructor(sessionKey, code, message, cause) {
|
|
90
|
+
super(message, cause);
|
|
91
|
+
this.sessionKey = sessionKey;
|
|
92
|
+
this.code = code;
|
|
93
|
+
this.name = "SessionError";
|
|
94
|
+
}
|
|
95
|
+
toJSON() {
|
|
96
|
+
return {
|
|
97
|
+
...super.toJSON(),
|
|
98
|
+
sessionKey: this.sessionKey,
|
|
99
|
+
code: this.code,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.SessionError = SessionError;
|
|
104
|
+
/**
|
|
105
|
+
* Worker error variant with workerId for core operations
|
|
106
|
+
*/
|
|
107
|
+
class CoreWorkerError extends WorkerError {
|
|
108
|
+
constructor(workerId, operation, message, cause) {
|
|
109
|
+
super(operation, message, cause);
|
|
110
|
+
this.workerId = workerId;
|
|
111
|
+
}
|
|
112
|
+
toJSON() {
|
|
113
|
+
return {
|
|
114
|
+
...super.toJSON(),
|
|
115
|
+
workerId: this.workerId,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.CoreWorkerError = CoreWorkerError;
|
|
120
|
+
/**
|
|
121
|
+
* Error class for dispatcher-related operations
|
|
122
|
+
*/
|
|
123
|
+
class DispatcherError extends BaseError {
|
|
124
|
+
constructor(operation, message, cause) {
|
|
125
|
+
super(message, cause);
|
|
126
|
+
this.name = "DispatcherError";
|
|
127
|
+
this.operation = operation;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
exports.DispatcherError = DispatcherError;
|
|
131
|
+
// ErrorCode enum for orchestration operations
|
|
132
|
+
var ErrorCode;
|
|
133
|
+
(function (ErrorCode) {
|
|
134
|
+
ErrorCode["DATABASE_CONNECTION_FAILED"] = "DATABASE_CONNECTION_FAILED";
|
|
135
|
+
ErrorCode["KUBERNETES_API_ERROR"] = "KUBERNETES_API_ERROR";
|
|
136
|
+
ErrorCode["DEPLOYMENT_SCALE_FAILED"] = "DEPLOYMENT_SCALE_FAILED";
|
|
137
|
+
ErrorCode["DEPLOYMENT_CREATE_FAILED"] = "DEPLOYMENT_CREATE_FAILED";
|
|
138
|
+
ErrorCode["DEPLOYMENT_DELETE_FAILED"] = "DEPLOYMENT_DELETE_FAILED";
|
|
139
|
+
ErrorCode["QUEUE_JOB_PROCESSING_FAILED"] = "QUEUE_JOB_PROCESSING_FAILED";
|
|
140
|
+
ErrorCode["USER_CREDENTIALS_CREATE_FAILED"] = "USER_CREDENTIALS_CREATE_FAILED";
|
|
141
|
+
ErrorCode["INVALID_CONFIGURATION"] = "INVALID_CONFIGURATION";
|
|
142
|
+
ErrorCode["THREAD_DEPLOYMENT_NOT_FOUND"] = "THREAD_DEPLOYMENT_NOT_FOUND";
|
|
143
|
+
ErrorCode["USER_QUEUE_NOT_FOUND"] = "USER_QUEUE_NOT_FOUND";
|
|
144
|
+
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
145
|
+
/**
|
|
146
|
+
* Error class for orchestrator-related operations
|
|
147
|
+
*/
|
|
148
|
+
class OrchestratorError extends BaseError {
|
|
149
|
+
constructor(code, message, details, shouldRetry = false, cause) {
|
|
150
|
+
super(message, cause);
|
|
151
|
+
this.code = code;
|
|
152
|
+
this.details = details;
|
|
153
|
+
this.shouldRetry = shouldRetry;
|
|
154
|
+
this.name = "OrchestratorError";
|
|
155
|
+
}
|
|
156
|
+
static fromDatabaseError(error) {
|
|
157
|
+
return new OrchestratorError(ErrorCode.DATABASE_CONNECTION_FAILED, `Database error: ${error instanceof Error ? error.message : String(error)}`, { code: error.code, detail: error.detail }, true, error);
|
|
158
|
+
}
|
|
159
|
+
static fromKubernetesError(error) {
|
|
160
|
+
return new OrchestratorError(ErrorCode.KUBERNETES_API_ERROR, `Kubernetes operation failed: ${error.message}`, error, true, error);
|
|
161
|
+
}
|
|
162
|
+
toJSON() {
|
|
163
|
+
return {
|
|
164
|
+
...super.toJSON(),
|
|
165
|
+
code: this.code,
|
|
166
|
+
details: this.details,
|
|
167
|
+
shouldRetry: this.shouldRetry,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.OrchestratorError = OrchestratorError;
|
|
172
|
+
/**
|
|
173
|
+
* Error class for configuration-related operations
|
|
174
|
+
*/
|
|
175
|
+
class ConfigError extends BaseError {
|
|
176
|
+
constructor() {
|
|
177
|
+
super(...arguments);
|
|
178
|
+
this.name = "ConfigError";
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
exports.ConfigError = ConfigError;
|
|
182
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
export * from "./agent-policy";
|
|
3
|
+
export type { AgentAccessStore, AgentConfigStore, AgentConnectionStore, AgentMetadata, AgentSettings, AgentStore, ChannelBinding, ConnectionSettings, Grant, StoredConnection, } from "./agent-store";
|
|
4
|
+
export { findTemplateAgentId } from "./agent-store";
|
|
5
|
+
export type { CommandContext, CommandDefinition } from "./command-registry";
|
|
6
|
+
export { CommandRegistry } from "./command-registry";
|
|
7
|
+
export * from "./constants";
|
|
8
|
+
export * from "./errors";
|
|
9
|
+
export type { SystemSkillEntry, SystemSkillsConfigFile, } from "./integration-types";
|
|
10
|
+
export * from "./logger";
|
|
11
|
+
export type { ActionButton, ModuleSessionContext } from "./modules";
|
|
12
|
+
export * from "./modules";
|
|
13
|
+
export type { OtelConfig, Span, Tracer } from "./otel";
|
|
14
|
+
export { createChildSpan, createRootSpan, createSpan, flushTracing, getCurrentSpan, getTraceparent, getTracer, initTracing, runInSpanContext, SpanKind, SpanStatusCode, shutdownTracing, withChildSpan, withSpan, } from "./otel";
|
|
15
|
+
export type { PluginConfig, PluginManifest, PluginSlot, PluginsConfig, ProviderRegistration, } from "./plugin-types";
|
|
16
|
+
export type { ConfigProviderMeta, ProviderConfigEntry, } from "./provider-config-types";
|
|
17
|
+
export * from "./redis/base-store";
|
|
18
|
+
export { getSentry, initSentry } from "./sentry";
|
|
19
|
+
export { extractTraceId, generateTraceId } from "./trace";
|
|
20
|
+
export type { AgentMcpConfig, AgentOptions, AuthProfile, CliBackendConfig, ConversationMessage, HistoryMessage, InstalledProvider, InstructionContext, InstructionProvider, LogLevel, McpServerConfig, NetworkConfig, NixConfig, RegistryEntry, SessionContext, SkillConfig, SkillMcpServer, SkillsConfig, SuggestedPrompt, ThinkingLevel, ThreadResponsePayload, ToolsConfig, UserSuggestion, } from "./types";
|
|
21
|
+
export type { AgentConfigResponse, AgentInfo, CatalogProvider, Connection, McpConfig, ModelOption, ModelSelectionState, PermissionGrant, PrefillMcp, PrefillSkill, ProviderInfo, ProviderState, ProviderStatus, Schedule, SettingsSnapshot, Skill, SkillMcpServerInfo, } from "./api-types";
|
|
22
|
+
export * from "./utils/encryption";
|
|
23
|
+
export * from "./utils/env";
|
|
24
|
+
export * from "./utils/json";
|
|
25
|
+
export * from "./utils/lock";
|
|
26
|
+
export type { McpToolDef } from "./utils/mcp-tool-instructions";
|
|
27
|
+
export * from "./utils/retry";
|
|
28
|
+
export * from "./utils/sanitize";
|
|
29
|
+
export * from "./worker/auth";
|
|
30
|
+
export type { WorkerTransport, WorkerTransportConfig, } from "./worker/transport";
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,cAAc,gBAAgB,CAAC;AAE/B,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,KAAK,EACL,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,cAAc,aAAa,CAAC;AAE5B,cAAc,UAAU,CAAC;AAEzB,YAAY,EACV,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,cAAc,UAAU,CAAC;AAEzB,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACpE,cAAc,WAAW,CAAC;AAC1B,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,cAAc,EACd,UAAU,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,eAAe,EACf,aAAa,EACb,QAAQ,GACT,MAAM,QAAQ,CAAC;AAEhB,YAAY,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,aAAa,EACb,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,YAAY,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,SAAS,EACT,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,WAAW,EACX,cAAc,GACf,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,UAAU,EACV,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAGrB,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,YAAY,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
"use strict";
|
|
3
|
+
// Shared exports for @lobu/core consumers (gateway, worker, external tools)
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
16
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.generateTraceId = exports.extractTraceId = exports.initSentry = exports.getSentry = exports.withSpan = exports.withChildSpan = exports.shutdownTracing = exports.SpanStatusCode = exports.SpanKind = exports.runInSpanContext = exports.initTracing = exports.getTracer = exports.getTraceparent = exports.getCurrentSpan = exports.flushTracing = exports.createSpan = exports.createRootSpan = exports.createChildSpan = exports.CommandRegistry = exports.findTemplateAgentId = void 0;
|
|
20
|
+
__exportStar(require("./agent-policy"), exports);
|
|
21
|
+
var agent_store_1 = require("./agent-store");
|
|
22
|
+
Object.defineProperty(exports, "findTemplateAgentId", { enumerable: true, get: function () { return agent_store_1.findTemplateAgentId; } });
|
|
23
|
+
// Command registry
|
|
24
|
+
var command_registry_1 = require("./command-registry");
|
|
25
|
+
Object.defineProperty(exports, "CommandRegistry", { enumerable: true, get: function () { return command_registry_1.CommandRegistry; } });
|
|
26
|
+
__exportStar(require("./constants"), exports);
|
|
27
|
+
// Errors & logging
|
|
28
|
+
__exportStar(require("./errors"), exports);
|
|
29
|
+
__exportStar(require("./logger"), exports);
|
|
30
|
+
__exportStar(require("./modules"), exports);
|
|
31
|
+
// OpenTelemetry tracing (Tempo integration)
|
|
32
|
+
var otel_1 = require("./otel");
|
|
33
|
+
Object.defineProperty(exports, "createChildSpan", { enumerable: true, get: function () { return otel_1.createChildSpan; } });
|
|
34
|
+
Object.defineProperty(exports, "createRootSpan", { enumerable: true, get: function () { return otel_1.createRootSpan; } });
|
|
35
|
+
Object.defineProperty(exports, "createSpan", { enumerable: true, get: function () { return otel_1.createSpan; } });
|
|
36
|
+
Object.defineProperty(exports, "flushTracing", { enumerable: true, get: function () { return otel_1.flushTracing; } });
|
|
37
|
+
Object.defineProperty(exports, "getCurrentSpan", { enumerable: true, get: function () { return otel_1.getCurrentSpan; } });
|
|
38
|
+
Object.defineProperty(exports, "getTraceparent", { enumerable: true, get: function () { return otel_1.getTraceparent; } });
|
|
39
|
+
Object.defineProperty(exports, "getTracer", { enumerable: true, get: function () { return otel_1.getTracer; } });
|
|
40
|
+
Object.defineProperty(exports, "initTracing", { enumerable: true, get: function () { return otel_1.initTracing; } });
|
|
41
|
+
Object.defineProperty(exports, "runInSpanContext", { enumerable: true, get: function () { return otel_1.runInSpanContext; } });
|
|
42
|
+
Object.defineProperty(exports, "SpanKind", { enumerable: true, get: function () { return otel_1.SpanKind; } });
|
|
43
|
+
Object.defineProperty(exports, "SpanStatusCode", { enumerable: true, get: function () { return otel_1.SpanStatusCode; } });
|
|
44
|
+
Object.defineProperty(exports, "shutdownTracing", { enumerable: true, get: function () { return otel_1.shutdownTracing; } });
|
|
45
|
+
Object.defineProperty(exports, "withChildSpan", { enumerable: true, get: function () { return otel_1.withChildSpan; } });
|
|
46
|
+
Object.defineProperty(exports, "withSpan", { enumerable: true, get: function () { return otel_1.withSpan; } });
|
|
47
|
+
// Redis & worker helpers
|
|
48
|
+
__exportStar(require("./redis/base-store"), exports);
|
|
49
|
+
// Observability
|
|
50
|
+
var sentry_1 = require("./sentry");
|
|
51
|
+
Object.defineProperty(exports, "getSentry", { enumerable: true, get: function () { return sentry_1.getSentry; } });
|
|
52
|
+
Object.defineProperty(exports, "initSentry", { enumerable: true, get: function () { return sentry_1.initSentry; } });
|
|
53
|
+
var trace_1 = require("./trace");
|
|
54
|
+
Object.defineProperty(exports, "extractTraceId", { enumerable: true, get: function () { return trace_1.extractTraceId; } });
|
|
55
|
+
Object.defineProperty(exports, "generateTraceId", { enumerable: true, get: function () { return trace_1.generateTraceId; } });
|
|
56
|
+
// Utilities
|
|
57
|
+
__exportStar(require("./utils/encryption"), exports);
|
|
58
|
+
__exportStar(require("./utils/env"), exports);
|
|
59
|
+
__exportStar(require("./utils/json"), exports);
|
|
60
|
+
__exportStar(require("./utils/lock"), exports);
|
|
61
|
+
__exportStar(require("./utils/retry"), exports);
|
|
62
|
+
__exportStar(require("./utils/sanitize"), exports);
|
|
63
|
+
__exportStar(require("./worker/auth"), exports);
|
|
64
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA,4EAA4E;;;;;;;;;;;;;;;;;AAE5E,iDAA+B;AAc/B,6CAAoD;AAA3C,kHAAA,mBAAmB,OAAA;AAE5B,mBAAmB;AACnB,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,8CAA4B;AAC5B,mBAAmB;AACnB,2CAAyB;AAMzB,2CAAyB;AAGzB,4CAA0B;AAE1B,4CAA4C;AAC5C,+BAegB;AAdd,uGAAA,eAAe,OAAA;AACf,sGAAA,cAAc,OAAA;AACd,kGAAA,UAAU,OAAA;AACV,oGAAA,YAAY,OAAA;AACZ,sGAAA,cAAc,OAAA;AACd,sGAAA,cAAc,OAAA;AACd,iGAAA,SAAS,OAAA;AACT,mGAAA,WAAW,OAAA;AACX,wGAAA,gBAAgB,OAAA;AAChB,gGAAA,QAAQ,OAAA;AACR,sGAAA,cAAc,OAAA;AACd,uGAAA,eAAe,OAAA;AACf,qGAAA,aAAa,OAAA;AACb,gGAAA,QAAQ,OAAA;AAeV,yBAAyB;AACzB,qDAAmC;AACnC,gBAAgB;AAChB,mCAAiD;AAAxC,mGAAA,SAAS,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC9B,iCAA0D;AAAjD,uGAAA,cAAc,OAAA;AAAE,wGAAA,eAAe,OAAA;AAiDxC,YAAY;AACZ,qDAAmC;AACnC,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAE7B,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the integration system.
|
|
3
|
+
*
|
|
4
|
+
* OAuth credential management for third-party APIs (GitHub, Google, etc.)
|
|
5
|
+
* is handled by Owletto.
|
|
6
|
+
*/
|
|
7
|
+
import type { ProviderConfigEntry } from "./provider-config-types";
|
|
8
|
+
export interface SystemSkillEntry {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
instructions?: string;
|
|
13
|
+
hidden?: boolean;
|
|
14
|
+
mcpServers?: import("./types").SkillMcpServer[];
|
|
15
|
+
providers?: ProviderConfigEntry[];
|
|
16
|
+
nixPackages?: string[];
|
|
17
|
+
permissions?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface SystemSkillsConfigFile {
|
|
20
|
+
skills: SystemSkillEntry[];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=integration-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-types.d.ts","sourceRoot":"","sources":["../src/integration-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,SAAS,EAAE,cAAc,EAAE,CAAC;IAChD,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared types for the integration system.
|
|
4
|
+
*
|
|
5
|
+
* OAuth credential management for third-party APIs (GitHub, Google, etc.)
|
|
6
|
+
* is handled by Owletto.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=integration-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-types.js","sourceRoot":"","sources":["../src/integration-types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
package/dist/logger.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface Logger {
|
|
2
|
+
error: (message: any, ...args: any[]) => void;
|
|
3
|
+
warn: (message: any, ...args: any[]) => void;
|
|
4
|
+
info: (message: any, ...args: any[]) => void;
|
|
5
|
+
debug: (message: any, ...args: any[]) => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Creates a logger instance for a specific service
|
|
9
|
+
* Provides consistent logging format across all packages with level and timestamp
|
|
10
|
+
* @param serviceName The name of the service using the logger
|
|
11
|
+
* @returns A console logger by default, or Winston logger if USE_WINSTON_LOGGER=true
|
|
12
|
+
*/
|
|
13
|
+
export declare function createLogger(serviceName: string): Logger;
|
|
14
|
+
export declare const logger: Logger;
|
|
15
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAC/C;AAyID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAuFxD;AAGD,eAAO,MAAM,MAAM,QAAyB,CAAC"}
|