@plandesk/api 0.2.0 → 0.3.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 (40) hide show
  1. package/dist/events.d.ts +13 -1
  2. package/dist/events.d.ts.map +1 -1
  3. package/dist/events.js.map +1 -1
  4. package/dist/index.d.ts +3 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/routes/comments.d.ts +4 -0
  9. package/dist/routes/comments.d.ts.map +1 -0
  10. package/dist/routes/comments.js +74 -0
  11. package/dist/routes/comments.js.map +1 -0
  12. package/dist/serialize.d.ts +10 -1
  13. package/dist/serialize.d.ts.map +1 -1
  14. package/dist/serialize.js +10 -0
  15. package/dist/serialize.js.map +1 -1
  16. package/dist/server.d.ts.map +1 -1
  17. package/dist/server.js +3 -1
  18. package/dist/server.js.map +1 -1
  19. package/dist/services/comments.d.ts +31 -0
  20. package/dist/services/comments.d.ts.map +1 -0
  21. package/dist/services/comments.js +97 -0
  22. package/dist/services/comments.js.map +1 -0
  23. package/dist/services/documents.d.ts.map +1 -1
  24. package/dist/services/documents.js +2 -1
  25. package/dist/services/documents.js.map +1 -1
  26. package/dist/services/index.d.ts +2 -0
  27. package/dist/services/index.d.ts.map +1 -1
  28. package/dist/services/index.js +3 -0
  29. package/dist/services/index.js.map +1 -1
  30. package/dist/services/projects.d.ts +49 -2
  31. package/dist/services/projects.d.ts.map +1 -1
  32. package/dist/services/projects.js +118 -2
  33. package/dist/services/projects.js.map +1 -1
  34. package/dist/services/tasks.d.ts +13 -1
  35. package/dist/services/tasks.d.ts.map +1 -1
  36. package/dist/services/tasks.js +82 -1
  37. package/dist/services/tasks.js.map +1 -1
  38. package/package.json +2 -2
  39. package/web/assets/{index-DP1jpar6.js → index-C7JiW6wQ.js} +42 -42
  40. package/web/index.html +1 -1
