crewly 1.20.147 → 1.20.149
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 +43 -0
- package/config/roles/developer/prompt.md +2 -1
- package/config/roles/orchestrator/prompt.md +3 -2
- package/config/roles/product-manager/prompt.md +2 -1
- package/config/roles/team-leader/tl-addon.md +11 -2
- package/config/skills/team-leader/set-member-model/SKILL.md +60 -0
- package/config/skills/team-leader/set-member-model/execute.sh +55 -0
- package/config/skills/team-leader/set-member-model/execute.test.sh +76 -0
- package/dist/backend/backend/src/constants.d.ts +75 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +58 -1
- 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 +21 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +11 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +86 -11
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +9 -6
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +22 -16
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +248 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +572 -0
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -0
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +8 -0
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +12 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +200 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +485 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +163 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +176 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts +106 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.js +238 -0
- package/dist/backend/backend/src/services/cloud/cloud-login-runner.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +38 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +10 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +41 -3
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts +9 -0
- package/dist/backend/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-state-persistence.js +20 -0
- package/dist/backend/backend/src/services/session/session-state-persistence.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-permission.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-permission.service.js +1 -0
- package/dist/backend/backend/src/services/skill/skill-permission.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts +55 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js +114 -0
- package/dist/backend/backend/src/services/slack/slack-owner-direct-dm.js.map +1 -0
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts +25 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +82 -2
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +27 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +48 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +8 -0
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +4 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/utils/member-default-model.utils.d.ts +66 -0
- package/dist/backend/backend/src/utils/member-default-model.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/member-default-model.utils.js +95 -0
- package/dist/backend/backend/src/utils/member-default-model.utils.js.map +1 -0
- package/dist/backend/backend/src/utils/trigger-workitem-dedupe.utils.d.ts +53 -0
- package/dist/backend/backend/src/utils/trigger-workitem-dedupe.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/trigger-workitem-dedupe.utils.js +75 -0
- package/dist/backend/backend/src/utils/trigger-workitem-dedupe.utils.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +42 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +42 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +75 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +58 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +9 -6
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +22 -16
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +8 -0
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +12 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +16 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +38 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +14 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +9 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-state-persistence.js +20 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -1
- package/dist/cli/backend/src/types/settings.types.d.ts +8 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +4 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/utils/member-default-model.utils.d.ts +66 -0
- package/dist/cli/backend/src/utils/member-default-model.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/member-default-model.utils.js +95 -0
- package/dist/cli/backend/src/utils/member-default-model.utils.js.map +1 -0
- package/dist/cli/config/constants.d.ts +42 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +42 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/package.json +1 -1
|
@@ -35,6 +35,7 @@ import axios from 'axios';
|
|
|
35
35
|
import { LoggerService } from '../core/logger.service.js';
|
|
36
36
|
import { TaskPoolService } from '../task-pool/task-pool.service.js';
|
|
37
37
|
import { getLocalApiBaseUrl } from '../../utils/local-api-url.utils.js';
|
|
38
|
+
import { FreshTaskConversationService, freshConversationNote, } from '../agent/fresh-task-conversation.service.js';
|
|
38
39
|
// ---------------------------------------------------------------------------
|
|
39
40
|
// Constants
|
|
40
41
|
// ---------------------------------------------------------------------------
|
|
@@ -99,6 +100,12 @@ export class WorkItemDispatchSubscriber {
|
|
|
99
100
|
* bypasses the check so tests / CLI never touch the team store.
|
|
100
101
|
*/
|
|
101
102
|
teamBudgetGate = null;
|
|
103
|
+
/**
|
|
104
|
+
* Fresh-conversation preparer consulted right before a brief is written.
|
|
105
|
+
* Defaults to the {@link FreshTaskConversationService} singleton; tests
|
|
106
|
+
* inject a stub via {@link setTaskConversationPreparer}.
|
|
107
|
+
*/
|
|
108
|
+
taskConversationPreparer = null;
|
|
102
109
|
constructor() {
|
|
103
110
|
this.logger = LoggerService.getInstance().createComponentLogger(SERVICE_NAME);
|
|
104
111
|
}
|
|
@@ -111,6 +118,36 @@ export class WorkItemDispatchSubscriber {
|
|
|
111
118
|
setTeamBudgetGate(gate) {
|
|
112
119
|
this.teamBudgetGate = gate;
|
|
113
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Override the fresh-conversation preparer (tests), or `null` to restore
|
|
123
|
+
* the default singleton.
|
|
124
|
+
*
|
|
125
|
+
* @param preparer - Preparer implementation
|
|
126
|
+
*/
|
|
127
|
+
setTaskConversationPreparer(preparer) {
|
|
128
|
+
this.taskConversationPreparer = preparer;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Give the target a fresh conversation when this is a new task (Claude
|
|
132
|
+
* Code members only; the service decides). Never throws.
|
|
133
|
+
*
|
|
134
|
+
* @param workItem - WI about to be written (target set)
|
|
135
|
+
* @returns The note to put in front of the brief, or null
|
|
136
|
+
*/
|
|
137
|
+
async prepareConversation(workItem) {
|
|
138
|
+
try {
|
|
139
|
+
const preparer = this.taskConversationPreparer ?? FreshTaskConversationService.getInstance();
|
|
140
|
+
const result = await preparer.prepareForTask(workItem.target, workItem);
|
|
141
|
+
return result.cleared && result.handoverPath ? freshConversationNote(result.handoverPath) : null;
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
this.logger.debug('Fresh-conversation prepare failed (non-fatal)', {
|
|
145
|
+
workItemId: workItem.id,
|
|
146
|
+
error: err instanceof Error ? err.message : String(err),
|
|
147
|
+
});
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
114
151
|
static getInstance() {
|
|
115
152
|
if (!WorkItemDispatchSubscriber.instance) {
|
|
116
153
|
WorkItemDispatchSubscriber.instance = new WorkItemDispatchSubscriber();
|
|
@@ -202,7 +239,10 @@ export class WorkItemDispatchSubscriber {
|
|
|
202
239
|
return false;
|
|
203
240
|
}
|
|
204
241
|
}
|
|
205
|
-
|
|
242
|
+
// A new task starts in a fresh conversation (old one saved first) so it
|
|
243
|
+
// does not re-read the previous task's history on every turn.
|
|
244
|
+
const freshNote = await this.prepareConversation(workItem);
|
|
245
|
+
const message = this.buildDispatchMessage(workItem, freshNote);
|
|
206
246
|
try {
|
|
207
247
|
await axios.post(`${getLocalApiBaseUrl()}/api/terminal/${encodeURIComponent(workItem.target)}/write`, { data: message, mode: 'message' }, {
|
|
208
248
|
headers: { 'X-Agent-Session': SERVICE_NAME },
|
|
@@ -274,6 +314,11 @@ export class WorkItemDispatchSubscriber {
|
|
|
274
314
|
return this.redispatch(batch[0]);
|
|
275
315
|
for (const wi of batch)
|
|
276
316
|
this.dispatched.delete(this.dispatchKey(wi.id, target));
|
|
317
|
+
// No fresh-conversation prepare here: a batch is a reminder for work that
|
|
318
|
+
// was already delivered to this agent, so its context is what the agent
|
|
319
|
+
// needs; clearing would drop it. (A single-item reminder goes through
|
|
320
|
+
// dispatchTo, where only a root different from the last delivered one
|
|
321
|
+
// can clear — and never while other work is running.)
|
|
277
322
|
const message = this.buildBatchDispatchMessage(batch, target);
|
|
278
323
|
try {
|
|
279
324
|
await axios.post(`${getLocalApiBaseUrl()}/api/terminal/${encodeURIComponent(target)}/write`, { data: message, mode: 'message' }, {
|
|
@@ -393,12 +438,13 @@ export class WorkItemDispatchSubscriber {
|
|
|
393
438
|
'',
|
|
394
439
|
].join('\n');
|
|
395
440
|
}
|
|
396
|
-
buildDispatchMessage(workItem) {
|
|
441
|
+
buildDispatchMessage(workItem, freshNote = null) {
|
|
397
442
|
const titleSnippet = workItem.title.length > 80
|
|
398
443
|
? workItem.title.substring(0, 77) + '...'
|
|
399
444
|
: workItem.title;
|
|
400
445
|
return [
|
|
401
446
|
'',
|
|
447
|
+
...(freshNote ? [freshNote] : []),
|
|
402
448
|
`[CREWLY-DISPATCH] WorkItem ${workItem.id} queued for you (type=${workItem.type}).`,
|
|
403
449
|
` Title: ${titleSnippet}`,
|
|
404
450
|
' Run poll-tasks to claim:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workitem-dispatch.subscriber.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/workitem-dispatch.subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"workitem-dispatch.subscriber.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/workitem-dispatch.subscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,14 @@ export interface GeneralSettings {
|
|
|
46
46
|
* to the default (on).
|
|
47
47
|
*/
|
|
48
48
|
autoUpdate?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Start a fresh Claude Code conversation (with a saved handover) when a team
|
|
51
|
+
* member gets a task unrelated to its previous one, instead of carrying the
|
|
52
|
+
* whole history into every turn. Never applies to the orchestrator.
|
|
53
|
+
* `CREWLY_FRESH_TASK_CONVERSATION=0` forces it off regardless of this value.
|
|
54
|
+
* Optional so older settings files merge to the default (on).
|
|
55
|
+
*/
|
|
56
|
+
freshConversationPerTask?: boolean;
|
|
49
57
|
/** Per-runtime CLI init commands. Key = runtime type, value = CLI command string */
|
|
50
58
|
runtimeCommands: Record<AIRuntime, string>;
|
|
51
59
|
/** Minutes of inactivity before an agent is automatically suspended (0 = disabled) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/settings.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"settings.types.d.ts","sourceRoot":"","sources":["../../../../../backend/src/types/settings.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,7 @@ export function getDefaultSettings() {
|
|
|
90
90
|
autoResumeOnRestart: true,
|
|
91
91
|
announceOnBoot: true,
|
|
92
92
|
autoUpdate: true,
|
|
93
|
+
freshConversationPerTask: true,
|
|
93
94
|
runtimeCommands: {
|
|
94
95
|
'claude-code': 'claude --dangerously-skip-permissions',
|
|
95
96
|
'gemini-cli': 'gemini --yolo',
|
|
@@ -169,6 +170,9 @@ export function validateSettings(settings) {
|
|
|
169
170
|
if (settings.general.autoUpdate !== undefined && typeof settings.general.autoUpdate !== 'boolean') {
|
|
170
171
|
errors.push('autoUpdate must be a boolean');
|
|
171
172
|
}
|
|
173
|
+
if (settings.general.freshConversationPerTask !== undefined && typeof settings.general.freshConversationPerTask !== 'boolean') {
|
|
174
|
+
errors.push('freshConversationPerTask must be a boolean');
|
|
175
|
+
}
|
|
172
176
|
if (settings.general.checkInIntervalMinutes < SETTINGS_CONSTRAINTS.MIN_CHECK_IN_INTERVAL) {
|
|
173
177
|
errors.push(`Check-in interval must be at least ${SETTINGS_CONSTRAINTS.MIN_CHECK_IN_INTERVAL} minute`);
|
|
174
178
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/settings.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAOtF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,aAAa;IACb,YAAY;IACZ,WAAW;IACX,cAAc;IACd,iBAAiB;IACjB,cAAc;CACN,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.types.js","sourceRoot":"","sources":["../../../../../backend/src/types/settings.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default model for Claude Code team members.
|
|
3
|
+
*
|
|
4
|
+
* A member that has someone above it reviewing its work (its parent member,
|
|
5
|
+
* else the team lead — the same rule the bridge uses to pick a reviewer)
|
|
6
|
+
* runs on Sonnet unless a model was chosen for it. Leads, and members with no
|
|
7
|
+
* separate reviewer, keep Claude Code's own default (Opus). An explicit
|
|
8
|
+
* `modelId` always wins, and the orchestrator is never touched.
|
|
9
|
+
*
|
|
10
|
+
* `CREWLY_MEMBER_DEFAULT_MODEL` replaces `sonnet`; `''` or `off` turns the
|
|
11
|
+
* default off entirely.
|
|
12
|
+
*
|
|
13
|
+
* @module utils/member-default-model
|
|
14
|
+
*/
|
|
15
|
+
import type { Team, TeamMember } from '../types/index.js';
|
|
16
|
+
/** The fields of a member this decision reads. */
|
|
17
|
+
type MemberLike = Pick<TeamMember, 'id' | 'sessionName' | 'role' | 'modelId' | 'parentMemberId'> & {
|
|
18
|
+
runtimeType?: string;
|
|
19
|
+
} & Partial<Pick<TeamMember, 'canDelegate'>>;
|
|
20
|
+
/**
|
|
21
|
+
* The model reviewed members get when they have none, after the env override.
|
|
22
|
+
*
|
|
23
|
+
* @param env - Environment (tests)
|
|
24
|
+
* @returns The model name, or null when the default is disabled
|
|
25
|
+
*/
|
|
26
|
+
export declare function reviewedMemberDefaultModel(env?: NodeJS.ProcessEnv): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Whether someone other than the member reviews its work: a parent member
|
|
29
|
+
* that exists in the team, or a team lead who is not the member itself.
|
|
30
|
+
* Members that lead (team-leader / tech-lead role, or a delegating member
|
|
31
|
+
* with no parent) never count as reviewed.
|
|
32
|
+
*
|
|
33
|
+
* @param team - The member's team
|
|
34
|
+
* @param member - The member
|
|
35
|
+
* @returns True when the member has a reviewer above it
|
|
36
|
+
*/
|
|
37
|
+
export declare function memberHasReviewer(team: Pick<Team, 'id' | 'name' | 'members'>, member: MemberLike): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* The model a member should launch with when it has no `modelId` of its
|
|
40
|
+
* own. Returns null when no default applies (explicit model set, not Claude
|
|
41
|
+
* Code, orchestrator, a lead / unreviewed member, or the default disabled).
|
|
42
|
+
*
|
|
43
|
+
* @param team - The member's team
|
|
44
|
+
* @param member - The member
|
|
45
|
+
* @param env - Environment (tests)
|
|
46
|
+
* @returns The default model name, or null
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* defaultModelForMember(team, worker); // 'sonnet'
|
|
51
|
+
* defaultModelForMember(team, lead); // null → Claude Code's own default (Opus)
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function defaultModelForMember(team: Pick<Team, 'id' | 'name' | 'members'>, member: MemberLike, env?: NodeJS.ProcessEnv): string | null;
|
|
55
|
+
/**
|
|
56
|
+
* The model id a member launches with: its own `modelId` when set, else the
|
|
57
|
+
* reviewed-member default from {@link defaultModelForMember}.
|
|
58
|
+
*
|
|
59
|
+
* @param team - The member's team
|
|
60
|
+
* @param member - The member
|
|
61
|
+
* @param env - Environment (tests)
|
|
62
|
+
* @returns Model id to pass to the runtime, or undefined for the runtime's own default
|
|
63
|
+
*/
|
|
64
|
+
export declare function effectiveMemberModelId(team: Pick<Team, 'id' | 'name' | 'members'>, member: MemberLike, env?: NodeJS.ProcessEnv): string | undefined;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=member-default-model.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-default-model.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/member-default-model.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG1D,kDAAkD;AAClD,KAAK,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,gBAAgB,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzH,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAM9F;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAQ1G;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAC3C,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,IAAI,CAMf;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,EAC3C,MAAM,EAAE,UAAU,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAGpB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default model for Claude Code team members.
|
|
3
|
+
*
|
|
4
|
+
* A member that has someone above it reviewing its work (its parent member,
|
|
5
|
+
* else the team lead — the same rule the bridge uses to pick a reviewer)
|
|
6
|
+
* runs on Sonnet unless a model was chosen for it. Leads, and members with no
|
|
7
|
+
* separate reviewer, keep Claude Code's own default (Opus). An explicit
|
|
8
|
+
* `modelId` always wins, and the orchestrator is never touched.
|
|
9
|
+
*
|
|
10
|
+
* `CREWLY_MEMBER_DEFAULT_MODEL` replaces `sonnet`; `''` or `off` turns the
|
|
11
|
+
* default off entirely.
|
|
12
|
+
*
|
|
13
|
+
* @module utils/member-default-model
|
|
14
|
+
*/
|
|
15
|
+
import { MEMBER_MODEL_DEFAULT_CONSTANTS, ORCHESTRATOR_SESSION_NAME, RUNTIME_TYPES } from '../constants.js';
|
|
16
|
+
import { pickTeamLead } from './team.utils.js';
|
|
17
|
+
/**
|
|
18
|
+
* The model reviewed members get when they have none, after the env override.
|
|
19
|
+
*
|
|
20
|
+
* @param env - Environment (tests)
|
|
21
|
+
* @returns The model name, or null when the default is disabled
|
|
22
|
+
*/
|
|
23
|
+
export function reviewedMemberDefaultModel(env = process.env) {
|
|
24
|
+
const raw = env[MEMBER_MODEL_DEFAULT_CONSTANTS.ENV_OVERRIDE];
|
|
25
|
+
if (raw === undefined)
|
|
26
|
+
return MEMBER_MODEL_DEFAULT_CONSTANTS.DEFAULT_REVIEWED_MEMBER_MODEL;
|
|
27
|
+
const value = raw.trim();
|
|
28
|
+
if (!value || value.toLowerCase() === 'off')
|
|
29
|
+
return null;
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Whether someone other than the member reviews its work: a parent member
|
|
34
|
+
* that exists in the team, or a team lead who is not the member itself.
|
|
35
|
+
* Members that lead (team-leader / tech-lead role, or a delegating member
|
|
36
|
+
* with no parent) never count as reviewed.
|
|
37
|
+
*
|
|
38
|
+
* @param team - The member's team
|
|
39
|
+
* @param member - The member
|
|
40
|
+
* @returns True when the member has a reviewer above it
|
|
41
|
+
*/
|
|
42
|
+
export function memberHasReviewer(team, member) {
|
|
43
|
+
if (MEMBER_MODEL_DEFAULT_CONSTANTS.LEAD_ROLES.includes(member.role))
|
|
44
|
+
return false;
|
|
45
|
+
const members = team.members ?? [];
|
|
46
|
+
const parent = member.parentMemberId ? members.find((m) => m.id === member.parentMemberId) : undefined;
|
|
47
|
+
if (parent && parent.id !== member.id)
|
|
48
|
+
return true;
|
|
49
|
+
if (member.canDelegate === true && !member.parentMemberId)
|
|
50
|
+
return false;
|
|
51
|
+
const lead = pickTeamLead(team);
|
|
52
|
+
return !!lead && lead.id !== member.id;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The model a member should launch with when it has no `modelId` of its
|
|
56
|
+
* own. Returns null when no default applies (explicit model set, not Claude
|
|
57
|
+
* Code, orchestrator, a lead / unreviewed member, or the default disabled).
|
|
58
|
+
*
|
|
59
|
+
* @param team - The member's team
|
|
60
|
+
* @param member - The member
|
|
61
|
+
* @param env - Environment (tests)
|
|
62
|
+
* @returns The default model name, or null
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* defaultModelForMember(team, worker); // 'sonnet'
|
|
67
|
+
* defaultModelForMember(team, lead); // null → Claude Code's own default (Opus)
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export function defaultModelForMember(team, member, env = process.env) {
|
|
71
|
+
if (member.modelId)
|
|
72
|
+
return null;
|
|
73
|
+
if ((member.runtimeType ?? RUNTIME_TYPES.CLAUDE_CODE) !== RUNTIME_TYPES.CLAUDE_CODE)
|
|
74
|
+
return null;
|
|
75
|
+
if (member.role === 'orchestrator' || member.sessionName === ORCHESTRATOR_SESSION_NAME)
|
|
76
|
+
return null;
|
|
77
|
+
if (!memberHasReviewer(team, member))
|
|
78
|
+
return null;
|
|
79
|
+
return reviewedMemberDefaultModel(env);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The model id a member launches with: its own `modelId` when set, else the
|
|
83
|
+
* reviewed-member default from {@link defaultModelForMember}.
|
|
84
|
+
*
|
|
85
|
+
* @param team - The member's team
|
|
86
|
+
* @param member - The member
|
|
87
|
+
* @param env - Environment (tests)
|
|
88
|
+
* @returns Model id to pass to the runtime, or undefined for the runtime's own default
|
|
89
|
+
*/
|
|
90
|
+
export function effectiveMemberModelId(team, member, env = process.env) {
|
|
91
|
+
if (member.modelId)
|
|
92
|
+
return member.modelId;
|
|
93
|
+
return defaultModelForMember(team, member, env) ?? undefined;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=member-default-model.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-default-model.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/member-default-model.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3G,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7E,MAAM,GAAG,GAAG,GAAG,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAC7D,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,8BAA8B,CAAC,6BAA6B,CAAC;IAC3F,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2C,EAAE,MAAkB;IAC/F,IAAK,8BAA8B,CAAC,UAAgC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAY,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAA2C,EAC3C,MAAkB,EAClB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,CAAC,KAAK,aAAa,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACjG,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,CAAC,WAAW,KAAK,yBAAyB;QAAE,OAAO,IAAI,CAAC;IACpG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAClD,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAA2C,EAC3C,MAAkB,EAClB,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1C,OAAO,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Duplicate checks for WorkItems created by triggers (`watch-for-event` and
|
|
3
|
+
* friends).
|
|
4
|
+
*
|
|
5
|
+
* `agent:idle_after_task` fires on every busy→idle transition, and every
|
|
6
|
+
* fire used to create a fresh WorkItem with a new id — so one delegation
|
|
7
|
+
* could wake the reviewer several times to verify the same deliverable,
|
|
8
|
+
* on top of the bridge's own `Verify:` item. These pure helpers let the
|
|
9
|
+
* trigger action path skip a fire whose work is already open in the pool.
|
|
10
|
+
*
|
|
11
|
+
* @module utils/trigger-workitem-dedupe
|
|
12
|
+
*/
|
|
13
|
+
import { type WorkItem } from '../types/v2/work-item.types.js';
|
|
14
|
+
/** What the trigger is about to create. */
|
|
15
|
+
export interface TriggeredWorkItemDraft {
|
|
16
|
+
/** Session the new WorkItem targets */
|
|
17
|
+
target?: string;
|
|
18
|
+
/** Owner of the new WorkItem */
|
|
19
|
+
owner?: string;
|
|
20
|
+
/** Title of the new WorkItem */
|
|
21
|
+
title: string;
|
|
22
|
+
}
|
|
23
|
+
/** The parts of the trigger that identify an idle-verify watcher. */
|
|
24
|
+
export interface TriggerLike {
|
|
25
|
+
/** Trigger configuration; only `signal` configs are inspected */
|
|
26
|
+
config?: {
|
|
27
|
+
type?: string;
|
|
28
|
+
eventType?: string;
|
|
29
|
+
filter?: Record<string, unknown>;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* An open WorkItem with the same target, owner and title as the one about to
|
|
34
|
+
* be created, if any.
|
|
35
|
+
*
|
|
36
|
+
* @param items - Current pool items
|
|
37
|
+
* @param draft - What the trigger would create
|
|
38
|
+
* @returns The existing open item, or null
|
|
39
|
+
*/
|
|
40
|
+
export declare function findOpenDuplicateWorkItem(items: ReadonlyArray<WorkItem>, draft: TriggeredWorkItemDraft): WorkItem | null;
|
|
41
|
+
/**
|
|
42
|
+
* For an idle-verify watcher (`agent:idle_after_task` on one worker, with a
|
|
43
|
+
* "verify" title): the open bridge `Verify:` item that already covers that
|
|
44
|
+
* worker's work for the same reviewer, if any. Such a fire adds nothing —
|
|
45
|
+
* the worker reported done and the reviewer already has the item.
|
|
46
|
+
*
|
|
47
|
+
* @param items - Current pool items
|
|
48
|
+
* @param trigger - The trigger that fired
|
|
49
|
+
* @param draft - What the trigger would create (its target is the reviewer)
|
|
50
|
+
* @returns The covering Verify item, or null (also for every other kind of trigger)
|
|
51
|
+
*/
|
|
52
|
+
export declare function findCoveringVerifyItem(items: ReadonlyArray<WorkItem>, trigger: TriggerLike, draft: TriggeredWorkItemDraft): WorkItem | null;
|
|
53
|
+
//# sourceMappingURL=trigger-workitem-dedupe.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-workitem-dedupe.utils.d.ts","sourceRoot":"","sources":["../../../../../backend/src/utils/trigger-workitem-dedupe.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA+B,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE5F,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CAClF;AAqBD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,QAAQ,GAAG,IAAI,CAUjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC9B,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,sBAAsB,GAC5B,QAAQ,GAAG,IAAI,CAiBjB"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Duplicate checks for WorkItems created by triggers (`watch-for-event` and
|
|
3
|
+
* friends).
|
|
4
|
+
*
|
|
5
|
+
* `agent:idle_after_task` fires on every busy→idle transition, and every
|
|
6
|
+
* fire used to create a fresh WorkItem with a new id — so one delegation
|
|
7
|
+
* could wake the reviewer several times to verify the same deliverable,
|
|
8
|
+
* on top of the bridge's own `Verify:` item. These pure helpers let the
|
|
9
|
+
* trigger action path skip a fire whose work is already open in the pool.
|
|
10
|
+
*
|
|
11
|
+
* @module utils/trigger-workitem-dedupe
|
|
12
|
+
*/
|
|
13
|
+
import { TERMINAL_WORK_ITEM_STATUSES } from '../types/v2/work-item.types.js';
|
|
14
|
+
/** The event that fired an idle-after-task watcher. */
|
|
15
|
+
const IDLE_AFTER_TASK_EVENT = 'agent:idle_after_task';
|
|
16
|
+
/** Marker in the bridge's deterministic verification ids (`<id>:verify:<id>`). */
|
|
17
|
+
const VERIFY_ID_MARKER = ':verify:';
|
|
18
|
+
/** Words in a watcher title that mark it as a "verify the worker's output" watcher. */
|
|
19
|
+
const VERIFY_TITLE_RE = /verif/i;
|
|
20
|
+
/**
|
|
21
|
+
* Whether a WorkItem is still open (not done, verified or cancelled).
|
|
22
|
+
*
|
|
23
|
+
* @param wi - WorkItem
|
|
24
|
+
* @returns True when not in a terminal status
|
|
25
|
+
*/
|
|
26
|
+
function isOpen(wi) {
|
|
27
|
+
return !TERMINAL_WORK_ITEM_STATUSES.has(wi.status);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* An open WorkItem with the same target, owner and title as the one about to
|
|
31
|
+
* be created, if any.
|
|
32
|
+
*
|
|
33
|
+
* @param items - Current pool items
|
|
34
|
+
* @param draft - What the trigger would create
|
|
35
|
+
* @returns The existing open item, or null
|
|
36
|
+
*/
|
|
37
|
+
export function findOpenDuplicateWorkItem(items, draft) {
|
|
38
|
+
return (items.find((wi) => isOpen(wi) &&
|
|
39
|
+
wi.title === draft.title &&
|
|
40
|
+
(wi.target ?? '') === (draft.target ?? '') &&
|
|
41
|
+
(draft.owner === undefined || wi.owner === draft.owner)) ?? null);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* For an idle-verify watcher (`agent:idle_after_task` on one worker, with a
|
|
45
|
+
* "verify" title): the open bridge `Verify:` item that already covers that
|
|
46
|
+
* worker's work for the same reviewer, if any. Such a fire adds nothing —
|
|
47
|
+
* the worker reported done and the reviewer already has the item.
|
|
48
|
+
*
|
|
49
|
+
* @param items - Current pool items
|
|
50
|
+
* @param trigger - The trigger that fired
|
|
51
|
+
* @param draft - What the trigger would create (its target is the reviewer)
|
|
52
|
+
* @returns The covering Verify item, or null (also for every other kind of trigger)
|
|
53
|
+
*/
|
|
54
|
+
export function findCoveringVerifyItem(items, trigger, draft) {
|
|
55
|
+
const config = trigger.config;
|
|
56
|
+
if (!config || config.type !== 'signal' || config.eventType !== IDLE_AFTER_TASK_EVENT)
|
|
57
|
+
return null;
|
|
58
|
+
if (!VERIFY_TITLE_RE.test(draft.title))
|
|
59
|
+
return null;
|
|
60
|
+
const worker = typeof config.filter?.['sessionName'] === 'string' ? config.filter['sessionName'] : null;
|
|
61
|
+
if (!worker)
|
|
62
|
+
return null;
|
|
63
|
+
const byId = new Map(items.map((wi) => [wi.id, wi]));
|
|
64
|
+
return (items.find((wi) => {
|
|
65
|
+
if (!isOpen(wi) || !wi.id.includes(VERIFY_ID_MARKER))
|
|
66
|
+
return false;
|
|
67
|
+
if (draft.target && wi.target !== draft.target)
|
|
68
|
+
return false;
|
|
69
|
+
const sourceId = typeof wi.metadata?.['verifyOf'] === 'string'
|
|
70
|
+
? wi.metadata['verifyOf']
|
|
71
|
+
: wi.id.slice(0, wi.id.indexOf(VERIFY_ID_MARKER));
|
|
72
|
+
return byId.get(sourceId)?.target === worker;
|
|
73
|
+
}) ?? null);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=trigger-workitem-dedupe.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-workitem-dedupe.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/trigger-workitem-dedupe.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,2BAA2B,EAAiB,MAAM,gCAAgC,CAAC;AAkB5F,uDAAuD;AACvD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,kFAAkF;AAClF,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAEpC,uFAAuF;AACvF,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC;;;;;GAKG;AACH,SAAS,MAAM,CAAC,EAA4B;IAC1C,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAA8B,EAC9B,KAA6B;IAE7B,OAAO,CACL,KAAK,CAAC,IAAI,CACR,CAAC,EAAE,EAAE,EAAE,CACL,MAAM,CAAC,EAAE,CAAC;QACV,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QACxB,CAAC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1C,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAC1D,IAAI,IAAI,CACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA8B,EAC9B,OAAoB,EACpB,KAA6B;IAE7B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,qBAAqB;QAAE,OAAO,IAAI,CAAC;IACnG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACpH,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,CACL,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;QAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACnE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC7D,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,QAAQ;YAC5D,CAAC,CAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAY;YACrC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,CAAC,CAAC,IAAI,IAAI,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1208,6 +1208,48 @@ export declare const CLOUD_DEVICE_PAIRING_CONSTANTS: {
|
|
|
1208
1208
|
readonly SETUP: "setup";
|
|
1209
1209
|
};
|
|
1210
1210
|
};
|
|
1211
|
+
/**
|
|
1212
|
+
* Cloud disconnect notice: when a signed-in machine cannot talk to Crewly
|
|
1213
|
+
* Cloud for a sustained period (sign-in expired, Cloud unreachable), inbound
|
|
1214
|
+
* Slack messages for its agents queue in Cloud unseen. The notice DMs the
|
|
1215
|
+
* owner on Slack (outbound still works with the local bot tokens) with a
|
|
1216
|
+
* phone-friendly re-login link from `crewly cloud login`, run by Crewly.
|
|
1217
|
+
*/
|
|
1218
|
+
export declare const CLOUD_DISCONNECT_NOTICE_CONSTANTS: {
|
|
1219
|
+
/** Kill switch: `CREWLY_CLOUD_DISCONNECT_NOTICE=0` turns the notice off */
|
|
1220
|
+
readonly ENV_SWITCH: "CREWLY_CLOUD_DISCONNECT_NOTICE";
|
|
1221
|
+
/** No successful Cloud request for this long = disconnected (ms) — 15 min */
|
|
1222
|
+
readonly DISCONNECT_THRESHOLD_MS: number;
|
|
1223
|
+
/** How often the monitor checks (ms) */
|
|
1224
|
+
readonly CHECK_INTERVAL_MS: number;
|
|
1225
|
+
/** Repeat the notice at most this often while still disconnected (ms) — 6 h */
|
|
1226
|
+
readonly REPEAT_INTERVAL_MS: number;
|
|
1227
|
+
/** State file under the Crewly home (last notice, DM message, episode start) */
|
|
1228
|
+
readonly STATE_FILE: "cloud/disconnect-notice.json";
|
|
1229
|
+
/** Arguments for the CLI login run in a PTY (device pairing, no local browser) */
|
|
1230
|
+
readonly CLI_LOGIN_ARGS: readonly ["cloud", "login", "--no-browser"];
|
|
1231
|
+
/** CLI entry point relative to the package root */
|
|
1232
|
+
readonly CLI_ENTRY: "dist/cli/cli/src/index.js";
|
|
1233
|
+
/** How long to wait for the CLI to print its login link before sending the notice without one (ms) */
|
|
1234
|
+
readonly LINK_WAIT_MS: number;
|
|
1235
|
+
/** Hard stop for one CLI login run (ms) — the pairing itself lasts 15 min */
|
|
1236
|
+
readonly LOGIN_TIMEOUT_MS: number;
|
|
1237
|
+
/** Wait before starting another login run after one could not start (ms) */
|
|
1238
|
+
readonly LOGIN_RETRY_MS: number;
|
|
1239
|
+
/** How often to read the owner's Slack DM for a reply the CLI asked for (ms) */
|
|
1240
|
+
readonly REPLY_POLL_INTERVAL_MS: number;
|
|
1241
|
+
/** Stop reading replies after this long (ms) */
|
|
1242
|
+
readonly REPLY_MAX_WAIT_MS: number;
|
|
1243
|
+
/** PTY size for the CLI login (wide so the link is never wrapped) */
|
|
1244
|
+
readonly PTY_COLS: 500;
|
|
1245
|
+
readonly PTY_ROWS: 50;
|
|
1246
|
+
/** Largest PTY output kept for parsing (chars) */
|
|
1247
|
+
readonly RAW_BUFFER_MAX_CHARS: number;
|
|
1248
|
+
/** Slack Web API base */
|
|
1249
|
+
readonly SLACK_API_BASE: "https://slack.com/api";
|
|
1250
|
+
/** Timeout for one Slack Web API call (ms) */
|
|
1251
|
+
readonly SLACK_REQUEST_TIMEOUT_MS: number;
|
|
1252
|
+
};
|
|
1211
1253
|
/**
|
|
1212
1254
|
* Type helpers for extracting literal types from constants
|
|
1213
1255
|
*/
|