@herdctl/discord 0.2.2 → 1.0.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 (83) hide show
  1. package/dist/__tests__/auto-mode-handler.test.js +1 -28
  2. package/dist/__tests__/auto-mode-handler.test.js.map +1 -1
  3. package/dist/__tests__/discord-connector.test.js +1 -0
  4. package/dist/__tests__/discord-connector.test.js.map +1 -1
  5. package/dist/__tests__/error-handler.test.js +1 -1
  6. package/dist/__tests__/error-handler.test.js.map +1 -1
  7. package/dist/__tests__/manager.test.d.ts +8 -0
  8. package/dist/__tests__/manager.test.d.ts.map +1 -0
  9. package/dist/__tests__/manager.test.js +3541 -0
  10. package/dist/__tests__/manager.test.js.map +1 -0
  11. package/dist/auto-mode-handler.d.ts +8 -39
  12. package/dist/auto-mode-handler.d.ts.map +1 -1
  13. package/dist/auto-mode-handler.js +12 -78
  14. package/dist/auto-mode-handler.js.map +1 -1
  15. package/dist/commands/__tests__/command-manager.test.js +1 -0
  16. package/dist/commands/__tests__/command-manager.test.js.map +1 -1
  17. package/dist/commands/__tests__/help.test.js +1 -0
  18. package/dist/commands/__tests__/help.test.js.map +1 -1
  19. package/dist/commands/__tests__/reset.test.js +1 -0
  20. package/dist/commands/__tests__/reset.test.js.map +1 -1
  21. package/dist/commands/__tests__/status.test.js +1 -0
  22. package/dist/commands/__tests__/status.test.js.map +1 -1
  23. package/dist/commands/command-manager.d.ts.map +1 -1
  24. package/dist/commands/command-manager.js.map +1 -1
  25. package/dist/commands/status.d.ts.map +1 -1
  26. package/dist/commands/status.js +1 -54
  27. package/dist/commands/status.js.map +1 -1
  28. package/dist/commands/types.d.ts +3 -3
  29. package/dist/commands/types.d.ts.map +1 -1
  30. package/dist/discord-connector.d.ts +2 -2
  31. package/dist/discord-connector.d.ts.map +1 -1
  32. package/dist/discord-connector.js.map +1 -1
  33. package/dist/error-handler.js +1 -1
  34. package/dist/error-handler.js.map +1 -1
  35. package/dist/index.d.ts +13 -13
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +15 -15
  38. package/dist/index.js.map +1 -1
  39. package/dist/manager.d.ts +195 -0
  40. package/dist/manager.d.ts.map +1 -0
  41. package/dist/manager.js +851 -0
  42. package/dist/manager.js.map +1 -0
  43. package/dist/types.d.ts +2 -2
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/utils/__tests__/formatting.test.js +1 -247
  46. package/dist/utils/__tests__/formatting.test.js.map +1 -1
  47. package/dist/utils/formatting.d.ts +11 -99
  48. package/dist/utils/formatting.d.ts.map +1 -1
  49. package/dist/utils/formatting.js +15 -163
  50. package/dist/utils/formatting.js.map +1 -1
  51. package/dist/utils/index.d.ts +1 -1
  52. package/dist/utils/index.d.ts.map +1 -1
  53. package/dist/utils/index.js +2 -2
  54. package/dist/utils/index.js.map +1 -1
  55. package/package.json +3 -4
  56. package/dist/session-manager/__tests__/errors.test.d.ts +0 -2
  57. package/dist/session-manager/__tests__/errors.test.d.ts.map +0 -1
  58. package/dist/session-manager/__tests__/errors.test.js +0 -124
  59. package/dist/session-manager/__tests__/errors.test.js.map +0 -1
  60. package/dist/session-manager/__tests__/session-manager.test.d.ts +0 -2
  61. package/dist/session-manager/__tests__/session-manager.test.d.ts.map +0 -1
  62. package/dist/session-manager/__tests__/session-manager.test.js +0 -573
  63. package/dist/session-manager/__tests__/session-manager.test.js.map +0 -1
  64. package/dist/session-manager/__tests__/types.test.d.ts +0 -2
  65. package/dist/session-manager/__tests__/types.test.d.ts.map +0 -1
  66. package/dist/session-manager/__tests__/types.test.js +0 -169
  67. package/dist/session-manager/__tests__/types.test.js.map +0 -1
  68. package/dist/session-manager/errors.d.ts +0 -58
  69. package/dist/session-manager/errors.d.ts.map +0 -1
  70. package/dist/session-manager/errors.js +0 -70
  71. package/dist/session-manager/errors.js.map +0 -1
  72. package/dist/session-manager/index.d.ts +0 -11
  73. package/dist/session-manager/index.d.ts.map +0 -1
  74. package/dist/session-manager/index.js +0 -12
  75. package/dist/session-manager/index.js.map +0 -1
  76. package/dist/session-manager/session-manager.d.ts +0 -119
  77. package/dist/session-manager/session-manager.d.ts.map +0 -1
  78. package/dist/session-manager/session-manager.js +0 -383
  79. package/dist/session-manager/session-manager.js.map +0 -1
  80. package/dist/session-manager/types.d.ts +0 -186
  81. package/dist/session-manager/types.d.ts.map +0 -1
  82. package/dist/session-manager/types.js +0 -57
  83. package/dist/session-manager/types.js.map +0 -1