@@ -1,5 +1,45 @@
1
- import { clearDocumentParentRefsByProject, createProject as dbCreateProject, deleteAgentRun, deleteAgentRunEventsByRunId, deleteDocumentsByProjectId, deleteEdgesByProjectId, deleteProject as dbDeleteProject, deleteTasksByProjectId, getProject as dbGetProject, listAgentRuns, listProjects as dbListProjects, listTasks, updateProject as dbUpdateProject, } from '@plandesk/db';
2
- import { emptyTaskStatusSummary, serializeProject, serializeProjectDetail, } from '../serialize.js';
1
+ import { clearDocumentParentRefsByProject, createDocument, createEdge, createProject as dbCreateProject, createTask, deleteAgentRun, deleteAgentRunEventsByRunId, deleteCommentsByProjectId, deleteDocumentsByProjectId, deleteEdgesByProjectId, deleteProject as dbDeleteProject, deleteTasksByProjectId, getProject as dbGetProject, InvalidTaskStatusError, isTaskStatus, listAgentRuns, listProjects as dbListProjects, listTasks, updateProject as dbUpdateProject, } from '@plandesk/db';
2
+ import { emptyTaskStatusSummary, serializeDocument, serializeEdge, serializeProject, serializeProjectDetail, serializeTask, } from '../serialize.js';
3
+ export class InvalidScaffoldError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = 'InvalidScaffoldError';
7
+ }
8
+ }
9
+ function validateScaffoldInput(input) {
10
+ if (input.tasks.length === 0) {
11
+ throw new InvalidScaffoldError('tasks must not be empty');
12
+ }
13
+ const keys = new Set();
14
+ for (const task of input.tasks) {
15
+ if (task.key.trim() === '') {
16
+ throw new InvalidScaffoldError('task key must not be empty');
17
+ }
18
+ if (keys.has(task.key)) {
19
+ throw new InvalidScaffoldError(`duplicate task key: ${task.key}`);
20
+ }
21
+ keys.add(task.key);
22
+ if (task.status !== undefined && !isTaskStatus(task.status)) {
23
+ throw new InvalidTaskStatusError(task.status);
24
+ }
25
+ }
26
+ for (const edge of input.edges ?? []) {
27
+ if (!keys.has(edge.from)) {
28
+ throw new InvalidScaffoldError(`edge references unknown task key: ${edge.from}`);
29
+ }
30
+ if (!keys.has(edge.to)) {
31
+ throw new InvalidScaffoldError(`edge references unknown task key: ${edge.to}`);
32
+ }
33
+ if (edge.from === edge.to) {
34
+ throw new InvalidScaffoldError('edge cannot reference the same task for from and to');
35
+ }
36
+ }
37
+ for (const doc of input.documents ?? []) {
38
+ if (doc.linkTo !== undefined && !keys.has(doc.linkTo)) {
39
+ throw new InvalidScaffoldError(`document linkTo references unknown task key: ${doc.linkTo}`);
40
+ }
41
+ }
42
+ }
3
43
  function summarizeTasks(tasks) {
4
44
  const summary = emptyTaskStatusSummary();
5
45
  for (const task of tasks) {
@@ -47,6 +87,7 @@ export function createProjectService(deps) {
47
87
  }
48
88
  deleteEdgesByProjectId(tx, id);
49
89
  clearDocumentParentRefsByProject(tx, id);
90
+ deleteCommentsByProjectId(tx, id);
50
91
  deleteDocumentsByProjectId(tx, id);
51
92
  deleteTasksByProjectId(tx, id);
52
93
  dbDeleteProject(tx, id);
@@ -54,6 +95,81 @@ export function createProjectService(deps) {
54
95
  eventBus.emit({ type: 'canvas_updated', projectId: id });
55
96
  return true;
56
97
  },
98
+ scaffoldFromPlan(input) {
99
+ validateScaffoldInput(input);
100
+ const taskRows = [];
101
+ const edgeRows = [];
102
+ const documentRows = [];
103
+ const keyToId = new Map();
104
+ let projectId = '';
105
+ db.transaction((tx) => {
106
+ const project = dbCreateProject(tx, {
107
+ name: input.name,
108
+ description: input.description,
109
+ });
110
+ projectId = project.id;
111
+ input.tasks.forEach((taskInput, i) => {
112
+ const x = taskInput.x ?? (i % 4) * 240;
113
+ const y = taskInput.y ?? Math.floor(i / 4) * 160;
114
+ const task = createTask(tx, {
115
+ projectId: project.id,
116
+ label: taskInput.label,
117
+ status: taskInput.status,
118
+ description: taskInput.description,
119
+ x,
120
+ y,
121
+ });
122
+ keyToId.set(taskInput.key, task.id);
123
+ taskRows.push(task);
124
+ });
125
+ for (const edgeInput of input.edges ?? []) {
126
+ const fromTaskId = keyToId.get(edgeInput.from);
127
+ const toTaskId = keyToId.get(edgeInput.to);
128
+ if (fromTaskId === undefined || toTaskId === undefined) {
129
+ throw new InvalidScaffoldError('edge references unknown task key');
130
+ }
131
+ const edge = createEdge(tx, {
132
+ projectId: project.id,
133
+ fromTaskId,
134
+ toTaskId,
135
+ label: edgeInput.label ?? null,
136
+ style: edgeInput.style ?? null,
137
+ });
138
+ edgeRows.push(edge);
139
+ }
140
+ for (const docInput of input.documents ?? []) {
141
+ const linkedTaskId = docInput.linkTo !== undefined ? keyToId.get(docInput.linkTo) : undefined;
142
+ const document = createDocument(tx, {
143
+ projectId: project.id,
144
+ title: docInput.title,
145
+ body: docInput.body,
146
+ statusLine: docInput.statusLine,
147
+ linkedTaskId: linkedTaskId ?? null,
148
+ });
149
+ documentRows.push(document);
150
+ }
151
+ });
152
+ eventBus.emit({ type: 'canvas_updated', projectId });
153
+ for (const doc of documentRows) {
154
+ eventBus.emit({ type: 'document_created', documentId: doc.id, projectId });
155
+ }
156
+ const project = dbGetProject(db, projectId);
157
+ if (!project) {
158
+ throw new Error('scaffolded project missing after transaction');
159
+ }
160
+ return {
161
+ project: serializeProject(project),
162
+ tasks: taskRows.map(serializeTask),
163
+ edges: edgeRows.map(serializeEdge),
164
+ documents: documentRows.map(serializeDocument),
165
+ key_to_id: Object.fromEntries(keyToId),
166
+ counts: {
167
+ tasks: taskRows.length,
168
+ edges: edgeRows.length,
169
+ documents: documentRows.length,
170
+ },
171
+ };
172
+ },
57
173
  };
58
174
  }
