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.
- package/dist/ActivityPoster.d.ts +15 -0
- package/dist/ActivityPoster.d.ts.map +1 -0
- package/dist/ActivityPoster.js +194 -0
- package/dist/ActivityPoster.js.map +1 -0
- package/dist/AgentSessionManager.d.ts +63 -21
- package/dist/AgentSessionManager.d.ts.map +1 -1
- package/dist/AgentSessionManager.js +413 -404
- package/dist/AgentSessionManager.js.map +1 -1
- package/dist/AskUserQuestionHandler.d.ts +3 -2
- package/dist/AskUserQuestionHandler.d.ts.map +1 -1
- package/dist/AskUserQuestionHandler.js +15 -12
- package/dist/AskUserQuestionHandler.js.map +1 -1
- package/dist/AttachmentService.d.ts +69 -0
- package/dist/AttachmentService.d.ts.map +1 -0
- package/dist/AttachmentService.js +369 -0
- package/dist/AttachmentService.js.map +1 -0
- package/dist/ChatSessionHandler.d.ts +87 -0
- package/dist/ChatSessionHandler.d.ts.map +1 -0
- package/dist/ChatSessionHandler.js +227 -0
- package/dist/ChatSessionHandler.js.map +1 -0
- package/dist/ConfigManager.d.ts +91 -0
- package/dist/ConfigManager.d.ts.map +1 -0
- package/dist/ConfigManager.js +229 -0
- package/dist/ConfigManager.js.map +1 -0
- package/dist/EdgeWorker.d.ts +152 -120
- package/dist/EdgeWorker.d.ts.map +1 -1
- package/dist/EdgeWorker.js +1335 -2125
- package/dist/EdgeWorker.js.map +1 -1
- package/dist/GitService.d.ts +14 -10
- package/dist/GitService.d.ts.map +1 -1
- package/dist/GitService.js +91 -12
- package/dist/GitService.js.map +1 -1
- package/dist/GlobalSessionRegistry.d.ts +142 -0
- package/dist/GlobalSessionRegistry.d.ts.map +1 -0
- package/dist/GlobalSessionRegistry.js +254 -0
- package/dist/GlobalSessionRegistry.js.map +1 -0
- package/dist/PromptBuilder.d.ts +182 -0
- package/dist/PromptBuilder.d.ts.map +1 -0
- package/dist/PromptBuilder.js +963 -0
- package/dist/PromptBuilder.js.map +1 -0
- package/dist/RepositoryRouter.d.ts +3 -2
- package/dist/RepositoryRouter.d.ts.map +1 -1
- package/dist/RepositoryRouter.js +39 -37
- package/dist/RepositoryRouter.js.map +1 -1
- package/dist/RunnerSelectionService.d.ts +71 -0
- package/dist/RunnerSelectionService.d.ts.map +1 -0
- package/dist/RunnerSelectionService.js +392 -0
- package/dist/RunnerSelectionService.js.map +1 -0
- package/dist/SharedApplicationServer.d.ts +3 -1
- package/dist/SharedApplicationServer.d.ts.map +1 -1
- package/dist/SharedApplicationServer.js +21 -17
- package/dist/SharedApplicationServer.js.map +1 -1
- package/dist/SharedWebhookServer.d.ts +3 -1
- package/dist/SharedWebhookServer.d.ts.map +1 -1
- package/dist/SharedWebhookServer.js +19 -16
- package/dist/SharedWebhookServer.js.map +1 -1
- package/dist/SlackChatAdapter.d.ts +25 -0
- package/dist/SlackChatAdapter.d.ts.map +1 -0
- package/dist/SlackChatAdapter.js +163 -0
- package/dist/SlackChatAdapter.js.map +1 -0
- package/dist/WorktreeIncludeService.d.ts +2 -9
- package/dist/WorktreeIncludeService.d.ts.map +1 -1
- package/dist/WorktreeIncludeService.js +3 -9
- package/dist/WorktreeIncludeService.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/label-prompt-template.md +6 -2
- package/dist/procedures/ProcedureAnalyzer.d.ts +6 -4
- package/dist/procedures/ProcedureAnalyzer.d.ts.map +1 -1
- package/dist/procedures/ProcedureAnalyzer.js +32 -12
- package/dist/procedures/ProcedureAnalyzer.js.map +1 -1
- package/dist/procedures/registry.d.ts +19 -19
- package/dist/procedures/registry.d.ts.map +1 -1
- package/dist/procedures/registry.js +19 -19
- package/dist/procedures/registry.js.map +1 -1
- package/dist/procedures/types.d.ts +1 -0
- package/dist/procedures/types.d.ts.map +1 -1
- package/dist/prompt-assembly/types.d.ts +2 -0
- package/dist/prompt-assembly/types.d.ts.map +1 -1
- package/dist/prompts/graphite-orchestrator.md +4 -2
- package/dist/prompts/orchestrator.md +5 -3
- package/dist/prompts/standard-issue-assigned-user-prompt.md +7 -0
- package/dist/prompts/subroutines/gh-pr.md +12 -0
- package/dist/sinks/IActivitySink.d.ts +60 -0
- package/dist/sinks/IActivitySink.d.ts.map +1 -0
- package/dist/sinks/IActivitySink.js +2 -0
- package/dist/sinks/IActivitySink.js.map +1 -0
- package/dist/sinks/LinearActivitySink.d.ts +69 -0
- package/dist/sinks/LinearActivitySink.d.ts.map +1 -0
- package/dist/sinks/LinearActivitySink.js +111 -0
- package/dist/sinks/LinearActivitySink.js.map +1 -0
- package/dist/sinks/NoopActivitySink.d.ts +13 -0
- package/dist/sinks/NoopActivitySink.d.ts.map +1 -0
- package/dist/sinks/NoopActivitySink.js +17 -0
- package/dist/sinks/NoopActivitySink.js.map +1 -0
- package/dist/sinks/index.d.ts +9 -0
- package/dist/sinks/index.d.ts.map +1 -0
- package/dist/sinks/index.js +8 -0
- package/dist/sinks/index.js.map +1 -0
- package/label-prompt-template.md +6 -2
- package/package.json +17 -11
- package/prompts/graphite-orchestrator.md +4 -2
- package/prompts/orchestrator.md +5 -3
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
+
this.logger.debug(`Incoming webhook request: ${req.method} ${req.url}`);
|
|
78
81
|
if (req.method !== "POST") {
|
|
79
|
-
|
|
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
|
-
|
|
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
|
-
|
|
102
|
+
this.logger.debug(`Webhook received with ${body.length} bytes, ${this.webhookHandlers.size} registered handlers`);
|
|
100
103
|
if (!signature) {
|
|
101
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EACN,YAAY,GAGZ,MAAM,WAAW,CAAC;
|
|
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":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EAGpB,YAAY,IAAI,iBAAiB,GACjC,MAAM,6BAA6B,CAAC;AAGrC;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAGnB,YAAY,GAAG,OAAgB,CAAC;IACjC,MAAM,CAAU;IAExB,YAAY,MAAgB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,YAAY,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,uBAAuB,CAAC,KAAwB;QAC/C,OAAO,CACN,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,+BAA+B,CACxE,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAwB;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED,UAAU,CAAC,KAAwB;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,KAAwB;QACzC,OAAO;;;sBAGa,KAAK,CAAC,OAAO,CAAC,IAAI;iBACvB,KAAK,CAAC,OAAO,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;6EA2BuC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAwB;QAChD,2CAA2C;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,+DAA+D,CAC/D,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,mBAAmB,CAAC;gBACvD,KAAK,EAAE,KAAK,CAAC,aAAa;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;gBAC9B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS;gBAClC,KAAK,EAAE,EAAE;aACT,CAAC,CAAC;YAEH,0DAA0D;YAC1D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,CACP,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3B,CAAC,GAAG,CAAC,MAAM;gBACX,GAAG,CAAC,OAAO,KAAK,aAAa,CAC9B,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC;YACX,CAAC;YAED,OAAO,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;YACF,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED,KAAK,CAAC,SAAS,CACd,KAAwB,EACxB,MAAoB;QAEpB,IAAI,CAAC;YACJ,gEAAgE;YAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,oBAAoB,GAAG,CAAC,GAAG,QAAQ,CAAC;iBACxC,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAEtC,IAAI,OAAO,GAAG,iBAAiB,CAAC;YAChC,IACC,oBAAoB;gBACpB,oBAAoB,CAAC,IAAI,KAAK,WAAW;gBACzC,SAAS,IAAI,oBAAoB,EAChC,CAAC;gBACF,MAAM,GAAG,GAAG,oBAIX,CAAC;gBACF,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAC1C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,CAC9C,CAAC;gBACF,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;oBACrB,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC;gBAC1B,CAAC;YACF,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;gBACxE,OAAO;YACR,CAAC;YAED,8CAA8C;YAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAE7D,MAAM,IAAI,mBAAmB,EAAE,CAAC,WAAW,CAAC;gBAC3C,KAAK,EAAE,KAAK,CAAC,aAAa;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;gBAC9B,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,QAAQ;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,iCAAiC,KAAK,CAAC,OAAO,CAAC,OAAO,YAAY,QAAQ,GAAG,CAC7E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAChB,4BAA4B,EAC5B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACzD,CAAC;QACH,CAAC;IACF,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAwB;QAChD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,yFAAyF,CACzF,CAAC;YACF,OAAO;QACR,CAAC;QAED,MAAM,IAAI,oBAAoB,EAAE,CAAC,WAAW,CAAC;YAC5C,KAAK,EAAE,KAAK,CAAC,aAAa;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;YAC9B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,EAAE,MAAM;SACZ,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAwB;QACxC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAE7D,MAAM,IAAI,mBAAmB,EAAE,CAAC,WAAW,CAAC;YAC3C,KAAK,EAAE,KAAK,CAAC,aAAa;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;YAC9B,IAAI,EAAE,wGAAwG;YAC9G,SAAS,EAAE,QAAQ;SACnB,CAAC,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,QAA8B;QACzD,MAAM,iBAAiB,GAAG,QAAQ;aAChC,GAAG,CACH,CAAC,GAAG,EAAE,EAAE,CACP;cACS,GAAG,CAAC,IAAI,IAAI,SAAS;iBAClB,GAAG,CAAC,EAAE;;EAErB,GAAG,CAAC,IAAI;;aAEG,CACT;aACA,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO,2BAA2B,iBAAiB,2BAA2B,CAAC;IAChF,CAAC;CACD"}
|
|
@@ -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?:
|
|
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":"
|
|
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 =
|
|
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":"AAAA,OAAO,EACN,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"WorktreeIncludeService.js","sourceRoot":"","sources":["../src/WorktreeIncludeService.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,YAAY,EACZ,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,YAAY,EAAgB,MAAM,YAAY,CAAC;AACxD,OAAO,MAAuB,MAAM,QAAQ,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IAC1B,MAAM,CAAU;IAExB,YAAY,MAAgB;QAC3B,IAAI,CAAC,MAAM;YACV,MAAM,IAAI,YAAY,CAAC,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACrB,cAAsB,EACtB,YAAoB;QAEpB,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAErE,mCAAmC;QACnC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtC,0CAA0C;YAC1C,OAAO;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAE/D,kCAAkC;QAClC,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QAC3E,IAAI,uBAAuB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC/D,OAAO;QACR,CAAC;QAED,4BAA4B;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QACzD,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC;YAClD,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;YACtC,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,gFAAgF,CAChF,CAAC;YACF,OAAO;QACR,CAAC;QAED,yBAAyB;QACzB,MAAM,sBAAsB,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrE,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAEzD,sCAAsC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CACzC,cAAc,EACd,sBAAsB,EACtB,gBAAgB,CAChB,CAAC;QAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACxE,OAAO;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,WAAW,WAAW,CAAC,MAAM,iCAAiC,CAC9D,CAAC;QAEF,0BAA0B;QAC1B,KAAK,MAAM,YAAY,IAAI,WAAW,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAElD,IAAI,CAAC;gBACJ,sCAAsC;gBACtC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1B,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzC,CAAC;gBAED,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,oBAAoB,YAAY,KAAM,KAAe,CAAC,OAAO,EAAE,CAC/D,CAAC;YACH,CAAC;QACF,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,QAAgB;QACxC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO;aACZ,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACK,iBAAiB,CACxB,cAAsB,EACtB,sBAA8B,EAC9B,gBAAwB;QAExB,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,MAAM,aAAa,GAAG,CAAC,WAAmB,EAAQ,EAAE;YACnD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAElE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBAExD,sBAAsB;gBACtB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC3B,SAAS;gBACV,CAAC;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACzB,+CAA+C;oBAC/C,uDAAuD;oBACvD,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC3B,sCAAsC;oBACtC,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAC5D,MAAM,kBAAkB,GACvB,sBAAsB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;oBAE9C,IAAI,YAAY,IAAI,kBAAkB,EAAE,CAAC;wBACxC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAClC,CAAC;gBACF,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QAEF,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9B,OAAO,aAAa,CAAC;IACtB,CAAC;CACD"}
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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
|
-
<
|
|
14
|
-
<
|
|
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
|
|
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
|
|
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;
|
|
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"}
|