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,4 +1,5 @@
1
1
  import { createServer, } from "node:http";
2
+ import { createLogger } from "cyrus-core";
2
3
  /**
3
4
  * Shared webhook server that can handle multiple Linear tokens
4
5
  * Each token has its own webhook secret for signature verification
@@ -9,9 +10,11 @@ export class SharedWebhookServer {
9
10
  port;
10
11
  host;
11
12
  isListening = false;
12
- constructor(port = 3456, host = "localhost") {
13
+ logger;
14
+ constructor(port = 3456, host = "localhost", logger) {
13
15
  this.port = port;
14
16
  this.host = host;
17
+ this.logger = logger ?? createLogger({ component: "SharedWebhookServer" });
15
18
  }
16
19
  /**
17
20
  * Start the shared webhook server
@@ -26,7 +29,7 @@ export class SharedWebhookServer {
26
29
  });
27
30
  this.server.listen(this.port, this.host, () => {
28
31
  this.isListening = true;
29
- console.log(`🔗 Shared webhook server listening on http://${this.host}:${this.port}`);
32
+ this.logger.info(`Shared webhook server listening on http://${this.host}:${this.port}`);
30
33
  resolve();
31
34
  });
32
35
  this.server.on("error", (error) => {
@@ -43,7 +46,7 @@ export class SharedWebhookServer {
43
46
  return new Promise((resolve) => {
44
47
  this.server.close(() => {
45
48
  this.isListening = false;
46
- console.log("🔗 Shared webhook server stopped");
49
+ this.logger.info("Shared webhook server stopped");
47
50
  resolve();
48
51
  });
49
52
  });
@@ -54,14 +57,14 @@ export class SharedWebhookServer {
54
57
  */
55
58
  registerWebhookHandler(token, secret, handler) {
56
59
  this.webhookHandlers.set(token, { secret, handler });
57
- console.log(`🔗 Registered webhook handler for token ending in ...${token.slice(-4)}`);
60
+ this.logger.info(`Registered webhook handler for token ending in ...${token.slice(-4)}`);
58
61
  }
59
62
  /**
60
63
  * Unregister a webhook handler
61
64
  */
62
65
  unregisterWebhookHandler(token) {
63
66
  this.webhookHandlers.delete(token);
64
- console.log(`🔗 Unregistered webhook handler for token ending in ...${token.slice(-4)}`);
67
+ this.logger.info(`Unregistered webhook handler for token ending in ...${token.slice(-4)}`);
65
68
  }
66
69
  /**
67
70
  * Get the webhook URL for registration with proxy
@@ -74,15 +77,15 @@ export class SharedWebhookServer {
74
77
  */
