conductor-bridge 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 (134) hide show
  1. package/README.md +69 -0
  2. package/dist/bridge/index.d.ts +8 -0
  3. package/dist/bridge/index.d.ts.map +1 -0
  4. package/dist/bridge/index.js +8 -0
  5. package/dist/bridge/index.js.map +1 -0
  6. package/dist/bridge/json-interchange.d.ts +94 -0
  7. package/dist/bridge/json-interchange.d.ts.map +1 -0
  8. package/dist/bridge/json-interchange.js +301 -0
  9. package/dist/bridge/json-interchange.js.map +1 -0
  10. package/dist/cli/commands/amend.d.ts +12 -0
  11. package/dist/cli/commands/amend.d.ts.map +1 -0
  12. package/dist/cli/commands/amend.js +205 -0
  13. package/dist/cli/commands/amend.js.map +1 -0
  14. package/dist/cli/commands/daemon.d.ts +12 -0
  15. package/dist/cli/commands/daemon.d.ts.map +1 -0
  16. package/dist/cli/commands/daemon.js +60 -0
  17. package/dist/cli/commands/daemon.js.map +1 -0
  18. package/dist/cli/commands/dispatch.d.ts +12 -0
  19. package/dist/cli/commands/dispatch.d.ts.map +1 -0
  20. package/dist/cli/commands/dispatch.js +207 -0
  21. package/dist/cli/commands/dispatch.js.map +1 -0
  22. package/dist/cli/commands/handoff.d.ts +31 -0
  23. package/dist/cli/commands/handoff.d.ts.map +1 -0
  24. package/dist/cli/commands/handoff.js +273 -0
  25. package/dist/cli/commands/handoff.js.map +1 -0
  26. package/dist/cli/commands/init.d.ts +12 -0
  27. package/dist/cli/commands/init.d.ts.map +1 -0
  28. package/dist/cli/commands/init.js +301 -0
  29. package/dist/cli/commands/init.js.map +1 -0
  30. package/dist/cli/commands/status.d.ts +12 -0
  31. package/dist/cli/commands/status.d.ts.map +1 -0
  32. package/dist/cli/commands/status.js +206 -0
  33. package/dist/cli/commands/status.js.map +1 -0
  34. package/dist/cli/index.d.ts +17 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +148 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/handoff/encryption.d.ts +85 -0
  39. package/dist/handoff/encryption.d.ts.map +1 -0
  40. package/dist/handoff/encryption.js +308 -0
  41. package/dist/handoff/encryption.js.map +1 -0
  42. package/dist/handoff/index.d.ts +8 -0
  43. package/dist/handoff/index.d.ts.map +1 -0
  44. package/dist/handoff/index.js +10 -0
  45. package/dist/handoff/index.js.map +1 -0
  46. package/dist/handoff/mycelium-arc.d.ts +116 -0
  47. package/dist/handoff/mycelium-arc.d.ts.map +1 -0
  48. package/dist/handoff/mycelium-arc.js +410 -0
  49. package/dist/handoff/mycelium-arc.js.map +1 -0
  50. package/dist/index.d.ts +38 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +71 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/parsers/index.d.ts +10 -0
  55. package/dist/parsers/index.d.ts.map +1 -0
  56. package/dist/parsers/index.js +12 -0
  57. package/dist/parsers/index.js.map +1 -0
  58. package/dist/parsers/plan-parser.d.ts +29 -0
  59. package/dist/parsers/plan-parser.d.ts.map +1 -0
  60. package/dist/parsers/plan-parser.js +503 -0
  61. package/dist/parsers/plan-parser.js.map +1 -0
  62. package/dist/parsers/spec-parser.d.ts +10 -0
  63. package/dist/parsers/spec-parser.d.ts.map +1 -0
  64. package/dist/parsers/spec-parser.js +382 -0
  65. package/dist/parsers/spec-parser.js.map +1 -0
  66. package/dist/parsers/state-parser.d.ts +21 -0
  67. package/dist/parsers/state-parser.d.ts.map +1 -0
  68. package/dist/parsers/state-parser.js +378 -0
  69. package/dist/parsers/state-parser.js.map +1 -0
  70. package/dist/parsers/types.d.ts +190 -0
  71. package/dist/parsers/types.d.ts.map +1 -0
  72. package/dist/parsers/types.js +7 -0
  73. package/dist/parsers/types.js.map +1 -0
  74. package/dist/schemas/cognitive-state.d.ts +1523 -0
  75. package/dist/schemas/cognitive-state.d.ts.map +1 -0
  76. package/dist/schemas/cognitive-state.js +328 -0
  77. package/dist/schemas/cognitive-state.js.map +1 -0
  78. package/dist/schemas/enums.d.ts +124 -0
  79. package/dist/schemas/enums.d.ts.map +1 -0
  80. package/dist/schemas/enums.js +108 -0
  81. package/dist/schemas/enums.js.map +1 -0
  82. package/dist/schemas/index.d.ts +9 -0
  83. package/dist/schemas/index.d.ts.map +1 -0
  84. package/dist/schemas/index.js +9 -0
  85. package/dist/schemas/index.js.map +1 -0
  86. package/dist/sync/adhd-continuity.d.ts +91 -0
  87. package/dist/sync/adhd-continuity.d.ts.map +1 -0
  88. package/dist/sync/adhd-continuity.js +302 -0
  89. package/dist/sync/adhd-continuity.js.map +1 -0
  90. package/dist/sync/convergence-tracker.d.ts +111 -0
  91. package/dist/sync/convergence-tracker.d.ts.map +1 -0
  92. package/dist/sync/convergence-tracker.js +299 -0
  93. package/dist/sync/convergence-tracker.js.map +1 -0
  94. package/dist/sync/index.d.ts +11 -0
  95. package/dist/sync/index.d.ts.map +1 -0
  96. package/dist/sync/index.js +15 -0
  97. package/dist/sync/index.js.map +1 -0
  98. package/dist/sync/state-sync.d.ts +105 -0
  99. package/dist/sync/state-sync.d.ts.map +1 -0
  100. package/dist/sync/state-sync.js +403 -0
  101. package/dist/sync/state-sync.js.map +1 -0
  102. package/dist/sync/watcher.d.ts +90 -0
  103. package/dist/sync/watcher.d.ts.map +1 -0
  104. package/dist/sync/watcher.js +281 -0
  105. package/dist/sync/watcher.js.map +1 -0
  106. package/dist/utils/atomic-write.d.ts +31 -0
  107. package/dist/utils/atomic-write.d.ts.map +1 -0
  108. package/dist/utils/atomic-write.js +69 -0
  109. package/dist/utils/atomic-write.js.map +1 -0
  110. package/dist/utils/error-handling.d.ts +70 -0
  111. package/dist/utils/error-handling.d.ts.map +1 -0
  112. package/dist/utils/error-handling.js +109 -0
  113. package/dist/utils/error-handling.js.map +1 -0
  114. package/dist/utils/file-lock.d.ts +46 -0
  115. package/dist/utils/file-lock.d.ts.map +1 -0
  116. package/dist/utils/file-lock.js +117 -0
  117. package/dist/utils/file-lock.js.map +1 -0
  118. package/dist/utils/index.d.ts +10 -0
  119. package/dist/utils/index.d.ts.map +1 -0
  120. package/dist/utils/index.js +12 -0
  121. package/dist/utils/index.js.map +1 -0
  122. package/dist/utils/rlm-navigator.d.ts +160 -0
  123. package/dist/utils/rlm-navigator.d.ts.map +1 -0
  124. package/dist/utils/rlm-navigator.js +368 -0
  125. package/dist/utils/rlm-navigator.js.map +1 -0
  126. package/dist/utils/safe-path.d.ts +44 -0
  127. package/dist/utils/safe-path.d.ts.map +1 -0
  128. package/dist/utils/safe-path.js +96 -0
  129. package/dist/utils/safe-path.js.map +1 -0
  130. package/dist/utils/timed-io.d.ts +51 -0
  131. package/dist/utils/timed-io.d.ts.map +1 -0
  132. package/dist/utils/timed-io.js +128 -0
  133. package/dist/utils/timed-io.js.map +1 -0
  134. package/package.json +88 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rlm-navigator.js","sourceRoot":"","sources":["../../src/utils/rlm-navigator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Safe Path Utility
