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.
@@ -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 an issue
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
- constructor({ issue, workspace, process, startedAt, exitCode, exitedAt, stderrContent, lastAssistantResponse, lastCommentId, conversationContext, agentRootCommentId, currentParentId, streamingCommentId, streamingSynthesis, streamingNarrative, }: SessionOptions);
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
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Session.d.ts","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"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"}
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 an issue
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
- 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 = [], }) {
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
@@ -1 +1 @@
1
- {"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Session.js","sourceRoot":"","sources":["../src/Session.ts"],"names":[],"mappings":"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"}
@@ -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 sessions;
7
- constructor();
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(issueId: string, session: Session): void;
15
+ addSession(commentId: string, session: Session): void;
12
16
  /**
13
- * Get a session
17
+ * Get a session by comment ID
14
18
  */
15
- getSession(issueId: string): Session | undefined;
19
+ getSession(commentId: string): Session | undefined;
16
20
  /**
17
- * Check if a session exists
21
+ * Get all sessions for an issue ID
18
22
  */
19
- hasSession(issueId: string): boolean;
23
+ getSessionsForIssue(issueId: string): Session[];
20
24
  /**
21
- * Remove a session
25
+ * Check if a session exists for a comment ID
22
26
  */
23
- removeSession(issueId: string): boolean;
27
+ hasSession(commentId: string): boolean;
24
28
  /**
25
- * Get all sessions
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
- * Update a session
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(issueId: string, session: Session): boolean;
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;AAEtC;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAsB;;IAMtC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAInD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIhD;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAItC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO;IASzD;;OAEG;IACH,iBAAiB,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI7C;;OAEG;IACH,mBAAmB,IAAI,MAAM;CAG9B"}
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"}
@@ -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
- sessions;
6
- constructor() {
7
- this.sessions = new Map();
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(issueId, session) {
13
- this.sessions.set(issueId, session);
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
- * Get a session
46
+ * Check if any sessions exist for an issue ID
17
47
  */
18
- getSession(issueId) {
19
- return this.sessions.get(issueId);
48
+ hasSessionsForIssue(issueId) {
49
+ return this.sessionsByIssueId.has(issueId) && this.sessionsByIssueId.get(issueId).length > 0;
20
50
  }
21
51
  /**
22
- * Check if a session exists
52
+ * Remove a session by comment ID
23
53
  */
24
- hasSession(issueId) {
25
- return this.sessions.has(issueId);
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 a session
75
+ * Remove all sessions for an issue ID
29
76
  */
30
- removeSession(issueId) {
31
- return this.sessions.delete(issueId);
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.sessions;
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(issueId, session) {
43
- if (!this.sessions.has(issueId)) {
108
+ updateSession(commentId, session) {
109
+ if (!this.sessionsByCommentId.has(commentId)) {
44
110
  return false;
45
111
  }
46
- this.sessions.set(issueId, session);
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.sessions.entries()).filter(([_, session]) => session.isActive());
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":"AAEA;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,QAAQ,CAAsB;IAEtC;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe,EAAE,OAAgB;QAC1C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe,EAAE,OAAgB;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzF,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAA;IACxC,CAAC;CACF"}
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
@@ -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;AAGpD,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"}
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;AAoBpD,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,oBAAoB,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyrus-core",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "Core business logic for Cyrus",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",