@kernhq/module-tracker 0.1.0

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 (158) hide show
  1. package/LICENSE +662 -0
  2. package/README.md +265 -0
  3. package/dist/contract/events.d.ts +140 -0
  4. package/dist/contract/events.d.ts.map +1 -0
  5. package/dist/contract/events.js +51 -0
  6. package/dist/contract/events.js.map +1 -0
  7. package/dist/contract/index.d.ts +6 -0
  8. package/dist/contract/index.d.ts.map +1 -0
  9. package/dist/contract/index.js +6 -0
  10. package/dist/contract/index.js.map +1 -0
  11. package/dist/contract/models.d.ts +2547 -0
  12. package/dist/contract/models.d.ts.map +1 -0
  13. package/dist/contract/models.js +1214 -0
  14. package/dist/contract/models.js.map +1 -0
  15. package/dist/contract/notifications.d.ts +4 -0
  16. package/dist/contract/notifications.d.ts.map +1 -0
  17. package/dist/contract/notifications.js +46 -0
  18. package/dist/contract/notifications.js.map +1 -0
  19. package/dist/contract/permissions.d.ts +161 -0
  20. package/dist/contract/permissions.d.ts.map +1 -0
  21. package/dist/contract/permissions.js +192 -0
  22. package/dist/contract/permissions.js.map +1 -0
  23. package/dist/contract/router.d.ts +9659 -0
  24. package/dist/contract/router.d.ts.map +1 -0
  25. package/dist/contract/router.js +732 -0
  26. package/dist/contract/router.js.map +1 -0
  27. package/dist/kql/ast.d.ts +90 -0
  28. package/dist/kql/ast.d.ts.map +1 -0
  29. package/dist/kql/ast.js +80 -0
  30. package/dist/kql/ast.js.map +1 -0
  31. package/dist/kql/dates.d.ts +16 -0
  32. package/dist/kql/dates.d.ts.map +1 -0
  33. package/dist/kql/dates.js +54 -0
  34. package/dist/kql/dates.js.map +1 -0
  35. package/dist/kql/fields.d.ts +61 -0
  36. package/dist/kql/fields.d.ts.map +1 -0
  37. package/dist/kql/fields.js +106 -0
  38. package/dist/kql/fields.js.map +1 -0
  39. package/dist/kql/index.d.ts +16 -0
  40. package/dist/kql/index.d.ts.map +1 -0
  41. package/dist/kql/index.js +16 -0
  42. package/dist/kql/index.js.map +1 -0
  43. package/dist/kql/lexer.d.ts +28 -0
  44. package/dist/kql/lexer.d.ts.map +1 -0
  45. package/dist/kql/lexer.js +127 -0
  46. package/dist/kql/lexer.js.map +1 -0
  47. package/dist/kql/parser.d.ts +14 -0
  48. package/dist/kql/parser.d.ts.map +1 -0
  49. package/dist/kql/parser.js +290 -0
  50. package/dist/kql/parser.js.map +1 -0
  51. package/dist/kql/suggest.d.ts +8 -0
  52. package/dist/kql/suggest.d.ts.map +1 -0
  53. package/dist/kql/suggest.js +96 -0
  54. package/dist/kql/suggest.js.map +1 -0
  55. package/dist/kql/validate.d.ts +10 -0
  56. package/dist/kql/validate.d.ts.map +1 -0
  57. package/dist/kql/validate.js +84 -0
  58. package/dist/kql/validate.js.map +1 -0
  59. package/dist/server/index.d.ts +17 -0
  60. package/dist/server/index.d.ts.map +1 -0
  61. package/dist/server/index.js +583 -0
  62. package/dist/server/index.js.map +1 -0
  63. package/dist/server/kql/compile.d.ts +49 -0
  64. package/dist/server/kql/compile.d.ts.map +1 -0
  65. package/dist/server/kql/compile.js +372 -0
  66. package/dist/server/kql/compile.js.map +1 -0
  67. package/dist/server/rank.d.ts +23 -0
  68. package/dist/server/rank.d.ts.map +1 -0
  69. package/dist/server/rank.js +66 -0
  70. package/dist/server/rank.js.map +1 -0
  71. package/dist/server/rich.d.ts +30 -0
  72. package/dist/server/rich.d.ts.map +1 -0
  73. package/dist/server/rich.js +97 -0
  74. package/dist/server/rich.js.map +1 -0
  75. package/dist/server/router.d.ts +10589 -0
  76. package/dist/server/router.d.ts.map +1 -0
  77. package/dist/server/router.js +431 -0
  78. package/dist/server/router.js.map +1 -0
  79. package/dist/server/schema.d.ts +6622 -0
  80. package/dist/server/schema.d.ts.map +1 -0
  81. package/dist/server/schema.js +581 -0
  82. package/dist/server/schema.js.map +1 -0
  83. package/dist/server/services/access.d.ts +53 -0
  84. package/dist/server/services/access.d.ts.map +1 -0
  85. package/dist/server/services/access.js +146 -0
  86. package/dist/server/services/access.js.map +1 -0
  87. package/dist/server/services/comments.d.ts +36 -0
  88. package/dist/server/services/comments.d.ts.map +1 -0
  89. package/dist/server/services/comments.js +231 -0
  90. package/dist/server/services/comments.js.map +1 -0
  91. package/dist/server/services/config.d.ts +130 -0
  92. package/dist/server/services/config.d.ts.map +1 -0
  93. package/dist/server/services/config.js +797 -0
  94. package/dist/server/services/config.js.map +1 -0
  95. package/dist/server/services/db.d.ts +93 -0
  96. package/dist/server/services/db.d.ts.map +1 -0
  97. package/dist/server/services/db.js +519 -0
  98. package/dist/server/services/db.js.map +1 -0
  99. package/dist/server/services/imports.d.ts +37 -0
  100. package/dist/server/services/imports.d.ts.map +1 -0
  101. package/dist/server/services/imports.js +324 -0
  102. package/dist/server/services/imports.js.map +1 -0
  103. package/dist/server/services/index.d.ts +36 -0
  104. package/dist/server/services/index.d.ts.map +1 -0
  105. package/dist/server/services/index.js +57 -0
  106. package/dist/server/services/index.js.map +1 -0
  107. package/dist/server/services/intake.d.ts +47 -0
  108. package/dist/server/services/intake.d.ts.map +1 -0
  109. package/dist/server/services/intake.js +268 -0
  110. package/dist/server/services/intake.js.map +1 -0
  111. package/dist/server/services/issues.d.ts +763 -0
  112. package/dist/server/services/issues.d.ts.map +1 -0
  113. package/dist/server/services/issues.js +1381 -0
  114. package/dist/server/services/issues.js.map +1 -0
  115. package/dist/server/services/notify.d.ts +51 -0
  116. package/dist/server/services/notify.d.ts.map +1 -0
  117. package/dist/server/services/notify.js +90 -0
  118. package/dist/server/services/notify.js.map +1 -0
  119. package/dist/server/services/planning.d.ts +62 -0
  120. package/dist/server/services/planning.d.ts.map +1 -0
  121. package/dist/server/services/planning.js +614 -0
  122. package/dist/server/services/planning.js.map +1 -0
  123. package/dist/server/services/projects.d.ts +43 -0
  124. package/dist/server/services/projects.d.ts.map +1 -0
  125. package/dist/server/services/projects.js +375 -0
  126. package/dist/server/services/projects.js.map +1 -0
  127. package/dist/server/services/query.d.ts +24 -0
  128. package/dist/server/services/query.d.ts.map +1 -0
  129. package/dist/server/services/query.js +312 -0
  130. package/dist/server/services/query.js.map +1 -0
  131. package/dist/server/services/reports.d.ts +30 -0
  132. package/dist/server/services/reports.d.ts.map +1 -0
  133. package/dist/server/services/reports.js +295 -0
  134. package/dist/server/services/reports.js.map +1 -0
  135. package/dist/server/services/time.d.ts +53 -0
  136. package/dist/server/services/time.d.ts.map +1 -0
  137. package/dist/server/services/time.js +192 -0
  138. package/dist/server/services/time.js.map +1 -0
  139. package/dist/server/services/transitions.d.ts +61 -0
  140. package/dist/server/services/transitions.d.ts.map +1 -0
  141. package/dist/server/services/transitions.js +493 -0
  142. package/dist/server/services/transitions.js.map +1 -0
  143. package/dist/server/services/views.d.ts +33 -0
  144. package/dist/server/services/views.d.ts.map +1 -0
  145. package/dist/server/services/views.js +195 -0
  146. package/dist/server/services/views.js.map +1 -0
  147. package/migrations/0000_init.sql +529 -0
  148. package/migrations/0001_rls.sql +259 -0
  149. package/migrations/meta/0000_snapshot.json +4140 -0
  150. package/migrations/meta/_journal.json +20 -0
  151. package/package.json +82 -0
  152. package/src/client/api.ts +15 -0
  153. package/src/client/format.ts +164 -0
  154. package/src/client/group.ts +150 -0
  155. package/src/client/index.ts +60 -0
  156. package/src/client/kql.ts +492 -0
  157. package/src/client/rank.ts +87 -0
  158. package/src/client/types.ts +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/server/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { Principal } from '@kernhq/contracts';
