crewly 1.20.104 → 1.20.106
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/skills/agent/core/todo-add/SKILL.md +64 -0
- package/config/skills/agent/core/todo-add/execute.sh +84 -0
- package/config/skills/agent/core/todo-add/execute.test.sh +76 -0
- package/config/skills/agent/core/todo-lists/SKILL.md +58 -0
- package/config/skills/agent/core/todo-lists/execute.sh +70 -0
- package/config/skills/agent/core/todo-lists/execute.test.sh +77 -0
- package/config/skills/agent/core/todo-tasks/SKILL.md +59 -0
- package/config/skills/agent/core/todo-tasks/execute.sh +78 -0
- package/config/skills/agent/core/todo-tasks/execute.test.sh +74 -0
- package/config/skills/agent/core/todo-update/SKILL.md +63 -0
- package/config/skills/agent/core/todo-update/execute.sh +115 -0
- package/config/skills/agent/core/todo-update/execute.test.sh +82 -0
- package/dist/backend/backend/src/constants.d.ts +65 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +65 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +51 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +223 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +42 -0
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +4 -9
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +3 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts +37 -0
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -0
- package/dist/backend/backend/src/services/agent/restore-filter.js +48 -0
- package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -0
- package/dist/backend/backend/src/services/connector/connector-access.service.d.ts +2 -2
- package/dist/backend/backend/src/services/connector/connector-access.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/connector/connector-access.service.js +2 -2
- package/dist/backend/backend/src/services/connector/connector-access.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +250 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +367 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +116 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +220 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -0
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +65 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +65 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/frontend/dist/assets/{index-1fd45a2a.js → index-488339c1.js} +103 -103
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft To Do controller — `/api/microsoft-todo/*` on this instance.
|
|
3
|
+
*
|
|
4
|
+
* Grant management goes through Cloud (status / connect-url / disconnect);
|
|
5
|
+
* lists and tasks go straight to Microsoft Graph with the token Cloud
|
|
6
|
+
* mints. Backs the todo-* skills.
|
|
7
|
+
*
|
|
8
|
+
* @module controllers/microsoft/microsoft-todo.controller
|
|
9
|
+
*/
|
|
10
|
+
import type { Request, Response } from 'express';
|
|
11
|
+
import { MicrosoftTokenService } from '../../services/microsoft/microsoft-token.service.js';
|
|
12
|
+
import { MicrosoftTodoService } from '../../services/microsoft/microsoft-todo.service.js';
|
|
13
|
+
/** The services the handlers use; swappable for tests. */
|
|
14
|
+
export interface MicrosoftTodoControllerDeps {
|
|
15
|
+
tokens: MicrosoftTokenService;
|
|
16
|
+
todo: MicrosoftTodoService;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Replace the dependency set (tests).
|
|
20
|
+
*
|
|
21
|
+
* @param next - Deps or null to rebuild lazily
|
|
22
|
+
*/
|
|
23
|
+
export declare function setMicrosoftTodoControllerDeps(next: MicrosoftTodoControllerDeps | null): void;
|
|
24
|
+
/**
|
|
25
|
+
* Answer a failure with `{ success:false, error, message, hint }` (plus
|
|
26
|
+
* `retryAfter` seconds for `rate_limited`).
|
|
27
|
+
*
|
|
28
|
+
* @param req - Request (for the connect URL hint)
|
|
29
|
+
* @param res - Response
|
|
30
|
+
* @param err - The failure
|
|
31
|
+
*/
|
|
32
|
+
export declare function sendMicrosoftTodoError(req: Request, res: Response, err: unknown): void;
|
|
33
|
+
/** GET /api/microsoft-todo/status */
|
|
34
|
+
export declare function getStatus(req: Request, res: Response): Promise<void>;
|
|
35
|
+
/** GET /api/microsoft-todo/connect-url — `{ url }` to open in the browser. */
|
|
36
|
+
export declare function getConnectUrl(req: Request, res: Response): Promise<void>;
|
|
37
|
+
/** DELETE /api/microsoft-todo/disconnect */
|
|
38
|
+
export declare function disconnect(req: Request, res: Response): Promise<void>;
|
|
39
|
+
/** GET /api/microsoft-todo/lists */
|
|
40
|
+
export declare function listLists(req: Request, res: Response): Promise<void>;
|
|
41
|
+
/** POST /api/microsoft-todo/lists — `{ name }` */
|
|
42
|
+
export declare function createList(req: Request, res: Response): Promise<void>;
|
|
43
|
+
/** GET /api/microsoft-todo/tasks?list=&all=&limit= */
|
|
44
|
+
export declare function listTasks(req: Request, res: Response): Promise<void>;
|
|
45
|
+
/** POST /api/microsoft-todo/tasks — `{ list?, title, note?, due?, importance? }` */
|
|
46
|
+
export declare function addTask(req: Request, res: Response): Promise<void>;
|
|
47
|
+
/** PATCH /api/microsoft-todo/tasks/:taskId — `{ list?, complete?, title?, note?, due? (null clears), importance? }` */
|
|
48
|
+
export declare function updateTask(req: Request, res: Response): Promise<void>;
|
|
49
|
+
/** DELETE /api/microsoft-todo/tasks/:taskId?list= */
|
|
50
|
+
export declare function deleteTask(req: Request, res: Response): Promise<void>;
|
|
51
|
+
//# sourceMappingURL=microsoft-todo.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-todo.controller.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/microsoft/microsoft-todo.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGjD,OAAO,EAAE,qBAAqB,EAAkB,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAI1F,0DAA0D;AAC1D,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAYD;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,2BAA2B,GAAG,IAAI,GAAG,IAAI,CAE7F;AAgBD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,GAAG,IAAI,CA8CtF;AAoBD,qCAAqC;AACrC,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1E;AAED,8EAA8E;AAC9E,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E;AAED,4CAA4C;AAC5C,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;AAED,oCAAoC;AACpC,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E;AAED,kDAAkD;AAClD,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3E;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E;AAED,oFAAoF;AACpF,wBAAsB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAexE;AAED,uHAAuH;AACvH,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3E;AAED,qDAAqD;AACrD,wBAAsB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft To Do controller — `/api/microsoft-todo/*` on this instance.
|
|
3
|
+
*
|
|
4
|
+
* Grant management goes through Cloud (status / connect-url / disconnect);
|
|
5
|
+
* lists and tasks go straight to Microsoft Graph with the token Cloud
|
|
6
|
+
* mints. Backs the todo-* skills.
|
|
7
|
+
*
|
|
8
|
+
* @module controllers/microsoft/microsoft-todo.controller
|
|
9
|
+
*/
|
|
10
|
+
import { MICROSOFT_TODO_CONSTANTS } from '../../constants.js';
|
|
11
|
+
import { LoggerService } from '../../services/core/logger.service.js';
|
|
12
|
+
import { MicrosoftTokenService, MicrosoftError } from '../../services/microsoft/microsoft-token.service.js';
|
|
13
|
+
import { MicrosoftTodoService } from '../../services/microsoft/microsoft-todo.service.js';
|
|
14
|
+
const logger = LoggerService.getInstance().createComponentLogger('MicrosoftTodoController');
|
|
15
|
+
let deps = null;
|
|
16
|
+
function getDeps() {
|
|
17
|
+
if (!deps) {
|
|
18
|
+
const tokens = MicrosoftTokenService.getInstance();
|
|
19
|
+
deps = { tokens, todo: new MicrosoftTodoService({ tokens }) };
|
|
20
|
+
}
|
|
21
|
+
return deps;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Replace the dependency set (tests).
|
|
25
|
+
*
|
|
26
|
+
* @param next - Deps or null to rebuild lazily
|
|
27
|
+
*/
|
|
28
|
+
export function setMicrosoftTodoControllerDeps(next) {
|
|
29
|
+
deps = next;
|
|
30
|
+
}
|
|
31
|
+
function resolveReturnUrl(req) {
|
|
32
|
+
const explicit = typeof req.query.returnUrl === 'string' ? req.query.returnUrl : '';
|
|
33
|
+
if (/^https?:\/\//i.test(explicit))
|
|
34
|
+
return explicit;
|
|
35
|
+
return `${req.protocol}://${req.get('host')}${MICROSOFT_TODO_CONSTANTS.SETTINGS_RETURN_PATH}`;
|
|
36
|
+
}
|
|
37
|
+
function connectUrlOrNull(req) {
|
|
38
|
+
try {
|
|
39
|
+
return getDeps().tokens.buildConnectUrl(resolveReturnUrl(req));
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Answer a failure with `{ success:false, error, message, hint }` (plus
|
|
47
|
+
* `retryAfter` seconds for `rate_limited`).
|
|
48
|
+
*
|
|
49
|
+
* @param req - Request (for the connect URL hint)
|
|
50
|
+
* @param res - Response
|
|
51
|
+
* @param err - The failure
|
|
52
|
+
*/
|
|
53
|
+
export function sendMicrosoftTodoError(req, res, err) {
|
|
54
|
+
const CODES = MICROSOFT_TODO_CONSTANTS.ERROR_CODES;
|
|
55
|
+
if (err instanceof MicrosoftError) {
|
|
56
|
+
let hint;
|
|
57
|
+
switch (err.code) {
|
|
58
|
+
case CODES.NOT_CONNECTED:
|
|
59
|
+
hint = connectUrlOrNull(req) ?? 'Sign in to Crewly Cloud (Settings → Cloud), then connect Microsoft To Do under Connections.';
|
|
60
|
+
break;
|
|
61
|
+
case CODES.NOT_LOGGED_IN:
|
|
62
|
+
hint = 'Sign in to Crewly Cloud first (Settings → Cloud).';
|
|
63
|
+
break;
|
|
64
|
+
case CODES.NOT_CONFIGURED:
|
|
65
|
+
hint = 'Crewly Cloud is not configured for Microsoft yet; nothing to do on this instance.';
|
|
66
|
+
break;
|
|
67
|
+
case CODES.VALIDATION:
|
|
68
|
+
hint = 'Fix the request and retry.';
|
|
69
|
+
break;
|
|
70
|
+
case CODES.NOT_FOUND:
|
|
71
|
+
hint = 'Check the list name (todo-lists shows them) or the task id (todo-tasks shows them).';
|
|
72
|
+
break;
|
|
73
|
+
case CODES.FORBIDDEN:
|
|
74
|
+
hint =
|
|
75
|
+
'Microsoft refused access. To Do needs an Exchange Online mailbox: personal Microsoft accounts work; a work/school account needs a mailbox licence, and some organisations require admin consent.';
|
|
76
|
+
break;
|
|
77
|
+
case CODES.RATE_LIMITED:
|
|
78
|
+
hint = `Microsoft is throttling; wait ${err.retryAfterSeconds ?? 'a few'} seconds and retry.`;
|
|
79
|
+
break;
|
|
80
|
+
case CODES.UNAUTHORIZED:
|
|
81
|
+
hint = 'Microsoft rejected the token twice; reconnect Microsoft To Do under Connections if this persists.';
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
hint = 'Microsoft Graph or Crewly Cloud failed; retry later.';
|
|
85
|
+
}
|
|
86
|
+
if (err.retryAfterSeconds !== undefined)
|
|
87
|
+
res.setHeader('Retry-After', String(err.retryAfterSeconds));
|
|
88
|
+
res.status(err.status).json({
|
|
89
|
+
success: false,
|
|
90
|
+
error: err.code,
|
|
91
|
+
message: err.message,
|
|
92
|
+
hint,
|
|
93
|
+
...(err.retryAfterSeconds !== undefined ? { retryAfter: err.retryAfterSeconds } : {}),
|
|
94
|
+
});
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
+
logger.error('Unexpected Microsoft To Do failure', { error: message });
|
|
99
|
+
res.status(500).json({ success: false, error: 'internal', message, hint: 'Check the backend log.' });
|
|
100
|
+
}
|
|
101
|
+
function q(req, name) {
|
|
102
|
+
const v = req.query[name];
|
|
103
|
+
return typeof v === 'string' ? v.trim() : '';
|
|
104
|
+
}
|
|
105
|
+
function qInt(req, name) {
|
|
106
|
+
const v = q(req, name);
|
|
107
|
+
return v ? Number.parseInt(v, 10) : undefined;
|
|
108
|
+
}
|
|
109
|
+
function qBool(req, name) {
|
|
110
|
+
return ['1', 'true', 'yes'].includes(q(req, name).toLowerCase());
|
|
111
|
+
}
|
|
112
|
+
function str(value) {
|
|
113
|
+
return typeof value === 'string' ? value : undefined;
|
|
114
|
+
}
|
|
115
|
+
/** GET /api/microsoft-todo/status */
|
|
116
|
+
export async function getStatus(req, res) {
|
|
117
|
+
try {
|
|
118
|
+
res.json({ success: true, data: await getDeps().tokens.status() });
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
sendMicrosoftTodoError(req, res, err);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** GET /api/microsoft-todo/connect-url — `{ url }` to open in the browser. */
|
|
125
|
+
export async function getConnectUrl(req, res) {
|
|
126
|
+
try {
|
|
127
|
+
res.json({ success: true, data: { url: getDeps().tokens.buildConnectUrl(resolveReturnUrl(req)) } });
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
sendMicrosoftTodoError(req, res, err);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** DELETE /api/microsoft-todo/disconnect */
|
|
134
|
+
export async function disconnect(req, res) {
|
|
135
|
+
try {
|
|
136
|
+
res.json({ success: true, data: await getDeps().tokens.disconnect() });
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
sendMicrosoftTodoError(req, res, err);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/** GET /api/microsoft-todo/lists */
|
|
143
|
+
export async function listLists(req, res) {
|
|
144
|
+
try {
|
|
145
|
+
const lists = await getDeps().todo.listLists();
|
|
146
|
+
res.json({ success: true, data: { count: lists.length, lists } });
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
sendMicrosoftTodoError(req, res, err);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/** POST /api/microsoft-todo/lists — `{ name }` */
|
|
153
|
+
export async function createList(req, res) {
|
|
154
|
+
try {
|
|
155
|
+
const body = (req.body ?? {});
|
|
156
|
+
const list = await getDeps().todo.createList(str(body.name) ?? str(body.displayName) ?? '');
|
|
157
|
+
logger.info('To Do list created', { id: list.id, name: list.name });
|
|
158
|
+
res.json({ success: true, data: list });
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
sendMicrosoftTodoError(req, res, err);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/** GET /api/microsoft-todo/tasks?list=&all=&limit= */
|
|
165
|
+
export async function listTasks(req, res) {
|
|
166
|
+
try {
|
|
167
|
+
const out = await getDeps().todo.listTasks({ list: q(req, 'list') || undefined, includeCompleted: qBool(req, 'all'), limit: qInt(req, 'limit') });
|
|
168
|
+
res.json({ success: true, data: { list: out.list, count: out.tasks.length, tasks: out.tasks, ...(out.hasMore ? { hasMore: true } : {}) } });
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
sendMicrosoftTodoError(req, res, err);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/** POST /api/microsoft-todo/tasks — `{ list?, title, note?, due?, importance? }` */
|
|
175
|
+
export async function addTask(req, res) {
|
|
176
|
+
try {
|
|
177
|
+
const body = (req.body ?? {});
|
|
178
|
+
const out = await getDeps().todo.addTask({
|
|
179
|
+
list: str(body.list),
|
|
180
|
+
title: str(body.title) ?? '',
|
|
181
|
+
note: str(body.note),
|
|
182
|
+
due: str(body.due),
|
|
183
|
+
importance: str(body.importance),
|
|
184
|
+
});
|
|
185
|
+
logger.info('To Do task added', { list: out.list.name, id: out.task.id });
|
|
186
|
+
res.json({ success: true, data: out });
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
sendMicrosoftTodoError(req, res, err);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/** PATCH /api/microsoft-todo/tasks/:taskId — `{ list?, complete?, title?, note?, due? (null clears), importance? }` */
|
|
193
|
+
export async function updateTask(req, res) {
|
|
194
|
+
try {
|
|
195
|
+
const body = (req.body ?? {});
|
|
196
|
+
const out = await getDeps().todo.updateTask({
|
|
197
|
+
list: str(body.list),
|
|
198
|
+
taskId: String(req.params.taskId ?? ''),
|
|
199
|
+
title: str(body.title),
|
|
200
|
+
note: str(body.note),
|
|
201
|
+
due: body.due === null ? null : str(body.due),
|
|
202
|
+
importance: str(body.importance),
|
|
203
|
+
complete: typeof body.complete === 'boolean' ? body.complete : undefined,
|
|
204
|
+
});
|
|
205
|
+
logger.info('To Do task updated', { list: out.list.name, id: out.task.id, status: out.task.status });
|
|
206
|
+
res.json({ success: true, data: out });
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
sendMicrosoftTodoError(req, res, err);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/** DELETE /api/microsoft-todo/tasks/:taskId?list= */
|
|
213
|
+
export async function deleteTask(req, res) {
|
|
214
|
+
try {
|
|
215
|
+
const out = await getDeps().todo.deleteTask(q(req, 'list') || undefined, String(req.params.taskId ?? ''));
|
|
216
|
+
logger.info('To Do task deleted', { list: out.list.name, id: out.taskId });
|
|
217
|
+
res.json({ success: true, data: out });
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
sendMicrosoftTodoError(req, res, err);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=microsoft-todo.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-todo.controller.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/microsoft/microsoft-todo.controller.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAC;AAC5G,OAAO,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAE1F,MAAM,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,CAAC;AAQ5F,IAAI,IAAI,GAAuC,IAAI,CAAC;AAEpD,SAAS,OAAO;IACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAwC;IACrF,IAAI,GAAG,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACpF,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,GAAG,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,wBAAwB,CAAC,oBAAoB,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,CAAC;QACH,OAAO,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY,EAAE,GAAa,EAAE,GAAY;IAC9E,MAAM,KAAK,GAAG,wBAAwB,CAAC,WAAW,CAAC;IACnD,IAAI,GAAG,YAAY,cAAc,EAAE,CAAC;QAClC,IAAI,IAAY,CAAC;QACjB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,KAAK,CAAC,aAAa;gBACtB,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,6FAA6F,CAAC;gBAC9H,MAAM;YACR,KAAK,KAAK,CAAC,aAAa;gBACtB,IAAI,GAAG,mDAAmD,CAAC;gBAC3D,MAAM;YACR,KAAK,KAAK,CAAC,cAAc;gBACvB,IAAI,GAAG,mFAAmF,CAAC;gBAC3F,MAAM;YACR,KAAK,KAAK,CAAC,UAAU;gBACnB,IAAI,GAAG,4BAA4B,CAAC;gBACpC,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;gBAClB,IAAI,GAAG,qFAAqF,CAAC;gBAC7F,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;gBAClB,IAAI;oBACF,kMAAkM,CAAC;gBACrM,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;gBACrB,IAAI,GAAG,iCAAiC,GAAG,CAAC,iBAAiB,IAAI,OAAO,qBAAqB,CAAC;gBAC9F,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;gBACrB,IAAI,GAAG,mGAAmG,CAAC;gBAC3G,MAAM;YACR;gBACE,IAAI,GAAG,sDAAsD,CAAC;QAClE,CAAC;QACD,IAAI,GAAG,CAAC,iBAAiB,KAAK,SAAS;YAAE,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,CAAC,IAAI;YACf,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI;YACJ,GAAG,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,CAAC,CAAC,GAAY,EAAE,IAAY;IACnC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,IAAI,CAAC,GAAY,EAAE,IAAY;IACtC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC;AAED,SAAS,KAAK,CAAC,GAAY,EAAE,IAAY;IACvC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,GAAG,CAAC,KAAc;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,GAAa;IACzD,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAY,EAAE,GAAa;IAC7D,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,GAAa;IAC1D,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,oCAAoC;AACpC,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,GAAa;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,GAAa;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA8C,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAY,EAAE,GAAa;IACzD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,gBAAgB,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAClJ,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9I,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAY,EAAE,GAAa;IACvD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YACvC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAClB,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,uHAAuH;AACvH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,GAAa;IAC1D,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;YACvC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7C,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrG,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY,EAAE,GAAa;IAC1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1G,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3E,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft To Do routes — mounted at `/api/microsoft-todo`.
|
|
3
|
+
*
|
|
4
|
+
* Everything after /disconnect is behind the connector's role allowlist.
|
|
5
|
+
*
|
|
6
|
+
* - GET /status — grant status
|
|
7
|
+
* - GET /connect-url — Cloud consent-start URL
|
|
8
|
+
* - DELETE /disconnect — forget the grant
|
|
9
|
+
* - GET /lists — every task list
|
|
10
|
+
* - POST /lists — { name }
|
|
11
|
+
* - GET /tasks — ?list=<name|id>&all=1&limit=
|
|
12
|
+
* - POST /tasks — { list?, title, note?, due?, importance? }
|
|
13
|
+
* - PATCH /tasks/:taskId — { list?, complete?, title?, note?, due? (null clears), importance? }
|
|
14
|
+
* - DELETE /tasks/:taskId — ?list=<name|id>
|
|
15
|
+
*
|
|
16
|
+
* @module controllers/microsoft/microsoft-todo.routes
|
|
17
|
+
*/
|
|
18
|
+
import { Router } from 'express';
|
|
19
|
+
/**
|
|
20
|
+
* Creates the Microsoft To Do router.
|
|
21
|
+
*
|
|
22
|
+
* @returns Express router
|
|
23
|
+
*/
|
|
24
|
+
export declare function createMicrosoftTodoRouter(): Router;
|
|
25
|
+
//# sourceMappingURL=microsoft-todo.routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-todo.routes.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/controllers/microsoft/microsoft-todo.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAclD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft To Do routes — mounted at `/api/microsoft-todo`.
|
|
3
|
+
*
|
|
4
|
+
* Everything after /disconnect is behind the connector's role allowlist.
|
|
5
|
+
*
|
|
6
|
+
* - GET /status — grant status
|
|
7
|
+
* - GET /connect-url — Cloud consent-start URL
|
|
8
|
+
* - DELETE /disconnect — forget the grant
|
|
9
|
+
* - GET /lists — every task list
|
|
10
|
+
* - POST /lists — { name }
|
|
11
|
+
* - GET /tasks — ?list=<name|id>&all=1&limit=
|
|
12
|
+
* - POST /tasks — { list?, title, note?, due?, importance? }
|
|
13
|
+
* - PATCH /tasks/:taskId — { list?, complete?, title?, note?, due? (null clears), importance? }
|
|
14
|
+
* - DELETE /tasks/:taskId — ?list=<name|id>
|
|
15
|
+
*
|
|
16
|
+
* @module controllers/microsoft/microsoft-todo.routes
|
|
17
|
+
*/
|
|
18
|
+
import { Router } from 'express';
|
|
19
|
+
import { MICROSOFT_TODO_CONSTANTS } from '../../constants.js';
|
|
20
|
+
import { requireConnectorAccess } from '../connector/connector.controller.js';
|
|
21
|
+
import { getStatus, getConnectUrl, disconnect, listLists, createList, listTasks, addTask, updateTask, deleteTask } from './microsoft-todo.controller.js';
|
|
22
|
+
/**
|
|
23
|
+
* Creates the Microsoft To Do router.
|
|
24
|
+
*
|
|
25
|
+
* @returns Express router
|
|
26
|
+
*/
|
|
27
|
+
export function createMicrosoftTodoRouter() {
|
|
28
|
+
const router = Router();
|
|
29
|
+
router.get('/status', getStatus);
|
|
30
|
+
router.get('/connect-url', getConnectUrl);
|
|
31
|
+
router.delete('/disconnect', disconnect);
|
|
32
|
+
// Data routes only — see the note in google.routes.ts.
|
|
33
|
+
router.use(requireConnectorAccess(MICROSOFT_TODO_CONSTANTS.CONNECTOR_ID));
|
|
34
|
+
router.get('/lists', listLists);
|
|
35
|
+
router.post('/lists', createList);
|
|
36
|
+
router.get('/tasks', listTasks);
|
|
37
|
+
router.post('/tasks', addTask);
|
|
38
|
+
router.patch('/tasks/:taskId', updateTask);
|
|
39
|
+
router.delete('/tasks/:taskId', deleteTask);
|
|
40
|
+
return router;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=microsoft-todo.routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft-todo.routes.js","sourceRoot":"","sources":["../../../../../../backend/src/controllers/microsoft/microsoft-todo.routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAEzJ;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,uDAAuD;IACvD,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AAyCA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../backend/src/index.ts"],"names":[],"mappings":";AAyCA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAqKjD,qBAAa,YAAY;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAqE;IACnF,gFAAgF;IAChF,OAAO,CAAC,iBAAiB,CAAC,CAAyD;IAEnF,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,sBAAsB,CAA0B;IACxD,OAAO,CAAC,4BAA4B,CAAgC;IACpE,OAAO,CAAC,uBAAuB,CAA2B;IAC1D,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,qBAAqB,CAAyB;IACtD,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,eAAe,CAAmB;IAC1C,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,sBAAsB,CAAiD;IAC/E,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,kGAAkG;IAClG,OAAO,CAAC,sBAAsB,CAAuC;IAGrE,OAAO,CAAC,+BAA+B,CAAgD;IACvF,+FAA+F;IAC/F,OAAO,CAAC,oBAAoB,CAAqC;IACjE,8HAA8H;IAC9H,OAAO,CAAC,0BAA0B,CAA2C;IAC7E,OAAO,CAAC,6BAA6B,CAA8C;IACnF,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,2BAA2B,CAA+B;IAClE,OAAO,CAAC,0BAA0B,CAA8B;IAChE,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,kBAAkB,CAA0C;IAKpE,OAAO,CAAC,aAAa,CAAuE;IAC5F,OAAO,CAAC,gBAAgB,CAET;IAGf,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,wBAAwB,CAA+B;gBAEnD,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAmE3C,OAAO,CAAC,kBAAkB;IA83B1B,OAAO,CAAC,mBAAmB;IAmD3B,OAAO,CAAC,eAAe;IAyKvB,OAAO,CAAC,kBAAkB;IAwBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAi2C5B;;;OAGG;YACW,2BAA2B;IAkCzC;;;OAGG;YACW,8BAA8B;IAsB5C;;;OAGG;YACW,gCAAgC;IAsB9C;;;OAGG;YACW,8BAA8B;IAsB5C;;;;OAIG;YACW,8BAA8B;IAuL5C;;;;;OAKG;YACW,iCAAiC;IAqJ/C;;;;OAIG;YACW,2BAA2B;YA0B3B,qBAAqB;IAsBnC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB;YA6BZ,eAAe;YAoFf,kBAAkB;IAgBhC,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,qBAAqB;IAoC7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA0D1B;;;;;;;;;OASG;IACH;;;;;;;;;;;;;;OAcG;YACW,wBAAwB;IAWtC,OAAO,CAAC,qBAAqB;IAqH7B,OAAO,CAAC,cAAc;IAchB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqV/B,SAAS,IAAI,aAAa;CAG1B;AAmCD,eAAe,YAAY,CAAC"}
|
|
@@ -101,6 +101,7 @@ import { FissionGuardService, createFailOpenBudgetChecker } from './services/fis
|
|
|
101
101
|
import { BudgetService } from './services/autonomous/budget.service.js';
|
|
102
102
|
import { setFissionGuardService } from './controllers/fission/fission.controller.js';
|
|
103
103
|
import { TaskPoolService } from './services/task-pool/task-pool.service.js';
|
|
104
|
+
import { sessionsWithWorkInHand } from './services/agent/restore-filter.js';
|
|
104
105
|
import { ProjectMemoryService } from './services/memory/project-memory.service.js';
|
|
105
106
|
import { TaskHistorySubscriber } from './services/memory/task-history.subscriber.js';
|
|
106
107
|
import { TeamHealthWatchdogService, LiveTeamHealthDataProvider, loadTeamHealthConfig, setTeamHealthWatchdogSingleton, getTeamHealthWatchdogSingleton, } from './services/team-health/index.js';
|
|
@@ -2859,20 +2860,14 @@ export class CrewlyServer {
|
|
|
2859
2860
|
try {
|
|
2860
2861
|
const pool = TaskPoolService.getInstance();
|
|
2861
2862
|
const allItems = await pool.getAllItems();
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
if (wi.status === 'done' || wi.status === 'cancelled')
|
|
2865
|
-
continue;
|
|
2866
|
-
const t = wi.target;
|
|
2867
|
-
if (typeof t === 'string' && t.length > 0)
|
|
2868
|
-
targetedSessions.add(t);
|
|
2869
|
-
}
|
|
2863
|
+
// Work in hand only: active statuses, touched recently (see restore-filter).
|
|
2864
|
+
const targetedSessions = sessionsWithWorkInHand(allItems);
|
|
2870
2865
|
const filtered = baselineSessions.filter((s) => targetedSessions.has(s.name));
|
|
2871
2866
|
const skipped = baselineSessions
|
|
2872
2867
|
.filter((s) => !targetedSessions.has(s.name))
|
|
2873
2868
|
.map((s) => s.name);
|
|
2874
2869
|
if (skipped.length > 0) {
|
|
2875
|
-
this.logger.info('Skipping auto-restore for sessions with no
|
|
2870
|
+
this.logger.info('Skipping auto-restore for sessions with no work in hand (idle agents stay down until work or a message wakes them)', {
|
|
2876
2871
|
skippedCount: skipped.length,
|
|
2877
2872
|
skipped: skipped.slice(0, 20),
|
|
2878
2873
|
truncated: skipped.length > 20,
|