crewly 1.20.189 → 1.20.190
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/config/skills/agent/core/attach-file/execute.sh +13 -4
- package/config/skills/agent/core/complete-task/execute.sh +3 -0
- package/config/skills/agent/core/reply/SKILL.md +32 -4
- package/config/skills/agent/core/reply/execute.sh +23 -1
- package/config/skills/agent/core/reply/execute.test.sh +9 -0
- package/config/skills/agent/core/reply-chat/SKILL.md +9 -2
- package/config/skills/agent/core/reply-chat/execute.sh +13 -1
- package/config/skills/agent/core/report-status/execute.sh +5 -0
- package/config/skills/agent/core/send-chat-response/execute.sh +1 -1
- package/dist/backend/backend/src/constants.d.ts +23 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +27 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts +14 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js +66 -78
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts +12 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +148 -24
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +62 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +120 -35
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +7 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +9 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +19 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +4 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +10 -3
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +29 -0
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.js +92 -8
- package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.wiring.js +2 -2
- package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/orc/agent-prompt-reference.service.d.ts +81 -0
- package/dist/backend/backend/src/services/orc/agent-prompt-reference.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/agent-prompt-reference.service.js +88 -0
- package/dist/backend/backend/src/services/orc/agent-prompt-reference.service.js.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts +8 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js +11 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination-resolver.d.ts +218 -0
- package/dist/backend/backend/src/services/orc/reply-destination-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/reply-destination-resolver.js +343 -0
- package/dist/backend/backend/src/services/orc/reply-destination-resolver.js.map +1 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts +98 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +362 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts +9 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +32 -7
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +2 -2
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +9 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +4 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +24 -4
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -7
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js +159 -21
- package/dist/backend/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +23 -4
- package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js +42 -4
- package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +23 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +27 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +7 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +9 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +19 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +4 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +10 -3
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +457 -0
- package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/open-items/open-items.service.js +1158 -0
- package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -0
- package/dist/cli/backend/src/services/orc/agent-prompt-reference.service.d.ts +81 -0
- package/dist/cli/backend/src/services/orc/agent-prompt-reference.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/agent-prompt-reference.service.js +88 -0
- package/dist/cli/backend/src/services/orc/agent-prompt-reference.service.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts +8 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js +11 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts +9 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +32 -7
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +24 -4
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts +89 -7
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js +159 -21
- package/dist/cli/backend/src/services/slack/slack-typing-placeholder.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +23 -4
- package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js +42 -4
- package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -13,7 +13,8 @@ import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
|
|
|
13
13
|
import { readAgentSessionHeader } from '../../utils/agent-caller.utils.js';
|
|
14
14
|
import { OrcReplyRouteService } from '../../services/orc/orc-reply-route.service.js';
|
|
15
15
|
import { isStatusReport, planAgentReply } from '../../services/orc/agent-reply-target.js';
|
|
16
|
-
import { defaultWorkDestinationDeps,
|
|
16
|
+
import { defaultWorkDestinationDeps, postNewThread, } from '../../services/orc/work-item-destination.wiring.js';
|
|
17
|
+
import { deliverReply } from '../../services/orc/reply-destination.wiring.js';
|
|
17
18
|
import { parseSlackThreadKey } from '../../services/slack/slack-thread-key.js';
|
|
18
19
|
import { getOwnerMessageWatchdog } from '../../services/messaging/owner-message-watchdog.service.js';
|
|
19
20
|
import { LoggerService } from '../../services/core/logger.service.js';
|
|
@@ -47,7 +48,28 @@ const defaultDeps = {
|
|
|
47
48
|
ownsConversation: isAgentsOwnConversation,
|
|
48
49
|
postOrcSlack: defaultPostOrcSlack,
|
|
49
50
|
workDestination: defaultWorkDestinationDeps,
|
|
51
|
+
deliverReply: (input) => deliverReply(input),
|
|
52
|
+
settleNoReply: async (agentSession, slackChannelId, threadTs) => {
|
|
53
|
+
const { getSlackTypingPlaceholderService } = await import('../../services/slack/slack-typing-placeholder.service.js');
|
|
54
|
+
return (await getSlackTypingPlaceholderService()?.settleNoReplyNeeded(agentSession, slackChannelId, threadTs)) ?? 0;
|
|
55
|
+
},
|
|
50
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* The reference a `reply` names (`--to`, `--ticket`, `--work-item`, `--decision`).
|
|
59
|
+
*
|
|
60
|
+
* @param body - Request body
|
|
61
|
+
* @returns The reference, or undefined
|
|
62
|
+
*/
|
|
63
|
+
export function referenceOf(body) {
|
|
64
|
+
const str = (v) => (typeof v === 'string' && v.trim() ? v.trim() : undefined);
|
|
65
|
+
const ref = {
|
|
66
|
+
...(str(body.to) ?? str(body.messageId) ? { messageId: (str(body.to) ?? str(body.messageId)) } : {}),
|
|
67
|
+
...(str(body.ticket) ? { ticket: str(body.ticket) } : {}),
|
|
68
|
+
...(str(body.workItemId) ? { workItemId: str(body.workItemId) } : {}),
|
|
69
|
+
...(str(body.decision) ? { decisionId: str(body.decision) } : {}),
|
|
70
|
+
};
|
|
71
|
+
return Object.keys(ref).length > 0 ? ref : undefined;
|
|
72
|
+
}
|
|
51
73
|
/**
|
|
52
74
|
* Build the handler.
|
|
53
75
|
*
|
|
@@ -88,53 +110,41 @@ export function createAgentReplyHandler(deps = defaultDeps) {
|
|
|
88
110
|
res.status(201).json({ success: true, data: { slackChannelId: delivered.slackChannelId, messageTs: delivered.messageTs, destination: delivered.kind } });
|
|
89
111
|
return;
|
|
90
112
|
}
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (delivered) {
|
|
112
|
-
logger.info('Agent reply sent to its work item destination', {
|
|
113
|
-
session,
|
|
114
|
-
workItemId: workItem?.id,
|
|
115
|
-
destination: delivered.kind,
|
|
116
|
-
slackChannelId: delivered.slackChannelId,
|
|
117
|
-
threadTs: delivered.threadTs,
|
|
118
|
-
reason: delivered.reason,
|
|
119
|
-
});
|
|
120
|
-
res.status(201).json({
|
|
121
|
-
success: true,
|
|
122
|
-
data: { slackChannelId: delivered.slackChannelId, messageTs: delivered.messageTs, threadTs: delivered.threadTs, destination: delivered.kind },
|
|
123
|
-
});
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
logger.info('No Slack place for the work item destination — using the turn origin', { session, destination: destination.kind });
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
logger.warn('Work item destination post failed — using the turn origin', {
|
|
130
|
-
session,
|
|
131
|
-
destination: destination.kind,
|
|
132
|
-
error: err instanceof Error ? err.message : String(err),
|
|
133
|
-
});
|
|
134
|
-
}
|
|
113
|
+
// Every agent answer goes through the one destination resolver
|
|
114
|
+
// (specs/2026-10-02-harness-owned-routing.md): references first
|
|
115
|
+
// (--to / --ticket / --work-item / --decision), then the ids it passed
|
|
116
|
+
// when they validate, then what the harness last prompted it about,
|
|
117
|
+
// its turn origin / current work, and its owner DM.
|
|
118
|
+
if (!isOrchestrator && !none && !isStatusReport(content)) {
|
|
119
|
+
const reference = referenceOf(body);
|
|
120
|
+
const delivery = await deps.deliverReply({
|
|
121
|
+
session,
|
|
122
|
+
content,
|
|
123
|
+
interim,
|
|
124
|
+
...(reference ? { reference } : {}),
|
|
125
|
+
...(requestedConv || requestedThread
|
|
126
|
+
? { hints: { ...(requestedConv ? { conversationId: requestedConv } : {}), ...(requestedThread ? { thread: requestedThread } : {}) } }
|
|
127
|
+
: {}),
|
|
128
|
+
});
|
|
129
|
+
if (!delivery.ok) {
|
|
130
|
+
logger.warn('Agent reply could not be delivered — told the agent (not filed as status)', { session, error: delivery.error });
|
|
131
|
+
res.status(409).json({ success: false, error: delivery.error });
|
|
132
|
+
return;
|
|
135
133
|
}
|
|
134
|
+
const dest = delivery.destination;
|
|
135
|
+
res.status(201).json({
|
|
136
|
+
success: true,
|
|
137
|
+
data: {
|
|
138
|
+
...(delivery.messageId ? { messageId: delivery.messageId, conversationId: delivery.conversationId } : {}),
|
|
139
|
+
...(delivery.slackChannelId ? { slackChannelId: delivery.slackChannelId, messageTs: delivery.messageTs } : {}),
|
|
140
|
+
...(delivery.threadTs ? { threadTs: delivery.threadTs } : {}),
|
|
141
|
+
destination: dest.kind === 'work' ? dest.destination.kind : 'conversation',
|
|
142
|
+
via: dest.source,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
return;
|
|
136
146
|
}
|
|
137
|
-
const origin =
|
|
147
|
+
const origin = OrcReplyRouteService.getInstance().getLastOrigin(session);
|
|
138
148
|
const owns = requestedConv && !isOrchestrator ? await deps.ownsConversation(session, requestedConv) : false;
|
|
139
149
|
const plan = planAgentReply({
|
|
140
150
|
session,
|
|
@@ -148,7 +158,7 @@ export function createAgentReplyHandler(deps = defaultDeps) {
|
|
|
148
158
|
logReplyPlan(session, plan);
|
|
149
159
|
switch (plan.kind) {
|
|
150
160
|
case 'status': {
|
|
151
|
-
req.body = { content, senderName: session, senderType: 'agent' };
|
|
161
|
+
req.body = { content, senderName: session, senderType: 'agent', ...(typeof body.workItemId === 'string' ? { workItemId: body.workItemId } : {}) };
|
|
152
162
|
await deps.agentResponse(req, res, next);
|
|
153
163
|
return;
|
|
154
164
|
}
|
|
@@ -158,6 +168,11 @@ export function createAgentReplyHandler(deps = defaultDeps) {
|
|
|
158
168
|
...(plan.origin ? { chatChannelId: plan.origin.conversationId } : {}),
|
|
159
169
|
...(key ? { slackChannelId: key.slackChannelId, threadTs: key.threadTs } : {}),
|
|
160
170
|
}) ?? 0;
|
|
171
|
+
// The agent said explicitly that no answer is needed: its
|
|
172
|
+
// "working on it" in that thread may go (spec §5 — a turn that just
|
|
173
|
+
// ends does not take it down).
|
|
174
|
+
if (key)
|
|
175
|
+
await deps.settleNoReply?.(session, key.slackChannelId, key.threadTs).catch(() => 0);
|
|
161
176
|
res.json({ success: true, data: { closed } });
|
|
162
177
|
return;
|
|
163
178
|
}
|
|
@@ -178,43 +193,16 @@ export function createAgentReplyHandler(deps = defaultDeps) {
|
|
|
178
193
|
return;
|
|
179
194
|
}
|
|
180
195
|
case 'post': {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
// Explicit ids that turned out not to work: the origin still does.
|
|
184
|
-
if (!messageId && plan.via === 'explicit' && origin && origin.conversationId !== plan.conversationId) {
|
|
185
|
-
messageId = await deps.deliver({
|
|
186
|
-
conversationId: origin.conversationId,
|
|
187
|
-
thread: origin.slackThreadKey ?? origin.chatThreadId,
|
|
188
|
-
agentSession: session,
|
|
189
|
-
content,
|
|
190
|
-
interim,
|
|
191
|
-
});
|
|
192
|
-
conversationId = origin.conversationId;
|
|
193
|
-
}
|
|
194
|
-
// The owner's place could not take it (the agent is not in that
|
|
195
|
-
// conversation): a new top-level post in its team channel — never
|
|
196
|
-
// whichever thread it was last asked in.
|
|
197
|
-
if (!messageId && plan.via === 'origin' && workContext) {
|
|
198
|
-
const posted = await deliverToWorkDestination(session, { kind: 'new-top-level', topic: workContext.topic, reason: 'the work item origin did not take the reply' }, content, workContext.wd).catch(() => null);
|
|
199
|
-
if (posted) {
|
|
200
|
-
logger.info('Agent reply posted as a new top-level message — its origin conversation did not take it', { session, slackChannelId: posted.slackChannelId });
|
|
201
|
-
res.status(201).json({ success: true, data: { slackChannelId: posted.slackChannelId, messageTs: posted.messageTs, destination: posted.kind } });
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
196
|
+
// Only the orchestrator's own-conversation posts reach here.
|
|
197
|
+
const messageId = await deps.deliver({ conversationId: plan.conversationId, thread: plan.thread, agentSession: session, content, interim });
|
|
205
198
|
if (!messageId) {
|
|
206
|
-
logger.warn('Agent reply could not be delivered — told the agent (not filed as status)', {
|
|
207
|
-
session,
|
|
208
|
-
conversationId: plan.conversationId,
|
|
209
|
-
thread: plan.thread,
|
|
210
|
-
});
|
|
211
199
|
res.status(409).json({
|
|
212
200
|
success: false,
|
|
213
|
-
error: `
|
|
201
|
+
error: `Your message was NOT delivered: conversation ${plan.conversationId} did not take it. Run: reply "<your message>" without ids.`,
|
|
214
202
|
});
|
|
215
203
|
return;
|
|
216
204
|
}
|
|
217
|
-
res.status(201).json({ success: true, data: { messageId, conversationId } });
|
|
205
|
+
res.status(201).json({ success: true, data: { messageId, conversationId: plan.conversationId } });
|
|
218
206
|
return;
|
|
219
207
|
}
|
|
220
208
|
case 'no-target':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-reply.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/agent-reply.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-reply.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/agent-reply.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,6 +99,16 @@ export declare function getMessages(req: Request, res: Response, next: NextFunct
|
|
|
99
99
|
* @param res - Response with the message
|
|
100
100
|
*/
|
|
101
101
|
export declare function getMessage(req: Request, res: Response, next: NextFunction): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* The session an agent's `senderName` stands for: a session name as is, else
|
|
104
|
+
* the member with that display name ("Ella", "Avery") — the one in
|
|
105
|
+
* `conversationId` when several share the name.
|
|
106
|
+
*
|
|
107
|
+
* @param senderName - Session or display name the agent passed
|
|
108
|
+
* @param conversationId - Conversation it named, if any
|
|
109
|
+
* @returns Session name (the input when nothing matches)
|
|
110
|
+
*/
|
|
111
|
+
export declare function sessionOfSender(senderName: string, conversationId?: string): Promise<string>;
|
|
102
112
|
/**
|
|
103
113
|
* Whether an `agent-response` body is a report-status line for the
|
|
104
114
|
* orchestrator ([DONE], [WORKING], [IDLE], [STATUS REPORT], …) rather than
|
|
@@ -137,6 +147,8 @@ export declare function deliverAgentReplyToConversation(input: {
|
|
|
137
147
|
agentSession: string;
|
|
138
148
|
content: string;
|
|
139
149
|
interim?: boolean;
|
|
150
|
+
/** Extra metadata on the recorded row (e.g. the harness marking a ticket delivery) */
|
|
151
|
+
metadata?: Record<string, unknown>;
|
|
140
152
|
}): Promise<string | null>;
|
|
141
153
|
/**
|
|
142
154
|
* Order an agent's Slack threads so the one its [DONE] is about comes first.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EACL,cAAc,EAGf,MAAM,qCAAqC,CAAC;AAwB7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AAoB7F;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAKzE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,yDAAyD,EAAE,wBAAwB,GAClG,IAAI,CAEN;AAMD,wEAAwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,sDAAsD;AACtD,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iDAAiD;IACjD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACvC,0CAA0C;IAC1C,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9E,mCAAmC;IACnC,YAAY,EAAE,0BAA0B,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,6BAA6B,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgIrH;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CA8Cf;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsBf;
|
|
1
|
+
{"version":3,"file":"chat.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/chat/chat.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -355,6 +355,40 @@ async function isMemberNameOf(agentSession, name) {
|
|
|
355
355
|
}
|
|
356
356
|
return false;
|
|
357
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* The session an agent's `senderName` stands for: a session name as is, else
|
|
360
|
+
* the member with that display name ("Ella", "Avery") — the one in
|
|
361
|
+
* `conversationId` when several share the name.
|
|
362
|
+
*
|
|
363
|
+
* @param senderName - Session or display name the agent passed
|
|
364
|
+
* @param conversationId - Conversation it named, if any
|
|
365
|
+
* @returns Session name (the input when nothing matches)
|
|
366
|
+
*/
|
|
367
|
+
export async function sessionOfSender(senderName, conversationId) {
|
|
368
|
+
const wanted = senderName.trim().toLowerCase();
|
|
369
|
+
if (!wanted)
|
|
370
|
+
return senderName;
|
|
371
|
+
try {
|
|
372
|
+
const { StorageService } = await import('../../services/core/storage.service.js');
|
|
373
|
+
const members = (await StorageService.getInstance().getTeams()).flatMap((t) => t.members ?? []);
|
|
374
|
+
if (members.some((m) => m.sessionName === senderName))
|
|
375
|
+
return senderName;
|
|
376
|
+
const named = members.filter((m) => (m.name ?? '').trim().toLowerCase() === wanted).map((m) => m.sessionName);
|
|
377
|
+
if (named.length === 1)
|
|
378
|
+
return named[0];
|
|
379
|
+
if (named.length > 1 && conversationId) {
|
|
380
|
+
for (const s of named)
|
|
381
|
+
if (await isAgentsOwnConversation(s, conversationId))
|
|
382
|
+
return s;
|
|
383
|
+
}
|
|
384
|
+
if (named.length > 0)
|
|
385
|
+
return named[0];
|
|
386
|
+
}
|
|
387
|
+
catch {
|
|
388
|
+
/* storage unavailable — use the name as given */
|
|
389
|
+
}
|
|
390
|
+
return senderName;
|
|
391
|
+
}
|
|
358
392
|
/**
|
|
359
393
|
* Record an agent's reply on its own chat-v2 DM channel when
|
|
360
394
|
* `conversationId` names one (the channel is bound to this very agent).
|
|
@@ -367,7 +401,7 @@ async function isMemberNameOf(agentSession, name) {
|
|
|
367
401
|
* @param content - Reply text
|
|
368
402
|
* @returns The persisted message id, or null when not a chat-v2 channel
|
|
369
403
|
*/
|
|
370
|
-
async function recordChatV2AgentReply(channelId, senderName, content, headerSession, interim = false, slackThreadKey) {
|
|
404
|
+
async function recordChatV2AgentReply(channelId, senderName, content, headerSession, interim = false, slackThreadKey, extraMetadata) {
|
|
371
405
|
try {
|
|
372
406
|
const { getChatV2Service } = await import('../../services/chat-v2/chat-v2.singleton.js');
|
|
373
407
|
const chatV2 = getChatV2Service();
|
|
@@ -390,6 +424,7 @@ async function recordChatV2AgentReply(channelId, senderName, content, headerSess
|
|
|
390
424
|
senderId: channel.agentSession,
|
|
391
425
|
content,
|
|
392
426
|
metadata: {
|
|
427
|
+
...(extraMetadata ?? {}),
|
|
393
428
|
source: 'reply-tool',
|
|
394
429
|
...(interim ? { [SLACK_TYPING_CONSTANTS.INTERIM_METADATA_KEY]: true } : {}),
|
|
395
430
|
// The Slack thread this answer is for (`reply-chat --thread <key>`):
|
|
@@ -517,6 +552,7 @@ async function recordSlackRoomAgentReply(input) {
|
|
|
517
552
|
content: input.content,
|
|
518
553
|
threadId,
|
|
519
554
|
metadata: {
|
|
555
|
+
...(input.metadata ?? {}),
|
|
520
556
|
source: 'reply-tool',
|
|
521
557
|
...(input.interim ? { [SLACK_TYPING_CONSTANTS.INTERIM_METADATA_KEY]: true } : {}),
|
|
522
558
|
},
|
|
@@ -586,7 +622,7 @@ export async function isAgentsOwnConversation(agentSession, conversationId) {
|
|
|
586
622
|
export async function deliverAgentReplyToConversation(input) {
|
|
587
623
|
const slackKey = parseSlackThreadKey(input.thread);
|
|
588
624
|
const formattedKey = slackKey ? formatSlackThreadKey(slackKey.slackChannelId, slackKey.threadTs) : undefined;
|
|
589
|
-
const dm = await recordChatV2AgentReply(input.conversationId, input.agentSession, input.content, input.agentSession, input.interim === true, formattedKey);
|
|
625
|
+
const dm = await recordChatV2AgentReply(input.conversationId, input.agentSession, input.content, input.agentSession, input.interim === true, formattedKey, input.metadata);
|
|
590
626
|
if (dm)
|
|
591
627
|
return dm;
|
|
592
628
|
const room = await recordSlackRoomAgentReply({
|
|
@@ -596,6 +632,7 @@ export async function deliverAgentReplyToConversation(input) {
|
|
|
596
632
|
headerSession: input.agentSession,
|
|
597
633
|
interim: input.interim === true,
|
|
598
634
|
rawThread: input.thread,
|
|
635
|
+
...(input.metadata ? { metadata: input.metadata } : {}),
|
|
599
636
|
});
|
|
600
637
|
if (room)
|
|
601
638
|
return room;
|
|
@@ -607,6 +644,12 @@ export async function deliverAgentReplyToConversation(input) {
|
|
|
607
644
|
return null;
|
|
608
645
|
if (!chatV2.queryHuddleMembersForDispatch(input.conversationId).includes(input.agentSession))
|
|
609
646
|
return null;
|
|
647
|
+
// A Slack-mapped room took no thread above: a row here would be mirrored
|
|
648
|
+
// into whatever Slack thread is latest — not ours to guess
|
|
649
|
+
// (specs/2026-10-02-harness-owned-routing.md §1).
|
|
650
|
+
const { getSlackTeamChannelService } = await import('../../services/slack/slack-team-channel.service.js');
|
|
651
|
+
if (getSlackTeamChannelService()?.findByChatChannelId(input.conversationId))
|
|
652
|
+
return null;
|
|
610
653
|
let threadId;
|
|
611
654
|
if (input.thread && !slackKey) {
|
|
612
655
|
const named = chatV2.getMessageForBridge(input.thread);
|
|
@@ -620,6 +663,7 @@ export async function deliverAgentReplyToConversation(input) {
|
|
|
620
663
|
content: input.content,
|
|
621
664
|
...(threadId ? { threadId } : {}),
|
|
622
665
|
metadata: {
|
|
666
|
+
...(input.metadata ?? {}),
|
|
623
667
|
source: 'reply-tool',
|
|
624
668
|
...(input.interim ? { [SLACK_TYPING_CONSTANTS.INTERIM_METADATA_KEY]: true } : {}),
|
|
625
669
|
},
|
|
@@ -810,6 +854,60 @@ export async function agentResponse(req, res, next) {
|
|
|
810
854
|
conversationIdWasExplicit = true;
|
|
811
855
|
}
|
|
812
856
|
}
|
|
857
|
+
// An agent's message to a person (anything that is not a status line)
|
|
858
|
+
// goes where the harness resolves it — never to the globally current
|
|
859
|
+
// conversation, never filed as status while answering success
|
|
860
|
+
// (specs/2026-10-02-harness-owned-routing.md §1–3; TKT-187: Owen's
|
|
861
|
+
// `reply-chat --thread <#pro-ce key>` landed in an unrelated huddle and
|
|
862
|
+
// was swallowed as status).
|
|
863
|
+
// Only when the caller says it is a message for a person
|
|
864
|
+
// (`intent: "message"` — reply-chat, send-chat-response): status
|
|
865
|
+
// payloads ([MILESTONE], [HANDOFF], `---\n[VERIFICATION REQUEST]`, …)
|
|
866
|
+
// without the flag keep the status path, exactly as before.
|
|
867
|
+
const agentSenderGuess = (senderType || 'agent') === 'agent';
|
|
868
|
+
const isMessageForPerson = req.body?.intent === 'message';
|
|
869
|
+
if (isMessageForPerson && agentSenderGuess && !isOrchestratorPost && !isOrcName(String(senderName)) && !isAgentStatusMarker(String(content))) {
|
|
870
|
+
const replier = agentHeader && !headerContradictsSender
|
|
871
|
+
? agentHeader
|
|
872
|
+
: await sessionOfSender(String(senderName), typeof conversationId === 'string' ? conversationId : undefined);
|
|
873
|
+
const { deliverReply } = await import('../../services/orc/reply-destination.wiring.js');
|
|
874
|
+
const { referenceOf } = await import('./agent-reply.controller.js');
|
|
875
|
+
const reference = referenceOf((req.body ?? {}));
|
|
876
|
+
const delivery = await deliverReply({
|
|
877
|
+
session: replier,
|
|
878
|
+
content: String(content),
|
|
879
|
+
interim: req.body?.interim === true,
|
|
880
|
+
...(reference ? { reference } : {}),
|
|
881
|
+
...(conversationId || req.body?.slackThread
|
|
882
|
+
? {
|
|
883
|
+
hints: {
|
|
884
|
+
...(typeof conversationId === 'string' && conversationId ? { conversationId } : {}),
|
|
885
|
+
...(typeof req.body?.slackThread === 'string' && req.body.slackThread ? { thread: req.body.slackThread } : {}),
|
|
886
|
+
},
|
|
887
|
+
}
|
|
888
|
+
: {}),
|
|
889
|
+
});
|
|
890
|
+
if (!delivery.ok) {
|
|
891
|
+
logger.warn('Agent message to a person could not be delivered — told the agent (not filed as status)', {
|
|
892
|
+
senderName,
|
|
893
|
+
replier,
|
|
894
|
+
error: delivery.error,
|
|
895
|
+
preview: String(content).substring(0, 120),
|
|
896
|
+
});
|
|
897
|
+
res.status(409).json({ success: false, error: delivery.error });
|
|
898
|
+
return;
|
|
899
|
+
}
|
|
900
|
+
res.status(201).json({
|
|
901
|
+
success: true,
|
|
902
|
+
data: {
|
|
903
|
+
...(delivery.messageId ? { messageId: delivery.messageId, conversationId: delivery.conversationId } : {}),
|
|
904
|
+
...(delivery.slackChannelId ? { slackChannelId: delivery.slackChannelId, messageTs: delivery.messageTs } : {}),
|
|
905
|
+
...(delivery.threadTs ? { threadTs: delivery.threadTs } : {}),
|
|
906
|
+
via: delivery.destination.source,
|
|
907
|
+
},
|
|
908
|
+
});
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
813
911
|
if (!resolvedConversationId) {
|
|
814
912
|
const current = await chatService.getCurrentConversation();
|
|
815
913
|
if (current) {
|
|
@@ -973,31 +1071,57 @@ export async function agentResponse(req, res, next) {
|
|
|
973
1071
|
orcText: clipForOrchestrator(content, resolvedConversationId),
|
|
974
1072
|
});
|
|
975
1073
|
}
|
|
976
|
-
// 2. Send Slack notification for task completions
|
|
1074
|
+
// 2. Send Slack notification for task completions — only into a
|
|
1075
|
+
// thread the Slack thread store lists for this agent (as before),
|
|
1076
|
+
// and the one the reply resolver picks among those (its work item,
|
|
1077
|
+
// the thread it names, its prompt, its turn origin) — no longer the
|
|
1078
|
+
// agent's first-ever thread. No listed thread matches → no notice
|
|
1079
|
+
// (specs/2026-10-02-harness-owned-routing.md §6).
|
|
977
1080
|
if (content.startsWith('[DONE]')) {
|
|
1081
|
+
const reporter = agentHeader && !headerContradictsSender ? agentHeader : String(senderName);
|
|
978
1082
|
const { getSlackThreadStore } = await import('../../services/slack/slack-thread-store.service.js');
|
|
1083
|
+
const store = getSlackThreadStore();
|
|
1084
|
+
const listed = store
|
|
1085
|
+
? [...store.findThreadsForAgent(reporter), ...(reporter !== senderName ? store.findThreadsForAgent(String(senderName)) : [])]
|
|
1086
|
+
: [];
|
|
1087
|
+
let target;
|
|
1088
|
+
if (listed.length > 0) {
|
|
1089
|
+
const namedKey = slackThreadKey ?? (() => {
|
|
1090
|
+
const k = extractSlackThreadKeys(String(content))[0];
|
|
1091
|
+
return k ? formatSlackThreadKey(k.slackChannelId, k.threadTs) : undefined;
|
|
1092
|
+
})();
|
|
1093
|
+
const { resolveSlackPlace } = await import('../../services/orc/reply-destination.wiring.js');
|
|
1094
|
+
const place = await resolveSlackPlace({
|
|
1095
|
+
session: reporter,
|
|
1096
|
+
...(typeof req.body?.workItemId === 'string' && req.body.workItemId ? { reference: { workItemId: req.body.workItemId } } : {}),
|
|
1097
|
+
...(namedKey ? { hints: { thread: namedKey } } : {}),
|
|
1098
|
+
noOwnerDm: true,
|
|
1099
|
+
}).catch(() => null);
|
|
1100
|
+
target = place?.threadTs
|
|
1101
|
+
? listed.find((t) => t.channelId === place.slackChannelId && t.threadTs === place.threadTs)
|
|
1102
|
+
: undefined;
|
|
1103
|
+
}
|
|
979
1104
|
const { getSlackOrchestratorBridge } = await import('../../services/slack/slack-orchestrator-bridge.js');
|
|
980
|
-
const
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
}
|
|
1105
|
+
const bridge = getSlackOrchestratorBridge();
|
|
1106
|
+
if (bridge && target) {
|
|
1107
|
+
const summaryText = content.replace(/^\[DONE\]\s*Agent\s+\S+:\s*/, '');
|
|
1108
|
+
await bridge.sendNotification({
|
|
1109
|
+
type: 'task_completed',
|
|
1110
|
+
title: 'Agent Completed',
|
|
1111
|
+
message: `Agent ${senderName} completed: ${summaryText}`,
|
|
1112
|
+
urgency: 'normal',
|
|
1113
|
+
timestamp: new Date().toISOString(),
|
|
1114
|
+
channelId: target.channelId,
|
|
1115
|
+
threadTs: target.threadTs,
|
|
1116
|
+
});
|
|
1117
|
+
// If a pending reaction was stored when the message arrived
|
|
1118
|
+
// (orchestrator-routed path sets a 👀 on the trigger message),
|
|
1119
|
+
// flip it to ✅ now that the agent reply has been delivered.
|
|
1120
|
+
// No-op when there's no pending entry for this thread.
|
|
1121
|
+
await bridge.addCompletionReaction(target.channelId, target.threadTs);
|
|
1122
|
+
}
|
|
1123
|
+
else if (!target) {
|
|
1124
|
+
logger.info('[DONE] notice not posted — no thread of this agent that the report belongs to', { senderName, listed: listed.length });
|
|
1001
1125
|
}
|
|
1002
1126
|
}
|
|
1003
1127
|
}
|