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
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,uBAAuB,CAAC"}
|
|
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,4BAA4B,GAW7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAa,MAAM,qBAAqB,CAAC;AAEpF,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAW,EAAE;QACzC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACjE,OAAO,GAAG,CAAC;QACb,CAAC;QAED,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,CAAE,iCAAiC;QAChD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,mBAAmB;QACnB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAA2B;IACxD,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAClC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC5C,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,OAAO,qBAAqB;IACxB,MAAM,GAAW,MAAM,CAAC,gBAAgB,CAAC;IAEjD;;OAEG;IACH,0BAA0B,CAAC,KAAmB;QAC5C,MAAM,GAAG,GAA2B;YAClC,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,YAAY,CAAC,aAAa;YACzC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,KAAK;SACrB,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,2BAA2B,CACzB,OAAyB,EACzB,MAAwB,EACxB,YAA2B;QAE3B,MAAM,GAAG,GAA2B;YAClC,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,YAAY,CAAC,cAAc;YAC1C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,iBAAiB,EAAE,OAAO;YAC1B,gBAAgB,EAAE,MAAM;YACxB,aAAa,EAAE,YAAY;SAC5B,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,iBAAiB,CACf,YAA0B,EAC1B,OAOC;QAED,gDAAgD;QAChD,IAAI,YAAY,CAAC,aAAa,KAAK,YAAY,CAAC,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,gDAAgD;gBAC9C,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,IAAI,CACxB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAChE,CAAC;QAEF,MAAM,GAAG,GAAgB;YACvB,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;YAC7B,UAAU,EAAE,SAAS,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,OAAO,CAAC,WAAqD;YAC3E,YAAY,EAAE,OAAO,CAAC,WAA+D;YACrF,aAAa,EAAE,YAAY;YAC3B,iBAAiB,EAAE,OAAO,CAAC,gBAAgB;YAC3C,cAAc,EAAE,OAAO,CAAC,aAAa;YACrC,mBAAmB,EAAE,YAAY,CAAC,cAAc;YAChD,YAAY,EAAE,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC,YAAY;YAC9D,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE;SACxD,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QAEpC,MAAM,GAAG,GAA2B;YAClC,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,YAAY,CAAC,YAAY;YACxC,UAAU,EAAE,GAAG,CAAC,WAAW,EAAE;YAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,GAAG;SAClB,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,yBAAyB,CAAC,OAA4B;QACpD,MAAM,GAAG,GAA2B;YAClC,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,YAAY,CAAC,kBAAkB;YAC9C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,mBAAmB,EAAE,OAAO;SAC7B,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,qBAAqB,CAAC,SAA4B;QAChD,MAAM,GAAG,GAA2B;YAClC,mBAAmB,EAAE,OAAO;YAC5B,aAAa,EAAE,YAAY,CAAC,gBAAgB;YAC5C,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,iBAAiB,EAAE,SAAS;SAC7B,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CAAC,GAA2B,EAAE,QAAgB;QAC7D,0BAA0B;QAC1B,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEpD,2CAA2C;QAC3C,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1C,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,OAAO,qBAAqB;IAChC;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAgB;QACjC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7B,gEAAgE;QAChE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;YAClC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,GAA2B;QAC7C,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,aAAa,CAAC;QAC3B,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,GAA2B;QACjD,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,iBAAiB,CAAC;QAC/B,CAAC;QACD,IAAI,GAAG,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAgB;QAC3B,IAAI,CAAC,GAAG,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAClC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IAC/C,CAAC;CACF;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAA0B,EAC1B,gBAAmC;IAEnC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,OAAO;IACP,IAAI,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,qBAAqB;IACrB,IAAI,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;QACrE,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QACtC,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,eAAe;IACf,KAAK,CAAC,IAAI,CACR,WAAW,YAAY,CAAC,YAAY,KAAK;QACvC,YAAY,YAAY,CAAC,aAAa,KAAK;QAC3C,aAAa,YAAY,CAAC,cAAc,EAAE,CAC7C,CAAC;IAEF,eAAe;IACf,IAAI,YAAY,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,oBAA4B;IAE5B,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;IACnE,CAAC;SAAM,IAAI,oBAAoB,GAAG,EAAE,EAAE,CAAC;QACrC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,+BAA+B,EAAE,CAAC;IAC/E,CAAC;SAAM,IAAI,oBAAoB,GAAG,GAAG,EAAE,CAAC;QACtC,UAAU;QACV,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,yCAAyC,EAAE,CAAC;IACzF,CAAC;SAAM,CAAC;QACN,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,yBAAyB,EAAE,CAAC;IACzE,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAClD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;AAElD,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAA2B;IAC7D,OAAO,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -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"}
|