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
package/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # @cognitive/conductor-bridge
2
+
3
+ TypeScript orchestration layer for multi-agent cognitive state management.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @cognitive/conductor-bridge
9
+ # or
10
+ pnpm add @cognitive/conductor-bridge
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```typescript
16
+ import {
17
+ writer,
18
+ reader,
19
+ SessionState,
20
+ DocumentType,
21
+ ActiveMode,
22
+ Paradigm,
23
+ BurnoutLevel,
24
+ } from '@cognitive/conductor-bridge';
25
+
26
+ // Create a session state document
27
+ const state: SessionState = {
28
+ session_id: 'my-session',
29
+ timestamp: new Date().toISOString(),
30
+ active_mode: 'focused',
31
+ active_paradigm: 'Cortex',
32
+ energy_level: 'medium',
33
+ burnout_level: 'GREEN',
34
+ momentum_phase: 'building',
35
+ session_start_goal: 'Complete the feature',
36
+ };
37
+
38
+ // Write to file
39
+ const doc = writer.createSessionStateDocument(state);
40
+ await writer.writeToFile(doc, './cognitive_state.json');
41
+
42
+ // Read from file
43
+ const loaded = await reader.readFromFile('./cognitive_state.json');
44
+ const sessionState = reader.extractSessionState(loaded);
45
+
46
+ // Create a cross-agent handoff
47
+ const arcDoc = writer.createMyceliumArc(state, {
48
+ sourceAgent: 'claude-code',
49
+ targetAgent: 'gemini-cli',
50
+ resumeSummary: 'Working on implementation',
51
+ });
52
+ ```
53
+
54
+ ## Features
55
+
56
+ - **Zod Validation**: Full runtime type checking
57
+ - **Checksum Verification**: Document integrity
58
+ - **Safety Constraints**: RED burnout protection
59
+ - **Cross-Agent Handoffs**: Mycelium Arc protocol
60
+
61
+ ## Exports
62
+
63
+ - `@cognitive/conductor-bridge` - Main entry point
64
+ - `@cognitive/conductor-bridge/schemas` - Zod schemas and types
65
+ - `@cognitive/conductor-bridge/bridge` - Interchange utilities
66
+
67
+ ## License
68
+
69
+ MIT
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bridge Module
3
+ *
4
+ * Handles bidirectional state synchronization between
5
+ * TypeScript (Conductor Bridge) and Python (USD Substrate).
6
+ */
7
+ export * from './json-interchange.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bridge Module
3
+ *
4
+ * Handles bidirectional state synchronization between
5
+ * TypeScript (Conductor Bridge) and Python (USD Substrate).
6
+ */
7
+ export * from './json-interchange.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * JSON Interchange Reader/Writer
3
+ *
4
+ * Handles reading and writing cognitive state documents in the interchange format.
5
+ * Provides bidirectional sync between TypeScript (Conductor Bridge) and Python (USD Substrate).
6
+ */
7
+ import { type CognitiveStateDocument, type SessionState, type ConductorSession, type MyceliumArc, type ConvergenceRecord, type RoutingDecision, type ConductorTrack } from '../schemas/index.js';
8
+ import { AgentType } from '../schemas/enums.js';
9
+ /**
10
+ * Compute SHA256 checksum of an object (first 16 chars)
11
+ *
12
+ * Uses recursive key sorting to match Python's sort_keys=True behavior.
13
+ * This ensures cross-language checksum compatibility.
14
+ */
15
+ export declare function computeChecksum(data: unknown): string;
16
+ /**
17
+ * Verify document checksum
18
+ */
19
+ export declare function verifyChecksum(doc: CognitiveStateDocument): boolean;
20
+ export declare class JsonInterchangeWriter {
21
+ private source;
22
+ /**
23
+ * Create a session state document
24
+ */
25
+ createSessionStateDocument(state: SessionState): CognitiveStateDocument;
26
+ /**
27
+ * Create a conductor sync document
28
+ */
29
+ createConductorSyncDocument(session: ConductorSession, tracks: ConductorTrack[], sessionState?: SessionState): CognitiveStateDocument;
30
+ /**
31
+ * Create a Mycelium Arc handoff document
32
+ */
33
+ createMyceliumArc(sessionState: SessionState, options: {
34
+ sourceAgent: AgentType;
35
+ targetAgent?: AgentType;
36
+ conductorContext?: ConductorSession;
37
+ resumeSummary?: string;
38
+ parkedIdeas?: string[];
39
+ expiresInHours?: number;
40
+ }): CognitiveStateDocument;
41
+ /**
42
+ * Create a convergence record document
43
+ */
44
+ createConvergenceDocument(records: ConvergenceRecord[]): CognitiveStateDocument;
45
+ /**
46
+ * Create a routing decision document
47
+ */
48
+ createRoutingDocument(decisions: RoutingDecision[]): CognitiveStateDocument;
49
+ /**
50
+ * Write document to file with atomic write and file locking.
51
+ *
52
+ * Uses temp file + rename pattern for atomicity, and file locking
53
+ * to prevent concurrent write corruption.
54
+ */
55
+ writeToFile(doc: CognitiveStateDocument, filePath: string): Promise<void>;
56
+ }
57
+ export declare class JsonInterchangeReader {
58
+ /**
59
+ * Read and validate a cognitive state document from file
60
+ */
61
+ readFromFile(filePath: string): Promise<CognitiveStateDocument>;
62
+ /**
63
+ * Parse a JSON string into a validated document
64
+ */
65
+ parse(json: string): CognitiveStateDocument;
66
+ /**
67
+ * Extract session state from a document
68
+ */
69
+ extractSessionState(doc: CognitiveStateDocument): SessionState | null;
70
+ /**
71
+ * Extract conductor session from a document
72
+ */
73
+ extractConductorSession(doc: CognitiveStateDocument): ConductorSession | null;
74
+ /**
75
+ * Check if a Mycelium Arc has expired
76
+ */
77
+ isArcExpired(arc: MyceliumArc): boolean;
78
+ }
79
+ /**
80
+ * Generate a resume summary for ADHD-friendly context restoration
81
+ */
82
+ export declare function generateResumeSummary(sessionState: SessionState, conductorSession?: ConductorSession): string;
83
+ /**
84
+ * Calculate momentum penalty based on break duration
85
+ */
86
+ export declare function calculateMomentumPenalty(breakDurationMinutes: number): {
87
+ penaltyLevels: number;
88
+ recommendation: string;
89
+ };
90
+ export declare const writer: JsonInterchangeWriter;
91
+ export declare const reader: JsonInterchangeReader;
92
+ export declare function readFromFile(filePath: string): Promise<CognitiveStateDocument>;
93
+ export declare function extractSessionState(doc: CognitiveStateDocument): SessionState | null;
94
+ //# sourceMappingURL=json-interchange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-interchange.d.ts","sourceRoot":"","sources":["../../src/bridge/json-interchange.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAKL,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAsC,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAMpF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CA2BrD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAInE;AAMD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAmC;IAEjD;;OAEG;IACH,0BAA0B,CAAC,KAAK,EAAE,YAAY,GAAG,sBAAsB;IAYvE;;OAEG;IACH,2BAA2B,CACzB,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,cAAc,EAAE,EACxB,YAAY,CAAC,EAAE,YAAY,GAC1B,sBAAsB;IAczB;;OAEG;IACH,iBAAiB,CACf,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE;QACP,WAAW,EAAE,SAAS,CAAC;QACvB,WAAW,CAAC,EAAE,SAAS,CAAC;QACxB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;QACpC,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GACA,sBAAsB;IAwCzB;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,sBAAsB;IAY/E;;OAEG;IACH,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,sBAAsB;IAY3E;;;;;OAKG;IACG,WAAW,CAAC,GAAG,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBhF;AAMD,qBAAa,qBAAqB;IAChC;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAKrE;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB;IAsB3C;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI;IAUrE;;OAEG;IACH,uBAAuB,CAAC,GAAG,EAAE,sBAAsB,GAAG,gBAAgB,GAAG,IAAI;IAU7E;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO;CAIxC;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,YAAY,EAC1B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,MAAM,CA6BR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,oBAAoB,EAAE,MAAM,GAC3B;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAWnD;AAMD,eAAO,MAAM,MAAM,uBAA8B,CAAC;AAClD,eAAO,MAAM,MAAM,uBAA8B,CAAC;AAGlD,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAEpF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,sBAAsB,GAAG,YAAY,GAAG,IAAI,CAEpF"}
@@ -0,0 +1,301 @@
1
+ /**
2
+ * JSON Interchange Reader/Writer
3
+ *
4
+ * Handles reading and writing cognitive state documents in the interchange format.
5
+ * Provides bidirectional sync between TypeScript (Conductor Bridge) and Python (USD Substrate).
6
+ */
7
+ import { createHash } from 'crypto';
8
+ import { readFile, mkdir } from 'fs/promises';
9
+ import { dirname } from 'path';
10
+ import { atomicWriteFile } from '../utils/atomic-write.js';
11
+ import { withFileLock } from '../utils/file-lock.js';
12
+ import { CognitiveStateDocumentSchema, } from '../schemas/index.js';
13
+ import { DocumentType, Source, BurnoutLevel } from '../schemas/enums.js';
14
+ // ============================================================================
15
+ // Checksum Utilities
16
+ // ============================================================================
17
+ /**
18
+ * Compute SHA256 checksum of an object (first 16 chars)
19
+ *
20
+ * Uses recursive key sorting to match Python's sort_keys=True behavior.
21
+ * This ensures cross-language checksum compatibility.
22
+ */
23
+ export function computeChecksum(data) {
24
+ // Recursively sort object keys at all levels
25
+ const sortKeys = (obj) => {
26
+ if (obj === null || obj === undefined || typeof obj !== 'object') {
27
+ return obj;
28
+ }
29
+ if (obj instanceof Date) {
30
+ return obj; // Dates serialize to ISO strings
31
+ }
32
+ if (Array.isArray(obj)) {
33
+ return obj.map(sortKeys);
34
+ }
35
+ // Sort object keys
36
+ const sorted = {};
37
+ const keys = Object.keys(obj).sort();
38
+ for (const key of keys) {
39
+ sorted[key] = sortKeys(obj[key]);
40
+ }
41
+ return sorted;
42
+ };
43
+ const sortedData = sortKeys(data);
44
+ const canonical = JSON.stringify(sortedData);
45
+ return createHash('sha256').update(canonical).digest('hex').slice(0, 16);
46
+ }
47
+ /**
48
+ * Verify document checksum
49
+ */
50
+ export function verifyChecksum(doc) {
51
+ if (!doc.checksum)
52
+ return true; // No checksum to verify
53
+ const { checksum, ...rest } = doc;
54
+ return computeChecksum(rest) === checksum;
55
+ }
56
+ // ============================================================================
57
+ // Writer Class
58
+ // ============================================================================
59
+ export class JsonInterchangeWriter {
60
+ source = Source.CONDUCTOR_BRIDGE;
61
+ /**
62
+ * Create a session state document
63
+ */
64
+ createSessionStateDocument(state) {
65
+ const doc = {
66
+ interchange_version: '1.0.0',
67
+ document_type: DocumentType.SESSION_STATE,
68
+ created_at: new Date().toISOString(),
69
+ source: this.source,
70
+ session_state: state,
71
+ };
72
+ doc.checksum = computeChecksum(doc);
73
+ return doc;
74
+ }
75
+ /**
76
+ * Create a conductor sync document
77
+ */
78
+ createConductorSyncDocument(session, tracks, sessionState) {
79
+ const doc = {
80
+ interchange_version: '1.0.0',
81
+ document_type: DocumentType.CONDUCTOR_SYNC,
82
+ created_at: new Date().toISOString(),
83
+ source: this.source,
84
+ conductor_session: session,
85
+ conductor_tracks: tracks,
86
+ session_state: sessionState,
87
+ };
88
+ doc.checksum = computeChecksum(doc);
89
+ return doc;
90
+ }
91
+ /**
92
+ * Create a Mycelium Arc handoff document
93
+ */
94
+ createMyceliumArc(sessionState, options) {
95
+ // Safety: Never include RED burnout in handoffs
96
+ if (sessionState.burnout_level === BurnoutLevel.RED) {
97
+ throw new Error('Cannot create handoff with RED burnout level. ' +
98
+ 'This is a safety constraint - user should recover first.');
99
+ }
100
+ const now = new Date();
101
+ const expiresAt = new Date(now.getTime() + (options.expiresInHours || 24) * 60 * 60 * 1000);
102
+ const arc = {
103
+ version: '1.0.0',
104
+ created_at: now.toISOString(),
105
+ expires_at: expiresAt.toISOString(),
106
+ source_agent: options.sourceAgent,
107
+ target_agent: options.targetAgent,
108
+ session_state: sessionState,
109
+ conductor_context: options.conductorContext,
110
+ resume_summary: options.resumeSummary,
111
+ momentum_at_handoff: sessionState.momentum_phase,
112
+ parked_ideas: options.parkedIdeas || sessionState.parked_ideas,
113
+ encryption: { algorithm: 'none', machine_bound: false },
114
+ };
115
+ arc.checksum = computeChecksum(arc);
116
+ const doc = {
117
+ interchange_version: '1.0.0',
118
+ document_type: DocumentType.MYCELIUM_ARC,
119
+ created_at: now.toISOString(),
120
+ source: this.source,
121
+ mycelium_arc: arc,
122
+ };
123
+ doc.checksum = computeChecksum(doc);
124
+ return doc;
125
+ }
126
+ /**
127
+ * Create a convergence record document
128
+ */
129
+ createConvergenceDocument(records) {
130
+ const doc = {
131
+ interchange_version: '1.0.0',
132
+ document_type: DocumentType.CONVERGENCE_RECORD,
133
+ created_at: new Date().toISOString(),
134
+ source: this.source,
135
+ convergence_records: records,
136
+ };
137
+ doc.checksum = computeChecksum(doc);
138
+ return doc;
139
+ }
140
+ /**
141
+ * Create a routing decision document
142
+ */
143
+ createRoutingDocument(decisions) {
144
+ const doc = {
145
+ interchange_version: '1.0.0',
146
+ document_type: DocumentType.ROUTING_DECISION,
147
+ created_at: new Date().toISOString(),
148
+ source: this.source,
149
+ routing_decisions: decisions,
150
+ };
151
+ doc.checksum = computeChecksum(doc);
152
+ return doc;
153
+ }
154
+ /**
155
+ * Write document to file with atomic write and file locking.
156
+ *
157
+ * Uses temp file + rename pattern for atomicity, and file locking
158
+ * to prevent concurrent write corruption.
159
+ */
160
+ async writeToFile(doc, filePath) {
161
+ // Validate before writing
162
+ const result = CognitiveStateDocumentSchema.safeParse(doc);
163
+ if (!result.success) {
164
+ throw new Error(`Invalid document: ${result.error.message}`);
165
+ }
166
+ // Ensure directory exists
167
+ await mkdir(dirname(filePath), { recursive: true });
168
+ // Write with file locking and atomic write
169
+ await withFileLock(filePath, async () => {
170
+ const json = JSON.stringify(doc, null, 2);
171
+ await atomicWriteFile(filePath, json);
172
+ });
173
+ }
174
+ }
175
+ // ============================================================================
176
+ // Reader Class
177
+ // ============================================================================
178
+ export class JsonInterchangeReader {
179
+ /**
180
+ * Read and validate a cognitive state document from file
181
+ */
182
+ async readFromFile(filePath) {
183
+ const content = await readFile(filePath, 'utf-8');
184
+ return this.parse(content);
185
+ }
186
+ /**
187
+ * Parse a JSON string into a validated document
188
+ */
189
+ parse(json) {
190
+ const raw = JSON.parse(json);
191
+ // Verify checksum BEFORE Zod parsing (which may transform data)
192
+ if (raw.checksum) {
193
+ const { checksum, ...rest } = raw;
194
+ const recomputed = computeChecksum(rest);
195
+ if (checksum !== recomputed) {
196
+ throw new Error('Document checksum verification failed');
197
+ }
198
+ }
199
+ // Now validate with Zod
200
+ const result = CognitiveStateDocumentSchema.safeParse(raw);
201
+ if (!result.success) {
202
+ throw new Error(`Invalid cognitive state document: ${result.error.message}`);
203
+ }
204
+ return result.data;
205
+ }
206
+ /**
207
+ * Extract session state from a document
208
+ */
209
+ extractSessionState(doc) {
210
+ if (doc.session_state) {
211
+ return doc.session_state;
212
+ }
213
+ if (doc.mycelium_arc?.session_state) {
214
+ return doc.mycelium_arc.session_state;
215
+ }
216
+ return null;
217
+ }
218
+ /**
219
+ * Extract conductor session from a document
220
+ */
221
+ extractConductorSession(doc) {
222
+ if (doc.conductor_session) {
223
+ return doc.conductor_session;
224
+ }
225
+ if (doc.mycelium_arc?.conductor_context) {
226
+ return doc.mycelium_arc.conductor_context;
227
+ }
228
+ return null;
229
+ }
230
+ /**
231
+ * Check if a Mycelium Arc has expired
232
+ */
233
+ isArcExpired(arc) {
234
+ if (!arc.expires_at)
235
+ return false;
236
+ return new Date(arc.expires_at) < new Date();
237
+ }
238
+ }
239
+ // ============================================================================
240
+ // Sync Utilities
241
+ // ============================================================================
242
+ /**
243
+ * Generate a resume summary for ADHD-friendly context restoration
244
+ */
245
+ export function generateResumeSummary(sessionState, conductorSession) {
246
+ const parts = [];
247
+ // Goal
248
+ if (sessionState.session_start_goal) {
249
+ parts.push(`Goal: ${sessionState.session_start_goal}`);
250
+ }
251
+ // Current track/task
252
+ if (conductorSession?.current_assignment) {
253
+ const { track, task, subtask } = conductorSession.current_assignment;
254
+ if (track)
255
+ parts.push(`Track: ${track}`);
256
+ if (task)
257
+ parts.push(`Task: ${task}`);
258
+ if (subtask)
259
+ parts.push(`Subtask: ${subtask}`);
260
+ }
261
+ // Energy state
262
+ parts.push(`Energy: ${sessionState.energy_level} | ` +
263
+ `Burnout: ${sessionState.burnout_level} | ` +
264
+ `Momentum: ${sessionState.momentum_phase}`);
265
+ // Parked ideas
266
+ if (sessionState.parked_ideas && sessionState.parked_ideas.length > 0) {
267
+ parts.push(`Parked ideas: ${sessionState.parked_ideas.join(', ')}`);
268
+ }
269
+ return parts.join('\n');
270
+ }
271
+ /**
272
+ * Calculate momentum penalty based on break duration
273
+ */
274
+ export function calculateMomentumPenalty(breakDurationMinutes) {
275
+ if (breakDurationMinutes < 5) {
276
+ return { penaltyLevels: 0, recommendation: 'Resume seamlessly' };
277
+ }
278
+ else if (breakDurationMinutes < 30) {
279
+ return { penaltyLevels: 1, recommendation: 'Brief recap before continuing' };
280
+ }
281
+ else if (breakDurationMinutes < 240) {
282
+ // 4 hours
283
+ return { penaltyLevels: 2, recommendation: 'Start with easy win to rebuild momentum' };
284
+ }
285
+ else {
286
+ return { penaltyLevels: 3, recommendation: 'Fresh start recommended' };
287
+ }
288
+ }
289
+ // ============================================================================
290
+ // Default Exports
291
+ // ============================================================================
292
+ export const writer = new JsonInterchangeWriter();
293
+ export const reader = new JsonInterchangeReader();
294
+ // Standalone function exports for convenience
295
+ export async function readFromFile(filePath) {
296
+ return reader.readFromFile(filePath);
297
+ }
298
+ export function extractSessionState(doc) {
299
+ return reader.extractSessionState(doc);
300
+ }
301
+ //# sourceMappingURL=json-interchange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-interchange.js","sourceRoot":"","sources":["../../src/bridge/json-interchange.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * conductor amend command
3
+ *
4
+ * Files an amendment proposal.
5
+ */
6
+ interface AmendOptions {
7
+ section?: string;
8
+ title?: string;
9
+ }
10
+ export declare function amendCommand(file: string | undefined, options: AmendOptions): Promise<void>;
11
+ export {};
12
+ //# sourceMappingURL=amend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/amend.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA0GD,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CAqHf"}