crewly 1.20.346 → 1.20.347
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/backend/backend/src/constants.d.ts +30 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +30 -0
- package/dist/backend/backend/src/constants.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 +25 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +5 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +8 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +5 -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 +3 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts +49 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +107 -2
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/orc/triggered-by.d.ts +62 -0
- package/dist/backend/backend/src/services/orc/triggered-by.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/triggered-by.js +141 -0
- package/dist/backend/backend/src/services/orc/triggered-by.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-context.service.js +20 -6
- package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/turn-trigger.d.ts +141 -0
- package/dist/backend/backend/src/services/trace/turn-trigger.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/turn-trigger.js +258 -0
- package/dist/backend/backend/src/services/trace/turn-trigger.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +30 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +30 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +5 -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 +3 -2
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.js +20 -6
- package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/turn-trigger.d.ts +141 -0
- package/dist/cli/backend/src/services/trace/turn-trigger.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/turn-trigger.js +258 -0
- package/dist/cli/backend/src/services/trace/turn-trigger.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What started an agent's turn — the "trigger" of everything it posts from
|
|
3
|
+
* that turn (agent-provenance audit 2026-10-14).
|
|
4
|
+
*
|
|
5
|
+
* The harness writes every prompt into a turn (terminal `/write` and
|
|
6
|
+
* `/deliver`, `sendMessageToAgent`). Each delivery is classified here into a
|
|
7
|
+
* finer kind than {@link classifyDelivery} (which lumps restarts, reminders,
|
|
8
|
+
* app changes and agent-to-agent messages into `system`), with the sending
|
|
9
|
+
* agent when another agent wrote it. The last trigger of each session is kept
|
|
10
|
+
* in memory, so a reply posted from that turn can say why it exists.
|
|
11
|
+
*
|
|
12
|
+
* Agent-to-agent sends are noted when the sender's request arrives
|
|
13
|
+
* ({@link TurnTriggerTracker.noteSender}) and matched to the delivery by text,
|
|
14
|
+
* so a message queued while the target was busy keeps its sender.
|
|
15
|
+
*
|
|
16
|
+
* @module services/trace/turn-trigger
|
|
17
|
+
*/
|
|
18
|
+
import { TURN_TRIGGER_CONSTANTS } from '../../constants.js';
|
|
19
|
+
import { parseInboundOrigin } from '../orc/orc-reply-route.service.js';
|
|
20
|
+
const C = TURN_TRIGGER_CONSTANTS;
|
|
21
|
+
/** Fine-grained kinds of what started a turn. */
|
|
22
|
+
export const TURN_TRIGGER_KINDS = [
|
|
23
|
+
'owner_message',
|
|
24
|
+
'agent_message',
|
|
25
|
+
'dispatch',
|
|
26
|
+
'redelivery',
|
|
27
|
+
'follow_up',
|
|
28
|
+
'owner_report_due',
|
|
29
|
+
'follow_through',
|
|
30
|
+
'stale_item',
|
|
31
|
+
'decision',
|
|
32
|
+
'restart',
|
|
33
|
+
'scheduled',
|
|
34
|
+
'app_change',
|
|
35
|
+
'status',
|
|
36
|
+
'system',
|
|
37
|
+
];
|
|
38
|
+
/** Restart notice that wraps the interrupted message (SAFE_RESTART constants). */
|
|
39
|
+
const RESTART_RE = /^\s*Crewly restarted while you were working on\b/;
|
|
40
|
+
/** Header in a restart notice before the original message. */
|
|
41
|
+
const RESTART_ORIGINAL_RE = /\nThe message you were handling:\n([\s\S]*)$/;
|
|
42
|
+
/**
|
|
43
|
+
* Classify a delivered prompt.
|
|
44
|
+
*
|
|
45
|
+
* @param text - Exactly what was written into the turn
|
|
46
|
+
* @returns The trigger kind and the ids the prompt names
|
|
47
|
+
*/
|
|
48
|
+
export function classifyTurnTrigger(text) {
|
|
49
|
+
const t = typeof text === 'string' ? text : '';
|
|
50
|
+
if (RESTART_RE.test(t) || /^\s*\[SYSTEM — TASK RECOVERY\]|\[RESTART_DRAIN\]|^\s*\[CHAT_RESUME\]/.test(t)) {
|
|
51
|
+
// A restart that re-delivers an owner message is still that message.
|
|
52
|
+
const original = RESTART_ORIGINAL_RE.exec(t)?.[1];
|
|
53
|
+
if (original) {
|
|
54
|
+
const inner = classifyTurnTrigger(original);
|
|
55
|
+
if (inner.triggerKind === 'owner_message' || inner.triggerKind === 'agent_message')
|
|
56
|
+
return inner;
|
|
57
|
+
}
|
|
58
|
+
return { triggerKind: 'restart', ...workItemOf(t) };
|
|
59
|
+
}
|
|
60
|
+
// An owner's chat message opens with its routing prefix; checked before
|
|
61
|
+
// the harness tags, which the owner's own text may quote.
|
|
62
|
+
const chat = parseInboundOrigin(t);
|
|
63
|
+
if (chat)
|
|
64
|
+
return { triggerKind: 'owner_message', conversationId: chat.conversationId };
|
|
65
|
+
if (/^\s*\[(?:OWNER MESSAGE\]|SLACK[A-Z_-]*[:\]]|REMOTE:)/.test(t))
|
|
66
|
+
return { triggerKind: 'owner_message' };
|
|
67
|
+
if (/\[TASK RE-DELIVERY\]|\[CREWLY-DISPATCH\] \d+ WorkItems? (?:is|are) still queued/.test(t))
|
|
68
|
+
return { triggerKind: 'redelivery', ...workItemOf(t) };
|
|
69
|
+
if (/\[TRIGGER WAKE\]|\[SCHEDULED\]|\[SCHEDULED CHECK-IN/.test(t))
|
|
70
|
+
return { triggerKind: 'scheduled', ...workItemOf(t) };
|
|
71
|
+
if (/\[CREWLY-DISPATCH\]|\[TASK ASSIGNMENT\]|^\s*\[TASK\]/.test(t))
|
|
72
|
+
return { triggerKind: 'dispatch', ...workItemOf(t) };
|
|
73
|
+
const followUp = /\[FOLLOW-UP\s+([A-Z][A-Z0-9]*-\d+)?/.exec(t);
|
|
74
|
+
if (followUp)
|
|
75
|
+
return { triggerKind: 'follow_up', ...(followUp[1] ? { ticket: followUp[1] } : {}) };
|
|
76
|
+
if (/\[OWNER REPORT DUE\b/.test(t))
|
|
77
|
+
return { triggerKind: 'owner_report_due', ...workItemOf(t) };
|
|
78
|
+
if (/\[FOLLOW-THROUGH\b/.test(t))
|
|
79
|
+
return { triggerKind: 'follow_through' };
|
|
80
|
+
if (/\[STALE ITEM\]/.test(t))
|
|
81
|
+
return { triggerKind: 'stale_item' };
|
|
82
|
+
const decision = /\[DECISIONS?\s*(D-\d+)?/.exec(t);
|
|
83
|
+
if (decision)
|
|
84
|
+
return { triggerKind: 'decision', ...(decision[1] ? { ticket: decision[1] } : {}) };
|
|
85
|
+
if (/\[APP CHANGES\]/.test(t))
|
|
86
|
+
return { triggerKind: 'app_change' };
|
|
87
|
+
if (/Agent status:|Status from \S+ \(reports to you\)|\[STATUS DIGEST\]|\[STATUS REPORT\]/.test(t))
|
|
88
|
+
return { triggerKind: 'status' };
|
|
89
|
+
return { triggerKind: 'system' };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* The work item a prompt names.
|
|
93
|
+
*
|
|
94
|
+
* @param text - Prompt text
|
|
95
|
+
* @returns `{ workItemId }` or nothing
|
|
96
|
+
*/
|
|
97
|
+
function workItemOf(text) {
|
|
98
|
+
const m = /WorkItem(?: ID)?:?\s+([A-Za-z0-9_-]{6,})/.exec(text);
|
|
99
|
+
return m ? { workItemId: m[1] } : {};
|
|
100
|
+
}
|
|
101
|
+
/** Recognisable start of a text (whitespace collapsed). */
|
|
102
|
+
function fingerprint(text) {
|
|
103
|
+
return text.replace(/\s+/g, ' ').trim().slice(0, C.SENDER_MATCH_CHARS);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Last trigger of each session. Singleton (see {@link getTurnTriggerTracker}).
|
|
107
|
+
*/
|
|
108
|
+
export class TurnTriggerTracker {
|
|
109
|
+
current = new Map();
|
|
110
|
+
sends = new Map();
|
|
111
|
+
/** Per session: conversation id → when the owner last wrote to it there */
|
|
112
|
+
ownerAsks = new Map();
|
|
113
|
+
/**
|
|
114
|
+
* Note that `sender` asked to write `text` to `target` (the terminal write
|
|
115
|
+
* route, before delivery or queueing).
|
|
116
|
+
*
|
|
117
|
+
* @param target - Receiving session
|
|
118
|
+
* @param text - Message text
|
|
119
|
+
* @param sender - Sending agent session
|
|
120
|
+
* @param now - Clock (epoch ms)
|
|
121
|
+
*/
|
|
122
|
+
noteSender(target, text, sender, now = Date.now()) {
|
|
123
|
+
if (!target || !sender || sender === target || typeof text !== 'string')
|
|
124
|
+
return;
|
|
125
|
+
if (!C.AGENT_SESSION_PATTERN.test(sender))
|
|
126
|
+
return;
|
|
127
|
+
const key = fingerprint(text);
|
|
128
|
+
if (!key)
|
|
129
|
+
return;
|
|
130
|
+
const list = (this.sends.get(target) ?? []).filter((s) => now - s.at < C.SENDER_MATCH_MS);
|
|
131
|
+
list.push({ sender, key, at: now });
|
|
132
|
+
this.sends.set(target, list.slice(-C.MAX_SENDERS_PER_TARGET));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Record what started `session`'s turn.
|
|
136
|
+
*
|
|
137
|
+
* @param session - Agent session written to
|
|
138
|
+
* @param text - Exactly what was delivered
|
|
139
|
+
* @param opts - Trace the delivery joined; sender when the caller knows it
|
|
140
|
+
* @param now - Clock (epoch ms)
|
|
141
|
+
* @returns The recorded trigger
|
|
142
|
+
*/
|
|
143
|
+
noteDelivery(session, text, opts = {}, now = Date.now()) {
|
|
144
|
+
const classified = classifyTurnTrigger(text);
|
|
145
|
+
const sender = opts.sender || this.takeSender(session, text, now);
|
|
146
|
+
const base = sender && (classified.triggerKind === 'system' || classified.triggerKind === 'status')
|
|
147
|
+
? { triggerKind: 'agent_message' }
|
|
148
|
+
: classified;
|
|
149
|
+
let trigger;
|
|
150
|
+
if (base.triggerKind === 'agent_message' && sender) {
|
|
151
|
+
const up = this.trigger(sender, now);
|
|
152
|
+
const via = [...(up?.viaAgents ?? []), sender].filter((s, i, a) => a.indexOf(s) === i).slice(-C.MAX_VIA_AGENTS);
|
|
153
|
+
trigger = {
|
|
154
|
+
...base,
|
|
155
|
+
sender,
|
|
156
|
+
rootKind: up ? up.rootKind : 'agent_message',
|
|
157
|
+
...(up?.rootRef ? { rootRef: up.rootRef } : {}),
|
|
158
|
+
viaAgents: via,
|
|
159
|
+
at: now,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
const rootRef = base.conversationId ?? base.workItemId ?? base.ticket;
|
|
164
|
+
trigger = { ...base, rootKind: base.triggerKind, ...(rootRef ? { rootRef } : {}), viaAgents: [], at: now };
|
|
165
|
+
}
|
|
166
|
+
if (opts.traceId)
|
|
167
|
+
trigger.traceId = opts.traceId;
|
|
168
|
+
if (session)
|
|
169
|
+
this.current.set(session, trigger);
|
|
170
|
+
if (session && trigger.triggerKind === 'owner_message' && trigger.conversationId) {
|
|
171
|
+
const asks = this.ownerAsks.get(session) ?? new Map();
|
|
172
|
+
asks.set(trigger.conversationId, now);
|
|
173
|
+
this.ownerAsks.set(session, asks);
|
|
174
|
+
}
|
|
175
|
+
return trigger;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Whether the owner wrote to `session` in `conversationId` recently — a
|
|
179
|
+
* post there is then an answer to the owner, whatever came in since (a
|
|
180
|
+
* reminder delivered mid-turn must not relabel it).
|
|
181
|
+
*
|
|
182
|
+
* @param session - Agent session
|
|
183
|
+
* @param conversationId - Conversation posted to
|
|
184
|
+
* @param now - Clock (epoch ms)
|
|
185
|
+
* @returns True within {@link TURN_TRIGGER_CONSTANTS.OWNER_ANSWER_WINDOW_MS}
|
|
186
|
+
*/
|
|
187
|
+
ownerAskedRecently(session, conversationId, now = Date.now()) {
|
|
188
|
+
const at = this.ownerAsks.get(session)?.get(conversationId);
|
|
189
|
+
return at !== undefined && now - at <= C.OWNER_ANSWER_WINDOW_MS;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* The trigger of `session`'s current turn, while fresh.
|
|
193
|
+
*
|
|
194
|
+
* @param session - Agent session
|
|
195
|
+
* @param now - Clock (epoch ms)
|
|
196
|
+
* @returns The trigger, or null
|
|
197
|
+
*/
|
|
198
|
+
trigger(session, now = Date.now()) {
|
|
199
|
+
const t = session ? this.current.get(session) : undefined;
|
|
200
|
+
if (!t)
|
|
201
|
+
return null;
|
|
202
|
+
if (now - t.at > C.FRESH_MS) {
|
|
203
|
+
this.current.delete(session);
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
return t;
|
|
207
|
+
}
|
|
208
|
+
/** Forget everything (tests). */
|
|
209
|
+
reset() {
|
|
210
|
+
this.current.clear();
|
|
211
|
+
this.sends.clear();
|
|
212
|
+
this.ownerAsks.clear();
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* The sender of a noted send whose text the delivery contains (consumed).
|
|
216
|
+
*
|
|
217
|
+
* @param target - Receiving session
|
|
218
|
+
* @param text - Delivered text
|
|
219
|
+
* @param now - Clock
|
|
220
|
+
* @returns Sender session, or undefined
|
|
221
|
+
*/
|
|
222
|
+
takeSender(target, text, now) {
|
|
223
|
+
const list = this.sends.get(target);
|
|
224
|
+
if (!list?.length)
|
|
225
|
+
return undefined;
|
|
226
|
+
const whole = text.replace(/\s+/g, ' ');
|
|
227
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
228
|
+
const s = list[i];
|
|
229
|
+
if (now - s.at >= C.SENDER_MATCH_MS)
|
|
230
|
+
continue;
|
|
231
|
+
if (whole.includes(s.key)) {
|
|
232
|
+
list.splice(i, 1);
|
|
233
|
+
return s.sender;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return undefined;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
let instance = null;
|
|
240
|
+
/**
|
|
241
|
+
* The process-wide tracker.
|
|
242
|
+
*
|
|
243
|
+
* @returns The singleton
|
|
244
|
+
*/
|
|
245
|
+
export function getTurnTriggerTracker() {
|
|
246
|
+
if (!instance)
|
|
247
|
+
instance = new TurnTriggerTracker();
|
|
248
|
+
return instance;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Replace the singleton (tests).
|
|
252
|
+
*
|
|
253
|
+
* @param tracker - Replacement, or null to drop it
|
|
254
|
+
*/
|
|
255
|
+
export function setTurnTriggerTrackerForTesting(tracker) {
|
|
256
|
+
instance = tracker;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=turn-trigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-trigger.js","sourceRoot":"","sources":["../../../../../../backend/src/services/trace/turn-trigger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crewly",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.347",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Multi-agent orchestration platform for AI coding teams — coordinates Claude Code, Gemini CLI, and Codex agents with a real-time web dashboard",
|
|
6
6
|
"workspaces": [
|