@plandesk/api 0.2.0 → 0.4.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 (54) hide show
  1. package/dist/events.d.ts +17 -1
  2. package/dist/events.d.ts.map +1 -1
  3. package/dist/events.js.map +1 -1
  4. package/dist/index.d.ts +5 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/projection.d.ts +51 -0
  9. package/dist/projection.d.ts.map +1 -0
  10. package/dist/projection.js +75 -0
  11. package/dist/projection.js.map +1 -0
  12. package/dist/routes/comments.d.ts +4 -0
  13. package/dist/routes/comments.d.ts.map +1 -0
  14. package/dist/routes/comments.js +74 -0
  15. package/dist/routes/comments.js.map +1 -0
  16. package/dist/serialize.d.ts +10 -1
  17. package/dist/serialize.d.ts.map +1 -1
  18. package/dist/serialize.js +10 -0
  19. package/dist/serialize.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +3 -1
  22. package/dist/server.js.map +1 -1
  23. package/dist/services/comments.d.ts +31 -0
  24. package/dist/services/comments.d.ts.map +1 -0
  25. package/dist/services/comments.js +97 -0
  26. package/dist/services/comments.js.map +1 -0
  27. package/dist/services/documents.d.ts.map +1 -1
  28. package/dist/services/documents.js +2 -1
  29. package/dist/services/documents.js.map +1 -1
  30. package/dist/services/index.d.ts +6 -0
  31. package/dist/services/index.d.ts.map +1 -1
  32. package/dist/services/index.js +9 -0
  33. package/dist/services/index.js.map +1 -1
  34. package/dist/services/projects.d.ts +49 -2
  35. package/dist/services/projects.d.ts.map +1 -1
  36. package/dist/services/projects.js +122 -2
  37. package/dist/services/projects.js.map +1 -1
  38. package/dist/services/share.d.ts +41 -0
  39. package/dist/services/share.d.ts.map +1 -0
  40. package/dist/services/share.js +65 -0
  41. package/dist/services/share.js.map +1 -0
  42. package/dist/services/sync.d.ts +74 -0
  43. package/dist/services/sync.d.ts.map +1 -0
  44. package/dist/services/sync.js +297 -0
  45. package/dist/services/sync.js.map +1 -0
  46. package/dist/services/tasks.d.ts +13 -1
  47. package/dist/services/tasks.d.ts.map +1 -1
  48. package/dist/services/tasks.js +82 -1
  49. package/dist/services/tasks.js.map +1 -1
  50. package/package.json +4 -3
  51. package/web/_redirects +1 -0
  52. package/web/assets/index-DK5m0p5b.js +171 -0
  53. package/web/index.html +1 -1
  54. package/web/assets/index-DP1jpar6.js +0 -171
package/dist/events.d.ts CHANGED
@@ -12,6 +12,18 @@ export type DocumentCreatedEvent = {
12
12
  documentId: string;
13
13
  projectId: string;
14
14
  };
