cyrus-edge-worker 0.2.21 → 0.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/ActivityPoster.d.ts +15 -0
  2. package/dist/ActivityPoster.d.ts.map +1 -0
  3. package/dist/ActivityPoster.js +194 -0
  4. package/dist/ActivityPoster.js.map +1 -0
  5. package/dist/AgentSessionManager.d.ts +63 -21
  6. package/dist/AgentSessionManager.d.ts.map +1 -1
  7. package/dist/AgentSessionManager.js +413 -404
  8. package/dist/AgentSessionManager.js.map +1 -1
  9. package/dist/AskUserQuestionHandler.d.ts +3 -2
  10. package/dist/AskUserQuestionHandler.d.ts.map +1 -1
  11. package/dist/AskUserQuestionHandler.js +15 -12
  12. package/dist/AskUserQuestionHandler.js.map +1 -1
  13. package/dist/AttachmentService.d.ts +69 -0
  14. package/dist/AttachmentService.d.ts.map +1 -0
  15. package/dist/AttachmentService.js +369 -0
  16. package/dist/AttachmentService.js.map +1 -0
  17. package/dist/ChatSessionHandler.d.ts +87 -0
  18. package/dist/ChatSessionHandler.d.ts.map +1 -0
  19. package/dist/ChatSessionHandler.js +227 -0
  20. package/dist/ChatSessionHandler.js.map +1 -0
  21. package/dist/ConfigManager.d.ts +91 -0
  22. package/dist/ConfigManager.d.ts.map +1 -0
  23. package/dist/ConfigManager.js +229 -0
  24. package/dist/ConfigManager.js.map +1 -0
  25. package/dist/EdgeWorker.d.ts +152 -120
  26. package/dist/EdgeWorker.d.ts.map +1 -1
  27. package/dist/EdgeWorker.js +1335 -2125
  28. package/dist/EdgeWorker.js.map +1 -1
  29. package/dist/GitService.d.ts +14 -10
  30. package/dist/GitService.d.ts.map +1 -1
  31. package/dist/GitService.js +91 -12
  32. package/dist/GitService.js.map +1 -1
  33. package/dist/GlobalSessionRegistry.d.ts +142 -0
  34. package/dist/GlobalSessionRegistry.d.ts.map +1 -0
  35. package/dist/GlobalSessionRegistry.js +254 -0
  36. package/dist/GlobalSessionRegistry.js.map +1 -0
  37. package/dist/PromptBuilder.d.ts +182 -0
  38. package/dist/PromptBuilder.d.ts.map +1 -0
  39. package/dist/PromptBuilder.js +963 -0
  40. package/dist/PromptBuilder.js.map +1 -0
  41. package/dist/RepositoryRouter.d.ts +3 -2
  42. package/dist/RepositoryRouter.d.ts.map +1 -1
  43. package/dist/RepositoryRouter.js +39 -37
  44. package/dist/RepositoryRouter.js.map +1 -1
  45. package/dist/RunnerSelectionService.d.ts +71 -0
  46. package/dist/RunnerSelectionService.d.ts.map +1 -0
  47. package/dist/RunnerSelectionService.js +392 -0
  48. package/dist/RunnerSelectionService.js.map +1 -0
  49. package/dist/SharedApplicationServer.d.ts +3 -1
  50. package/dist/SharedApplicationServer.d.ts.map +1 -1
  51. package/dist/SharedApplicationServer.js +21 -17
  52. package/dist/SharedApplicationServer.js.map +1 -1
  53. package/dist/SharedWebhookServer.d.ts +3 -1
  54. package/dist/SharedWebhookServer.d.ts.map +1 -1
  55. package/dist/SharedWebhookServer.js +19 -16
  56. package/dist/SharedWebhookServer.js.map +1 -1
  57. package/dist/SlackChatAdapter.d.ts +25 -0
  58. package/dist/SlackChatAdapter.d.ts.map +1 -0
  59. package/dist/SlackChatAdapter.js +163 -0
  60. package/dist/SlackChatAdapter.js.map +1 -0
  61. package/dist/WorktreeIncludeService.d.ts +2 -9
  62. package/dist/WorktreeIncludeService.d.ts.map +1 -1
  63. package/dist/WorktreeIncludeService.js +3 -9
  64. package/dist/WorktreeIncludeService.js.map +1 -1
  65. package/dist/index.d.ts +7 -2
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +4 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/label-prompt-template.md +6 -2
  70. package/dist/procedures/ProcedureAnalyzer.d.ts +6 -4
  71. package/dist/procedures/ProcedureAnalyzer.d.ts.map +1 -1
  72. package/dist/procedures/ProcedureAnalyzer.js +32 -12
  73. package/dist/procedures/ProcedureAnalyzer.js.map +1 -1
  74. package/dist/procedures/registry.d.ts +19 -19
  75. package/dist/procedures/registry.d.ts.map +1 -1
  76. package/dist/procedures/registry.js +19 -19
  77. package/dist/procedures/registry.js.map +1 -1
  78. package/dist/procedures/types.d.ts +1 -0
  79. package/dist/procedures/types.d.ts.map +1 -1
  80. package/dist/prompt-assembly/types.d.ts +2 -0
  81. package/dist/prompt-assembly/types.d.ts.map +1 -1
  82. package/dist/prompts/graphite-orchestrator.md +4 -2
  83. package/dist/prompts/orchestrator.md +5 -3
  84. package/dist/prompts/standard-issue-assigned-user-prompt.md +7 -0
  85. package/dist/prompts/subroutines/gh-pr.md +12 -0
  86. package/dist/sinks/IActivitySink.d.ts +60 -0
  87. package/dist/sinks/IActivitySink.d.ts.map +1 -0
  88. package/dist/sinks/IActivitySink.js +2 -0
  89. package/dist/sinks/IActivitySink.js.map +1 -0
  90. package/dist/sinks/LinearActivitySink.d.ts +69 -0
  91. package/dist/sinks/LinearActivitySink.d.ts.map +1 -0
  92. package/dist/sinks/LinearActivitySink.js +111 -0
  93. package/dist/sinks/LinearActivitySink.js.map +1 -0
  94. package/dist/sinks/NoopActivitySink.d.ts +13 -0
  95. package/dist/sinks/NoopActivitySink.d.ts.map +1 -0
  96. package/dist/sinks/NoopActivitySink.js +17 -0
  97. package/dist/sinks/NoopActivitySink.js.map +1 -0
  98. package/dist/sinks/index.d.ts +9 -0
  99. package/dist/sinks/index.d.ts.map +1 -0
  100. package/dist/sinks/index.js +8 -0
  101. package/dist/sinks/index.js.map +1 -0
  102. package/label-prompt-template.md +6 -2
  103. package/package.json +17 -11
  104. package/prompts/graphite-orchestrator.md +4 -2
  105. package/prompts/orchestrator.md +5 -3
  106. package/prompts/standard-issue-assigned-user-prompt.md +7 -0
