huly-mcp-selfhost 3.3.0 → 3.5.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 (217) hide show
  1. package/.env.example +11 -0
  2. package/CHANGELOG.md +22 -0
  3. package/README.md +126 -17
  4. package/dist/guides/costs.md +2 -1
  5. package/dist/guides/workflow.md +3 -1
  6. package/dist/index.js +105034 -46
  7. package/dist/setup.js +4 -0
  8. package/package.json +12 -11
  9. package/dist/connection.d.ts +0 -78
  10. package/dist/connection.js +0 -271
  11. package/dist/connection.js.map +0 -1
  12. package/dist/env.d.ts +0 -1
  13. package/dist/env.js +0 -17
  14. package/dist/env.js.map +0 -1
  15. package/dist/guard.d.ts +0 -39
  16. package/dist/guard.js +0 -165
  17. package/dist/guard.js.map +0 -1
  18. package/dist/index.d.ts +0 -2
  19. package/dist/index.js.map +0 -1
  20. package/dist/junit-cli.d.ts +0 -8
  21. package/dist/junit-cli.js +0 -106
  22. package/dist/junit-cli.js.map +0 -1
  23. package/dist/registry.d.ts +0 -18
  24. package/dist/registry.js +0 -318
  25. package/dist/registry.js.map +0 -1
  26. package/dist/resources.d.ts +0 -19
  27. package/dist/resources.js +0 -255
  28. package/dist/resources.js.map +0 -1
  29. package/dist/schemas.d.ts +0 -1559
  30. package/dist/schemas.js +0 -1086
  31. package/dist/schemas.js.map +0 -1
  32. package/dist/server.d.ts +0 -29
  33. package/dist/server.js +0 -215
  34. package/dist/server.js.map +0 -1
  35. package/dist/tools/activity.d.ts +0 -10
  36. package/dist/tools/activity.js +0 -62
  37. package/dist/tools/activity.js.map +0 -1
  38. package/dist/tools/agent.d.ts +0 -156
  39. package/dist/tools/agent.js +0 -523
  40. package/dist/tools/agent.js.map +0 -1
  41. package/dist/tools/attachments.d.ts +0 -31
  42. package/dist/tools/attachments.js +0 -61
  43. package/dist/tools/attachments.js.map +0 -1
  44. package/dist/tools/calendar.d.ts +0 -49
  45. package/dist/tools/calendar.js +0 -116
  46. package/dist/tools/calendar.js.map +0 -1
  47. package/dist/tools/cards.d.ts +0 -87
  48. package/dist/tools/cards.js +0 -246
  49. package/dist/tools/cards.js.map +0 -1
  50. package/dist/tools/channels.d.ts +0 -118
  51. package/dist/tools/channels.js +0 -211
  52. package/dist/tools/channels.js.map +0 -1
  53. package/dist/tools/comments.d.ts +0 -42
  54. package/dist/tools/comments.js +0 -77
  55. package/dist/tools/comments.js.map +0 -1
  56. package/dist/tools/components.d.ts +0 -45
  57. package/dist/tools/components.js +0 -107
  58. package/dist/tools/components.js.map +0 -1
  59. package/dist/tools/contacts.d.ts +0 -69
  60. package/dist/tools/contacts.js +0 -130
  61. package/dist/tools/contacts.js.map +0 -1
  62. package/dist/tools/crm.d.ts +0 -61
  63. package/dist/tools/crm.js +0 -117
  64. package/dist/tools/crm.js.map +0 -1
  65. package/dist/tools/documents.d.ts +0 -100
  66. package/dist/tools/documents.js +0 -294
  67. package/dist/tools/documents.js.map +0 -1
  68. package/dist/tools/drive.d.ts +0 -107
  69. package/dist/tools/drive.js +0 -277
  70. package/dist/tools/drive.js.map +0 -1
  71. package/dist/tools/fields.d.ts +0 -33
  72. package/dist/tools/fields.js +0 -124
  73. package/dist/tools/fields.js.map +0 -1
  74. package/dist/tools/generic.d.ts +0 -72
  75. package/dist/tools/generic.js +0 -242
  76. package/dist/tools/generic.js.map +0 -1
  77. package/dist/tools/github.d.ts +0 -21
  78. package/dist/tools/github.js +0 -80
  79. package/dist/tools/github.js.map +0 -1
  80. package/dist/tools/hr.d.ts +0 -97
  81. package/dist/tools/hr.js +0 -150
  82. package/dist/tools/hr.js.map +0 -1
  83. package/dist/tools/inbox.d.ts +0 -23
  84. package/dist/tools/inbox.js +0 -76
  85. package/dist/tools/inbox.js.map +0 -1
  86. package/dist/tools/inventory.d.ts +0 -61
  87. package/dist/tools/inventory.js +0 -103
  88. package/dist/tools/inventory.js.map +0 -1
  89. package/dist/tools/issues.d.ts +0 -112
  90. package/dist/tools/issues.js +0 -474
  91. package/dist/tools/issues.js.map +0 -1
  92. package/dist/tools/labels.d.ts +0 -87
  93. package/dist/tools/labels.js +0 -232
  94. package/dist/tools/labels.js.map +0 -1
  95. package/dist/tools/log-time.d.ts +0 -25
  96. package/dist/tools/log-time.js +0 -95
  97. package/dist/tools/log-time.js.map +0 -1
  98. package/dist/tools/meetings.d.ts +0 -30
  99. package/dist/tools/meetings.js +0 -78
  100. package/dist/tools/meetings.js.map +0 -1
  101. package/dist/tools/members.d.ts +0 -8
  102. package/dist/tools/members.js +0 -33
  103. package/dist/tools/members.js.map +0 -1
  104. package/dist/tools/message-templates.d.ts +0 -54
  105. package/dist/tools/message-templates.js +0 -88
  106. package/dist/tools/message-templates.js.map +0 -1
  107. package/dist/tools/milestones.d.ts +0 -56
  108. package/dist/tools/milestones.js +0 -172
  109. package/dist/tools/milestones.js.map +0 -1
  110. package/dist/tools/organizations.d.ts +0 -37
  111. package/dist/tools/organizations.js +0 -88
  112. package/dist/tools/organizations.js.map +0 -1
  113. package/dist/tools/overview.d.ts +0 -55
  114. package/dist/tools/overview.js +0 -395
  115. package/dist/tools/overview.js.map +0 -1
  116. package/dist/tools/planner.d.ts +0 -60
  117. package/dist/tools/planner.js +0 -145
  118. package/dist/tools/planner.js.map +0 -1
  119. package/dist/tools/process.d.ts +0 -50
  120. package/dist/tools/process.js +0 -137
  121. package/dist/tools/process.js.map +0 -1
  122. package/dist/tools/products.d.ts +0 -17
  123. package/dist/tools/products.js +0 -45
  124. package/dist/tools/products.js.map +0 -1
  125. package/dist/tools/projects.d.ts +0 -41
  126. package/dist/tools/projects.js +0 -93
  127. package/dist/tools/projects.js.map +0 -1
  128. package/dist/tools/qms.d.ts +0 -57
  129. package/dist/tools/qms.js +0 -171
  130. package/dist/tools/qms.js.map +0 -1
  131. package/dist/tools/recruiting.d.ts +0 -112
  132. package/dist/tools/recruiting.js +0 -203
  133. package/dist/tools/recruiting.js.map +0 -1
  134. package/dist/tools/relations.d.ts +0 -72
  135. package/dist/tools/relations.js +0 -192
  136. package/dist/tools/relations.js.map +0 -1
  137. package/dist/tools/search.d.ts +0 -23
  138. package/dist/tools/search.js +0 -60
  139. package/dist/tools/search.js.map +0 -1
  140. package/dist/tools/sharing.d.ts +0 -62
  141. package/dist/tools/sharing.js +0 -149
  142. package/dist/tools/sharing.js.map +0 -1
  143. package/dist/tools/statuses.d.ts +0 -19
  144. package/dist/tools/statuses.js +0 -93
  145. package/dist/tools/statuses.js.map +0 -1
  146. package/dist/tools/surveys.d.ts +0 -22
  147. package/dist/tools/surveys.js +0 -53
  148. package/dist/tools/surveys.js.map +0 -1
  149. package/dist/tools/templates.d.ts +0 -95
  150. package/dist/tools/templates.js +0 -260
  151. package/dist/tools/templates.js.map +0 -1
  152. package/dist/tools/test-automation.d.ts +0 -81
  153. package/dist/tools/test-automation.js +0 -225
  154. package/dist/tools/test-automation.js.map +0 -1
  155. package/dist/tools/testing.d.ts +0 -234
  156. package/dist/tools/testing.js +0 -401
  157. package/dist/tools/testing.js.map +0 -1
  158. package/dist/tools/workspace-admin.d.ts +0 -55
  159. package/dist/tools/workspace-admin.js +0 -117
  160. package/dist/tools/workspace-admin.js.map +0 -1
  161. package/dist/tools/workspaces.d.ts +0 -6
  162. package/dist/tools/workspaces.js +0 -19
  163. package/dist/tools/workspaces.js.map +0 -1
  164. package/dist/utils/attributes.d.ts +0 -37
  165. package/dist/utils/attributes.js +0 -188
  166. package/dist/utils/attributes.js.map +0 -1
  167. package/dist/utils/classes.d.ts +0 -51
  168. package/dist/utils/classes.js +0 -73
  169. package/dist/utils/classes.js.map +0 -1
  170. package/dist/utils/content.d.ts +0 -11
  171. package/dist/utils/content.js +0 -86
  172. package/dist/utils/content.js.map +0 -1
  173. package/dist/utils/errors.d.ts +0 -11
  174. package/dist/utils/errors.js +0 -24
  175. package/dist/utils/errors.js.map +0 -1
  176. package/dist/utils/files.d.ts +0 -5
  177. package/dist/utils/files.js +0 -50
  178. package/dist/utils/files.js.map +0 -1
  179. package/dist/utils/format.d.ts +0 -8
  180. package/dist/utils/format.js +0 -57
  181. package/dist/utils/format.js.map +0 -1
  182. package/dist/utils/junit.d.ts +0 -13
  183. package/dist/utils/junit.js +0 -81
  184. package/dist/utils/junit.js.map +0 -1
  185. package/dist/utils/markdown.d.ts +0 -14
  186. package/dist/utils/markdown.js +0 -149
  187. package/dist/utils/markdown.js.map +0 -1
  188. package/dist/utils/meeting.d.ts +0 -13
  189. package/dist/utils/meeting.js +0 -118
  190. package/dist/utils/meeting.js.map +0 -1
  191. package/dist/utils/people.d.ts +0 -25
  192. package/dist/utils/people.js +0 -80
  193. package/dist/utils/people.js.map +0 -1
  194. package/dist/utils/redact.d.ts +0 -3
  195. package/dist/utils/redact.js +0 -26
  196. package/dist/utils/redact.js.map +0 -1
  197. package/dist/utils/resolve.d.ts +0 -17
  198. package/dist/utils/resolve.js +0 -54
  199. package/dist/utils/resolve.js.map +0 -1
  200. package/dist/utils/spec.d.ts +0 -10
  201. package/dist/utils/spec.js +0 -90
  202. package/dist/utils/spec.js.map +0 -1
  203. package/dist/utils/storage.d.ts +0 -7
  204. package/dist/utils/storage.js +0 -86
  205. package/dist/utils/storage.js.map +0 -1
  206. package/dist/utils/tasks.d.ts +0 -22
  207. package/dist/utils/tasks.js +0 -81
  208. package/dist/utils/tasks.js.map +0 -1
  209. package/dist/watch.d.ts +0 -62
  210. package/dist/watch.js +0 -405
  211. package/dist/watch.js.map +0 -1
  212. package/scripts/cleanup-issues.js +0 -141
  213. package/scripts/copy-guides.js +0 -18
  214. package/scripts/demo.js +0 -201
  215. package/scripts/import-csv.js +0 -250
  216. package/scripts/sample-tasks.csv +0 -11
  217. package/scripts/setup.js +0 -163
