crewly 1.20.257 → 1.20.259
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/constants.ts +10 -0
- package/config/skills/_common/lib.sh +10 -1
- package/config/skills/_common/lib.test.sh +14 -0
- package/dist/backend/backend/src/constants.d.ts +36 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +31 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +16 -3
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +8 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +96 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts +20 -2
- package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/caller-identity.middleware.js +52 -1
- package/dist/backend/backend/src/middleware/caller-identity.middleware.js.map +1 -1
- package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts +8 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/caller-identity.testing.js +10 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/terminal.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/terminal.routes.js +8 -2
- package/dist/backend/backend/src/routes/modules/terminal.routes.js.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.d.ts +11 -0
- package/dist/backend/backend/src/services/apps/apps.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.js +22 -1
- package/dist/backend/backend/src/services/apps/apps.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/core/owner-auth.service.d.ts +5 -3
- package/dist/backend/backend/src/services/core/owner-auth.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/owner-auth.service.js +5 -3
- package/dist/backend/backend/src/services/core/owner-auth.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts +257 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.js +522 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.service.js.map +1 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts +76 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js +130 -0
- package/dist/backend/backend/src/services/orc/owner-completion-report.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/orc/owner-request-context.d.ts +119 -0
- package/dist/backend/backend/src/services/orc/owner-request-context.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/owner-request-context.js +163 -0
- package/dist/backend/backend/src/services/orc/owner-request-context.js.map +1 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +31 -4
- package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/work-item-destination.js +28 -8
- package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +1 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +8 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/scheduled-commands.service.d.ts +5 -0
- package/dist/backend/backend/src/services/system/scheduled-commands.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/scheduled-commands.service.js +12 -1
- package/dist/backend/backend/src/services/system/scheduled-commands.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +34 -4
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +10 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +10 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +36 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +31 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/core/owner-auth.service.d.ts +5 -3
- package/dist/cli/backend/src/services/core/owner-auth.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/owner-auth.service.js +5 -3
- package/dist/cli/backend/src/services/core/owner-auth.service.js.map +1 -1
- package/dist/cli/backend/src/services/orc/owner-request-context.d.ts +119 -0
- package/dist/cli/backend/src/services/orc/owner-request-context.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/owner-request-context.js +163 -0
- package/dist/cli/backend/src/services/orc/owner-request-context.js.map +1 -0
- package/dist/cli/backend/src/services/orc/work-item-destination.d.ts +31 -4
- package/dist/cli/backend/src/services/orc/work-item-destination.d.ts.map +1 -1
- package/dist/cli/backend/src/services/orc/work-item-destination.js +28 -8
- package/dist/cli/backend/src/services/orc/work-item-destination.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +19 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +34 -4
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/config/constants.d.ts +10 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +10 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"owner-auth.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/owner-auth.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"owner-auth.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/core/owner-auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finished owner-requested work is always reported back where the owner asked.
|
|
3
|
+
*
|
|
4
|
+
* Incident 2026-10-07: the owner commented in the schedule app about a "Zeng
|
|
5
|
+
* Ming three-stage opportunity map". Lyra answered in the comment's Slack
|
|
6
|
+
* thread "draft goes to you first", Ella opened CREW-305/309/310 and
|
|
7
|
+
* delegated them; everything was verified by 17:37Z and nobody told the
|
|
8
|
+
* owner. Nothing in the harness asked for that report.
|
|
9
|
+
*
|
|
10
|
+
* A CHAIN is every work item whose owner origin names the same place (an app
|
|
11
|
+
* comment, a Slack thread / DM, a chat conversation) and records who received
|
|
12
|
+
* the owner's request (`origin.receivedBy` — set only on work an agent created
|
|
13
|
+
* while handling the owner's message, and inherited by its delegations,
|
|
14
|
+
* verify items and retries). Trigger / cron / agent-internal work has no
|
|
15
|
+
* owner origin and never forms a chain.
|
|
16
|
+
*
|
|
17
|
+
* When the last open item of a chain is closed (verified / done; cancelled
|
|
18
|
+
* and failed items count as closed, at least one must have succeeded):
|
|
19
|
+
*
|
|
20
|
+
* 1. after SETTLE_MS of staying closed (the lead may still hand out the next
|
|
21
|
+
* step) — unless an agent already answered in the owner's place after
|
|
22
|
+
* the work finished — the responsible agent (`receivedBy`) gets ONE
|
|
23
|
+
* message asking it to report the result there;
|
|
24
|
+
* 2. no agent answer there within REPORT_WAIT_MS → one reminder;
|
|
25
|
+
* 3. still none after another REPORT_WAIT_MS → the harness posts a short
|
|
26
|
+
* factual summary there itself (as the agent's bot when it can).
|
|
27
|
+
*
|
|
28
|
+
* Each chain is handled once (persisted, so a restart neither repeats nor
|
|
29
|
+
* forgets a step). Work added to the same place after a chain was handled
|
|
30
|
+
* starts a new chain. Chains whose responsible agent is the orchestrator are
|
|
31
|
+
* skipped: OrcDeliveryEnforcer already keeps reminding the orc until it
|
|
32
|
+
* answers. The owner only reads; nothing here asks the owner to act.
|
|
33
|
+
*
|
|
34
|
+
* Harness text is English.
|
|
35
|
+
*
|
|
36
|
+
* @module services/orc/owner-completion-report.service
|
|
37
|
+
*/
|
|
38
|
+
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
39
|
+
import { type ComponentLogger } from '../core/logger.service.js';
|
|
40
|
+
import { type WorkItemOrigin } from './work-item-destination.js';
|
|
41
|
+
/** An owner origin. */
|
|
42
|
+
export type OwnerOrigin = Extract<WorkItemOrigin, {
|
|
43
|
+
kind: 'owner';
|
|
44
|
+
}>;
|
|
45
|
+
/** Where the owner asked, resolved for posting. */
|
|
46
|
+
export type ReportPlace = {
|
|
47
|
+
kind: 'app-comment';
|
|
48
|
+
appId: string;
|
|
49
|
+
commentId: string;
|
|
50
|
+
slackChannelId?: string;
|
|
51
|
+
threadTs?: string;
|
|
52
|
+
label: string;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'slack';
|
|
55
|
+
slackChannelId: string;
|
|
56
|
+
threadTs?: string;
|
|
57
|
+
label: string;
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'chat';
|
|
60
|
+
conversationId: string;
|
|
61
|
+
chatThreadId?: string;
|
|
62
|
+
label: string;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The place key of an owner origin: one per app comment / Slack thread (or
|
|
66
|
+
* DM) / chat conversation thread.
|
|
67
|
+
*
|
|
68
|
+
* @param origin - Owner origin
|
|
69
|
+
* @returns Key, or null when the origin names no place
|
|
70
|
+
*/
|
|
71
|
+
export declare function ownerPlaceKey(origin: OwnerOrigin): string | null;
|
|
72
|
+
/**
|
|
73
|
+
* The keys an answer in this place is recorded under (an app comment is also
|
|
74
|
+
* answered in its Slack thread).
|
|
75
|
+
*
|
|
76
|
+
* @param origin - Owner origin
|
|
77
|
+
* @param place - Its resolved place, when known
|
|
78
|
+
* @returns Answer keys
|
|
79
|
+
*/
|
|
80
|
+
export declare function answerKeysOf(origin: OwnerOrigin, place?: ReportPlace | null): string[];
|
|
81
|
+
/** One chain of owner-requested work. */
|
|
82
|
+
export interface OwnerChain {
|
|
83
|
+
key: string;
|
|
84
|
+
origin: OwnerOrigin;
|
|
85
|
+
items: WorkItem[];
|
|
86
|
+
/** Some item is still open */
|
|
87
|
+
open: boolean;
|
|
88
|
+
/** At least one item succeeded */
|
|
89
|
+
succeeded: boolean;
|
|
90
|
+
/** Who received the owner's request */
|
|
91
|
+
responsible: string;
|
|
92
|
+
/** Earliest / latest creation of its items (epoch ms) */
|
|
93
|
+
firstCreatedAt: number;
|
|
94
|
+
lastCreatedAt: number;
|
|
95
|
+
/** When the work itself finished (latest completion of a non-verify item, epoch ms) */
|
|
96
|
+
finishedAt: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Group the pool into owner chains.
|
|
100
|
+
*
|
|
101
|
+
* @param items - Pool items
|
|
102
|
+
* @param handledThrough - Per place key: items created at or before this (epoch ms) belong to a chain already handled
|
|
103
|
+
* @returns Chains (only places with at least one item)
|
|
104
|
+
*/
|
|
105
|
+
export declare function collectOwnerChains(items: readonly WorkItem[], handledThrough: Readonly<Record<string, number>>): OwnerChain[];
|
|
106
|
+
/**
|
|
107
|
+
* The titles of a chain's work (verify items left out), for a message.
|
|
108
|
+
*
|
|
109
|
+
* @param items - Chain items
|
|
110
|
+
* @returns `"A", "B" and 2 more`
|
|
111
|
+
*/
|
|
112
|
+
export declare function titlesLine(items: readonly WorkItem[]): string;
|
|
113
|
+
/**
|
|
114
|
+
* What the finished items left behind: their result / output summaries and
|
|
115
|
+
* file paths, one line each.
|
|
116
|
+
*
|
|
117
|
+
* @param items - Chain items
|
|
118
|
+
* @returns Evidence lines (possibly empty)
|
|
119
|
+
*/
|
|
120
|
+
export declare function evidenceLines(items: readonly WorkItem[]): string[];
|
|
121
|
+
/** One chain's report state (persisted). */
|
|
122
|
+
export interface ChainReportRecord {
|
|
123
|
+
/** `<place key>#<first item created at>` */
|
|
124
|
+
id: string;
|
|
125
|
+
key: string;
|
|
126
|
+
origin: OwnerOrigin;
|
|
127
|
+
responsible: string;
|
|
128
|
+
workItemIds: string[];
|
|
129
|
+
titles: string;
|
|
130
|
+
/** The item `reply --work-item` names */
|
|
131
|
+
replyWorkItemId: string;
|
|
132
|
+
firstCreatedAt: number;
|
|
133
|
+
lastCreatedAt: number;
|
|
134
|
+
finishedAt: number;
|
|
135
|
+
/**
|
|
136
|
+
* `settling` (closed, waiting SETTLE_MS) → `asked` → `reminded` → `posted`;
|
|
137
|
+
* `answered`: an agent answered in the owner's place; `skipped`: the orc's
|
|
138
|
+
* own enforcer covers it.
|
|
139
|
+
*/
|
|
140
|
+
stage: 'settling' | 'asked' | 'reminded' | 'posted' | 'answered' | 'skipped';
|
|
141
|
+
closedSince: number;
|
|
142
|
+
askedAt?: number;
|
|
143
|
+
remindedAt?: number;
|
|
144
|
+
postedAt?: number;
|
|
145
|
+
endedAt?: number;
|
|
146
|
+
}
|
|
147
|
+
/** Collaborators (all injectable). */
|
|
148
|
+
export interface OwnerCompletionReportDeps {
|
|
149
|
+
/** Every work item in the pool */
|
|
150
|
+
listItems: () => Promise<WorkItem[]>;
|
|
151
|
+
/** Deliver a message to an agent (waking it when it is down); true when it was taken */
|
|
152
|
+
deliver: (session: string, text: string) => Promise<boolean>;
|
|
153
|
+
/** Resolve where the owner asked (null: nowhere to report) */
|
|
154
|
+
resolvePlace: (origin: OwnerOrigin) => Promise<ReportPlace | null>;
|
|
155
|
+
/** Post the harness's own summary in that place, as the agent when possible; true when posted */
|
|
156
|
+
postFallback: (place: ReportPlace, agentSession: string, text: string) => Promise<boolean>;
|
|
157
|
+
/** Display name of an agent */
|
|
158
|
+
displayNameOf?: (session: string) => string;
|
|
159
|
+
/** The app-comments command agents run (`bash <skills>/core/app-comments/execute.sh`) */
|
|
160
|
+
appCommentsCmd?: string;
|
|
161
|
+
/** Crewly home (store directory) */
|
|
162
|
+
crewlyHome: string;
|
|
163
|
+
now?: () => number;
|
|
164
|
+
logger?: ComponentLogger;
|
|
165
|
+
}
|
|
166
|
+
/** The harness rule that finished owner-requested work is reported to the owner. */
|
|
167
|
+
export declare class OwnerCompletionReportService {
|
|
168
|
+
private readonly deps;
|
|
169
|
+
private readonly file;
|
|
170
|
+
private store;
|
|
171
|
+
private timer;
|
|
172
|
+
private running;
|
|
173
|
+
private answersDirty;
|
|
174
|
+
private readonly log;
|
|
175
|
+
constructor(deps: OwnerCompletionReportDeps);
|
|
176
|
+
private now;
|
|
177
|
+
/** Start the periodic scan (idempotent). */
|
|
178
|
+
start(): void;
|
|
179
|
+
/** Stop the periodic scan. */
|
|
180
|
+
stop(): void;
|
|
181
|
+
/**
|
|
182
|
+
* An agent (or the harness on its behalf) posted in a place. Interim
|
|
183
|
+
* placeholders and owner posts must not be fed here.
|
|
184
|
+
*
|
|
185
|
+
* @param key - Answer key (`slack:<ch>:<ts>`, `slack:<ch>`, `chat:<conv>[:<thread>]`, `app:<app>/<comment>`)
|
|
186
|
+
* @param at - When (epoch ms)
|
|
187
|
+
*/
|
|
188
|
+
noteAnswer(key: string, at?: number): void;
|
|
189
|
+
/**
|
|
190
|
+
* An agent posted in Slack (any machine).
|
|
191
|
+
*
|
|
192
|
+
* @param slackChannelId - Channel / DM
|
|
193
|
+
* @param threadTs - Thread root, when in a thread
|
|
194
|
+
*/
|
|
195
|
+
noteSlackAnswer(slackChannelId: string, threadTs?: string): void;
|
|
196
|
+
/**
|
|
197
|
+
* An agent replied on an app comment.
|
|
198
|
+
*
|
|
199
|
+
* @param appId - App
|
|
200
|
+
* @param commentId - Comment
|
|
201
|
+
*/
|
|
202
|
+
noteAppCommentAnswer(appId: string, commentId: string): void;
|
|
203
|
+
/**
|
|
204
|
+
* An agent posted in a chat conversation.
|
|
205
|
+
*
|
|
206
|
+
* @param conversationId - chat-v2 channel
|
|
207
|
+
* @param chatThreadId - Thread, when in one
|
|
208
|
+
*/
|
|
209
|
+
noteChatAnswer(conversationId: string, chatThreadId?: string): void;
|
|
210
|
+
/** Records being reported (tests / diagnostics). */
|
|
211
|
+
get activeRecords(): ChainReportRecord[];
|
|
212
|
+
/**
|
|
213
|
+
* One scan: find finished chains and move each one step on. Never throws;
|
|
214
|
+
* a scan already running is not doubled.
|
|
215
|
+
*/
|
|
216
|
+
tick(): Promise<void>;
|
|
217
|
+
private scan;
|
|
218
|
+
private recordOf;
|
|
219
|
+
private advance;
|
|
220
|
+
private answeredSince;
|
|
221
|
+
private name;
|
|
222
|
+
/**
|
|
223
|
+
* The message asking the responsible agent for the report.
|
|
224
|
+
*
|
|
225
|
+
* @param record - Chain record
|
|
226
|
+
* @param place - Where the owner asked
|
|
227
|
+
* @param reminder - The second (last) ask
|
|
228
|
+
* @returns English harness text
|
|
229
|
+
*/
|
|
230
|
+
askText(record: ChainReportRecord, place: ReportPlace, reminder: boolean): string;
|
|
231
|
+
/**
|
|
232
|
+
* The harness's own summary, posted when the agent never reported.
|
|
233
|
+
*
|
|
234
|
+
* @param record - Chain record
|
|
235
|
+
* @param items - The chain's items (for evidence), when still in the pool
|
|
236
|
+
* @returns English harness text
|
|
237
|
+
*/
|
|
238
|
+
fallbackText(record: ChainReportRecord, items: readonly WorkItem[]): string;
|
|
239
|
+
private end;
|
|
240
|
+
private markHandled;
|
|
241
|
+
private prune;
|
|
242
|
+
private load;
|
|
243
|
+
private save;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The running service, once started at boot.
|
|
247
|
+
*
|
|
248
|
+
* @returns The service, or null
|
|
249
|
+
*/
|
|
250
|
+
export declare function getOwnerCompletionReport(): OwnerCompletionReportService | null;
|
|
251
|
+
/**
|
|
252
|
+
* Set (or clear) the running service.
|
|
253
|
+
*
|
|
254
|
+
* @param service - Service or null
|
|
255
|
+
*/
|
|
256
|
+
export declare function setOwnerCompletionReport(service: OwnerCompletionReportService | null): void;
|
|
257
|
+
//# sourceMappingURL=owner-completion-report.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-completion-report.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/owner-completion-report.service.ts"],"names":[],"mappings":"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"}
|