59
175
  //# sourceMappingURL=projects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/services/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/services/projects.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,16 @@
1
1
  import { type Db, type TaskStatus } from '@plandesk/db';
2
2
  import type { EventBus } from '../events.js';
3
- import { type PaginationParams } from '../serialize.js';
3
+ import { serializeTask, type PaginationParams } from '../serialize.js';
4
+ type SerializedTask = ReturnType<typeof serializeTask>;
5
+ export type NextActionableReason = 'ok' | 'no_tasks' | 'no_todo_tasks' | 'all_blocked';
6
+ export type NextActionableResult = {
7
+ next_task: SerializedTask | null;
8
+ reason: NextActionableReason;
9
+ blocked: Array<{
10
+ task: SerializedTask;
11
+ waiting_on: SerializedTask[];
12
+ }>;
13
+ };
4
14
  export type TaskServiceDeps = {
5
15
  db: Db;
6
16
  eventBus: EventBus;
@@ -65,6 +75,8 @@ export declare function createTaskService(deps: TaskServiceDeps): {
65
75
  updated_at: string;
66
76
  } | undefined;
67
77
  delete(id: string): boolean;
78
+ nextActionable(projectId: string): NextActionableResult | undefined;
68
79
  };
69
80
  export type TaskService = ReturnType<typeof createTaskService>;
81
+ export {};
70
82
  //# sourceMappingURL=tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,EAAE,EACP,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe;6BAKtC,MAAM,WACT,eAAe,eACX,gBAAgB;;;;;;;;;;;;;sBAmBZ,MAAM,SAAS,eAAe;;;;;;;;;;;;;eA8BrC,MAAM,SAAS,eAAe;;;;;;;;;;;;;eAwB9B,MAAM;EAkBpB;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,EAAE,EAGP,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,UAAU,GAAG,eAAe,GAAG,aAAa,CAAC;AAEvF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,cAAc,CAAC;QAAC,UAAU,EAAE,cAAc,EAAE,CAAA;KAAE,CAAC,CAAC;CACxE,CAAC;AAeF,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,EAAE,CAAC;IACP,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe;6BAKtC,MAAM,WACT,eAAe,eACX,gBAAgB;;;;;;;;;;;;;sBAmBZ,MAAM,SAAS,eAAe;;;;;;;;;;;;;eA8BrC,MAAM,SAAS,eAAe;;;;;;;;;;;;;eAwB9B,MAAM;8BAkBS,MAAM,GAAG,oBAAoB,GAAG,SAAS;EAmFtE;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
@@ -1,5 +1,15 @@
1
- import { createTask, deleteEdgesByTaskId, deleteTask as dbDeleteTask, getProject, getTask, InvalidTaskStatusError, isTaskStatus, listTasks, nullDocumentsLinkedTask, updateTask, } from '@plandesk/db';
1
+ import { createTask, deleteEdgesByTaskId, deleteTask as dbDeleteTask, getProject, getTask, InvalidTaskStatusError, isTaskStatus, listEdges, listTasks, nullDocumentsLinkedTask, updateTask, } from '@plandesk/db';
2
2
  import { serializeTask } from '../serialize.js';