@@ -1,20 +1,12 @@
1
1
  import type { Issue, RepositoryConfig, Workspace } from "cyrus-core";
2
- /**
3
- * Logger interface for GitService
4
- * Allows consumers to provide their own logging implementation
5
- */
6
- export interface GitServiceLogger {
7
- info(message: string, ...args: unknown[]): void;
8
- warn(message: string, ...args: unknown[]): void;
9
- error(message: string, ...args: unknown[]): void;
10
- }
2
+ import { type ILogger } from "cyrus-core";
11
3
  /**
12
4
  * Service responsible for Git worktree operations
13
5
  */
14
6
  export declare class GitService {
15
7
  private logger;
16
8
  private worktreeIncludeService;
17
- constructor(logger?: GitServiceLogger);
9
+ constructor(logger?: ILogger);
18
10
  /**
19
11
  * Check if a branch exists locally or remotely
20
12
  */
@@ -23,10 +15,22 @@ export declare class GitService {
23
15
  * Sanitize branch name by removing backticks to prevent command injection
24
16
  */
25
17
  sanitizeBranchName(name: string): string;
18
+ /**
19
+ * Resolve mutable Git metadata directories for a repository/worktree.
20
+ * This includes linked worktree metadata paths (for example
21
+ * `.git/worktrees/<name>/FETCH_HEAD`) that must be writable by sandboxes.
22
+ */
23
+ getGitMetadataDirectories(workingDirectory: string): string[];
26
24
  /**
27
25
  * Run a setup script with proper error handling and logging
28
26
  */
29
27
  private runSetupScript;
28
+ /**
29
+ * Find an existing worktree by its checked-out branch name.
30
+ * Parses `git worktree list --porcelain` output and returns the worktree path
31
+ * if a worktree is found with the given branch checked out, or null otherwise.
32
+ */
33
+ findWorktreeByBranch(branchName: string, repoPath: string): string | null;
30
34
  /**
31
35
  * Create a git worktree for an issue
32
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../src/GitService.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGrE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAChC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjD;AAcD;;GAEG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,sBAAsB,CAAyB;gBAE3C,MAAM,CAAC,EAAE,gBAAgB;IAIrC;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B1E;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/C;;OAEG;YACW,cAAc;IA4F5B;;OAEG;IACG,iBAAiB,CACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,gBAAgB,EAC5B,iBAAiB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,SAAS,CAAC;CA2RrB"}
1
+ {"version":3,"file":"GitService.d.ts","sourceRoot":"","sources":["../src/GitService.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAGxD;;GAEG;AACH,qBAAa,UAAU;IACtB,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,sBAAsB,CAAyB;gBAE3C,MAAM,CAAC,EAAE,OAAO;IAI5B;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0B1E;;OAEG;IACI,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI/C;;;;OAIG;IACI,yBAAyB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE;IA8BpE;;OAEG;YACW,cAAc;IA4F5B;;;;OAIG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAgCzE;;OAEG;IACG,iBAAiB,CACtB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,gBAAgB,EAC5B,iBAAiB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,SAAS,CAAC;CA0TrB"}
@@ -1,16 +1,9 @@
1
1
  import { execSync } from "node:child_process";
2
2
  import { existsSync, mkdirSync, statSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
- import { basename, join } from "node:path";
4
+ import { basename, join, resolve as pathResolve } from "node:path";
5
+ import { createLogger } from "cyrus-core";
5
6
  import { WorktreeIncludeService } from "./WorktreeIncludeService.js";
6
- /**
7
- * Default console-based logger implementation
8
- */
9
- const defaultLogger = {
10
- info: (message, ...args) => console.log(`[GitService] ${message}`, ...args),
11
- warn: (message, ...args) => console.warn(`[GitService] ${message}`, ...args),
12
- error: (message, ...args) => console.error(`[GitService] ${message}`, ...args),
13
- };
14
7
  /**
15
8
  * Service responsible for Git worktree operations
16
9
  */
@@ -18,7 +11,7 @@ export class GitService {
18
11
  logger;
19
12
  worktreeIncludeService;
20
13
  constructor(logger) {
21
- this.logger = logger ?? defaultLogger;
14
+ this.logger = logger ?? createLogger({ component: "GitService" });
22
15
  this.worktreeIncludeService = new WorktreeIncludeService(this.logger);
23
16
  }
24
17
  /**
@@ -54,6 +47,36 @@ export class GitService {
54
47
  sanitizeBranchName(name) {
55
48
  return name ? name.replace(/`/g, "") : name;
56
49
  }
50
+ /**
51
+ * Resolve mutable Git metadata directories for a repository/worktree.
52
+ * This includes linked worktree metadata paths (for example
53
+ * `.git/worktrees/<name>/FETCH_HEAD`) that must be writable by sandboxes.
54
+ */
55
+ getGitMetadataDirectories(workingDirectory) {
56
+ const resolvedDirectories = new Set();
57
+ const revParse = (flag) => {
58
+ try {
59
+ const output = execSync(`git rev-parse ${flag}`, {
60
+ cwd: workingDirectory,
61
+ encoding: "utf8",
62
+ stdio: "pipe",
63
+ }).trim();
64
+ return output ? pathResolve(workingDirectory, output) : null;
65
+ }
66
+ catch {
67
+ return null;
68
+ }
69
+ };
70
+ const gitDir = revParse("--git-dir");
71
+ if (gitDir) {
72
+ resolvedDirectories.add(gitDir);
73
+ }
74
+ const gitCommonDir = revParse("--git-common-dir");
75
+ if (gitCommonDir) {
76
+ resolvedDirectories.add(gitCommonDir);
77
+ }
78
+ return [...resolvedDirectories];
79
+ }
57
80
  /**
58
81
  * Run a setup script with proper error handling and logging
59
82
  */
@@ -127,6 +150,40 @@ export class GitService {
127
150
  this.logger.info(` Continuing with worktree creation...`);
128
151
  }
129
152
  }
153
+ /**
154
+ * Find an existing worktree by its checked-out branch name.
155
+ * Parses `git worktree list --porcelain` output and returns the worktree path
156
+ * if a worktree is found with the given branch checked out, or null otherwise.
157
+ */
158
+ findWorktreeByBranch(branchName, repoPath) {
159
+ try {
160
+ const output = execSync("git worktree list --porcelain", {
161
+ cwd: repoPath,
162
+ encoding: "utf-8",
163
+ });
164
+ const blocks = output.split("\n\n");
165
+ for (const block of blocks) {
166
+ const lines = block.split("\n");
167
+ let worktreePath = null;
168
+ let branchRef = null;
169
+ for (const line of lines) {
170
+ if (line.startsWith("worktree ")) {
171
+ worktreePath = line.slice("worktree ".length);
172
+ }
173
+ else if (line.startsWith("branch ")) {
174
+ branchRef = line.slice("branch refs/heads/".length);
175
+ }
176
+ }
177
+ if (worktreePath && branchRef === branchName) {
178
+ return worktreePath;
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ }
130
187
  /**
131
188
  * Create a git worktree for an issue
132
189
  */
@@ -182,6 +239,17 @@ export class GitService {
182
239
  catch (_e) {
183
240
  // Branch doesn't exist, we'll create it
184
241
  }
242
+ // If the branch already exists, check if it's already checked out in another worktree
243
+ if (!createBranch) {
244
+ const existingWorktreePath = this.findWorktreeByBranch(branchName, repository.repositoryPath);
245
+ if (existingWorktreePath && existingWorktreePath !== workspacePath) {
246
+ this.logger.info(`Branch "${branchName}" is already checked out in worktree at ${existingWorktreePath}, reusing existing worktree`);
247
+ return {
248
+ path: existingWorktreePath,
249
+ isGitWorktree: true,
250
+ };
251
+ }
252
+ }
185
253
  // Determine base branch for this issue
186
254
  let baseBranch = repository.baseBranch;
187
255
  // Check if issue has a parent
@@ -212,7 +280,7 @@ export class GitService {
212
280
  this.logger.info(`No parent issue found for ${issue.identifier}, using default base branch '${repository.baseBranch}'`);
213
281
  }
214
282
  // Fetch latest changes from remote
215
- this.logger.info("Fetching latest changes from remote...");
283
+ this.logger.debug("Fetching latest changes from remote...");
216
284
  let hasRemote = true;
217
285
  try {
218
286
  execSync("git fetch origin", {
@@ -339,7 +407,18 @@ export class GitService {
339
407
  };
340
408
  }
341
409
  catch (error) {
342
- this.logger.error("Failed to create git worktree:", error.message);
410
+ const errorMessage = error.message;
411
+ this.logger.error("Failed to create git worktree:", errorMessage);
412
+ // Check if the error is "branch already checked out in another worktree"
413
+ // Git error format: "fatal: 'branch-name' is already used by worktree at '/path/to/worktree'"
414
+ const worktreeMatch = errorMessage.match(/already used by worktree at '([^']+)'/);
415
+ if (worktreeMatch?.[1] && existsSync(worktreeMatch[1])) {
416
+ this.logger.info(`Reusing existing worktree at ${worktreeMatch[1]} (branch already checked out)`);
417
+ return {
418
+ path: worktreeMatch[1],
419
+ isGitWorktree: true,
420
+ };
421
+ }
343
422
  // Fall back to regular directory if git worktree fails
344
423
  const fallbackPath = join(repository.workspaceBaseDir, issue.identifier);
345
424
  mkdirSync(fallbackPath, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"GitService.js","sourceRoot":"","sources":["../src/GitService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GitService.js","sourceRoot":"","sources":["../src/GitService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * GlobalSessionRegistry - Centralized session storage across all repositories
3
+ *
4
+ * This is Phase 1 of the CYPACK-724 architectural refactor.
5
+ * Replaces per-repository session storage in AgentSessionManager with a global registry
6
+ * that enables cross-repository session lookups (e.g., parent orchestrator in Repo A
7
+ * creating child issues in Repo B).
8
+ */
9
+ import { EventEmitter } from "node:events";
10
+ import type { CyrusAgentSession, CyrusAgentSessionEntry, SerializedCyrusAgentSession, SerializedCyrusAgentSessionEntry } from "cyrus-core";
11
+ /**
12
+ * Serialization format for GlobalSessionRegistry state
13
+ * Version 3.0 to distinguish from previous per-repository format (v2.0)
14
+ */
15
+ export interface SerializedGlobalRegistryState {
16
+ version: "3.0";
17
+ sessions: Record<string, SerializedCyrusAgentSession>;
18
+ entries: Record<string, SerializedCyrusAgentSessionEntry[]>;
19
+ childToParentMap: Record<string, string>;
20
+ }
21
+ /**
22
+ * Events emitted by GlobalSessionRegistry
23
+ */
24
+ export interface GlobalSessionRegistryEvents {
25
+ sessionCreated: (session: CyrusAgentSession) => void;
26
+ sessionUpdated: (sessionId: string, session: CyrusAgentSession, updates: Partial<CyrusAgentSession>) => void;
27
+ sessionCompleted: (sessionId: string, session: CyrusAgentSession) => void;
28
+ }
29
+ /**
30
+ * GlobalSessionRegistry centralizes all session storage across repositories.
31
+ *
32
+ * Responsibilities:
33
+ * - Store ALL CyrusAgentSession objects (all repos)
34
+ * - Store ALL CyrusAgentSessionEntry arrays (all repos)
35
+ * - Maintain parent-child session relationships
36
+ * - Emit lifecycle events for session changes
37
+ * - Support serialization/deserialization for persistence
38
+ * - Provide cleanup for old sessions
39
+ */
40
+ export declare class GlobalSessionRegistry extends EventEmitter {
41
+ /**
42
+ * All sessions keyed by session id
43
+ */
44
+ private sessions;
45
+ /**
46
+ * All entries keyed by session id
47
+ */
48
+ private entries;
49
+ /**
50
+ * Child session ID → parent session ID mapping
51
+ * Enables orchestrator workflows where parent (Repo A) creates child (Repo B)
52
+ */
53
+ private childToParentMap;
54
+ /**
55
+ * Create a new session in the registry
56
+ * @param session The session to create
57
+ * @throws Error if session with same ID already exists
58
+ */
59
+ createSession(session: CyrusAgentSession): void;
60
+ /**
61
+ * Get a session by ID
62
+ * @param sessionId The session id
63
+ * @returns The session or undefined if not found
64
+ */
65
+ getSession(sessionId: string): CyrusAgentSession | undefined;
66
+ /**
67
+ * Update a session with partial data
68
+ * @param sessionId The session id
69
+ * @param updates Partial session data to merge
70
+ * @throws Error if session doesn't exist
71
+ */
72
+ updateSession(sessionId: string, updates: Partial<CyrusAgentSession>): void;
73
+ /**
74
+ * Delete a session and its entries
75
+ * @param sessionId The session id
76
+ */
77
+ deleteSession(sessionId: string): void;
78
+ /**
79
+ * Get all sessions
80
+ * @returns Array of all sessions
81
+ */
82
+ getAllSessions(): CyrusAgentSession[];
83
+ /**
84
+ * Add an entry to a session's conversation history
85
+ * @param sessionId The session id
86
+ * @param entry The entry to add
87
+ * @throws Error if session doesn't exist
88
+ */
89
+ addEntry(sessionId: string, entry: CyrusAgentSessionEntry): void;
90
+ /**
91
+ * Get all entries for a session
92
+ * @param sessionId The session id
93
+ * @returns Array of entries (empty if session has no entries or doesn't exist)
94
+ */
95
+ getEntries(sessionId: string): CyrusAgentSessionEntry[];
96
+ /**
97
+ * Update an entry in a session's conversation history
98
+ * @param sessionId The session id
99
+ * @param entryIndex The index of the entry to update (0-based)
100
+ * @param updates Partial entry data to merge
101
+ * @throws Error if session doesn't exist or index out of bounds
102
+ */
103
+ updateEntry(sessionId: string, entryIndex: number, updates: Partial<CyrusAgentSessionEntry>): void;
104
+ /**
105
+ * Set parent session for a child session (orchestrator workflow)
106
+ * @param childSessionId The child's session id
107
+ * @param parentSessionId The parent's session id
108
+ */
109
+ setParentSession(childSessionId: string, parentSessionId: string): void;
110
+ /**
111
+ * Get parent session ID for a child session
112
+ * @param childSessionId The child's session id
113
+ * @returns The parent session ID or undefined if not found
114
+ */
115
+ getParentSessionId(childSessionId: string): string | undefined;
116
+ /**
117
+ * Get all child session IDs for a parent session
118
+ * @param parentSessionId The parent's session id
119
+ * @returns Array of child session IDs
120
+ */
121
+ getChildSessionIds(parentSessionId: string): string[];
122
+ /**
123
+ * Serialize the registry state for persistence
124
+ * Excludes non-serializable data like agentRunner instances
125
+ * @returns Serialized state
126
+ */
127
+ serializeState(): SerializedGlobalRegistryState;
128
+ /**
129
+ * Restore the registry state from serialized data
130
+ * Clears existing state before restoring
131
+ * @param state Serialized state to restore
132
+ */
133
+ restoreState(state: SerializedGlobalRegistryState): void;
134
+ /**
135
+ * Clean up old sessions based on age
136
+ * Removes sessions where updatedAt is older than maxAgeMs
137
+ * @param maxAgeMs Maximum age in milliseconds (sessions older than this are removed)
138
+ * @returns Number of sessions removed
139
+ */
140
+ cleanup(maxAgeMs: number): number;
141
+ }
142
+ //# sourceMappingURL=GlobalSessionRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalSessionRegistry.d.ts","sourceRoot":"","sources":["../src/GlobalSessionRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACX,iBAAiB,EACjB,sBAAsB,EACtB,2BAA2B,EAC3B,gCAAgC,EAChC,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC7C,OAAO,EAAE,KAAK,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACtD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gCAAgC,EAAE,CAAC,CAAC;IAC5D,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC3C,cAAc,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACrD,cAAc,EAAE,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,KAC/B,IAAI,CAAC;IACV,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC1E;AAED;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACtD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAA6C;IAE7D;;OAEG;IACH,OAAO,CAAC,OAAO,CAAoD;IAEnE;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAkC;IAE1D;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAW/C;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI5D;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAsB3E;;;OAGG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IActC;;;OAGG;IACH,cAAc,IAAI,iBAAiB,EAAE;IAIrC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,GAAG,IAAI;IAgBhE;;;;OAIG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,EAAE;IAIvD;;;;;;OAMG;IACH,WAAW,CACV,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACtC,IAAI;IA6BP;;;;OAIG;IACH,gBAAgB,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAIvE;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9D;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,EAAE;IAWrD;;;;OAIG;IACH,cAAc,IAAI,6BAA6B;IA0B/C;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI;IAsBxD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CAejC"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * GlobalSessionRegistry - Centralized session storage across all repositories
3
+ *
4
+ * This is Phase 1 of the CYPACK-724 architectural refactor.
5
+ * Replaces per-repository session storage in AgentSessionManager with a global registry
6
+ * that enables cross-repository session lookups (e.g., parent orchestrator in Repo A
7
+ * creating child issues in Repo B).
8
+ */
9
+ import { EventEmitter } from "node:events";
10
+ /**
11
+ * GlobalSessionRegistry centralizes all session storage across repositories.
12
+ *
13
+ * Responsibilities:
14
+ * - Store ALL CyrusAgentSession objects (all repos)
15
+ * - Store ALL CyrusAgentSessionEntry arrays (all repos)
16
+ * - Maintain parent-child session relationships
17
+ * - Emit lifecycle events for session changes
18
+ * - Support serialization/deserialization for persistence
19
+ * - Provide cleanup for old sessions
20
+ */
21
+ export class GlobalSessionRegistry extends EventEmitter {
22
+ /**
23
+ * All sessions keyed by session id
24
+ */
25
+ sessions = new Map();
26
+ /**
27
+ * All entries keyed by session id
28
+ */
29
+ entries = new Map();
30
+ /**
31
+ * Child session ID → parent session ID mapping
32
+ * Enables orchestrator workflows where parent (Repo A) creates child (Repo B)
33
+ */
34
+ childToParentMap = new Map();
35
+ /**
36
+ * Create a new session in the registry
37
+ * @param session The session to create
38
+ * @throws Error if session with same ID already exists
39
+ */
40
+ createSession(session) {
41
+ if (this.sessions.has(session.id)) {
42
+ throw new Error(`Session with ID ${session.id} already exists`);
43
+ }
44
+ this.sessions.set(session.id, session);
45
+ this.entries.set(session.id, []);
46
+ this.emit("sessionCreated", session);
47
+ }
48
+ /**
49
+ * Get a session by ID
50
+ * @param sessionId The session id
51
+ * @returns The session or undefined if not found
52
+ */
53
+ getSession(sessionId) {
54
+ return this.sessions.get(sessionId);
55
+ }
56
+ /**
57
+ * Update a session with partial data
58
+ * @param sessionId The session id
59
+ * @param updates Partial session data to merge
60
+ * @throws Error if session doesn't exist
61
+ */
62
+ updateSession(sessionId, updates) {
63
+ const session = this.sessions.get(sessionId);
64
+ if (!session) {
65
+ throw new Error(`Session with ID ${sessionId} not found`);
66
+ }
67
+ const oldStatus = session.status;
68
+ const updatedSession = { ...session, ...updates, updatedAt: Date.now() };
69
+ this.sessions.set(sessionId, updatedSession);
70
+ this.emit("sessionUpdated", sessionId, updatedSession, updates);
71
+ // Emit completion event if status changed to complete/error
72
+ if (oldStatus !== updatedSession.status &&
73
+ (updatedSession.status === "complete" ||
74
+ updatedSession.status === "error")) {
75
+ this.emit("sessionCompleted", sessionId, updatedSession);
76
+ }
77
+ }
78
+ /**
79
+ * Delete a session and its entries
80
+ * @param sessionId The session id
81
+ */
82
+ deleteSession(sessionId) {
83
+ this.sessions.delete(sessionId);
84
+ this.entries.delete(sessionId);
85
+ // Clean up any parent-child mappings
86
+ this.childToParentMap.delete(sessionId);
87
+ const childMappings = Array.from(this.childToParentMap.entries());
88
+ for (const [childId, parentId] of childMappings) {
89
+ if (parentId === sessionId) {
90
+ this.childToParentMap.delete(childId);
91
+ }
92
+ }
93
+ }
94
+ /**
95
+ * Get all sessions
96
+ * @returns Array of all sessions
97
+ */
98
+ getAllSessions() {
99
+ return Array.from(this.sessions.values());
100
+ }
101
+ /**
102
+ * Add an entry to a session's conversation history
103
+ * @param sessionId The session id
104
+ * @param entry The entry to add
105
+ * @throws Error if session doesn't exist
106
+ */
107
+ addEntry(sessionId, entry) {
108
+ if (!this.sessions.has(sessionId)) {
109
+ throw new Error(`Session with ID ${sessionId} not found`);
110
+ }
111
+ const sessionEntries = this.entries.get(sessionId) || [];
112
+ sessionEntries.push(entry);
113
+ this.entries.set(sessionId, sessionEntries);
114
+ // Update session's updatedAt timestamp
115
+ const session = this.sessions.get(sessionId);
116
+ if (session) {
117
+ session.updatedAt = Date.now();
118
+ }
119
+ }
120
+ /**
121
+ * Get all entries for a session
122
+ * @param sessionId The session id
123
+ * @returns Array of entries (empty if session has no entries or doesn't exist)
124
+ */
125
+ getEntries(sessionId) {
126
+ return this.entries.get(sessionId) || [];
127
+ }
128
+ /**
129
+ * Update an entry in a session's conversation history
130
+ * @param sessionId The session id
131
+ * @param entryIndex The index of the entry to update (0-based)
132
+ * @param updates Partial entry data to merge
133
+ * @throws Error if session doesn't exist or index out of bounds
134
+ */
135
+ updateEntry(sessionId, entryIndex, updates) {
136
+ const sessionEntries = this.entries.get(sessionId);
137
+ if (!sessionEntries) {
138
+ throw new Error(`Session with ID ${sessionId} not found`);
139
+ }
140
+ if (entryIndex < 0 || entryIndex >= sessionEntries.length) {
141
+ throw new Error(`Entry index ${entryIndex} out of bounds for session ${sessionId} (length: ${sessionEntries.length})`);
142
+ }
143
+ const existingEntry = sessionEntries[entryIndex]; // Safe: bounds checked above
144
+ const updatedEntry = {
145
+ ...existingEntry,
146
+ ...updates,
147
+ // Ensure required fields are never undefined
148
+ type: updates.type ?? existingEntry.type,
149
+ content: updates.content ?? existingEntry.content,
150
+ };
151
+ sessionEntries[entryIndex] = updatedEntry;
152
+ // Update session's updatedAt timestamp
153
+ const session = this.sessions.get(sessionId);
154
+ if (session) {
155
+ session.updatedAt = Date.now();
156
+ }
157
+ }
158
+ /**
159
+ * Set parent session for a child session (orchestrator workflow)
160
+ * @param childSessionId The child's session id
161
+ * @param parentSessionId The parent's session id
162
+ */
163
+ setParentSession(childSessionId, parentSessionId) {
164
+ this.childToParentMap.set(childSessionId, parentSessionId);
165
+ }
166
+ /**
167
+ * Get parent session ID for a child session
168
+ * @param childSessionId The child's session id
169
+ * @returns The parent session ID or undefined if not found
170
+ */
171
+ getParentSessionId(childSessionId) {
172
+ return this.childToParentMap.get(childSessionId);
173
+ }
174
+ /**
175
+ * Get all child session IDs for a parent session
176
+ * @param parentSessionId The parent's session id
177
+ * @returns Array of child session IDs
178
+ */
179
+ getChildSessionIds(parentSessionId) {
180
+ const childIds = [];
181
+ const childMappings = Array.from(this.childToParentMap.entries());
182
+ for (const [childId, parentId] of childMappings) {
183
+ if (parentId === parentSessionId) {
184
+ childIds.push(childId);
185
+ }
186
+ }
187
+ return childIds;
188
+ }
189
+ /**
190
+ * Serialize the registry state for persistence
191
+ * Excludes non-serializable data like agentRunner instances
192
+ * @returns Serialized state
193
+ */
194
+ serializeState() {
195
+ const serializedSessions = {};
196
+ const sessionEntries = Array.from(this.sessions.entries());
197
+ for (const [sessionId, session] of sessionEntries) {
198
+ // Exclude non-serializable agentRunner
199
+ const { agentRunner: _agentRunner, ...serializableSession } = session;
200
+ serializedSessions[sessionId] = serializableSession;
201
+ }
202
+ const serializedEntries = Object.fromEntries(Array.from(this.entries.entries()));
203
+ const serializedChildToParent = Object.fromEntries(Array.from(this.childToParentMap.entries()));
204
+ return {
205
+ version: "3.0",
206
+ sessions: serializedSessions,
207
+ entries: serializedEntries,
208
+ childToParentMap: serializedChildToParent,
209
+ };
210
+ }
211
+ /**
212
+ * Restore the registry state from serialized data
213
+ * Clears existing state before restoring
214
+ * @param state Serialized state to restore
215
+ */
216
+ restoreState(state) {
217
+ // Clear existing state
218
+ this.sessions.clear();
219
+ this.entries.clear();
220
+ this.childToParentMap.clear();
221
+ // Restore sessions
222
+ for (const [sessionId, session] of Object.entries(state.sessions)) {
223
+ this.sessions.set(sessionId, session);
224
+ }
225
+ // Restore entries
226
+ for (const [sessionId, entries] of Object.entries(state.entries)) {
227
+ this.entries.set(sessionId, entries);
228
+ }
229
+ // Restore parent-child mapping
230
+ for (const [childId, parentId] of Object.entries(state.childToParentMap)) {
231
+ this.childToParentMap.set(childId, parentId);
232
+ }
233
+ }
234
+ /**
235
+ * Clean up old sessions based on age
236
+ * Removes sessions where updatedAt is older than maxAgeMs
237
+ * @param maxAgeMs Maximum age in milliseconds (sessions older than this are removed)
238
+ * @returns Number of sessions removed
239
+ */
240
+ cleanup(maxAgeMs) {
241
+ const now = Date.now();
242
+ const cutoffTime = now - maxAgeMs;
243
+ let removedCount = 0;
244
+ const sessionEntries = Array.from(this.sessions.entries());
245
+ for (const [sessionId, session] of sessionEntries) {
246
+ if (session.updatedAt < cutoffTime) {
247
+ this.deleteSession(sessionId);
248
+ removedCount++;
249
+ }
250
+ }
251
+ return removedCount;
252
+ }
253
+ }
254
+ //# sourceMappingURL=GlobalSessionRegistry.js.map