@crossworks/client-types 0.232.306 → 0.232.308

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crossworks/client-types",
3
- "version": "0.232.306",
3
+ "version": "0.232.308",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
package/src/dto/member.ts CHANGED
@@ -79,16 +79,21 @@ export type MemberChatMessage = {
79
79
  /** GET /api/member/chat. `agent` null = chat not open yet (no team-level agent). */
80
80
  export type MemberChatThread = {
81
81
  agent: { slug: string; name: string } | null;
82
- /** false = this login is not linked to a team contact, so it cannot send
83
- * (POST answers 409). Absent from brains before 0.232.260. */
84
- linked?: boolean;
85
82
  messages: MemberChatMessage[];
86
83
  };
87
84
 
88
85
  // ── Personal spaces (member logins Phase 2) ──────────────────────────────
89
86
 
90
87
  export type MemberSpaceSharing = 'private' | 'team';
91
- export type MemberReviewState = 'draft' | 'submitted' | 'returned' | 'accepted';
88
+ /** A personal item's review state as the brain stores it. `taken` (brains
89
+ * from the take-over release, migration 0183): an admin took the submitted
90
+ * item into their own private space; only admin rows carry it. */
91
+ export type MemberReviewState = 'draft' | 'submitted' | 'returned' | 'accepted' | 'taken';
92
+
93
+ /** A row's state in a list: the stored state, or `with-admin` on the
94
+ * MEMBER's own list for an item an admin took over (title and kind only:
95
+ * opening it answers 409 `with-admin`). */
96
+ export type MemberSpaceItemState = MemberReviewState | 'with-admin';
92
97
 
93
98
  /** One item of a personal space: GET /api/member/space[/team] rows. */
94
99
  export type MemberSpaceItemRow = {
@@ -97,7 +102,7 @@ export type MemberSpaceItemRow = {
97
102
  title: string;
98
103
  icon: string | null;
99
104
  sharing: MemberSpaceSharing;
100
- reviewState: MemberReviewState;
105
+ reviewState: MemberSpaceItemState;
101
106
  submittedAt: string | null;
102
107
  returnedNote: string | null;
103
108
  /** The login that wrote it (team drafts show whose it is). */
@@ -105,7 +110,12 @@ export type MemberSpaceItemRow = {
105
110
  updatedAt: string;
106
111
  };
107
112
 
108
- /** GET /api/member/space?kind=&q=&page= (and /space/team) */
113
+ /**
114
+ * GET /api/member/space?kind=&q=&review=&page= (and /space/team). On the
115
+ * member's own list, page 1 also carries the member's items an admin has
116
+ * taken over (reviewState `with-admin`, before the own rows; `total` counts
117
+ * them), unless `review=` names states without `with-admin`.
118
+ */
109
119
  export type MemberSpaceList = {
110
120
  items: MemberSpaceItemRow[];
111
121
  total: number;
@@ -113,6 +123,58 @@ export type MemberSpaceList = {
113
123
  pageSize: number;
114
124
  };
115
125
 
126
+ // ── An admin's private space and Take over (audit F07) ──────────────────
127
+
128
+ /** Who wrote an item an admin took over from the Review queue. */
129
+ export type AdminTakenFrom = {
130
+ /** The member login; null once that login is deleted. */
131
+ loginId: string | null;
132
+ /** Display name, else the email's local part; "Removed member" once the
133
+ * login is deleted. */
134
+ name: string;
135
+ /** False when the member is deactivated, deleted or no longer a member:
136
+ * give-back is refused (409 `author-inactive`), accept or delete it. */
137
+ canGiveBack: boolean;
138
+ takenAt: string | null;
139
+ };
140
+
141
+ /** One row of GET /api/admin/space: a member row, plus who wrote it when
142
+ * the admin took it over (reviewState `taken`), else null. */
143
+ export type AdminSpaceItemRow = MemberSpaceItemRow & { takenFrom: AdminTakenFrom | null };
144
+
145
+ /** GET /api/admin/space?kind=&q=&review=&page= */
146
+ export type AdminSpaceList = {
147
+ items: AdminSpaceItemRow[];
148
+ total: number;
149
+ page: number;
150
+ pageSize: number;
151
+ };
152
+
153
+ /** GET /api/admin/space/:id (and the PATCH answer). */
154
+ export type AdminSpaceItem<TDoc = unknown, TTable = unknown> = {
155
+ row: AdminSpaceItemRow;
156
+ body: MemberSpaceItemBody<TDoc, TTable>;
157
+ };
158
+
159
+ /** An item that moved with a Take over or a Give back. */
160
+ export type MovedSpaceItem = { id: string; type: MemberItemKind; title: string };
161
+
162
+ /** POST /api/team-admin/submissions/:id/take-over -> 200 */
163
+ export type TakeOverResult = {
164
+ /** The taken item: now in the acting admin's private space, same id. */
165
+ id: string;
166
+ /** It and its bundle, in bundle order. */
167
+ moved: MovedSpaceItem[];
168
+ };
169
+
170
+ /** POST /api/admin/space/:id/give-back { note } -> 200 */
171
+ export type GiveBackResult = {
172
+ id: string;
173
+ /** Back in the member's space: the item `returned` with the note, the rest
174
+ * of what was taken with it as drafts. */
175
+ returned: MovedSpaceItem[];
176
+ };
177
+
116
178
  /** A space file's metadata; the bytes stream from the item's bytes route. */
117
179
  export type MemberSpaceFile = {
118
180
  id: string;
@@ -164,17 +226,22 @@ export type MemberAcceptedPage = {
164
226
  pageSize: number;
165
227
  };
166
228
 
167
- /** GET /api/member/accepted/:id -> { item }: the SAVED version, whatever its
168
- * level; a drawing shows from /api/member/draws/:id/svg, a file's bytes
169
- * from /api/member/files/:id. */
229
+ /** GET /api/member/accepted/:id -> { item }: the version ACCEPTED (the
230
+ * snapshot taken at Accept, brains from the take-over release; never the
231
+ * brain's current version), whatever its level. A drawing shows from
232
+ * /api/member/draws/:id/svg, a file's bytes from /api/member/files/:id.
233
+ * `changedByAdmin: true`: an admin changed the file (or a drawing with no
234
+ * saved picture) since, so its bytes are not served any more; the metadata
235
+ * is what was accepted. */
170
236
  export type MemberAcceptedItem =
171
237
  | (MemberAcceptedRow & { type: 'page'; doc: unknown })
172
238
  | (MemberAcceptedRow & { type: 'note'; content: string })
173
239
  | (MemberAcceptedRow & { type: 'table'; table: unknown })
174
- | (MemberAcceptedRow & { type: 'draw' })
240
+ | (MemberAcceptedRow & { type: 'draw'; changedByAdmin?: boolean })
175
241
  | (MemberAcceptedRow & {
176
242
  type: 'file';
177
243
  filename: string;
178
244
  mimeType: string | null;
179
245
  sizeBytes: number | null;
246
+ changedByAdmin?: boolean;
180
247
  });
package/src/dto/rows.ts CHANGED
@@ -547,9 +547,13 @@ export type TeamRequest = {
547
547
  status: 'open' | 'done';
548
548
  priority: string;
549
549
  createdAt: string;
550
- /** Provenance from data.teamRequest — null contactId means a malformed row
551
- * (shouldn't happen; team_request_create always stamps it). */
550
+ /** Provenance from data.teamRequest. A member LOGIN's request (the only
551
+ * kind filed since the team-code portal retired) has `loginId` set and
552
+ * `contactId` null; a request from the old portal has a contact and no
553
+ * login. Reply and "View their chat" apply when either is set. */
552
554
  contactId: string | null;
555
+ /** The member login that filed it; null on a portal-era request. */
556
+ loginId: string | null;
553
557
  contactName: string | null;
554
558
  /** When the owner last posted a resolution to the member for this request. */
555
559
  notifiedAt: string | null;
package/src/index.ts CHANGED
@@ -42,6 +42,13 @@ export type {
42
42
  MemberItemAuthor,
43
43
  } from './dto/access';
44
44
  export type {
45
+ AdminSpaceItem,
46
+ AdminSpaceItemRow,
47
+ AdminSpaceList,
48
+ AdminTakenFrom,
49
+ GiveBackResult,
50
+ MovedSpaceItem,
51
+ TakeOverResult,
45
52
  MemberAcceptedItem,
46
53
  MemberAcceptedPage,
47
54
  MemberAcceptedRow,
@@ -57,6 +64,7 @@ export type {
57
64
  MemberSpaceItem,
58
65
  MemberSpaceItemBody,
59
66
  MemberSpaceItemRow,
67
+ MemberSpaceItemState,
60
68
  MemberSpaceList,
61
69
  MemberSpaceSharing,
62
70
  } from './dto/member';