cyrus-core 0.0.6 → 0.0.8

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,56 @@
1
+ /**
2
+ * Agent Session types for Linear Agent Sessions integration
3
+ * These types represent the core data structures for tracking Claude Code sessions in Linear
4
+ */
5
+ import type { LinearDocument } from "@linear/sdk";
6
+ import type { ClaudeRunner } from "cyrus-claude-runner";
7
+ export interface IssueMinimal {
8
+ id: string;
9
+ identifier: string;
10
+ title: string;
11
+ description?: string;
12
+ branchName: string;
13
+ }
14
+ export interface Workspace {
15
+ path: string;
16
+ isGitWorktree: boolean;
17
+ historyPath?: string;
18
+ }
19
+ export interface CyrusAgentSession {
20
+ linearAgentActivitySessionId: string;
21
+ type: LinearDocument.AgentSessionType.CommentThread;
22
+ status: LinearDocument.AgentSessionStatus;
23
+ context: LinearDocument.AgentSessionType.CommentThread;
24
+ createdAt: number;
25
+ updatedAt: number;
26
+ issueId: string;
27
+ issue: IssueMinimal;
28
+ workspace: Workspace;
29
+ claudeSessionId?: string;
30
+ claudeRunner?: ClaudeRunner;
31
+ metadata?: {
32
+ model?: string;
33
+ tools?: string[];
34
+ permissionMode?: string;
35
+ apiKeySource?: string;
36
+ totalCostUsd?: number;
37
+ usage?: any;
38
+ commentId?: string;
39
+ };
40
+ }
41
+ export interface CyrusAgentSessionEntry {
42
+ claudeSessionId: string;
43
+ linearAgentActivityId?: string;
44
+ type: "user" | "assistant" | "system" | "result";
45
+ content: string;
46
+ metadata?: {
47
+ toolUseId?: string;
48
+ toolName?: string;
49
+ toolInput?: any;
50
+ parentToolUseId?: string;
51
+ timestamp: number;
52
+ durationMs?: number;
53
+ isError?: boolean;
54
+ };
55
+ }
56
+ //# sourceMappingURL=CyrusAgentSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CyrusAgentSession.d.ts","sourceRoot":"","sources":["../src/CyrusAgentSession.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IACjC,4BAA4B,EAAE,MAAM,CAAC;IACrC,IAAI,EAAE,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC;IACpD,MAAM,EAAE,cAAc,CAAC,kBAAkB,CAAC;IAC1C,OAAO,EAAE,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,EAAE;QACV,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF;AAED,MAAM,WAAW,sBAAsB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QACV,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,GAAG,CAAC;QAChB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Agent Session types for Linear Agent Sessions integration
3
+ * These types represent the core data structures for tracking Claude Code sessions in Linear
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=CyrusAgentSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CyrusAgentSession.js","sourceRoot":"","sources":["../src/CyrusAgentSession.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,36 +1,12 @@
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
- }
1
+ import type { CyrusAgentSession, CyrusAgentSessionEntry } from "./CyrusAgentSession.js";
2
+ export type SerializedCyrusAgentSession = CyrusAgentSession;
3
+ export type SerializedCyrusAgentSessionEntry = CyrusAgentSessionEntry;
20
4
  /**
21
5
  * Serializable EdgeWorker state for persistence
22
6
  */
23
7
  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[]>;
8
+ agentSessions?: Record<string, Record<string, SerializedCyrusAgentSession>>;
9
+ agentSessionEntries?: Record<string, Record<string, SerializedCyrusAgentSessionEntry[]>>;
34
10
  }
35
11
  /**
36
12
  * Manages persistence of critical mappings to survive restarts
@@ -39,29 +15,29 @@ export declare class PersistenceManager {
39
15
  private persistencePath;
40
16
  constructor(persistencePath?: string);
41
17
  /**
42
- * Get the full path to the state file for a repository
18
+ * Get the full path to the single EdgeWorker state file
43
19
  */
44
- private getStateFilePath;
20
+ private getEdgeWorkerStateFilePath;
45
21
  /**
46
22
  * Ensure the persistence directory exists
47
23
  */
48
24
  private ensurePersistenceDirectory;
49
25
  /**
50
- * Save EdgeWorker state to disk
26
+ * Save EdgeWorker state to disk (single file for all repositories)
51
27
  */