15
+ export type CommentCreatedEvent = {
16
+ type: 'comment_created';
17
+ commentId: string;
18
+ documentId: string;
19
+ projectId: string;
20
+ };
21
+ export type CommentUpdatedEvent = {
22
+ type: 'comment_updated';
23
+ commentId: string;
24
+ documentId: string;
25
+ projectId: string;
26
+ };
15
27
  export type AgentRunStartedEvent = {
16
28
  type: 'agent_run_started';
17
29
  runId: string;
@@ -27,7 +39,11 @@ export type AgentRunCompletedEvent = {
27
39
  runId: string;
28
40
  projectId: string;
29
41
  };
30
- export type PlankDeskEvent = TaskUpdatedEvent | CanvasUpdatedEvent | DocumentCreatedEvent | AgentRunStartedEvent | AgentRunProgressEvent | AgentRunCompletedEvent;
42
+ export type SubmissionsPulledEvent = {
43
+ type: 'submissions_pulled';
44
+ projectId: string;
45
+ };
46
+ export type PlankDeskEvent = TaskUpdatedEvent | CanvasUpdatedEvent | DocumentCreatedEvent | CommentCreatedEvent | CommentUpdatedEvent | AgentRunStartedEvent | AgentRunProgressEvent | AgentRunCompletedEvent | SubmissionsPulledEvent;
31
47
  export type EventListener = (event: PlankDeskEvent) => void;
32
48
  export type EventBus = {
33
49
  subscribe(listener: EventListener): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,eAAe,IAAI,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,IAAI,QAAQ,CAqBzC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,eAAe,IAAI,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,IAAI,QAAQ,CAqBzC"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAmDA,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE3C,OAAO;QACL,SAAS,CAAC,QAAuB;YAC/B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAqB;YACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,eAAe;YACb,OAAO,SAAS,CAAC,IAAI,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAyEA,MAAM,UAAU,cAAc;IAC5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiB,CAAC;IAE3C,OAAO;QACL,SAAS,CAAC,QAAuB;YAC/B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAqB;YACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,eAAe;YACb,OAAO,SAAS,CAAC,IAAI,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -8,9 +8,14 @@ export type { ProjectService } from './services/projects.js';
8
8
  export type { TaskService } from './services/tasks.js';
9
9
  export type { CanvasService } from './services/canvas.js';
10
10
  export type { DocumentService } from './services/documents.js';
11
+ export type { CommentService } from './services/comments.js';
11
12
  export type { AgentRunService } from './services/agent-runs.js';
12
13
  export { InvalidDocumentError } from './services/documents.js';
14
+ export { InvalidCommentError } from './services/comments.js';
13
15
  export { InvalidCanvasError } from './services/canvas.js';
14
16
  export { InvalidAgentRunError } from './services/agent-runs.js';
17
+ export { InvalidScaffoldError } from './services/projects.js';
18
+ export { InvalidShareError } from './services/share.js';
19
+ export { InvalidTriageError, SyncUnavailableError, SyncUnauthorizedError, type SyncRemote, type SyncService, } from './services/sync.js';
15
20
  export declare const version: () => string;
16
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAQhE,eAAO,MAAM,OAAO,QAAO,MAG1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AACjF,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAQ5B,eAAO,MAAM,OAAO,QAAO,MAG1B,CAAC"}
package/dist/index.js CHANGED
@@ -5,8 +5,12 @@ export { mountStatic } from './static.js';
5
5
  export { createServices } from './services/index.js';
6
6
  export { createEventBus } from './events.js';
7
7
  export { InvalidDocumentError } from './services/documents.js';
8
+ export { InvalidCommentError } from './services/comments.js';
8
9
  export { InvalidCanvasError } from './services/canvas.js';
9
10
  export { InvalidAgentRunError } from './services/agent-runs.js';
11
+ export { InvalidScaffoldError } from './services/projects.js';
12
+ export { InvalidShareError } from './services/share.js';
13
+ export { InvalidTriageError, SyncUnavailableError, SyncUnauthorizedError, } from './services/sync.js';
10
14
  import { readFileSync } from 'node:fs';
11
15
  import { dirname, join } from 'node:path';
12
16
  import { fileURLToPath } from 'node:url';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAoC,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAsC,MAAM,aAAa,CAAC;AAMjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAW,EAAE;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAwB,CAAC;IAC7E,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAgB,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAoC,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAsC,MAAM,aAAa,CAAC;AAOjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAW,EAAE;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAwB,CAAC;IAC7E,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type Db, type Share } from '@plandesk/db';
2
+ export type SharePolicy = {
3
+ tasks: 'all' | string[];
4
+ documentIds: string[];
5
+ fields: {
6
+ assignee?: boolean;
7
+ description?: boolean;
8
+ };
9
+ };
10
+ export type ClientViewTask = {
11
+ id: string;
12
+ label: string;
13
+ status: string;
14
+ due_date: string | null;
15
+ x: number;
16
+ y: number;
17
+ description?: string | null;
18
+ assignee?: string | null;
19
+ };
20
+ export type ClientView = {
21
+ project: {
22
+ id: string;
23
+ name: string;
24
+ description: string | null;
25
+ updated_at: string;
26
+ };
27
+ tasks: ClientViewTask[];
28
+ edges: Array<{
29
+ id: string;
30
+ from: string;
31
+ to: string;
32
+ label: string | null;
33
+ }>;
34
+ documents: Array<{
35
+ id: string;
36
+ title: string;
37
+ body_html: string | null;
38
+ updated_at: string;
39
+ }>;
40
+ progress: Record<string, number>;
41
+ share: {
42
+ audience_name: string;
43
+ permissions: {
44
+ read: boolean;
45
+ submit: boolean;
46
+ };
47
+ expires_at: string | null;
48
+ };
49
+ };
50
+ export declare function buildClientView(db: Db, projectId: string, share: Share): ClientView | undefined;
51
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,EAAE,EACP,KAAK,KAAK,EACX,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC7E,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,CAAC;QAChD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,CAAC;CACH,CAAC;AAUF,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CA0E/F"}
@@ -0,0 +1,75 @@
1
+ import { getProject, listDocuments, listEdges, listTasks, parseSharePermissions, parseSharePolicy, } from '@plandesk/db';
2
+ function buildProgress(tasks) {
3
+ const progress = {};
4
+ for (const task of tasks) {
5
+ progress[task.status] = (progress[task.status] ?? 0) + 1;
6
+ }
7
+ return progress;
8
+ }
9
+ export function buildClientView(db, projectId, share) {
10
+ const project = getProject(db, projectId);
11
+ if (!project) {
12
+ return undefined;
13
+ }
14
+ const policy = parseSharePolicy(share);
15
+ const permissions = parseSharePermissions(share);
16
+ const allTasks = listTasks(db, projectId);
17
+ const sharedTasks = [];
18
+ for (const task of allTasks) {
19
+ const included = policy.tasks === 'all' || (Array.isArray(policy.tasks) && policy.tasks.includes(task.id));
20
+ if (!included) {
21
+ continue;
22
+ }
23
+ const viewTask = {
24
+ id: task.id,
25
+ label: task.label,
26
+ status: task.status,
27
+ due_date: task.dueDate?.toISOString() ?? null,
28
+ x: task.x,
29
+ y: task.y,
30
+ };
31
+ if (policy.fields.description) {
32
+ viewTask.description = task.description;
33
+ }
34
+ if (policy.fields.assignee) {
35
+ viewTask.assignee = task.assignee;
36
+ }
37
+ sharedTasks.push(viewTask);
38
+ }
39
+ const sharedTaskIds = new Set(sharedTasks.map((task) => task.id));
40
+ const sharedEdges = listEdges(db, projectId)
41
+ .filter((edge) => sharedTaskIds.has(edge.fromTaskId) && sharedTaskIds.has(edge.toTaskId))
42
+ .map((edge) => ({
43
+ id: edge.id,
44
+ from: edge.fromTaskId,
45
+ to: edge.toTaskId,
46
+ label: edge.label,
47
+ }));
48
+ const documentIdSet = new Set(policy.documentIds);
49
+ const sharedDocuments = listDocuments(db, projectId)
50
+ .filter((doc) => documentIdSet.has(doc.id))
51
+ .map((doc) => ({
52
+ id: doc.id,
53
+ title: doc.title,
54
+ body_html: doc.body,
55
+ updated_at: doc.updatedAt.toISOString(),
56
+ }));
57
+ return {
58
+ project: {
59
+ id: project.id,
60
+ name: project.name,
61
+ description: project.description,
62
+ updated_at: project.updatedAt.toISOString(),
63
+ },
64
+ tasks: sharedTasks,
65
+ edges: sharedEdges,
66
+ documents: sharedDocuments,
67
+ progress: buildProgress(sharedTasks),
68
+ share: {
69
+ audience_name: share.audienceName,
70
+ permissions,
71
+ expires_at: share.expiresAt?.toISOString() ?? null,
72
+ },
73
+ };
74
+ }
75
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Hono } from 'hono';
2
+ import { type CommentService } from '../services/comments.js';
3
+ export declare function createCommentsRouter(commentService: CommentService): Hono;
4
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/routes/comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAgBnF,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CA6EzE"}
@@ -0,0 +1,74 @@
1
+ import { Hono } from 'hono';
2
+ import { InvalidCommentError } from '../services/comments.js';
3
+ function parseIncludeResolved(value) {
4
+ return value === 'true';
5
+ }
6
+ export function createCommentsRouter(commentService) {
7
+ const router = new Hono();
8
+ router.post('/documents/:id/comments', async (c) => {
9
+ const body = await c.req.json();
10
+ if (typeof body.body !== 'string') {
11
+ return c.json({ error: 'invalid_argument' }, 400);
12
+ }
13
+ try {
14
+ const comment = commentService.create(c.req.param('id'), {
15
+ body: body.body,
16
+ passage: body.passage,
17
+ });
18
+ if (!comment) {
19
+ return c.json({ error: 'not_found' }, 404);
20
+ }
21
+ return c.json(comment, 201);
22
+ }
23
+ catch (error) {
24
+ if (error instanceof InvalidCommentError) {
25
+ return c.json({ error: 'invalid_argument' }, 400);
26
+ }
27
+ throw error;
28
+ }
29
+ });
30
+ router.get('/documents/:id/comments', (c) => {
31
+ const includeResolved = parseIncludeResolved(c.req.query('include_resolved'));
32
+ const comments = commentService.listByDocument(c.req.param('id'), { includeResolved });
33
+ if (!comments) {
34
+ return c.json({ error: 'not_found' }, 404);
35
+ }
36
+ return c.json(comments);
37
+ });
38
+ router.get('/projects/:id/comments', (c) => {
39
+ const includeResolved = parseIncludeResolved(c.req.query('include_resolved'));
40
+ const comments = commentService.listByProject(c.req.param('id'), { includeResolved });
41
+ if (!comments) {
42
+ return c.json({ error: 'not_found' }, 404);
43
+ }
44
+ return c.json(comments);
45
+ });
46
+ router.patch('/comments/:id', async (c) => {
47
+ const body = await c.req.json();
48
+ try {
49
+ const comment = commentService.update(c.req.param('id'), {
50
+ ...(body.body !== undefined ? { body: body.body } : {}),
51
+ ...(body.resolved !== undefined ? { resolved: body.resolved } : {}),
52
+ });
53
+ if (!comment) {
54
+ return c.json({ error: 'not_found' }, 404);
55
+ }
56
+ return c.json(comment);
57
+ }
58
+ catch (error) {
59
+ if (error instanceof InvalidCommentError) {
60
+ return c.json({ error: 'invalid_argument' }, 400);
61
+ }
62
+ throw error;
63
+ }
64
+ });
65
+ router.delete('/comments/:id', (c) => {
66
+ const deleted = commentService.delete(c.req.param('id'));
67
+ if (!deleted) {
68
+ return c.json({ error: 'not_found' }, 404);
69
+ }
70
+ return c.body(null, 204);
71
+ });
72
+ return router;
73
+ }
74
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/routes/comments.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AgentRun, AgentRunEvent, Document, Edge, Project, Task, TaskStatus } from '@plandesk/db';
1
+ import type { AgentRun, AgentRunEvent, Document, DocumentComment, Edge, Project, Task, TaskStatus } from '@plandesk/db';
2
2
  export type PaginationParams = {
3
3
  limit?: number;
4
4
  offset?: number;
@@ -49,6 +49,15 @@ export type SerializedDocumentTree = SerializedDocument & {
49
49
  children: SerializedDocumentTree[];
50
50
  };
51
51
  export declare function serializeDocument(document: Document): SerializedDocument;
52
+ export type SerializedComment = {
53
+ id: string;
54
+ document_id: string;
55
+ passage: string | null;
56
+ body: string;
57
+ resolved: boolean;
58
+ created_at: string;
59
+ };
60
+ export declare function serializeComment(comment: DocumentComment): SerializedComment;
52
61
  export declare function buildDocumentTree(documents: Document[]): SerializedDocumentTree[];
53
62
  export declare function serializeEdge(edge: Edge): {
54
63
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,UAAU,EACX,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,gBAAgB,GAAG,SAAS,CAqB9B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE3D,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;;;;;;EAQhD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB;;;;;;;EAKlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;EAcvC;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAYxE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,sBAAsB,EAAE,CAyBjF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI;;;;;;;;;EAWvC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ;;;;;;;EAS9C;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa;;;;;EAO1D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,eAAe,CAOlB"}
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,eAAe,EACf,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,UAAU,EACX,MAAM,cAAc,CAAC;AAGtB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,gBAAgB,GAAG,SAAS,CAqB9B;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAE3D,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO;;;;;;EAQhD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB;;;;;;;EAKlF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI;;;;;;;;;;;;EAcvC;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,GAAG;IACxD,QAAQ,EAAE,sBAAsB,EAAE,CAAC;CACpC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,kBAAkB,CAYxE;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAS5E;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,sBAAsB,EAAE,CAyBjF;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI;;;;;;;;;EAWvC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ;;;;;;;EAS9C;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa;;;;;EAO1D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GAAG,eAAe,CAOlB"}
package/dist/serialize.js CHANGED
@@ -64,6 +64,16 @@ export function serializeDocument(document) {
64
64
  updated_at: document.updatedAt.toISOString(),
65
65
  };
66
66
  }
67
+ export function serializeComment(comment) {
68
+ return {
69
+ id: comment.id,
70
+ document_id: comment.documentId,
71
+ passage: comment.passage,
72
+ body: comment.body,
73
+ resolved: comment.resolved,
74
+ created_at: comment.createdAt.toISOString(),
75
+ };
76
+ }
67
77
  export function buildDocumentTree(documents) {
68
78
  const nodes = new Map();
69
79
  for (const document of documents) {
@@ -1 +1 @@
1
- {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAOvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAmC7C"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAQvC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK5C,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpE,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAqC7C"}
package/dist/server.js CHANGED
@@ -4,6 +4,7 @@ import { healthRouter } from './routes/health.js';
4
4
  import { createProjectsRouter } from './routes/projects.js';
5
5
  import { createTasksRouter } from './routes/tasks.js';
6
6
  import { createCanvasRouter } from './routes/canvas.js';
7
+ import { createCommentsRouter } from './routes/comments.js';
7
8
  import { createDocumentsRouter } from './routes/documents.js';
8
9
  import { createEventsRouter } from './routes/events.js';
9
10
  import { createTokensRouter } from './routes/tokens.js';
@@ -12,7 +13,7 @@ import { mountStatic } from './static.js';
12
13
  import { createServices } from './services/index.js';
13
14
  export function createApp(deps) {
14
15
  const services = deps.services ?? createServices({ db: deps.db, eventBus: deps.eventBus });
15
- const { eventBus, projectService, taskService, canvasService, documentService, agentRunService, tokenService, } = services;
16
+ const { eventBus, projectService, taskService, canvasService, documentService, commentService, agentRunService, tokenService, } = services;
16
17
  const app = new Hono();
17
18
  if (deps.authPassword !== undefined && deps.authPassword.length > 0) {
18
19
  app.use('*', createAuthMiddleware(deps.authPassword));
@@ -22,6 +23,7 @@ export function createApp(deps) {
22
23
  app.route('/api/v1', createTasksRouter(taskService));
23
24
  app.route('/api/v1', createCanvasRouter(canvasService));
24
25
  app.route('/api/v1', createDocumentsRouter(documentService));
26
+ app.route('/api/v1', createCommentsRouter(commentService));
25
27
  app.route('/api/v1', createTokensRouter(tokenService));
26
28
  app.route('/api/v1', createAgentRunsRouter(agentRunService));
27
29
  app.route('/api/v1', createEventsRouter(eventBus));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAUpE,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3F,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,eAAe,EACf,YAAY,GACb,GAAG,QAAQ,CAAC;IAEb,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IACxE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAiB,MAAM,qBAAqB,CAAC;AAUpE,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,cAAc,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3F,MAAM,EACJ,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,GACb,GAAG,QAAQ,CAAC;IAEb,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACnC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;IACxE,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3D,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnD,WAAW,CAAC,GAAG,CAAC,CAAC;IAEjB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { type Db } from '@plandesk/db';
2
+ import type { EventBus } from '../events.js';
3
+ import { type SerializedComment } from '../serialize.js';
4
+ export type CommentServiceDeps = {
5
+ db: Db;
6
+ eventBus: EventBus;
7
+ };
8
+ export type CreateCommentInput = {
9
+ body: string;
10
+ passage?: string | null;
11
+ };
12
+ export type UpdateCommentInput = {
13
+ body?: string;
14
+ resolved?: boolean;
15
+ };
16
+ export declare class InvalidCommentError extends Error {
17
+ constructor(message: string);
18
+ }
19
+ export declare function createCommentService(deps: CommentServiceDeps): {
20
+ create(documentId: string, input: CreateCommentInput): SerializedComment | undefined;
21
+ listByDocument(documentId: string, options?: {
22
+ includeResolved?: boolean;
23
+ }): SerializedComment[] | undefined;
24
+ listByProject(projectId: string, options?: {
25
+ includeResolved?: boolean;
26
+ }): SerializedComment[] | undefined;
27
+ update(id: string, input: UpdateCommentInput): SerializedComment | undefined;
28
+ delete(id: string): boolean;
29
+ };
30
+ export type CommentService = ReturnType<typeof createCommentService>;
31
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/services/comments.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,EAAE,EACR,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAQD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,kBAAkB;uBAItC,MAAM,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS;+BAyBtE,MAAM,YACR;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,iBAAiB,EAAE,GAAG,SAAS;6BASrB,MAAM,YACP;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GACtC,iBAAiB,EAAE,GAAG,SAAS;eAQvB,MAAM,SAAS,kBAAkB,GAAG,iBAAiB,GAAG,SAAS;eA8BjE,MAAM,GAAG,OAAO;EA0B9B;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { createDocumentComment, deleteDocumentComment as dbDeleteDocumentComment, getDocument as dbGetDocument, getDocumentComment as dbGetDocumentComment, getProject, listCommentsByDocument as dbListCommentsByDocument, listCommentsByProject as dbListCommentsByProject, updateDocumentComment as dbUpdateDocumentComment, } from '@plandesk/db';
2
+ import { serializeComment } from '../serialize.js';
3
+ export class InvalidCommentError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = 'InvalidCommentError';
7
+ }
8
+ }
9
+ function assertNonEmptyBody(body) {
10
+ if (body.trim() === '') {
11
+ throw new InvalidCommentError('Comment body must not be empty');
12
+ }
13
+ }
14
+ export function createCommentService(deps) {
15
+ const { db, eventBus } = deps;
16
+ return {
17
+ create(documentId, input) {
18
+ const document = dbGetDocument(db, documentId);
19
+ if (!document) {
20
+ return undefined;
21
+ }
22
+ assertNonEmptyBody(input.body);
23
+ const comment = createDocumentComment(db, {
24
+ documentId,
25
+ body: input.body,
26
+ passage: input.passage,
27
+ });
28
+ eventBus.emit({
29
+ type: 'comment_created',
30
+ commentId: comment.id,
31
+ documentId,
32
+ projectId: document.projectId,
33
+ });
34
+ return serializeComment(comment);
35
+ },
36
+ listByDocument(documentId, options) {
37
+ const document = dbGetDocument(db, documentId);
38
+ if (!document) {
39
+ return undefined;
40
+ }
41
+ return dbListCommentsByDocument(db, documentId, options).map(serializeComment);
42
+ },
43
+ listByProject(projectId, options) {
44
+ const project = getProject(db, projectId);
45
+ if (!project) {
46
+ return undefined;
47
+ }
48
+ return dbListCommentsByProject(db, projectId, options).map(serializeComment);
49
+ },
50
+ update(id, input) {
51
+ const existing = dbGetDocumentComment(db, id);
52
+ if (!existing) {
53
+ return undefined;
54
+ }
55
+ if (input.body !== undefined) {
56
+ assertNonEmptyBody(input.body);
57
+ }
58
+ const comment = dbUpdateDocumentComment(db, id, input);
59
+ if (!comment) {
60
+ return undefined;
61
+ }
62
+ const document = dbGetDocument(db, comment.documentId);
63
+ if (!document) {
64
+ return undefined;
65
+ }
66
+ eventBus.emit({
67
+ type: 'comment_updated',
68
+ commentId: id,
69
+ documentId: comment.documentId,
70
+ projectId: document.projectId,
71
+ });
72
+ return serializeComment(comment);
73
+ },
74
+ delete(id) {
75
+ const existing = dbGetDocumentComment(db, id);
76
+ if (!existing) {
77
+ return false;
78
+ }
79
+ const document = dbGetDocument(db, existing.documentId);
80
+ if (!document) {
81
+ return false;
82
+ }
83
+ const deleted = dbDeleteDocumentComment(db, id);
84
+ if (!deleted) {
85
+ return false;
86
+ }
87
+ eventBus.emit({
88
+ type: 'comment_updated',
89
+ commentId: id,
90
+ documentId: existing.documentId,
91
+ projectId: document.projectId,
92
+ });
93
+ return true;
94
+ },
95
+ };
96
+ }
97
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/services/comments.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/services/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,EAAE,EACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAgBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB;wBAK9C,MAAM,eACL,gBAAgB,GAC3B,sBAAsB,EAAE,GAAG,SAAS;sBAQrB,MAAM,SAAS,mBAAmB,GAAG,kBAAkB,GAAG,SAAS;YAgC7E,MAAM,GAAG,kBAAkB,GAAG,SAAS;eAQpC,MAAM,SAAS,mBAAmB,GAAG,kBAAkB,GAAG,SAAS;sBAyB5D,MAAM,GAAG,kBAAkB,GAAG,SAAS;eAc9C,MAAM;EAepB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/services/documents.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,EAAE,EACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAgBD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB;wBAK9C,MAAM,eACL,gBAAgB,GAC3B,sBAAsB,EAAE,GAAG,SAAS;sBAQrB,MAAM,SAAS,mBAAmB,GAAG,kBAAkB,GAAG,SAAS;YAgC7E,MAAM,GAAG,kBAAkB,GAAG,SAAS;eAQpC,MAAM,SAAS,mBAAmB,GAAG,kBAAkB,GAAG,SAAS;sBAyB5D,MAAM,GAAG,kBAAkB,GAAG,SAAS;eAc9C,MAAM;EAgBpB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { createDocument as dbCreateDocument, deleteDocument as dbDeleteDocument, detachDocumentChildren, getDocument as dbGetDocument, getDocumentByTask as dbGetDocumentByTask, getProject, getTask, listDocuments as dbListDocuments, updateDocument as dbUpdateDocument, } from '@plandesk/db';
1
+ import { createDocument as dbCreateDocument, deleteCommentsByDocumentId, deleteDocument as dbDeleteDocument, detachDocumentChildren, getDocument as dbGetDocument, getDocumentByTask as dbGetDocumentByTask, getProject, getTask, listDocuments as dbListDocuments, updateDocument as dbUpdateDocument, } from '@plandesk/db';
2
2
  import { buildDocumentTree, serializeDocument, } from '../serialize.js';
3
3
  export class InvalidDocumentError extends Error {
4
4
  constructor(message) {
@@ -99,6 +99,7 @@ export function createDocumentService(deps) {
99
99
  }
100
100
  db.transaction((tx) => {
101
101
  detachDocumentChildren(tx, id);
102
+ deleteCommentsByDocumentId(tx, id);
102
103
  dbDeleteDocument(tx, id);
103
104
  });
104
105
  eventBus.emit({ type: 'canvas_updated', projectId: existing.projectId });