@@ -2,10 +2,13 @@
2
2
  * Message formatting utilities for Discord
3
3
  *
4
4
  * Provides utilities for:
5
- * - Splitting long messages to fit Discord's 2000 character limit
6
- * - Maintaining message coherence when splitting (avoiding mid-sentence breaks)
7
5
  * - Managing typing indicators during message processing
6
+ * - Sending messages with automatic splitting
7
+ * - Discord-specific markdown escaping
8
+ *
9
+ * Message splitting utilities are provided by @herdctl/chat.
8
10
  */
11
+ import { splitMessage, DEFAULT_MESSAGE_DELAY_MS, } from "@herdctl/chat";
9
12
  // =============================================================================
10
13
  // Constants
11
14
  // =============================================================================
@@ -13,124 +16,6 @@
13
16
  * Discord's maximum message length
14
17
  */
15
18
  export const DISCORD_MAX_MESSAGE_LENGTH = 2000;
16
- /**
17
- * Default delay between sending split messages (in milliseconds)
18
- */
19
- export const DEFAULT_MESSAGE_DELAY_MS = 500;
20
- /**
21
- * Minimum chunk size when splitting messages
22
- * Prevents creating very small message fragments
23
- */
24
- export const MIN_CHUNK_SIZE = 100;
25
- // =============================================================================
26
- // Message Splitting
27
- // =============================================================================
28
- /**
29
- * Default split points in order of preference
30
- *
31
- * We prefer to split at paragraph breaks, then sentences, then clauses, then words
32
- */
33
- const DEFAULT_SPLIT_POINTS = ["\n\n", "\n", ". ", "! ", "? ", ", ", " "];
34
- /**
35
- * Find the best split point within a text chunk
36
- *
37
- * @param text - Text to find split point in
38
- * @param maxLength - Maximum length for the chunk
39
- * @param splitPoints - Split points to search for, in order of preference
40
- * @returns Index to split at, or maxLength if no good split point found
41
- */
42
- export function findSplitPoint(text, maxLength, splitPoints = DEFAULT_SPLIT_POINTS) {
43
- // If text fits, no split needed
44
- if (text.length <= maxLength) {
45
- return text.length;
46
- }
47
- // Try each split point in order of preference
48
- for (const splitPoint of splitPoints) {
49
- // Search backwards from maxLength to find the last occurrence of this split point
50
- const searchText = text.slice(0, maxLength);
51
- const lastIndex = searchText.lastIndexOf(splitPoint);
52
- // If found and results in a reasonable chunk size
53
- if (lastIndex > MIN_CHUNK_SIZE) {
54
- // Include the split point in the first chunk (e.g., keep the period with the sentence)
55
- return lastIndex + splitPoint.length;
56
- }
57
- }
58
- // No good split point found - fall back to hard split at maxLength
59
- // But try to avoid splitting in the middle of a word
60
- const hardSplitIndex = text.lastIndexOf(" ", maxLength);
61
- if (hardSplitIndex > MIN_CHUNK_SIZE) {
62
- return hardSplitIndex + 1; // Include the space in the first chunk
63
- }
64
- // Last resort: hard split at maxLength
65
- return maxLength;
66
- }
67
- /**
68
- * Split a message into chunks that fit Discord's message length limit
69
- *
70
- * @param content - Message content to split
71
- * @param options - Split options
72
- * @returns Split result with chunks array
73
- *
74
- * @example
75
- * ```typescript
76
- * const result = splitMessage(longText);
77
- * for (const chunk of result.chunks) {
78
- * await channel.send(chunk);
79
- * }
80
- * ```
81
- */
82
- export function splitMessage(content, options = {}) {
83
- const { maxLength = DISCORD_MAX_MESSAGE_LENGTH, preserveBoundaries = true, splitPoints = DEFAULT_SPLIT_POINTS, } = options;
84
- const originalLength = content.length;
85
- // If content fits in one message, return as-is
86
- if (content.length <= maxLength) {
87
- return {
88
- chunks: [content],
89
- wasSplit: false,
90
- originalLength,
91
- };
92
- }
93
- const chunks = [];
94
- let remaining = content;
95
- while (remaining.length > 0) {
96
- if (remaining.length <= maxLength) {
97
- // Remaining text fits in one message
98
- chunks.push(remaining.trim());
99
- break;
100
- }
101
- // Find the best split point
102
- let splitIndex;
103
- if (preserveBoundaries) {
104
- splitIndex = findSplitPoint(remaining, maxLength, splitPoints);
105
- }
106
- else {
107
- // Simple split at maxLength
108
- splitIndex = maxLength;
109
- }
110
- // Extract the chunk and trim
111
- const chunk = remaining.slice(0, splitIndex).trim();
112
- if (chunk.length > 0) {
113
- chunks.push(chunk);
114
- }
115
- // Update remaining text
116
- remaining = remaining.slice(splitIndex).trim();
117
- }
118
- return {
119
- chunks,
120
- wasSplit: chunks.length > 1,
121
- originalLength,
122
- };
123
- }
124
- /**
125
- * Check if a message needs to be split
126
- *
127
- * @param content - Message content to check
128
- * @param maxLength - Maximum message length (default: 2000)
129
- * @returns true if the message exceeds the max length
130
- */
131
- export function needsSplit(content, maxLength = DISCORD_MAX_MESSAGE_LENGTH) {
132
- return content.length > maxLength;
133
- }
134
19
  /**
135
20
  * Start a typing indicator that refreshes automatically
136
21
  *
@@ -201,16 +86,21 @@ export function startTypingIndicator(channel, refreshInterval = 5000) {
201
86
  * ```
202
87
  */
