crewly 1.20.358 → 1.20.359
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/dist/backend/backend/src/constants.d.ts +59 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +59 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +21 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +162 -11
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js +5 -0
- package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
- package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/startup-briefing.service.js +65 -22
- package/dist/backend/backend/src/services/memory/startup-briefing.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-binding.d.ts +25 -2
- package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-binding.js +32 -4
- package/dist/backend/backend/src/services/session/session-binding.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts +27 -2
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js +105 -8
- package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
- package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/work-record-transcript.js +194 -0
- package/dist/backend/backend/src/services/wiki/work-record-transcript.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/work-record.d.ts +239 -0
- package/dist/backend/backend/src/services/wiki/work-record.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/work-record.js +631 -0
- package/dist/backend/backend/src/services/wiki/work-record.js.map +1 -0
- package/dist/backend/backend/src/services/wiki/work-record.service.d.ts +209 -0
- package/dist/backend/backend/src/services/wiki/work-record.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/wiki/work-record.service.js +514 -0
- package/dist/backend/backend/src/services/wiki/work-record.service.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +59 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +59 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
- package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/startup-briefing.service.js +65 -22
- package/dist/cli/backend/src/services/memory/startup-briefing.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
- package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/work-record-transcript.js +194 -0
- package/dist/cli/backend/src/services/wiki/work-record-transcript.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/work-record.d.ts +239 -0
- package/dist/cli/backend/src/services/wiki/work-record.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/work-record.js +631 -0
- package/dist/cli/backend/src/services/wiki/work-record.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Work records (#1349) — the pure half.
|
|
3
|
+
*
|
|
4
|
+
* A work record is one structured `(record)` entry in a vault's activity log
|
|
5
|
+
* describing a finished (or long-blocked) task: who asked for it, who did it,
|
|
6
|
+
* what came out, what went wrong on the way and how it was resolved, who was
|
|
7
|
+
* pulled in, and how it ended. This module knows the shape, assembles a
|
|
8
|
+
* record from already-loaded inputs (no I/O, so fixtures can drive it),
|
|
9
|
+
* renders it as a log body, and parses a body back for the digest and the
|
|
10
|
+
* startup briefing.
|
|
11
|
+
*
|
|
12
|
+
* Owner-facing lines never carry ticket ids or WorkItem ids; those live on
|
|
13
|
+
* the `meta:` line, which the digest reads but never renders.
|
|
14
|
+
*
|
|
15
|
+
* Body layout (one field per line, parse-friendly):
|
|
16
|
+
*
|
|
17
|
+
* (record) **<title>** — <outcome phrase>
|
|
18
|
+
* asked by: <who> — "<quote>"
|
|
19
|
+
* done by: <name>
|
|
20
|
+
* did: <summary>
|
|
21
|
+
* outputs: <a>; <b>
|
|
22
|
+
* errors: <what> (fixed); <what> (unresolved)
|
|
23
|
+
* helpers: delegated to Leo: "<title>" → done; asked Ella → answered; reviewed by Owen
|
|
24
|
+
* outcome: <phrase>
|
|
25
|
+
* meta: wi=<id> phase=final status=verified asked_by=owen:lead done_by=nova …
|
|
26
|
+
*
|
|
27
|
+
* @module services/wiki/work-record
|
|
28
|
+
*/
|
|
29
|
+
import type { WorkItem } from '../../types/v2/work-item.types.js';
|
|
30
|
+
import type { ProjectTicket } from '../../types/project-ticket.types.js';
|
|
31
|
+
import type { Request } from '../../types/v2/request.types.js';
|
|
32
|
+
import type { TraceEvent } from '../trace/trace.types.js';
|
|
33
|
+
import type { WikiLogEntryRecord } from './wiki-log-entries.js';
|
|
34
|
+
import type { TranscriptWindowFacts } from './work-record-transcript.js';
|
|
35
|
+
/** Who a party to the task is. */
|
|
36
|
+
export type WorkRecordPartyKind = 'owner' | 'orchestrator' | 'lead' | 'agent' | 'schedule' | 'system';
|
|
37
|
+
/** How the task ended. */
|
|
38
|
+
export type WorkRecordOutcome = 'owner_verified' | 'lead_verified' | 'silence_accepted' | 'done' | 'rejected' | 'cancelled' | 'failed' | 'blocked' | 'waiting_owner';
|
|
39
|
+
/** `final` closes the task; `blocked` is an interim record for a parked task. */
|
|
40
|
+
export type WorkRecordPhase = 'final' | 'blocked';
|
|
41
|
+
/** One party (asker, doer, helper). */
|
|
42
|
+
export interface WorkRecordParty {
|
|
43
|
+
kind: WorkRecordPartyKind;
|
|
44
|
+
/** Display name (`Owen`, `the owner`, `schedule "Daily ops"`). */
|
|
45
|
+
name: string;
|
|
46
|
+
/** Agent session when the party is an agent. */
|
|
47
|
+
session?: string;
|
|
48
|
+
}
|
|
49
|
+
/** Someone pulled in while the task ran. */
|
|
50
|
+
export interface WorkRecordHelper {
|
|
51
|
+
how: 'delegated' | 'asked' | 'reviewed';
|
|
52
|
+
name: string;
|
|
53
|
+
session?: string;
|
|
54
|
+
/** Delegated sub-task title. */
|
|
55
|
+
what?: string;
|
|
56
|
+
/** What came back (`done`, `rejected`, `answered`, `no answer`). */
|
|
57
|
+
back?: string;
|
|
58
|
+
}
|
|
59
|
+
/** An error met on the way. */
|
|
60
|
+
export interface WorkRecordError {
|
|
61
|
+
what: string;
|
|
62
|
+
resolved: 'fixed' | 'unresolved' | 'unknown';
|
|
63
|
+
}
|
|
64
|
+
/** The assembled record. */
|
|
65
|
+
export interface WorkRecord {
|
|
66
|
+
workItemId: string;
|
|
67
|
+
phase: WorkRecordPhase;
|
|
68
|
+
title: string;
|
|
69
|
+
askedBy: WorkRecordParty;
|
|
70
|
+
/** Where the ask came from, when known (`Slack thread`, `chat`, `app comment`). */
|
|
71
|
+
askedWhere?: string;
|
|
72
|
+
/** The person the asker acted for (an owner-origin delegation by a lead). */
|
|
73
|
+
forOwner: boolean;
|
|
74
|
+
askQuote: string;
|
|
75
|
+
doneBy: WorkRecordParty;
|
|
76
|
+
did: string;
|
|
77
|
+
outputs: string[];
|
|
78
|
+
errors: WorkRecordError[];
|
|
79
|
+
helpers: WorkRecordHelper[];
|
|
80
|
+
outcome: WorkRecordOutcome;
|
|
81
|
+
/** Who decided the outcome (reviewer, owner), display name. */
|
|
82
|
+
outcomeBy?: string;
|
|
83
|
+
/** Cancel / block / rejection reason. */
|
|
84
|
+
outcomeNote?: string;
|
|
85
|
+
endedAt: string;
|
|
86
|
+
durationMs?: number;
|
|
87
|
+
/** Machine-readable fields for the digest (ticket ids live here only). */
|
|
88
|
+
meta: Record<string, string>;
|
|
89
|
+
}
|
|
90
|
+
/** Everything the assembler needs, already loaded. */
|
|
91
|
+
export interface WorkRecordInputs {
|
|
92
|
+
workItem: WorkItem;
|
|
93
|
+
phase: WorkRecordPhase;
|
|
94
|
+
/** Linked project ticket (`metadata.projectTicket`), when found. */
|
|
95
|
+
ticket?: ProjectTicket | null;
|
|
96
|
+
/** Linked Request (`workItem.requestId`), when found. */
|
|
97
|
+
request?: Request | null;
|
|
98
|
+
/** Child items: delegations and the verify item. */
|
|
99
|
+
children?: readonly WorkItem[];
|
|
100
|
+
/** The run trace's events, when a trace exists. */
|
|
101
|
+
trace?: readonly TraceEvent[];
|
|
102
|
+
/** Facts from the doer's transcript for the task window. */
|
|
103
|
+
transcript?: TranscriptWindowFacts | null;
|
|
104
|
+
/** Display name of an agent session. */
|
|
105
|
+
nameOf: (session: string) => string;
|
|
106
|
+
/** Party kind of an agent session (`lead`, `orchestrator`, `agent`). */
|
|
107
|
+
kindOf: (session: string) => WorkRecordPartyKind;
|
|
108
|
+
/** Ticket prefixes to strip from owner-facing text (`CE`, `CREW`). */
|
|
109
|
+
ticketPrefixes?: readonly string[];
|
|
110
|
+
/** Clock. */
|
|
111
|
+
now?: number;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* `work-record:<workItemId>#<phase>` — the entry's `ref:` and its dedupe key.
|
|
115
|
+
*
|
|
116
|
+
* @param workItemId - WorkItem id
|
|
117
|
+
* @param phase - Record phase
|
|
118
|
+
* @returns Stable ref
|
|
119
|
+
*/
|
|
120
|
+
export declare function workRecordRef(workItemId: string, phase: WorkRecordPhase): string;
|
|
121
|
+
/**
|
|
122
|
+
* Parse a record ref back into its parts.
|
|
123
|
+
*
|
|
124
|
+
* @param ref - `ref:` value
|
|
125
|
+
* @returns Parts, or null when it is not a record ref
|
|
126
|
+
*/
|
|
127
|
+
export declare function parseWorkRecordRef(ref: string): {
|
|
128
|
+
workItemId: string;
|
|
129
|
+
phase: WorkRecordPhase;
|
|
130
|
+
} | null;
|
|
131
|
+
/**
|
|
132
|
+
* Whether a log entry is a work record.
|
|
133
|
+
*
|
|
134
|
+
* @param entry - Parsed log entry
|
|
135
|
+
* @returns True for `work_record` entries (by source type or ref)
|
|
136
|
+
*/
|
|
137
|
+
export declare function isWorkRecordEntry(entry: Pick<WikiLogEntryRecord, 'sourceType' | 'ref'>): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Whether a WorkItem is the verify item of another (`<id>:verify:<id>` or
|
|
140
|
+
* `metadata.verifyOf`). Verify items are folded into the parent's record.
|
|
141
|
+
*
|
|
142
|
+
* @param wi - WorkItem
|
|
143
|
+
* @returns True for a verify item
|
|
144
|
+
*/
|
|
145
|
+
export declare function isVerifyWorkItem(wi: Pick<WorkItem, 'id' | 'metadata' | 'type'>): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Whether a WorkItem gets a record at all: real work, not a verify item or a
|
|
148
|
+
* bookkeeping type.
|
|
149
|
+
*
|
|
150
|
+
* @param wi - WorkItem
|
|
151
|
+
* @returns True when the item is recordable
|
|
152
|
+
*/
|
|
153
|
+
export declare function isRecordableWorkItem(wi: Pick<WorkItem, 'id' | 'metadata' | 'type'>): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* The moment an item stopped: `completedAt`, else `statusChangedAt`, else
|
|
156
|
+
* `createdAt`.
|
|
157
|
+
*
|
|
158
|
+
* @param wi - WorkItem
|
|
159
|
+
* @returns ISO time
|
|
160
|
+
*/
|
|
161
|
+
export declare function workItemEndedAt(wi: Pick<WorkItem, 'completedAt' | 'statusChangedAt' | 'createdAt'>): string;
|
|
162
|
+
/**
|
|
163
|
+
* Owner-facing text: ticket ids, WorkItem ids and uuids removed, whitespace
|
|
164
|
+
* collapsed, clipped.
|
|
165
|
+
*
|
|
166
|
+
* @param text - Raw text
|
|
167
|
+
* @param prefixes - Ticket prefixes to strip
|
|
168
|
+
* @param max - Character cap
|
|
169
|
+
* @returns Clean one-line text
|
|
170
|
+
*/
|
|
171
|
+
export declare function cleanOwnerText(text: string | undefined | null, prefixes?: readonly string[], max?: number): string;
|
|
172
|
+
/**
|
|
173
|
+
* Clip to `max` characters with an ellipsis.
|
|
174
|
+
*
|
|
175
|
+
* @param text - Text
|
|
176
|
+
* @param max - Cap
|
|
177
|
+
* @returns Clipped text
|
|
178
|
+
*/
|
|
179
|
+
export declare function clip(text: string, max: number): string;
|
|
180
|
+
/**
|
|
181
|
+
* Assemble a record from loaded inputs. Pure.
|
|
182
|
+
*
|
|
183
|
+
* @param inputs - WorkItem, links, trace, transcript facts and name resolvers
|
|
184
|
+
* @returns The record
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const record = assembleWorkRecord({ workItem, phase: 'final', ticket, children, trace, nameOf, kindOf });
|
|
189
|
+
* const body = renderWorkRecordBody(record);
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export declare function assembleWorkRecord(inputs: WorkRecordInputs): WorkRecord;
|
|
193
|
+
/**
|
|
194
|
+
* Render a record as the log body. Always fits `MAX_CHARS`; the `meta:` line
|
|
195
|
+
* is never cut.
|
|
196
|
+
*
|
|
197
|
+
* @param record - Assembled record
|
|
198
|
+
* @returns Markdown body
|
|
199
|
+
*/
|
|
200
|
+
export declare function renderWorkRecordBody(record: WorkRecord): string;
|
|
201
|
+
/** A record as read back from a log body. */
|
|
202
|
+
export interface ParsedWorkRecord {
|
|
203
|
+
title: string;
|
|
204
|
+
askedBy: string;
|
|
205
|
+
doneBy: string;
|
|
206
|
+
did: string;
|
|
207
|
+
outputs: string[];
|
|
208
|
+
errors: string[];
|
|
209
|
+
helpers: Array<{
|
|
210
|
+
how: 'delegated' | 'asked' | 'reviewed';
|
|
211
|
+
name: string;
|
|
212
|
+
rest: string;
|
|
213
|
+
}>;
|
|
214
|
+
outcome: string;
|
|
215
|
+
meta: Record<string, string>;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Parse a record body written by {@link renderWorkRecordBody}.
|
|
219
|
+
*
|
|
220
|
+
* @param body - Log entry body
|
|
221
|
+
* @returns The fields, or null when the body is not a record
|
|
222
|
+
*/
|
|
223
|
+
export declare function parseWorkRecordBody(body: string): ParsedWorkRecord | null;
|
|
224
|
+
/**
|
|
225
|
+
* One-line form of a record for the startup briefing and the digest.
|
|
226
|
+
*
|
|
227
|
+
* @param parsed - Parsed record
|
|
228
|
+
* @param max - Character cap
|
|
229
|
+
* @returns `**Title** — asked by X, done by Y → outcome`
|
|
230
|
+
*/
|
|
231
|
+
export declare function shortWorkRecordLine(parsed: ParsedWorkRecord, max?: number): string;
|
|
232
|
+
/**
|
|
233
|
+
* The outcome phrase used in the headline and the `outcome:` line.
|
|
234
|
+
*
|
|
235
|
+
* @param record - Record
|
|
236
|
+
* @returns Owner-facing phrase
|
|
237
|
+
*/
|
|
238
|
+
export declare function outcomePhrase(record: Pick<WorkRecord, 'outcome' | 'outcomeBy'>): string;
|
|
239
|
+
//# sourceMappingURL=work-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-record.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/work-record.ts"],"names":[],"mappings":"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"}
|