75
78
  async handleWebhookRequest(req, res) {
76
79
  try {
77
- console.log(`🔗 Incoming webhook request: ${req.method} ${req.url}`);
80
+ this.logger.debug(`Incoming webhook request: ${req.method} ${req.url}`);
78
81
  if (req.method !== "POST") {
79
- console.log(`🔗 Rejected non-POST request: ${req.method}`);
82
+ this.logger.debug(`Rejected non-POST request: ${req.method}`);
80
83
  res.writeHead(405, { "Content-Type": "text/plain" });
81
84
  res.end("Method Not Allowed");
82
85
  return;
83
86
  }
84
87
  if (req.url !== "/webhook") {
85
- console.log(`🔗 Rejected request to wrong URL: ${req.url}`);
88
+ this.logger.debug(`Rejected request to wrong URL: ${req.url}`);
86
89
  res.writeHead(404, { "Content-Type": "text/plain" });
87
90
  res.end("Not Found");
88
91
  return;
@@ -96,9 +99,9 @@ export class SharedWebhookServer {
96
99
  try {
97
100
  const signature = req.headers["x-webhook-signature"];
98
101
  const timestamp = req.headers["x-webhook-timestamp"];
99
- console.log(`🔗 Webhook received with ${body.length} bytes, ${this.webhookHandlers.size} registered handlers`);
102
+ this.logger.debug(`Webhook received with ${body.length} bytes, ${this.webhookHandlers.size} registered handlers`);
100
103
  if (!signature) {
101
- console.log("🔗 Webhook rejected: Missing signature header");
104
+ this.logger.debug("Webhook rejected: Missing signature header");
102
105
  res.writeHead(400, { "Content-Type": "text/plain" });
103
106
  res.end("Missing signature");
104
107
  return;
@@ -112,33 +115,33 @@ export class SharedWebhookServer {
112
115
  // Handler verified signature and processed webhook
113
116
  res.writeHead(200, { "Content-Type": "text/plain" });
114
117
  res.end("OK");
115
- console.log(`🔗 Webhook delivered to token ending in ...${token.slice(-4)} (attempt ${handlerAttempts}/${this.webhookHandlers.size})`);
118
+ this.logger.debug(`Webhook delivered to token ending in ...${token.slice(-4)} (attempt ${handlerAttempts}/${this.webhookHandlers.size})`);
116
119
  return;
117
120
  }
118
121
  }
119
122
  catch (error) {
120
- console.error(`🔗 Error in webhook handler for token ...${token.slice(-4)}:`, error);
123
+ this.logger.error(`Error in webhook handler for token ...${token.slice(-4)}:`, error);
121
124
  }
122
125
  }
123
126
  // No handler could verify the signature
124
- console.error(`🔗 Webhook signature verification failed for all ${this.webhookHandlers.size} registered handlers`);
127
+ this.logger.error(`Webhook signature verification failed for all ${this.webhookHandlers.size} registered handlers`);
125
128
  res.writeHead(401, { "Content-Type": "text/plain" });
126
129
  res.end("Unauthorized");
127
130
  }
128
131
  catch (error) {
129
- console.error("🔗 Error processing webhook:", error);
132
+ this.logger.error("Error processing webhook:", error);
130
133
  res.writeHead(400, { "Content-Type": "text/plain" });
131
134
  res.end("Bad Request");
132
135
  }
133
136
  });
134
137
  req.on("error", (error) => {
135
- console.error("🔗 Request error:", error);
138
+ this.logger.error("Request error:", error);
136
139
  res.writeHead(500, { "Content-Type": "text/plain" });
137
140
  res.end("Internal Server Error");
138
141
  });
139
142
  }