@@ -1,395 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.releaseNotes = exports.triageInbox = exports.plain = exports.standup = exports.projectReport = exports.myDay = void 0;
7
- exports.dayStart = dayStart;
8
- exports.myDayText = myDayText;
9
- exports.lastWorkingDay = lastWorkingDay;
10
- // Overviews that combine several modules in one call: "my day" (calendar, to-dos, my issues,
11
- // reviews, inbox) so Claude can answer "what's on today?" without five round trips, and a
12
- // project report for a period (weekly report).
13
- const tracker_1 = __importDefault(require("@hcengineering/tracker"));
14
- const task_1 = __importDefault(require("@hcengineering/task"));
15
- const core_1 = require("@hcengineering/core");
16
- const connection_1 = require("../connection");
17
- const errors_1 = require("../utils/errors");
18
- const classes_1 = require("../utils/classes");
19
- const format_1 = require("../utils/format");
20
- const people_1 = require("../utils/people");
21
- const agent_1 = require("./agent");
22
- const resolve_1 = require("../utils/resolve");
23
- const DAY = 86_400_000;
24
- const day = (ts) => new Date(ts).toISOString().slice(0, 10);
25
- const hm = (ts) => new Date(ts).toISOString().slice(11, 16);
26
- /** Start of the given day (UTC, like the calendar tools) or of today. */
27
- function dayStart(date) {
28
- if (date == null)
29
- return Date.parse(new Date().toISOString().slice(0, 10));
30
- const t = Date.parse(date.slice(0, 10));
31
- if (Number.isNaN(t))
32
- throw new Error(`date must be YYYY-MM-DD, got '${date}'.`);
33
- return t;
34
- }
35
- const due = (ts, from) => {
36
- if (ts == null)
37
- return '';
38
- if (ts < from)
39
- return ` · ⚠️ overdue (${day(ts)})`;
40
- if (ts < from + DAY)
41
- return ' · due today';
42
- return ` · due ${day(ts)}`;
43
- };
44
- exports.myDay = (0, errors_1.wrapToolHandler)(async (args) => await myDayText(await (0, connection_1.getConnection)(args.workspace), args.date, args.limit ?? 10));
45
- async function myDayText(client, date, limit) {
46
- const from = dayStart(date);
47
- const to = from + DAY - 1;
48
- const [me, uuid] = await Promise.all([(0, people_1.currentPerson)(client), (0, people_1.currentAccountUuid)(client)]);
49
- const [events, todos, issues, prs, unread] = await Promise.all([
50
- client.findAll(classes_1.C.Event, { date: { $lte: to }, dueDate: { $gte: from } }, { sort: { date: core_1.SortingOrder.Ascending } }),
51
- client.findAll(classes_1.C.ToDo, { user: me._id, doneOn: null }, { sort: { rank: core_1.SortingOrder.Ascending } }),
52
- client.findAll(tracker_1.default.class.Issue, { assignee: me._id }),
53
- client.findAll(classes_1.C.PullRequest, { state: 0 }),
54
- client.findAll(classes_1.C.InboxNotification, { user: uuid, isViewed: false, archived: false }, { sort: { createdOn: core_1.SortingOrder.Descending }, limit: 500 })
55
- ]);
56
- const out = [`# My day — ${day(from)} (times UTC)`];
57
- // Calendar: own events and work slots (the query also returns other people's public events).
58
- const mine = events.filter((e) => (e.participants ?? []).includes(me._id) || String(e.calendar ?? '').startsWith(uuid) || e.user === me._id);
59
- out.push('', `## Calendar (${mine.length})`);
60
- if (mine.length === 0)
61
- out.push('Nothing scheduled.');
62
- for (const e of mine.slice(0, limit)) {
63
- const when = e.allDay === true ? 'all day' : `${hm(Math.max(e.date, from))}–${hm(Math.min(e.dueDate, to))}`;
64
- const slot = e._class === classes_1.C.WorkSlot ? ` · work slot for ${await (0, resolve_1.loadLabel)(client, e.attachedToClass, e.attachedTo)}` : '';
65
- out.push(`- ${when} **${String(e.title)}**${e.location != null && e.location !== '' ? ` · 📍 ${String(e.location)}` : ''}${slot}`);
66
- }
67
- // To-dos: overdue and due today first, then the top of the planner.
68
- const urgency = (t) => t.dueDate == null ? 2 : t.dueDate <= to ? 0 : 1;
69
- const sortedTodos = [...todos].sort((a, b) => urgency(a) - urgency(b));
70
- const dueNow = todos.filter((t) => t.dueDate != null && t.dueDate <= to).length;
71
- out.push('', `## To-dos (${todos.length} open${dueNow > 0 ? `, ${dueNow} due by today` : ''})`);
72
- if (todos.length === 0)
73
- out.push('No open to-dos.');
74
- for (const t of sortedTodos.slice(0, limit)) {
75
- const prio = t.priority != null && t.priority !== classes_1.TODO_PRIORITY.NoPriority ? ` · ${String(classes_1.TODO_PRIORITY_LABEL[t.priority] ?? t.priority)}` : '';
76
- out.push(`- [ ] **${String(t.title)}**${prio}${due(t.dueDate, from)} — \`${String(t._id)}\``);
77
- }
78
- // My issues: open ones, in progress first, then by due date and priority.
79
- const statuses = issues.length > 0 ? await client.findAll('core:class:Status', { _id: { $in: [...new Set(issues.map((i) => i.status))] } }) : [];
80
- const st = new Map(statuses.map((s) => [s._id, s]));
81
- const closed = new Set([task_1.default.statusCategory.Won, task_1.default.statusCategory.Lost]);
82
- // PRs are issues too (github:class:GithubPullRequest); they belong to the reviews section.
83
- const open = issues.filter((i) => i._class !== classes_1.C.PullRequest && !closed.has(st.get(i.status)?.category));
84
- const active = (i) => st.get(i.status)?.category === task_1.default.statusCategory.Active ? 0 : 1;
85
- open.sort((a, b) => active(a) - active(b) || (a.dueDate ?? Infinity) - (b.dueDate ?? Infinity) || (a.priority || 9) - (b.priority || 9));
86
- out.push('', `## My issues (${open.length} open, ${open.filter((i) => active(i) === 0).length} in progress)`);
87
- if (open.length === 0)
88
- out.push('No open issues assigned to you.');
89
- for (const i of open.slice(0, limit)) {
90
- const prio = i.priority != null && i.priority !== 0 ? ` · ${(0, format_1.priorityLabel)(i.priority)}` : '';
91
- out.push(`- **${String(i.identifier)}** ${String(i.title)} — ${String(st.get(i.status)?.name ?? '?')}${prio}${due(i.dueDate, from)}`);
92
- }
93
- // Reviews: open PRs that ask me to review, and my own open PRs with their review state.
94
- const DECISION = ['changes requested', 'approved', 'review required'];
95
- const toReview = prs.filter((p) => (p.reviewers ?? []).includes(me._id));
96
- const own = prs.filter((p) => p.assignee === me._id && !toReview.includes(p));
97
- out.push('', `## Reviews (${toReview.length} for you, ${own.length} of yours open)`);
98
- if (toReview.length + own.length === 0)
99
- out.push('No open pull requests for you.');
100
- for (const p of toReview.slice(0, limit))
101
- out.push(`- 👀 **${String(p.identifier)}** ${String(p.title)}${p.draft === true ? ' · draft' : ''}`);
102
- for (const p of own.slice(0, limit))
103
- out.push(`- **${String(p.identifier)}** ${String(p.title)} · ${p.reviewDecision != null ? DECISION[p.reviewDecision] ?? p.reviewDecision : 'no review yet'}${p.draft === true ? ' · draft' : ''}`);
104
- // Inbox: unread notifications grouped by object, newest first.
105
- const groups = new Map();
106
- for (const n of unread)
107
- groups.set(n.docNotifyContext, [...(groups.get(n.docNotifyContext) ?? []), n]);
108
- out.push('', `## Inbox (${unread.length}${unread.length === 500 ? '+' : ''} unread on ${groups.size} item(s))`);
109
- if (unread.length === 0)
110
- out.push('Inbox zero.');
111
- const ctxs = groups.size > 0 ? await client.findAll(classes_1.C.DocNotifyContext, { _id: { $in: [...groups.keys()].slice(0, limit) } }) : [];
112
- for (const [ctxId, notes] of [...groups.entries()].slice(0, limit)) {
113
- const ctx = ctxs.find((c) => c._id === ctxId);
114
- const cls = ctx?.objectClass ?? notes[0].objectClass;
115
- const label = cls != null ? await (0, resolve_1.loadLabel)(client, cls, ctx?.objectId ?? notes[0].objectId) : '(unknown)';
116
- out.push(`- **${label}** — ${notes.length} unread`);
117
- }
118
- if (unread.length > 0)
119
- out.push(`_${groups.size > limit ? `${groups.size - limit} more. ` : ''}Work through them: triage_inbox._`);
120
- return out.join('\n');
121
- }
122
- // ── Project report: what happened in a project over a period (default: last 7 days) ──
123
- const pct = (part, total) => total === 0 ? '—' : `${Math.round(100 * part / total)}%`;
124
- exports.projectReport = (0, errors_1.wrapToolHandler)(async (args) => {
125
- const client = await (0, connection_1.getConnection)(args.workspace);
126
- const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.projectIdentifier });
127
- if (project == null)
128
- throw new Error(`Project '${args.projectIdentifier}' not found.`);
129
- const since = (0, agent_1.parseSince)(args.since ?? '7d');
130
- const now = Date.now();
131
- const all = await client.findAll(tracker_1.default.class.Issue, { space: project._id });
132
- const issues = all.filter((i) => i._class !== classes_1.C.PullRequest);
133
- const prs = all.filter((i) => i._class === classes_1.C.PullRequest);
134
- const ids = issues.map((i) => i._id);
135
- const [statuses, milestones, reports, statusMsgs] = await Promise.all([
136
- client.findAll('core:class:Status', { _id: { $in: [...new Set(all.map((i) => i.status))] } }),
137
- client.findAll(tracker_1.default.class.Milestone, { space: project._id }),
138
- ids.length > 0 ? client.findAll(tracker_1.default.class.TimeSpendReport, { attachedTo: { $in: ids } }) : [],
139
- ids.length > 0 ? client.findAll(classes_1.C.DocUpdateMessage, { attachedTo: { $in: ids }, createdOn: { $gte: since } }) : []
140
- ]);
141
- const names = await (0, people_1.peopleNames)(client);
142
- const st = new Map(statuses.map((s) => [s._id, s]));
143
- const cat = (i) => st.get(i.status)?.category;
144
- const won = (i) => cat(i) === task_1.default.statusCategory.Won;
145
- const isOpen = (i) => !won(i) && cat(i) !== task_1.default.statusCategory.Lost;
146
- const who = (i) => i.assignee != null ? ` · ${names.get(i.assignee) ?? '?'}` : '';
147
- const line = (i, extra = '') => `- **${String(i.identifier)}** ${String(i.title)}${extra}${who(i)}`;
148
- // Done in the period: done now and its status changed in the period. modifiedOn is no use here —
149
- // GitHub sync touches closed issues long after they were finished.
150
- const statusChanged = new Set(statusMsgs.filter((m) => m.attributeUpdates?.attrKey === 'status').map((m) => m.attachedTo));
151
- const done = issues.filter((i) => won(i) && statusChanged.has(i._id));
152
- const created = issues.filter((i) => (i.createdOn ?? 0) >= since);
153
- const open = issues.filter(isOpen);
154
- const active = open.filter((i) => cat(i) === task_1.default.statusCategory.Active);
155
- const openIds = new Set(open.map((i) => i._id));
156
- const blocked = open.filter((i) => (i.blockedBy ?? []).some((b) => openIds.has(b._id ?? b)));
157
- const overdue = open.filter((i) => i.dueDate != null && i.dueDate < now);
158
- const stale = active.filter((i) => (i.modifiedOn ?? 0) < since);
159
- const merged = prs.filter((p) => p.state === 2 && (p.mergedAt ?? p.modifiedOn ?? 0) >= since);
160
- const openPrs = prs.filter((p) => p.state === 0);
161
- const time = reports.filter((r) => (r.date ?? 0) >= since);
162
- const hours = time.reduce((s, r) => s + (r.value ?? 0), 0);
163
- const L = 15;
164
- const section = (title, list, render = (i) => line(i)) => {
165
- if (list.length === 0)
166
- return;
167
- out.push('', `## ${title} (${list.length})`, ...list.slice(0, L).map(render));
168
- if (list.length > L)
169
- out.push(`_…${list.length - L} more_`);
170
- };
171
- const out = [
172
- `# ${String(project.name)} (${String(project.identifier)}) — ${day(since)} to ${day(now)}`,
173
- '',
174
- `**${done.length} done · ${created.length} new · ${open.length} open (${active.length} in progress) · ${blocked.length} blocked · ${overdue.length} overdue · ${merged.length} PRs merged · ${Math.round(hours * 10) / 10}h logged**`
175
- ];
176
- section('Done', done);
177
- section('New', created, (i) => line(i, ` — ${String(st.get(i.status)?.name ?? '?')}`));
178
- section('In progress', active, (i) => line(i, stale.includes(i) ? ' · ⚠️ no change in this period' : ''));
179
- section('Blocked', blocked, (i) => line(i, ` — by ${i.blockedBy.map((b) => String(all.find((x) => x._id === (b._id ?? b))?.identifier ?? '?')).join(', ')}`));
180
- section('Overdue', overdue, (i) => line(i, ` — due ${day(i.dueDate)}`));
181
- section('Pull requests merged', merged);
182
- section('Pull requests open', openPrs, (p) => line(p, p.reviewDecision != null ? ` · ${['changes requested', 'approved', 'review required'][p.reviewDecision] ?? ''}` : ''));
183
- const ms = milestones.filter((m) => m.status !== 2 && m.status !== 3).sort((a, b) => (a.targetDate ?? Infinity) - (b.targetDate ?? Infinity));
184
- section('Milestones', ms, (m) => {
185
- const of = issues.filter((i) => i.milestone === m._id);
186
- const late = m.targetDate != null && m.targetDate < now ? ' ⚠️ past target' : '';
187
- return `- **${String(m.label)}** — ${of.filter(won).length}/${of.length} done (${pct(of.filter(won).length, of.length)})${m.targetDate != null ? `, target ${day(m.targetDate)}${late}` : ''}`;
188
- });
189
- if (time.length > 0) {
190
- const per = new Map();
191
- for (const r of time) {
192
- const n = names.get(r.employee) ?? '?';
193
- per.set(n, (per.get(n) ?? 0) + (r.value ?? 0));
194
- }
195
- out.push('', '## Time logged', ...[...per].sort((a, b) => b[1] - a[1]).map(([n, h]) => `- ${n}: ${Math.round(h * 10) / 10}h`));
196
- }
197
- return out.join('\n');
198
- });
199
- // ── Standup: what I did since the last working day, what's on today, what blocks me ──
200
- /** Start of the previous working day (Monday → Friday), UTC. */
201
- function lastWorkingDay(now = Date.now()) {
202
- const today = dayStart(new Date(now).toISOString());
203
- const dow = new Date(today).getUTCDay(); // 0 Sun … 6 Sat
204
- const back = dow === 1 ? 3 : dow === 0 ? 2 : 1;
205
- return today - back * DAY;
206
- }
207
- /** Sections of a markdown text by "## " heading. */
208
- const sections = (md) => new Map(md.split(/\n(?=## )/).filter((s) => s.startsWith('## ')).map((s) => [s.split('\n')[0].replace(/^## | \(.*$/g, ''), s.trim()]));
209
- exports.standup = (0, errors_1.wrapToolHandler)(async (args) => {
210
- const client = await (0, connection_1.getConnection)(args.workspace);
211
- const since = args.since != null ? (0, agent_1.parseSince)(args.since) : lastWorkingDay();
212
- const me = await (0, people_1.currentPerson)(client);
213
- const idents = await client.findAll('contact:class:SocialIdentity', { attachedTo: me._id });
214
- const mine = [...new Set([client.user, ...idents.map((i) => i._id)])];
215
- const [updates, comments, reports, doneTodos] = await Promise.all([
216
- client.findAll(classes_1.C.DocUpdateMessage, { createdBy: { $in: mine }, createdOn: { $gte: since } }, { limit: 1000, sort: { createdOn: core_1.SortingOrder.Descending } }),
217
- client.findAll('chunter:class:ChatMessage', { createdBy: { $in: mine }, createdOn: { $gte: since }, attachedToClass: { $in: [tracker_1.default.class.Issue, classes_1.C.PullRequest] } }, { limit: 200 }),
218
- client.findAll(tracker_1.default.class.TimeSpendReport, { employee: me._id, date: { $gte: since } }),
219
- client.findAll(classes_1.C.ToDo, { user: me._id, doneOn: { $gte: since } })
220
- ]);
221
- // What I did, per issue: created, status changes, other fields, comments, time.
222
- const per = new Map();
223
- const entry = (id) => per.get(id) ?? per.set(id, { created: false, status: [], fields: new Set(), comments: 0, hours: 0 }).get(id);
224
- const statusIds = new Set();
225
- updates.sort((a, b) => (a.createdOn ?? 0) - (b.createdOn ?? 0));
226
- for (const u of updates) {
227
- if (u.objectClass != null && u.objectClass !== tracker_1.default.class.Issue && u.objectClass !== classes_1.C.PullRequest && u.attachedToClass !== tracker_1.default.class.Issue)
228
- continue;
229
- const e = entry(u.attachedTo);
230
- if (u.action === 'create')
231
- e.created = true;
232
- else if (u.attributeUpdates?.attrKey === 'status') {
233
- for (const s of u.attributeUpdates.set ?? []) {
234
- e.status.push(s);
235
- statusIds.add(s);
236
- }
237
- }
238
- else if (u.attributeUpdates?.attrKey != null && !['rank', 'subIssues', 'comments', 'reports', 'reportedTime', 'remainingTime', 'modifiedOn'].includes(u.attributeUpdates.attrKey))
239
- e.fields.add(u.attributeUpdates.attrKey === 'attachedTo' ? 'parent' : u.attributeUpdates.attrKey);
240
- }
241
- for (const c of comments)
242
- entry(c.attachedTo).comments++;
243
- for (const r of reports)
244
- entry(r.attachedTo).hours += r.value ?? 0;
245
- const issues = per.size > 0 ? await client.findAll(tracker_1.default.class.Issue, { _id: { $in: [...per.keys()] } }) : [];
246
- const stNames = new Map((statusIds.size > 0 ? await client.findAll('core:class:Status', { _id: { $in: [...statusIds] } }) : []).map((s) => [s._id, s.name]));
247
- const out = [`# Standup — since ${new Date(since).toISOString().slice(0, 16).replace('T', ' ')} UTC`, '', '## Done / worked on'];
248
- if (updates.length === 1000)
249
- out.push('_Very busy period: only the latest 1000 changes are counted._');
250
- // Most telling first: status changes and new issues, then comments/time, then field edits.
251
- const weight = (i) => { const e = per.get(i._id); return e.status.length > 0 || e.created ? 0 : e.comments > 0 || e.hours > 0 ? 1 : 2; };
252
- issues.sort((a, b) => weight(a) - weight(b));
253
- const did = issues.slice(0, 15).map((i) => {
254
- const e = per.get(i._id);
255
- const parts = [
256
- e.created ? 'created' : undefined,
257
- e.status.length > 0 ? `→ ${e.status.map((s) => stNames.get(s) ?? '?').filter((n, k, a) => k === 0 || n !== a[k - 1]).join(' → ')}` : undefined,
258
- e.fields.size > 0 ? `changed ${[...e.fields].join(', ')}` : undefined,
259
- e.comments > 0 ? `${e.comments} comment(s)` : undefined,
260
- e.hours > 0 ? `${Math.round(e.hours * 10) / 10}h` : undefined
261
- ].filter((p) => p != null);
262
- return `- **${String(i.identifier)}** ${String(i.title)} — ${parts.join(' · ')}`;
263
- });
264
- if (issues.length > 15)
265
- did.push(`_…${issues.length - 15} more issues touched — changes_since for all._`);
266
- for (const t of doneTodos)
267
- did.push(`- [x] ${String(t.title)}`);
268
- out.push(...(did.length > 0 ? did : ['Nothing recorded in Huly.']));
269
- // Today and blockers: reuse my_day (calendar, to-dos, my issues).
270
- const day = sections(await myDayText(client, undefined, 5));
271
- out.push('', '## Today');
272
- for (const key of ['Calendar', 'To-dos', 'My issues']) {
273
- const s = day.get(key);
274
- if (s != null)
275
- out.push(s.replace(/^## /, '### '));
276
- }
277
- const blocked = await myBlockedIssues(client, me._id);
278
- out.push('', '## Blockers', ...(blocked.length > 0 ? blocked : ['None in Huly.']));
279
- return out.join('\n');
280
- });
281
- /** My open issues that wait for another open issue. */
282
- async function myBlockedIssues(client, me) {
283
- const mineOpen = (await client.findAll(tracker_1.default.class.Issue, { assignee: me })).filter((i) => (i.blockedBy ?? []).length > 0);
284
- if (mineOpen.length === 0)
285
- return [];
286
- const blockerIds = [...new Set(mineOpen.flatMap((i) => i.blockedBy.map((b) => b._id ?? b)))];
287
- const [blockers, statuses] = await Promise.all([
288
- client.findAll(tracker_1.default.class.Issue, { _id: { $in: blockerIds } }),
289
- client.findAll('core:class:Status', {})
290
- ]);
291
- const closed = new Set(statuses.filter((s) => s.category === task_1.default.statusCategory.Won || s.category === task_1.default.statusCategory.Lost).map((s) => s._id));
292
- const out = [];
293
- for (const i of mineOpen) {
294
- if (closed.has(i.status))
295
- continue;
296
- const open = i.blockedBy.map((b) => blockers.find((x) => x._id === (b._id ?? b))).filter((b) => b != null && !closed.has(b.status));
297
- if (open.length > 0)
298
- out.push(`- **${String(i.identifier)}** ${String(i.title)} — waits for ${open.map((b) => `${String(b.identifier)}`).join(', ')}`);
299
- }
300
- return out;
301
- }
302
- // ── Inbox triage: per unread object, what happened since I last looked ──
303
- /** One-line plain text of a comment: no HTML (bot comments), no entities, collapsed whitespace. */
304
- const plain = (markup) => (0, format_1.markupToText)(markup).replace(/<[^>]+>/g, ' ').replace(/&nbsp;|&#160;/g, ' ').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&').replace(/\s+/g, ' ').trim();
305
- exports.plain = plain;
306
- exports.triageInbox = (0, errors_1.wrapToolHandler)(async (args) => {
307
- const client = await (0, connection_1.getConnection)(args.workspace);
308
- const uuid = await (0, people_1.currentAccountUuid)(client);
309
- const limit = args.limit ?? 10;
310
- const unread = await client.findAll(classes_1.C.InboxNotification, { user: uuid, isViewed: false, archived: false }, { sort: { createdOn: core_1.SortingOrder.Descending }, limit: 500 });
311
- if (unread.length === 0)
312
- return 'Inbox zero — nothing unread.';
313
- const groups = new Map();
314
- for (const n of unread)
315
- groups.set(n.docNotifyContext, [...(groups.get(n.docNotifyContext) ?? []), n]);
316
- const ctxIds = [...groups.keys()].slice(0, limit);
317
- const ctxs = await client.findAll(classes_1.C.DocNotifyContext, { _id: { $in: ctxIds } });
318
- const statuses = new Map((await client.findAll('core:class:Status', {})).map((s) => [s._id, s.name]));
319
- const names = await (0, people_1.peopleNames)(client);
320
- const out = [`# Inbox triage — ${unread.length}${unread.length === 500 ? '+' : ''} unread on ${groups.size} item(s)${groups.size > limit ? `, newest ${limit} shown` : ''}`];
321
- for (const ctxId of ctxIds) {
322
- const notes = groups.get(ctxId);
323
- const ctx = ctxs.find((c) => c._id === ctxId);
324
- const objectId = ctx?.objectId ?? notes[0].objectId;
325
- const objectClass = ctx?.objectClass ?? notes[0].objectClass;
326
- // Since I last looked: the context's lastViewedTimestamp, else just before the oldest unread.
327
- const since = ctx?.lastViewedTimestamp ?? Math.min(...notes.map((n) => n.createdOn ?? Date.now())) - 1;
328
- const [doc, found] = await Promise.all([
329
- objectClass != null ? client.findOne(objectClass, { _id: objectId }) : undefined,
330
- client.findAll(classes_1.C.ActivityMessage, { attachedTo: objectId, createdOn: { $gt: since } }, { sort: { createdOn: core_1.SortingOrder.Descending }, limit: 50 })
331
- ]);
332
- const msgs = found.filter((m) => (m.createdOn ?? 0) > since).sort((a, b) => (b.createdOn ?? 0) - (a.createdOn ?? 0));
333
- const label = objectClass != null ? await (0, resolve_1.loadLabel)(client, objectClass, objectId) : '(unknown)';
334
- const state = doc?.status != null ? ` — ${String(statuses.get(doc.status) ?? '?')}${doc.assignee != null ? ` · ${names.get(doc.assignee) ?? '?'}` : ''}` : '';
335
- out.push('', `## ${label}${state} (${notes.length} unread)`);
336
- const who = await (0, people_1.socialIdNames)(client, [...new Set(msgs.map((m) => m.createdBy).filter((x) => x != null))]);
337
- // Only real comments (ChatMessage and derived); activity-info messages carry a label id as "message".
338
- const h = client.getHierarchy();
339
- const comments = msgs.filter((m) => typeof m.message === 'string' && (m._class === 'chunter:class:ChatMessage' || h.isDerived(m._class, 'chunter:class:ChatMessage')));
340
- const fields = [...new Set(msgs.filter((m) => m._class === classes_1.C.DocUpdateMessage).map((m) => m.action === 'create' ? 'created' : m.attributeUpdates?.attrKey === 'attachedTo' ? 'parent' : m.attributeUpdates?.attrKey).filter((k) => k != null && !['rank', 'subIssues', 'comments', 'modifiedOn'].includes(k)))];
341
- if (fields.length > 0)
342
- out.push(`- changed: ${fields.join(', ')}`);
343
- for (const m of comments.slice(0, 3).reverse())
344
- out.push(`- 💬 **${who.get(m.createdBy) ?? '?'}**: ${(0, format_1.clip)((0, exports.plain)(m.message), 200, 'list_comments')}`);
345
- if (comments.length > 3)
346
- out.push(`- _${comments.length - 3} older new comment(s)_`);
347
- if (fields.length === 0 && comments.length === 0)
348
- out.push('- (no details recorded)');
349
- }
350
- out.push('', '_Done with an item? mark_notifications_read with its id (e.g. PROJ-12)._');
351
- return out.join('\n');
352
- });
353
- // ── Release notes from a milestone ──
354
- const FIX = /\b(bug|fix|fixes|fixed|hotfix|regression|crash|security|fehler|bugfix|absturz|stürzt|behoben|reparier\w*|sicherheit)\b/i;
355
- exports.releaseNotes = (0, errors_1.wrapToolHandler)(async (args) => {
356
- const client = await (0, connection_1.getConnection)(args.workspace);
357
- const project = await client.findOne(tracker_1.default.class.Project, { identifier: args.projectIdentifier });
358
- if (project == null)
359
- throw new Error(`Project '${args.projectIdentifier}' not found.`);
360
- const milestones = await client.findAll(tracker_1.default.class.Milestone, { space: project._id });
361
- const ms = milestones.find((m) => String(m.label).toLowerCase() === args.milestoneLabel.trim().toLowerCase());
362
- if (ms == null)
363
- throw new Error(`Milestone '${args.milestoneLabel}' not found. Milestones: ${milestones.map((m) => m.label).join(', ') || 'none'}.`);
364
- const all = await client.findAll(tracker_1.default.class.Issue, { space: project._id, milestone: ms._id });
365
- const issues = all.filter((i) => i._class !== classes_1.C.PullRequest);
366
- const ids = issues.map((i) => i._id);
367
- const [statuses, labels, prs] = await Promise.all([
368
- client.findAll('core:class:Status', {}),
369
- ids.length > 0 ? client.findAll('tags:class:TagReference', { attachedTo: { $in: ids } }) : [],
370
- ids.length > 0 ? client.findAll(classes_1.C.PullRequest, { attachedTo: { $in: ids } }) : []
371
- ]);
372
- const cat = new Map(statuses.map((s) => [s._id, s.category]));
373
- // Epics (issues with sub-issues) are containers; their children are listed instead.
374
- const done = issues.filter((i) => cat.get(i.status) === task_1.default.statusCategory.Won && (i.subIssues ?? 0) === 0);
375
- const open = issues.filter((i) => cat.get(i.status) !== task_1.default.statusCategory.Won && cat.get(i.status) !== task_1.default.statusCategory.Lost);
376
- const isFix = (i) => FIX.test(String(i.title)) || labels.some((l) => l.attachedTo === i._id && FIX.test(String(l.title)));
377
- const pr = (i) => {
378
- const nums = prs.filter((p) => p.attachedTo === i._id && p.state === 2).map((p) => `#${String(p['github:mixin:GithubIssue']?.githubNumber ?? p.identifier)}`);
379
- return nums.length > 0 ? ` (${nums.join(', ')})` : '';
380
- };
381
- const line = (i) => `- ${String(i.title)} — ${String(i.identifier)}${pr(i)}`;
382
- const out = [`# ${String(ms.label)}${ms.targetDate != null ? ` — ${day(ms.targetDate)}` : ''}`];
383
- const features = done.filter((i) => !isFix(i));
384
- const fixes = done.filter(isFix);
385
- if (features.length > 0)
386
- out.push('', '## New and changed', ...features.map(line));
387
- if (fixes.length > 0)
388
- out.push('', '## Fixes', ...fixes.map(line));
389
- if (done.length === 0)
390
- out.push('', 'Nothing done in this milestone yet.');
391
- if (open.length > 0)
392
- out.push('', `## Still open (${open.length}) — not part of the notes`, ...open.slice(0, 15).map((i) => `- ${String(i.identifier)} ${String(i.title)}`));
393
- return out.join('\n');
394
- });
395
- //# sourceMappingURL=overview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"overview.js","sourceRoot":"","sources":["../../src/tools/overview.ts"],"names":[],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- /** The user's calendar for new events/work slots: Huly's personal calendar "<account>_calendar". */
2
- export declare function primaryCalendar(client: any): Promise<string>;
3
- export declare const listTodos: (args: {
4
- workspace?: string | undefined;
5
- status: "all" | "done" | "open";
6
- dueBefore?: string | undefined;
7
- limit: number;
8
- }) => Promise<{
9
- content: Array<{
10
- type: 'text';
11
- text: string;
12
- }>;
13
- }>;
14
- export declare const createTodo: (args: {
15
- workspace: string;
16
- title: string;
17
- description?: string | undefined;
18
- dueDate?: string | undefined;
19
- priority: "High" | "Low" | "Medium" | "NoPriority" | "Urgent";
20
- issue?: string | undefined;
21
- }) => Promise<{
22
- content: Array<{
23
- type: 'text';
24
- text: string;
25
- }>;
26
- }>;
27
- export declare const updateTodo: (args: {
28
- workspace: string;
29
- todoId: string;
30
- title?: string | undefined;
31
- description?: string | undefined;
32
- dueDate?: string | null | undefined;
33
- priority?: "High" | "Low" | "Medium" | "NoPriority" | "Urgent" | undefined;
34
- done?: boolean | undefined;
35
- }) => Promise<{
36
- content: Array<{
37
- type: 'text';
38
- text: string;
39
- }>;
40
- }>;
41
- export declare const deleteTodo: (args: {
42
- workspace: string;
43
- todoId: string;
44
- }) => Promise<{
45
- content: Array<{
46
- type: 'text';
47
- text: string;
48
- }>;
49
- }>;
50
- export declare const scheduleTodo: (args: {
51
- workspace: string;
52
- todoId: string;
53
- start: string;
54
- durationMinutes: number;
55
- }) => Promise<{
56
- content: Array<{
57
- type: 'text';
58
- text: string;
59
- }>;
60
- }>;