52
- saveEdgeWorkerState(repositoryId: string, state: SerializableEdgeWorkerState): Promise<void>;
28
+ saveEdgeWorkerState(state: SerializableEdgeWorkerState): Promise<void>;
53
29
  /**
54
- * Load EdgeWorker state from disk
30
+ * Load EdgeWorker state from disk (single file for all repositories)
55
31
  */
56
- loadEdgeWorkerState(repositoryId: string): Promise<SerializableEdgeWorkerState | null>;
32
+ loadEdgeWorkerState(): Promise<SerializableEdgeWorkerState | null>;
57
33
  /**
58
- * Check if state file exists for a repository
34
+ * Check if EdgeWorker state file exists
59
35
  */
60
- hasStateFile(repositoryId: string): boolean;
36
+ hasStateFile(): boolean;
61
37
  /**
62
- * Delete state file for a repository
38
+ * Delete EdgeWorker state file
63
39
  */
64
- deleteStateFile(repositoryId: string): Promise<void>;
40
+ deleteStateFile(): Promise<void>;
65
41
  /**
66
42
  * Convert Map to Record for serialization
67
43
  */
@@ -1 +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"}
1
+ {"version":3,"file":"PersistenceManager.d.ts","sourceRoot":"","sources":["../src/PersistenceManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACX,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAM5D,MAAM,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAOtE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAE3C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;IAC5E,mBAAmB,CAAC,EAAE,MAAM,CAC3B,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,gCAAgC,EAAE,CAAC,CAClD,CAAC;CACF;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,eAAe,CAAS;gBAEpB,eAAe,CAAC,EAAE,MAAM;IAKpC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAIlC;;OAEG;YACW,0BAA0B;IAIxC;;OAEG;IACG,mBAAmB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5E;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,2BAA2B,GAAG,IAAI,CAAC;IAsBxE;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtC;;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;CAGxC"}
@@ -1,20 +1,21 @@
1
- import { readFile, writeFile, mkdir } from 'fs/promises';
2
- import { join } from 'path';
3
- import { homedir } from 'os';
4
- import { existsSync } from 'fs';
1
+ import { existsSync } from "node:fs";
2
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
5
  /**
6
6
  * Manages persistence of critical mappings to survive restarts
7
7
  */
8
8
  export class PersistenceManager {
9
9
  persistencePath;
10
10
  constructor(persistencePath) {
11
- this.persistencePath = persistencePath || join(homedir(), '.cyrus', 'state');
11
+ this.persistencePath =
12
+ persistencePath || join(homedir(), ".cyrus", "state");
12
13
  }
13
14
  /**
14
- * Get the full path to the state file for a repository
15
+ * Get the full path to the single EdgeWorker state file
15
16
  */
16
- getStateFilePath(repositoryId) {
17
- return join(this.persistencePath, `${repositoryId}-state.json`);
17
+ getEdgeWorkerStateFilePath() {
18
+ return join(this.persistencePath, "edge-worker-state.json");
18
19
  }
19
20
  /**
20
21
  * Ensure the persistence directory exists
@@ -23,65 +24,64 @@ export class PersistenceManager {
23
24
  await mkdir(this.persistencePath, { recursive: true });
24
25
  }
25
26
  /**
26
- * Save EdgeWorker state to disk
27
+ * Save EdgeWorker state to disk (single file for all repositories)
27
28
  */
28
- async saveEdgeWorkerState(repositoryId, state) {
29
+ async saveEdgeWorkerState(state) {
29
30
  try {
30
31
  await this.ensurePersistenceDirectory();
31
- const stateFile = this.getStateFilePath(repositoryId);
32
+ const stateFile = this.getEdgeWorkerStateFilePath();
32
33
  const stateData = {
33
- version: '1.0',
34
+ version: "2.0",
34
35
  savedAt: new Date().toISOString(),
35
- repositoryId,
36
- state
36
+ state,
37
37
  };
38
- await writeFile(stateFile, JSON.stringify(stateData, null, 2), 'utf8');
38
+ await writeFile(stateFile, JSON.stringify(stateData, null, 2), "utf8");
39
39
  }
40
40
  catch (error) {
41
- console.error(`Failed to save EdgeWorker state for ${repositoryId}:`, error);
41
+ console.error(`Failed to save EdgeWorker state:`, error);
42
42
  throw error;
43
43
  }
44
44
  }
45
45
  /**
46
- * Load EdgeWorker state from disk
46
+ * Load EdgeWorker state from disk (single file for all repositories)
47
47
  */
48
- async loadEdgeWorkerState(repositoryId) {
48
+ async loadEdgeWorkerState() {
49
49
  try {
50
- const stateFile = this.getStateFilePath(repositoryId);
50
+ const stateFile = this.getEdgeWorkerStateFilePath();
51
51
  if (!existsSync(stateFile)) {
52
52
  return null;
53
53
  }
54
- const stateData = JSON.parse(await readFile(stateFile, 'utf8'));
54
+ const stateData = JSON.parse(await readFile(stateFile, "utf8"));
55
55
  // Validate state structure
56
- if (!stateData.state || !stateData.repositoryId || stateData.repositoryId !== repositoryId) {
57
- console.warn(`Invalid state file for ${repositoryId}, ignoring`);
56
+ if (!stateData.state || stateData.version !== "2.0") {
57
+ console.warn(`Invalid or outdated state file, ignoring`);
58
58
  return null;
59
59
  }
60
60
  return stateData.state;
61
61
  }
62
62
  catch (error) {
63
- console.error(`Failed to load EdgeWorker state for ${repositoryId}:`, error);
63
+ console.error(`Failed to load EdgeWorker state:`, error);
64
64
  return null;
65
65
  }
66
66
  }
67
67
  /**
68
- * Check if state file exists for a repository
68
+ * Check if EdgeWorker state file exists
69
69
  */
70
- hasStateFile(repositoryId) {
71
- return existsSync(this.getStateFilePath(repositoryId));
70
+ hasStateFile() {
71
+ return existsSync(this.getEdgeWorkerStateFilePath());
72
72
  }
73
73
  /**
74
- * Delete state file for a repository
74
+ * Delete EdgeWorker state file
75
75
  */
76
- async deleteStateFile(repositoryId) {
76
+ async deleteStateFile() {
77
77
  try {
78
- const stateFile = this.getStateFilePath(repositoryId);
78
+ const stateFile = this.getEdgeWorkerStateFilePath();
79
79
  if (existsSync(stateFile)) {
80
- await writeFile(stateFile, '', 'utf8'); // Clear file instead of deleting
80
+ await writeFile(stateFile, "", "utf8"); // Clear file instead of deleting
81
81
  }
82
82
  }
83
83
  catch (error) {
84
- console.error(`Failed to delete state file for ${repositoryId}:`, error);
84
+ console.error(`Failed to delete EdgeWorker state file:`, error);
85
85
  }
86
86
  }
87
87
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PersistenceManager.js","sourceRoot":"","sources":["../src/PersistenceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PersistenceManager.js","sourceRoot":"","sources":["../src/PersistenceManager.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- export { Session } from './Session.js';
2
- export type { SessionOptions, Issue, Workspace, NarrativeItem } from './Session.js';
3
- export { SessionManager } from './SessionManager.js';
4
- export { PersistenceManager } from './PersistenceManager.js';
5
- export type { SerializableSession, SerializableEdgeWorkerState } from './PersistenceManager.js';
6
- export type { LinearWebhookTeam, LinearWebhookIssue, LinearWebhookComment, LinearWebhookActor, LinearWebhookNotification, LinearIssueAssignedNotification, LinearIssueCommentMentionNotification, LinearIssueNewCommentNotification, LinearIssueUnassignedNotification, LinearWebhook, LinearIssueAssignedWebhook, LinearIssueCommentMentionWebhook, LinearIssueNewCommentWebhook, LinearIssueUnassignedWebhook } from './webhook-types.js';
7
- export { isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook } from './webhook-types.js';
1
+ export type { CyrusAgentSession, CyrusAgentSessionEntry, IssueMinimal, Workspace, } from "./CyrusAgentSession.js";
2
+ export type { SerializableEdgeWorkerState, SerializedCyrusAgentSession, SerializedCyrusAgentSessionEntry, } from "./PersistenceManager.js";
3
+ export { PersistenceManager } from "./PersistenceManager.js";
4
+ export type { LinearAgentSessionCreatedWebhook, LinearAgentSessionPromptedWebhook, LinearIssueAssignedNotification, LinearIssueAssignedWebhook, LinearIssueCommentMentionNotification, LinearIssueCommentMentionWebhook, LinearIssueNewCommentNotification, LinearIssueNewCommentWebhook, LinearIssueUnassignedNotification, LinearIssueUnassignedWebhook, LinearWebhook, LinearWebhookActor, LinearWebhookAgentActivity, LinearWebhookAgentActivityContent, LinearWebhookAgentSession, LinearWebhookComment, LinearWebhookCreator, LinearWebhookIssue, LinearWebhookNotification, LinearWebhookTeam, } from "./webhook-types.js";
5
+ export { isAgentSessionCreatedWebhook, isAgentSessionPromptedWebhook, isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook, } from "./webhook-types.js";
8
6
  //# 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;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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACX,iBAAiB,EACjB,sBAAsB,EACtB,YAAY,EACZ,SAAS,GACT,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,2BAA2B,EAC3B,2BAA2B,EAC3B,gCAAgC,GAChC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,YAAY,EACX,gCAAgC,EAChC,iCAAiC,EACjC,+BAA+B,EAC/B,0BAA0B,EAC1B,qCAAqC,EACrC,gCAAgC,EAChC,iCAAiC,EACjC,4BAA4B,EAC5B,iCAAiC,EACjC,4BAA4B,EAC5B,aAAa,EACb,kBAAkB,EAClB,0BAA0B,EAC1B,iCAAiC,EACjC,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACN,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
- export { Session } from './Session.js';
2
- export { SessionManager } from './SessionManager.js';
3
- export { PersistenceManager } from './PersistenceManager.js';
4
- export { isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook } from './webhook-types.js';
1
+ // export { Session } from './Session.js'
2
+ // export type { SessionOptions, , NarrativeItem } from './Session.js'
3
+ // export { ClaudeSessionManager as SessionManager } from './ClaudeSessionManager.js'
4
+ export { PersistenceManager } from "./PersistenceManager.js";
5
+ export { isAgentSessionCreatedWebhook, isAgentSessionPromptedWebhook, isIssueAssignedWebhook, isIssueCommentMentionWebhook, isIssueNewCommentWebhook, isIssueUnassignedWebhook, } from "./webhook-types.js";
5
6
  //# 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;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAqB5D,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,yCAAyC;AACzC,sEAAsE;AACtE,qFAAqF;AAarF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA0B7D,OAAO,EACN,4BAA4B,EAC5B,6BAA6B,EAC7B,sBAAsB,EACtB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -58,13 +58,13 @@ export interface LinearWebhookNotificationBase {
58
58
  * Issue assignment notification
59
59
  */
60
60
  export interface LinearIssueAssignedNotification extends LinearWebhookNotificationBase {
61
- type: 'issueAssignedToYou';
61
+ type: "issueAssignedToYou";
62
62
  }
63
63
  /**
64
64
  * Issue comment mention notification
65
65
  */
66
66
  export interface LinearIssueCommentMentionNotification extends LinearWebhookNotificationBase {
67
- type: 'issueCommentMention';
67
+ type: "issueCommentMention";
68
68
  commentId: string;
69
69
  comment: LinearWebhookComment;
70
70
  }
@@ -72,7 +72,7 @@ export interface LinearIssueCommentMentionNotification extends LinearWebhookNoti
72
72
  * Issue new comment notification (can have parent comment for replies)
73
73
  */
74
74
  export interface LinearIssueNewCommentNotification extends LinearWebhookNotificationBase {
75
- type: 'issueNewComment';
75
+ type: "issueNewComment";
76
76
  commentId: string;
77
77
  comment: LinearWebhookComment;
78
78
  parentCommentId?: string;
@@ -82,7 +82,7 @@ export interface LinearIssueNewCommentNotification extends LinearWebhookNotifica
82
82
  * Issue unassignment notification
83
83
  */
84
84
  export interface LinearIssueUnassignedNotification extends LinearWebhookNotificationBase {
85
- type: 'issueUnassignedFromYou';
85
+ type: "issueUnassignedFromYou";
86
86
  actorId: string;
87
87
  externalUserActorId: string | null;
88
88
  userId: string;
@@ -98,8 +98,8 @@ export type LinearWebhookNotification = LinearIssueAssignedNotification | Linear
98
98
  * Issue assignment webhook payload
99
99
  */
100
100
  export interface LinearIssueAssignedWebhook {
101
- type: 'AppUserNotification';
102
- action: 'issueAssignedToYou';
101
+ type: "AppUserNotification";
102
+ action: "issueAssignedToYou";
103
103
  createdAt: string;
104
104
  organizationId: string;
105
105
  oauthClientId: string;
@@ -112,8 +112,8 @@ export interface LinearIssueAssignedWebhook {
112
112
  * Issue comment mention webhook payload
113
113
  */
114
114
  export interface LinearIssueCommentMentionWebhook {
115
- type: 'AppUserNotification';
116
- action: 'issueCommentMention';
115
+ type: "AppUserNotification";
116
+ action: "issueCommentMention";
117
117
  createdAt: string;
118
118
  organizationId: string;
119
119
  oauthClientId: string;
@@ -126,8 +126,8 @@ export interface LinearIssueCommentMentionWebhook {
126
126
  * Issue new comment webhook payload
127
127
  */
128
128
  export interface LinearIssueNewCommentWebhook {
129
- type: 'AppUserNotification';
130
- action: 'issueNewComment';
129
+ type: "AppUserNotification";
130
+ action: "issueNewComment";
131
131
  createdAt: string;
132
132
  organizationId: string;
133
133
  oauthClientId: string;
@@ -140,8 +140,8 @@ export interface LinearIssueNewCommentWebhook {
140
140
  * Issue unassignment webhook payload
141
141
  */
142
142
  export interface LinearIssueUnassignedWebhook {
143
- type: 'AppUserNotification';
144
- action: 'issueUnassignedFromYou';
143
+ type: "AppUserNotification";
144
+ action: "issueUnassignedFromYou";
145
145
  createdAt: string;
146
146
  organizationId: string;
147
147
  oauthClientId: string;
@@ -150,10 +150,92 @@ export interface LinearIssueUnassignedWebhook {
150
150
  webhookTimestamp: number;
151
151
  webhookId: string;
152
152
  }
153
+ /**
154
+ * Creator data in agent session webhooks
155
+ */
156
+ export interface LinearWebhookCreator {
157
+ id: string;
158
+ name: string;
159
+ email: string;
160
+ avatarUrl: string;
161
+ url: string;
162
+ }
163
+ /**
164
+ * Agent Session data from webhooks
165
+ */
166
+ export interface LinearWebhookAgentSession {
167
+ id: string;
168
+ createdAt: string;
169
+ updatedAt: string;
170
+ archivedAt: string | null;
171
+ creatorId: string;
172
+ appUserId: string;
173
+ commentId: string;
174
+ issueId: string;
175
+ status: "pending" | "active" | "error" | "awaiting-input" | "complete";
176
+ startedAt: string | null;
177
+ endedAt: string | null;
178
+ type: "commentThread";
179
+ summary: string | null;
180
+ sourceMetadata: any | null;
181
+ organizationId: string;
182
+ creator: LinearWebhookCreator;
183
+ comment: LinearWebhookComment;
184
+ issue: LinearWebhookIssue;
185
+ }
186
+ /**
187
+ * Agent Activity content types
188
+ */
189
+ export interface LinearWebhookAgentActivityContent {
190
+ type: "prompt" | "observation" | "action" | "error" | "elicitation" | "response";
191
+ body: string;
192
+ }
193
+ /**
194
+ * Agent Activity data from webhooks
195
+ */
196
+ export interface LinearWebhookAgentActivity {
197
+ id: string;
198
+ createdAt: string;
199
+ updatedAt: string;
200
+ archivedAt: string | null;
201
+ agentContextId: string | null;
202
+ agentSessionId: string;
203
+ sourceCommentId: string;
204
+ content: LinearWebhookAgentActivityContent;
205
+ }
206
+ /**
207
+ * Agent Session created webhook payload
208
+ */
209
+ export interface LinearAgentSessionCreatedWebhook {
210
+ type: "AgentSessionEvent";
211
+ action: "created";
212
+ createdAt: string;
213
+ organizationId: string;
214
+ oauthClientId: string;
215
+ appUserId: string;
216
+ agentSession: LinearWebhookAgentSession;
217
+ webhookTimestamp: string;
218
+ webhookId: string;
219
+ }
220
+ /**
221
+ * Agent Session prompted webhook payload
222
+ */
223
+ export interface LinearAgentSessionPromptedWebhook {
224
+ type: "AgentSessionEvent";
225
+ action: "prompted";
226
+ createdAt: string;
227
+ organizationId: string;
228
+ oauthClientId: string;
229
+ appUserId: string;
230
+ agentSession: LinearWebhookAgentSession;
231
+ agentActivity: LinearWebhookAgentActivity;
232
+ webhookTimestamp: string;
233
+ webhookId: string;
234
+ }
153
235
  /**
154
236
  * Union of all webhook types we handle
155
237
  */
156
- export type LinearWebhook = LinearIssueAssignedWebhook | LinearIssueCommentMentionWebhook | LinearIssueNewCommentWebhook | LinearIssueUnassignedWebhook;
238
+ export type LinearWebhook = LinearIssueAssignedWebhook | LinearIssueCommentMentionWebhook | LinearIssueNewCommentWebhook | LinearIssueUnassignedWebhook | LinearAgentSessionCreatedWebhook | LinearAgentSessionPromptedWebhook;
157
239
  /**
158
240
  * Type guards for webhook discrimination
159
241
  */
@@ -161,4 +243,6 @@ export declare function isIssueAssignedWebhook(webhook: LinearWebhook): webhook
161
243
  export declare function isIssueCommentMentionWebhook(webhook: LinearWebhook): webhook is LinearIssueCommentMentionWebhook;
162
244
  export declare function isIssueNewCommentWebhook(webhook: LinearWebhook): webhook is LinearIssueNewCommentWebhook;
163
245
  export declare function isIssueUnassignedWebhook(webhook: LinearWebhook): webhook is LinearIssueUnassignedWebhook;
246
+ export declare function isAgentSessionCreatedWebhook(webhook: LinearWebhook): webhook is LinearAgentSessionCreatedWebhook;
247
+ export declare function isAgentSessionPromptedWebhook(webhook: LinearWebhook): webhook is LinearAgentSessionPromptedWebhook;
164
248
  //# sourceMappingURL=webhook-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-types.d.ts","sourceRoot":"","sources":["../src/webhook-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-types.d.ts","sourceRoot":"","sources":["../src/webhook-types.ts"],"names":[],"mappings":"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"}
@@ -6,15 +6,21 @@
6
6
  * Type guards for webhook discrimination
7
7
  */
8
8
  export function isIssueAssignedWebhook(webhook) {
9
- return webhook.action === 'issueAssignedToYou';
9
+ return webhook.action === "issueAssignedToYou";
10
10
  }
11
11
  export function isIssueCommentMentionWebhook(webhook) {
12
- return webhook.action === 'issueCommentMention';
12
+ return webhook.action === "issueCommentMention";
13
13
  }
14
14
  export function isIssueNewCommentWebhook(webhook) {
15
- return webhook.action === 'issueNewComment';
15
+ return webhook.action === "issueNewComment";
16
16
  }
17
17
  export function isIssueUnassignedWebhook(webhook) {
18
- return webhook.action === 'issueUnassignedFromYou';
18
+ return webhook.action === "issueUnassignedFromYou";
19
+ }
20
+ export function isAgentSessionCreatedWebhook(webhook) {
21
+ return webhook.type === "AgentSessionEvent" && webhook.action === "created";
22
+ }
23
+ export function isAgentSessionPromptedWebhook(webhook) {
24
+ return webhook.type === "AgentSessionEvent" && webhook.action === "prompted";
19
25
  }
20
26
  //# sourceMappingURL=webhook-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-types.js","sourceRoot":"","sources":["../src/webhook-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiLH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAsB;IAC3D,OAAO,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAsB;IACjE,OAAO,OAAO,CAAC,MAAM,KAAK,qBAAqB,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAsB;IAC7D,OAAO,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAsB;IAC7D,OAAO,OAAO,CAAC,MAAM,KAAK,wBAAwB,CAAA;AACpD,CAAC"}
1
+ {"version":3,"file":"webhook-types.js","sourceRoot":"","sources":["../src/webhook-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqRH;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACrC,OAAsB;IAEtB,OAAO,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,OAAsB;IAEtB,OAAO,OAAO,CAAC,MAAM,KAAK,qBAAqB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,OAAsB;IAEtB,OAAO,OAAO,CAAC,MAAM,KAAK,iBAAiB,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,OAAsB;IAEtB,OAAO,OAAO,CAAC,MAAM,KAAK,wBAAwB,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC;AAC9E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cyrus-core",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Core business logic for Cyrus",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -8,7 +8,10 @@
8
8
  "files": [
9
9
  "dist"
10
10
  ],
11
- "dependencies": {},
11
+ "dependencies": {
12
+ "@linear/sdk": "^54.0.0",
13
+ "cyrus-claude-runner": "0.0.15"
14
+ },
12
15
  "devDependencies": {
13
16
  "@types/node": "^20.0.0",
14
17
  "typescript": "^5.3.3",
@@ -21,7 +24,7 @@
21
24
  "build": "tsc",
22
25
  "dev": "tsc --watch",
23
26
  "test": "vitest",
24
- "test:run": "vitest run",
27
+ "test:run": "vitest run --passWithNoTests",
25
28
  "typecheck": "tsc --noEmit"
26
29
  }
27
30
  }