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.
- package/README.md +69 -0
- package/dist/bridge/index.d.ts +8 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +8 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/json-interchange.d.ts +94 -0
- package/dist/bridge/json-interchange.d.ts.map +1 -0
- package/dist/bridge/json-interchange.js +301 -0
- package/dist/bridge/json-interchange.js.map +1 -0
- package/dist/cli/commands/amend.d.ts +12 -0
- package/dist/cli/commands/amend.d.ts.map +1 -0
- package/dist/cli/commands/amend.js +205 -0
- package/dist/cli/commands/amend.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +12 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +60 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/dispatch.d.ts +12 -0
- package/dist/cli/commands/dispatch.d.ts.map +1 -0
- package/dist/cli/commands/dispatch.js +207 -0
- package/dist/cli/commands/dispatch.js.map +1 -0
- package/dist/cli/commands/handoff.d.ts +31 -0
- package/dist/cli/commands/handoff.d.ts.map +1 -0
- package/dist/cli/commands/handoff.js +273 -0
- package/dist/cli/commands/handoff.js.map +1 -0
- package/dist/cli/commands/init.d.ts +12 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +301 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/status.d.ts +12 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +206 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +148 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/handoff/encryption.d.ts +85 -0
- package/dist/handoff/encryption.d.ts.map +1 -0
- package/dist/handoff/encryption.js +308 -0
- package/dist/handoff/encryption.js.map +1 -0
- package/dist/handoff/index.d.ts +8 -0
- package/dist/handoff/index.d.ts.map +1 -0
- package/dist/handoff/index.js +10 -0
- package/dist/handoff/index.js.map +1 -0
- package/dist/handoff/mycelium-arc.d.ts +116 -0
- package/dist/handoff/mycelium-arc.d.ts.map +1 -0
- package/dist/handoff/mycelium-arc.js +410 -0
- package/dist/handoff/mycelium-arc.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/index.d.ts +10 -0
- package/dist/parsers/index.d.ts.map +1 -0
- package/dist/parsers/index.js +12 -0
- package/dist/parsers/index.js.map +1 -0
- package/dist/parsers/plan-parser.d.ts +29 -0
- package/dist/parsers/plan-parser.d.ts.map +1 -0
- package/dist/parsers/plan-parser.js +503 -0
- package/dist/parsers/plan-parser.js.map +1 -0
- package/dist/parsers/spec-parser.d.ts +10 -0
- package/dist/parsers/spec-parser.d.ts.map +1 -0
- package/dist/parsers/spec-parser.js +382 -0
- package/dist/parsers/spec-parser.js.map +1 -0
- package/dist/parsers/state-parser.d.ts +21 -0
- package/dist/parsers/state-parser.d.ts.map +1 -0
- package/dist/parsers/state-parser.js +378 -0
- package/dist/parsers/state-parser.js.map +1 -0
- package/dist/parsers/types.d.ts +190 -0
- package/dist/parsers/types.d.ts.map +1 -0
- package/dist/parsers/types.js +7 -0
- package/dist/parsers/types.js.map +1 -0
- package/dist/schemas/cognitive-state.d.ts +1523 -0
- package/dist/schemas/cognitive-state.d.ts.map +1 -0
- package/dist/schemas/cognitive-state.js +328 -0
- package/dist/schemas/cognitive-state.js.map +1 -0
- package/dist/schemas/enums.d.ts +124 -0
- package/dist/schemas/enums.d.ts.map +1 -0
- package/dist/schemas/enums.js +108 -0
- package/dist/schemas/enums.js.map +1 -0
- package/dist/schemas/index.d.ts +9 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +9 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/sync/adhd-continuity.d.ts +91 -0
- package/dist/sync/adhd-continuity.d.ts.map +1 -0
- package/dist/sync/adhd-continuity.js +302 -0
- package/dist/sync/adhd-continuity.js.map +1 -0
- package/dist/sync/convergence-tracker.d.ts +111 -0
- package/dist/sync/convergence-tracker.d.ts.map +1 -0
- package/dist/sync/convergence-tracker.js +299 -0
- package/dist/sync/convergence-tracker.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +15 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/state-sync.d.ts +105 -0
- package/dist/sync/state-sync.d.ts.map +1 -0
- package/dist/sync/state-sync.js +403 -0
- package/dist/sync/state-sync.js.map +1 -0
- package/dist/sync/watcher.d.ts +90 -0
- package/dist/sync/watcher.d.ts.map +1 -0
- package/dist/sync/watcher.js +281 -0
- package/dist/sync/watcher.js.map +1 -0
- package/dist/utils/atomic-write.d.ts +31 -0
- package/dist/utils/atomic-write.d.ts.map +1 -0
- package/dist/utils/atomic-write.js +69 -0
- package/dist/utils/atomic-write.js.map +1 -0
- package/dist/utils/error-handling.d.ts +70 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/error-handling.js +109 -0
- package/dist/utils/error-handling.js.map +1 -0
- package/dist/utils/file-lock.d.ts +46 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +117 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/rlm-navigator.d.ts +160 -0
- package/dist/utils/rlm-navigator.d.ts.map +1 -0
- package/dist/utils/rlm-navigator.js +368 -0
- package/dist/utils/rlm-navigator.js.map +1 -0
- package/dist/utils/safe-path.d.ts +44 -0
- package/dist/utils/safe-path.d.ts.map +1 -0
- package/dist/utils/safe-path.js +96 -0
- package/dist/utils/safe-path.js.map +1 -0
- package/dist/utils/timed-io.d.ts +51 -0
- package/dist/utils/timed-io.d.ts.map +1 -0
- package/dist/utils/timed-io.js +128 -0
- package/dist/utils/timed-io.js.map +1 -0
- 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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAGzB;IACA;IACA;IAJlB,YACE,OAAe,EACC,SAA2B,EAC3B,QAAgB,EAChB,SAAiB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,cAAS,GAAT,SAAS,CAAkB;QAC3B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,cAAS,GAAT,SAAS,CAAQ;QAGjC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,WAA2B,OAAO,EAClC,YAAoB,IAAI;IAExB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;YACnC,QAAQ;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3C,MAAM,IAAI,kBAAkB,CAC1B,kCAAkC,SAAS,IAAI,EAC/C,MAAM,EACN,IAAI,EACJ,SAAS,CACV,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAY,EACZ,YAAoB,IAAI;IAExB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;YACnC,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3C,MAAM,IAAI,kBAAkB,CAC1B,kCAAkC,SAAS,IAAI,EAC/C,MAAM,EACN,IAAI,EACJ,SAAS,CACV,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,IAAqB,EACrB,WAA2B,OAAO,EAClC,YAAoB,IAAI;IAExB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE;YAC1B,QAAQ;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAAe,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3C,MAAM,IAAI,kBAAkB,CAC1B,mCAAmC,SAAS,IAAI,EAChD,OAAO,EACP,IAAI,EACJ,SAAS,CACV,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAA2B,EAC3B,SAAiB,EACjB,gBAAwB,eAAe;IAEvC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,aAAa,oBAAoB,SAAS,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,SAAS,EAAE;aACR,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
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
|
+
}
|