crewly 1.20.358 → 1.20.360

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.
Files changed (137) hide show
  1. package/config/roles/developer/prompt.md +3 -1
  2. package/config/skills/registry.json +125 -1
  3. package/dist/backend/backend/src/constants.d.ts +189 -2
  4. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  5. package/dist/backend/backend/src/constants.js +200 -3
  6. package/dist/backend/backend/src/constants.js.map +1 -1
  7. package/dist/backend/backend/src/index.d.ts +58 -0
  8. package/dist/backend/backend/src/index.d.ts.map +1 -1
  9. package/dist/backend/backend/src/index.js +263 -19
  10. package/dist/backend/backend/src/index.js.map +1 -1
  11. package/dist/backend/backend/src/services/agent/boot-pressure.d.ts +147 -0
  12. package/dist/backend/backend/src/services/agent/boot-pressure.d.ts.map +1 -0
  13. package/dist/backend/backend/src/services/agent/boot-pressure.js +212 -0
  14. package/dist/backend/backend/src/services/agent/boot-pressure.js.map +1 -0
  15. package/dist/backend/backend/src/services/agent/restore-queue.d.ts +50 -1
  16. package/dist/backend/backend/src/services/agent/restore-queue.d.ts.map +1 -1
  17. package/dist/backend/backend/src/services/agent/restore-queue.js +100 -5
  18. package/dist/backend/backend/src/services/agent/restore-queue.js.map +1 -1
  19. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts +11 -0
  20. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts.map +1 -1
  21. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js +28 -2
  22. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js.map +1 -1
  23. package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
  24. package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/memory/startup-briefing.service.js +65 -22
  26. package/dist/backend/backend/src/services/memory/startup-briefing.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/messaging/deferred-start-retry.d.ts +8 -0
  28. package/dist/backend/backend/src/services/messaging/deferred-start-retry.d.ts.map +1 -1
  29. package/dist/backend/backend/src/services/messaging/deferred-start-retry.js +8 -0
  30. package/dist/backend/backend/src/services/messaging/deferred-start-retry.js.map +1 -1
  31. package/dist/backend/backend/src/services/session/session-binding.d.ts +25 -2
  32. package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -1
  33. package/dist/backend/backend/src/services/session/session-binding.js +32 -4
  34. package/dist/backend/backend/src/services/session/session-binding.js.map +1 -1
  35. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  36. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  37. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  38. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts +27 -2
  39. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts.map +1 -1
  40. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js +105 -8
  41. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js.map +1 -1
  42. package/dist/backend/backend/src/services/wiki/wiki-log-entries.d.ts +7 -0
  43. package/dist/backend/backend/src/services/wiki/wiki-log-entries.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/wiki/wiki-log-entries.js +10 -0
  45. package/dist/backend/backend/src/services/wiki/wiki-log-entries.js.map +1 -1
  46. package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.d.ts +24 -0
  47. package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.d.ts.map +1 -1
  48. package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.js +75 -9
  49. package/dist/backend/backend/src/services/wiki/wiki-log-rotation.service.js.map +1 -1
  50. package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.d.ts +19 -0
  51. package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.d.ts.map +1 -1
  52. package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.js +23 -2
  53. package/dist/backend/backend/src/services/wiki/wiki-maintenance.service.js.map +1 -1
  54. package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
  55. package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
  56. package/dist/backend/backend/src/services/wiki/work-record-transcript.js +194 -0
  57. package/dist/backend/backend/src/services/wiki/work-record-transcript.js.map +1 -0
  58. package/dist/backend/backend/src/services/wiki/work-record.d.ts +239 -0
  59. package/dist/backend/backend/src/services/wiki/work-record.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/wiki/work-record.js +631 -0
  61. package/dist/backend/backend/src/services/wiki/work-record.js.map +1 -0
  62. package/dist/backend/backend/src/services/wiki/work-record.service.d.ts +231 -0
  63. package/dist/backend/backend/src/services/wiki/work-record.service.d.ts.map +1 -0
  64. package/dist/backend/backend/src/services/wiki/work-record.service.js +542 -0
  65. package/dist/backend/backend/src/services/wiki/work-record.service.js.map +1 -0
  66. package/dist/backend/backend/src/services/worktree/low-disk-guard.d.ts +92 -8
  67. package/dist/backend/backend/src/services/worktree/low-disk-guard.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/worktree/low-disk-guard.js +98 -14
  69. package/dist/backend/backend/src/services/worktree/low-disk-guard.js.map +1 -1
  70. package/dist/backend/backend/src/services/worktree/tmp-janitor.d.ts +138 -0
  71. package/dist/backend/backend/src/services/worktree/tmp-janitor.d.ts.map +1 -0
  72. package/dist/backend/backend/src/services/worktree/tmp-janitor.js +199 -0
  73. package/dist/backend/backend/src/services/worktree/tmp-janitor.js.map +1 -0
  74. package/dist/backend/backend/src/services/worktree/transcript-janitor.d.ts +154 -0
  75. package/dist/backend/backend/src/services/worktree/transcript-janitor.d.ts.map +1 -0
  76. package/dist/backend/backend/src/services/worktree/transcript-janitor.js +357 -0
  77. package/dist/backend/backend/src/services/worktree/transcript-janitor.js.map +1 -0
  78. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js +7 -2
  80. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/worktree/worktree-dirty.d.ts +16 -4
  82. package/dist/backend/backend/src/services/worktree/worktree-dirty.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/worktree/worktree-dirty.js +21 -5
  84. package/dist/backend/backend/src/services/worktree/worktree-dirty.js.map +1 -1
  85. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts +18 -0
  86. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/worktree/worktree-git.js +60 -0
  88. package/dist/backend/backend/src/services/worktree/worktree-git.js.map +1 -1
  89. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +164 -25
  90. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +494 -55
  92. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/worktree/worktree-tiers.d.ts +186 -0
  94. package/dist/backend/backend/src/services/worktree/worktree-tiers.d.ts.map +1 -0
  95. package/dist/backend/backend/src/services/worktree/worktree-tiers.js +279 -0
  96. package/dist/backend/backend/src/services/worktree/worktree-tiers.js.map +1 -0
  97. package/dist/backend/build-info.json +2 -2
  98. package/dist/cli/backend/src/constants.d.ts +189 -2
  99. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  100. package/dist/cli/backend/src/constants.js +200 -3
  101. package/dist/cli/backend/src/constants.js.map +1 -1
  102. package/dist/cli/backend/src/services/agent/boot-pressure.d.ts +147 -0
  103. package/dist/cli/backend/src/services/agent/boot-pressure.d.ts.map +1 -0
  104. package/dist/cli/backend/src/services/agent/boot-pressure.js +212 -0
  105. package/dist/cli/backend/src/services/agent/boot-pressure.js.map +1 -0
  106. package/dist/cli/backend/src/services/agent/restore-queue.d.ts +50 -1
  107. package/dist/cli/backend/src/services/agent/restore-queue.d.ts.map +1 -1
  108. package/dist/cli/backend/src/services/agent/restore-queue.js +100 -5
  109. package/dist/cli/backend/src/services/agent/restore-queue.js.map +1 -1
  110. package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
  111. package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
  112. package/dist/cli/backend/src/services/memory/startup-briefing.service.js +65 -22
  113. package/dist/cli/backend/src/services/memory/startup-briefing.service.js.map +1 -1
  114. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  115. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  116. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  117. package/dist/cli/backend/src/services/wiki/wiki-log-entries.d.ts +7 -0
  118. package/dist/cli/backend/src/services/wiki/wiki-log-entries.d.ts.map +1 -1
  119. package/dist/cli/backend/src/services/wiki/wiki-log-entries.js +10 -0
  120. package/dist/cli/backend/src/services/wiki/wiki-log-entries.js.map +1 -1
  121. package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
  122. package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
  123. package/dist/cli/backend/src/services/wiki/work-record-transcript.js +194 -0
  124. package/dist/cli/backend/src/services/wiki/work-record-transcript.js.map +1 -0
  125. package/dist/cli/backend/src/services/wiki/work-record.d.ts +239 -0
  126. package/dist/cli/backend/src/services/wiki/work-record.d.ts.map +1 -0
  127. package/dist/cli/backend/src/services/wiki/work-record.js +631 -0
  128. package/dist/cli/backend/src/services/wiki/work-record.js.map +1 -0
  129. package/dist/cli/backend/src/services/worktree/low-disk-guard.d.ts +92 -8
  130. package/dist/cli/backend/src/services/worktree/low-disk-guard.d.ts.map +1 -1
  131. package/dist/cli/backend/src/services/worktree/low-disk-guard.js +98 -14
  132. package/dist/cli/backend/src/services/worktree/low-disk-guard.js.map +1 -1
  133. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts +18 -0
  134. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts.map +1 -1
  135. package/dist/cli/backend/src/services/worktree/worktree-git.js +60 -0
  136. package/dist/cli/backend/src/services/worktree/worktree-git.js.map +1 -1
  137. 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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"}