@peasant-labs/fairtrade 0.0.2 → 0.0.4
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/lib/ChartLine-Dlp6-CLL.js +264 -0
- package/dist/lib/InUseShell-DZvmRdj-.js +1532 -0
- package/dist/lib/analytics.css +1 -0
- package/dist/lib/analytics.js +1052 -0
- package/dist/lib/base.css +7 -1
- package/dist/lib/commons.css +1 -0
- package/dist/lib/commons.js +3275 -0
- package/dist/lib/components.css +1 -1
- package/dist/lib/graph.css +1 -0
- package/dist/lib/graph.js +823 -0
- package/dist/lib/types/Intensity.d.ts +3 -3
- package/dist/lib/types/MapCanvas.d.ts +37 -5
- package/dist/lib/types/RoleRoster.d.ts +12 -1
- package/dist/lib/types/analytics/ChartCard.d.ts +18 -0
- package/dist/lib/types/analytics/ContributorTable.d.ts +16 -0
- package/dist/lib/types/analytics/ProjectOverview.d.ts +40 -0
- package/dist/lib/types/analytics/format.d.ts +48 -0
- package/dist/lib/types/analytics/index.d.ts +24 -0
- package/dist/lib/types/analytics/metrics.d.ts +130 -0
- package/dist/lib/types/analytics/stats.d.ts +23 -0
- package/dist/lib/types/analytics/time.d.ts +32 -0
- package/dist/lib/types/analytics/types.d.ts +453 -0
- package/dist/lib/types/commons/Explore.d.ts +6 -0
- package/dist/lib/types/commons/Manage.d.ts +34 -0
- package/dist/lib/types/commons/index.d.ts +24 -0
- package/dist/lib/types/commons/providers.d.ts +8 -0
- package/dist/lib/types/commons/types.d.ts +356 -0
- package/dist/lib/types/graph/ChangeDetail.d.ts +28 -0
- package/dist/lib/types/graph/Changes.d.ts +21 -0
- package/dist/lib/types/graph/CodeMap.d.ts +49 -0
- package/dist/lib/types/graph/CodeMapComposition.d.ts +85 -0
- package/dist/lib/types/graph/changeGraph.d.ts +106 -0
- package/dist/lib/types/graph/index.d.ts +30 -0
- package/dist/lib/types/graph/types.d.ts +579 -0
- package/dist/lib/types/index.d.ts +3 -0
- package/dist/lib/types/inuse/InUseShell.d.ts +50 -0
- package/dist/lib/types/transcript/CheckRow.d.ts +15 -0
- package/dist/lib/types/transcript/DiffEntryCard.d.ts +27 -0
- package/dist/lib/types/transcript/FilterSection.d.ts +11 -0
- package/dist/lib/types/transcript/FiltersRail.d.ts +41 -0
- package/dist/lib/types/transcript/LabelPopover.d.ts +14 -0
- package/dist/lib/types/transcript/Markdown.d.ts +7 -0
- package/dist/lib/types/transcript/OutlineRail.d.ts +13 -0
- package/dist/lib/types/transcript/Scorecard.d.ts +8 -0
- package/dist/lib/types/transcript/Scrubber.d.ts +17 -0
- package/dist/lib/types/transcript/TaskBody.d.ts +8 -0
- package/dist/lib/types/transcript/Thinking.d.ts +9 -0
- package/dist/lib/types/transcript/ToolBody.d.ts +8 -0
- package/dist/lib/types/transcript/ToolCall.d.ts +12 -0
- package/dist/lib/types/transcript/TranscriptViewer.d.ts +6 -0
- package/dist/lib/types/transcript/TurnCard.d.ts +31 -0
- package/dist/lib/types/transcript/ViewSwitch.d.ts +11 -0
- package/dist/lib/types/transcript/adapter.d.ts +90 -0
- package/dist/lib/types/transcript/adapter.parse.d.ts +75 -0
- package/dist/lib/types/transcript/analytics.d.ts +216 -0
- package/dist/lib/types/transcript/graph/GraphLegend.d.ts +49 -0
- package/dist/lib/types/transcript/graph/GraphSubagentBranch.d.ts +24 -0
- package/dist/lib/types/transcript/graph/GraphToolNode.d.ts +56 -0
- package/dist/lib/types/transcript/graph/GraphTurnNode.d.ts +76 -0
- package/dist/lib/types/transcript/graph/index.d.ts +10 -0
- package/dist/lib/types/transcript/index.d.ts +69 -0
- package/dist/lib/types/transcript/state-capabilities.d.ts +161 -0
- package/dist/lib/types/transcript/view-model.d.ts +563 -0
- package/dist/lib/types/transcript/wire-types.d.ts +325 -0
- package/dist/lib/ui-oBFnHPFe.js +11146 -0
- package/dist/lib/ui.js +4 -8736
- package/package.json +42 -6
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification of a map node within the path-derived tree.
|
|
3
|
+
* pkg/schema/map_api.go — MapNodeKind constants.
|
|
4
|
+
* @typedef {'module' | 'package' | 'file'} MapNodeKind
|
|
5
|
+
*/
|
|
6
|
+
/** Canonical MapNodeKind values, in schema order. @type {readonly MapNodeKind[]} */
|
|
7
|
+
export const MAP_NODE_KINDS: readonly MapNodeKind[];
|
|
8
|
+
/**
|
|
9
|
+
* How strongly a recorded session is bound to a change.
|
|
10
|
+
* pkg/schema/map_api.go — ChangeBinding constants.
|
|
11
|
+
* @typedef {'bound' | 'candidate'} ChangeBinding
|
|
12
|
+
*/
|
|
13
|
+
/** Canonical ChangeBinding values. @type {readonly ChangeBinding[]} */
|
|
14
|
+
export const CHANGE_BINDINGS: readonly ChangeBinding[];
|
|
15
|
+
/**
|
|
16
|
+
* Kind of structural violation on the map.
|
|
17
|
+
* pkg/schema/map_api.go — EdgeViolationKind constants.
|
|
18
|
+
* @typedef {'cycle' | 'wrong_way'} EdgeViolationKind
|
|
19
|
+
*/
|
|
20
|
+
/** Canonical EdgeViolationKind values. @type {readonly EdgeViolationKind[]} */
|
|
21
|
+
export const EDGE_VIOLATION_KINDS: readonly EdgeViolationKind[];
|
|
22
|
+
/**
|
|
23
|
+
* Per-file change status (branch vs merge-base). Git rename detection strips the
|
|
24
|
+
* similarity score, so "R100"/"R087" normalize to "R".
|
|
25
|
+
* Grounded in internal/gitops/repo.go — FileStatus{Modified,Added,Deleted,Renamed}
|
|
26
|
+
* ("M"/"A"/"D"/"R"); carried verbatim onto FileChange.Status / ChangeDiffPayload.Status
|
|
27
|
+
* in pkg/schema/map_api.go.
|
|
28
|
+
* @typedef {'M' | 'A' | 'D' | 'R'} FileChangeStatus
|
|
29
|
+
*/
|
|
30
|
+
/** Canonical FileChangeStatus values, in schema order. @type {readonly FileChangeStatus[]} */
|
|
31
|
+
export const FILE_CHANGE_STATUSES: readonly FileChangeStatus[];
|
|
32
|
+
/**
|
|
33
|
+
* Classification of one line within a unified-diff hunk.
|
|
34
|
+
* Grounded in internal/gitops/repo.go — DiffLine{Context,Added,Removed}
|
|
35
|
+
* ("context"/"add"/"del"); carried onto DiffLine.Kind in pkg/schema/map_api.go.
|
|
36
|
+
* @typedef {'context' | 'add' | 'del'} DiffLineKind
|
|
37
|
+
*/
|
|
38
|
+
/** Canonical DiffLineKind values, in schema order. @type {readonly DiffLineKind[]} */
|
|
39
|
+
export const DIFF_LINE_KINDS: readonly DiffLineKind[];
|
|
40
|
+
/**
|
|
41
|
+
* Classification of a map node within the path-derived tree.
|
|
42
|
+
* pkg/schema/map_api.go — MapNodeKind constants.
|
|
43
|
+
*/
|
|
44
|
+
export type MapNodeKind = "module" | "package" | "file";
|
|
45
|
+
/**
|
|
46
|
+
* How strongly a recorded session is bound to a change.
|
|
47
|
+
* pkg/schema/map_api.go — ChangeBinding constants.
|
|
48
|
+
*/
|
|
49
|
+
export type ChangeBinding = "bound" | "candidate";
|
|
50
|
+
/**
|
|
51
|
+
* Kind of structural violation on the map.
|
|
52
|
+
* pkg/schema/map_api.go — EdgeViolationKind constants.
|
|
53
|
+
*/
|
|
54
|
+
export type EdgeViolationKind = "cycle" | "wrong_way";
|
|
55
|
+
/**
|
|
56
|
+
* Per-file change status (branch vs merge-base). Git rename detection strips the
|
|
57
|
+
* similarity score, so "R100"/"R087" normalize to "R".
|
|
58
|
+
* Grounded in internal/gitops/repo.go — FileStatus{Modified,Added,Deleted,Renamed}
|
|
59
|
+
* ("M"/"A"/"D"/"R"); carried verbatim onto FileChange.Status / ChangeDiffPayload.Status
|
|
60
|
+
* in pkg/schema/map_api.go.
|
|
61
|
+
*/
|
|
62
|
+
export type FileChangeStatus = "M" | "A" | "D" | "R";
|
|
63
|
+
/**
|
|
64
|
+
* Classification of one line within a unified-diff hunk.
|
|
65
|
+
* Grounded in internal/gitops/repo.go — DiffLine{Context,Added,Removed}
|
|
66
|
+
* ("context"/"add"/"del"); carried onto DiffLine.Kind in pkg/schema/map_api.go.
|
|
67
|
+
*/
|
|
68
|
+
export type DiffLineKind = "context" | "add" | "del";
|
|
69
|
+
/**
|
|
70
|
+
* Lightweight commit reference used in the time strip and unrecorded commits.
|
|
71
|
+
* Mirrors CommitRef from pkg/schema/map_api.go.
|
|
72
|
+
*/
|
|
73
|
+
export type CommitRefPayload = {
|
|
74
|
+
/**
|
|
75
|
+
* commit SHA
|
|
76
|
+
*/
|
|
77
|
+
hash: string;
|
|
78
|
+
/**
|
|
79
|
+
* first line of the commit message
|
|
80
|
+
*/
|
|
81
|
+
subject: string;
|
|
82
|
+
/**
|
|
83
|
+
* committer date, Unix millis; absent when unknown
|
|
84
|
+
*/
|
|
85
|
+
timeMs?: number | null;
|
|
86
|
+
/**
|
|
87
|
+
* true when a recorded session is bound to this commit
|
|
88
|
+
*/
|
|
89
|
+
hasSession: boolean;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* A structure (import) dependency edge between two map nodes.
|
|
93
|
+
* Mirrors MapEdge from pkg/schema/map_api.go.
|
|
94
|
+
*/
|
|
95
|
+
export type MapEdgePayload = {
|
|
96
|
+
/**
|
|
97
|
+
* source node ID (repo-relative path)
|
|
98
|
+
*/
|
|
99
|
+
from: string;
|
|
100
|
+
/**
|
|
101
|
+
* target node ID
|
|
102
|
+
*/
|
|
103
|
+
to: string;
|
|
104
|
+
/**
|
|
105
|
+
* underlying import count (aggregated)
|
|
106
|
+
*/
|
|
107
|
+
count: number;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* A co-edit (activity) observation edge: two nodes repeatedly edited by the
|
|
111
|
+
* same tasks. DISTINCT from MapEdgePayload — the count channel is `taskCount`
|
|
112
|
+
* (distinct tasks that edited both endpoints), NOT the import `count`.
|
|
113
|
+
* Mirrors ActivityEdge from pkg/schema/map_api.go.
|
|
114
|
+
*/
|
|
115
|
+
export type ActivityEdgePayload = {
|
|
116
|
+
/**
|
|
117
|
+
* source node ID
|
|
118
|
+
*/
|
|
119
|
+
from: string;
|
|
120
|
+
/**
|
|
121
|
+
* target node ID
|
|
122
|
+
*/
|
|
123
|
+
to: string;
|
|
124
|
+
/**
|
|
125
|
+
* distinct tasks that edited both endpoints
|
|
126
|
+
*/
|
|
127
|
+
taskCount: number;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* A structural violation — a cycle or wrong-way import — on the map.
|
|
131
|
+
* Mirrors EdgeViolation from pkg/schema/map_api.go.
|
|
132
|
+
*/
|
|
133
|
+
export type EdgeViolationPayload = {
|
|
134
|
+
kind: EdgeViolationKind;
|
|
135
|
+
/**
|
|
136
|
+
* source node ID
|
|
137
|
+
*/
|
|
138
|
+
from: string;
|
|
139
|
+
/**
|
|
140
|
+
* target node ID
|
|
141
|
+
*/
|
|
142
|
+
to: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* One node on the code map (module, package, or file). Topology-only: the
|
|
146
|
+
* lifted <CodeMap> component derives pixel positions from layer/order using
|
|
147
|
+
* layout.ts internally; consumers supply raw topology.
|
|
148
|
+
* Mirrors MapNode from pkg/schema/map_api.go (field-for-field).
|
|
149
|
+
*/
|
|
150
|
+
export type MapNodePayload = {
|
|
151
|
+
/**
|
|
152
|
+
* repo-relative path, e.g. "internal/ingest" or "web/src/lib/api.ts"
|
|
153
|
+
*/
|
|
154
|
+
id: string;
|
|
155
|
+
/**
|
|
156
|
+
* ID of parent node; absent for top-level modules
|
|
157
|
+
*/
|
|
158
|
+
parent?: string;
|
|
159
|
+
kind: MapNodeKind;
|
|
160
|
+
/**
|
|
161
|
+
* display leaf, e.g. "ingest"
|
|
162
|
+
*/
|
|
163
|
+
name: string;
|
|
164
|
+
/**
|
|
165
|
+
* e.g. "go" or "typescript"; absent for activity-only nodes
|
|
166
|
+
*/
|
|
167
|
+
language?: string;
|
|
168
|
+
/**
|
|
169
|
+
* 0 = top row; deterministic, server-assigned
|
|
170
|
+
*/
|
|
171
|
+
layer: number;
|
|
172
|
+
/**
|
|
173
|
+
* stable sort within layer; server-assigned
|
|
174
|
+
*/
|
|
175
|
+
order: number;
|
|
176
|
+
/**
|
|
177
|
+
* size metric (lines of code)
|
|
178
|
+
*/
|
|
179
|
+
loc: number;
|
|
180
|
+
/**
|
|
181
|
+
* 1 for file nodes
|
|
182
|
+
*/
|
|
183
|
+
fileCount: number;
|
|
184
|
+
/**
|
|
185
|
+
* files whose last edit traces to a recorded session
|
|
186
|
+
*/
|
|
187
|
+
recordedFiles: number;
|
|
188
|
+
totalFiles: number;
|
|
189
|
+
/**
|
|
190
|
+
* recorded edits in the activity window (activity size metric)
|
|
191
|
+
*/
|
|
192
|
+
touchCount: number;
|
|
193
|
+
/**
|
|
194
|
+
* 0..1 per-file re-edit/error density rollup (0 when unknown)
|
|
195
|
+
*/
|
|
196
|
+
effortDensity: number;
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* A scoped sub-map: the touched nodes plus their one-hop neighborhood, with
|
|
200
|
+
* layer/order preserved from the full map. Used inside ChangeDetailPayload.
|
|
201
|
+
* Mirrors MapSlice from pkg/schema/map_api.go.
|
|
202
|
+
*/
|
|
203
|
+
export type MapSlicePayload = {
|
|
204
|
+
/**
|
|
205
|
+
* topology-only; layer/order from the full map
|
|
206
|
+
*/
|
|
207
|
+
nodes: MapNodePayload[];
|
|
208
|
+
/**
|
|
209
|
+
* parsed import edges within the slice (count = import count)
|
|
210
|
+
*/
|
|
211
|
+
structureEdges: MapEdgePayload[];
|
|
212
|
+
/**
|
|
213
|
+
* co-edit observations within the slice (taskCount, NOT count)
|
|
214
|
+
*/
|
|
215
|
+
activityEdges: ActivityEdgePayload[];
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* One row in the Changes list: a local branch measured against the default
|
|
219
|
+
* branch. Graph anchors (baseHash/tipCommitMs/mergeCommitHash) tie this row
|
|
220
|
+
* to the time strip lane.
|
|
221
|
+
* Mirrors ChangeSummary from pkg/schema/map_api.go.
|
|
222
|
+
*/
|
|
223
|
+
export type ChangeSummaryPayload = {
|
|
224
|
+
branch: string;
|
|
225
|
+
/**
|
|
226
|
+
* commits ahead of the default branch
|
|
227
|
+
*/
|
|
228
|
+
aheadCount: number;
|
|
229
|
+
behindCount: number;
|
|
230
|
+
filesChanged: number;
|
|
231
|
+
/**
|
|
232
|
+
* recorded sessions bound to this change
|
|
233
|
+
*/
|
|
234
|
+
sessionCount: number;
|
|
235
|
+
/**
|
|
236
|
+
* distinct tasks across bound sessions
|
|
237
|
+
*/
|
|
238
|
+
taskCount: number;
|
|
239
|
+
/**
|
|
240
|
+
* new import edges introduced
|
|
241
|
+
*/
|
|
242
|
+
newEdges: number;
|
|
243
|
+
removedEdges: number;
|
|
244
|
+
/**
|
|
245
|
+
* count of structural violations introduced
|
|
246
|
+
*/
|
|
247
|
+
violations: number;
|
|
248
|
+
/**
|
|
249
|
+
* most-recent recorded-session activity, Unix millis
|
|
250
|
+
*/
|
|
251
|
+
lastWorkMs?: number | null;
|
|
252
|
+
merged: boolean;
|
|
253
|
+
mergedAtMs?: number | null;
|
|
254
|
+
/**
|
|
255
|
+
* true when this merged change was later git-reverted
|
|
256
|
+
*/
|
|
257
|
+
reverted?: boolean;
|
|
258
|
+
/**
|
|
259
|
+
* graph anchor: merge-base commit hash (fork point; open branches)
|
|
260
|
+
*/
|
|
261
|
+
baseHash?: string;
|
|
262
|
+
/**
|
|
263
|
+
* graph anchor: branch tip committer time (row position; open branches)
|
|
264
|
+
*/
|
|
265
|
+
tipCommitMs?: number | null;
|
|
266
|
+
/**
|
|
267
|
+
* graph anchor: merge commit hash (join point; merged rows)
|
|
268
|
+
*/
|
|
269
|
+
mergeCommitHash?: string;
|
|
270
|
+
};
|
|
271
|
+
/**
|
|
272
|
+
* The Changes surface prop payload. The adapter maps ReviewListPayload (CLEAN)
|
|
273
|
+
* onto this shape — field-for-field, no reshaping required.
|
|
274
|
+
*/
|
|
275
|
+
export type ChangesPayload = {
|
|
276
|
+
/**
|
|
277
|
+
* false when the project root is not a git repo
|
|
278
|
+
*/
|
|
279
|
+
repoFound: boolean;
|
|
280
|
+
defaultBranch?: string;
|
|
281
|
+
/**
|
|
282
|
+
* open branches first, then merged (reverse-chron within each)
|
|
283
|
+
*/
|
|
284
|
+
changes: ChangeSummaryPayload[];
|
|
285
|
+
/**
|
|
286
|
+
* default-branch commits for the time strip, cap 200
|
|
287
|
+
*/
|
|
288
|
+
recentCommits: CommitRefPayload[];
|
|
289
|
+
};
|
|
290
|
+
/**
|
|
291
|
+
* One task within a change's bound sessions.
|
|
292
|
+
* Mirrors TaskSummary from pkg/schema/map_api.go.
|
|
293
|
+
*/
|
|
294
|
+
export type TaskSummaryPayload = {
|
|
295
|
+
sessionId: string;
|
|
296
|
+
/**
|
|
297
|
+
* depth-0 user-turn index (task identity)
|
|
298
|
+
*/
|
|
299
|
+
entryIndex: number;
|
|
300
|
+
/**
|
|
301
|
+
* first ~80 chars of the user turn
|
|
302
|
+
*/
|
|
303
|
+
title: string;
|
|
304
|
+
/**
|
|
305
|
+
* task start, Unix millis
|
|
306
|
+
*/
|
|
307
|
+
startMs?: number | null;
|
|
308
|
+
/**
|
|
309
|
+
* session-level outcome string
|
|
310
|
+
*/
|
|
311
|
+
outcome?: string;
|
|
312
|
+
/**
|
|
313
|
+
* repo-relative paths touched by this task
|
|
314
|
+
*/
|
|
315
|
+
editedFiles: string[];
|
|
316
|
+
/**
|
|
317
|
+
* reads within this task's range
|
|
318
|
+
*/
|
|
319
|
+
readCount: number;
|
|
320
|
+
/**
|
|
321
|
+
* true when an error streak ≥2 occurs inside this task
|
|
322
|
+
*/
|
|
323
|
+
retryLoop: boolean;
|
|
324
|
+
/**
|
|
325
|
+
* effective auto/manual annotation values
|
|
326
|
+
*/
|
|
327
|
+
labels: string[];
|
|
328
|
+
};
|
|
329
|
+
/**
|
|
330
|
+
* One recorded session bound to a change, with its tasks.
|
|
331
|
+
* Mirrors ChangeSession from pkg/schema/map_api.go.
|
|
332
|
+
*/
|
|
333
|
+
export type ChangeSessionPayload = {
|
|
334
|
+
sessionId: string;
|
|
335
|
+
title: string;
|
|
336
|
+
harness: string;
|
|
337
|
+
startMs?: number | null;
|
|
338
|
+
/**
|
|
339
|
+
* "bound" = commit-in-branch AND file overlap; "candidate" = one arm only
|
|
340
|
+
*/
|
|
341
|
+
binding: ChangeBinding;
|
|
342
|
+
tasks: TaskSummaryPayload[];
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* One neutral rate-elevation observation: a metric that runs above the project
|
|
346
|
+
* baseline for this change. Factual, never a grade.
|
|
347
|
+
* Mirrors UnusualSignal from pkg/schema/map_api.go.
|
|
348
|
+
*/
|
|
349
|
+
export type UnusualSignalPayload = {
|
|
350
|
+
/**
|
|
351
|
+
* stable slug, e.g. "retryLoops"
|
|
352
|
+
*/
|
|
353
|
+
kind: string;
|
|
354
|
+
/**
|
|
355
|
+
* plain, neutral description
|
|
356
|
+
*/
|
|
357
|
+
label: string;
|
|
358
|
+
/**
|
|
359
|
+
* this change's per-conversation rate
|
|
360
|
+
*/
|
|
361
|
+
perChange: number;
|
|
362
|
+
/**
|
|
363
|
+
* project baseline rate
|
|
364
|
+
*/
|
|
365
|
+
perProject: number;
|
|
366
|
+
};
|
|
367
|
+
/**
|
|
368
|
+
* A neutral count of a recurring friction signal keyed to a file.
|
|
369
|
+
* Mirrors FrictionCluster from pkg/schema/map_api.go.
|
|
370
|
+
*/
|
|
371
|
+
export type FrictionClusterPayload = {
|
|
372
|
+
/**
|
|
373
|
+
* signal slug, e.g. "retryLoop"
|
|
374
|
+
*/
|
|
375
|
+
kind: string;
|
|
376
|
+
/**
|
|
377
|
+
* plain, neutral, e.g. "retry loops"
|
|
378
|
+
*/
|
|
379
|
+
label: string;
|
|
380
|
+
/**
|
|
381
|
+
* repo-relative path
|
|
382
|
+
*/
|
|
383
|
+
file: string;
|
|
384
|
+
/**
|
|
385
|
+
* occurrences (retry-loop tasks touching this file)
|
|
386
|
+
*/
|
|
387
|
+
count: number;
|
|
388
|
+
/**
|
|
389
|
+
* distinct conversations the occurrences span
|
|
390
|
+
*/
|
|
391
|
+
sessions: number;
|
|
392
|
+
};
|
|
393
|
+
/**
|
|
394
|
+
* One changed file within a branch (branch vs its merge-base).
|
|
395
|
+
* Mirrors FileChange from pkg/schema/map_api.go.
|
|
396
|
+
*/
|
|
397
|
+
export type FileChangePayload = {
|
|
398
|
+
path: string;
|
|
399
|
+
/**
|
|
400
|
+
* modified / added / deleted / renamed
|
|
401
|
+
*/
|
|
402
|
+
status: FileChangeStatus;
|
|
403
|
+
/**
|
|
404
|
+
* present for renames
|
|
405
|
+
*/
|
|
406
|
+
oldPath?: string | null;
|
|
407
|
+
/**
|
|
408
|
+
* 0 for binary files or when numstat is unavailable
|
|
409
|
+
*/
|
|
410
|
+
linesAdded: number;
|
|
411
|
+
linesRemoved: number;
|
|
412
|
+
};
|
|
413
|
+
/**
|
|
414
|
+
* The ChangeDetail surface prop payload. The adapter maps the wire
|
|
415
|
+
* ChangeDetailPayload (CLEAN) onto this shape — field-for-field.
|
|
416
|
+
* The lazy per-file diff (ChangeDiffPayload) is fetched separately and wired
|
|
417
|
+
* via a callback/slot on the ChangeDetail surface; it is NOT embedded here.
|
|
418
|
+
*/
|
|
419
|
+
export type ChangeDetailPayload = {
|
|
420
|
+
branch: string;
|
|
421
|
+
/**
|
|
422
|
+
* merge-base commit hash
|
|
423
|
+
*/
|
|
424
|
+
baseRef: string;
|
|
425
|
+
defaultBranch: string;
|
|
426
|
+
/**
|
|
427
|
+
* changed files (branch vs merge-base)
|
|
428
|
+
*/
|
|
429
|
+
files: FileChangePayload[];
|
|
430
|
+
/**
|
|
431
|
+
* touched nodes + 1-hop neighborhood
|
|
432
|
+
*/
|
|
433
|
+
slice: MapSlicePayload;
|
|
434
|
+
/**
|
|
435
|
+
* new import edges introduced
|
|
436
|
+
*/
|
|
437
|
+
newEdges: MapEdgePayload[];
|
|
438
|
+
removedEdges: MapEdgePayload[];
|
|
439
|
+
/**
|
|
440
|
+
* new node IDs
|
|
441
|
+
*/
|
|
442
|
+
newNodes: string[];
|
|
443
|
+
removedNodes: string[];
|
|
444
|
+
/**
|
|
445
|
+
* structural violations INTRODUCED by this change
|
|
446
|
+
*/
|
|
447
|
+
violations: EdgeViolationPayload[];
|
|
448
|
+
/**
|
|
449
|
+
* bound sessions, with tasks (each = one "conversation"; count = work.length)
|
|
450
|
+
*/
|
|
451
|
+
work: ChangeSessionPayload[];
|
|
452
|
+
/**
|
|
453
|
+
* commits on the branch with no recorded session
|
|
454
|
+
*/
|
|
455
|
+
unrecordedCommits: CommitRefPayload[];
|
|
456
|
+
/**
|
|
457
|
+
* neutral rate-elevation observations
|
|
458
|
+
*/
|
|
459
|
+
unusual: UnusualSignalPayload[];
|
|
460
|
+
/**
|
|
461
|
+
* neutral recurring-friction counts
|
|
462
|
+
*/
|
|
463
|
+
frictions: FrictionClusterPayload[];
|
|
464
|
+
/**
|
|
465
|
+
* authoritative changed-file count (from the matching ChangeSummary; files[] may be capped)
|
|
466
|
+
*/
|
|
467
|
+
filesChanged: number;
|
|
468
|
+
linesAdded: number;
|
|
469
|
+
linesRemoved: number;
|
|
470
|
+
/**
|
|
471
|
+
* SUM of output_tokens over bound sessions (the "ai wrote ≈N tokens" stat)
|
|
472
|
+
*/
|
|
473
|
+
outputTokens: number;
|
|
474
|
+
costUsd?: number | null;
|
|
475
|
+
};
|
|
476
|
+
/**
|
|
477
|
+
* One line within a diff hunk. `kind` uses the unified-diff convention.
|
|
478
|
+
* Mirrors DiffLine from pkg/schema/map_api.go.
|
|
479
|
+
*/
|
|
480
|
+
export type DiffLinePayload = {
|
|
481
|
+
/**
|
|
482
|
+
* context / add / del
|
|
483
|
+
*/
|
|
484
|
+
kind: DiffLineKind;
|
|
485
|
+
/**
|
|
486
|
+
* line text, WITHOUT the leading +/-/space marker
|
|
487
|
+
*/
|
|
488
|
+
text: string;
|
|
489
|
+
};
|
|
490
|
+
/**
|
|
491
|
+
* One unified-diff hunk (the `-old +new` range line). May carry conversation
|
|
492
|
+
* attribution when the hunk's added lines trace to a recorded session via git blame.
|
|
493
|
+
* Mirrors DiffHunk from pkg/schema/map_api.go.
|
|
494
|
+
*/
|
|
495
|
+
export type DiffHunkPayload = {
|
|
496
|
+
oldStart: number;
|
|
497
|
+
oldLines: number;
|
|
498
|
+
newStart: number;
|
|
499
|
+
newLines: number;
|
|
500
|
+
/**
|
|
501
|
+
* hunk range header line, when present
|
|
502
|
+
*/
|
|
503
|
+
header?: string;
|
|
504
|
+
lines: DiffLinePayload[];
|
|
505
|
+
/**
|
|
506
|
+
* conversation attribution: recorded session that wrote most of the hunk's new lines
|
|
507
|
+
*/
|
|
508
|
+
sessionId?: string;
|
|
509
|
+
sessionTitle?: string;
|
|
510
|
+
};
|
|
511
|
+
/**
|
|
512
|
+
* The lazy per-file diff payload — fetched on demand when the user opens a
|
|
513
|
+
* file's diff inside the ChangeDetail surface. Adapter maps the wire
|
|
514
|
+
* ChangeDiffPayload (CLEAN) onto this shape — field-for-field.
|
|
515
|
+
*/
|
|
516
|
+
export type ChangeDiffPayload = {
|
|
517
|
+
branch: string;
|
|
518
|
+
/**
|
|
519
|
+
* the new (or only) file path
|
|
520
|
+
*/
|
|
521
|
+
file: string;
|
|
522
|
+
/**
|
|
523
|
+
* present for renames
|
|
524
|
+
*/
|
|
525
|
+
oldPath?: string | null;
|
|
526
|
+
/**
|
|
527
|
+
* modified / added / deleted / renamed
|
|
528
|
+
*/
|
|
529
|
+
status: FileChangeStatus;
|
|
530
|
+
/**
|
|
531
|
+
* true for binary files (no hunks)
|
|
532
|
+
*/
|
|
533
|
+
binary: boolean;
|
|
534
|
+
/**
|
|
535
|
+
* true when the file exceeds the size cap
|
|
536
|
+
*/
|
|
537
|
+
truncated: boolean;
|
|
538
|
+
hunks: DiffHunkPayload[];
|
|
539
|
+
/**
|
|
540
|
+
* HOST-SIDE error sentinel — NOT a wire field. The adapter
|
|
541
|
+
* must never map this from the REST payload; the host sets it
|
|
542
|
+
* (with empty `hunks`) when its lazy diff fetch FAILED, so the
|
|
543
|
+
* surface renders an error row instead of a perpetual spinner.
|
|
544
|
+
*/
|
|
545
|
+
error?: string;
|
|
546
|
+
};
|
|
547
|
+
/**
|
|
548
|
+
* The CodeMap surface prop payload. The adapter maps MapGraphPayload
|
|
549
|
+
* (TRANSFORM) onto this shape: topology passes through field-for-field via
|
|
550
|
+
* mapGraphToData() (web/src/app/map/lib/mapData.ts); the lifted <CodeMap>
|
|
551
|
+
* component derives pixel geometry (x/y + width) from layer/order internally
|
|
552
|
+
* using layout.ts — geometry is NOT a field in this payload.
|
|
553
|
+
*
|
|
554
|
+
* activityEdges are excluded here: they feed the node-detail rail's
|
|
555
|
+
* "often edited with" rows, not the canvas. The surface slice wires them
|
|
556
|
+
* separately as a node-detail prop.
|
|
557
|
+
*
|
|
558
|
+
* Interaction-parity props (onExpand, highlightedIds, zoom, onZoomChange,
|
|
559
|
+
* Review changed-slice overlays, effort overlay, keyboard) are component-level
|
|
560
|
+
* props defined in the surface slice, not data fields in this payload.
|
|
561
|
+
*/
|
|
562
|
+
export type CodeMapPayload = {
|
|
563
|
+
/**
|
|
564
|
+
* false when the project root is not a git repo; the component degrades to activity-only
|
|
565
|
+
*/
|
|
566
|
+
repoFound: boolean;
|
|
567
|
+
/**
|
|
568
|
+
* topology nodes for all zoom levels; parent links form the tree
|
|
569
|
+
*/
|
|
570
|
+
nodes: MapNodePayload[];
|
|
571
|
+
/**
|
|
572
|
+
* parsed import edges (aggregated per node pair)
|
|
573
|
+
*/
|
|
574
|
+
structureEdges: MapEdgePayload[];
|
|
575
|
+
/**
|
|
576
|
+
* structural violations (cycles + wrong-way imports)
|
|
577
|
+
*/
|
|
578
|
+
violations: EdgeViolationPayload[];
|
|
579
|
+
};
|
|
@@ -21,6 +21,8 @@ export { default as GroupedMultiSelect } from "./GroupedMultiSelect.jsx";
|
|
|
21
21
|
export { default as ToolCallRenderer } from "./ToolRenderers.jsx";
|
|
22
22
|
export { default as Tour } from "./Tour.jsx";
|
|
23
23
|
export { default as FacetRail } from "./FacetRail.jsx";
|
|
24
|
+
export * from "./transcript/index.js";
|
|
25
|
+
export * from "./transcript/graph/index.js";
|
|
24
26
|
export { default as Button, ButtonGroup, Segmented } from "./Button.jsx";
|
|
25
27
|
export { default as Input, Textarea, Select, Field } from "./Input.jsx";
|
|
26
28
|
export { default as Checkbox, Radio, RadioGroup } from "./Checkbox.jsx";
|
|
@@ -51,3 +53,4 @@ export { default as SignInProviders, HandleClaim, OnboardingCard } from "./SignI
|
|
|
51
53
|
export { default as CliSteps, CommandBlock, GettingStarted } from "./CliOnboard.jsx";
|
|
52
54
|
export { StatTile, StatGrid, GovTile, ProviderBars } from "./StatTiles.jsx";
|
|
53
55
|
export { default as VisibilitySegmented, VisibilityEye, ScopeChip, FocusedModeToggle } from "./VisibilityControl.jsx";
|
|
56
|
+
export { default as InUseShell, GraphAppShell, GraphSectionNav, IN_USE_APPS, GRAPH_APP_SECTIONS } from "./inuse/InUseShell.jsx";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export default function InUseShell({ apps, defaultApp, activeApp, onAppChange, renderApp, brand, ariaLabel, }: {
|
|
2
|
+
apps?: readonly {
|
|
3
|
+
id: string;
|
|
4
|
+
mark: string;
|
|
5
|
+
icon: react.ForwardRefExoticComponent<any>;
|
|
6
|
+
}[];
|
|
7
|
+
defaultApp: any;
|
|
8
|
+
activeApp: any;
|
|
9
|
+
onAppChange: any;
|
|
10
|
+
renderApp: any;
|
|
11
|
+
brand?: string;
|
|
12
|
+
ariaLabel?: string;
|
|
13
|
+
}): any;
|
|
14
|
+
export function GraphAppShell({ sections, activeId, activePrimaryId, onSectionChange, backTo, onBack, children, ariaLabel, }: {
|
|
15
|
+
sections?: readonly {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
19
|
+
activeId: any;
|
|
20
|
+
activePrimaryId: any;
|
|
21
|
+
onSectionChange: any;
|
|
22
|
+
backTo: any;
|
|
23
|
+
onBack: any;
|
|
24
|
+
children: any;
|
|
25
|
+
ariaLabel?: string;
|
|
26
|
+
}): any;
|
|
27
|
+
export function GraphSectionNav({ sections, activeId, hrefFor, LinkComponent, onSectionChange, className, itemClassName, activeItemClassName, activeMarker, ariaLabel, }: {
|
|
28
|
+
sections?: readonly {
|
|
29
|
+
id: string;
|
|
30
|
+
label: string;
|
|
31
|
+
}[];
|
|
32
|
+
activeId?: any;
|
|
33
|
+
hrefFor?: any;
|
|
34
|
+
LinkComponent?: any;
|
|
35
|
+
onSectionChange?: any;
|
|
36
|
+
className?: string;
|
|
37
|
+
itemClassName?: string;
|
|
38
|
+
activeItemClassName?: string;
|
|
39
|
+
activeMarker?: any;
|
|
40
|
+
ariaLabel?: string;
|
|
41
|
+
}): any;
|
|
42
|
+
export const IN_USE_APPS: readonly {
|
|
43
|
+
id: string;
|
|
44
|
+
mark: string;
|
|
45
|
+
icon: react.ForwardRefExoticComponent<any>;
|
|
46
|
+
}[];
|
|
47
|
+
export const GRAPH_APP_SECTIONS: readonly {
|
|
48
|
+
id: string;
|
|
49
|
+
label: string;
|
|
50
|
+
}[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} props
|
|
3
|
+
* @param {boolean} [props.checked]
|
|
4
|
+
* @param {Function} [props.onChange] fired with the native change event
|
|
5
|
+
* @param {*} [props.children] the row label (text, or icon + text)
|
|
6
|
+
* @param {number} [props.count] optional trailing match count
|
|
7
|
+
* @param {boolean} [props.disabled]
|
|
8
|
+
*/
|
|
9
|
+
export default function CheckRow({ checked, onChange, children, count, disabled }: {
|
|
10
|
+
checked?: boolean;
|
|
11
|
+
onChange?: Function;
|
|
12
|
+
children?: any;
|
|
13
|
+
count?: number;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}): any;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** @typedef {import('./view-model.js').DiffEntryVM} DiffEntryVM */
|
|
2
|
+
/** @typedef {import('./view-model.js').DiffHunkVM} DiffHunkVM */
|
|
3
|
+
/**
|
|
4
|
+
* Render cooked diff hunks as the canonical `.txn-diff` rows. The mockup draws a single
|
|
5
|
+
* `.diff` block per change, so hunks are flattened into one row list; each hunk's trailing
|
|
6
|
+
* empty line (the LCS newline artifact) is trimmed first.
|
|
7
|
+
* @param {object} props
|
|
8
|
+
* @param {DiffHunkVM[]} [props.hunks]
|
|
9
|
+
*/
|
|
10
|
+
export function DiffHunks({ hunks }: {
|
|
11
|
+
hunks?: DiffHunkVM[];
|
|
12
|
+
}): any;
|
|
13
|
+
/**
|
|
14
|
+
* One Diffs-tab card: a file/turn label, the +adds/−dels churn, a jump affordance, and the
|
|
15
|
+
* rendered diff hunks. Consumes a cooked `DiffEntryVM` (an entry of `vm.diffs`).
|
|
16
|
+
* @param {object} props
|
|
17
|
+
* @param {DiffEntryVM} [props.entry]
|
|
18
|
+
* @param {boolean} [props.byTurn] label by turn index instead of file path
|
|
19
|
+
* @param {() => void} [props.onJump]
|
|
20
|
+
*/
|
|
21
|
+
export default function DiffEntryCard({ entry, byTurn, onJump }: {
|
|
22
|
+
entry?: DiffEntryVM;
|
|
23
|
+
byTurn?: boolean;
|
|
24
|
+
onJump?: () => void;
|
|
25
|
+
}): any;
|
|
26
|
+
export type DiffEntryVM = import("./view-model.js").DiffEntryVM;
|
|
27
|
+
export type DiffHunkVM = import("./view-model.js").DiffHunkVM;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {object} props
|
|
3
|
+
* @param {*} [props.title] the section heading (lowercase chrome)
|
|
4
|
+
* @param {*} [props.children] the section body (rows)
|
|
5
|
+
* @param {boolean} [props.defaultOpen]
|
|
6
|
+
*/
|
|
7
|
+
export default function FilterSection({ title, children, defaultOpen }: {
|
|
8
|
+
title?: any;
|
|
9
|
+
children?: any;
|
|
10
|
+
defaultOpen?: boolean;
|
|
11
|
+
}): any;
|