2
+ import { type Kernel, type Tx } from '@kernhq/kernel';
3
+ import type { ProjectRow } from './db.js';
4
+ /**
5
+ * Project-level access control.
6
+ *
7
+ * `requires()` in the router only proves a permission at workspace scope. Everything that touches a
8
+ * project goes through here as well, so per-project authz bindings (the project permission scheme)
9
+ * and private-project membership are always applied — including for reads.
10
+ */
11
+ export declare class AccessService {
12
+ private readonly kernel;
13
+ constructor(kernel: Kernel);
14
+ /** True for callers that bypass tenancy checks entirely (other services, instance admins). */
15
+ private privileged;
16
+ loadProject(tx: Tx, workspaceId: string, projectId: string): Promise<ProjectRow>;
17
+ loadProjectByKey(tx: Tx, workspaceId: string, key: string): Promise<ProjectRow>;
18
+ isProjectMember(tx: Tx, workspaceId: string, projectId: string, userId: string | null): Promise<boolean>;
19
+ /** Permission check at project scope, falling back to the workspace-effective set. */
20
+ can(principal: Principal, permission: string, workspaceId: string, projectId: string): Promise<boolean>;
21
+ require(principal: Principal, permission: string, workspaceId: string, projectId: string): Promise<void>;
22
+ /**
23
+ * Permission check at workspace scope, for objects that are not owned by a project — a
24
+ * workspace-wide label or issue template has no project whose scheme could grant the permission.
25
+ */
26
+ requireWorkspace(principal: Principal, permission: string, workspaceId: string): Promise<void>;
27
+ /**
28
+ * Load a project and assert the caller may act on it. Private projects additionally require
29
+ * membership — a workspace-wide permission is not enough to see somebody else's private project.
30
+ */
31
+ requireProject(tx: Tx, principal: Principal, workspaceId: string, projectId: string, permission?: string): Promise<ProjectRow>;
32
+ assertAccess(tx: Tx, principal: Principal, project: ProjectRow, permission?: string): Promise<void>;
33
+ /** Ids of every project the caller may read in this workspace (used to scope KQL queries). */
34
+ visibleProjectIds(tx: Tx, principal: Principal, workspaceId: string, opts?: {
35
+ includeArchived?: boolean;
36
+ only?: string[];
37
+ }): Promise<string[]>;
38
+ /** `tracker.issue.edit` covers issues the caller reported or is assigned to; anything else needs `edit_any`. */
39
+ canEditIssue(principal: Principal, workspaceId: string, projectId: string, issue: {
40
+ reporterId: string | null;
41
+ creatorId: string | null;
42
+ assigneeIds: string[];
43
+ }): Promise<boolean>;
44
+ requireEditIssue(principal: Principal, workspaceId: string, projectId: string, issue: {
45
+ reporterId: string | null;
46
+ creatorId: string | null;
47
+ assigneeIds: string[];
48
+ }): Promise<void>;
49
+ /** The user id behind a request, for procedures that cannot act anonymously. */
50
+ userId(principal: Principal): string;
51
+ moduleId(): string;
52
+ }
53
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/server/services/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAIhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC;;;;;;GAMG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,8FAA8F;IAC9F,OAAO,CAAC,UAAU;IAIZ,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUhF,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAU/E,eAAe,CACnB,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,OAAO,CAAC;IAgBnB,sFAAsF;IAChF,GAAG,CACP,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAUb,OAAO,CACX,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAKhB;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASpG;;;OAGG;IACG,cAAc,CAClB,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,SAAyB,GAClC,OAAO,CAAC,UAAU,CAAC;IAMhB,YAAY,CAChB,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,UAAU,EACnB,UAAU,SAAyB,GAClC,OAAO,CAAC,IAAI,CAAC;IAUhB,8FAA8F;IACxF,iBAAiB,CACrB,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GACxD,OAAO,CAAC,MAAM,EAAE,CAAC;IA0BpB,gHAAgH;IAC1G,YAAY,CAChB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,GACpF,OAAO,CAAC,OAAO,CAAC;IAQb,gBAAgB,CACpB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,CAAA;KAAE,GACpF,OAAO,CAAC,IAAI,CAAC;IAKhB,gFAAgF;IAChF,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAKpC,QAAQ,IAAI,MAAM;CAGnB"}
@@ -0,0 +1,146 @@
1
+ import { KernError } from '@kernhq/kernel';
2
+ import { and, eq, inArray, isNull, or, sql } from 'drizzle-orm';
3
+ import { MODULE_ID } from '../../contract/models.js';
4
+ import { projectMembers, projects } from '../schema.js';
5
+ /**
6
+ * Project-level access control.
7
+ *
8
+ * `requires()` in the router only proves a permission at workspace scope. Everything that touches a
9
+ * project goes through here as well, so per-project authz bindings (the project permission scheme)
10
+ * and private-project membership are always applied — including for reads.
11
+ */
12
+ export class AccessService {
13
+ kernel;
14
+ constructor(kernel) {
15
+ this.kernel = kernel;
16
+ }
17
+ /** True for callers that bypass tenancy checks entirely (other services, instance admins). */
18
+ privileged(principal) {
19
+ return principal.instanceAdmin || principal.kind === 'service';
20
+ }
21
+ async loadProject(tx, workspaceId, projectId) {
22
+ const [row] = await tx
23
+ .select()
24
+ .from(projects)
25
+ .where(and(eq(projects.workspaceId, workspaceId), eq(projects.id, projectId)))
26
+ .limit(1);
27
+ if (!row)
28
+ throw KernError.notFound('Project');
29
+ return row;
30
+ }
31
+ async loadProjectByKey(tx, workspaceId, key) {
32
+ const [row] = await tx
33
+ .select()
34
+ .from(projects)
35
+ .where(and(eq(projects.workspaceId, workspaceId), eq(projects.key, key.toUpperCase())))
36
+ .limit(1);
37
+ if (!row)
38
+ throw KernError.notFound('Project');
39
+ return row;
40
+ }
41
+ async isProjectMember(tx, workspaceId, projectId, userId) {
42
+ if (!userId)
43
+ return false;
44
+ const [row] = await tx
45
+ .select({ role: projectMembers.role })
46
+ .from(projectMembers)
47
+ .where(and(eq(projectMembers.workspaceId, workspaceId), eq(projectMembers.projectId, projectId), eq(projectMembers.userId, userId)))
48
+ .limit(1);
49
+ return !!row;
50
+ }
51
+ /** Permission check at project scope, falling back to the workspace-effective set. */
52
+ async can(principal, permission, workspaceId, projectId) {
53
+ if (this.privileged(principal))
54
+ return true;
55
+ return this.kernel.authz.can(principal, permission, {
56
+ kind: 'project',
57
+ id: projectId,
58
+ workspaceId,
59
+ parents: [{ kind: 'workspace', id: workspaceId }],
60
+ });
61
+ }
62
+ async require(principal, permission, workspaceId, projectId) {
63
+ if (!(await this.can(principal, permission, workspaceId, projectId)))
64
+ throw KernError.forbidden(permission);
65
+ }
66
+ /**
67
+ * Permission check at workspace scope, for objects that are not owned by a project — a
68
+ * workspace-wide label or issue template has no project whose scheme could grant the permission.
69
+ */
70
+ async requireWorkspace(principal, permission, workspaceId) {
71
+ if (this.privileged(principal))
72
+ return;
73
+ await this.kernel.authz.require(principal, permission, {
74
+ kind: 'workspace',
75
+ id: workspaceId,
76
+ workspaceId,
77
+ });
78
+ }
79
+ /**
80
+ * Load a project and assert the caller may act on it. Private projects additionally require
81
+ * membership — a workspace-wide permission is not enough to see somebody else's private project.
82
+ */
83
+ async requireProject(tx, principal, workspaceId, projectId, permission = 'tracker.project.view') {
84
+ const project = await this.loadProject(tx, workspaceId, projectId);
85
+ await this.assertAccess(tx, principal, project, permission);
86
+ return project;
87
+ }
88
+ async assertAccess(tx, principal, project, permission = 'tracker.project.view') {
89
+ if (this.privileged(principal))
90
+ return;
91
+ await this.require(principal, permission, project.workspaceId, project.id);
92
+ if (project.visibility === 'private' &&
93
+ !(await this.isProjectMember(tx, project.workspaceId, project.id, principal.userId)))
94
+ throw KernError.forbidden('tracker.project.view');
95
+ }
96
+ /** Ids of every project the caller may read in this workspace (used to scope KQL queries). */
97
+ async visibleProjectIds(tx, principal, workspaceId, opts = {}) {
98
+ const filters = [eq(projects.workspaceId, workspaceId)];
99
+ if (!opts.includeArchived)
100
+ filters.push(isNull(projects.archivedAt));
101
+ if (opts.only?.length)
102
+ filters.push(inArray(projects.id, opts.only));
103
+ if (!this.privileged(principal) && principal.userId) {
104
+ filters.push(or(eq(projects.visibility, 'workspace'), sql `exists (select 1 from ${projectMembers} where ${projectMembers.workspaceId} = ${workspaceId}::uuid and ${projectMembers.projectId} = ${projects.id} and ${projectMembers.userId} = ${principal.userId})`));
105
+ }
106
+ else if (!this.privileged(principal)) {
107
+ return [];
108
+ }
109
+ const rows = await tx
110
+ .select({ id: projects.id })
111
+ .from(projects)
112
+ .where(and(...filters));
113
+ if (this.privileged(principal))
114
+ return rows.map((r) => r.id);
115
+ // per-project deny bindings still have to be honoured
116
+ const allowed = [];
117
+ for (const r of rows)
118
+ if (await this.can(principal, 'tracker.project.view', workspaceId, r.id))
119
+ allowed.push(r.id);
120
+ return allowed;
121
+ }
122
+ /** `tracker.issue.edit` covers issues the caller reported or is assigned to; anything else needs `edit_any`. */
123
+ async canEditIssue(principal, workspaceId, projectId, issue) {
124
+ if (await this.can(principal, 'tracker.issue.edit_any', workspaceId, projectId))
125
+ return true;
126
+ const uid = principal.userId;
127
+ if (!uid)
128
+ return false;
129
+ const own = issue.reporterId === uid || issue.creatorId === uid || issue.assigneeIds.includes(uid);
130
+ return own && (await this.can(principal, 'tracker.issue.edit', workspaceId, projectId));
131
+ }
132
+ async requireEditIssue(principal, workspaceId, projectId, issue) {
133
+ if (!(await this.canEditIssue(principal, workspaceId, projectId, issue)))
134
+ throw KernError.forbidden('tracker.issue.edit');
135
+ }
136
+ /** The user id behind a request, for procedures that cannot act anonymously. */
137
+ userId(principal) {
138
+ if (!principal.userId)
139
+ throw KernError.unauthorized();
140
+ return principal.userId;
141
+ }
142
+ moduleId() {
143
+ return MODULE_ID;
144
+ }
145
+ }
146
+ //# sourceMappingURL=access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../../src/server/services/access.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Page, Principal } from '@kernhq/contracts';
2
+ import { type Kernel, type Tx } from '@kernhq/kernel';
3
+ import { type Comment, type RichDoc } from '../../contract/models.js';
4
+ import type { AccessService } from './access.js';
5
+ import { type CommentRow } from './db.js';
6
+ import type { IssueService } from './issues.js';
7
+ import type { NotifyService } from './notify.js';
8
+ export interface CreateCommentOptions {
9
+ parentId?: string | null;
10
+ internal?: boolean;
11
+ source?: Comment['source'];
12
+ authorId?: string | null;
13
+ /** transition comments are already announced by the status change */
14
+ silent?: boolean;
15
+ }
16
+ export declare class CommentService {
17
+ private readonly kernel;
18
+ private readonly access;
19
+ private readonly issuesService;
20
+ private readonly notify;
21
+ constructor(kernel: Kernel, access: AccessService, issuesService: IssueService, notify: NotifyService);
22
+ private reactionsFor;
23
+ private hydrate;
24
+ list(tx: Tx, principal: Principal, workspaceId: string, issueId: string, limit: number, cursor?: string): Promise<Page<Comment>>;
25
+ get(tx: Tx, workspaceId: string, commentId: string): Promise<CommentRow>;
26
+ create(tx: Tx, principal: Principal, workspaceId: string, issueId: string, body: RichDoc, opts?: CreateCommentOptions): Promise<Comment>;
27
+ /** The first reply from somebody other than the requester stops the first-response clock. */
28
+ private markFirstResponse;
29
+ update(tx: Tx, principal: Principal, workspaceId: string, commentId: string, body: RichDoc): Promise<Comment>;
30
+ /** Soft delete: the row stays so reply counts and threading remain intact. */
31
+ delete(tx: Tx, principal: Principal, workspaceId: string, commentId: string): Promise<void>;
32
+ react(tx: Tx, principal: Principal, workspaceId: string, commentId: string, emoji: string): Promise<Comment>;
33
+ /** Latest comments of an issue, oldest first (email threading, digests). */
34
+ recent(tx: Tx, workspaceId: string, issueId: string, limit?: number): Promise<Comment[]>;
35
+ }
36
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../src/server/services/comments.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAa,KAAK,MAAM,EAAE,KAAK,EAAE,EAAU,MAAM,gBAAgB,CAAA;AAGxE,OAAO,EACL,KAAK,OAAO,EAGZ,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAA;AAGjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAHN,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,YAAY,EAC3B,MAAM,EAAE,aAAa;YAG1B,YAAY;YA0BZ,OAAO;IAQf,IAAI,CACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAkBnB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAUxE,MAAM,CACV,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,OAAO,CAAC;IAmGnB,6FAA6F;IAC7F,OAAO,CAAC,iBAAiB;IASnB,MAAM,CACV,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC;IAqBnB,8EAA8E;IACxE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3F,KAAK,CACT,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC;IAmBnB,4EAA4E;IACtE,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAS3F"}
@@ -0,0 +1,231 @@
1
+ import { KernError, uuidv7 } from '@kernhq/kernel';
2
+ import { and, asc, desc, eq, gt, sql } from 'drizzle-orm';
3
+ import { trackerEvents } from '../../contract/events.js';
4
+ import { MODULE_ID, } from '../../contract/models.js';
5
+ import { docToText, extractMentions, preview } from '../rich.js';
6
+ import { commentReactions, comments, issues } from '../schema.js';
7
+ import { issueUrl, toComment } from './db.js';
8
+ export class CommentService {
9
+ kernel;
10
+ access;
11
+ issuesService;
12
+ notify;
13
+ constructor(kernel, access, issuesService, notify) {
14
+ this.kernel = kernel;
15
+ this.access = access;
16
+ this.issuesService = issuesService;
17
+ this.notify = notify;
18
+ }
19
+ async reactionsFor(tx, commentIds) {
20
+ const map = new Map();
21
+ if (!commentIds.length)
22
+ return map;
23
+ const rows = await tx.execute(sql `
24
+ select ${commentReactions.commentId} as comment_id, ${commentReactions.emoji} as emoji,
25
+ count(*)::int as count, array_agg(${commentReactions.userId} order by ${commentReactions.createdAt}) as user_ids
26
+ from ${commentReactions}
27
+ where ${commentReactions.commentId} = any(${sql.param(commentIds)}::uuid[])
28
+ group by 1, 2 order by min(${commentReactions.createdAt})`);
29
+ for (const r of rows.rows) {
30
+ const list = map.get(r.comment_id) ?? [];
31
+ list.push({
32
+ emoji: r.emoji,
33
+ count: Number(r.count),
34
+ userIds: r.user_ids,
35
+ });
36
+ map.set(r.comment_id, list);
37
+ }
38
+ return map;
39
+ }
40
+ async hydrate(tx, rows) {
41
+ const reactions = await this.reactionsFor(tx, rows.map((r) => r.id));
42
+ return rows.map((r) => toComment(r, reactions.get(r.id) ?? []));
43
+ }
44
+ async list(tx, principal, workspaceId, issueId, limit, cursor) {
45
+ const issue = await this.issuesService.row(tx, workspaceId, issueId);
46
+ await this.access.requireProject(tx, principal, workspaceId, issue.projectId, 'tracker.issue.view');
47
+ const filters = [eq(comments.workspaceId, workspaceId), eq(comments.issueId, issueId)];
48
+ if (cursor)
49
+ filters.push(gt(comments.id, cursor));
50
+ const rows = await tx
51
+ .select()
52
+ .from(comments)
53
+ .where(and(...filters))
54
+ .orderBy(asc(comments.id))
55
+ .limit(limit + 1);
56
+ const page = rows.slice(0, limit);
57
+ return {
58
+ items: await this.hydrate(tx, page),
59
+ nextCursor: rows.length > limit ? (page.at(-1)?.id ?? null) : null,
60
+ };
61
+ }
62
+ async get(tx, workspaceId, commentId) {
63
+ const [row] = await tx
64
+ .select()
65
+ .from(comments)
66
+ .where(and(eq(comments.workspaceId, workspaceId), eq(comments.id, commentId)))
67
+ .limit(1);
68
+ if (!row)
69
+ throw KernError.notFound('Comment');
70
+ return row;
71
+ }
72
+ async create(tx, principal, workspaceId, issueId, body, opts = {}) {
73
+ const issue = await this.issuesService.row(tx, workspaceId, issueId);
74
+ const authorId = opts.authorId ?? principal.userId ?? null;
75
+ if (!opts.silent && opts.source !== 'system')
76
+ await this.access.requireProject(tx, principal, workspaceId, issue.projectId, 'tracker.issue.comment');
77
+ const bodyText = docToText(body);
78
+ const mentionIds = extractMentions(body);
79
+ const id = uuidv7();
80
+ const [row] = await tx
81
+ .insert(comments)
82
+ .values({
83
+ id,
84
+ workspaceId,
85
+ issueId,
86
+ parentId: opts.parentId ?? null,
87
+ authorId,
88
+ body,
89
+ bodyText,
90
+ mentionIds,
91
+ internal: opts.internal ?? false,
92
+ source: opts.source ?? 'app',
93
+ })
94
+ .returning();
95
+ if (opts.parentId)
96
+ await tx
97
+ .update(comments)
98
+ .set({ replyCount: sql `${comments.replyCount} + 1` })
99
+ .where(eq(comments.id, opts.parentId));
100
+ const watchers = new Set(this.issuesService.watchersOf(issue));
101
+ if (authorId)
102
+ watchers.add(authorId);
103
+ await tx
104
+ .update(issues)
105
+ .set({
106
+ commentCount: sql `${issues.commentCount} + 1`,
107
+ watcherIds: [...watchers],
108
+ lastActivityAt: new Date(),
109
+ updatedAt: new Date(),
110
+ sla: this.markFirstResponse(issue.sla, authorId, issue.reporterId),
111
+ })
112
+ .where(and(eq(issues.workspaceId, workspaceId), eq(issues.id, issueId)));
113
+ await this.notify.history(tx, {
114
+ workspaceId,
115
+ issueId,
116
+ actorId: authorId,
117
+ action: 'commented',
118
+ data: { commentId: id, preview: preview(bodyText, 200) },
119
+ });
120
+ const comment = toComment(row, []);
121
+ if (!opts.silent) {
122
+ await this.kernel.emit(trackerEvents.issueCommented, {
123
+ workspaceId: workspaceId,
124
+ projectId: issue.projectId,
125
+ issueId,
126
+ key: issue.key,
127
+ commentId: id,
128
+ parentId: opts.parentId ?? null,
129
+ authorId: authorId,
130
+ }, { workspaceId, actorId: authorId });
131
+ await this.notify.notify({
132
+ workspaceId,
133
+ userIds: mentionIds,
134
+ type: 'tracker.issue.mentioned',
135
+ title: `You were mentioned in ${issue.key}`,
136
+ body: preview(bodyText),
137
+ object: { module: MODULE_ID, type: 'issue', id: issueId },
138
+ url: issueUrl(issue.key),
139
+ groupKey: issueId,
140
+ actorId: authorId,
141
+ exclude: [authorId],
142
+ });
143
+ const mentioned = new Set(mentionIds);
144
+ await this.notify.notify({
145
+ workspaceId,
146
+ userIds: [...watchers].filter((w) => !mentioned.has(w)),
147
+ type: 'tracker.issue.commented',
148
+ title: `New comment on ${issue.key}`,
149
+ body: preview(bodyText),
150
+ object: { module: MODULE_ID, type: 'issue', id: issueId },
151
+ url: issueUrl(issue.key),
152
+ groupKey: issueId,
153
+ actorId: authorId,
154
+ exclude: [authorId],
155
+ });
156
+ }
157
+ await this.notify.change(workspaceId, 'issue', issueId, 'updated', {
158
+ scope: { projectId: issue.projectId },
159
+ });
160
+ return comment;
161
+ }
162
+ /** The first reply from somebody other than the requester stops the first-response clock. */
163
+ markFirstResponse(sla, authorId, reporterId) {
164
+ if (!sla || sla.firstRespondedAt || !authorId || authorId === reporterId)
165
+ return sla;
166
+ return { ...sla, firstRespondedAt: new Date().toISOString() };
167
+ }
168
+ async update(tx, principal, workspaceId, commentId, body) {
169
+ const current = await this.get(tx, workspaceId, commentId);
170
+ const issue = await this.issuesService.row(tx, workspaceId, current.issueId);
171
+ const isAuthor = current.authorId && current.authorId === principal.userId;
172
+ if (!isAuthor)
173
+ await this.access.require(principal, 'tracker.issue.edit_any', workspaceId, issue.projectId);
174
+ const [row] = await tx
175
+ .update(comments)
176
+ .set({
177
+ body,
178
+ bodyText: docToText(body),
179
+ mentionIds: extractMentions(body),
180
+ editedAt: new Date(),
181
+ updatedAt: new Date(),
182
+ })
183
+ .where(and(eq(comments.workspaceId, workspaceId), eq(comments.id, commentId)))
184
+ .returning();
185
+ await this.notify.change(workspaceId, 'issue', current.issueId, 'updated');
186
+ return (await this.hydrate(tx, [row]))[0];
187
+ }
188
+ /** Soft delete: the row stays so reply counts and threading remain intact. */
189
+ async delete(tx, principal, workspaceId, commentId) {
190
+ const current = await this.get(tx, workspaceId, commentId);
191
+ if (current.deletedAt)
192
+ return;
193
+ const issue = await this.issuesService.row(tx, workspaceId, current.issueId);
194
+ const isAuthor = current.authorId && current.authorId === principal.userId;
195
+ if (!isAuthor)
196
+ await this.access.require(principal, 'tracker.issue.edit_any', workspaceId, issue.projectId);
197
+ await tx
198
+ .update(comments)
199
+ .set({ deletedAt: new Date(), updatedAt: new Date() })
200
+ .where(and(eq(comments.workspaceId, workspaceId), eq(comments.id, commentId)));
201
+ await tx
202
+ .update(issues)
203
+ .set({ commentCount: sql `greatest(0, ${issues.commentCount} - 1)` })
204
+ .where(and(eq(issues.workspaceId, workspaceId), eq(issues.id, current.issueId)));
205
+ await this.notify.change(workspaceId, 'issue', current.issueId, 'updated');
206
+ }
207
+ async react(tx, principal, workspaceId, commentId, emoji) {
208
+ const current = await this.get(tx, workspaceId, commentId);
209
+ const issue = await this.issuesService.row(tx, workspaceId, current.issueId);
210
+ await this.access.requireProject(tx, principal, workspaceId, issue.projectId, 'tracker.issue.comment');
211
+ const userId = this.access.userId(principal);
212
+ const deleted = await tx
213
+ .delete(commentReactions)
214
+ .where(and(eq(commentReactions.commentId, commentId), eq(commentReactions.userId, userId), eq(commentReactions.emoji, emoji)))
215
+ .returning({ id: commentReactions.commentId });
216
+ if (!deleted.length)
217
+ await tx.insert(commentReactions).values({ commentId, workspaceId, userId, emoji });
218
+ return (await this.hydrate(tx, [current]))[0];
219
+ }
220
+ /** Latest comments of an issue, oldest first (email threading, digests). */
221
+ async recent(tx, workspaceId, issueId, limit = 20) {
222
+ const rows = await tx
223
+ .select()
224
+ .from(comments)
225
+ .where(and(eq(comments.workspaceId, workspaceId), eq(comments.issueId, issueId)))
226
+ .orderBy(desc(comments.id))
227
+ .limit(limit);
228
+ return this.hydrate(tx, rows.reverse());
229
+ }
230
+ }
231
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../src/server/services/comments.ts"],"names":[],"mappings":"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"}