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
@@ -0,0 +1,392 @@
1
+ import { getAllTools, getCoordinatorTools, getReadOnlyTools, getSafeTools, } from "cyrus-claude-runner";
2
+ export class RunnerSelectionService {
3
+ config;
4
+ logger;
5
+ constructor(config, logger) {
6
+ this.config = config;
7
+ this.logger = logger;
8
+ }
9
+ /**
10
+ * Determine the default runner type.
11
+ *
12
+ * Priority:
13
+ * 1. Explicit `defaultRunner` in config
14
+ * 2. Auto-detect from available API keys (if exactly one runner has keys)
15
+ * 3. Fall back to "claude"
16
+ */
17
+ getDefaultRunner() {
18
+ if (this.config.defaultRunner) {
19
+ return this.config.defaultRunner;
20
+ }
21
+ // Auto-detect from environment: if exactly one runner's API key is set, use it
22
+ const available = [];
23
+ if (process.env.CLAUDE_CODE_OAUTH_TOKEN || process.env.ANTHROPIC_API_KEY) {
24
+ available.push("claude");
25
+ }
26
+ if (process.env.GEMINI_API_KEY) {
27
+ available.push("gemini");
28
+ }
29
+ if (process.env.OPENAI_API_KEY) {
30
+ available.push("codex");
31
+ }
32
+ if (process.env.CURSOR_API_KEY) {
33
+ available.push("cursor");
34
+ }
35
+ if (available.length === 1 && available[0]) {
36
+ return available[0];
37
+ }
38
+ return "claude";
39
+ }
40
+ /**
41
+ * Resolve default model for a given runner from config with sensible built-in defaults.
42
+ */
43
+ getDefaultModelForRunner(runnerType) {
44
+ if (runnerType === "claude") {
45
+ return (this.config.claudeDefaultModel || this.config.defaultModel || "opus");
46
+ }
47
+ if (runnerType === "gemini") {
48
+ return this.config.geminiDefaultModel || "gemini-2.5-pro";
49
+ }
50
+ if (runnerType === "cursor") {
51
+ return "gpt-5";
52
+ }
53
+ return this.config.codexDefaultModel || "gpt-5.3-codex";
54
+ }
55
+ /**
56
+ * Resolve default fallback model for a given runner from config with sensible built-in defaults.
57
+ * Supports legacy Claude fallback key for backwards compatibility.
58
+ */
59
+ getDefaultFallbackModelForRunner(runnerType) {
60
+ if (runnerType === "claude") {
61
+ return (this.config.claudeDefaultFallbackModel ||
62
+ this.config.defaultFallbackModel ||
63
+ "sonnet");
64
+ }
65
+ if (runnerType === "gemini") {
66
+ return "gemini-2.5-flash";
67
+ }
68
+ if (runnerType === "codex") {
69
+ return "gpt-5.2-codex";
70
+ }
71
+ if (runnerType === "cursor") {
72
+ return "gpt-5";
73
+ }
74
+ return "gpt-5";
75
+ }
76
+ /**
77
+ * Parse a bracketed tag from issue description.
78
+ *
79
+ * Supports escaped brackets (`\\[tag=value\\]`) which Linear can emit.
80
+ */
81
+ parseDescriptionTag(description, tagName) {
82
+ const escapedTag = tagName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
83
+ const pattern = new RegExp(`\\\\?\\[${escapedTag}=([a-zA-Z0-9_.:/-]+)\\\\?\\]`, "i");
84
+ const match = description.match(pattern);
85
+ return match?.[1];
86
+ }
87
+ /**
88
+ * Determine runner type and model using labels + issue description tags.
89
+ *
90
+ * Supported description tags:
91
+ * - [agent=claude|gemini|codex|cursor]
92
+ * - [model=<model-name>]
93
+ *
94
+ * Precedence:
95
+ * 1. Description tags override labels
96
+ * 2. Agent labels override model labels
97
+ * 3. Model labels can infer agent type
98
+ * 4. Defaults to claude runner
99
+ */
100
+ determineRunnerSelection(labels, issueDescription) {
101
+ const normalizedLabels = (labels || []).map((label) => label.toLowerCase());
102
+ const normalizedDescription = issueDescription || "";
103
+ const descriptionAgentTagRaw = this.parseDescriptionTag(normalizedDescription, "agent");
104
+ const descriptionModelTagRaw = this.parseDescriptionTag(normalizedDescription, "model");
105
+ const defaultModelByRunner = {
106
+ claude: this.getDefaultModelForRunner("claude"),
107
+ gemini: this.getDefaultModelForRunner("gemini"),
108
+ codex: this.getDefaultModelForRunner("codex"),
109
+ cursor: this.getDefaultModelForRunner("cursor"),
110
+ };
111
+ const defaultFallbackByRunner = {
112
+ claude: this.getDefaultFallbackModelForRunner("claude"),
113
+ gemini: this.getDefaultFallbackModelForRunner("gemini"),
114
+ codex: this.getDefaultFallbackModelForRunner("codex"),
115
+ cursor: this.getDefaultFallbackModelForRunner("cursor"),
116
+ };
117
+ const isCodexModel = (model) => /gpt-[a-z0-9.-]*codex$/i.test(model) || /^gpt-[a-z0-9.-]+$/i.test(model);
118
+ const inferRunnerFromModel = (model) => {
119
+ if (!model)
120
+ return undefined;
121
+ const normalizedModel = model.toLowerCase();
122
+ if (normalizedModel.startsWith("gemini"))
123
+ return "gemini";
124
+ if (normalizedModel === "opus" ||
125
+ normalizedModel === "sonnet" ||
126
+ normalizedModel === "haiku" ||
127
+ normalizedModel.startsWith("claude")) {
128
+ return "claude";
129
+ }
130
+ if (isCodexModel(normalizedModel))
131
+ return "codex";
132
+ return undefined;
133
+ };
134
+ const inferFallbackModel = (model, runnerType) => {
135
+ const normalizedModel = model.toLowerCase();
136
+ if (runnerType === "claude") {
137
+ if (normalizedModel === "opus")
138
+ return "sonnet";
139
+ if (normalizedModel === "sonnet")
140
+ return "haiku";
141
+ // Keep haiku fallback on sonnet for retry behavior
142
+ if (normalizedModel === "haiku")
143
+ return "sonnet";
144
+ return "sonnet";
145
+ }
146
+ if (runnerType === "gemini") {
147
+ if (normalizedModel === "gemini-3" ||
148
+ normalizedModel === "gemini-3-pro" ||
149
+ normalizedModel === "gemini-3-pro-preview") {
150
+ return "gemini-2.5-pro";
151
+ }
152
+ if (normalizedModel === "gemini-2.5-pro" ||
153
+ normalizedModel === "gemini-2.5") {
154
+ return "gemini-2.5-flash";
155
+ }
156
+ if (normalizedModel === "gemini-2.5-flash") {
157
+ return "gemini-2.5-flash-lite";
158
+ }
159
+ if (normalizedModel === "gemini-2.5-flash-lite") {
160
+ return "gemini-2.5-flash-lite";
161
+ }
162
+ return "gemini-2.5-flash";
163
+ }
164
+ if (isCodexModel(normalizedModel)) {
165
+ return "gpt-5.2-codex";
166
+ }
167
+ return "gpt-5";
168
+ };
169
+ const resolveAgentFromLabel = (lowercaseLabels) => {
170
+ if (lowercaseLabels.includes("cursor")) {
171
+ return "cursor";
172
+ }
173
+ if (lowercaseLabels.includes("codex") ||
174
+ lowercaseLabels.includes("openai")) {
175
+ return "codex";
176
+ }
177
+ if (lowercaseLabels.includes("gemini")) {
178
+ return "gemini";
179
+ }
180
+ if (lowercaseLabels.includes("claude")) {
181
+ return "claude";
182
+ }
183
+ return undefined;
184
+ };
185
+ const resolveModelFromLabel = (lowercaseLabels) => {
186
+ const codexModelLabel = lowercaseLabels.find((label) => /gpt-[a-z0-9.-]*codex$/i.test(label));
187
+ if (codexModelLabel) {
188
+ return codexModelLabel;
189
+ }
190
+ if (lowercaseLabels.includes("gemini-2.5-pro") ||
191
+ lowercaseLabels.includes("gemini-2.5")) {
192
+ return "gemini-2.5-pro";
193
+ }
194
+ if (lowercaseLabels.includes("gemini-2.5-flash")) {
195
+ return "gemini-2.5-flash";
196
+ }
197
+ if (lowercaseLabels.includes("gemini-2.5-flash-lite")) {
198
+ return "gemini-2.5-flash-lite";
199
+ }
200
+ if (lowercaseLabels.includes("gemini-3") ||
201
+ lowercaseLabels.includes("gemini-3-pro") ||
202
+ lowercaseLabels.includes("gemini-3-pro-preview")) {
203
+ return "gemini-3-pro-preview";
204
+ }
205
+ if (lowercaseLabels.includes("opus"))
206
+ return "opus";
207
+ if (lowercaseLabels.includes("sonnet"))
208
+ return "sonnet";
209
+ if (lowercaseLabels.includes("haiku"))
210
+ return "haiku";
211
+ return undefined;
212
+ };
213
+ const agentFromDescription = descriptionAgentTagRaw?.toLowerCase();
214
+ const resolvedAgentFromDescription = agentFromDescription === "cursor"
215
+ ? "cursor"
216
+ : agentFromDescription === "codex" || agentFromDescription === "openai"
217
+ ? "codex"
218
+ : agentFromDescription === "gemini"
219
+ ? "gemini"
220
+ : agentFromDescription === "claude"
221
+ ? "claude"
222
+ : undefined;
223
+ const resolvedAgentFromLabels = resolveAgentFromLabel(normalizedLabels);
224
+ const modelFromDescription = descriptionModelTagRaw;
225
+ const modelFromLabels = resolveModelFromLabel(normalizedLabels);
226
+ const explicitModel = modelFromDescription || modelFromLabels;
227
+ const runnerType = resolvedAgentFromDescription ||
228
+ resolvedAgentFromLabels ||
229
+ inferRunnerFromModel(explicitModel) ||
230
+ this.getDefaultRunner();
231
+ // If an explicit agent conflicts with model's implied runner, keep the agent and reset model.
232
+ const modelRunner = inferRunnerFromModel(explicitModel);
233
+ let modelOverride = explicitModel;
234
+ if (modelOverride && modelRunner && modelRunner !== runnerType) {
235
+ modelOverride = undefined;
236
+ }
237
+ if (!modelOverride) {
238
+ modelOverride = defaultModelByRunner[runnerType];
239
+ }
240
+ let fallbackModelOverride = inferFallbackModel(modelOverride, runnerType);
241
+ if (!fallbackModelOverride) {
242
+ fallbackModelOverride = defaultFallbackByRunner[runnerType];
243
+ }
244
+ return {
245
+ runnerType,
246
+ modelOverride,
247
+ fallbackModelOverride,
248
+ };
249
+ }
250
+ /**
251
+ * Resolve a tool preset string to an array of tool names.
252
+ */
253
+ resolveToolPreset(preset) {
254
+ if (Array.isArray(preset)) {
255
+ return preset;
256
+ }
257
+ switch (preset) {
258
+ case "readOnly":
259
+ return getReadOnlyTools();
260
+ case "safe":
261
+ return getSafeTools();
262
+ case "all":
263
+ return getAllTools();
264
+ case "coordinator":
265
+ return getCoordinatorTools();
266
+ default:
267
+ // If it's a string but not a preset, treat it as a single tool
268
+ return [preset];
269
+ }
270
+ }
271
+ /**
272
+ * Build allowed tools list with Linear MCP tools automatically included
273
+ */
274
+ buildAllowedTools(repository, promptType) {
275
+ // graphite-orchestrator uses the same tool config as orchestrator
276
+ const effectivePromptType = promptType === "graphite-orchestrator" ? "orchestrator" : promptType;
277
+ let baseTools = [];
278
+ let toolSource = "";
279
+ // Priority order:
280
+ // 1. Repository-specific prompt type configuration
281
+ const promptConfig = effectivePromptType
282
+ ? repository.labelPrompts?.[effectivePromptType]
283
+ : undefined;
284
+ // Only access allowedTools if config is object form (not simple string[])
285
+ const promptAllowedTools = promptConfig && !Array.isArray(promptConfig)
286
+ ? promptConfig.allowedTools
287
+ : undefined;
288
+ if (promptAllowedTools) {
289
+ baseTools = this.resolveToolPreset(promptAllowedTools);
290
+ toolSource = `repository label prompt (${effectivePromptType})`;
291
+ }
292
+ // 2. Global prompt type defaults
293
+ else if (effectivePromptType &&
294
+ this.config.promptDefaults?.[effectivePromptType]?.allowedTools) {
295
+ baseTools = this.resolveToolPreset(this.config.promptDefaults[effectivePromptType].allowedTools);
296
+ toolSource = `global prompt defaults (${effectivePromptType})`;
297
+ }
298
+ // 3. Repository-level allowed tools
299
+ else if (repository.allowedTools) {
300
+ baseTools = repository.allowedTools;
301
+ toolSource = "repository configuration";
302
+ }
303
+ // 4. Global default allowed tools
304
+ else if (this.config.defaultAllowedTools) {
305
+ baseTools = this.config.defaultAllowedTools;
306
+ toolSource = "global defaults";
307
+ }
308
+ // 5. Fall back to safe tools
309
+ else {
310
+ baseTools = getSafeTools();
311
+ toolSource = "safe tools fallback";
312
+ }
313
+ // Linear MCP tools that should always be available
314
+ // See: https://docs.anthropic.com/en/docs/claude-code/iam#tool-specific-permission-rules
315
+ const linearMcpTools = ["mcp__linear", "mcp__cyrus-tools"];
316
+ // Combine and deduplicate
317
+ const allTools = [...new Set([...baseTools, ...linearMcpTools])];
318
+ this.logger.debug(`Tool selection for ${repository.name}: ${allTools.length} tools from ${toolSource}`);
319
+ return allTools;
320
+ }
321
+ /**
322
+ * Build disallowed tools list from repository and global config
323
+ */
324
+ buildDisallowedTools(repository, promptType) {
325
+ // graphite-orchestrator uses the same tool config as orchestrator
326
+ const effectivePromptType = promptType === "graphite-orchestrator" ? "orchestrator" : promptType;
327
+ let disallowedTools = [];
328
+ let toolSource = "";
329
+ // Priority order (same as allowedTools):
330
+ // 1. Repository-specific prompt type configuration
331
+ const promptConfig = effectivePromptType
332
+ ? repository.labelPrompts?.[effectivePromptType]
333
+ : undefined;
334
+ // Only access disallowedTools if config is object form (not simple string[])
335
+ const promptDisallowedTools = promptConfig && !Array.isArray(promptConfig)
336
+ ? promptConfig.disallowedTools
337
+ : undefined;
338
+ if (promptDisallowedTools) {
339
+ disallowedTools = promptDisallowedTools;
340
+ toolSource = `repository label prompt (${effectivePromptType})`;
341
+ }
342
+ // 2. Global prompt type defaults
343
+ else if (effectivePromptType &&
344
+ this.config.promptDefaults?.[effectivePromptType]?.disallowedTools) {
345
+ disallowedTools =
346
+ this.config.promptDefaults[effectivePromptType].disallowedTools;
347
+ toolSource = `global prompt defaults (${effectivePromptType})`;
348
+ }
349
+ // 3. Repository-level disallowed tools
350
+ else if (repository.disallowedTools) {
351
+ disallowedTools = repository.disallowedTools;
352
+ toolSource = "repository configuration";
353
+ }
354
+ // 4. Global default disallowed tools
355
+ else if (this.config.defaultDisallowedTools) {
356
+ disallowedTools = this.config.defaultDisallowedTools;
357
+ toolSource = "global defaults";
358
+ }
359
+ // 5. No defaults for disallowedTools (as per requirements)
360
+ else {
361
+ disallowedTools = [];
362
+ toolSource = "none (no defaults)";
363
+ }
364
+ if (disallowedTools.length > 0) {
365
+ this.logger.debug(`Disallowed tools for ${repository.name}: ${disallowedTools.length} tools from ${toolSource}`);
366
+ }
367
+ return disallowedTools;
368
+ }
369
+ /**
370
+ * Merge subroutine-level disallowedTools with base disallowedTools
371
+ * @param session Current agent session
372
+ * @param baseDisallowedTools Base disallowed tools from repository/global config
373
+ * @param logContext Context string for logging (e.g., "EdgeWorker", "resumeClaudeSession")
374
+ * @param procedureAnalyzer ProcedureAnalyzer instance to resolve current subroutine
375
+ * @returns Merged disallowed tools list
376
+ */
377
+ mergeSubroutineDisallowedTools(session, baseDisallowedTools, logContext, procedureAnalyzer) {
378
+ const currentSubroutine = procedureAnalyzer.getCurrentSubroutine(session);
379
+ if (currentSubroutine?.disallowedTools) {
380
+ const mergedTools = [
381
+ ...new Set([
382
+ ...baseDisallowedTools,
383
+ ...currentSubroutine.disallowedTools,
384
+ ]),
385
+ ];
386
+ this.logger.debug(`[${logContext}] Merged subroutine-level disallowedTools for ${currentSubroutine.name}:`, currentSubroutine.disallowedTools);
387
+ return mergedTools;
388
+ }
389
+ return baseDisallowedTools;
390
+ }
391
+ }
392
+ //# sourceMappingURL=RunnerSelectionService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunnerSelectionService.js","sourceRoot":"","sources":["../src/RunnerSelectionService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import { type ILogger } from "cyrus-core";
2
3
  import { type FastifyInstance } from "fastify";