140
143
  catch (error) {
141
- console.error("🔗 Webhook request error:", error);
144
+ this.logger.error("Webhook request error:", error);
142
145
  res.writeHead(500, { "Content-Type": "text/plain" });
143
146
  res.end("Internal Server Error");
144
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWebhookServer.js","sourceRoot":"","sources":["../src/SharedWebhookServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedWebhookServer.js","sourceRoot":"","sources":["../src/SharedWebhookServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { IAgentRunner, ILogger } from "cyrus-core";
2
+ import { type SlackWebhookEvent } from "cyrus-slack-event-transport";
3
+ import type { ChatPlatformAdapter } from "./ChatSessionHandler.js";
4
+ /**
5
+ * Slack implementation of ChatPlatformAdapter.
6
+ *
7
+ * Contains all Slack-specific logic extracted from EdgeWorker:
8
+ * text extraction, thread keys, system prompts, thread context,
9
+ * reply posting, and acknowledgement reactions.
10
+ */
11
+ export declare class SlackChatAdapter implements ChatPlatformAdapter<SlackWebhookEvent> {
12
+ readonly platformName: "slack";
13
+ private logger;
14
+ constructor(logger?: ILogger);
15
+ extractTaskInstructions(event: SlackWebhookEvent): string;
16
+ getThreadKey(event: SlackWebhookEvent): string;
17
+ getEventId(event: SlackWebhookEvent): string;
18
+ buildSystemPrompt(event: SlackWebhookEvent): string;
19
+ fetchThreadContext(event: SlackWebhookEvent): Promise<string>;
20
+ postReply(event: SlackWebhookEvent, runner: IAgentRunner): Promise<void>;
21
+ acknowledgeReceipt(event: SlackWebhookEvent): Promise<void>;
22
+ notifyBusy(event: SlackWebhookEvent): Promise<void>;
23
+ private formatThreadContext;
24
+ }
25
+ //# sourceMappingURL=SlackChatAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackChatAdapter.d.ts","sourceRoot":"","sources":["../src/SlackChatAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAExD,OAAO,EAIN,KAAK,iBAAiB,EAEtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,gBACZ,YAAW,mBAAmB,CAAC,iBAAiB,CAAC;IAEjD,QAAQ,CAAC,YAAY,EAAG,OAAO,CAAU;IACzC,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,CAAC,EAAE,OAAO;IAI5B,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAMzD,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAK9C,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAI5C,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM;IAmC7C,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IA2C7D,SAAS,CACd,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC;IAqDV,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD,OAAO,CAAC,mBAAmB;CAgB3B"}
@@ -0,0 +1,163 @@
1
+ import { createLogger } from "cyrus-core";
2
+ import { SlackMessageService, SlackReactionService, stripMention as stripSlackMention, } from "cyrus-slack-event-transport";
3
+ /**
4
+ * Slack implementation of ChatPlatformAdapter.
5
+ *
6
+ * Contains all Slack-specific logic extracted from EdgeWorker:
7
+ * text extraction, thread keys, system prompts, thread context,
8
+ * reply posting, and acknowledgement reactions.
9
+ */
10
+ export class SlackChatAdapter {
11
+ platformName = "slack";
12
+ logger;
13
+ constructor(logger) {
14
+ this.logger = logger ?? createLogger({ component: "SlackChatAdapter" });
15
+ }
16
+ extractTaskInstructions(event) {
17
+ return (stripSlackMention(event.payload.text) || "Ask the user for more context");
18
+ }
19
+ getThreadKey(event) {
20
+ const threadTs = event.payload.thread_ts || event.payload.ts;
21
+ return `${event.payload.channel}:${threadTs}`;
22
+ }
23
+ getEventId(event) {
24
+ return event.eventId;
25
+ }
26
+ buildSystemPrompt(event) {
27
+ return `You are responding to a Slack @mention.
28
+
29
+ ## Context
30
+ - **Requested by**: ${event.payload.user}
31
+ - **Channel**: ${event.payload.channel}
32
+
33
+ ## Instructions
34
+ - You are running in a transient workspace, not associated with any code repository
35
+ - Be concise in your responses as they will be posted back to Slack
36
+ - If the user's request involves code changes, help them plan the work and suggest creating an issue in their project tracker (Linear, Jira, or GitHub Issues)
37
+ - You can answer questions, provide analysis, help with planning, and assist with research
38
+ - If files need to be created or examined, they will be in your working directory
39
+
40
+ ## Slack Message Formatting (CRITICAL)
41
+ Your response will be posted as a Slack message. Slack uses its own "mrkdwn" format, which is NOT standard Markdown. You MUST follow these rules exactly.
42
+
43
+ NEVER use any of the following — they do not render in Slack and will appear as broken plain text:
44
+ - NO tables (no | --- | syntax — use numbered lists or plain text instead)
45
+ - NO headers (no # syntax — use *bold text* on its own line instead)
46
+ - NO [text](url) links — use <url|text> instead
47
+ - NO **double asterisk** bold — use *single asterisk* instead
48
+ - NO image embeds
49
+
50
+ Supported mrkdwn syntax:
51
+ - Bold: *bold text* (single asterisks only)
52
+ - Italic: _italic text_
53
+ - Strikethrough: ~struck text~
54
+ - Inline code: \`code\`
55
+ - Code blocks: \`\`\`code block\`\`\`
56
+ - Blockquote: > quoted text (at start of line)
57
+ - Links: <https://example.com|display text>
58
+ - Lists: use plain numbered lines (1. item) or dashes (- item) with newlines`;
59
+ }
60
+ async fetchThreadContext(event) {
61
+ // Only fetch context for threaded messages
62
+ if (!event.payload.thread_ts) {
63
+ return "";
64
+ }
65
+ if (!event.slackBotToken) {
66
+ this.logger.warn("Cannot fetch Slack thread context: no slackBotToken available");
67
+ return "";
68
+ }
69
+ try {
70
+ const slackService = new SlackMessageService();
71
+ const messages = await slackService.fetchThreadMessages({
72
+ token: event.slackBotToken,
73
+ channel: event.payload.channel,
74
+ thread_ts: event.payload.thread_ts,
75
+ limit: 50,
76
+ });
77
+ // Filter out the @mention message itself and bot messages
78
+ const contextMessages = messages.filter((msg) => msg.ts !== event.payload.ts &&
79
+ !msg.bot_id &&
80
+ msg.subtype !== "bot_message");
81
+ if (contextMessages.length === 0) {
82
+ return "";
83
+ }
84
+ return this.formatThreadContext(contextMessages);
85
+ }
86
+ catch (error) {
87
+ this.logger.warn(`Failed to fetch Slack thread context: ${error instanceof Error ? error.message : String(error)}`);
88
+ return "";
89
+ }
90
+ }
91
+ async postReply(event, runner) {
92
+ try {
93
+ // Get the last assistant message from the runner as the summary
94
+ const messages = runner.getMessages();
95
+ const lastAssistantMessage = [...messages]
96
+ .reverse()
97
+ .find((m) => m.type === "assistant");
98
+ let summary = "Task completed.";
99
+ if (lastAssistantMessage &&
100
+ lastAssistantMessage.type === "assistant" &&
101
+ "message" in lastAssistantMessage) {
102
+ const msg = lastAssistantMessage;
103
+ const textBlock = msg.message.content?.find((block) => block.type === "text" && block.text);
104
+ if (textBlock?.text) {
105
+ summary = textBlock.text;
106
+ }
107
+ }
108
+ if (!event.slackBotToken) {
109
+ this.logger.warn("Cannot post Slack reply: no slackBotToken available");
110
+ return;
111
+ }
112
+ // Thread the reply under the original message
113
+ const threadTs = event.payload.thread_ts || event.payload.ts;
114
+ await new SlackMessageService().postMessage({
115
+ token: event.slackBotToken,
116
+ channel: event.payload.channel,
117
+ text: summary,
118
+ thread_ts: threadTs,
119
+ });
120
+ this.logger.info(`Posted Slack reply to channel ${event.payload.channel} (thread ${threadTs})`);
121
+ }
122
+ catch (error) {
123
+ this.logger.error("Failed to post Slack reply", error instanceof Error ? error : new Error(String(error)));
124
+ }
125
+ }
126
+ async acknowledgeReceipt(event) {
127
+ if (!event.slackBotToken) {
128
+ this.logger.warn("Cannot add Slack reaction: no slackBotToken available (SLACK_BOT_TOKEN env var not set)");
129
+ return;
130
+ }
131
+ await new SlackReactionService().addReaction({
132
+ token: event.slackBotToken,
133
+ channel: event.payload.channel,
134
+ timestamp: event.payload.ts,
135
+ name: "eyes",
136
+ });
137
+ }
138
+ async notifyBusy(event) {
139
+ if (!event.slackBotToken) {
140
+ return;
141
+ }
142
+ const threadTs = event.payload.thread_ts || event.payload.ts;
143
+ await new SlackMessageService().postMessage({
144
+ token: event.slackBotToken,
145
+ channel: event.payload.channel,
146
+ text: "I'm still working on the previous request in this thread. I'll pick up your new message once I'm done.",
147
+ thread_ts: threadTs,
148
+ });
149
+ }
150
+ formatThreadContext(messages) {
151
+ const formattedMessages = messages
152
+ .map((msg) => ` <message>
153
+ <author>${msg.user ?? "unknown"}</author>
154
+ <timestamp>${msg.ts}</timestamp>
155
+ <content>
156
+ ${msg.text}
157
+ </content>
158
+ </message>`)
159
+ .join("\n");
160
+ return `<slack_thread_context>\n${formattedMessages}\n</slack_thread_context>`;
161
+ }
162
+ }
163
+ //# sourceMappingURL=SlackChatAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlackChatAdapter.js","sourceRoot":"","sources":["../src/SlackChatAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,4 @@
1
- /**
2
- * Logger interface for WorktreeIncludeService
3
- */
4
- export interface WorktreeIncludeLogger {
5
- info(message: string, ...args: unknown[]): void;
6
- warn(message: string, ...args: unknown[]): void;
7
- error(message: string, ...args: unknown[]): void;
8
- }
1
+ import { type ILogger } from "cyrus-core";
9
2
  /**
10
3
  * Service responsible for handling .worktreeinclude file processing
11
4
  *
@@ -17,7 +10,7 @@ export interface WorktreeIncludeLogger {
17
10
  */
18
11
  export declare class WorktreeIncludeService {
19
12
  private logger;
20
- constructor(logger?: WorktreeIncludeLogger);
13
+ constructor(logger?: ILogger);
21
14
  /**
22
15
  * Process .worktreeinclude and copy matching ignored files to the worktree
23
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeIncludeService.d.ts","sourceRoot":"","sources":["../src/WorktreeIncludeService.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACrC,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;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,CAAC,EAAE,qBAAqB;IAI1C;;;;;OAKG;IACG,gBAAgB,CACrB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2EhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAuCzB"}
1
+ {"version":3,"file":"WorktreeIncludeService.d.ts","sourceRoot":"","sources":["../src/WorktreeIncludeService.ts"],"names":[],"mappings":"AAQA,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAGxD;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IAClC,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,CAAC,EAAE,OAAO;IAK5B;;;;;OAKG;IACG,gBAAgB,CACrB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2EhB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAuCzB"}
@@ -1,14 +1,7 @@
1
1
  import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, } from "node:fs";
2
2
  import { dirname, join, relative } from "node:path";
3
+ import { createLogger } from "cyrus-core";
3
4
  import ignore from "ignore";
4
- /**
5
- * Default console-based logger implementation
6
- */
7
- const defaultLogger = {
8
- info: (message, ...args) => console.log(`[WorktreeIncludeService] ${message}`, ...args),
9
- warn: (message, ...args) => console.warn(`[WorktreeIncludeService] ${message}`, ...args),
10
- error: (message, ...args) => console.error(`[WorktreeIncludeService] ${message}`, ...args),
11
- };
12
5
  /**
13
6
  * Service responsible for handling .worktreeinclude file processing
14
7
  *
@@ -21,7 +14,8 @@ const defaultLogger = {
21
14
  export class WorktreeIncludeService {
22
15
  logger;
23
16
  constructor(logger) {
24
- this.logger = logger ?? defaultLogger;
17
+ this.logger =
18
+ logger ?? createLogger({ component: "WorktreeIncludeService" });
25
19
  }
26
20
  /**
27
21
  * Process .worktreeinclude and copy matching ignored files to the worktree
@@ -1 +1 @@
1
- {"version":3,"file":"WorktreeIncludeService.js","sourceRoot":"","sources":["../src/WorktreeIncludeService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorktreeIncludeService.js","sourceRoot":"","sources":["../src/WorktreeIncludeService.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,14 +4,19 @@ export type { EdgeConfig, EdgeWorkerConfig, OAuthCallbackHandler, RepositoryConf
4
4
  export { AgentSessionManager } from "./AgentSessionManager.js";
5
5
  export type { AskUserQuestionHandlerConfig, AskUserQuestionHandlerDeps, } from "./AskUserQuestionHandler.js";
6
6
  export { AskUserQuestionHandler } from "./AskUserQuestionHandler.js";
7
+ export type { ChatPlatformAdapter, ChatPlatformName, ChatSessionHandlerDeps, } from "./ChatSessionHandler.js";
8
+ export { ChatSessionHandler } from "./ChatSessionHandler.js";
7
9
  export { EdgeWorker } from "./EdgeWorker.js";
8
- export type { GitServiceLogger } from "./GitService.js";
9
10
  export { GitService } from "./GitService.js";
11
+ export type { SerializedGlobalRegistryState } from "./GlobalSessionRegistry.js";
12
+ export { GlobalSessionRegistry } from "./GlobalSessionRegistry.js";
10
13
  export { RepositoryRouter } from "./RepositoryRouter.js";
11
14
  export { SharedApplicationServer } from "./SharedApplicationServer.js";
15
+ export { SlackChatAdapter } from "./SlackChatAdapter.js";
16
+ export type { ActivityPostOptions, ActivityPostResult, ActivitySignal, IActivitySink, } from "./sinks/index.js";
17
+ export { LinearActivitySink } from "./sinks/index.js";
12
18
  export type { EdgeWorkerEvents } from "./types.js";
13
19
  export { type AccessCheckResult, DEFAULT_BLOCK_MESSAGE, UserAccessControl, } from "./UserAccessControl.js";
14
20
  export { DEFAULT_VALIDATION_LOOP_CONFIG, parseValidationResult, VALIDATION_RESULT_SCHEMA, type ValidationFixerContext, type ValidationLoopConfig, type ValidationLoopState, type ValidationResult, } from "./validation/index.js";
15
- export type { WorktreeIncludeLogger } from "./WorktreeIncludeService.js";
16
21
  export { WorktreeIncludeService } from "./WorktreeIncludeService.js";
17
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACX,4BAA4B,EAC5B,0BAA0B,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACN,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACX,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,SAAS,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACX,4BAA4B,EAC5B,0BAA0B,GAC1B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EACX,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EACX,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EACN,KAAK,iBAAiB,EACtB,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACN,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
package/dist/index.js CHANGED
@@ -1,10 +1,14 @@
1
1
  export { getAllTools, readOnlyTools } from "cyrus-claude-runner";
2
2
  export { AgentSessionManager } from "./AgentSessionManager.js";
3
3
  export { AskUserQuestionHandler } from "./AskUserQuestionHandler.js";
4
+ export { ChatSessionHandler } from "./ChatSessionHandler.js";
4
5
  export { EdgeWorker } from "./EdgeWorker.js";
5
6
  export { GitService } from "./GitService.js";
7
+ export { GlobalSessionRegistry } from "./GlobalSessionRegistry.js";
6
8
  export { RepositoryRouter } from "./RepositoryRouter.js";
7
9
  export { SharedApplicationServer } from "./SharedApplicationServer.js";
10
+ export { SlackChatAdapter } from "./SlackChatAdapter.js";
11
+ export { LinearActivitySink } from "./sinks/index.js";
8
12
  // User access control
9
13
  export { DEFAULT_BLOCK_MESSAGE, UserAccessControl, } from "./UserAccessControl.js";
10
14
  // Export validation loop module
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,sBAAsB;AACtB,OAAO,EAEN,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,gCAAgC;AAChC,OAAO,EACN,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,GAKxB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAK/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAMrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,sBAAsB;AACtB,OAAO,EAEN,qBAAqB,EACrB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,gCAAgC;AAChC,OAAO,EACN,8BAA8B,EAC9B,qBAAqB,EACrB,wBAAwB,GAKxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
@@ -10,8 +10,12 @@
10
10
  <description>{{issue_description}}</description>
11
11
  <url>{{issue_url}}</url>
12
12
  <assignee>
13
- <id>{{assignee_id}}</id>
14
- <name>{{assignee_name}}</name>
13
+ <linear_id>{{assignee_id}}</linear_id>
14
+ <linear_display_name>{{assignee_name}}</linear_display_name>
15
+ <linear_profile_url>{{assignee_linear_profile_url}}</linear_profile_url>
16
+ <github_username>{{assignee_github_username}}</github_username>
17
+ <github_user_id>{{assignee_github_user_id}}</github_user_id>
18
+ <github_noreply_email>{{assignee_github_noreply_email}}</github_noreply_email>
15
19
  </assignee>
16
20
  </linear_issue>
17
21
 
@@ -1,21 +1,23 @@
1
1
  /**
2
2
  * ProcedureAnalyzer - Intelligent analysis of agent sessions to determine procedures
3
3
  *
4
- * Uses a SimpleAgentRunner (Claude or Gemini) to analyze requests and determine
5
- * which procedure (sequence of subroutines) should be executed.
4
+ * Uses a SimpleAgentRunner (Claude, Gemini, Codex, or Cursor) to analyze requests
5
+ * and determine which procedure (sequence of subroutines) should be executed.
6
6
  */
7
- import type { CyrusAgentSession } from "cyrus-core";
7
+ import { type CyrusAgentSession, type ILogger } from "cyrus-core";
8
8
  import type { ProcedureAnalysisDecision, ProcedureDefinition, SubroutineDefinition } from "./types.js";
9
- export type SimpleRunnerType = "claude" | "gemini";
9
+ export type SimpleRunnerType = "claude" | "gemini" | "codex" | "cursor";
10
10
  export interface ProcedureAnalyzerConfig {
11
11
  cyrusHome: string;
12
12
  model?: string;
13
13
  timeoutMs?: number;
14
14
  runnerType?: SimpleRunnerType;
15
+ logger?: ILogger;
15
16
  }
16
17
  export declare class ProcedureAnalyzer {
17
18
  private analysisRunner;
18
19
  private procedures;
20
+ private logger;
19
21
  constructor(config: ProcedureAnalyzerConfig);
20
22
  /**
21
23
  * Build the system prompt for request analysis and classification
@@ -1 +1 @@
1
- {"version":3,"file":"ProcedureAnalyzer.d.ts","sourceRoot":"","sources":["../../src/procedures/ProcedureAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,YAAY,CAAC;AAIxE,OAAO,KAAK,EACX,yBAAyB,EACzB,mBAAmB,EAGnB,oBAAoB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEnD,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,UAAU,CAA+C;gBAErD,MAAM,EAAE,uBAAuB;IAyC3C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmDjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAMhC;;OAEG;IACG,gBAAgB,CACrB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,CAAC;IAyCrC;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,GAAG,IAAI;IA6B1E;;OAEG;IACH,oBAAoB,CACnB,OAAO,EAAE,iBAAiB,GACxB,oBAAoB,GAAG,IAAI;IAwB9B;;OAEG;IACH,2BAA2B,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACH,uBAAuB,CACtB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,MAAM,GACb,IAAI;IA6BP;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI;IAiBlE;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAIxD;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI;IAIvD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;CAG3D"}
1
+ {"version":3,"file":"ProcedureAnalyzer.d.ts","sourceRoot":"","sources":["../../src/procedures/ProcedureAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACN,KAAK,iBAAiB,EAEtB,KAAK,OAAO,EAEZ,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EACX,yBAAyB,EACzB,mBAAmB,EAGnB,oBAAoB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,uBAAuB;IAyD3C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAmDjC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAMhC;;OAEG;IACG,gBAAgB,CACrB,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,CAAC;IAyCrC;;;OAGG;IACH,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,GAAG,IAAI;IA6B1E;;OAEG;IACH,oBAAoB,CACnB,OAAO,EAAE,iBAAiB,GACxB,oBAAoB,GAAG,IAAI;IAwB9B;;OAEG;IACH,2BAA2B,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,mBAAmB,GAC5B,IAAI;IAYP;;OAEG;IACH,uBAAuB,CACtB,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,MAAM,GACb,IAAI;IAgCP;;;OAGG;IACH,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI;IAiBlE;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAIxD;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI;IAIvD;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;CAG3D"}