crewly 1.20.257 → 1.20.258

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/backend/backend/src/constants.d.ts +31 -0
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +31 -0
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  6. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +9 -0
  7. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  8. package/dist/backend/backend/src/index.d.ts +8 -0
  9. package/dist/backend/backend/src/index.d.ts.map +1 -1
  10. package/dist/backend/backend/src/index.js +96 -0
  11. package/dist/backend/backend/src/index.js.map +1 -1
  12. package/dist/backend/backend/src/services/apps/apps.wiring.d.ts +11 -0
  13. package/dist/backend/backend/src/services/apps/apps.wiring.d.ts.map +1 -1
  14. package/dist/backend/backend/src/services/apps/apps.wiring.js +22 -1
  15. package/dist/backend/backend/src/services/apps/apps.wiring.js.map +1 -1
  16. package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts +257 -0
  17. package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts.map +1 -0
  18. package/dist/backend/backend/src/services/orc/owner-completion-report.service.js +522 -0
  19. package/dist/backend/backend/src/services/orc/owner-completion-report.service.js.map +1 -0
  20. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts +76 -0
  21. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts.map +1 -0
  22. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js +130 -0
  23. package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js.map +1 -0
  24. package/dist/backend/backend/src/services/orc/owner-request-context.d.ts +119 -0
  25. package/dist/backend/backend/src/services/orc/owner-request-context.d.ts.map +1 -0
  26. package/dist/backend/backend/src/services/orc/owner-request-context.js +163 -0
  27. package/dist/backend/backend/src/services/orc/owner-request-context.js.map +1 -0
  28. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +31 -4
  29. package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  30. package/dist/backend/backend/src/services/orc/work-item-destination.js +28 -8
  31. package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -1
  32. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +1 -0
  33. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
  34. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +8 -1
  35. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
  36. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
  37. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +34 -4
  39. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  40. package/dist/backend/build-info.json +2 -2
  41. package/dist/cli/backend/src/constants.d.ts +31 -0
  42. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  43. package/dist/cli/backend/src/constants.js +31 -0
  44. package/dist/cli/backend/src/constants.js.map +1 -1
  45. package/dist/cli/backend/src/services/orc/owner-request-context.d.ts +119 -0
  46. package/dist/cli/backend/src/services/orc/owner-request-context.d.ts.map +1 -0
  47. package/dist/cli/backend/src/services/orc/owner-request-context.js +163 -0
  48. package/dist/cli/backend/src/services/orc/owner-request-context.js.map +1 -0
  49. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts +31 -4
  50. package/dist/cli/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
  51. package/dist/cli/backend/src/services/orc/work-item-destination.js +28 -8
  52. package/dist/cli/backend/src/services/orc/work-item-destination.js.map +1 -1
  53. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
  54. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  55. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +34 -4
  56. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Wiring for {@link OwnerCompletionReportService}: where an owner origin is
