@tinyweb_dev/tracking-mcp-server 0.1.0 → 0.2.1

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 (39) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +27 -11
  3. package/dist/schemas/common.d.ts +21 -0
  4. package/dist/schemas/common.d.ts.map +1 -1
  5. package/dist/schemas/common.js +28 -0
  6. package/dist/schemas/common.js.map +1 -1
  7. package/dist/schemas/index.d.ts +1 -0
  8. package/dist/schemas/index.d.ts.map +1 -1
  9. package/dist/schemas/index.js +1 -0
  10. package/dist/schemas/index.js.map +1 -1
  11. package/dist/schemas/invitation.js +2 -2
  12. package/dist/schemas/invitation.js.map +1 -1
  13. package/dist/schemas/organization.js +2 -2
  14. package/dist/schemas/organization.js.map +1 -1
  15. package/dist/schemas/project.d.ts +10 -0
  16. package/dist/schemas/project.d.ts.map +1 -1
  17. package/dist/schemas/project.js +9 -3
  18. package/dist/schemas/project.js.map +1 -1
  19. package/dist/schemas/service.d.ts +73 -0
  20. package/dist/schemas/service.d.ts.map +1 -0
  21. package/dist/schemas/service.js +50 -0
  22. package/dist/schemas/service.js.map +1 -0
  23. package/dist/tools/index.d.ts.map +1 -1
  24. package/dist/tools/index.js +4 -2
  25. package/dist/tools/index.js.map +1 -1
  26. package/dist/tools/invitations.js +4 -4
  27. package/dist/tools/invitations.js.map +1 -1
  28. package/dist/tools/organizations.d.ts.map +1 -1
  29. package/dist/tools/organizations.js +5 -4
  30. package/dist/tools/organizations.js.map +1 -1
  31. package/dist/tools/projects.d.ts +5 -5
  32. package/dist/tools/projects.d.ts.map +1 -1
  33. package/dist/tools/projects.js +9 -56
  34. package/dist/tools/projects.js.map +1 -1
  35. package/dist/tools/services.d.ts +20 -0
  36. package/dist/tools/services.d.ts.map +1 -0
  37. package/dist/tools/services.js +148 -0
  38. package/dist/tools/services.js.map +1 -0
  39. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,100 @@ All notable changes to `@tinyweb_dev/tracking-mcp-server` will be documented in
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.1] — 2026-05-27
9
+
10
+ ### Fixed
11
+
12
+ - **`project_add_member`, `project_update_member_role`, `project_remove_member`,
13
+ `org_update_member_role`, `org_remove_member` no longer require `user_id` /
14
+ `userId` to be a UUID.** The backend's `user` table uses Better-Auth's text
15
+ PK (e.g. `CQZpWvRcgTq1n8uHBiSz0Kg0NKUcTVzA`), so the previous
16
+ `z.string().uuid()` validation rejected real user IDs returned by
17
+ `org_list_members` and forced agents to fall back to the dashboard UI.
18
+ Schemas now use a new `userIdSchema` (non-empty, ≤128 chars, charset
19
+ `[A-Za-z0-9_-]`) — backward compatible with UUID values.
20
+ - **`invitation_resend`, `invitation_revoke` no longer require
21
+ `invitation_id` to be a UUID.** The backend's `invitation` table also uses
22
+ a Better-Auth text PK. Schemas now use `invitationIdSchema` (same shape as
23
+ `userIdSchema`).
24
+ - **`invitationSchema.id`, `orgMemberSchema.userId`, `projectMemberSchema.userId`,
25
+ `addProjectMemberSchema.userId`** updated to the new non-UUID id schemas so
26
+ response parsing matches request validation. `pendingProjectId` (which
27
+ references a project — UUID PK) remains UUID-validated.
28
+
29
+ ### Added
30
+
31
+ - `userIdSchema`, `invitationIdSchema`, `textIdSchema` exports in
32
+ `src/schemas/common.ts` for member / invitation identifiers stored as
33
+ Better-Auth text PKs.
34
+
35
+ See task `.manager/tasks/archive/0005-update-mcp-tiny-tracking-add-member-supports-non-uuid-user-i.md`.
36
+
37
+ ## [0.2.0] — 2026-05-27
38
+
39
+ Per-service ingest tokens. Realigns the MCP surface with the backend's new
40
+ `services` model where each project owns one or more services, and each
41
+ service has its own `tt_svc_…` ingest API key (replacing the previous
42
+ project-level key).
43
+
44
+ ### Breaking
45
+
46
+ - **Removed 3 project-level API-key tools.** Agents currently calling these
47
+ must migrate to the new `service_*` tools below; the corresponding backend
48
+ routes (`GET /api/projects/:id/api-key`, `GET /api/projects/:id/api-key/reveal`,
49
+ `POST /api/projects/:id/regenerate-key`) were deleted server-side and now
50
+ return 404. There is **no legacy fallback** (the product is still
51
+ pre-golive on the dashboard side).
52
+ - `project_get_api_key_prefix`
53
+ - `project_reveal_api_key`
54
+ - `project_regenerate_api_key`
55
+ - **`project_create` response shape changed.** Returns the plaintext key of
56
+ the auto-provisioned default service in `apiKey`, plus new fields
57
+ `defaultServiceId` and `apiKeyPrefix`. Same one-time-only semantics.
58
+
59
+ ### Added
60
+
61
+ - **7 new `service_*` tools** wrapping `/api/projects/:id/services` and
62
+ `/api/projects/:id/services/:serviceId/...`:
63
+ - `service_list` — list services in a project (with `apiKeyPrefix`,
64
+ `isDefault`)
65
+ - `service_get` — fetch one service
66
+ - `service_create` — create a service; response includes the plaintext
67
+ `apiKey` exactly once (admin only)
68
+ - `service_update` — patch `name` / `language` (admin only)
69
+ - `service_reveal_api_key` 🔐 — reveal full plaintext key (admin only)
70
+ - `service_regenerate_api_key` 🔴 — rotate key, requires
71
+ `confirm_service_id` (admin only)
72
+ - `service_delete` 🔴 — delete a service, requires `confirm_service_id`
73
+ (admin only; the project's default service cannot be deleted)
74
+ - **New `service` zod schema module** (`createServiceSchema`,
75
+ `updateServiceSchema`, `serviceSchema`, `serviceLanguageSchema`).
76
+
77
+ ### Changed
78
+
79
+ - Tool count: **62 → 66** across **9** resource groups (services is the
80
+ new ninth group). The integration-bootstrap test matrix and README tables
81
+ were updated to match.
82
+ - `project_create` description now explains the auto-provisioned default
83
+ service and the one-time `apiKey` payload.
84
+ - README "Bảo mật & confirmation pattern" table refreshed: replaced
85
+ `project_regenerate_api_key` with `service_regenerate_api_key` and
86
+ `service_delete`.
87
+
88
+ ### Engineering
89
+
90
+ - **+11 unit tests** in [`test/tools-services.test.ts`](test/tools-services.test.ts:1)
91
+ covering each new tool, both confirmation flows, and registration count.
92
+ - Total test count: **219 → 230** passing across 18 test files.
93
+
94
+ ### Backend dependencies (required server-side, shipped in the same release)
95
+
96
+ This MCP release **requires** a backend build that contains task 0004's
97
+ schema changes (new `services` table; `error_groups`/`error_occurrences`
98
+ gain a non-nullable `serviceId` column; project-level `apiKey*` columns
99
+ dropped). Pointing this MCP server at an older backend will produce 404s
100
+ on the new `service_*` routes.
101
+
8
102
  ## [0.1.0] — 2026-05-26
9
103
 
10
104
  Initial public release.
package/README.md CHANGED
@@ -178,23 +178,36 @@ Tổng **62 tools** chia theo 8 resource groups. Naming convention: `<resource>_
178
178
  | `org_update_member_role` | Đổi role (owner/member/viewer) |
179
179
  | `org_remove_member` | 🔴 Remove user khỏi org (yêu cầu `confirm_user_id`) |
180
180
 
181
- ### Projects (12 tools)
181
+ ### Projects (9 tools)
182
182
 
183
183
  | Tool | Mô tả |
184
184
  |---|---|
185
185
  | `project_list` | List projects trong 1 org |
186
- | `project_create` | Tạo project mới (trả về API key) |
186
+ | `project_create` | Tạo project mới (auto-tạo default service + trả về `apiKey` của service đó 1 lần duy nhất) |
187
187
  | `project_get` | Lấy chi tiết project |
188
188
  | `project_update` | Update project |
189
189
  | `project_delete` | 🔴 Xóa project + monitors + errors (yêu cầu `confirm_name`) |
190
- | `project_get_api_key_prefix` | Lấy prefix API key (an toàn share) |
191
- | `project_reveal_api_key` | 🔐 Reveal full API key (admin only) |
192
- | `project_regenerate_api_key` | 🔴 Rotate API key — invalidate key cũ |
193
190
  | `project_list_members` | List members + roles |
194
191
  | `project_add_member` | Thêm user vào project |
195
192
  | `project_update_member_role` | Đổi role (admin/editor/viewer) |
196
193
  | `project_remove_member` | 🔴 Remove member |
197
194
 
195
+ > API key cấp **project** đã được thay thế bằng API key cấp **service** — xem nhóm `service_*` bên dưới.
196
+
197
+ ### Services (7 tools)
198
+
199
+ Mỗi project sở hữu 1 hoặc nhiều service (`backend`, `frontend`, `mobile`,…), mỗi service có 1 ingest API key dạng `tt_svc_…` riêng. Errors được attribute theo service và key có thể rotate độc lập per-runtime.
200
+
201
+ | Tool | Mô tả |
202
+ |---|---|
203
+ | `service_list` | List services trong project (kèm `apiKeyPrefix`, `isDefault`) |
204
+ | `service_get` | Lấy chi tiết 1 service |
205
+ | `service_create` | Tạo service mới (trả về `apiKey` plaintext 1 lần duy nhất) — admin only |
206
+ | `service_update` | Update tên / language hint — admin only |
207
+ | `service_reveal_api_key` | 🔐 Reveal full API key (admin only) |
208
+ | `service_regenerate_api_key` | 🔴 Rotate key (yêu cầu `confirm_service_id`) — admin only |
209
+ | `service_delete` | 🔴 Xóa service (yêu cầu `confirm_service_id`, không xóa được default service) — admin only |
210
+
198
211
  ### Monitors (7 tools)
199
212
 
200
213
  | Tool | Mô tả |
@@ -310,22 +323,25 @@ Các tool xóa/rotate/revoke đều yêu cầu một field xác nhận matching
310
323
  |---|---|---|
311
324
  | `org_delete` | `confirm_slug` | Org slug |
312
325
  | `project_delete` | `confirm_name` | Project name |
313
- | `project_regenerate_api_key` | `confirm_project_id` | Project UUID |
314
- | `project_remove_member` | `confirm_user_id` | User UUID |
326
+ | `project_remove_member` | `confirm_user_id` | User ID (text PK) |
327
+ | `service_regenerate_api_key` | `confirm_service_id` | Service UUID |
328
+ | `service_delete` | `confirm_service_id` | Service UUID |
315
329
  | `monitor_delete` | `confirm_name` | Monitor name |
316
330
  | `status_page_delete` | `confirm_slug` | Status page slug |
317
331
  | `status_page_delete_component` | `confirm_component_id` | Component UUID |
318
332
  | `recipient_group_delete` | `confirm_group_id` | Group UUID |
319
- | `invitation_revoke` | `confirm_invitation_id` | Invitation UUID |
320
- | `org_remove_member` | `confirm_user_id` | User UUID |
333
+ | `invitation_revoke` | `confirm_invitation_id` | Invitation ID (text PK) |
334
+ | `org_remove_member` | `confirm_user_id` | User ID (text PK) |
335
+
336
+ Pattern này đảm bảo agent phải explicitly "repeat back" identifier — phòng case prompt injection hoặc nhầm lẫn ID.
321
337
 
322
- Pattern này đảm bảo agent phải explicitly "repeat back" identifierphòng case prompt injection hoặc nhầm lẫn UUID.
338
+ > **Note**: `user_id` `invitation_id` là **text identifier** do Better-Auth sinh (ví dụ `CQZpWvRcgTq1n8uHBiSz0Kg0NKUcTVzA`), không phải UUID. Lấy đúng giá trị từ `org_list_members` / `project_list_members` / `invitation_list` và truyền nguyên bản schema không enforce UUID format cho các field này.
323
339
 
324
340
  ### Secrets
325
341
 
326
342
  - `TT_API_KEY` **không bao giờ** được hard-code vào file commit. Luôn đọc từ env hoặc MCP client config.
327
343
  - Logger tự động redact các field nhạy cảm: `authorization`, `apiKey`, `token`, `password`, `secret`.
328
- - `project_reveal_api_key` trả full key — đừng share log của tool call này.
344
+ - `service_reveal_api_key` và `service_create` trả full key plaintext — đừng share log của các tool call này.
329
345
 
330
346
  ### Audit
331
347
 
@@ -4,6 +4,27 @@
4
4
  import { z } from 'zod';
5
5
  /** UUIDv4 string used by most NestJS entities. */
6
6
  export declare const idSchema: z.ZodString;
7
+ /**
8
+ * Opaque text identifier used by Better-Auth-managed entities (`user`,
9
+ * `member`, `account`, `invitation`, `session`, `verification`).
10
+ *
11
+ * These tables use `@PrimaryColumn('text')` rather than UUIDs because
12
+ * Better-Auth generates short random tokens (e.g.
13
+ * `CQZpWvRcgTq1n8uHBiSz0Kg0NKUcTVzA`). The schema only enforces
14
+ * "non-empty, reasonably bounded printable string" so the agent can pipe
15
+ * IDs from `org_list_members` / `project_list_members` straight into
16
+ * member-management tools without UUID coercion. See task 0005.
17
+ */
18
+ export declare const textIdSchema: z.ZodString;
19
+ /**
20
+ * User identifier as stored by the backend. Today the `user` table uses a
21
+ * Better-Auth text PK (see `backend/src/entities/user.entity.ts`), so this
22
+ * is an alias for {@link textIdSchema}. Kept as a distinct export so
23
+ * tooling intent ("this field references a user") stays explicit.
24
+ */
25
+ export declare const userIdSchema: z.ZodString;
26
+ /** Invitation identifier (Better-Auth text PK, see `invitation.entity.ts`). */
27
+ export declare const invitationIdSchema: z.ZodString;
7
28
  /** ISO-8601 timestamp string returned by TypeORM. */
8
29
  export declare const isoDateSchema: z.ZodString;
9
30
  /** URL-safe slug (lowercase letters, digits, hyphens). */
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kDAAkD;AAClD,eAAO,MAAM,QAAQ,aAAoC,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,aAAa,aAAwC,CAAC;AAEnE,0DAA0D;AAC1D,eAAO,MAAM,UAAU,aAImE,CAAC;AAE3F,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,aAMvB,CAAC"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kDAAkD;AAClD,eAAO,MAAM,QAAQ,aAAoC,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,aAOtB,CAAC;AAEJ;;;;;GAKG;AACH,eAAO,MAAM,YAAY,aAIxB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,aAG9B,CAAC;AAEF,qDAAqD;AACrD,eAAO,MAAM,aAAa,aAAwC,CAAC;AAEnE,0DAA0D;AAC1D,eAAO,MAAM,UAAU,aAImE,CAAC;AAE3F,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,aAAa,aAMvB,CAAC"}
@@ -4,6 +4,34 @@
4
4
  import { z } from 'zod';
5
5
  /** UUIDv4 string used by most NestJS entities. */
6
6
  export const idSchema = z.string().uuid('Must be a UUID');
7
+ /**
8
+ * Opaque text identifier used by Better-Auth-managed entities (`user`,
9
+ * `member`, `account`, `invitation`, `session`, `verification`).
10
+ *
11
+ * These tables use `@PrimaryColumn('text')` rather than UUIDs because
12
+ * Better-Auth generates short random tokens (e.g.
13
+ * `CQZpWvRcgTq1n8uHBiSz0Kg0NKUcTVzA`). The schema only enforces
14
+ * "non-empty, reasonably bounded printable string" so the agent can pipe
15
+ * IDs from `org_list_members` / `project_list_members` straight into
16
+ * member-management tools without UUID coercion. See task 0005.
17
+ */
18
+ export const textIdSchema = z
19
+ .string()
20
+ .min(1, 'Must be a non-empty identifier')
21
+ .max(128, 'Identifier exceeds 128 chars')
22
+ .regex(/^[A-Za-z0-9_-]+$/, 'Identifier may only contain letters, digits, underscore, or hyphen');
23
+ /**
24
+ * User identifier as stored by the backend. Today the `user` table uses a
25
+ * Better-Auth text PK (see `backend/src/entities/user.entity.ts`), so this
26
+ * is an alias for {@link textIdSchema}. Kept as a distinct export so
27
+ * tooling intent ("this field references a user") stays explicit.
28
+ */
29
+ export const userIdSchema = textIdSchema.describe('User identifier as returned by org_list_members / project_list_members. ' +
30
+ 'Accepts the backend\'s text PK (e.g. "CQZpWvRcgTq1n8uHBiSz0Kg0NKUcTVzA"); ' +
31
+ 'not constrained to UUID format.');
32
+ /** Invitation identifier (Better-Auth text PK, see `invitation.entity.ts`). */
33
+ export const invitationIdSchema = textIdSchema.describe('Invitation identifier as returned by invitation_list. Accepts the ' +
34
+ 'backend\'s text PK; not constrained to UUID format.');
7
35
  /** ISO-8601 timestamp string returned by TypeORM. */
8
36
  export const isoDateSchema = z.string().datetime({ offset: true });
9
37
  /** URL-safe slug (lowercase letters, digits, hyphens). */
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE1D,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,4BAA4B,EAAE,kDAAkD,CAAC,CAAC;AAE3F,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC/E,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACP,yFAAyF;IACvF,+CAA+C,CAClD,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/schemas/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,kDAAkD;AAClD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC;KAC1B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,gCAAgC,CAAC;KACxC,GAAG,CAAC,GAAG,EAAE,8BAA8B,CAAC;KACxC,KAAK,CACJ,kBAAkB,EAClB,oEAAoE,CACrE,CAAC;AAEJ;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAC/C,0EAA0E;IACxE,4EAA4E;IAC5E,iCAAiC,CACpC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CACrD,oEAAoE;IAClE,qDAAqD,CACxD,CAAC;AAEF,qDAAqD;AACrD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAEnE,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CAAC,4BAA4B,EAAE,kDAAkD,CAAC,CAAC;AAE3F,+CAA+C;AAC/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC1F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;CAC/E,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,QAAQ,CACP,yFAAyF;IACvF,+CAA+C,CAClD,CAAC"}
@@ -4,6 +4,7 @@
4
4
  export * from './common.js';
5
5
  export * from './organization.js';
6
6
  export * from './project.js';
7
+ export * from './service.js';
7
8
  export * from './monitor.js';
8
9
  export * from './status-page.js';
9
10
  export * from './incident.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -4,6 +4,7 @@
4
4
  export * from './common.js';
5
5
  export * from './organization.js';
6
6
  export * from './project.js';
7
+ export * from './service.js';
7
8
  export * from './monitor.js';
8
9
  export * from './status-page.js';
9
10
  export * from './incident.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * - CreateInvitationDto
5
5
  */
6
6
  import { z } from 'zod';
7
- import { idSchema } from './common.js';
7
+ import { idSchema, invitationIdSchema } from './common.js';
8
8
  import { projectRoleSchema } from './project.js';
9
9
  export const invitationRoleSchema = z.enum(['member', 'viewer']);
10
10
  export const invitationStatusSchema = z.enum([
@@ -32,7 +32,7 @@ export const createInvitationSchema = z
32
32
  path: ['pendingProjectId'],
33
33
  });
34
34
  export const invitationSchema = z.object({
35
- id: idSchema,
35
+ id: invitationIdSchema,
36
36
  organizationId: idSchema,
37
37
  email: z.string().email(),
38
38
  role: invitationRoleSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../src/schemas/invitation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,SAAS;IACT,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,IAAI,EAAE,oBAAoB;IAC1B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,gEAAgE;QAC9D,oDAAoD,CACvD;IACD,kBAAkB,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvD,8EAA8E,CAC/E;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC,qBAAqB,CAAC;KAC7B,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAClE,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,EACpE;IACE,OAAO,EAAE,8DAA8D;IACvE,IAAI,EAAE,CAAC,kBAAkB,CAAC;CAC3B,CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,QAAQ;IACZ,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,sBAAsB;IAC9B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,kBAAkB,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"invitation.js","sourceRoot":"","sources":["../../src/schemas/invitation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,SAAS;IACT,UAAU;IACV,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,IAAI,EAAE,oBAAoB;IAC1B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC5C,gEAAgE;QAC9D,oDAAoD,CACvD;IACD,kBAAkB,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvD,8EAA8E,CAC/E;CACO,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC,qBAAqB,CAAC;KAC7B,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC;IAClE,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,EACpE;IACE,OAAO,EAAE,8DAA8D;IACvE,IAAI,EAAE,CAAC,kBAAkB,CAAC;CAC3B,CACF,CAAC;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,EAAE,EAAE,kBAAkB;IACtB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,IAAI,EAAE,oBAAoB;IAC1B,MAAM,EAAE,sBAAsB;IAC9B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,kBAAkB,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * - UpdateMemberRoleDto
6
6
  */
7
7
  import { z } from 'zod';
8
- import { idSchema, slugSchema } from './common.js';
8
+ import { idSchema, slugSchema, userIdSchema } from './common.js';
9
9
  export const orgRoleSchema = z.enum(['owner', 'member', 'viewer']);
10
10
  export const createOrganizationSchema = z.object({
11
11
  name: z.string().min(1).max(100),
@@ -29,7 +29,7 @@ export const organizationSchema = z.object({
29
29
  updatedAt: z.string().optional(),
30
30
  });
31
31
  export const orgMemberSchema = z.object({
32
- userId: idSchema,
32
+ userId: userIdSchema,
33
33
  organizationId: idSchema,
34
34
  role: orgRoleSchema,
35
35
  email: z.string().email().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/schemas/organization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,QAAQ;IACxB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
1
+ {"version":3,"file":"organization.js","sourceRoot":"","sources":["../../src/schemas/organization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,aAAa;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,YAAY;IACpB,cAAc,EAAE,QAAQ;IACxB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
@@ -42,7 +42,13 @@ export declare const projectSchema: z.ZodObject<{
42
42
  id: z.ZodString;
43
43
  organizationId: z.ZodString;
44
44
  name: z.ZodString;
45
+ /**
46
+ * Only present on the response from `project_create` — backend returns the
47
+ * plaintext key of the auto-provisioned default service exactly once.
48
+ */
45
49
  apiKey: z.ZodOptional<z.ZodString>;
50
+ defaultServiceId: z.ZodOptional<z.ZodString>;
51
+ apiKeyPrefix: z.ZodOptional<z.ZodString>;
46
52
  createdAt: z.ZodOptional<z.ZodString>;
47
53
  updatedAt: z.ZodOptional<z.ZodString>;
48
54
  }, "strip", z.ZodTypeAny, {
@@ -52,6 +58,8 @@ export declare const projectSchema: z.ZodObject<{
52
58
  createdAt?: string | undefined;
53
59
  updatedAt?: string | undefined;
54
60
  apiKey?: string | undefined;
61
+ defaultServiceId?: string | undefined;
62
+ apiKeyPrefix?: string | undefined;
55
63
  }, {
56
64
  name: string;
57
65
  id: string;
@@ -59,6 +67,8 @@ export declare const projectSchema: z.ZodObject<{
59
67
  createdAt?: string | undefined;
60
68
  updatedAt?: string | undefined;
61
69
  apiKey?: string | undefined;
70
+ defaultServiceId?: string | undefined;
71
+ apiKeyPrefix?: string | undefined;
62
72
  }>;
63
73
  export declare const projectMemberSchema: z.ZodObject<{
64
74
  userId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/schemas/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB,0CAAwC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;EAOxB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/schemas/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB,0CAAwC,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAC;AAEH,eAAO,MAAM,aAAa;;;;IAIxB;;;OAGG;;;;;;;;;;;;;;;;;;;;;;;;EAMH,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;EAM9B,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * - AddProjectMemberDto, UpdateProjectMemberRoleDto
6
6
  */
7
7
  import { z } from 'zod';
8
- import { idSchema } from './common.js';
8
+ import { idSchema, userIdSchema } from './common.js';
9
9
  export const projectRoleSchema = z.enum(['admin', 'editor', 'viewer']);
10
10
  export const createProjectSchema = z.object({
11
11
  name: z.string().min(1).max(100),
@@ -14,7 +14,7 @@ export const updateProjectSchema = z.object({
14
14
  name: z.string().min(1).max(100).optional(),
15
15
  });
16
16
  export const addProjectMemberSchema = z.object({
17
- userId: idSchema,
17
+ userId: userIdSchema,
18
18
  role: projectRoleSchema,
19
19
  });
20
20
  export const updateProjectMemberRoleSchema = z.object({
@@ -24,12 +24,18 @@ export const projectSchema = z.object({
24
24
  id: idSchema,
25
25
  organizationId: idSchema,
26
26
  name: z.string(),
27
+ /**
28
+ * Only present on the response from `project_create` — backend returns the
29
+ * plaintext key of the auto-provisioned default service exactly once.
30
+ */
27
31
  apiKey: z.string().optional(),
32
+ defaultServiceId: idSchema.optional(),
33
+ apiKeyPrefix: z.string().optional(),
28
34
  createdAt: z.string().optional(),
29
35
  updatedAt: z.string().optional(),
30
36
  });
31
37
  export const projectMemberSchema = z.object({
32
- userId: idSchema,
38
+ userId: userIdSchema,
33
39
  projectId: idSchema,
34
40
  role: projectRoleSchema,
35
41
  email: z.string().email().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/schemas/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,QAAQ;IACZ,cAAc,EAAE,QAAQ;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/schemas/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,EAAE,YAAY;IACpB,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,iBAAiB;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,QAAQ;IACZ,cAAc,EAAE,QAAQ;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB;;;OAGG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,gBAAgB,EAAE,QAAQ,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,EAAE,YAAY;IACpB,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Service schemas.
3
+ *
4
+ * A service is the per-runtime credential holder inside a project. Each project
5
+ * owns one or more services (e.g. `backend`, `frontend`, `mobile`), and each
6
+ * service has its own `tt_svc_…` API key that SDKs use to ingest errors.
7
+ *
8
+ * Mirrors backend DTOs:
9
+ * - CreateServiceDto
10
+ * - UpdateServiceDto
11
+ */
12
+ import { z } from 'zod';
13
+ /**
14
+ * Free-form language hint that influences which SDK snippet is highlighted
15
+ * in the dashboard. The backend currently treats this as an opaque string;
16
+ * the list below mirrors what the UI offers as a default tab.
17
+ */
18
+ export declare const serviceLanguageSchema: z.ZodString;
19
+ export declare const createServiceSchema: z.ZodObject<{
20
+ name: z.ZodString;
21
+ slug: z.ZodOptional<z.ZodString>;
22
+ language: z.ZodOptional<z.ZodString>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ name: string;
25
+ slug?: string | undefined;
26
+ language?: string | undefined;
27
+ }, {
28
+ name: string;
29
+ slug?: string | undefined;
30
+ language?: string | undefined;
31
+ }>;
32
+ export declare const updateServiceSchema: z.ZodObject<{
33
+ name: z.ZodOptional<z.ZodString>;
34
+ language: z.ZodOptional<z.ZodString>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ name?: string | undefined;
37
+ language?: string | undefined;
38
+ }, {
39
+ name?: string | undefined;
40
+ language?: string | undefined;
41
+ }>;
42
+ export declare const serviceSchema: z.ZodObject<{
43
+ id: z.ZodString;
44
+ projectId: z.ZodString;
45
+ name: z.ZodString;
46
+ slug: z.ZodString;
47
+ language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
48
+ apiKeyPrefix: z.ZodOptional<z.ZodString>;
49
+ isDefault: z.ZodBoolean;
50
+ createdAt: z.ZodOptional<z.ZodString>;
51
+ updatedAt: z.ZodOptional<z.ZodString>;
52
+ }, "strip", z.ZodTypeAny, {
53
+ name: string;
54
+ slug: string;
55
+ id: string;
56
+ projectId: string;
57
+ isDefault: boolean;
58
+ createdAt?: string | undefined;
59
+ updatedAt?: string | undefined;
60
+ apiKeyPrefix?: string | undefined;
61
+ language?: string | null | undefined;
62
+ }, {
63
+ name: string;
64
+ slug: string;
65
+ id: string;
66
+ projectId: string;
67
+ isDefault: boolean;
68
+ createdAt?: string | undefined;
69
+ updatedAt?: string | undefined;
70
+ apiKeyPrefix?: string | undefined;
71
+ language?: string | null | undefined;
72
+ }>;
73
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/schemas/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aAM/B,CAAC;AAEJ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAU9B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;EAG9B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUxB,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Service schemas.
3
+ *
4
+ * A service is the per-runtime credential holder inside a project. Each project
5
+ * owns one or more services (e.g. `backend`, `frontend`, `mobile`), and each
6
+ * service has its own `tt_svc_…` API key that SDKs use to ingest errors.
7
+ *
8
+ * Mirrors backend DTOs:
9
+ * - CreateServiceDto
10
+ * - UpdateServiceDto
11
+ */
12
+ import { z } from 'zod';
13
+ import { idSchema } from './common.js';
14
+ /**
15
+ * Free-form language hint that influences which SDK snippet is highlighted
16
+ * in the dashboard. The backend currently treats this as an opaque string;
17
+ * the list below mirrors what the UI offers as a default tab.
18
+ */
19
+ export const serviceLanguageSchema = z
20
+ .string()
21
+ .min(1)
22
+ .max(50)
23
+ .describe('Free-form language / runtime hint (e.g. "node", "react", "vue", "nestjs", "express", "other").');
24
+ export const createServiceSchema = z.object({
25
+ name: z.string().min(1).max(100),
26
+ slug: z
27
+ .string()
28
+ .min(1)
29
+ .max(100)
30
+ .regex(/^[a-z0-9-]+$/, 'slug must be lowercase letters, digits, or hyphens')
31
+ .optional()
32
+ .describe('Optional URL-safe slug. Auto-derived from name if omitted.'),
33
+ language: serviceLanguageSchema.optional(),
34
+ });
35
+ export const updateServiceSchema = z.object({
36
+ name: z.string().min(1).max(100).optional(),
37
+ language: serviceLanguageSchema.optional(),
38
+ });
39
+ export const serviceSchema = z.object({
40
+ id: idSchema,
41
+ projectId: idSchema,
42
+ name: z.string(),
43
+ slug: z.string(),
44
+ language: z.string().nullable().optional(),
45
+ apiKeyPrefix: z.string().optional(),
46
+ isDefault: z.boolean(),
47
+ createdAt: z.string().optional(),
48
+ updatedAt: z.string().optional(),
49
+ });
50
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/schemas/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,EAAE,CAAC;KACP,QAAQ,CACP,gGAAgG,CACjG,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,KAAK,CAAC,cAAc,EAAE,oDAAoD,CAAC;SAC3E,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;IACzE,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAC3C,QAAQ,EAAE,qBAAqB,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,QAAQ;IACZ,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAUxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAWxD"}
@@ -1,5 +1,6 @@
1
1
  import { registerOrganizationTools } from './organizations.js';
2
2
  import { registerProjectTools } from './projects.js';
3
+ import { registerServiceTools } from './services.js';
3
4
  import { registerMonitorTools } from './monitors.js';
4
5
  import { registerStatusPageTools } from './status-pages.js';
5
6
  import { registerIncidentTools } from './incidents.js';
@@ -10,13 +11,14 @@ import { childLogger } from '../logger.js';
10
11
  const log = childLogger({ module: 'tools' });
11
12
  export function registerAllTools(server) {
12
13
  registerOrganizationTools(server); // 8 tools
13
- registerProjectTools(server); // 12 tools
14
+ registerProjectTools(server); // 9 tools (api-key tools moved to services)
15
+ registerServiceTools(server); // 7 tools
14
16
  registerMonitorTools(server); // 7 tools
15
17
  registerStatusPageTools(server); // 9 tools
16
18
  registerIncidentTools(server); // 6 tools
17
19
  registerErrorTools(server); // 12 tools
18
20
  registerRecipientGroupTools(server); // 4 tools
19
21
  registerInvitationTools(server); // 4 tools
20
- log.info('Registered all MCP tools (62 total)');
22
+ log.info('Registered all MCP tools (66 total)');
21
23
  }
22
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;IAC9C,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB;IAC/C,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;IAC/C,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;IAC/C,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;IAC/C,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;IAC/C,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;IAC/C,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAE7C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;IAC9C,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,mDAAmD;IACjF,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB;IAC/C,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;IAC/C,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB;IAC/C,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB;IAC/C,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU;IAC/C,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;IAC/C,GAAG,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AAClD,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { request } from '../http-client.js';
2
2
  import { loadConfig } from '../config.js';
3
3
  import { buildToolResult, requireConfirmation, resolveOrgId, wrapHandler, } from './_helpers.js';
4
- import { createInvitationShape, idSchema } from '../schemas/index.js';
4
+ import { createInvitationShape, idSchema, invitationIdSchema } from '../schemas/index.js';
5
5
  export function registerInvitationTools(server) {
6
6
  const config = loadConfig();
7
7
  /* ---------------- invitation_list ---------------- */
@@ -45,7 +45,7 @@ export function registerInvitationTools(server) {
45
45
  description: 'Regenerate the invitation token and re-send the email. Owner role required.',
46
46
  inputSchema: {
47
47
  org_id: idSchema.optional(),
48
- invitation_id: idSchema,
48
+ invitation_id: invitationIdSchema,
49
49
  },
50
50
  }, wrapHandler('invitation_resend', async ({ org_id, invitation_id }) => {
51
51
  const id = resolveOrgId(org_id, config.TT_DEFAULT_ORG_ID);
@@ -62,8 +62,8 @@ export function registerInvitationTools(server) {
62
62
  'Owner role required. Pass `confirm_invitation_id` matching `invitation_id`.',
63
63
  inputSchema: {
64
64
  org_id: idSchema.optional(),
65
- invitation_id: idSchema,
66
- confirm_invitation_id: idSchema.describe('Repeat invitation_id to confirm revocation.'),
65
+ invitation_id: invitationIdSchema,
66
+ confirm_invitation_id: invitationIdSchema.describe('Repeat invitation_id to confirm revocation.'),
67
67
  },
68
68
  }, wrapHandler('invitation_revoke', async ({ org_id, invitation_id, confirm_invitation_id }) => {
69
69
  const id = resolveOrgId(org_id, config.TT_DEFAULT_ORG_ID);
@@ -1 +1 @@
1
- {"version":3,"file":"invitations.js","sourceRoot":"","sources":["../../src/tools/invitations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invitations.js","sourceRoot":"","sources":["../../src/tools/invitations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoMjE"}
1
+ {"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuMjE"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { request } from '../http-client.js';
3
3
  import { loadConfig } from '../config.js';
4
4
  import { buildToolResult, requireConfirmation, resolveOrgId, wrapHandler, } from './_helpers.js';
5
- import { createOrganizationSchema, updateOrganizationSchema, updateMemberRoleSchema, idSchema, } from '../schemas/index.js';
5
+ import { createOrganizationSchema, updateOrganizationSchema, updateMemberRoleSchema, idSchema, userIdSchema, } from '../schemas/index.js';
6
6
  export function registerOrganizationTools(server) {
7
7
  const config = loadConfig();
8
8
  /* ---------------- org_list ---------------- */
@@ -116,7 +116,8 @@ export function registerOrganizationTools(server) {
116
116
  'Owner role required to call.',
117
117
  inputSchema: {
118
118
  org_id: idSchema.optional(),
119
- user_id: idSchema.describe('Target user UUID'),
119
+ user_id: userIdSchema.describe('Target user identifier (text PK as returned by org_list_members; ' +
120
+ 'not constrained to UUID format).'),
120
121
  ...updateMemberRoleSchema.shape,
121
122
  },
122
123
  }, wrapHandler('org_update_member_role', async (input) => {
@@ -136,8 +137,8 @@ export function registerOrganizationTools(server) {
136
137
  'all org resources (projects, monitors, etc.). Owner role required.',
137
138
  inputSchema: {
138
139
  org_id: idSchema.optional(),
139
- user_id: idSchema,
140
- confirm_user_id: idSchema.describe('Repeat the user_id to confirm removal.'),
140
+ user_id: userIdSchema,
141
+ confirm_user_id: userIdSchema.describe('Repeat the user_id to confirm removal.'),
141
142
  },
142
143
  }, wrapHandler('org_remove_member', async ({ org_id, user_id, confirm_user_id }) => {
143
144
  const id = resolveOrgId(org_id, config.TT_DEFAULT_ORG_ID);
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../src/tools/organizations.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Project tools (10).
2
+ * Project tools (9).
3
3
  *
4
4
  * Backend endpoints:
5
5
  * - GET /api/organizations/:orgId/projects → project_list
@@ -7,15 +7,15 @@
7
7
  * - GET /api/projects/:id → project_get
8
8
  * - PUT /api/projects/:id → project_update
9
9
  * - DELETE /api/projects/:id → project_delete
10
- * - GET /api/projects/:id/api-key → project_get_api_key_prefix
11
- * - GET /api/projects/:id/api-key/reveal → project_reveal_api_key
12
- * - POST /api/projects/:id/regenerate-key → project_regenerate_api_key
13
10
  * - GET /api/projects/:id/members → project_list_members
14
11
  * - POST /api/projects/:id/members → project_add_member
15
12
  * - PATCH /api/projects/:id/members/:userId → project_update_member_role
16
13
  * - DELETE /api/projects/:id/members/:userId → project_remove_member
17
14
  *
18
- * (12 tools total slightly over the original count because member CRUD is split.)
15
+ * NOTE: Project-level API keys were removed in favor of per-service keys.
16
+ * The `service_*` tools (see `tools/services.ts`) handle key prefix / reveal /
17
+ * regenerate now. `project_create` still returns a one-off `apiKey` field —
18
+ * that is the plaintext key of the auto-provisioned default service.
19
19
  */
20
20
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
21
21
  export declare function registerProjectTools(server: McpServer): void;
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgS5D"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+N5D"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { request } from '../http-client.js';
3
3
  import { loadConfig } from '../config.js';
4
4
  import { buildToolResult, requireConfirmation, resolveOrgId, wrapHandler, } from './_helpers.js';
5
- import { createProjectSchema, updateProjectSchema, addProjectMemberSchema, updateProjectMemberRoleSchema, idSchema, } from '../schemas/index.js';
5
+ import { createProjectSchema, updateProjectSchema, addProjectMemberSchema, updateProjectMemberRoleSchema, idSchema, userIdSchema, } from '../schemas/index.js';
6
6
  export function registerProjectTools(server) {
7
7
  const config = loadConfig();
8
8
  /* ---------------- project_list ---------------- */
@@ -24,8 +24,11 @@ export function registerProjectTools(server) {
24
24
  /* ---------------- project_create ---------------- */
25
25
  server.registerTool('project_create', {
26
26
  title: 'Create project',
27
- description: 'Create a new project within an organization. Returns the new project ' +
28
- 'including its initial API key (used by SDK to ingest errors).',
27
+ description: 'Create a new project within an organization. The backend auto-provisions ' +
28
+ 'a default service for the project and the response includes that ' +
29
+ 'service\'s plaintext `apiKey` (along with `defaultServiceId` and ' +
30
+ '`apiKeyPrefix`) exactly once — copy it immediately and configure your ' +
31
+ 'SDK with it. Use `service_create` to add more services per runtime.',
29
32
  inputSchema: {
30
33
  org_id: idSchema.optional(),
31
34
  ...createProjectSchema.shape,
@@ -96,56 +99,6 @@ export function registerProjectTools(server) {
96
99
  });
97
100
  return buildToolResult({ deleted: true, projectId: project_id, name: project.name });
98
101
  }));
99
- /* ---------------- project_get_api_key_prefix ---------------- */
100
- server.registerTool('project_get_api_key_prefix', {
101
- title: 'Get project API key prefix',
102
- description: 'Return only the public prefix portion of the project API key ' +
103
- '(safe to share). Available to project viewers and above.',
104
- inputSchema: {
105
- project_id: idSchema,
106
- },
107
- }, wrapHandler('project_get_api_key_prefix', async ({ project_id }) => {
108
- const data = await request({
109
- method: 'GET',
110
- url: `/api/projects/${encodeURIComponent(project_id)}/api-key`,
111
- });
112
- return buildToolResult(data);
113
- }));
114
- /* ---------------- project_reveal_api_key (sensitive) ---------------- */
115
- server.registerTool('project_reveal_api_key', {
116
- title: 'Reveal full project API key',
117
- description: 'SENSITIVE: Return the full API key for a project. Requires project admin role. ' +
118
- 'Returns `{ fullKey: null, prefix }` for legacy projects without a stored copy ' +
119
- '(use project_regenerate_api_key to rotate in that case). ' +
120
- 'NEVER share or log this value.',
121
- inputSchema: {
122
- project_id: idSchema,
123
- },
124
- }, wrapHandler('project_reveal_api_key', async ({ project_id }) => {
125
- const data = await request({
126
- method: 'GET',
127
- url: `/api/projects/${encodeURIComponent(project_id)}/api-key/reveal`,
128
- });
129
- return buildToolResult(data);
130
- }));
131
- /* ---------------- project_regenerate_api_key (destructive) ---------------- */
132
- server.registerTool('project_regenerate_api_key', {
133
- title: 'Regenerate project API key',
134
- description: 'DESTRUCTIVE: Invalidate the existing API key and issue a new one. ' +
135
- 'All SDKs/agents using the old key will stop working until updated. ' +
136
- 'Requires project admin role. Pass `confirm_project_id` matching the project UUID.',
137
- inputSchema: {
138
- project_id: idSchema,
139
- confirm_project_id: idSchema.describe('Repeat project_id to confirm rotation.'),
140
- },
141
- }, wrapHandler('project_regenerate_api_key', async ({ project_id, confirm_project_id }) => {
142
- requireConfirmation(confirm_project_id, project_id, `project ${project_id}'s API key`);
143
- const data = await request({
144
- method: 'POST',
145
- url: `/api/projects/${encodeURIComponent(project_id)}/regenerate-key`,
146
- });
147
- return buildToolResult(data);
148
- }));
149
102
  /* ---------------- project_list_members ---------------- */
