cyrus-core 0.0.5 → 0.0.6
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/dist/PersistenceManager.d.ts +82 -0
- package/dist/PersistenceManager.d.ts.map +1 -0
- package/dist/PersistenceManager.js +112 -0
- package/dist/PersistenceManager.js.map +1 -0
- package/dist/Session.d.ts +4 -2
- package/dist/Session.d.ts.map +1 -1
- package/dist/Session.js +4 -2
- package/dist/Session.js.map +1 -1
- package/dist/SessionManager.d.ts +63 -13
- package/dist/SessionManager.d.ts.map +1 -1
- package/dist/SessionManager.js +182 -22
- package/dist/SessionManager.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Serializable session state for persistence
|
|
3
|
+
*/
|
|
4
|
+
export interface SerializableSession {
|
|
5
|
+
issueId: string;
|
|
6
|
+
issueIdentifier: string;
|
|
7
|
+
issueTitle: string;
|
|
8
|
+
branchName: string;
|
|
9
|
+
workspacePath: string;
|
|
10
|
+
isGitWorktree: boolean;
|
|
11
|
+
historyPath?: string;
|
|
12
|
+
claudeSessionId: string | null;
|
|
13
|
+
agentRootCommentId: string | null;
|
|
14
|
+
lastCommentId: string | null;
|
|
15
|
+
currentParentId: string | null;
|
|
16
|
+
startedAt: string;
|
|
17
|
+
exitedAt: string | null;
|
|
18
|
+
conversationContext: any;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Serializable EdgeWorker state for persistence
|
|
22
|
+
*/
|
|
23
|
+
export interface SerializableEdgeWorkerState {
|
|
24
|
+
commentToRepo: Record<string, string>;
|
|
25
|
+
commentToIssue: Record<string, string>;
|
|
26
|
+
commentToLatestAgentReply: Record<string, string>;
|
|
27
|
+
issueToCommentThreads: Record<string, string[]>;
|
|
28
|
+
issueToReplyContext: Record<string, {
|
|
29
|
+
commentId: string;
|
|
30
|
+
parentId?: string;
|
|
31
|
+
}>;
|
|
32
|
+
sessionsByCommentId: Record<string, SerializableSession>;
|
|
33
|
+
sessionsByIssueId: Record<string, SerializableSession[]>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Manages persistence of critical mappings to survive restarts
|
|
37
|
+
*/
|
|
38
|
+
export declare class PersistenceManager {
|
|
39
|
+
private persistencePath;
|
|
40
|
+
constructor(persistencePath?: string);
|
|
41
|
+
/**
|
|
42
|
+
* Get the full path to the state file for a repository
|
|
43
|
+
*/
|
|
44
|
+
private getStateFilePath;
|
|
45
|
+
/**
|
|
46
|
+
* Ensure the persistence directory exists
|
|
47
|
+
*/
|
|
48
|
+
private ensurePersistenceDirectory;
|
|
49
|
+
/**
|
|
50
|
+
* Save EdgeWorker state to disk
|
|
51
|
+
*/
|
|
52
|
+
saveEdgeWorkerState(repositoryId: string, state: SerializableEdgeWorkerState): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Load EdgeWorker state from disk
|
|
55
|
+
*/
|
|
56
|
+
loadEdgeWorkerState(repositoryId: string): Promise<SerializableEdgeWorkerState | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Check if state file exists for a repository
|
|
59
|
+
*/
|
|
60
|
+
hasStateFile(repositoryId: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Delete state file for a repository
|
|
63
|
+
*/
|
|
64
|
+
deleteStateFile(repositoryId: string): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Convert Map to Record for serialization
|
|
67
|
+
*/
|
|
68
|
+
static mapToRecord<T>(map: Map<string, T>): Record<string, T>;
|
|
69
|
+
/**
|
|
70
|
+
* Convert Record to Map for deserialization
|
|
71
|
+
*/
|
|
72
|
+
static recordToMap<T>(record: Record<string, T>): Map<string, T>;
|
|
73
|
+
/**
|
|
74
|
+
* Convert Set to Array for serialization
|
|
75
|
+
*/
|
|
76
|
+
static setToArray<T>(set: Set<T>): T[];
|
|
77
|
+
/**
|
|
78
|
+
* Convert Array to Set for deserialization
|
|
79
|
+
*/
|
|
80
|
+
static arrayToSet<T>(array: T[]): Set<T>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=PersistenceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistenceManager.d.ts","sourceRoot":"","sources":["../src/PersistenceManager.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,mBAAmB,EAAE,GAAG,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/C,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7E,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IACxD,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;CACzD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAAQ;gBAEnB,eAAe,CAAC,EAAE,MAAM;IAIpC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;YACW,0BAA0B;IAIxC;;OAEG;IACG,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBlG;;OAEG;IACG,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAsB5F;;OAEG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAI7D;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAIhE;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAItC;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;CAGzC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
/**
|
|
6
|
+
* Manages persistence of critical mappings to survive restarts
|
|
7
|
+
*/
|
|
8
|
+
export class PersistenceManager {
|
|
9
|
+
persistencePath;
|
|
10
|
+
constructor(persistencePath) {
|
|
11
|
+
this.persistencePath = persistencePath || join(homedir(), '.cyrus', 'state');
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the full path to the state file for a repository
|
|
15
|
+
*/
|
|
16
|
+
getStateFilePath(repositoryId) {
|
|
17
|
+
return join(this.persistencePath, `${repositoryId}-state.json`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Ensure the persistence directory exists
|
|
21
|
+
*/
|
|
22
|
+
async ensurePersistenceDirectory() {
|
|
23
|
+
await mkdir(this.persistencePath, { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Save EdgeWorker state to disk
|
|
27
|
+
*/
|
|
28
|
+
async saveEdgeWorkerState(repositoryId, state) {
|
|
29
|
+
try {
|
|
30
|
+
await this.ensurePersistenceDirectory();
|
|
31
|
+
const stateFile = this.getStateFilePath(repositoryId);
|
|
32
|
+
const stateData = {
|
|
33
|
+
version: '1.0',
|
|
34
|
+
savedAt: new Date().toISOString(),
|
|
35
|
+
repositoryId,
|
|
36
|
+
state
|
|
37
|
+
};
|
|
38
|
+
await writeFile(stateFile, JSON.stringify(stateData, null, 2), 'utf8');
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`Failed to save EdgeWorker state for ${repositoryId}:`, error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Load EdgeWorker state from disk
|
|
47
|
+
*/
|
|
48
|
+
async loadEdgeWorkerState(repositoryId) {
|
|
49
|
+
try {
|
|
50
|
+
const stateFile = this.getStateFilePath(repositoryId);
|
|
51
|
+
if (!existsSync(stateFile)) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const stateData = JSON.parse(await readFile(stateFile, 'utf8'));
|
|
55
|
+
// Validate state structure
|
|
56
|
+
if (!stateData.state || !stateData.repositoryId || stateData.repositoryId !== repositoryId) {
|
|
57
|
+
console.warn(`Invalid state file for ${repositoryId}, ignoring`);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return stateData.state;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error(`Failed to load EdgeWorker state for ${repositoryId}:`, error);
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Check if state file exists for a repository
|
|
69
|
+
*/
|
|
70
|
+
hasStateFile(repositoryId) {
|
|
71
|
+
return existsSync(this.getStateFilePath(repositoryId));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Delete state file for a repository
|
|
75
|
+
*/
|
|
76
|
+
async deleteStateFile(repositoryId) {
|
|
77
|
+
try {
|
|
78
|
+
const stateFile = this.getStateFilePath(repositoryId);
|
|
79
|
+
if (existsSync(stateFile)) {
|
|
80
|
+
await writeFile(stateFile, '', 'utf8'); // Clear file instead of deleting
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error(`Failed to delete state file for ${repositoryId}:`, error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Convert Map to Record for serialization
|
|
89
|
+
*/
|
|
90
|
+
static mapToRecord(map) {
|
|
91
|
+
return Object.fromEntries(map.entries());
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Convert Record to Map for deserialization
|
|
95
|
+
*/
|
|
96
|
+
static recordToMap(record) {
|
|
97
|
+
return new Map(Object.entries(record));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Convert Set to Array for serialization
|
|
101
|
+
*/
|
|
102
|
+
static setToArray(set) {
|
|
103
|
+
return Array.from(set);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Convert Array to Set for deserialization
|
|
107
|
+
*/
|
|
108
|
+
static arrayToSet(array) {
|
|
109
|
+
return new Set(array);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=PersistenceManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersistenceManager.js","sourceRoot":"","sources":["../src/PersistenceManager.ts"],"names":[],"mappings":"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"}
|
package/dist/Session.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export interface SessionOptions {
|
|
|
27
27
|
streamingCommentId?: string | null;
|
|
28
28
|
streamingSynthesis?: string | null;
|
|
29
29
|
streamingNarrative?: NarrativeItem[];
|
|
30
|
+
claudeSessionId?: string | null;
|
|
30
31
|
}
|
|
31
32
|
export interface NarrativeItem {
|
|
32
33
|
type: 'text' | 'tool_call';
|
|
@@ -35,7 +36,7 @@ export interface NarrativeItem {
|
|
|
35
36
|
timestamp: number;
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
|
-
* Represents a Claude session for
|
|
39
|
+
* Represents a Claude session for a comment thread
|
|
39
40
|
*/
|
|
40
41
|
export declare class Session {
|
|
41
42
|
issue: Issue;
|
|
@@ -53,7 +54,8 @@ export declare class Session {
|
|
|
53
54
|
streamingCommentId: string | null;
|
|
54
55
|
streamingSynthesis: string | null;
|
|
55
56
|
streamingNarrative: NarrativeItem[];
|
|
56
|
-
|
|
57
|
+
claudeSessionId: string | null;
|
|
58
|
+
constructor({ issue, workspace, process, startedAt, exitCode, exitedAt, stderrContent, lastAssistantResponse, lastCommentId, conversationContext, agentRootCommentId, currentParentId, streamingCommentId, streamingSynthesis, streamingNarrative, claudeSessionId, }: SessionOptions);
|
|
57
59
|
/**
|
|
58
60
|
* Check if this session is currently active
|
|
59
61
|
*/
|
package/dist/Session.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,IAAI,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,mBAAmB,CAAC,EAAE,GAAG,CAAA;IACzB,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"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"}
|
package/dist/Session.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Represents a Claude session for
|
|
2
|
+
* Represents a Claude session for a comment thread
|
|
3
3
|
*/
|
|
4
4
|
export class Session {
|
|
5
5
|
issue;
|
|
@@ -17,7 +17,8 @@ export class Session {
|
|
|
17
17
|
streamingCommentId;
|
|
18
18
|
streamingSynthesis;
|
|
19
19
|
streamingNarrative;
|
|
20
|
-
|
|
20
|
+
claudeSessionId; // Claude Code session ID for resume functionality
|
|
21
|
+
constructor({ issue, workspace, process = null, startedAt = new Date(), exitCode = null, exitedAt = null, stderrContent = '', lastAssistantResponse = '', lastCommentId = null, conversationContext = null, agentRootCommentId = null, currentParentId = null, streamingCommentId = null, streamingSynthesis = null, streamingNarrative = [], claudeSessionId = null, }) {
|
|
21
22
|
this.issue = issue;
|
|
22
23
|
this.workspace = workspace;
|
|
23
24
|
this.process = process;
|
|
@@ -33,6 +34,7 @@ export class Session {
|
|
|
33
34
|
this.streamingCommentId = streamingCommentId;
|
|
34
35
|
this.streamingSynthesis = streamingSynthesis;
|
|
35
36
|
this.streamingNarrative = streamingNarrative;
|
|
37
|
+
this.claudeSessionId = claudeSessionId;
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* Check if this session is currently active
|
package/dist/Session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"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"}
|
package/dist/SessionManager.d.ts
CHANGED
|
@@ -1,41 +1,91 @@
|
|
|
1
1
|
import { Session } from './Session.js';
|
|
2
|
+
import { PersistenceManager } from './PersistenceManager.js';
|
|
3
|
+
import type { SerializableSession } from './PersistenceManager.js';
|
|
2
4
|
/**
|
|
3
5
|
* Manages active Claude sessions
|
|
6
|
+
* Now supports comment-based session mapping (one session per comment thread)
|
|
4
7
|
*/
|
|
5
8
|
export declare class SessionManager {
|
|
6
|
-
private
|
|
7
|
-
|
|
9
|
+
private sessionsByCommentId;
|
|
10
|
+
private sessionsByIssueId;
|
|
11
|
+
constructor(_persistenceManager?: PersistenceManager);
|
|
8
12
|
/**
|
|
9
|
-
* Add a session
|
|
13
|
+
* Add a session by comment ID (primary method)
|
|
10
14
|
*/
|
|
11
|
-
addSession(
|
|
15
|
+
addSession(commentId: string, session: Session): void;
|
|
12
16
|
/**
|
|
13
|
-
* Get a session
|
|
17
|
+
* Get a session by comment ID
|
|
14
18
|
*/
|
|
15
|
-
getSession(
|
|
19
|
+
getSession(commentId: string): Session | undefined;
|
|
16
20
|
/**
|
|
17
|
-
*
|
|
21
|
+
* Get all sessions for an issue ID
|
|
18
22
|
*/
|
|
19
|
-
|
|
23
|
+
getSessionsForIssue(issueId: string): Session[];
|
|
20
24
|
/**
|
|
21
|
-
*
|
|
25
|
+
* Check if a session exists for a comment ID
|
|
22
26
|
*/
|
|
23
|
-
|
|
27
|
+
hasSession(commentId: string): boolean;
|
|
24
28
|
/**
|
|
25
|
-
*
|
|
29
|
+
* Check if any sessions exist for an issue ID
|
|
30
|
+
*/
|
|
31
|
+
hasSessionsForIssue(issueId: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Remove a session by comment ID
|
|
34
|
+
*/
|
|
35
|
+
removeSession(commentId: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Remove all sessions for an issue ID
|
|
38
|
+
*/
|
|
39
|
+
removeSessionsForIssue(issueId: string): number;
|
|
40
|
+
/**
|
|
41
|
+
* Get all sessions (by comment ID)
|
|
26
42
|
*/
|
|
27
43
|
getAllSessions(): Map<string, Session>;
|
|
28
44
|
/**
|
|
29
|
-
*
|
|
45
|
+
* Get all sessions grouped by issue ID
|
|
46
|
+
*/
|
|
47
|
+
getAllSessionsByIssue(): Map<string, Session[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Update a session by comment ID
|
|
30
50
|
*/
|
|
31
|
-
updateSession(
|
|
51
|
+
updateSession(commentId: string, session: Session): boolean;
|
|
32
52
|
/**
|
|
33
53
|
* Get all active sessions
|
|
34
54
|
*/
|
|
35
55
|
getActiveSessions(): Array<[string, Session]>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all active sessions for a specific issue
|
|
58
|
+
*/
|
|
59
|
+
getActiveSessionsForIssue(issueId: string): Session[];
|
|
36
60
|
/**
|
|
37
61
|
* Count active sessions
|
|
38
62
|
*/
|
|
39
63
|
countActiveSessions(): number;
|
|
64
|
+
/**
|
|
65
|
+
* Count active sessions for a specific issue
|
|
66
|
+
*/
|
|
67
|
+
countActiveSessionsForIssue(issueId: string): number;
|
|
68
|
+
/**
|
|
69
|
+
* Serialize sessions to a format suitable for persistence
|
|
70
|
+
*/
|
|
71
|
+
serializeSessions(): {
|
|
72
|
+
sessionsByCommentId: Record<string, SerializableSession>;
|
|
73
|
+
sessionsByIssueId: Record<string, SerializableSession[]>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Restore sessions from serialized data
|
|
77
|
+
*/
|
|
78
|
+
deserializeSessions(data: {
|
|
79
|
+
sessionsByCommentId: Record<string, SerializableSession>;
|
|
80
|
+
sessionsByIssueId: Record<string, SerializableSession[]>;
|
|
81
|
+
}): void;
|
|
82
|
+
/**
|
|
83
|
+
* Convert a Session to SerializableSession
|
|
84
|
+
*/
|
|
85
|
+
private serializeSession;
|
|
86
|
+
/**
|
|
87
|
+
* Convert a SerializableSession to Session
|
|
88
|
+
*/
|
|
89
|
+
private deserializeSession;
|
|
40
90
|
}
|
|
41
91
|
//# sourceMappingURL=SessionManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAElE;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,iBAAiB,CAAwB;gBAGrC,mBAAmB,CAAC,EAAE,kBAAkB;IAMpD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAWrD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIlD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;IAI/C;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI7C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAuBzC;;OAEG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAmB/C;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAItC;;OAEG;IACH,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAI/C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IAW3D;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI7C;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE;IAIrD;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpD;;OAEG;IACH,iBAAiB,IAAI;QAAE,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;KAAE;IAiB3I;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE;QAAE,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;KAAE,GAAG,IAAI;IAkBvJ;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAsB3B"}
|
package/dist/SessionManager.js
CHANGED
|
@@ -1,56 +1,130 @@
|
|
|
1
|
+
import { Session } from './Session.js';
|
|
1
2
|
/**
|
|
2
3
|
* Manages active Claude sessions
|
|
4
|
+
* Now supports comment-based session mapping (one session per comment thread)
|
|
3
5
|
*/
|
|
4
6
|
export class SessionManager {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
sessionsByCommentId;
|
|
8
|
+
sessionsByIssueId;
|
|
9
|
+
// private persistenceManager: PersistenceManager // Reserved for future use
|
|
10
|
+
constructor(_persistenceManager) {
|
|
11
|
+
this.sessionsByCommentId = new Map();
|
|
12
|
+
this.sessionsByIssueId = new Map();
|
|
13
|
+
// this.persistenceManager = persistenceManager || new PersistenceManager() // Reserved for future use
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
|
-
* Add a session
|
|
16
|
+
* Add a session by comment ID (primary method)
|
|
11
17
|
*/
|
|
12
|
-
addSession(
|
|
13
|
-
this.
|
|
18
|
+
addSession(commentId, session) {
|
|
19
|
+
this.sessionsByCommentId.set(commentId, session);
|
|
20
|
+
// Also maintain issue ID mapping for lookup
|
|
21
|
+
const issueId = session.issue.id;
|
|
22
|
+
if (!this.sessionsByIssueId.has(issueId)) {
|
|
23
|
+
this.sessionsByIssueId.set(issueId, []);
|
|
24
|
+
}
|
|
25
|
+
this.sessionsByIssueId.get(issueId).push(session);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get a session by comment ID
|
|
29
|
+
*/
|
|
30
|
+
getSession(commentId) {
|
|
31
|
+
return this.sessionsByCommentId.get(commentId);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all sessions for an issue ID
|
|
35
|
+
*/
|
|
36
|
+
getSessionsForIssue(issueId) {
|
|
37
|
+
return this.sessionsByIssueId.get(issueId) || [];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if a session exists for a comment ID
|
|
41
|
+
*/
|
|
42
|
+
hasSession(commentId) {
|
|
43
|
+
return this.sessionsByCommentId.has(commentId);
|
|
14
44
|
}
|
|
15
45
|
/**
|
|
16
|
-
*
|
|
46
|
+
* Check if any sessions exist for an issue ID
|
|
17
47
|
*/
|
|
18
|
-
|
|
19
|
-
return this.
|
|
48
|
+
hasSessionsForIssue(issueId) {
|
|
49
|
+
return this.sessionsByIssueId.has(issueId) && this.sessionsByIssueId.get(issueId).length > 0;
|
|
20
50
|
}
|
|
21
51
|
/**
|
|
22
|
-
*
|
|
52
|
+
* Remove a session by comment ID
|
|
23
53
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
54
|
+
removeSession(commentId) {
|
|
55
|
+
const session = this.sessionsByCommentId.get(commentId);
|
|
56
|
+
if (!session)
|
|
57
|
+
return false;
|
|
58
|
+
// Remove from comment mapping
|
|
59
|
+
this.sessionsByCommentId.delete(commentId);
|
|
60
|
+
// Remove from issue mapping
|
|
61
|
+
const issueId = session.issue.id;
|
|
62
|
+
const issueSessions = this.sessionsByIssueId.get(issueId);
|
|
63
|
+
if (issueSessions) {
|
|
64
|
+
const index = issueSessions.indexOf(session);
|
|
65
|
+
if (index !== -1) {
|
|
66
|
+
issueSessions.splice(index, 1);
|
|
67
|
+
if (issueSessions.length === 0) {
|
|
68
|
+
this.sessionsByIssueId.delete(issueId);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
26
73
|
}
|
|
27
74
|
/**
|
|
28
|
-
* Remove
|
|
75
|
+
* Remove all sessions for an issue ID
|
|
29
76
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
77
|
+
removeSessionsForIssue(issueId) {
|
|
78
|
+
const sessions = this.sessionsByIssueId.get(issueId) || [];
|
|
79
|
+
let removedCount = 0;
|
|
80
|
+
for (const session of sessions) {
|
|
81
|
+
// Find the comment ID for this session
|
|
82
|
+
for (const [commentId, sessionObj] of this.sessionsByCommentId.entries()) {
|
|
83
|
+
if (sessionObj === session) {
|
|
84
|
+
this.sessionsByCommentId.delete(commentId);
|
|
85
|
+
removedCount++;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
this.sessionsByIssueId.delete(issueId);
|
|
91
|
+
return removedCount;
|
|
32
92
|
}
|
|
33
93
|
/**
|
|
34
|
-
* Get all sessions
|
|
94
|
+
* Get all sessions (by comment ID)
|
|
35
95
|
*/
|
|
36
96
|
getAllSessions() {
|
|
37
|
-
return this.
|
|
97
|
+
return this.sessionsByCommentId;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get all sessions grouped by issue ID
|
|
101
|
+
*/
|
|
102
|
+
getAllSessionsByIssue() {
|
|
103
|
+
return this.sessionsByIssueId;
|
|
38
104
|
}
|
|
39
105
|
/**
|
|
40
|
-
* Update a session
|
|
106
|
+
* Update a session by comment ID
|
|
41
107
|
*/
|
|
42
|
-
updateSession(
|
|
43
|
-
if (!this.
|
|
108
|
+
updateSession(commentId, session) {
|
|
109
|
+
if (!this.sessionsByCommentId.has(commentId)) {
|
|
44
110
|
return false;
|
|
45
111
|
}
|
|
46
|
-
|
|
112
|
+
// Remove old session and add new one to maintain consistency
|
|
113
|
+
this.removeSession(commentId);
|
|
114
|
+
this.addSession(commentId, session);
|
|
47
115
|
return true;
|
|
48
116
|
}
|
|
49
117
|
/**
|
|
50
118
|
* Get all active sessions
|
|
51
119
|
*/
|
|
52
120
|
getActiveSessions() {
|
|
53
|
-
return Array.from(this.
|
|
121
|
+
return Array.from(this.sessionsByCommentId.entries()).filter(([_, session]) => session.isActive());
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get all active sessions for a specific issue
|
|
125
|
+
*/
|
|
126
|
+
getActiveSessionsForIssue(issueId) {
|
|
127
|
+
return this.getSessionsForIssue(issueId).filter(session => session.isActive());
|
|
54
128
|
}
|
|
55
129
|
/**
|
|
56
130
|
* Count active sessions
|
|
@@ -58,5 +132,91 @@ export class SessionManager {
|
|
|
58
132
|
countActiveSessions() {
|
|
59
133
|
return this.getActiveSessions().length;
|
|
60
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Count active sessions for a specific issue
|
|
137
|
+
*/
|
|
138
|
+
countActiveSessionsForIssue(issueId) {
|
|
139
|
+
return this.getActiveSessionsForIssue(issueId).length;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Serialize sessions to a format suitable for persistence
|
|
143
|
+
*/
|
|
144
|
+
serializeSessions() {
|
|
145
|
+
const sessionsByCommentId = {};
|
|
146
|
+
const sessionsByIssueId = {};
|
|
147
|
+
// Serialize sessionsByCommentId
|
|
148
|
+
for (const [commentId, session] of this.sessionsByCommentId.entries()) {
|
|
149
|
+
sessionsByCommentId[commentId] = this.serializeSession(session);
|
|
150
|
+
}
|
|
151
|
+
// Serialize sessionsByIssueId
|
|
152
|
+
for (const [issueId, sessions] of this.sessionsByIssueId.entries()) {
|
|
153
|
+
sessionsByIssueId[issueId] = sessions.map(session => this.serializeSession(session));
|
|
154
|
+
}
|
|
155
|
+
return { sessionsByCommentId, sessionsByIssueId };
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Restore sessions from serialized data
|
|
159
|
+
*/
|
|
160
|
+
deserializeSessions(data) {
|
|
161
|
+
// Clear existing sessions
|
|
162
|
+
this.sessionsByCommentId.clear();
|
|
163
|
+
this.sessionsByIssueId.clear();
|
|
164
|
+
// Restore sessionsByCommentId
|
|
165
|
+
for (const [commentId, serializedSession] of Object.entries(data.sessionsByCommentId)) {
|
|
166
|
+
const session = this.deserializeSession(serializedSession);
|
|
167
|
+
this.sessionsByCommentId.set(commentId, session);
|
|
168
|
+
}
|
|
169
|
+
// Restore sessionsByIssueId
|
|
170
|
+
for (const [issueId, serializedSessions] of Object.entries(data.sessionsByIssueId)) {
|
|
171
|
+
const sessions = serializedSessions.map(serializedSession => this.deserializeSession(serializedSession));
|
|
172
|
+
this.sessionsByIssueId.set(issueId, sessions);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Convert a Session to SerializableSession
|
|
177
|
+
*/
|
|
178
|
+
serializeSession(session) {
|
|
179
|
+
return {
|
|
180
|
+
issueId: session.issue.id,
|
|
181
|
+
issueIdentifier: session.issue.identifier,
|
|
182
|
+
issueTitle: session.issue.title,
|
|
183
|
+
branchName: session.issue.getBranchName(),
|
|
184
|
+
workspacePath: session.workspace.path,
|
|
185
|
+
isGitWorktree: session.workspace.isGitWorktree,
|
|
186
|
+
historyPath: session.workspace.historyPath,
|
|
187
|
+
claudeSessionId: session.claudeSessionId,
|
|
188
|
+
agentRootCommentId: session.agentRootCommentId,
|
|
189
|
+
lastCommentId: session.lastCommentId,
|
|
190
|
+
currentParentId: session.currentParentId,
|
|
191
|
+
startedAt: session.startedAt.toISOString(),
|
|
192
|
+
exitedAt: session.exitedAt?.toISOString() || null,
|
|
193
|
+
conversationContext: session.conversationContext
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Convert a SerializableSession to Session
|
|
198
|
+
*/
|
|
199
|
+
deserializeSession(serializedSession) {
|
|
200
|
+
return new Session({
|
|
201
|
+
issue: {
|
|
202
|
+
id: serializedSession.issueId,
|
|
203
|
+
identifier: serializedSession.issueIdentifier,
|
|
204
|
+
title: serializedSession.issueTitle,
|
|
205
|
+
getBranchName: () => serializedSession.branchName
|
|
206
|
+
},
|
|
207
|
+
workspace: {
|
|
208
|
+
path: serializedSession.workspacePath,
|
|
209
|
+
isGitWorktree: serializedSession.isGitWorktree,
|
|
210
|
+
historyPath: serializedSession.historyPath
|
|
211
|
+
},
|
|
212
|
+
claudeSessionId: serializedSession.claudeSessionId,
|
|
213
|
+
agentRootCommentId: serializedSession.agentRootCommentId,
|
|
214
|
+
lastCommentId: serializedSession.lastCommentId,
|
|
215
|
+
currentParentId: serializedSession.currentParentId,
|
|
216
|
+
startedAt: serializedSession.startedAt,
|
|
217
|
+
exitedAt: serializedSession.exitedAt,
|
|
218
|
+
conversationContext: serializedSession.conversationContext
|
|
219
|
+
});
|
|
220
|
+
}
|
|
61
221
|
}
|
|
62
222
|
//# sourceMappingURL=SessionManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { Session } from './Session.js';
|
|
2
2
|
export type { SessionOptions, Issue, Workspace, NarrativeItem } from './Session.js';
|
|
3
3
|
export { SessionManager } from './SessionManager.js';
|
|
4
|
+
export { PersistenceManager } from './PersistenceManager.js';
|
|
5
|
+
export type { SerializableSession, SerializableEdgeWorkerState } from './PersistenceManager.js';
|
|
4
6
|
export type { LinearWebhookTeam, LinearWebhookIssue, LinearWebhookComment, LinearWebhookActor, LinearWebhookNotification, LinearIssueAssignedNotification, LinearIssueCommentMentionNotification, LinearIssueNewCommentNotification, LinearIssueUnassignedNotification, LinearWebhook, LinearIssueAssignedWebhook, LinearIssueCommentMentionWebhook, LinearIssueNewCommentWebhook, LinearIssueUnassignedWebhook } from './webhook-types.js';
|
|
5
7
|
export { isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook } from './webhook-types.js';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,YAAY,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAG/F,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,+BAA+B,EAC/B,qCAAqC,EACrC,iCAAiC,EACjC,iCAAiC,EACjC,aAAa,EACb,0BAA0B,EAC1B,gCAAgC,EAChC,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { Session } from './Session.js';
|
|
2
2
|
export { SessionManager } from './SessionManager.js';
|
|
3
|
+
export { PersistenceManager } from './PersistenceManager.js';
|
|
3
4
|
export { isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook } from './webhook-types.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAqB5D,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,oBAAoB,CAAA"}
|