3
+ *
4
+ * Provides path validation to prevent path traversal attacks.
5
+ * Ensures user-provided paths cannot escape allowed directories.
6
+ */
7
+ export interface SafePathResult {
8
+ /** Whether the path is valid and within bounds */
9
+ valid: boolean;
10
+ /** The resolved absolute path (if valid) */
11
+ resolvedPath: string;
12
+ /** Error message (if invalid) */
13
+ error?: string;
14
+ }
15
+ /**
16
+ * Validate that a user-provided path is within the allowed base directory.
17
+ *
18
+ * This prevents path traversal attacks where an attacker might try to
19
+ * access files outside the intended directory using '..' sequences.
20
+ *
21
+ * @param userPath - User-provided path (can be relative or absolute)
22
+ * @param allowedBase - The base directory that paths must stay within
23
+ * @returns Validation result with resolved path or error
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const result = validatePath('../../../etc/passwd', '/app/data');
28
+ * // result.valid === false
29
+ * // result.error === 'Path escapes allowed directory'
30
+ *
31
+ * const result2 = validatePath('subdir/file.txt', '/app/data');
32
+ * // result2.valid === true
33
+ * // result2.resolvedPath === '/app/data/subdir/file.txt'
34
+ * ```
35
+ */
36
+ export declare function validatePath(userPath: string, allowedBase: string): SafePathResult;
37
+ /**
38
+ * Sanitize a filename to remove dangerous characters.
39
+ *
40
+ * @param filename - Raw filename
41
+ * @returns Sanitized filename safe for filesystem use
42
+ */
43
+ export declare function sanitizeFilename(filename: string): string;
44
+ //# sourceMappingURL=safe-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-path.d.ts","sourceRoot":"","sources":["../../src/utils/safe-path.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,CAkDlF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqBzD"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Safe Path Utility
3
+ *
4
+ * Provides path validation to prevent path traversal attacks.
5
+ * Ensures user-provided paths cannot escape allowed directories.
6
+ */
7
+ import { resolve, normalize, relative, isAbsolute } from 'path';
8
+ /**
9
+ * Validate that a user-provided path is within the allowed base directory.
10
+ *
11
+ * This prevents path traversal attacks where an attacker might try to
12
+ * access files outside the intended directory using '..' sequences.
13
+ *
14
+ * @param userPath - User-provided path (can be relative or absolute)
15
+ * @param allowedBase - The base directory that paths must stay within
16
+ * @returns Validation result with resolved path or error
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const result = validatePath('../../../etc/passwd', '/app/data');
21
+ * // result.valid === false
22
+ * // result.error === 'Path escapes allowed directory'
23
+ *
24
+ * const result2 = validatePath('subdir/file.txt', '/app/data');
25
+ * // result2.valid === true
26
+ * // result2.resolvedPath === '/app/data/subdir/file.txt'
27
+ * ```
28
+ */
29
+ export function validatePath(userPath, allowedBase) {
30
+ // Reject empty paths
31
+ if (!userPath || userPath.trim() === '') {
32
+ return {
33
+ valid: false,
34
+ resolvedPath: '',
35
+ error: 'Path cannot be empty',
36
+ };
37
+ }
38
+ // Normalize the base path
39
+ const normalizedBase = resolve(allowedBase);
40
+ // Resolve the user path against the base
41
+ let resolvedPath;
42
+ if (isAbsolute(userPath)) {
43
+ resolvedPath = normalize(userPath);
44
+ }
45
+ else {
46
+ resolvedPath = resolve(normalizedBase, userPath);
47
+ }
48
+ // Check if the resolved path is within the allowed base
49
+ const relativePath = relative(normalizedBase, resolvedPath);
50
+ // If relative path starts with '..' or is absolute, it escapes the base
51
+ if (relativePath.startsWith('..') ||
52
+ isAbsolute(relativePath) ||
53
+ relativePath.startsWith('..' + require('path').sep)) {
54
+ return {
55
+ valid: false,
56
+ resolvedPath: '',
57
+ error: 'Path escapes allowed directory',
58
+ };
59
+ }
60
+ // Check for null bytes (common attack vector)
61
+ if (userPath.includes('\0') || resolvedPath.includes('\0')) {
62
+ return {
63
+ valid: false,
64
+ resolvedPath: '',
65
+ error: 'Path contains invalid characters',
66
+ };
67
+ }
68
+ return {
69
+ valid: true,
70
+ resolvedPath,
71
+ };
72
+ }
73
+ /**
74
+ * Sanitize a filename to remove dangerous characters.
75
+ *
76
+ * @param filename - Raw filename
77
+ * @returns Sanitized filename safe for filesystem use
78
+ */
79
+ export function sanitizeFilename(filename) {
80
+ // Remove null bytes
81
+ let sanitized = filename.replace(/\0/g, '');
82
+ // Remove directory separators
83
+ sanitized = sanitized.replace(/[/\\]/g, '_');
84
+ // Remove other dangerous characters on Windows
85
+ sanitized = sanitized.replace(/[<>:"|?*]/g, '_');
86
+ // Prevent hidden files on Unix (starting with .)
87
+ if (sanitized.startsWith('.')) {
88
+ sanitized = '_' + sanitized.slice(1);
89
+ }
90
+ // Limit length
91
+ if (sanitized.length > 255) {
92
+ sanitized = sanitized.slice(0, 255);
93
+ }
94
+ return sanitized;
95
+ }
96
+ //# sourceMappingURL=safe-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-path.js","sourceRoot":"","sources":["../../src/utils/safe-path.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAWhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,WAAmB;IAChE,qBAAqB;IACrB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,sBAAsB;SAC9B,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE5C,yCAAyC;IACzC,IAAI,YAAoB,CAAC;IACzB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,wDAAwD;IACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAE5D,wEAAwE;IACxE,IACE,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC;QAC7B,UAAU,CAAC,YAAY,CAAC;QACxB,YAAY,CAAC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EACnD,CAAC;QACD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,gCAAgC;SACxC,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,EAAE;YAChB,KAAK,EAAE,kCAAkC;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,YAAY;KACb,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,oBAAoB;IACpB,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAE5C,8BAA8B;IAC9B,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAE7C,+CAA+C;IAC/C,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAEjD,iDAAiD;IACjD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;IACf,IAAI,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QAC3B,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Timed I/O Utility
3
+ *
4
+ * Provides file I/O operations with configurable timeouts.
5
+ * Prevents hanging on unresponsive filesystems (network drives, etc.)
6
+ */
7
+ export declare class FileIOTimeoutError extends Error {
8
+ readonly operation: 'read' | 'write';
9
+ readonly filePath: string;
10
+ readonly timeoutMs: number;
11
+ constructor(message: string, operation: 'read' | 'write', filePath: string, timeoutMs: number);
12
+ }
13
+ /**
14
+ * Read file with timeout.
15
+ *
16
+ * @param path - File path to read
17
+ * @param encoding - File encoding
18
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
19
+ * @returns File contents
20
+ * @throws FileIOTimeoutError if operation times out
21
+ */
22
+ export declare function readFileWithTimeout(path: string, encoding?: BufferEncoding, timeoutMs?: number): Promise<string>;
23
+ /**
24
+ * Read file as buffer with timeout.
25
+ *
26
+ * @param path - File path to read
27
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
28
+ * @returns File contents as buffer
29
+ * @throws FileIOTimeoutError if operation times out
30
+ */
31
+ export declare function readFileBufferWithTimeout(path: string, timeoutMs?: number): Promise<Buffer>;
32
+ /**
33
+ * Write file with timeout.
34
+ *
35
+ * @param path - File path to write
36
+ * @param data - Data to write
37
+ * @param encoding - File encoding
38
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
39
+ * @throws FileIOTimeoutError if operation times out
40
+ */
41
+ export declare function writeFileWithTimeout(path: string, data: string | Buffer, encoding?: BufferEncoding, timeoutMs?: number): Promise<void>;
42
+ /**
43
+ * Execute an I/O operation with timeout.
44
+ *
45
+ * @param operation - Async operation to execute
46
+ * @param timeoutMs - Maximum time to wait
47
+ * @param operationName - Name for error messages
48
+ * @returns Result of the operation
49
+ */
50
+ export declare function withIOTimeout<T>(operation: () => Promise<T>, timeoutMs: number, operationName?: string): Promise<T>;
51
+ //# sourceMappingURL=timed-io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timed-io.d.ts","sourceRoot":"","sources":["../../src/utils/timed-io.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,qBAAa,kBAAmB,SAAQ,KAAK;aAGzB,SAAS,EAAE,MAAM,GAAG,OAAO;aAC3B,QAAQ,EAAE,MAAM;aAChB,SAAS,EAAE,MAAM;gBAHjC,OAAO,EAAE,MAAM,EACC,SAAS,EAAE,MAAM,GAAG,OAAO,EAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM;CAKpC;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,cAAwB,EAClC,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,QAAQ,GAAE,cAAwB,EAClC,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,MAAwB,GACtC,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Timed I/O Utility
3
+ *
4
+ * Provides file I/O operations with configurable timeouts.
5
+ * Prevents hanging on unresponsive filesystems (network drives, etc.)
6
+ */
7
+ import { readFile, writeFile } from 'fs/promises';
8
+ export class FileIOTimeoutError extends Error {
9
+ operation;
10
+ filePath;
11
+ timeoutMs;
12
+ constructor(message, operation, filePath, timeoutMs) {
13
+ super(message);
14
+ this.operation = operation;
15
+ this.filePath = filePath;
16
+ this.timeoutMs = timeoutMs;
17
+ this.name = 'FileIOTimeoutError';
18
+ }
19
+ }
20
+ /**
21
+ * Read file with timeout.
22
+ *
23
+ * @param path - File path to read
24
+ * @param encoding - File encoding
25
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
26
+ * @returns File contents
27
+ * @throws FileIOTimeoutError if operation times out
28
+ */
29
+ export async function readFileWithTimeout(path, encoding = 'utf-8', timeoutMs = 5000) {
30
+ const controller = new AbortController();
31
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
32
+ try {
33
+ const content = await readFile(path, {
34
+ encoding,
35
+ signal: controller.signal,
36
+ });
37
+ return content;
38
+ }
39
+ catch (error) {
40
+ if (error.name === 'AbortError') {
41
+ throw new FileIOTimeoutError(`Read operation timed out after ${timeoutMs}ms`, 'read', path, timeoutMs);
42
+ }
43
+ throw error;
44
+ }
45
+ finally {
46
+ clearTimeout(timeoutId);
47
+ }
48
+ }
49
+ /**
50
+ * Read file as buffer with timeout.
51
+ *
52
+ * @param path - File path to read
53
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
54
+ * @returns File contents as buffer
55
+ * @throws FileIOTimeoutError if operation times out
56
+ */
57
+ export async function readFileBufferWithTimeout(path, timeoutMs = 5000) {
58
+ const controller = new AbortController();
59
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
60
+ try {
61
+ const content = await readFile(path, {
62
+ signal: controller.signal,
63
+ });
64
+ return content;
65
+ }
66
+ catch (error) {
67
+ if (error.name === 'AbortError') {
68
+ throw new FileIOTimeoutError(`Read operation timed out after ${timeoutMs}ms`, 'read', path, timeoutMs);
69
+ }
70
+ throw error;
71
+ }
72
+ finally {
73
+ clearTimeout(timeoutId);
74
+ }
75
+ }
76
+ /**
77
+ * Write file with timeout.
78
+ *
79
+ * @param path - File path to write
80
+ * @param data - Data to write
81
+ * @param encoding - File encoding
82
+ * @param timeoutMs - Maximum time to wait (default: 5000ms)
83
+ * @throws FileIOTimeoutError if operation times out
84
+ */
85
+ export async function writeFileWithTimeout(path, data, encoding = 'utf-8', timeoutMs = 5000) {
86
+ const controller = new AbortController();
87
+ const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
88
+ try {
89
+ await writeFile(path, data, {
90
+ encoding,
91
+ signal: controller.signal,
92
+ });
93
+ }
94
+ catch (error) {
95
+ if (error.name === 'AbortError') {
96
+ throw new FileIOTimeoutError(`Write operation timed out after ${timeoutMs}ms`, 'write', path, timeoutMs);
97
+ }
98
+ throw error;
99
+ }
100
+ finally {
101
+ clearTimeout(timeoutId);
102
+ }
103
+ }
104
+ /**
105
+ * Execute an I/O operation with timeout.
106
+ *
107
+ * @param operation - Async operation to execute
108
+ * @param timeoutMs - Maximum time to wait
109
+ * @param operationName - Name for error messages
110
+ * @returns Result of the operation
111
+ */
112
+ export async function withIOTimeout(operation, timeoutMs, operationName = 'I/O operation') {
113
+ return new Promise((resolve, reject) => {
114
+ const timeoutId = setTimeout(() => {
115
+ reject(new Error(`${operationName} timed out after ${timeoutMs}ms`));
116
+ }, timeoutMs);
117
+ operation()
118
+ .then((result) => {
119
+ clearTimeout(timeoutId);
120
+ resolve(result);
121
+ })
122
+ .catch((error) => {
123
+ clearTimeout(timeoutId);
124
+ reject(error);
125
+ });
126
+ });
127
+ }
128
+ //# sourceMappingURL=timed-io.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timed-io.js","sourceRoot":"","sources":["../../src/utils/timed-io.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,88 @@
1
+ {
2
+ "name": "conductor-bridge",
3
+ "version": "1.0.0",
4
+ "description": "TypeScript orchestration layer for multi-agent cognitive state management",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "conductor": "./dist/cli/index.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ },
16
+ "./schemas": {
17
+ "types": "./dist/schemas/index.d.ts",
18
+ "import": "./dist/schemas/index.js"
19
+ },
20
+ "./parsers": {
21
+ "types": "./dist/parsers/index.d.ts",
22
+ "import": "./dist/parsers/index.js"
23
+ },
24
+ "./bridge": {
25
+ "types": "./dist/bridge/index.d.ts",
26
+ "import": "./dist/bridge/index.js"
27
+ },
28
+ "./sync": {
29
+ "types": "./dist/sync/index.d.ts",
30
+ "import": "./dist/sync/index.js"
31
+ },
32
+ "./handoff": {
33
+ "types": "./dist/handoff/index.d.ts",
34
+ "import": "./dist/handoff/index.js"
35
+ }
36
+ },
37
+ "scripts": {
38
+ "build": "tsc",
39
+ "dev": "tsc --watch",
40
+ "test": "vitest run",
41
+ "test:watch": "vitest",
42
+ "lint": "eslint src --ext .ts",
43
+ "format": "prettier --write \"src/**/*.ts\"",
44
+ "typecheck": "tsc --noEmit"
45
+ },
46
+ "keywords": [
47
+ "cognitive",
48
+ "orchestration",
49
+ "multi-agent",
50
+ "claude",
51
+ "gemini",
52
+ "adhd",
53
+ "usd"
54
+ ],
55
+ "author": "Human + Claude Code",
56
+ "license": "MIT",
57
+ "repository": {
58
+ "type": "git",
59
+ "url": "https://github.com/JosephOIbrahim/cognitive-orchestrator"
60
+ },
61
+ "dependencies": {
62
+ "zod": "^3.22.0",
63
+ "gray-matter": "^4.0.3",
64
+ "yaml": "^2.3.0",
65
+ "chokidar": "^3.5.3",
66
+ "commander": "^12.0.0",
67
+ "chalk": "^5.3.0",
68
+ "ora": "^8.0.0",
69
+ "proper-lockfile": "^4.1.2"
70
+ },
71
+ "devDependencies": {
72
+ "@types/node": "^20.10.0",
73
+ "@types/proper-lockfile": "^4.1.4",
74
+ "typescript": "^5.3.0",
75
+ "vitest": "^3.0.0",
76
+ "eslint": "^8.55.0",
77
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
78
+ "@typescript-eslint/parser": "^6.13.0",
79
+ "prettier": "^3.1.0"
80
+ },
81
+ "engines": {
82
+ "node": ">=18.0.0"
83
+ },
84
+ "files": [
85
+ "dist",
86
+ "README.md"
87
+ ]
88
+ }