crewly 1.20.143 → 1.20.145
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 +59 -0
- package/config/index.ts +2 -0
- package/config/roles/orchestrator/prompt.md +9 -0
- package/config/skills/orchestrator/delegate-task/execute.sh +11 -0
- package/config/skills/orchestrator/delegate-task/execute.test.sh +38 -0
- package/config/skills/orchestrator/harness-login/SKILL.md +88 -0
- package/config/skills/orchestrator/harness-login/execute.sh +75 -0
- package/config/skills/orchestrator/harness-login/execute.test.sh +72 -0
- package/config/skills/orchestrator/reply-chat/SKILL.md +11 -1
- package/config/skills/orchestrator/reply-chat/execute.sh +13 -1
- package/config/skills/orchestrator/reply-slack/SKILL.md +1 -0
- package/config/skills/orchestrator/reply-slack/execute.sh +11 -2
- package/dist/backend/backend/src/constants.d.ts +55 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +36 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +36 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/harness/harness.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.routes.js +3 -0
- package/dist/backend/backend/src/controllers/harness/harness.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts +61 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +133 -0
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +69 -7
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +4 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +9 -2
- package/dist/backend/backend/src/controllers/task-pool/task-pool.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 +75 -3
- package/dist/backend/backend/src/index.js.map +1 -1
- 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 +28 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +11 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js +18 -0
- package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +12 -0
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +18 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +29 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +48 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +15 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +20 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +147 -5
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js +210 -20
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +87 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.js +191 -0
- package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts +217 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js +300 -0
- package/dist/backend/backend/src/services/orc/orc-reply-route.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +32 -2
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +59 -5
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +4 -2
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +6 -3
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +68 -9
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js +121 -11
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts +292 -0
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.service.js +590 -0
- package/dist/backend/backend/src/services/system/auto-update.service.js.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts +265 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.js +397 -0
- package/dist/backend/backend/src/services/system/auto-update.utils.js.map +1 -0
- package/dist/backend/backend/src/services/system/version-check.service.d.ts +15 -1
- package/dist/backend/backend/src/services/system/version-check.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/system/version-check.service.js +21 -2
- package/dist/backend/backend/src/services/system/version-check.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +7 -1
- 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 +14 -2
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +16 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-completion.d.ts +128 -0
- package/dist/backend/backend/src/services/v3/request-completion.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/request-completion.js +311 -0
- package/dist/backend/backend/src/services/v3/request-completion.js.map +1 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +3 -0
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +17 -3
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts +8 -0
- package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.js +11 -1
- package/dist/backend/backend/src/services/v3/v3-data.service.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/agent-reply-filter.utils.d.ts +75 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.js +127 -0
- package/dist/backend/backend/src/utils/agent-reply-filter.utils.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +56 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +57 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +2 -2
- package/dist/backend/config/index.d.ts.map +1 -1
- package/dist/backend/config/index.js +2 -2
- package/dist/backend/config/index.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +55 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +36 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- 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 +28 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +11 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +18 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +12 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +18 -3
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +29 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +48 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +15 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +20 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +147 -5
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js +210 -20
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +87 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.js +191 -0
- package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts +217 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js +300 -0
- package/dist/cli/backend/src/services/orc/orc-reply-route.service.js.map +1 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts +265 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.js +397 -0
- package/dist/cli/backend/src/services/system/auto-update.utils.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +7 -1
- 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 +14 -2
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/request-completion.d.ts +128 -0
- package/dist/cli/backend/src/services/v3/request-completion.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-completion.js +311 -0
- package/dist/cli/backend/src/services/v3/request-completion.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +8 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.js +11 -1
- package/dist/cli/backend/src/services/v3/v3-data.service.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/agent-reply-filter.utils.d.ts +75 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.js +127 -0
- package/dist/cli/backend/src/utils/agent-reply-filter.utils.js.map +1 -0
- package/dist/cli/cli/src/commands/start.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/start.js +14 -3
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/dist/cli/cli/src/commands/update-status.d.ts +85 -0
- package/dist/cli/cli/src/commands/update-status.d.ts.map +1 -0
- package/dist/cli/cli/src/commands/update-status.js +162 -0
- package/dist/cli/cli/src/commands/update-status.js.map +1 -0
- package/dist/cli/cli/src/constants.d.ts +1 -1
- package/dist/cli/cli/src/constants.d.ts.map +1 -1
- package/dist/cli/cli/src/constants.js +1 -1
- package/dist/cli/cli/src/constants.js.map +1 -1
- package/dist/cli/cli/src/index.js +7 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/backend-respawn.d.ts +50 -0
- package/dist/cli/cli/src/utils/backend-respawn.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/backend-respawn.js +59 -0
- package/dist/cli/cli/src/utils/backend-respawn.js.map +1 -0
- package/dist/cli/config/constants.d.ts +56 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +57 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +2 -2
- package/dist/cli/config/index.d.ts.map +1 -1
- package/dist/cli/config/index.js +2 -2
- package/dist/cli/config/index.js.map +1 -1
- package/frontend/dist/assets/{index-e05af897.js → index-71670b91.js} +22 -22
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +39 -0
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +17 -17
- package/packages/crewly-agent/src/runtime/interactive-login-guard.test.ts +60 -0
- package/packages/crewly-agent/src/runtime/interactive-login-guard.ts +76 -0
- package/packages/crewly-agent/src/runtime/reply-tool-calls.test.ts +53 -0
- package/packages/crewly-agent/src/runtime/reply-tool-calls.ts +76 -0
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +8 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +14 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request completion — the single answer to "has this Request actually been
|
|
3
|
+
* delivered?"
|
|
4
|
+
*
|
|
5
|
+
* Three writers used to decide it independently (the reconciler's
|
|
6
|
+
* `reconcileRequestStatus`, the event-driven `cascadeRequestStatus`, and the
|
|
7
|
+
* heartbeat's `closeStaleRequest`), and each had a variant of the same hole:
|
|
8
|
+
* a Request counted as done as soon as its WorkItems were terminal and at
|
|
9
|
+
* least one of them said `verified` — whatever that item was.
|
|
10
|
+
*
|
|
11
|
+
* Incident 2026-09-26, Request d86b5faf ("Demand test: one-click deploy a
|
|
12
|
+
* ready-made AI team"): auto-decomposed into Plan → Execute → Review, all for
|
|
13
|
+
* the orchestrator, plus a direct item for Ella. The orchestrator re-routed
|
|
14
|
+
* the work to Ella as a NEW WorkItem (806dc528, which carried the request id
|
|
15
|
+
* only in its title), completed Plan and Execute as "re-routed / no execution
|
|
16
|
+
* needed", and cancelled Review and Ella's original item as duplicates. The
|
|
17
|
+
* reconciler then saw `{verified:2, cancelled:2}` and closed the Request while
|
|
18
|
+
* the only real work (806dc528) was still running.
|
|
19
|
+
*
|
|
20
|
+
* The rules here:
|
|
21
|
+
* 1. Cancelled items never count as delivered work.
|
|
22
|
+
* 2. A cancelled item that names its replacement (explicitly via
|
|
23
|
+
* `metadata.supersededBy` / a `succeeded_by` disposition, or in its
|
|
24
|
+
* cancel reason, e.g. "re-routed … as WI 806dc528") pulls that
|
|
25
|
+
* replacement into the Request's set — its status now decides.
|
|
26
|
+
* 3. Items that were split off the Request without the link (no
|
|
27
|
+
* `requestId`, but the full request id in their title/brief — the shape
|
|
28
|
+
* `delegate-task` produces when the orc pastes "[Request <id> | …]")
|
|
29
|
+
* belong to the Request too.
|
|
30
|
+
* 4. Plan/Review bookkeeping from auto-decomposition is not a deliverable.
|
|
31
|
+
* A Request whose only finished items are bookkeeping is not done.
|
|
32
|
+
*
|
|
33
|
+
* Pure functions only — callers pass in the pool snapshot.
|
|
34
|
+
*
|
|
35
|
+
* @module services/v3/request-completion
|
|
36
|
+
*/
|
|
37
|
+
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
38
|
+
/**
|
|
39
|
+
* Phases a planner can stamp on an auto-decomposed WorkItem
|
|
40
|
+
* (`metadata.decompositionPhase`). `plan` and `review` are bookkeeping around
|
|
41
|
+
* the work; `execute` is the work.
|
|
42
|
+
*/
|
|
43
|
+
export type DecompositionPhase = 'plan' | 'execute' | 'review';
|
|
44
|
+
/** Metadata key for {@link DecompositionPhase}. */
|
|
45
|
+
export declare const DECOMPOSITION_PHASE_METADATA_KEY = "decompositionPhase";
|
|
46
|
+
/** Metadata key a canceller sets to name the item(s) that replace this one. */
|
|
47
|
+
export declare const SUPERSEDED_BY_METADATA_KEY = "supersededBy";
|
|
48
|
+
/**
|
|
49
|
+
* Whether a WorkItem is Plan/Review-style bookkeeping rather than a
|
|
50
|
+
* deliverable.
|
|
51
|
+
*
|
|
52
|
+
* @param wi - WorkItem to classify
|
|
53
|
+
* @returns True for SLA trackers and for auto-decomposed plan/review phases
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* isBookkeepingWorkItem({ ...wi, metadata: { decompositionPhase: 'plan' } }); // true
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function isBookkeepingWorkItem(wi: Pick<WorkItem, 'id' | 'title' | 'metadata'>): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Whether a cancelled WorkItem was cancelled because its work moved to another
|
|
63
|
+
* item (duplicate / superseded / re-routed).
|
|
64
|
+
*
|
|
65
|
+
* @param wi - WorkItem to test
|
|
66
|
+
* @returns True only for `cancelled` items with an explicit successor or a
|
|
67
|
+
* superseding cancel reason
|
|
68
|
+
*/
|
|
69
|
+
export declare function isSupersededCancellation(wi: Pick<WorkItem, 'status' | 'cancelReason' | 'metadata'>): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Finds the WorkItems that carry on the work of a cancelled item.
|
|
72
|
+
*
|
|
73
|
+
* @param wi - The cancelled WorkItem
|
|
74
|
+
* @param allItems - Pool snapshot
|
|
75
|
+
* @returns Successor WorkItems (never `wi` itself)
|
|
76
|
+
*/
|
|
77
|
+
export declare function findSuccessorWorkItems(wi: WorkItem, allItems: readonly WorkItem[]): WorkItem[];
|
|
78
|
+
/**
|
|
79
|
+
* Collects every WorkItem whose status bears on a Request's completion: its
|
|
80
|
+
* own items, unlinked items that name it, and — transitively — the
|
|
81
|
+
* replacements of any superseded cancellations among them.
|
|
82
|
+
*
|
|
83
|
+
* @param requestId - Request id
|
|
84
|
+
* @param allItems - Pool snapshot (all statuses)
|
|
85
|
+
* @returns The Request's effective WorkItem set, own items first
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const items = collectRequestWorkItems(request.id, await pool.getAllItems());
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
export declare function collectRequestWorkItems(requestId: string, allItems: readonly WorkItem[]): WorkItem[];
|
|
93
|
+
/**
|
|
94
|
+
* Outcome of {@link evaluateRequestCompletion}.
|
|
95
|
+
*
|
|
96
|
+
* - `complete`: every live item is done/verified and at least one of them is
|
|
97
|
+
* a real deliverable.
|
|
98
|
+
* - `in_progress`: some live item is not finished yet.
|
|
99
|
+
* - `bookkeeping_only`: every live item is finished, but none of them is a
|
|
100
|
+
* deliverable — nothing was actually produced.
|
|
101
|
+
* - `nothing_live`: every item was cancelled; nothing is left to deliver.
|
|
102
|
+
*/
|
|
103
|
+
export type RequestCompletionOutcome = 'complete' | 'in_progress' | 'bookkeeping_only' | 'nothing_live';
|
|
104
|
+
/** Result of {@link evaluateRequestCompletion}. */
|
|
105
|
+
export interface RequestCompletionEvaluation {
|
|
106
|
+
outcome: RequestCompletionOutcome;
|
|
107
|
+
/** Items that still count (not cancelled). */
|
|
108
|
+
liveItems: WorkItem[];
|
|
109
|
+
/** Live, finished, non-bookkeeping items. */
|
|
110
|
+
deliveredItems: WorkItem[];
|
|
111
|
+
/** One-line explanation for logs and correction reasons. */
|
|
112
|
+
reason: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Decides whether a Request's work was actually delivered.
|
|
116
|
+
*
|
|
117
|
+
* @param items - The Request's effective WorkItems (see
|
|
118
|
+
* {@link collectRequestWorkItems})
|
|
119
|
+
* @returns The outcome plus the items that justify it
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const { outcome } = evaluateRequestCompletion(collectRequestWorkItems(id, all));
|
|
124
|
+
* if (outcome === 'complete') markDone();
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function evaluateRequestCompletion(items: readonly WorkItem[]): RequestCompletionEvaluation;
|
|
128
|
+
//# sourceMappingURL=request-completion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-completion.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-completion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAGlE;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/D,mDAAmD;AACnD,eAAO,MAAM,gCAAgC,uBAAuB,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AA8CzD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC,GAAG,OAAO,CAO9F;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,GAAG,UAAU,CAAC,GACzD,OAAO,CAIT;AAsCD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAY9F;AAgBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAsBpG;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,wBAAwB,GAAG,UAAU,GAAG,aAAa,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAExG,mDAAmD;AACnD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,wBAAwB,CAAC;IAClC,8CAA8C;IAC9C,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,6CAA6C;IAC7C,cAAc,EAAE,QAAQ,EAAE,CAAC;IAC3B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,2BAA2B,CA6CjG"}
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request completion — the single answer to "has this Request actually been
|
|
3
|
+
* delivered?"
|
|
4
|
+
*
|
|
5
|
+
* Three writers used to decide it independently (the reconciler's
|
|
6
|
+
* `reconcileRequestStatus`, the event-driven `cascadeRequestStatus`, and the
|
|
7
|
+
* heartbeat's `closeStaleRequest`), and each had a variant of the same hole:
|
|
8
|
+
* a Request counted as done as soon as its WorkItems were terminal and at
|
|
9
|
+
* least one of them said `verified` — whatever that item was.
|
|
10
|
+
*
|
|
11
|
+
* Incident 2026-09-26, Request d86b5faf ("Demand test: one-click deploy a
|
|
12
|
+
* ready-made AI team"): auto-decomposed into Plan → Execute → Review, all for
|
|
13
|
+
* the orchestrator, plus a direct item for Ella. The orchestrator re-routed
|
|
14
|
+
* the work to Ella as a NEW WorkItem (806dc528, which carried the request id
|
|
15
|
+
* only in its title), completed Plan and Execute as "re-routed / no execution
|
|
16
|
+
* needed", and cancelled Review and Ella's original item as duplicates. The
|
|
17
|
+
* reconciler then saw `{verified:2, cancelled:2}` and closed the Request while
|
|
18
|
+
* the only real work (806dc528) was still running.
|
|
19
|
+
*
|
|
20
|
+
* The rules here:
|
|
21
|
+
* 1. Cancelled items never count as delivered work.
|
|
22
|
+
* 2. A cancelled item that names its replacement (explicitly via
|
|
23
|
+
* `metadata.supersededBy` / a `succeeded_by` disposition, or in its
|
|
24
|
+
* cancel reason, e.g. "re-routed … as WI 806dc528") pulls that
|
|
25
|
+
* replacement into the Request's set — its status now decides.
|
|
26
|
+
* 3. Items that were split off the Request without the link (no
|
|
27
|
+
* `requestId`, but the full request id in their title/brief — the shape
|
|
28
|
+
* `delegate-task` produces when the orc pastes "[Request <id> | …]")
|
|
29
|
+
* belong to the Request too.
|
|
30
|
+
* 4. Plan/Review bookkeeping from auto-decomposition is not a deliverable.
|
|
31
|
+
* A Request whose only finished items are bookkeeping is not done.
|
|
32
|
+
*
|
|
33
|
+
* Pure functions only — callers pass in the pool snapshot.
|
|
34
|
+
*
|
|
35
|
+
* @module services/v3/request-completion
|
|
36
|
+
*/
|
|
37
|
+
import { getWorkItemDisposition } from '../../types/v2/work-item.types.js';
|
|
38
|
+
/** Metadata key for {@link DecompositionPhase}. */
|
|
39
|
+
export const DECOMPOSITION_PHASE_METADATA_KEY = 'decompositionPhase';
|
|
40
|
+
/** Metadata key a canceller sets to name the item(s) that replace this one. */
|
|
41
|
+
export const SUPERSEDED_BY_METADATA_KEY = 'supersededBy';
|
|
42
|
+
/** Phases that do not, on their own, deliver anything to the owner. */
|
|
43
|
+
const BOOKKEEPING_PHASES = new Set(['plan', 'review']);
|
|
44
|
+
/**
|
|
45
|
+
* Title prefixes the generic planner (`V3DataService.generateTasks`) gives its
|
|
46
|
+
* bookkeeping items. Only consulted for auto-decomposed items that predate the
|
|
47
|
+
* explicit `decompositionPhase` stamp.
|
|
48
|
+
*/
|
|
49
|
+
const LEGACY_BOOKKEEPING_TITLE = /^(Plan|Review|Investigate|Verify fix):\s/;
|
|
50
|
+
/**
|
|
51
|
+
* SLA "reply to the user" trackers. Housekeeping when the Request has other
|
|
52
|
+
* work; the whole deliverable when it does not (a question answered in chat).
|
|
53
|
+
*/
|
|
54
|
+
const SLA_TRACKER_ID = /^request:.+:respond_to_user$/;
|
|
55
|
+
/**
|
|
56
|
+
* `slaResolvedReason` values meaning the orchestrator really replied. Kept in
|
|
57
|
+
* sync with `request-sla.subscriber.ts:VERIFIED_REPLY_REASONS`, minus
|
|
58
|
+
* `workitem_decompose` (the tracker was retired because the Request was split
|
|
59
|
+
* into other WorkItems — that is not a reply).
|
|
60
|
+
*/
|
|
61
|
+
const SLA_REPLIED_REASONS = new Set(['orc_reply', 'orc_reply_recheck', 'chatv2_reply']);
|
|
62
|
+
/**
|
|
63
|
+
* Cancel reasons that mean "this work continues elsewhere". Used only to
|
|
64
|
+
* decide whether ids mentioned in the reason are worth following; a cancelled
|
|
65
|
+
* item never counts as delivered either way.
|
|
66
|
+
*/
|
|
67
|
+
const SUPERSEDED_REASON = /\b(duplicate|dup|superseded|replaced|redundant|stale|re-?routed|re-?assigned|moved to|handed (?:off|over)|delegated to|instead)\b/i;
|
|
68
|
+
/**
|
|
69
|
+
* A WorkItem id, full or abbreviated. Agents routinely quote the first 8 hex
|
|
70
|
+
* characters ("WI 806dc528"), so short ids are resolved by unique prefix.
|
|
71
|
+
*/
|
|
72
|
+
const WORK_ITEM_ID_TOKEN = /\b[0-9a-f]{8}(?:-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})?\b/gi;
|
|
73
|
+
/** Upper bound on successor hops, so a cancel-reason cycle cannot loop. */
|
|
74
|
+
const MAX_SUCCESSOR_DEPTH = 5;
|
|
75
|
+
/** Statuses that mean the work was accepted. `done_by_worker` is not one. */
|
|
76
|
+
const DELIVERED_STATUSES = new Set(['done', 'verified']);
|
|
77
|
+
/**
|
|
78
|
+
* Whether a WorkItem is Plan/Review-style bookkeeping rather than a
|
|
79
|
+
* deliverable.
|
|
80
|
+
*
|
|
81
|
+
* @param wi - WorkItem to classify
|
|
82
|
+
* @returns True for SLA trackers and for auto-decomposed plan/review phases
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* isBookkeepingWorkItem({ ...wi, metadata: { decompositionPhase: 'plan' } }); // true
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export function isBookkeepingWorkItem(wi) {
|
|
90
|
+
if (SLA_TRACKER_ID.test(wi.id))
|
|
91
|
+
return true;
|
|
92
|
+
const phase = wi.metadata?.[DECOMPOSITION_PHASE_METADATA_KEY];
|
|
93
|
+
if (typeof phase === 'string') {
|
|
94
|
+
return BOOKKEEPING_PHASES.has(phase);
|
|
95
|
+
}
|
|
96
|
+
return wi.metadata?.autoDecomposed === true && LEGACY_BOOKKEEPING_TITLE.test(wi.title);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Whether a cancelled WorkItem was cancelled because its work moved to another
|
|
100
|
+
* item (duplicate / superseded / re-routed).
|
|
101
|
+
*
|
|
102
|
+
* @param wi - WorkItem to test
|
|
103
|
+
* @returns True only for `cancelled` items with an explicit successor or a
|
|
104
|
+
* superseding cancel reason
|
|
105
|
+
*/
|
|
106
|
+
export function isSupersededCancellation(wi) {
|
|
107
|
+
if (wi.status !== 'cancelled')
|
|
108
|
+
return false;
|
|
109
|
+
if (readExplicitSuccessorIds(wi).length > 0)
|
|
110
|
+
return true;
|
|
111
|
+
return typeof wi.cancelReason === 'string' && SUPERSEDED_REASON.test(wi.cancelReason);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Reads the explicitly recorded successor ids of a WorkItem.
|
|
115
|
+
*
|
|
116
|
+
* @param wi - WorkItem to read
|
|
117
|
+
* @returns Ids from `metadata.supersededBy` (string or string[]) and from a
|
|
118
|
+
* `succeeded_by` disposition
|
|
119
|
+
*/
|
|
120
|
+
function readExplicitSuccessorIds(wi) {
|
|
121
|
+
const ids = [];
|
|
122
|
+
const raw = wi.metadata?.[SUPERSEDED_BY_METADATA_KEY];
|
|
123
|
+
if (typeof raw === 'string' && raw.trim())
|
|
124
|
+
ids.push(raw.trim());
|
|
125
|
+
if (Array.isArray(raw)) {
|
|
126
|
+
for (const v of raw)
|
|
127
|
+
if (typeof v === 'string' && v.trim())
|
|
128
|
+
ids.push(v.trim());
|
|
129
|
+
}
|
|
130
|
+
const disposition = getWorkItemDisposition(wi);
|
|
131
|
+
if (disposition?.kind === 'succeeded_by' && disposition.successorWorkItemId) {
|
|
132
|
+
ids.push(disposition.successorWorkItemId);
|
|
133
|
+
}
|
|
134
|
+
return ids;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Resolves an id or unique id prefix against the pool.
|
|
138
|
+
*
|
|
139
|
+
* @param token - Full id or an abbreviated (>= 8 char) prefix
|
|
140
|
+
* @param allItems - Pool snapshot
|
|
141
|
+
* @returns The single matching WorkItem, or null when absent or ambiguous
|
|
142
|
+
*/
|
|
143
|
+
function resolveIdToken(token, allItems) {
|
|
144
|
+
const needle = token.toLowerCase();
|
|
145
|
+
const exact = allItems.find((wi) => wi.id.toLowerCase() === needle);
|
|
146
|
+
if (exact)
|
|
147
|
+
return exact;
|
|
148
|
+
const matches = allItems.filter((wi) => wi.id.toLowerCase().startsWith(needle));
|
|
149
|
+
return matches.length === 1 ? matches[0] : null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Finds the WorkItems that carry on the work of a cancelled item.
|
|
153
|
+
*
|
|
154
|
+
* @param wi - The cancelled WorkItem
|
|
155
|
+
* @param allItems - Pool snapshot
|
|
156
|
+
* @returns Successor WorkItems (never `wi` itself)
|
|
157
|
+
*/
|
|
158
|
+
export function findSuccessorWorkItems(wi, allItems) {
|
|
159
|
+
if (wi.status !== 'cancelled')
|
|
160
|
+
return [];
|
|
161
|
+
const tokens = new Set(readExplicitSuccessorIds(wi));
|
|
162
|
+
if (isSupersededCancellation(wi) && typeof wi.cancelReason === 'string') {
|
|
163
|
+
for (const m of wi.cancelReason.match(WORK_ITEM_ID_TOKEN) ?? [])
|
|
164
|
+
tokens.add(m);
|
|
165
|
+
}
|
|
166
|
+
const found = new Map();
|
|
167
|
+
for (const token of tokens) {
|
|
168
|
+
const hit = resolveIdToken(token, allItems);
|
|
169
|
+
if (hit && hit.id !== wi.id)
|
|
170
|
+
found.set(hit.id, hit);
|
|
171
|
+
}
|
|
172
|
+
return [...found.values()];
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Whether an unlinked WorkItem names the Request in its own text.
|
|
176
|
+
*
|
|
177
|
+
* @param wi - Candidate WorkItem (must have no `requestId`)
|
|
178
|
+
* @param requestId - Full Request id
|
|
179
|
+
* @returns True when the title, description or brief contains the full id
|
|
180
|
+
*/
|
|
181
|
+
function mentionsRequest(wi, requestId) {
|
|
182
|
+
if (wi.requestId)
|
|
183
|
+
return false;
|
|
184
|
+
return [wi.title, wi.description, wi.briefMarkdown].some((text) => typeof text === 'string' && text.includes(requestId));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Collects every WorkItem whose status bears on a Request's completion: its
|
|
188
|
+
* own items, unlinked items that name it, and — transitively — the
|
|
189
|
+
* replacements of any superseded cancellations among them.
|
|
190
|
+
*
|
|
191
|
+
* @param requestId - Request id
|
|
192
|
+
* @param allItems - Pool snapshot (all statuses)
|
|
193
|
+
* @returns The Request's effective WorkItem set, own items first
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* const items = collectRequestWorkItems(request.id, await pool.getAllItems());
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
export function collectRequestWorkItems(requestId, allItems) {
|
|
201
|
+
const collected = new Map();
|
|
202
|
+
for (const wi of allItems) {
|
|
203
|
+
if (wi.requestId === requestId)
|
|
204
|
+
collected.set(wi.id, wi);
|
|
205
|
+
}
|
|
206
|
+
for (const wi of allItems) {
|
|
207
|
+
if (!collected.has(wi.id) && mentionsRequest(wi, requestId))
|
|
208
|
+
collected.set(wi.id, wi);
|
|
209
|
+
}
|
|
210
|
+
let frontier = [...collected.values()];
|
|
211
|
+
for (let depth = 0; depth < MAX_SUCCESSOR_DEPTH && frontier.length > 0; depth++) {
|
|
212
|
+
const next = [];
|
|
213
|
+
for (const wi of frontier) {
|
|
214
|
+
for (const successor of findSuccessorWorkItems(wi, allItems)) {
|
|
215
|
+
if (collected.has(successor.id))
|
|
216
|
+
continue;
|
|
217
|
+
collected.set(successor.id, successor);
|
|
218
|
+
next.push(successor);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
frontier = next;
|
|
222
|
+
}
|
|
223
|
+
return [...collected.values()];
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Decides whether a Request's work was actually delivered.
|
|
227
|
+
*
|
|
228
|
+
* @param items - The Request's effective WorkItems (see
|
|
229
|
+
* {@link collectRequestWorkItems})
|
|
230
|
+
* @returns The outcome plus the items that justify it
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```typescript
|
|
234
|
+
* const { outcome } = evaluateRequestCompletion(collectRequestWorkItems(id, all));
|
|
235
|
+
* if (outcome === 'complete') markDone();
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
export function evaluateRequestCompletion(items) {
|
|
239
|
+
const trackers = items.filter((wi) => SLA_TRACKER_ID.test(wi.id));
|
|
240
|
+
if (trackers.length > 0 && trackers.length === items.length) {
|
|
241
|
+
return evaluateReplyOnlyRequest(trackers);
|
|
242
|
+
}
|
|
243
|
+
const liveItems = items.filter((wi) => wi.status !== 'cancelled');
|
|
244
|
+
const deliveredItems = liveItems.filter((wi) => DELIVERED_STATUSES.has(wi.status) && !isBookkeepingWorkItem(wi));
|
|
245
|
+
if (liveItems.length === 0) {
|
|
246
|
+
return {
|
|
247
|
+
outcome: 'nothing_live',
|
|
248
|
+
liveItems,
|
|
249
|
+
deliveredItems,
|
|
250
|
+
reason: `all ${items.length} WorkItem(s) cancelled — nothing was delivered`,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
const unfinished = liveItems.filter((wi) => !DELIVERED_STATUSES.has(wi.status));
|
|
254
|
+
if (unfinished.length > 0) {
|
|
255
|
+
return {
|
|
256
|
+
outcome: 'in_progress',
|
|
257
|
+
liveItems,
|
|
258
|
+
deliveredItems,
|
|
259
|
+
reason: `${unfinished.length} WorkItem(s) not finished: ${unfinished
|
|
260
|
+
.map((wi) => `${wi.id.slice(0, 8)}=${wi.status}`)
|
|
261
|
+
.join(', ')}`,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
if (deliveredItems.length === 0) {
|
|
265
|
+
return {
|
|
266
|
+
outcome: 'bookkeeping_only',
|
|
267
|
+
liveItems,
|
|
268
|
+
deliveredItems,
|
|
269
|
+
reason: `only plan/review bookkeeping finished (${liveItems
|
|
270
|
+
.map((wi) => wi.id.slice(0, 8))
|
|
271
|
+
.join(', ')}) — no deliverable WorkItem was completed`,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
return {
|
|
275
|
+
outcome: 'complete',
|
|
276
|
+
liveItems,
|
|
277
|
+
deliveredItems,
|
|
278
|
+
reason: `${deliveredItems.length} deliverable WorkItem(s) done/verified`,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Completion for a Request whose only WorkItems are SLA reply trackers: the
|
|
283
|
+
* reply is the deliverable. A tracker the SLA subscriber closed because the
|
|
284
|
+
* orchestrator answered counts as delivered even though it lands `cancelled`.
|
|
285
|
+
*
|
|
286
|
+
* @param trackers - The Request's SLA tracker WorkItems (non-empty)
|
|
287
|
+
* @returns The completion evaluation
|
|
288
|
+
*/
|
|
289
|
+
function evaluateReplyOnlyRequest(trackers) {
|
|
290
|
+
const replied = trackers.filter((wi) => {
|
|
291
|
+
if (DELIVERED_STATUSES.has(wi.status))
|
|
292
|
+
return true;
|
|
293
|
+
const reason = wi.metadata?.slaResolvedReason;
|
|
294
|
+
return wi.status === 'cancelled' && typeof reason === 'string' && SLA_REPLIED_REASONS.has(reason);
|
|
295
|
+
});
|
|
296
|
+
const liveItems = trackers.filter((wi) => wi.status !== 'cancelled');
|
|
297
|
+
const pending = liveItems.filter((wi) => !DELIVERED_STATUSES.has(wi.status));
|
|
298
|
+
if (pending.length > 0) {
|
|
299
|
+
return { outcome: 'in_progress', liveItems, deliveredItems: replied, reason: 'reply to the user still pending' };
|
|
300
|
+
}
|
|
301
|
+
if (replied.length > 0) {
|
|
302
|
+
return { outcome: 'complete', liveItems, deliveredItems: replied, reason: 'the user was answered' };
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
outcome: 'nothing_live',
|
|
306
|
+
liveItems,
|
|
307
|
+
deliveredItems: replied,
|
|
308
|
+
reason: 'reply tracker cancelled without a reply',
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=request-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-completion.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-decompose.subscriber.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-decompose.subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mCAAmC,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"request-decompose.subscriber.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-decompose.subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mCAAmC,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAW,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAW/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,cAAc,CAMnE,CAAC;AAMH;;;GAGG;AACH,eAAO,MAAM,mCAAmC,EAAE,SAAS,SAAS,EAE1D,CAAC;AAMX;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,sBAAsB;IACtB,QAAQ,EAAE,eAAe,CAAC;IAC1B,gDAAgD;IAChD,cAAc,EAAE,cAAc,CAAC;IAC/B,0CAA0C;IAC1C,QAAQ,EAAE,eAAe,CAAC;IAC1B,gDAAgD;IAChD,oBAAoB,CAAC,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;IACnD,gCAAgC;IAChC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAQD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,0BAA0B,GAAG,IAAI,GAC5C,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,GAAG,IAAI,CAEjF;AAMD;;;;;;;;;;GAUG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8B;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAC/D,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;gBAEvD,IAAI,EAAE,sCAAsC;IASxD;;;;;;;OAOG;IACH,MAAM,CAAC,IAAI,CACT,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,eAAe,GACxB,0BAA0B;IAQ7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAgBb;;;;OAIG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;;;;OAKG;IACI,+BAA+B,IAAI,WAAW,CAAC,MAAM,CAAC;IAQ7D;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB,CAmH1B;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IAwEvB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;CAwBrB"}
|
|
@@ -81,6 +81,7 @@ import { LoggerService } from '../core/logger.service.js';
|
|
|
81
81
|
import { ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
|
|
82
82
|
import { createWorkItem } from '../../types/v2/work-item.types.js';
|
|
83
83
|
import { SLA_TRACKER_ID_PATTERN } from './workitem-dispatch.subscriber.js';
|
|
84
|
+
import { DECOMPOSITION_PHASE_METADATA_KEY } from './request-completion.js';
|
|
84
85
|
// ---------------------------------------------------------------------------
|
|
85
86
|
// Filter rules
|
|
86
87
|
// ---------------------------------------------------------------------------
|
|
@@ -468,6 +469,8 @@ export class RequestDecomposeSubscriber {
|
|
|
468
469
|
planStrategy: 'derived-from-RequestService.plan',
|
|
469
470
|
priority: task.priority,
|
|
470
471
|
acceptanceCriteria: task.acceptanceCriteria,
|
|
472
|
+
// Lets request-completion tell Plan/Review bookkeeping from the work.
|
|
473
|
+
...(task.phase ? { [DECOMPOSITION_PHASE_METADATA_KEY]: task.phase } : {}),
|
|
471
474
|
},
|
|
472
475
|
});
|
|
473
476
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-decompose.subscriber.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-decompose.subscriber.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"request-decompose.subscriber.js","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-decompose.subscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-status-update.subscriber.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-status-update.subscriber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mCAAmC,CAAC;AAE/F,OAAO,KAAK,EAAE,OAAO,EAAiB,MAAM,iCAAiC,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"request-status-update.subscriber.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request-status-update.subscriber.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ import { LoggerService } from '../core/logger.service.js';
|
|
|
40
40
|
import { TERMINAL_WORK_ITEM_STATUSES } from '../../types/v2/work-item.types.js';
|
|
41
41
|
import { TERMINAL_REQUEST_STATUSES, isValidRequestTransition } from '../../types/v2/index.js';
|
|
42
42
|
import { extractSlackChannelId, extractSlackThreadTs } from './request-sla.subscriber.js';
|
|
43
|
+
import { collectRequestWorkItems, evaluateRequestCompletion } from './request-completion.js';
|
|
43
44
|
/**
|
|
44
45
|
* WorkItem statuses that count as "terminal" for the heartbeat's
|
|
45
46
|
* is-this-Request-actually-still-in-flight check.
|
|
@@ -301,7 +302,9 @@ export class RequestStatusUpdateSubscriber {
|
|
|
301
302
|
// nothing has changed since we last said "still 3 blocked",
|
|
302
303
|
// so saying it again is noise.
|
|
303
304
|
const items = await this.taskPool.getAllItems();
|
|
304
|
-
|
|
305
|
+
// Effective set — includes the replacement of a superseded item, so a
|
|
306
|
+
// re-routed Request is not "all terminal" while the new item runs.
|
|
307
|
+
const childWIs = collectRequestWorkItems(r.id, items);
|
|
305
308
|
if (childWIs.length === 0)
|
|
306
309
|
continue;
|
|
307
310
|
// All-terminal guard — when every child WI is terminal but the
|
|
@@ -518,8 +521,19 @@ export class RequestStatusUpdateSubscriber {
|
|
|
518
521
|
// upstream (it's not in TERMINAL_WORKITEM_STATUSES anymore — see
|
|
519
522
|
// the constant definition for the rationale). So success only
|
|
520
523
|
// comes from `done` or `verified` here.
|
|
521
|
-
|
|
522
|
-
|
|
524
|
+
// "Some child succeeded" is not "delivered": a verified Plan next to a
|
|
525
|
+
// cancelled Execute is still nothing built (Request d86b5faf,
|
|
526
|
+
// 2026-09-26). Same rule as the reconciler and the cascade.
|
|
527
|
+
const completion = evaluateRequestCompletion(childWIs);
|
|
528
|
+
if (completion.outcome === 'bookkeeping_only' || completion.outcome === 'in_progress') {
|
|
529
|
+
this.logger.warn('Heartbeat: not closing Request — no deliverable WorkItem was completed', {
|
|
530
|
+
requestId: request.id,
|
|
531
|
+
outcome: completion.outcome,
|
|
532
|
+
reason: completion.reason,
|
|
533
|
+
});
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const target = completion.outcome === 'complete' ? 'done' : 'cancelled';
|
|
523
537
|
const log = (extra = {}) => ({
|
|
524
538
|
requestId: request.id,
|
|
525
539
|
previousStatus: request.status,
|