3
+ * on this machine, how the harness posts its own summary there, and which
4
+ * posts count as "an agent answered there". The service stays transport-free.
5
+ *
6
+ * @module services/orc/owner-completion-report.wiring
7
+ */
8
+ import { SLACK_THREAD_KEY_CONSTANTS, SLACK_TYPING_CONSTANTS } from '../../constants.js';
9
+ import { parseSlackThreadKey, slackThreadTag } from '../slack/slack-thread-key.js';
10
+ /**
11
+ * Resolve where an owner origin is.
12
+ *
13
+ * @param origin - Owner origin
14
+ * @param commentLink - App comment → its Slack thread
15
+ * @returns The place, or null when the origin names none
16
+ */
17
+ export async function resolveReportPlace(origin, commentLink) {
18
+ const ac = origin.appComment;
19
+ if (ac?.appId && ac.commentId) {
20
+ const link = origin.slackChannelId && origin.threadTs
21
+ ? { slackChannelId: origin.slackChannelId, threadTs: origin.threadTs }
22
+ : await commentLink(ac.appId, ac.commentId).catch(() => null);
23
+ return {
24
+ kind: 'app-comment',
25
+ appId: ac.appId,
26
+ commentId: ac.commentId,
27
+ ...(link ? { slackChannelId: link.slackChannelId, threadTs: link.threadTs } : {}),
28
+ label: link
29
+ ? `the owner's app comment (app ${ac.appId}, comment ${ac.commentId}; its Slack thread ${slackThreadTag(link.slackChannelId, link.threadTs)})`
30
+ : `the owner's app comment (app ${ac.appId}, comment ${ac.commentId})`,
31
+ };
32
+ }
33
+ if (origin.slackChannelId) {
34
+ return {
35
+ kind: 'slack',
36
+ slackChannelId: origin.slackChannelId,
37
+ ...(origin.threadTs ? { threadTs: origin.threadTs } : {}),
38
+ label: origin.threadTs ? `Slack thread ${slackThreadTag(origin.slackChannelId, origin.threadTs)}` : `Slack conversation ${origin.slackChannelId}`,
39
+ };
40
+ }
41
+ if (origin.conversationId) {
42
+ return {
43
+ kind: 'chat',
44
+ conversationId: origin.conversationId,
45
+ ...(origin.chatThreadId ? { chatThreadId: origin.chatThreadId } : {}),
46
+ label: `the owner's Crewly chat (conversation ${origin.conversationId})`,
47
+ };
48
+ }
49
+ return null;
50
+ }
51
+ /**
52
+ * Post the harness's summary in the owner's place: an app comment gets a
53
+ * reply (mirrored to its Slack thread); Slack as the agent's bot, else as
54
+ * Crewly; a chat as the agent. Never throws.
55
+ *
56
+ * @param place - Where
57
+ * @param agentSession - The responsible agent
58
+ * @param text - The summary
59
+ * @param t - Transports
60
+ * @returns True when posted somewhere in that place
61
+ */
62
+ export async function postReportFallback(place, agentSession, text, t) {
63
+ const attempt = async (fn) => {
64
+ if (!fn)
65
+ return false;
66
+ try {
67
+ await fn();
68
+ return true;
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ };
74
+ if (place.kind === 'app-comment') {
75
+ if (await attempt(t.replyComment ? () => t.replyComment(place.appId, place.commentId, agentSession, text) : null))
76
+ return true;
77
+ }
78
+ if (place.kind !== 'chat' && place.slackChannelId) {
79
+ const ch = place.slackChannelId;
80
+ if (await attempt(t.slackAsAgent ? () => t.slackAsAgent(agentSession, ch, text, place.threadTs) : null))
81
+ return true;
82
+ if (await attempt(t.slackAsCrewly ? () => t.slackAsCrewly(ch, text, place.threadTs) : null))
83
+ return true;
84
+ }
85
+ if (place.kind === 'chat') {
86
+ return attempt(t.chatAsAgent ? () => t.chatAsAgent(place.conversationId, agentSession, text) : null);
87
+ }
88
+ return false;
89
+ }
90
+ /**
91
+ * Feed a chat-v2 row: an agent's (non-interim) post answers its conversation
92
+ * (and the Slack thread its reply was mirrored into).
93
+ *
94
+ * @param service - The report service
95
+ * @param message - The row
96
+ */
97
+ export function onChatRow(service, message) {
98
+ if (message.senderType !== 'agent')
99
+ return;
100
+ const meta = message.metadata ?? {};
101
+ if (meta[SLACK_TYPING_CONSTANTS.INTERIM_METADATA_KEY] === true)
102
+ return;
103
+ service.noteChatAnswer(message.channelId, message.threadId);
104
+ const key = parseSlackThreadKey(meta[SLACK_THREAD_KEY_CONSTANTS.METADATA_KEY]);
105
+ if (key)
106
+ service.noteSlackAnswer(key.slackChannelId, key.threadTs);
107
+ }
108
+ /**
109
+ * Feed a Slack post made through this machine's SlackService.
110
+ *
111
+ * @param service - The report service
112
+ * @param post - Where it went
113
+ */
114
+ export function onSlackOutboundPost(service, post) {
115
+ if (post.notAnAnswer || !post.channelId)
116
+ return;
117
+ service.noteSlackAnswer(post.channelId, post.threadTs);
118
+ }
119
+ /**
120
+ * Feed an inbound Slack message: an agent (any machine) posting there.
121
+ *
122
+ * @param service - The report service
123
+ * @param message - Inbound fields
124
+ */
125
+ export function onSlackInboundPost(service, message) {
126
+ if (!message.authorAgentSession || !message.channelId)
127
+ return;
128
+ service.noteSlackAnswer(message.channelId, message.threadTs);
129
+ }
130
+ //# sourceMappingURL=owner-completion-report.wiring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-completion-report.wiring.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/owner-completion-report.wiring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Owner requests an agent is handling that are not chat turns.
3
+ *
4
+ * A chat / Slack message from the owner becomes the agent's turn origin
5
+ * (OrcReplyRouteService) and the work it starts inherits an owner origin.
6
+ * Two other ways an owner request reaches an agent left no trace:
7
+ *
8
+ * - an app comment: the owner commented in a Crewly App and the comment was
9
+ * delivered to the app's agent as an `[APP CHANGES]` message (no `[CHAT:…]`
10
+ * header, so no turn origin);
11
+ * - a hand-over: the agent that got the owner's request messaged a colleague
12
+ * (send-message) to do it.
13
+ *
14
+ * Incident 2026-10-07: the owner's comment in the schedule app reached Lyra,
15
+ * Lyra handed it to Ella by message, Ella opened CREW-305/309/310 and
16
+ * delegated them. Every item was verified and nobody told the owner: none of
17
+ * them carried an owner origin.
18
+ *
19
+ * This registry remembers, per agent session, the owner request it is
20
+ * handling, in memory like turn origins, while it is fresh
21
+ * (`OWNER_COMPLETION_REPORT_CONSTANTS.CONTEXT_FRESH_MS`). The task pool reads
22
+ * it when the agent creates work (`inheritedOrigin`).
23
+ *
24
+ * @module services/orc/owner-request-context
25
+ */
26
+ import type { WorkItemOrigin } from './work-item-destination.js';
27
+ /** An owner request an agent is handling. */
28
+ export interface OwnerRequestContext {
29
+ /** The owner origin work started from it inherits */
30
+ origin: Extract<WorkItemOrigin, {
31
+ kind: 'owner';
32
+ }>;
33
+ /** When it reached this agent (epoch ms) */
34
+ at: number;
35
+ /** How it reached this agent */
36
+ via: 'app-comment' | 'hand-over';
37
+ }
38
+ /** Resolves an app comment to the Slack thread it is mirrored in, when there is one. */
39
+ export type AppCommentThreadResolver = (appId: string, commentId: string) => Promise<{
40
+ slackChannelId: string;
41
+ threadTs: string;
42
+ } | null>;
43
+ /** The sender's owner turn, as an owner origin (null when it has no fresh one). */
44
+ export type TurnOwnerOriginLookup = (session: string, now: number) => {
45
+ origin: Extract<WorkItemOrigin, {
46
+ kind: 'owner';
47
+ }>;
48
+ at: number;
49
+ } | null;
50
+ /** Per-session owner request contexts. */
51
+ export declare class OwnerRequestContextRegistry {
52
+ private readonly contexts;
53
+ private appCommentThread;
54
+ private turnLookup;
55
+ /**
56
+ * Wire how an app comment resolves to its Slack thread (apps wiring).
57
+ *
58
+ * @param resolver - Resolver, or null
59
+ */
60
+ setAppCommentThreadResolver(resolver: AppCommentThreadResolver | null): void;
61
+ /**
62
+ * Wire the sender's owner chat turn lookup used by {@link relay} (boot).
63
+ *
64
+ * @param lookup - Lookup, or null
65
+ */
66
+ setTurnLookup(lookup: TurnOwnerOriginLookup | null): void;
67
+ /**
68
+ * An owner app comment was delivered to `session`.
69
+ *
70
+ * @param session - Receiving agent
71
+ * @param comment - App and comment id
72
+ * @param now - Clock
73
+ */
74
+ noteAppComment(session: string, comment: {
75
+ appId: string;
76
+ commentId: string;
77
+ }, now?: number): void;
78
+ /**
79
+ * `sender` messaged `target`: when the sender is handling a fresh owner
80
+ * request (its own chat turn or a context), the target now handles it too.
81
+ * The origin keeps who received it from the owner. A target with a newer
82
+ * owner request of its own keeps that one.
83
+ *
84
+ * @param sender - Sending agent
85
+ * @param target - Receiving agent
86
+ * @param now - Clock
87
+ * @returns True when the target took the sender's request
88
+ */
89
+ relay(sender: string, target: string, now?: number): boolean;
90
+ /**
91
+ * The fresh owner request `session` is handling, if any.
92
+ *
93
+ * @param session - Agent
94
+ * @param now - Clock
95
+ * @returns The context, or null
96
+ */
97
+ get(session: string, now?: number): OwnerRequestContext | null;
98
+ /**
99
+ * {@link get}, with an app comment origin completed with the comment's
100
+ * Slack thread (so the work's answers land in it). Never throws.
101
+ *
102
+ * @param session - Agent
103
+ * @param now - Clock
104
+ * @returns The context, or null
105
+ */
106
+ resolve(session: string, now?: number): Promise<OwnerRequestContext | null>;
107
+ /** Forget everything (tests). */
108
+ clear(): void;
109
+ private set;
110
+ }
111
+ /**
112
+ * The process-wide registry.
113
+ *
114
+ * @returns The registry
115
+ */
116
+ export declare function getOwnerRequestContext(): OwnerRequestContextRegistry;
117
+ /** Drop the process-wide registry (tests). */
118
+ export declare function resetOwnerRequestContext(): void;
119
+ //# sourceMappingURL=owner-request-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-request-context.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/owner-request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,6CAA6C;AAC7C,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnD,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,GAAG,EAAE,aAAa,GAAG,WAAW,CAAC;CAClC;AAED,wFAAwF;AACxF,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAE1I,mFAAmF;AACnF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK;IAAE,MAAM,EAAE,OAAO,CAAC,cAAc,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC;AAEhJ,0CAA0C;AAC1C,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,gBAAgB,CAAyC;IACjE,OAAO,CAAC,UAAU,CAAsC;IAExD;;;;OAIG;IACH,2BAA2B,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI;IAI5E;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI;IAIzD;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,GAAE,MAAmB,GAAG,IAAI;IAS9G;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO;IAcxE;;;;;;OAMG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,mBAAmB,GAAG,IAAI;IAU1E;;;;;;;OAOG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAa7F,iCAAiC;IACjC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,GAAG;CASZ;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,2BAA2B,CAGpE;AAED,8CAA8C;AAC9C,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C"}
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Owner requests an agent is handling that are not chat turns.
3
+ *
4
+ * A chat / Slack message from the owner becomes the agent's turn origin
5
+ * (OrcReplyRouteService) and the work it starts inherits an owner origin.
6
+ * Two other ways an owner request reaches an agent left no trace:
7
+ *
8
+ * - an app comment: the owner commented in a Crewly App and the comment was
9
+ * delivered to the app's agent as an `[APP CHANGES]` message (no `[CHAT:…]`
10
+ * header, so no turn origin);
11
+ * - a hand-over: the agent that got the owner's request messaged a colleague
12
+ * (send-message) to do it.
13
+ *
14
+ * Incident 2026-10-07: the owner's comment in the schedule app reached Lyra,
15
+ * Lyra handed it to Ella by message, Ella opened CREW-305/309/310 and
16
+ * delegated them. Every item was verified and nobody told the owner: none of
17
+ * them carried an owner origin.
18
+ *
19
+ * This registry remembers, per agent session, the owner request it is
20
+ * handling, in memory like turn origins, while it is fresh
21
+ * (`OWNER_COMPLETION_REPORT_CONSTANTS.CONTEXT_FRESH_MS`). The task pool reads
22
+ * it when the agent creates work (`inheritedOrigin`).
23
+ *
24
+ * @module services/orc/owner-request-context
25
+ */
26
+ import { OWNER_COMPLETION_REPORT_CONSTANTS as C } from '../../constants.js';
27
+ /** Per-session owner request contexts. */
28
+ export class OwnerRequestContextRegistry {
29
+ contexts = new Map();
30
+ appCommentThread = null;
31
+ turnLookup = null;
32
+ /**
33
+ * Wire how an app comment resolves to its Slack thread (apps wiring).
34
+ *
35
+ * @param resolver - Resolver, or null
36
+ */
37
+ setAppCommentThreadResolver(resolver) {
38
+ this.appCommentThread = resolver;
39
+ }
40
+ /**
41
+ * Wire the sender's owner chat turn lookup used by {@link relay} (boot).
42
+ *
43
+ * @param lookup - Lookup, or null
44
+ */
45
+ setTurnLookup(lookup) {
46
+ this.turnLookup = lookup;
47
+ }
48
+ /**
49
+ * An owner app comment was delivered to `session`.
50
+ *
51
+ * @param session - Receiving agent
52
+ * @param comment - App and comment id
53
+ * @param now - Clock
54
+ */
55
+ noteAppComment(session, comment, now = Date.now()) {
56
+ if (!session || !comment.appId || !comment.commentId)
57
+ return;
58
+ this.set(session, {
59
+ origin: { kind: 'owner', receivedBy: session, appComment: { appId: comment.appId, commentId: comment.commentId } },
60
+ at: now,
61
+ via: 'app-comment',
62
+ });
63
+ }
64
+ /**
65
+ * `sender` messaged `target`: when the sender is handling a fresh owner
66
+ * request (its own chat turn or a context), the target now handles it too.
67
+ * The origin keeps who received it from the owner. A target with a newer
68
+ * owner request of its own keeps that one.
69
+ *
70
+ * @param sender - Sending agent
71
+ * @param target - Receiving agent
72
+ * @param now - Clock
73
+ * @returns True when the target took the sender's request
74
+ */
75
+ relay(sender, target, now = Date.now()) {
76
+ if (!sender || !target || sender === target)
77
+ return false;
78
+ const fromTurn = this.turnLookup?.(sender, now) ?? null;
79
+ const own = this.get(sender, now);
80
+ const best = fromTurn && own ? (own.at > fromTurn.at ? own : fromTurn) : own ?? fromTurn;
81
+ if (!best)
82
+ return false;
83
+ const targetTurn = this.turnLookup?.(target, now) ?? null;
84
+ const current = this.get(target, now);
85
+ if (targetTurn && targetTurn.at > best.at)
86
+ return false;
87
+ if (current && current.via === 'app-comment' && current.at > best.at)
88
+ return false;
89
+ this.set(target, { origin: { ...best.origin, receivedBy: best.origin.receivedBy ?? sender }, at: now, via: 'hand-over' });
90
+ return true;
91
+ }
92
+ /**
93
+ * The fresh owner request `session` is handling, if any.
94
+ *
95
+ * @param session - Agent
96
+ * @param now - Clock
97
+ * @returns The context, or null
98
+ */
99
+ get(session, now = Date.now()) {
100
+ const ctx = this.contexts.get(session);
101
+ if (!ctx)
102
+ return null;
103
+ if (now - ctx.at > C.CONTEXT_FRESH_MS) {
104
+ this.contexts.delete(session);
105
+ return null;
106
+ }
107
+ return ctx;
108
+ }
109
+ /**
110
+ * {@link get}, with an app comment origin completed with the comment's
111
+ * Slack thread (so the work's answers land in it). Never throws.
112
+ *
113
+ * @param session - Agent
114
+ * @param now - Clock
115
+ * @returns The context, or null
116
+ */
117
+ async resolve(session, now = Date.now()) {
118
+ const ctx = this.get(session, now);
119
+ if (!ctx)
120
+ return null;
121
+ const ac = ctx.origin.appComment;
122
+ if (!ac || ctx.origin.slackChannelId || !this.appCommentThread)
123
+ return ctx;
124
+ const thread = await this.appCommentThread(ac.appId, ac.commentId).catch(() => null);
125
+ if (!thread)
126
+ return ctx;
127
+ const resolved = { ...ctx, origin: { ...ctx.origin, slackChannelId: thread.slackChannelId, threadTs: thread.threadTs } };
128
+ // Keep the resolved form while it is still the current one.
129
+ if (this.contexts.get(session) === ctx)
130
+ this.contexts.set(session, resolved);
131
+ return resolved;
132
+ }
133
+ /** Forget everything (tests). */
134
+ clear() {
135
+ this.contexts.clear();
136
+ }
137
+ set(session, ctx) {
138
+ this.contexts.delete(session);
139
+ this.contexts.set(session, ctx);
140
+ while (this.contexts.size > C.MAX_CONTEXT_SESSIONS) {
141
+ const oldest = this.contexts.keys().next().value;
142
+ if (oldest === undefined)
143
+ break;
144
+ this.contexts.delete(oldest);
145
+ }
146
+ }
147
+ }
148
+ let registry = null;
149
+ /**
150
+ * The process-wide registry.
151
+ *
152
+ * @returns The registry
153
+ */
154
+ export function getOwnerRequestContext() {
155
+ if (!registry)
156
+ registry = new OwnerRequestContextRegistry();
157
+ return registry;
158
+ }
159
+ /** Drop the process-wide registry (tests). */
160
+ export function resetOwnerRequestContext() {
161
+ registry = null;
162
+ }
163
+ //# sourceMappingURL=owner-request-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-request-context.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/owner-request-context.ts"],"names":[],"mappings":"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"}
@@ -24,13 +24,22 @@ import type { WorkItem } from '../../types/v2/work-item.types.js';
24
24
  import type { TurnOrigin } from './orc-reply-route.service.js';