150
103
  server.registerTool('project_list_members', {
151
104
  title: 'List project members',
@@ -184,7 +137,7 @@ export function registerProjectTools(server) {
184
137
  description: 'Change a member\'s role within a project. Requires project admin role.',
185
138
  inputSchema: {
186
139
  project_id: idSchema,
187
- user_id: idSchema,
140
+ user_id: userIdSchema,
188
141
  ...updateProjectMemberRoleSchema.shape,
189
142
  },
190
143
  }, wrapHandler('project_update_member_role', async (input) => {
@@ -203,8 +156,8 @@ export function registerProjectTools(server) {
203
156
  'loses access to this project. Requires project admin role.',
204
157
  inputSchema: {
205
158
  project_id: idSchema,
206
- user_id: idSchema,
207
- confirm_user_id: idSchema.describe('Repeat user_id to confirm removal.'),
159
+ user_id: userIdSchema,
160
+ confirm_user_id: userIdSchema.describe('Repeat user_id to confirm removal.'),
208
161
  },
209
162
  }, wrapHandler('project_remove_member', async ({ project_id, user_id, confirm_user_id }) => {
210
163
  requireConfirmation(confirm_user_id, user_id, `project member ${user_id}`);
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Service tools (7).
3
+ *
4
+ * A "service" is the per-runtime credential holder inside a project. Each
5
+ * project owns one or more services (e.g. `backend`, `frontend`, `mobile`),
6
+ * and each service has its own `tt_svc_…` API key that SDKs use to ingest
7
+ * errors. Service keys replaced the previous project-level API key.
8
+ *
9
+ * Backend endpoints:
10
+ * - GET /api/projects/:id/services → service_list
11
+ * - GET /api/projects/:id/services/:serviceId → service_get
12
+ * - POST /api/projects/:id/services → service_create
13
+ * - PATCH /api/projects/:id/services/:serviceId → service_update
14
+ * - DELETE /api/projects/:id/services/:serviceId → service_delete
15
+ * - GET /api/projects/:id/services/:serviceId/api-key/reveal → service_reveal_api_key
16
+ * - POST /api/projects/:id/services/:serviceId/api-key/regenerate → service_regenerate_api_key
17
+ */
18
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
19
+ export declare function registerServiceTools(server: McpServer): void;
20
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/tools/services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyM5D"}
@@ -0,0 +1,148 @@
1
+ import { buildToolResult, requireConfirmation, wrapHandler } from './_helpers.js';
2
+ import { request } from '../http-client.js';
3
+ import { createServiceSchema, updateServiceSchema, idSchema, } from '../schemas/index.js';
4
+ function serviceBaseUrl(projectId) {
5
+ return `/api/projects/${encodeURIComponent(projectId)}/services`;
6
+ }
7
+ function serviceUrl(projectId, serviceId) {
8
+ return `${serviceBaseUrl(projectId)}/${encodeURIComponent(serviceId)}`;
9
+ }
10
+ export function registerServiceTools(server) {
11
+ /* ---------------- service_list ---------------- */
12
+ server.registerTool('service_list', {
13
+ title: 'List services in a project',
14
+ description: 'List every service (SDK source) configured under a project. Each ' +
15
+ 'service has its own `tt_svc_…` ingest API key. Available to project ' +
16
+ 'viewers and above. The default service is marked with `isDefault: true`.',
17
+ inputSchema: {
18
+ project_id: idSchema,
19
+ },
20
+ }, wrapHandler('service_list', async ({ project_id }) => {
21
+ const data = await request({
22
+ method: 'GET',
23
+ url: serviceBaseUrl(project_id),
24
+ });
25
+ return buildToolResult({ services: data });
26
+ }));
27
+ /* ---------------- service_get ---------------- */
28
+ server.registerTool('service_get', {
29
+ title: 'Get a service',
30
+ description: 'Fetch a single service by id within its project. Returns the public ' +
31
+ 'metadata (`name`, `slug`, `language`, `apiKeyPrefix`, `isDefault`); ' +
32
+ 'use `service_reveal_api_key` to get the full plaintext key.',
33
+ inputSchema: {
34
+ project_id: idSchema,
35
+ service_id: idSchema,
36
+ },
37
+ }, wrapHandler('service_get', async ({ project_id, service_id }) => {
38
+ const data = await request({
39
+ method: 'GET',
40
+ url: serviceUrl(project_id, service_id),
41
+ });
42
+ return buildToolResult(data);
43
+ }));
44
+ /* ---------------- service_create ---------------- */
45
+ server.registerTool('service_create', {
46
+ title: 'Create a service',
47
+ description: 'Create a new service under a project. The response includes the ' +
48
+ 'plaintext `apiKey` exactly once — copy it immediately and configure ' +
49
+ 'the SDK with it. Requires project admin role. ' +
50
+ 'Optional `slug` (lowercase + hyphens) is auto-derived from `name` if omitted; ' +
51
+ '`language` is a free-form hint ("node", "react", "vue", "nestjs", "express", "other").',
52
+ inputSchema: {
53
+ project_id: idSchema,
54
+ ...createServiceSchema.shape,
55
+ },
56
+ }, wrapHandler('service_create', async (input) => {
57
+ const { project_id, ...body } = input;
58
+ const data = await request({
59
+ method: 'POST',
60
+ url: serviceBaseUrl(project_id),
61
+ body,
62
+ });
63
+ return buildToolResult(data);
64
+ }));
65
+ /* ---------------- service_update ---------------- */
66
+ server.registerTool('service_update', {
67
+ title: 'Update a service',
68
+ description: 'Update a service\'s display `name` and/or `language` hint. The slug ' +
69
+ 'is immutable. Requires project admin role.',
70
+ inputSchema: {
71
+ project_id: idSchema,
72
+ service_id: idSchema,
73
+ ...updateServiceSchema.shape,
74
+ },
75
+ }, wrapHandler('service_update', async (input) => {
76
+ const { project_id, service_id, ...patch } = input;
77
+ const data = await request({
78
+ method: 'PATCH',
79
+ url: serviceUrl(project_id, service_id),
80
+ body: patch,
81
+ });
82
+ return buildToolResult(data);
83
+ }));
84
+ /* ---------------- service_reveal_api_key (sensitive) ---------------- */
85
+ server.registerTool('service_reveal_api_key', {
86
+ title: 'Reveal full service API key',
87
+ description: 'SENSITIVE: Return the full plaintext API key for a service. Requires ' +
88
+ 'project admin role. Returns `{ fullKey: null, prefix }` if the ' +
89
+ 'plaintext was never stored (use `service_regenerate_api_key` to rotate ' +
90
+ 'in that case). NEVER share or log this value.',
91
+ inputSchema: {
92
+ project_id: idSchema,
93
+ service_id: idSchema,
94
+ },
95
+ }, wrapHandler('service_reveal_api_key', async ({ project_id, service_id }) => {
96
+ const data = await request({
97
+ method: 'GET',
98
+ url: `${serviceUrl(project_id, service_id)}/api-key/reveal`,
99
+ });
100
+ return buildToolResult(data);
101
+ }));
102
+ /* ---------------- service_regenerate_api_key (destructive) ---------------- */
103
+ server.registerTool('service_regenerate_api_key', {
104
+ title: 'Regenerate service API key',
105
+ description: 'DESTRUCTIVE: Invalidate the existing API key for a service and issue ' +
106
+ 'a new one. Every SDK / agent still using the old key will stop ' +
107
+ 'ingesting until updated. Requires project admin role. Pass ' +
108
+ '`confirm_service_id` matching `service_id`.',
109
+ inputSchema: {
110
+ project_id: idSchema,
111
+ service_id: idSchema,
112
+ confirm_service_id: idSchema.describe('Repeat service_id to confirm rotation.'),
113
+ },
114
+ }, wrapHandler('service_regenerate_api_key', async ({ project_id, service_id, confirm_service_id }) => {
115
+ requireConfirmation(confirm_service_id, service_id, `service ${service_id}'s API key`);
116
+ const data = await request({
117
+ method: 'POST',
118
+ url: `${serviceUrl(project_id, service_id)}/api-key/regenerate`,
119
+ });
120
+ return buildToolResult(data);
121
+ }));
122
+ /* ---------------- service_delete (destructive) ---------------- */
123
+ server.registerTool('service_delete', {
124
+ title: 'Delete a service',
125
+ description: 'DESTRUCTIVE: Permanently delete a service. The backend refuses to ' +
126
+ 'delete the project\'s default service (use a different default first). ' +
127
+ 'Existing error groups and occurrences keep their `serviceId` reference ' +
128
+ 'so historical data is preserved. Pass `confirm_service_id` matching ' +
129
+ '`service_id`. Requires project admin role.',
130
+ inputSchema: {
131
+ project_id: idSchema,
132
+ service_id: idSchema,
133
+ confirm_service_id: idSchema.describe('Repeat service_id to confirm deletion.'),
134
+ },
135
+ }, wrapHandler('service_delete', async ({ project_id, service_id, confirm_service_id }) => {
136
+ requireConfirmation(confirm_service_id, service_id, `service ${service_id}`);
137
+ await request({
138
+ method: 'DELETE',
139
+ url: serviceUrl(project_id, service_id),
140
+ });
141
+ return buildToolResult({
142
+ deleted: true,
143
+ projectId: project_id,
144
+ serviceId: service_id,
145
+ });
146
+ }));
147
+ }
148
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/tools/services.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tinyweb_dev/tracking-mcp-server",
3
- "version": "0.1.0",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server for Tiny Tracking — lets AI agents manage organizations, projects, monitors, status pages, incidents, errors, and more via REST API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",