3
+ // depends_on: prerequisite = to, dependent = from. All other labels: prerequisite = from, dependent = to.
4
+ function prerequisiteAndDependent(edge) {
5
+ if (edge.fromTaskId === edge.toTaskId) {
6
+ return undefined;
7
+ }
8
+ if (edge.label === 'depends_on') {
9
+ return { prerequisite: edge.toTaskId, dependent: edge.fromTaskId };
10
+ }
11
+ return { prerequisite: edge.fromTaskId, dependent: edge.toTaskId };
12
+ }
3
13
  export function createTaskService(deps) {
4
14
  const { db, eventBus } = deps;
5
15
  return {
@@ -75,6 +85,77 @@ export function createTaskService(deps) {
75
85
  eventBus.emit({ type: 'canvas_updated', projectId });
76
86
  return true;
77
87
  },
88
+ nextActionable(projectId) {
89
+ const project = getProject(db, projectId);
90
+ if (!project) {
91
+ return undefined;
92
+ }
93
+ const tasks = listTasks(db, projectId).sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime());
94
+ const edges = listEdges(db, projectId);
95
+ const taskById = new Map(tasks.map((task) => [task.id, task]));
96
+ const prerequisites = new Map();
97
+ for (const edge of edges) {
98
+ const pair = prerequisiteAndDependent(edge);
99
+ if (!pair) {
100
+ continue;
101
+ }
102
+ let set = prerequisites.get(pair.dependent);
103
+ if (!set) {
104
+ set = new Set();
105
+ prerequisites.set(pair.dependent, set);
106
+ }
107
+ set.add(pair.prerequisite);
108
+ }
109
+ if (tasks.length === 0) {
110
+ return { next_task: null, reason: 'no_tasks', blocked: [] };
111
+ }
112
+ const todoTasks = tasks.filter((task) => task.status === 'todo');
113
+ if (todoTasks.length === 0) {
114
+ return { next_task: null, reason: 'no_todo_tasks', blocked: [] };
115
+ }
116
+ const isActionable = (taskId) => {
117
+ const prereqs = prerequisites.get(taskId);
118
+ if (!prereqs || prereqs.size === 0) {
119
+ return true;
120
+ }
121
+ for (const prereqId of prereqs) {
122
+ const prereq = taskById.get(prereqId);
123
+ if (!prereq || prereq.status !== 'done') {
124
+ return false;
125
+ }
126
+ }
127
+ return true;
128
+ };
129
+ const unfinishedPrereqs = (taskId) => {
130
+ const prereqs = prerequisites.get(taskId);
131
+ if (!prereqs) {
132
+ return [];
133
+ }
134
+ return [...prereqs]
135
+ .map((id) => taskById.get(id))
136
+ .filter((task) => task !== undefined && task.status !== 'done')
137
+ .map(serializeTask);
138
+ };
139
+ const blocked = [];
140
+ let nextTask = null;
141
+ for (const task of todoTasks) {
142
+ if (isActionable(task.id)) {
143
+ if (nextTask === null) {
144
+ nextTask = serializeTask(task);
145
+ }
146
+ }
147
+ else {
148
+ blocked.push({
149
+ task: serializeTask(task),
150
+ waiting_on: unfinishedPrereqs(task.id),
151
+ });
152
+ }
153
+ }
154
+ if (nextTask === null) {
155
+ return { next_task: null, reason: 'all_blocked', blocked };
156
+ }
157
+ return { next_task: nextTask, reason: 'ok', blocked };
158
+ },
78
159
  };
79
160
  }
80
161
  //# sourceMappingURL=tasks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/services/tasks.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plandesk/api",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -19,7 +19,7 @@
19
19
  "devDependencies": {
20
20
  "typescript": "^6.0.3",
21
21
  "vitest": "^3.2.6",
22
- "@plandesk/db": "0.2.0"
22
+ "@plandesk/db": "0.3.0"
23
23
  },
24
24
  "dependencies": {
25
25
  "@hono/node-server": "^2.0.4",