25
25
  /** The origin a work item carries in `metadata.origin`. */
26
26
  export type WorkItemOrigin =
27
- /** Asked by the owner in a conversation / Slack thread */
27
+ /**
28
+ * Asked by the owner in a conversation / Slack thread / app comment.
29
+ * `receivedBy`: the agent the owner's message reached (it reports the
30
+ * finished work back); `appComment`: the Crewly App comment it came from.
31
+ */
28
32
  {
29
33
  kind: 'owner';
30
34
  conversationId?: string;
31
35
  slackChannelId?: string;
32
36
  threadTs?: string;
33
37
  chatThreadId?: string;
38
+ receivedBy?: string;
39
+ appComment?: {
40
+ appId: string;
41
+ commentId: string;
42
+ };
34
43
  }
35
44
  /** Work on a project ticket */
36
45
  | {
@@ -122,9 +131,10 @@ export declare function originOfWorkItem(wi: WorkItem): WorkItemOrigin | null;
122
131
  * The origin an owner turn gives the work started from it.
123
132
  *
124
133
  * @param turn - The owner's turn origin (OrcReplyRouteService)
134
+ * @param receivedBy - The agent the owner's message reached, when known
125
135
  * @returns An owner origin
126
136
  */
127
- export declare function ownerOriginFromTurn(turn: TurnOrigin): WorkItemOrigin;
137
+ export declare function ownerOriginFromTurn(turn: TurnOrigin, receivedBy?: string): WorkItemOrigin;
128
138
  /** Inputs of {@link inheritedOrigin}. */
129
139
  export interface InheritOriginInput {
130
140
  /** The item being created */
@@ -135,6 +145,17 @@ export interface InheritOriginInput {
135
145
  creatorDestination: WorkDestination | null;
136
146
  /** The creating agent's current work item */
137
147
  creatorWorkItem: WorkItem | null;
148
+ /** The creating agent (stamped as `receivedBy` on an owner origin taken from its turn) */
149
+ creatorSession?: string;
150
+ /**
151
+ * An owner request the creator is handling that is not a chat turn: an
152
+ * app comment delivered to it, or an owner request a colleague handed it
153
+ * (see `owner-request-context.ts`). `at` = when it reached the creator.
154
+ */
155
+ creatorOwnerContext?: {
156
+ origin: WorkItemOrigin;
157
+ at: number;
158
+ } | null;
138
159
  }
139
160
  /**
140
161
  * The origin a new work item inherits (owner request → delegate → verify /
@@ -143,8 +164,14 @@ export interface InheritOriginInput {
143
164
  * Atlas with no origin, and the answer's file landed in an unrelated thread.
144
165
  *
145
166
  * Order: an origin already stamped wins (null = keep it); then the parent's;
146
- * then the creator's current owner request; then the creator's current
147
- * work item's.
167
+ * then the creator's current owner request (the newer of its owner turn and
168
+ * its owner context — an app comment or a colleague's hand-over — when that
169
+ * is newer than its current work item); then the creator's current work
170
+ * item's.
171
+ *
172
+ * Incident 2026-10-07: the owner's app comment reached Lyra (no chat turn),
173
+ * Lyra handed it to Ella by message, and Ella's tickets carried no owner
174
+ * origin, so nothing linked their completion back to the owner.
148
175
  *
149
176
  * @param input - New item, its parent, the creator's current work
150
177
  * @returns The origin to stamp, or null (nothing to inherit / already stamped)
@@ -1 +1 @@
1
- {"version":3,"file":"work-item-destination.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work-item-destination.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.ts"],"names":[],"mappings":"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"}
@@ -118,9 +118,10 @@ export function originOfWorkItem(wi) {
118
118
  * The origin an owner turn gives the work started from it.
119
119
  *
120
120
  * @param turn - The owner's turn origin (OrcReplyRouteService)
121
+ * @param receivedBy - The agent the owner's message reached, when known
121
122
  * @returns An owner origin
122
123
  */
123
- export function ownerOriginFromTurn(turn) {
124
+ export function ownerOriginFromTurn(turn, receivedBy) {
124
125
  const key = parseSlackThreadKey(turn.slackThreadKey);
125
126
  const slackChannelId = key?.slackChannelId ?? turn.slackChannelId;
126
127
  const threadTs = key?.threadTs ?? turn.slackThreadTs;
@@ -130,6 +131,7 @@ export function ownerOriginFromTurn(turn) {
130
131
  ...(slackChannelId ? { slackChannelId } : {}),
131
132
  ...(threadTs ? { threadTs } : {}),
132
133
  ...(turn.chatThreadId ? { chatThreadId: turn.chatThreadId } : {}),
134
+ ...(receivedBy ? { receivedBy } : {}),
133
135
  };
134
136
  }
135
137
  /**
@@ -139,8 +141,14 @@ export function ownerOriginFromTurn(turn) {
139
141
  * Atlas with no origin, and the answer's file landed in an unrelated thread.
140
142
  *
141
143
  * Order: an origin already stamped wins (null = keep it); then the parent's;
142
- * then the creator's current owner request; then the creator's current
143
- * work item's.
144
+ * then the creator's current owner request (the newer of its owner turn and
145
+ * its owner context — an app comment or a colleague's hand-over — when that
146
+ * is newer than its current work item); then the creator's current work
147
+ * item's.
148
+ *
149
+ * Incident 2026-10-07: the owner's app comment reached Lyra (no chat turn),
150
+ * Lyra handed it to Ella by message, and Ella's tickets carried no owner
151
+ * origin, so nothing linked their completion back to the owner.
144
152
  *
145
153
  * @param input - New item, its parent, the creator's current work
146
154
  * @returns The origin to stamp, or null (nothing to inherit / already stamped)
@@ -154,12 +162,24 @@ export function inheritedOrigin(input) {
154
162
  if (fromParent)
155
163
  return fromParent;
156
164
  }
165
+ const { creatorWorkItem, creatorSession } = input;
166
+ const wiStart = creatorWorkItem ? startOf(creatorWorkItem) : -Infinity;
167
+ const wiOrigin = creatorWorkItem ? originOfWorkItem(creatorWorkItem) : null;
168
+ let fromTurn = null;
157
169
  const dest = input.creatorDestination;
158
- if (dest?.kind === 'owner-origin')
159
- return ownerOriginFromTurn(dest.origin);
160
- if (input.creatorWorkItem)
161
- return originOfWorkItem(input.creatorWorkItem);
162
- return null;
170
+ if (dest?.kind === 'owner-origin') {
171
+ // planWorkDestination also answers owner-origin for a work item that was
172
+ // itself asked by the owner (receivedAt = its start): keep that item's
173
+ // own origin then, which knows who received the request.
174
+ const isTheWorkItem = !!creatorWorkItem && wiOrigin?.kind === 'owner' && dest.origin.receivedAt <= wiStart;
175
+ if (!isTheWorkItem)
176
+ fromTurn = { origin: ownerOriginFromTurn(dest.origin, creatorSession), at: dest.origin.receivedAt };
177
+ }
178
+ const ctx = input.creatorOwnerContext && input.creatorOwnerContext.at >= wiStart ? input.creatorOwnerContext : null;
179
+ const pick = fromTurn && ctx ? (ctx.at > fromTurn.at ? ctx : fromTurn) : fromTurn ?? ctx;
180
+ if (pick)
181
+ return pick.origin;
182
+ return wiOrigin;
163
183
  }
164
184
  /**
165
185
  * Shape check for a stamped origin.
@@ -1 +1 @@
1
- {"version":3,"file":"work-item-destination.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"work-item-destination.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export type ProjectTicketAccess = 'owner' | 'orchestrator' | 'lead' | 'member' |
31
31
  export interface ProjectTicketPool {
32
32
  addToPool(workItem: WorkItem, options?: {
33
33
  creatorSession?: string;
34
+ ownerOriginOnly?: boolean;
34
35
  }): Promise<void>;
35
36
  claimSpecificItem(agentId: string, workItemId: string): Promise<{
36
37
  workItem: WorkItem;