3
4
  /**
4
5
  * OAuth callback state for tracking flows
@@ -36,7 +37,8 @@ export declare class SharedApplicationServer {
36
37
  private isListening;
37
38
  private tunnelClient;
38
39
  private skipTunnel;
39
- constructor(port?: number, host?: string, skipTunnel?: boolean);
40
+ private logger;
41
+ constructor(port?: number, host?: string, skipTunnel?: boolean, logger?: ILogger);
40
42
  /**
41
43
  * Initialize the Fastify app instance (must be called before registering routes)
42
44
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SharedApplicationServer.d.ts","sourceRoot":"","sources":["../src/SharedApplicationServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,CAAC,WAAW,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;KAC5B,KAAK,IAAI,CAAC;IACX,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IACnC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,eAAe,CAMnB;IAEJ,OAAO,CAAC,qBAAqB,CAGzB;IACJ,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAAU;gBAG3B,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAoB,EAC1B,UAAU,GAAE,OAAe;IAO5B;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAUzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B;;OAEG;YACW,qBAAqB;IAuDnC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,kBAAkB,IAAI,eAAe;IAKrC;;;;;;;OAOG;IACH,sBAAsB,CACrB,KAAK,EAAE,MAAM,EACb,eAAe,EACZ,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EACjE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,GACxE,IAAI;IAkBP;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU7C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;KAC5B,CAAC;IA6CF;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;QAC3C,OAAO,EAAE,OAAO,CAAC;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,GAAG,EAAE,MAAM,CAAC;KACZ;CA+BD"}
1
+ {"version":3,"file":"SharedApplicationServer.d.ts","sourceRoot":"","sources":["../src/SharedApplicationServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACxD,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,CAAC,WAAW,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;KAC5B,KAAK,IAAI,CAAC;IACX,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IACnC,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,eAAe,CAMnB;IAEJ,OAAO,CAAC,qBAAqB,CAGzB;IACJ,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,gBAAgB,CAAuC;IAC/D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,MAAM,CAAU;gBAGvB,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAoB,EAC1B,UAAU,GAAE,OAAe,EAC3B,MAAM,CAAC,EAAE,OAAO;IASjB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAUzB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B5B;;OAEG;YACW,qBAAqB;IAuDnC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB3B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;;OAGG;IACH,kBAAkB,IAAI,eAAe;IAKrC;;;;;;;OAOG;IACH,sBAAsB,CACrB,KAAK,EAAE,MAAM,EACb,eAAe,EACZ,MAAM,GACN,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EACjE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,GACxE,IAAI;IAkBP;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU7C;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAC/C,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;KAC5B,CAAC;IA6CF;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;QAC3C,OAAO,EAAE,OAAO,CAAC;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,GAAG,EAAE,MAAM,CAAC;KACZ;CA+BD"}
@@ -1,4 +1,5 @@
1
1
  import { CloudflareTunnelClient } from "cyrus-cloudflare-tunnel-client";
2
+ import { createLogger } from "cyrus-core";
2
3
  import Fastify from "fastify";
3
4
  /**
4
5
  * Shared application server that handles both webhooks and OAuth callbacks on a single port
@@ -16,10 +17,13 @@ export class SharedApplicationServer {
16
17
  isListening = false;
17
18
  tunnelClient = null;
18
19
  skipTunnel;
19
- constructor(port = 3456, host = "localhost", skipTunnel = false) {
20
+ logger;
21
+ constructor(port = 3456, host = "localhost", skipTunnel = false, logger) {
20
22
  this.port = port;
21
23
  this.host = host;
22
24
  this.skipTunnel = skipTunnel;
25
+ this.logger =
26
+ logger ?? createLogger({ component: "SharedApplicationServer" });
23
27
  }
24
28
  /**
25
29
  * Initialize the Fastify app instance (must be called before registering routes)
@@ -47,7 +51,7 @@ export class SharedApplicationServer {
47
51
  host: this.host,
48
52
  });
49
53
  this.isListening = true;
50
- console.log(`šŸ”— Shared application server listening on http://${this.host}:${this.port}`);
54
+ this.logger.info(`Shared application server listening on http://${this.host}:${this.port}`);
51
55
  // Start Cloudflare tunnel if CLOUDFLARE_TOKEN is set and tunnel is not skipped
52
56
  if (!this.skipTunnel && process.env.CLOUDFLARE_TOKEN) {
53
57
  await this.startCloudflareTunnel(process.env.CLOUDFLARE_TOKEN);
@@ -69,24 +73,24 @@ export class SharedApplicationServer {
69
73
  // Listen for connection events (Cloudflare establishes 4 connections per tunnel)
70
74
  this.tunnelClient.on("connected", () => {
71
75
  connectionCount++;
72
- console.log(`šŸ”— Cloudflare tunnel connection ${connectionCount}/${requiredConnections} established`);
76
+ this.logger.info(`Cloudflare tunnel connection ${connectionCount}/${requiredConnections} established`);
73
77
  if (connectionCount === requiredConnections) {
74
- console.log("āœ… Cloudflare tunnel fully connected and ready");
78
+ this.logger.info("Cloudflare tunnel fully connected and ready");
75
79
  resolve();
76
80
  }
77
81
  });
78
82
  // Listen for ready event to get tunnel URL
79
83
  this.tunnelClient.on("ready", (tunnelUrl) => {
80
- console.log(`šŸ”— Cloudflare tunnel URL: ${tunnelUrl}`);
84
+ this.logger.info(`Cloudflare tunnel URL: ${tunnelUrl}`);
81
85
  });
82
86
  // Listen for error events
83
87
  this.tunnelClient.on("error", (error) => {
84
- console.error("āŒ Cloudflare tunnel error:", error);
88
+ this.logger.error("Cloudflare tunnel error:", error);
85
89
  reject(error);
86
90
  });
87
91
  // Listen for disconnect events
88
92
  this.tunnelClient.on("disconnect", (reason) => {
89
- console.log(`šŸ”— Cloudflare tunnel disconnected: ${reason}`);
93
+ this.logger.info(`Cloudflare tunnel disconnected: ${reason}`);
90
94
  });
91
95
  // Start the tunnel
92
96
  this.tunnelClient.startTunnel().catch(reject);
@@ -105,19 +109,19 @@ export class SharedApplicationServer {
105
109
  // Reject all pending approvals before shutdown
106
110
  for (const [sessionId, approval] of this.pendingApprovals) {
107
111
  approval.reject(new Error("Server shutting down"));
108
- console.log(`šŸ” Rejected pending approval for session ${sessionId} due to shutdown`);
112
+ this.logger.debug(`Rejected pending approval for session ${sessionId} due to shutdown`);
109
113
  }
110
114
  this.pendingApprovals.clear();
111
115
  // Stop Cloudflare tunnel if running
112
116
  if (this.tunnelClient) {
113
117
  this.tunnelClient.disconnect();
114
118
  this.tunnelClient = null;
115
- console.log("šŸ”— Cloudflare tunnel stopped");
119
+ this.logger.info("Cloudflare tunnel stopped");
116
120
  }
117
121
  if (this.app && this.isListening) {
118
122
  await this.app.close();
119
123
  this.isListening = false;
120
- console.log("šŸ”— Shared application server stopped");
124
+ this.logger.info("Shared application server stopped");
121
125
  }
122
126
  }
123
127
  /**
@@ -146,12 +150,12 @@ export class SharedApplicationServer {
146
150
  if (typeof secretOrHandler === "string" && handler) {
147
151
  // ndjson-client style registration
148
152
  this.webhookHandlers.set(token, { secret: secretOrHandler, handler });
149
- console.log(`šŸ”— Registered webhook handler (proxy-style) for token ending in ...${token.slice(-4)}`);
153
+ this.logger.debug(`Registered webhook handler (proxy-style) for token ending in ...${token.slice(-4)}`);
150
154
  }
151
155
  else if (typeof secretOrHandler === "function") {
152
156
  // Legacy direct registration
153
157
  this.linearWebhookHandlers.set(token, secretOrHandler);
154
- console.log(`šŸ”— Registered webhook handler (legacy direct-style) for token ending in ...${token.slice(-4)}`);
158
+ this.logger.debug(`Registered webhook handler (legacy direct-style) for token ending in ...${token.slice(-4)}`);
155
159
  }
156
160
  else {
157
161
  throw new Error("Invalid webhook handler registration parameters");
@@ -164,7 +168,7 @@ export class SharedApplicationServer {
164
168
  const hadProxyHandler = this.webhookHandlers.delete(token);
165
169
  const hadDirectHandler = this.linearWebhookHandlers.delete(token);
166
170
  if (hadProxyHandler || hadDirectHandler) {
167
- console.log(`šŸ”— Unregistered webhook handler for token ending in ...${token.slice(-4)}`);
171
+ this.logger.debug(`Unregistered webhook handler for token ending in ...${token.slice(-4)}`);
168
172
  }
169
173
  }
170
174
  /**
@@ -184,14 +188,14 @@ export class SharedApplicationServer {
184
188
  if (useDirectOAuth) {
185
189
  // Use local OAuth authorize endpoint
186
190
  authUrl = `${callbackBaseUrl}/oauth/authorize?callback=${encodeURIComponent(`${callbackBaseUrl}/callback`)}`;
187
- console.log(`\nšŸ” Using direct OAuth mode (CYRUS_HOST_EXTERNAL=true)`);
191
+ this.logger.info(`Using direct OAuth mode (CYRUS_HOST_EXTERNAL=true)`);
188
192
  }
189
193
  else {
190
194
  // Use proxy OAuth endpoint
191
195
  authUrl = `${proxyUrl}/oauth/authorize?callback=${encodeURIComponent(`${callbackBaseUrl}/callback`)}`;
192
196
  }
193
- console.log(`\nšŸ‘‰ Opening your browser to authorize with Linear...`);
194
- console.log(`If the browser doesn't open, visit: ${authUrl}`);
197
+ this.logger.info(`Opening your browser to authorize with Linear...`);
198
+ this.logger.info(`If the browser doesn't open, visit: ${authUrl}`);
195
199
  // Timeout after 5 minutes
196
200
  setTimeout(() => {
197
201
  if (this.oauthCallbacks.has(flowId)) {
@@ -236,7 +240,7 @@ export class SharedApplicationServer {
236
240
  });
237
241
  // Generate approval URL
238
242
  const url = `http://${this.host}:${this.port}/approval?session=${encodeURIComponent(sessionId)}`;
239
- console.log(`šŸ” Registered approval request for session ${sessionId}: ${url}`);
243
+ this.logger.debug(`Registered approval request for session ${sessionId}: ${url}`);
240
244
  return { promise, url };
241
245
  }
242
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SharedApplicationServer.js","sourceRoot":"","sources":["../src/SharedApplicationServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedApplicationServer.js","sourceRoot":"","sources":["../src/SharedApplicationServer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type ILogger } from "cyrus-core";
1
2
  /**
2
3
  * Shared webhook server that can handle multiple Linear tokens
3
4
  * Each token has its own webhook secret for signature verification
@@ -8,7 +9,8 @@ export declare class SharedWebhookServer {
8
9
  private port;
9
10
  private host;
10
11
  private isListening;
11
- constructor(port?: number, host?: string);
12
+ private logger;
13
+ constructor(port?: number, host?: string, logger?: ILogger);
12
14
  /**
13
15
  * Start the shared webhook server
14
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWebhookServer.d.ts","sourceRoot":"","sources":["../src/SharedWebhookServer.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,eAAe,CAMnB;IACJ,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,GAAE,MAAa,EAAE,IAAI,GAAE,MAAoB;IAK3D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;IACH,sBAAsB,CACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,GACvE,IAAI;IAOP;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7C;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;YACW,oBAAoB;CAyFlC"}
1
+ {"version":3,"file":"SharedWebhookServer.d.ts","sourceRoot":"","sources":["../src/SharedWebhookServer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAExD;;;GAGG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,eAAe,CAMnB;IACJ,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAU;gBAGvB,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAoB,EAC1B,MAAM,CAAC,EAAE,OAAO;IAOjB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;IACH,sBAAsB,CACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,GACvE,IAAI;IAOP;;OAEG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAO7C;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;YACW,oBAAoB;CAyFlC"}