crewly 1.20.184 → 1.20.186
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 +83 -0
- package/config/index.ts +2 -0
- package/config/oss-boundary-allowlist.json +10 -0
- package/config/skills/agent/core/ask-owner/SKILL.md +5 -2
- package/config/skills/agent/core/complete-task/execute.sh +4 -12
- package/config/skills/agent/core/complete-task/execute.test.sh +11 -0
- package/config/skills/agent/core/report-status/SKILL.md +1 -1
- package/config/skills/agent/core/report-status/execute.sh +5 -10
- package/dist/backend/backend/src/constants.d.ts +50 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +45 -1
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts +11 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js +38 -0
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.js +3 -2
- package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts +9 -0
- package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.js +29 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/request/request.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.routes.js +4 -1
- package/dist/backend/backend/src/controllers/request/request.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +5 -2
- package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.js +3 -1
- package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +15 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/scripts/check-oss-boundary.d.ts +217 -0
- package/dist/backend/backend/src/scripts/check-oss-boundary.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/check-oss-boundary.js +490 -0
- package/dist/backend/backend/src/scripts/check-oss-boundary.js.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +3 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +15 -4
- package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts +31 -4
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-card.js +60 -2
- package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-skip-command.d.ts +56 -0
- package/dist/backend/backend/src/services/decisions/decision-skip-command.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-skip-command.js +108 -0
- package/dist/backend/backend/src/services/decisions/decision-skip-command.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +114 -2
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +224 -12
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +8 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +25 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts +19 -0
- package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory.service.js +48 -0
- package/dist/backend/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +20 -0
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +40 -0
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.js +101 -0
- package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts +1 -1
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +61 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-answers.service.js +71 -3
- package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +7 -4
- package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js +18 -9
- package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/task-log-filter.d.ts +27 -0
- package/dist/backend/backend/src/services/memory/task-log-filter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/task-log-filter.js +56 -0
- package/dist/backend/backend/src/services/memory/task-log-filter.js.map +1 -0
- package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts +26 -1
- package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items-backfill.js +59 -3
- package/dist/backend/backend/src/services/open-items/open-items-backfill.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +37 -2
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.js +101 -6
- package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.wiring.js +13 -0
- package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +13 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +34 -11
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js +4 -2
- package/dist/backend/backend/src/services/wiki/wiki-process.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts +103 -1
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js +171 -20
- package/dist/backend/backend/src/services/wiki/wiki-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +60 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +121 -7
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/types/decision.types.d.ts +20 -3
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts +4 -1
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +73 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +80 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/index.d.ts +10 -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 +50 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +45 -1
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +3 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +15 -4
- package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-card.d.ts +31 -4
- package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-card.js +60 -2
- package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +114 -2
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +224 -12
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +19 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/agent-memory.service.js +48 -0
- package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +20 -0
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +40 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.js +101 -0
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts +1 -1
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +61 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/standing-answers.service.js +71 -3
- package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/task-log-filter.d.ts +27 -0
- package/dist/cli/backend/src/services/memory/task-log-filter.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/task-log-filter.js +56 -0
- package/dist/cli/backend/src/services/memory/task-log-filter.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +13 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +34 -11
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/types/decision.types.d.ts +20 -3
- package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts +4 -1
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.js.map +1 -1
- package/dist/cli/config/constants.d.ts +73 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +80 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/index.d.ts +10 -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-a6cb8533.js → index-1ee8a9a2.js} +273 -273
- package/frontend/dist/assets/index-a79c7852.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -1
- package/frontend/dist/assets/index-04d192f8.css +0 -42
|
@@ -8,10 +8,13 @@
|
|
|
8
8
|
* session, and raises one WorkItem per page when ALL of these hold:
|
|
9
9
|
*
|
|
10
10
|
* 1. the page has in-scope entries at all (nothing to answer from → no page);
|
|
11
|
-
* 2. the page is stale (missing, no watermark, or newer entries exist)
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
11
|
+
* 2. the page is stale (missing, no watermark, or newer entries exist) or
|
|
12
|
+
* a section's basis is invalidated (a cited entry was deleted,
|
|
13
|
+
* superseded, expired or resolved — these do not move the watermark, #914);
|
|
14
|
+
* 3. the sources' watermark or the set of invalidated citations differs
|
|
15
|
+
* from the one this service last raised for — so a refresh that was
|
|
16
|
+
* skipped or failed is not re-raised until the memory moves again
|
|
17
|
+
* ("only when the watermark moves");
|
|
15
18
|
* 4. no refresh WorkItem for the page is still open;
|
|
16
19
|
* 5. the page's cooldown has passed;
|
|
17
20
|
* 6. fewer than `maxCreatesPerTick` were created this tick (PTY paste-flood
|
|
@@ -38,7 +41,7 @@ import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
|
|
|
38
41
|
import { LoggerService } from '../core/logger.service.js';
|
|
39
42
|
import { createWorkItem } from '../../types/v2/work-item.types.js';
|
|
40
43
|
import { atomicWriteJson, ensureDir, safeReadJson } from '../../utils/file-io.utils.js';
|
|
41
|
-
import { StandingAnswersService, PROJECT_STANDING_PAGES, AGENT_STANDING_PAGE, } from './standing-answers.service.js';
|
|
44
|
+
import { StandingAnswersService, invalidationKey, PROJECT_STANDING_PAGES, AGENT_STANDING_PAGE, } from './standing-answers.service.js';
|
|
42
45
|
/** Statuses after which a refresh WorkItem no longer blocks a new one. */
|
|
43
46
|
const CLOSED_STATUSES = new Set(['done', 'verified', 'cancelled', 'failed', 'rejected']);
|
|
44
47
|
/**
|
|
@@ -132,7 +135,8 @@ export class StandingRefreshService {
|
|
|
132
135
|
continue;
|
|
133
136
|
result.pagesExamined += 1;
|
|
134
137
|
const prior = state[c.key];
|
|
135
|
-
const
|
|
138
|
+
const invalidated = invalidationKey(status.invalidatedSections);
|
|
139
|
+
const sameWatermark = !!prior && prior.watermark === status.currentWatermark && (prior.invalidated ?? '') === invalidated;
|
|
136
140
|
const priorItem = sameWatermark && prior.workItemId ? itemsById.get(prior.workItemId) : undefined;
|
|
137
141
|
// A refresh that failed or was cancelled never wrote the page, so
|
|
138
142
|
// the page is still exactly as stale as it was — retry it even
|
|
@@ -145,7 +149,7 @@ export class StandingRefreshService {
|
|
|
145
149
|
let skip = null;
|
|
146
150
|
if (status.entriesInScope === 0)
|
|
147
151
|
skip = 'no_entries';
|
|
148
|
-
else if (!status.stale)
|
|
152
|
+
else if (!status.stale && status.invalidatedSections.length === 0)
|
|
149
153
|
skip = 'fresh';
|
|
150
154
|
else if (sameWatermark && !isRetryOfFailure)
|
|
151
155
|
skip = 'watermark_unchanged';
|
|
@@ -166,12 +170,16 @@ export class StandingRefreshService {
|
|
|
166
170
|
}
|
|
167
171
|
const brief = await this.service.buildRefreshBrief(status, c.loc, this.options.agentSkillsPath);
|
|
168
172
|
const scopeLabel = c.def.scope === 'project' ? path.basename(c.loc.projectPath ?? '') : c.loc.sessionName;
|
|
173
|
+
const invalidCount = status.invalidatedSections.length;
|
|
174
|
+
const invalidNote = invalidCount
|
|
175
|
+
? ` ${invalidCount} section${invalidCount === 1 ? '' : 's'} cite${invalidCount === 1 ? 's' : ''} sources that were deleted or are no longer in force: ${invalidated}.`
|
|
176
|
+
: '';
|
|
169
177
|
const wi = createWorkItem({
|
|
170
178
|
type: 'delegate',
|
|
171
179
|
owner: c.def.scope === 'project' ? 'orchestrator' : 'agent',
|
|
172
180
|
target,
|
|
173
|
-
title: `Refresh standing answer "${c.def.question}" — ${scopeLabel} (${status.newerEntries} newer)`,
|
|
174
|
-
description: `Refresh the standing-answer page ${c.def.id} at ${status.filePath}: ${status.newerEntries} in-scope memor${status.newerEntries === 1 ? 'y is' : 'ies are'} newer than the page
|
|
181
|
+
title: `Refresh standing answer "${c.def.question}" — ${scopeLabel} (${status.newerEntries} newer${invalidCount ? `, ${invalidCount} basis invalidated` : ''})`,
|
|
182
|
+
description: `Refresh the standing-answer page ${c.def.id} at ${status.filePath}: ${status.newerEntries} in-scope memor${status.newerEntries === 1 ? 'y is' : 'ies are'} newer than the page.${invalidNote}`,
|
|
175
183
|
briefMarkdown: brief,
|
|
176
184
|
maxRetries: 1,
|
|
177
185
|
metadata: {
|
|
@@ -188,6 +196,7 @@ export class StandingRefreshService {
|
|
|
188
196
|
await this.options.pool.addToPool(wi);
|
|
189
197
|
state[c.key] = {
|
|
190
198
|
watermark: status.currentWatermark,
|
|
199
|
+
invalidated,
|
|
191
200
|
raisedAt: this.now(),
|
|
192
201
|
workItemId: wi.id,
|
|
193
202
|
retryCount: isRetryOfFailure ? (prior?.retryCount ?? 0) + 1 : 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standing-refresh.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/standing-refresh.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"standing-refresh.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/standing-refresh.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifies task-completion summaries so they stay out of long-term memory.
|
|
3
|
+
*
|
|
4
|
+
* The complete-task and report-status skills used to save every finished
|
|
5
|
+
* task's summary as a project `decision` (and, via report-status, as a
|
|
6
|
+
* learning). In real projects these made up most of decisions.json and
|
|
7
|
+
* pushed real decisions out of recall (#833). The summary already lives on
|
|
8
|
+
* the WorkItem and in task-history.json, so memory writers drop it and the
|
|
9
|
+
* startup migration archives the existing copies.
|
|
10
|
+
*
|
|
11
|
+
* @module services/memory/task-log-filter
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Whether a memory text is a task-completion summary (a task log) rather
|
|
15
|
+
* than a durable conclusion.
|
|
16
|
+
*
|
|
17
|
+
* @param content - Memory text about to be stored, or already stored
|
|
18
|
+
* @returns true when the text is a task-completion summary
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* isTaskCompletionLog('[COMPLETED] Task completed by dev-1: shipped X'); // true
|
|
23
|
+
* isTaskCompletionLog('Use pnpm, not npm, in this repo'); // false
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function isTaskCompletionLog(content: string | undefined | null): boolean;
|
|
27
|
+
//# sourceMappingURL=task-log-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-log-filter.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/task-log-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA4BH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAI/E"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identifies task-completion summaries so they stay out of long-term memory.
|
|
3
|
+
*
|
|
4
|
+
* The complete-task and report-status skills used to save every finished
|
|
5
|
+
* task's summary as a project `decision` (and, via report-status, as a
|
|
6
|
+
* learning). In real projects these made up most of decisions.json and
|
|
7
|
+
* pushed real decisions out of recall (#833). The summary already lives on
|
|
8
|
+
* the WorkItem and in task-history.json, so memory writers drop it and the
|
|
9
|
+
* startup migration archives the existing copies.
|
|
10
|
+
*
|
|
11
|
+
* @module services/memory/task-log-filter
|
|
12
|
+
*/
|
|
13
|
+
import { MEMORY_CONSTANTS } from '../../constants.js';
|
|
14
|
+
/**
|
|
15
|
+
* Removes the wrappers other writers add around a stored summary, such as
|
|
16
|
+
* `Decision made: ` (decision → learnings.md mirror) and
|
|
17
|
+
* `[coerced from category=decision]` (agent-scope coercion).
|
|
18
|
+
*
|
|
19
|
+
* @param content - Stored memory text
|
|
20
|
+
* @returns The text with any leading wrappers removed
|
|
21
|
+
*/
|
|
22
|
+
function stripWrappers(content) {
|
|
23
|
+
let text = content.trimStart();
|
|
24
|
+
let changed = true;
|
|
25
|
+
while (changed) {
|
|
26
|
+
changed = false;
|
|
27
|
+
for (const prefix of MEMORY_CONSTANTS.TASK_LOG.WRAPPER_PREFIXES) {
|
|
28
|
+
const next = text.replace(prefix, '');
|
|
29
|
+
if (next !== text) {
|
|
30
|
+
text = next.trimStart();
|
|
31
|
+
changed = true;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return text;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Whether a memory text is a task-completion summary (a task log) rather
|
|
39
|
+
* than a durable conclusion.
|
|
40
|
+
*
|
|
41
|
+
* @param content - Memory text about to be stored, or already stored
|
|
42
|
+
* @returns true when the text is a task-completion summary
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* isTaskCompletionLog('[COMPLETED] Task completed by dev-1: shipped X'); // true
|
|
47
|
+
* isTaskCompletionLog('Use pnpm, not npm, in this repo'); // false
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function isTaskCompletionLog(content) {
|
|
51
|
+
if (!content)
|
|
52
|
+
return false;
|
|
53
|
+
const text = stripWrappers(content);
|
|
54
|
+
return MEMORY_CONSTANTS.TASK_LOG.CONTENT_PATTERNS.some((pattern) => pattern.test(text));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=task-log-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-log-filter.js","sourceRoot":"","sources":["../../../../../../backend/src/services/memory/task-log-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,OAAe;IACrC,IAAI,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QAChB,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,MAAM,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnB,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;gBACxB,OAAO,GAAG,IAAI,CAAC;YAChB,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAkC;IACrE,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzF,CAAC"}
|
|
@@ -7,13 +7,38 @@
|
|
|
7
7
|
* An item already settled by the conversation is skipped:
|
|
8
8
|
* - a commitment the agent (or the child's agent) delivered later in the
|
|
9
9
|
* thread, by the live delivery rule;
|
|
10
|
-
* - a question the owner replied to later in the thread
|
|
10
|
+
* - a question the owner replied to later in the thread;
|
|
11
|
+
* - a question whose topic an agent later reported as settled in the thread
|
|
12
|
+
* ("done", "logged in", 「登上了」, 「搞定」…);
|
|
13
|
+
* - a harness-flow question (a login / re-login prompt, e.g. crewly-orc's
|
|
14
|
+
* 「Claude Code 的登录链接已经发过去了,你那边登上了吗?」): the harness
|
|
15
|
+
* tracks those itself, they are never the owner's decision;
|
|
16
|
+
* - a question the owner already skipped in that request.
|
|
17
|
+
*
|
|
18
|
+
* The cards it posts are marked `source: 'backfill'`, so the owner can clear
|
|
19
|
+
* them all at once (`POST /api/decisions/skip-all { source: 'backfill' }`).
|
|
11
20
|
*
|
|
12
21
|
* @module services/open-items/open-items-backfill
|
|
13
22
|
*/
|
|
14
23
|
import type { Request } from '../../types/v2/request.types.js';
|
|
15
24
|
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
16
25
|
import { type OpenItemsChatMessage, type OpenItemsService } from './open-items.service.js';
|
|
26
|
+
/**
|
|
27
|
+
* Whether a question is part of a harness flow (a login prompt): from the
|
|
28
|
+
* orc, or naming a runtime, and about logging in.
|
|
29
|
+
*
|
|
30
|
+
* @param agent - Asking agent
|
|
31
|
+
* @param text - The question
|
|
32
|
+
* @returns True to skip it
|
|
33
|
+
*/
|
|
34
|
+
export declare function isHarnessFlowQuestion(agent: string, text: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Whether an agent message reports that something is settled.
|
|
37
|
+
*
|
|
38
|
+
* @param content - Message text
|
|
39
|
+
* @returns True for "done" / "logged in" / 「搞定」…
|
|
40
|
+
*/
|
|
41
|
+
export declare function reportsSettled(content: string): boolean;
|
|
17
42
|
/** Readers the backfill needs. */
|
|
18
43
|
export interface BackfillDeps {
|
|
19
44
|
service: Pick<OpenItemsService, 'plan' | 'adopt' | 'deliveredBy' | 'findRequestFor'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-items-backfill.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items-backfill.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"open-items-backfill.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items-backfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAElE,OAAO,EAA2C,KAAK,oBAAoB,EAAE,KAAK,gBAAgB,EAAwB,MAAM,yBAAyB,CAAC;AAY1J;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,kCAAkC;AAClC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC,CAAC;IACrF,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,aAAa,EAAE,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzC,4EAA4E;IAC5E,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACnF,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,6BAA6B;AAC7B,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,kBAAkB;AAClB,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAoGnH;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAqBnE"}
|
|
@@ -7,13 +7,50 @@
|
|
|
7
7
|
* An item already settled by the conversation is skipped:
|
|
8
8
|
* - a commitment the agent (or the child's agent) delivered later in the
|
|
9
9
|
* thread, by the live delivery rule;
|
|
10
|
-
* - a question the owner replied to later in the thread
|
|
10
|
+
* - a question the owner replied to later in the thread;
|
|
11
|
+
* - a question whose topic an agent later reported as settled in the thread
|
|
12
|
+
* ("done", "logged in", 「登上了」, 「搞定」…);
|
|
13
|
+
* - a harness-flow question (a login / re-login prompt, e.g. crewly-orc's
|
|
14
|
+
* 「Claude Code 的登录链接已经发过去了,你那边登上了吗?」): the harness
|
|
15
|
+
* tracks those itself, they are never the owner's decision;
|
|
16
|
+
* - a question the owner already skipped in that request.
|
|
17
|
+
*
|
|
18
|
+
* The cards it posts are marked `source: 'backfill'`, so the owner can clear
|
|
19
|
+
* them all at once (`POST /api/decisions/skip-all { source: 'backfill' }`).
|
|
11
20
|
*
|
|
12
21
|
* @module services/open-items/open-items-backfill
|
|
13
22
|
*/
|
|
14
|
-
import { OPEN_ITEMS_CONSTANTS } from '../../constants.js';
|
|
23
|
+
import { OPEN_ITEMS_CONSTANTS, ORCHESTRATOR_SESSION_NAME } from '../../constants.js';
|
|
15
24
|
import { formatTicketNumber } from '../../types/v2/ticket.types.js';
|
|
16
25
|
import { childrenState, childWorkFor, isSameItem } from './open-items.service.js';
|
|
26
|
+
/** A login / re-login / sign-in prompt (harness flow, not an owner decision). */
|
|
27
|
+
const LOGIN_RE = /\b(?:log ?in|logged in|sign(?:ed)? ?in|re-?login|re-?log ?in|oauth|auth(?:orization)? code|device code|verification code)\b|登录|登陆|登上|登入|重新登|授权码|验证码|授权链接/i;
|
|
28
|
+
/** A runtime / harness the agent might ask the owner to sign in to. */
|
|
29
|
+
const HARNESS_RE = /\b(?:claude(?: code)?|codex|gemini|antigravity|agy|crewly|cloud)\b/i;
|
|
30
|
+
/** An agent saying the thing is settled. */
|
|
31
|
+
const SETTLED_RE = /\b(?:done|finished|completed|resolved|fixed|sorted|all set|logged in|signed in|is back|works now|working now|no longer needed)\b|已完成|完成了|做完了|搞定|弄好了|做好了|已经好了|已解决|解决了|修好了|已修复|已登录|登录成功|登上了|已经登上|登好了|恢复了|不需要了|处理好了/i;
|
|
32
|
+
/**
|
|
33
|
+
* Whether a question is part of a harness flow (a login prompt): from the
|
|
34
|
+
* orc, or naming a runtime, and about logging in.
|
|
35
|
+
*
|
|
36
|
+
* @param agent - Asking agent
|
|
37
|
+
* @param text - The question
|
|
38
|
+
* @returns True to skip it
|
|
39
|
+
*/
|
|
40
|
+
export function isHarnessFlowQuestion(agent, text) {
|
|
41
|
+
if (!LOGIN_RE.test(text))
|
|
42
|
+
return false;
|
|
43
|
+
return agent === ORCHESTRATOR_SESSION_NAME || HARNESS_RE.test(text);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Whether an agent message reports that something is settled.
|
|
47
|
+
*
|
|
48
|
+
* @param content - Message text
|
|
49
|
+
* @returns True for "done" / "logged in" / 「搞定」…
|
|
50
|
+
*/
|
|
51
|
+
export function reportsSettled(content) {
|
|
52
|
+
return SETTLED_RE.test(content);
|
|
53
|
+
}
|
|
17
54
|
/**
|
|
18
55
|
* Run the backfill.
|
|
19
56
|
*
|
|
@@ -90,6 +127,25 @@ export async function backfillOpenItems(deps, opts = {}) {
|
|
|
90
127
|
report.rows.push(row);
|
|
91
128
|
continue;
|
|
92
129
|
}
|
|
130
|
+
if (isHarnessFlowQuestion(p.item.agent, p.item.text)) {
|
|
131
|
+
row.skipped = 'harness flow (a login prompt), not an owner decision';
|
|
132
|
+
row.action = 'none';
|
|
133
|
+
report.rows.push(row);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
const settled = later.find((m) => m.senderType === 'agent' && reportsSettled(m.content));
|
|
137
|
+
if (settled) {
|
|
138
|
+
row.skipped = `resolved later in the thread (${settled.senderId} at ${new Date(settled.createdAt ?? 0).toISOString()})`;
|
|
139
|
+
row.action = 'none';
|
|
140
|
+
report.rows.push(row);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (p.skippedDecisionId) {
|
|
144
|
+
row.skipped = `the owner skipped this question before (${p.skippedDecisionId})`;
|
|
145
|
+
row.action = 'none';
|
|
146
|
+
report.rows.push(row);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
93
149
|
if (p.linkedDecisionId) {
|
|
94
150
|
row.action = `link to existing ask-owner card ${p.linkedDecisionId} (no new card)`;
|
|
95
151
|
}
|
|
@@ -108,7 +164,7 @@ export async function backfillOpenItems(deps, opts = {}) {
|
|
|
108
164
|
if (request.status === 'done')
|
|
109
165
|
report.reopened.push(`${ticket} (${request.id.slice(0, 8)})`);
|
|
110
166
|
if (apply)
|
|
111
|
-
await deps.service.adopt(request.id, keep);
|
|
167
|
+
await deps.service.adopt(request.id, keep, { source: 'backfill' });
|
|
112
168
|
}
|
|
113
169
|
return report;
|
|
114
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-items-backfill.js","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items-backfill.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"open-items-backfill.js","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items-backfill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAGrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAA0E,MAAM,yBAAyB,CAAC;AAE1J,iFAAiF;AACjF,MAAM,QAAQ,GAAG,2JAA2J,CAAC;AAE7K,uEAAuE;AACvE,MAAM,UAAU,GAAG,qEAAqE,CAAC;AAEzF,4CAA4C;AAC5C,MAAM,UAAU,GACd,mNAAmN,CAAC;AAEtN;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa,EAAE,IAAY;IAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,KAAK,KAAK,yBAAyB,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAyCD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAkB,EAAE,OAA4B,EAAE;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,oBAAoB,CAAC,WAAW,CAAC;IAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,CACzH,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACxC,MAAM,MAAM,GAAmB,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAEpG,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAQ,CAAC;QAC7B,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;QAChI,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,YAAa,CAAC,CAAC;QACzD,MAAM,IAAI,GAAsB,EAAE,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK;gBAAE,SAAS;YACnH,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CAAC;gBAAE,SAAS;YACtF,uDAAuD;YACvD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE;gBAAE,SAAS;YACnF,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;YAClF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;oBAAE,SAAS;gBAC3D,MAAM,GAAG,GAAgB;oBACvB,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,MAAM;oBACN,aAAa,EAAE,OAAO,CAAC,MAAM;oBAC7B,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;oBACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;oBACjB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;oBACjB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;oBACpB,MAAM,EAAE,EAAE;iBACX,CAAC;gBACF,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACrD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjD,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBACrB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;oBACzF,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;oBACvF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;oBACxG,IAAI,QAAQ,EAAE,CAAC;wBACb,GAAG,CAAC,OAAO,GAAG,gBAAgB,QAAQ,CAAC,QAAQ,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC7E,MAAM,KAAK,GAAG,CAAC,gCAAgC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAChE,IAAI,KAAK,CAAC,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,sCAAsC,KAAK,CAAC,UAAU,IAAI,GAAG,GAAG,CAAC,CAAC;yBAC7G,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;wBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClI,IAAI,OAAO;wBAAE,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;oBACtE,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;oBAC9D,IAAI,UAAU,EAAE,CAAC;wBACf,GAAG,CAAC,OAAO,GAAG,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;wBACtF,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrD,GAAG,CAAC,OAAO,GAAG,sDAAsD,CAAC;wBACrE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzF,IAAI,OAAO,EAAE,CAAC;wBACZ,GAAG,CAAC,OAAO,GAAG,iCAAiC,OAAO,CAAC,QAAQ,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;wBACxH,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,CAAC,iBAAiB,EAAE,CAAC;wBACxB,GAAG,CAAC,OAAO,GAAG,2CAA2C,CAAC,CAAC,iBAAiB,GAAG,CAAC;wBAChF,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;wBACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtB,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;wBACvB,GAAG,CAAC,MAAM,GAAG,mCAAmC,CAAC,CAAC,gBAAgB,gBAAgB,CAAC;oBACrF,CAAC;yBAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;wBAClB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACpG,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAK,CAAC,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;wBACjG,GAAG,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC,IAAI,CAAC,KAAK,0BAA0B,IAAI,aAAa,GAAG,4BAA4B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAC1L,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAChC,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7F,IAAI,KAAK;YAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAsB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,oCAAoC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5H,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,MAAM,iBAAiB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,MAAM,0CAA0C,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACnO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,wDAAwD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7H,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,CAAC,GAAG;YAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACvD,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACxH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -34,7 +34,7 @@ import { type ComponentLogger } from '../core/logger.service.js';
|
|
|
34
34
|
import type { Request } from '../../types/v2/request.types.js';
|
|
35
35
|
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
36
36
|
import { type RequestOpenItem } from '../../types/v2/open-item.types.js';
|
|
37
|
-
import type { OwnerDecision } from '../../types/decision.types.js';
|
|
37
|
+
import type { DecisionSource, OwnerDecision } from '../../types/decision.types.js';
|
|
38
38
|
import { type DerivedQuestionCard } from './open-item-card.js';
|
|
39
39
|
/** The chat-v2 message fields the service reads. */
|
|
40
40
|
export interface OpenItemsChatMessage {
|
|
@@ -66,6 +66,8 @@ export interface QuestionCardInput {
|
|
|
66
66
|
item: RequestOpenItem;
|
|
67
67
|
card: DerivedQuestionCard;
|
|
68
68
|
place: OpenItemsSlackPlace | null;
|
|
69
|
+
/** `backfill` when the backfill cards an old reply */
|
|
70
|
+
source?: DecisionSource;
|
|
69
71
|
}
|
|
70
72
|
/** Collaborators. */
|
|
71
73
|
export interface OpenItemsDeps {
|
|
@@ -86,6 +88,10 @@ export interface OpenItemsDeps {
|
|
|
86
88
|
askQuestion?: (input: QuestionCardInput) => Promise<OwnerDecision | null>;
|
|
87
89
|
/** Withdraw a question's card (the ticket was cancelled) */
|
|
88
90
|
cancelQuestion?: (decisionId: string, note: string) => Promise<void>;
|
|
91
|
+
/** A question the owner skipped in this request (not asked again for 30 days) */
|
|
92
|
+
skippedQuestion?: (requestId: string, agent: string, question: string) => Promise<OwnerDecision | null>;
|
|
93
|
+
/** Skip a question's card (the owner skipped the open item); false when it was not pending */
|
|
94
|
+
skipQuestion?: (decisionId: string) => Promise<boolean>;
|
|
89
95
|
/** A decision by id (sweep catches answers a missed handler call left behind) */
|
|
90
96
|
getDecision?: (decisionId: string) => Promise<OwnerDecision | null>;
|
|
91
97
|
/** Deliver a note to an agent, waking it; false when it could not */
|
|
@@ -108,6 +114,13 @@ export interface PlannedOpenItem {
|
|
|
108
114
|
card?: DerivedQuestionCard;
|
|
109
115
|
/** Question: the ask-owner decision it is linked to instead of a new card */
|
|
110
116
|
linkedDecisionId?: string;
|
|
117
|
+
/** Question: the owner already skipped the same question here — tracked as skipped, never carded */
|
|
118
|
+
skippedDecisionId?: string;
|
|
119
|
+
}
|
|
120
|
+
/** Thrown for open-item requests the caller must fix (HTTP 4xx). */
|
|
121
|
+
export declare class OpenItemsError extends Error {
|
|
122
|
+
readonly status: number;
|
|
123
|
+
constructor(status: number, message: string);
|
|
111
124
|
}
|
|
112
125
|
/**
|
|
113
126
|
* The Slack thread of a request's conversation (`origin.threadRef` is
|
|
@@ -260,9 +273,12 @@ export declare class OpenItemsService {
|
|
|
260
273
|
*
|
|
261
274
|
* @param requestId - Request
|
|
262
275
|
* @param planned - Items from {@link plan}
|
|
276
|
+
* @param opts - `source: 'backfill'` marks the cards it posts as backfilled
|
|
263
277
|
* @returns Updated request, or null when it is gone
|
|
264
278
|
*/
|
|
265
|
-
adopt(requestId: string, planned: PlannedOpenItem[]
|
|
279
|
+
adopt(requestId: string, planned: PlannedOpenItem[], opts?: {
|
|
280
|
+
source?: DecisionSource;
|
|
281
|
+
}): Promise<Request | null>;
|
|
266
282
|
/**
|
|
267
283
|
* Store items, and move the request between `done` and `awaiting_followup`.
|
|
268
284
|
*
|
|
@@ -299,6 +315,18 @@ export declare class OpenItemsService {
|
|
|
299
315
|
* @returns The note for the agent (null when withdrawn)
|
|
300
316
|
*/
|
|
301
317
|
onDecisionSettled(d: OwnerDecision, fallback: string | null | undefined): Promise<string | null>;
|
|
318
|
+
/**
|
|
319
|
+
* The owner skipped an open item ("I don't care about this anymore"). A
|
|
320
|
+
* promise is closed, its follow-up WorkItem cancelled and the agent told
|
|
321
|
+
* once to drop it; a question's card is skipped (which closes the item and
|
|
322
|
+
* tells the agent). The request completes when nothing else is open.
|
|
323
|
+
*
|
|
324
|
+
* @param requestId - Request
|
|
325
|
+
* @param itemId - Open item
|
|
326
|
+
* @returns The closed item
|
|
327
|
+
* @throws OpenItemsError(404 / 409)
|
|
328
|
+
*/
|
|
329
|
+
skipItem(requestId: string, itemId: string): Promise<RequestOpenItem>;
|
|
302
330
|
/**
|
|
303
331
|
* Periodic pass: link late child work, catch missed readiness, nudge
|
|
304
332
|
* overdue promises once and then tell the owner, sync answered questions,
|
|
@@ -329,4 +357,11 @@ export declare class OpenItemsService {
|
|
|
329
357
|
ownerNote(request: Request, item: RequestOpenItem, pool: readonly WorkItem[], now: Date): Promise<string>;
|
|
330
358
|
private closeFollowUp;
|
|
331
359
|
}
|
|
360
|
+
/**
|
|
361
|
+
* The open-item status a settled decision leaves its question in.
|
|
362
|
+
*
|
|
363
|
+
* @param d - Decision
|
|
364
|
+
* @returns Status (`open` while it is still pending)
|
|
365
|
+
*/
|
|
366
|
+
export declare function itemStatusFor(d: Pick<OwnerDecision, 'status'>): RequestOpenItem['status'];
|
|
332
367
|
//# sourceMappingURL=open-items.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-items.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"open-items.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/open-items/open-items.service.ts"],"names":[],"mappings":"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"}
|