203
88
  export async function sendSplitMessage(channel, content, options = {}) {
204
- const { delayMs = DEFAULT_MESSAGE_DELAY_MS, ...splitOptions } = options;
205
- const { chunks } = splitMessage(content, splitOptions);
89
+ const { delayMs = DEFAULT_MESSAGE_DELAY_MS, maxLength = DISCORD_MAX_MESSAGE_LENGTH, preserveBoundaries, splitPoints, } = options;
90
+ // Use Discord's max length as default
91
+ const splitResult = splitMessage(content, {
92
+ maxLength,
93
+ preserveBoundaries,
94
+ splitPoints,
95
+ });
206
96
  const messageIds = [];
207
- for (let i = 0; i < chunks.length; i++) {
208
- const chunk = chunks[i];
97
+ for (let i = 0; i < splitResult.chunks.length; i++) {
98
+ const chunk = splitResult.chunks[i];
209
99
  // Send the message
210
100
  const message = await channel.send(chunk);
211
101
  messageIds.push(message.id);
212
102
  // Add delay between messages (except after the last one)
213
- if (i < chunks.length - 1 && delayMs > 0) {
103
+ if (i < splitResult.chunks.length - 1 && delayMs > 0) {
214
104
  await sleep(delayMs);
215
105
  }
216
106
  }
@@ -255,44 +145,6 @@ export async function sendWithTyping(channel, contentProvider, options = {}) {
255
145
  function sleep(ms) {
256
146
  return new Promise((resolve) => setTimeout(resolve, ms));
257
147
  }
258
- /**
259
- * Truncate a message to fit within the max length, adding an ellipsis
260
- *
261
- * @param content - Message content to truncate
262
- * @param maxLength - Maximum length (default: 2000)
263
- * @param ellipsis - Ellipsis to append (default: '...')
264
- * @returns Truncated message
265
- *
266
- * @example
267
- * ```typescript
268
- * const short = truncateMessage(longText, 100);
269
- * // Returns: "This is a very long text that has been trun..."
270
- * ```
271
- */
272
- export function truncateMessage(content, maxLength = DISCORD_MAX_MESSAGE_LENGTH, ellipsis = "...") {
273
- if (content.length <= maxLength) {
274
- return content;
275
- }
276
- const truncatedLength = maxLength - ellipsis.length;
277
- return content.slice(0, truncatedLength) + ellipsis;
278
- }
279
- /**
280
- * Format code as a Discord code block
281
- *
282
- * @param code - Code to format
283
- * @param language - Optional language for syntax highlighting
284
- * @returns Formatted code block
285
- *
286
- * @example
287
- * ```typescript
288
- * const formatted = formatCodeBlock('const x = 1;', 'typescript');
289
- * // Returns: "```typescript\nconst x = 1;\n```"
290
- * ```
291
- */
292
- export function formatCodeBlock(code, language) {
293
- const langTag = language ?? "";
294
- return `\`\`\`${langTag}\n${code}\n\`\`\``;
295
- }
296
148
  /**
297
149
  * Escape Discord markdown characters in text
298
150
  *
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * Utility modules for the Discord connector
3
3
  */
4
- export { DISCORD_MAX_MESSAGE_LENGTH, DEFAULT_MESSAGE_DELAY_MS, MIN_CHUNK_SIZE, findSplitPoint, splitMessage, needsSplit, startTypingIndicator, sendSplitMessage, sendWithTyping, truncateMessage, formatCodeBlock, escapeMarkdown, type SendableChannel, type MessageSplitOptions, type SendSplitOptions, type SplitResult, type TypingController, } from "./formatting.js";
4
+ export { DISCORD_MAX_MESSAGE_LENGTH, startTypingIndicator, sendSplitMessage, sendWithTyping, escapeMarkdown, type SendableChannel, type SendSplitOptions, type TypingController, } from "./formatting.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,0BAA0B,EAC1B,wBAAwB,EACxB,cAAc,EAEd,cAAc,EACd,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,EAEd,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAEL,0BAA0B,EAE1B,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,cAAc,EAEd,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export {
5
5
  // Constants
6
- DISCORD_MAX_MESSAGE_LENGTH, DEFAULT_MESSAGE_DELAY_MS, MIN_CHUNK_SIZE,
6
+ DISCORD_MAX_MESSAGE_LENGTH,
7
7
  // Functions
8
- findSplitPoint, splitMessage, needsSplit, startTypingIndicator, sendSplitMessage, sendWithTyping, truncateMessage, formatCodeBlock, escapeMarkdown, } from "./formatting.js";
8
+ startTypingIndicator, sendSplitMessage, sendWithTyping, escapeMarkdown, } from "./formatting.js";
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AACL,YAAY;AACZ,0BAA0B,EAC1B,wBAAwB,EACxB,cAAc;AACd,YAAY;AACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,eAAe,EACf,cAAc,GAOf,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AACL,YAAY;AACZ,0BAA0B;AAC1B,YAAY;AACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,cAAc,GAKf,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herdctl/discord",
3
- "version": "0.2.2",
3
+ "version": "1.0.0",
4
4
  "description": "Discord connector for herdctl fleet management",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -12,9 +12,8 @@
12
12
  "dependencies": {
13
13
  "@discordjs/rest": "^2.6.0",
14
14
  "discord.js": "^14.16.0",
15
- "yaml": "^2.3.0",
16
- "zod": "^3.22.0",
17
- "@herdctl/core": "4.1.1"
15
+ "@herdctl/chat": "0.2.0",
16
+ "@herdctl/core": "5.0.0"
18
17
  },
19
18
  "devDependencies": {
20
19
  "@vitest/coverage-v8": "^4.0.17",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=errors.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.d.ts","sourceRoot":"","sources":["../../../src/session-manager/__tests__/errors.test.ts"],"names":[],"mappings":""}
@@ -1,124 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { SessionErrorCode, SessionManagerError, SessionStateReadError, SessionStateWriteError, SessionDirectoryCreateError, isSessionManagerError, } from "../errors.js";
3
- // =============================================================================
4
- // SessionManagerError Tests
5
- // =============================================================================
6
- describe("SessionManagerError", () => {
7
- it("creates error with correct properties", () => {
8
- const error = new SessionManagerError("Test error message", SessionErrorCode.STATE_READ_FAILED, "test-agent");
9
- expect(error.message).toBe("Test error message");
10
- expect(error.code).toBe(SessionErrorCode.STATE_READ_FAILED);
11
- expect(error.agentName).toBe("test-agent");
12
- expect(error.name).toBe("SessionManagerError");
13
- });
14
- it("accepts cause option", () => {
15
- const cause = new Error("Original error");
16
- const error = new SessionManagerError("Wrapper error", SessionErrorCode.STATE_WRITE_FAILED, "test-agent", { cause });
17
- expect(error.cause).toBe(cause);
18
- });
19
- });
20
- // =============================================================================
21
- // SessionStateReadError Tests
22
- // =============================================================================
23
- describe("SessionStateReadError", () => {
24
- it("creates error with correct message and properties", () => {
25
- const error = new SessionStateReadError("my-agent", "/path/to/state.yaml");
26
- expect(error.message).toBe("Failed to read session state for agent 'my-agent' from '/path/to/state.yaml'");
27
- expect(error.code).toBe(SessionErrorCode.STATE_READ_FAILED);
28
- expect(error.agentName).toBe("my-agent");
29
- expect(error.path).toBe("/path/to/state.yaml");
30
- expect(error.name).toBe("SessionStateReadError");
31
- });
32
- it("accepts cause option", () => {
33
- const cause = new Error("ENOENT");
34
- const error = new SessionStateReadError("my-agent", "/path/to/state.yaml", { cause });
35
- expect(error.cause).toBe(cause);
36
- });
37
- });
38
- // =============================================================================
39
- // SessionStateWriteError Tests
40
- // =============================================================================
41
- describe("SessionStateWriteError", () => {
42
- it("creates error with correct message and properties", () => {
43
- const error = new SessionStateWriteError("my-agent", "/path/to/state.yaml");
44
- expect(error.message).toBe("Failed to write session state for agent 'my-agent' to '/path/to/state.yaml'");
45
- expect(error.code).toBe(SessionErrorCode.STATE_WRITE_FAILED);
46
- expect(error.agentName).toBe("my-agent");
47
- expect(error.path).toBe("/path/to/state.yaml");
48
- expect(error.name).toBe("SessionStateWriteError");
49
- });
50
- it("accepts cause option", () => {
51
- const cause = new Error("EACCES");
52
- const error = new SessionStateWriteError("my-agent", "/path/to/state.yaml", { cause });
53
- expect(error.cause).toBe(cause);
54
- });
55
- });
56
- // =============================================================================
57
- // SessionDirectoryCreateError Tests
58
- // =============================================================================
59
- describe("SessionDirectoryCreateError", () => {
60
- it("creates error with correct message and properties", () => {
61
- const error = new SessionDirectoryCreateError("my-agent", "/path/to/sessions");
62
- expect(error.message).toBe("Failed to create session directory for agent 'my-agent' at '/path/to/sessions'");
63
- expect(error.code).toBe(SessionErrorCode.DIRECTORY_CREATE_FAILED);
64
- expect(error.agentName).toBe("my-agent");
65
- expect(error.path).toBe("/path/to/sessions");
66
- expect(error.name).toBe("SessionDirectoryCreateError");
67
- });
68
- it("accepts cause option", () => {
69
- const cause = new Error("EPERM");
70
- const error = new SessionDirectoryCreateError("my-agent", "/path/to/sessions", { cause });
71
- expect(error.cause).toBe(cause);
72
- });
73
- });
74
- // =============================================================================
75
- // isSessionManagerError Tests
76
- // =============================================================================
77
- describe("isSessionManagerError", () => {
78
- it("returns true for SessionManagerError", () => {
79
- const error = new SessionManagerError("Test", SessionErrorCode.STATE_READ_FAILED, "agent");
80
- expect(isSessionManagerError(error)).toBe(true);
81
- });
82
- it("returns true for SessionStateReadError", () => {
83
- const error = new SessionStateReadError("agent", "/path");
84
- expect(isSessionManagerError(error)).toBe(true);
85
- });
86
- it("returns true for SessionStateWriteError", () => {
87
- const error = new SessionStateWriteError("agent", "/path");
88
- expect(isSessionManagerError(error)).toBe(true);
89
- });
90
- it("returns true for SessionDirectoryCreateError", () => {
91
- const error = new SessionDirectoryCreateError("agent", "/path");
92
- expect(isSessionManagerError(error)).toBe(true);
93
- });
94
- it("returns false for regular Error", () => {
95
- const error = new Error("Not a session error");
96
- expect(isSessionManagerError(error)).toBe(false);
97
- });
98
- it("returns false for null", () => {
99
- expect(isSessionManagerError(null)).toBe(false);
100
- });
101
- it("returns false for undefined", () => {
102
- expect(isSessionManagerError(undefined)).toBe(false);
103
- });
104
- it("returns false for string", () => {
105
- expect(isSessionManagerError("error")).toBe(false);
106
- });
107
- it("returns false for object", () => {
108
- expect(isSessionManagerError({ message: "error" })).toBe(false);
109
- });
110
- });
111
- // =============================================================================
112
- // Error Code Tests
113
- // =============================================================================
114
- describe("SessionErrorCode", () => {
115
- it("has all expected error codes", () => {
116
- expect(SessionErrorCode.STATE_READ_FAILED).toBe("SESSION_STATE_READ_FAILED");
117
- expect(SessionErrorCode.STATE_WRITE_FAILED).toBe("SESSION_STATE_WRITE_FAILED");
118
- expect(SessionErrorCode.DIRECTORY_CREATE_FAILED).toBe("SESSION_DIRECTORY_CREATE_FAILED");
119
- expect(SessionErrorCode.SESSION_NOT_FOUND).toBe("SESSION_NOT_FOUND");
120
- expect(SessionErrorCode.SESSION_EXPIRED).toBe("SESSION_EXPIRED");
121
- expect(SessionErrorCode.INVALID_STATE).toBe("SESSION_INVALID_STATE");
122
- });
123
- });
124
- //# sourceMappingURL=errors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../../src/session-manager/__tests__/errors.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACnC,oBAAoB,EACpB,gBAAgB,CAAC,iBAAiB,EAClC,YAAY,CACb,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACnC,eAAe,EACf,gBAAgB,CAAC,kBAAkB,EACnC,YAAY,EACZ,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,qBAAqB,CACrC,UAAU,EACV,qBAAqB,CACtB,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CACxB,8EAA8E,CAC/E,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,qBAAqB,CACrC,UAAU,EACV,qBAAqB,EACrB,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,sBAAsB,CACtC,UAAU,EACV,qBAAqB,CACtB,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CACxB,6EAA6E,CAC9E,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,sBAAsB,CACtC,UAAU,EACV,qBAAqB,EACrB,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,2BAA2B,CAC3C,UAAU,EACV,mBAAmB,CACpB,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CACxB,gFAAgF,CACjF,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;QAClE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,2BAA2B,CAC3C,UAAU,EACV,mBAAmB,EACnB,EAAE,KAAK,EAAE,CACV,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,KAAK,GAAG,IAAI,mBAAmB,CACnC,MAAM,EACN,gBAAgB,CAAC,iBAAiB,EAClC,OAAO,CACR,CAAC;QAEF,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1D,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhE,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAE/C,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC7E,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC/E,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CACnD,iCAAiC,CAClC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACrE,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=session-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.test.d.ts","sourceRoot":"","sources":["../../../src/session-manager/__tests__/session-manager.test.ts"],"names":[],"mappings":""}