@dain-os/mcp-server 0.21.0 → 0.22.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 (59) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/tools/generic.d.ts +20 -1
  3. package/dist/tools/generic.d.ts.map +1 -1
  4. package/dist/tools/generic.js +171 -31
  5. package/dist/tools/generic.js.map +1 -1
  6. package/dist/tools/registry.d.ts.map +1 -1
  7. package/dist/tools/registry.js +3 -1
  8. package/dist/tools/registry.js.map +1 -1
  9. package/dist/tools/semantic/tasks.js +1 -1
  10. package/dist/tools/semantic/tasks.js.map +1 -1
  11. package/package.json +1 -1
  12. package/dist/tools/cadence.d.ts +0 -4
  13. package/dist/tools/cadence.d.ts.map +0 -1
  14. package/dist/tools/cadence.js +0 -245
  15. package/dist/tools/cadence.js.map +0 -1
  16. package/dist/tools/comments.d.ts +0 -3
  17. package/dist/tools/comments.d.ts.map +0 -1
  18. package/dist/tools/comments.js +0 -19
  19. package/dist/tools/comments.js.map +0 -1
  20. package/dist/tools/developer.d.ts +0 -3
  21. package/dist/tools/developer.d.ts.map +0 -1
  22. package/dist/tools/developer.js +0 -349
  23. package/dist/tools/developer.js.map +0 -1
  24. package/dist/tools/iam.d.ts +0 -3
  25. package/dist/tools/iam.d.ts.map +0 -1
  26. package/dist/tools/iam.js +0 -38
  27. package/dist/tools/iam.js.map +0 -1
  28. package/dist/tools/log-time-entry.d.ts +0 -3
  29. package/dist/tools/log-time-entry.d.ts.map +0 -1
  30. package/dist/tools/log-time-entry.js +0 -54
  31. package/dist/tools/log-time-entry.js.map +0 -1
  32. package/dist/tools/pr-review.d.ts +0 -3
  33. package/dist/tools/pr-review.d.ts.map +0 -1
  34. package/dist/tools/pr-review.js +0 -83
  35. package/dist/tools/pr-review.js.map +0 -1
  36. package/dist/tools/products.d.ts +0 -3
  37. package/dist/tools/products.d.ts.map +0 -1
  38. package/dist/tools/products.js +0 -37
  39. package/dist/tools/products.js.map +0 -1
  40. package/dist/tools/projects.d.ts +0 -3
  41. package/dist/tools/projects.d.ts.map +0 -1
  42. package/dist/tools/projects.js +0 -151
  43. package/dist/tools/projects.js.map +0 -1
  44. package/dist/tools/proposal-content.d.ts +0 -3
  45. package/dist/tools/proposal-content.d.ts.map +0 -1
  46. package/dist/tools/proposal-content.js +0 -136
  47. package/dist/tools/proposal-content.js.map +0 -1
  48. package/dist/tools/proposal-options.d.ts +0 -3
  49. package/dist/tools/proposal-options.d.ts.map +0 -1
  50. package/dist/tools/proposal-options.js +0 -132
  51. package/dist/tools/proposal-options.js.map +0 -1
  52. package/dist/tools/proposals.d.ts +0 -22
  53. package/dist/tools/proposals.d.ts.map +0 -1
  54. package/dist/tools/proposals.js +0 -179
  55. package/dist/tools/proposals.js.map +0 -1
  56. package/dist/tools/tasks.d.ts +0 -3
  57. package/dist/tools/tasks.d.ts.map +0 -1
  58. package/dist/tools/tasks.js +0 -255
  59. package/dist/tools/tasks.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"developer.js","sourceRoot":"","sources":["../../src/tools/developer.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const iamTools: ToolDefinition[];
3
- //# sourceMappingURL=iam.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iam.d.ts","sourceRoot":"","sources":["../../src/tools/iam.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAyCjD,eAAO,MAAM,QAAQ,EAAE,cAAc,EAA+B,CAAC"}
package/dist/tools/iam.js DELETED
@@ -1,38 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * IAM user tools — operator-identity helpers for the wrap-up skill.
4
- *
5
- * Both tools are intentionally tenant-scoped at the API layer: the server
6
- * resolves the caller's tenant from their JWT/PAT and filters iam.users
7
- * automatically via the Prisma tenant extension. No tenantSlug param is
8
- * accepted here because that would introduce a foot-gun: a caller who
9
- * guesses another tenant's slug would get a 403 at worst, but the API
10
- * simply ignores slug params and always scopes to the caller's tenant.
11
- */
12
- const listTenantUsers = {
13
- name: 'list_tenant_users',
14
- description: 'List users in the caller\'s tenant. Returns id, email, fullName, displayName, status, and tenantId for each user, ordered by fullName. Optionally filter by status (active | inactive | suspended | pending). Use this to look up who to attribute work to in the wrap-up flow.',
15
- inputSchema: z.object({
16
- status: z
17
- .enum(['active', 'inactive', 'suspended', 'pending'])
18
- .optional()
19
- .describe('Filter by user status. Omit to return all statuses.'),
20
- }),
21
- handler: async (client, input) => {
22
- const params = new URLSearchParams();
23
- if (input.status)
24
- params.set('status', input.status);
25
- const query = params.toString() ? `?${params.toString()}` : '';
26
- return client.get(`/iam/users${query}`);
27
- },
28
- };
29
- const getUser = {
30
- name: 'get_user',
31
- description: 'Get one user by id from the caller\'s tenant. Returns id, email, fullName, displayName, status, and tenantId. Returns a 404 error if the id is unknown or belongs to a different tenant.',
32
- inputSchema: z.object({
33
- id: z.string().uuid().describe('The iam_users UUID of the user to fetch.'),
34
- }),
35
- handler: async (client, input) => client.get(`/iam/users/${input.id}`),
36
- };
37
- export const iamTools = [listTenantUsers, getUser];
38
- //# sourceMappingURL=iam.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"iam.js","sourceRoot":"","sources":["../../src/tools/iam.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;GASG;AAEH,MAAM,eAAe,GAAmB;IACtC,IAAI,EAAE,mBAAmB;IACzB,WAAW,EACT,iRAAiR;IACnR,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;aACpD,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;KACnE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,MAAM,CAAC,GAAG,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF,CAAC;AAEF,MAAM,OAAO,GAAmB;IAC9B,IAAI,EAAE,UAAU;IAChB,WAAW,EACT,0LAA0L;IAC5L,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAC3E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,EAAE,EAAE,CAAC;CACvE,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAqB,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const logTimeEntryTool: ToolDefinition;
3
- //# sourceMappingURL=log-time-entry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-time-entry.d.ts","sourceRoot":"","sources":["../../src/tools/log-time-entry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,gBAAgB,EAAE,cAiD9B,CAAC"}
@@ -1,54 +0,0 @@
1
- // packages/mcp-server/src/tools/log-time-entry.ts
2
- //
3
- // MCP tool: log_time_entry
4
- // Feature Brief §9.3 — called by the wrap-up skill immediately after
5
- // log_session_context. Idempotent on sessionContextId.
6
- //
7
- // Input schema mirrors logTimeEntryInputSchema in
8
- // apps/api/src/domains/developer/types/developer.types.ts exactly.
9
- // Handler calls POST /api/v1/developer/time-entries.
10
- import { z } from 'zod';
11
- export const logTimeEntryTool = {
12
- name: 'log_time_entry',
13
- description: 'Log a time entry for a development session against a project slug. Used by the /wrap-up skill immediately after log_session_context. Idempotent on sessionContextId: re-calling with the same sessionContextId returns the existing entry with alreadyExisted: true.',
14
- inputSchema: z.object({
15
- operatorIamUserId: z
16
- .string()
17
- .uuid()
18
- .describe('iam_users.id of the person who ran the session. NOT the Supabase auth UUID — resolve from your wrap-up config.'),
19
- sessionContextId: z
20
- .string()
21
- .uuid()
22
- .describe('UUID returned by log_session_context. Acts as the idempotency key.'),
23
- projectSlug: z
24
- .string()
25
- .min(1)
26
- .max(200)
27
- .describe('The project slug (e.g. dain-os, herbert, mabel). Resolved via session_slug_aliases server-side.'),
28
- taskIds: z
29
- .array(z.string().uuid())
30
- .default([])
31
- .describe('UUIDs of DainOS tasks worked during the session. If exactly one, it is written to task_id. Defaults to [].'),
32
- durationMinutes: z
33
- .number()
34
- .int()
35
- .positive()
36
- .max(1440)
37
- .describe('Duration of the session in whole minutes (1 to 1440).'),
38
- entryDate: z
39
- .string()
40
- .regex(/^\d{4}-\d{2}-\d{2}$/)
41
- .describe('Calendar date of the session in YYYY-MM-DD format.'),
42
- description: z
43
- .string()
44
- .max(500)
45
- .optional()
46
- .describe('Optional human-readable summary of what was done. Max 500 characters.'),
47
- isBillable: z
48
- .boolean()
49
- .default(false)
50
- .describe('Whether the session is billable to a client. Defaults to false.'),
51
- }),
52
- handler: async (client, input) => client.post('/developer/time-entries', input),
53
- };
54
- //# sourceMappingURL=log-time-entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-time-entry.js","sourceRoot":"","sources":["../../src/tools/log-time-entry.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,2BAA2B;AAC3B,qEAAqE;AACrE,uDAAuD;AACvD,EAAE;AACF,kDAAkD;AAClD,mEAAmE;AACnE,qDAAqD;AAErD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,gBAAgB;IACtB,WAAW,EACT,sQAAsQ;IACxQ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,iBAAiB,EAAE,CAAC;aACjB,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,CACP,gHAAgH,CACjH;QACH,gBAAgB,EAAE,CAAC;aAChB,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,CAAC,oEAAoE,CAAC;QACjF,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,CACP,iGAAiG,CAClG;QACH,OAAO,EAAE,CAAC;aACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;aACxB,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CACP,4GAA4G,CAC7G;QACH,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,GAAG,CAAC,IAAI,CAAC;aACT,QAAQ,CAAC,uDAAuD,CAAC;QACpE,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,KAAK,CAAC,qBAAqB,CAAC;aAC5B,QAAQ,CAAC,oDAAoD,CAAC;QACjE,WAAW,EAAE,CAAC;aACX,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;QACpF,UAAU,EAAE,CAAC;aACV,OAAO,EAAE;aACT,OAAO,CAAC,KAAK,CAAC;aACd,QAAQ,CAAC,iEAAiE,CAAC;KAC/E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC;CAChF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const prReviewTools: ToolDefinition[];
3
- //# sourceMappingURL=pr-review.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-review.d.ts","sourceRoot":"","sources":["../../src/tools/pr-review.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAuFjD,eAAO,MAAM,aAAa,EAAE,cAAc,EAGzC,CAAC"}
@@ -1,83 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * PR-review feedback tools for the wrap-up skill Step 7.5.
4
- *
5
- * Two operations:
6
- * list_unscored_pr_findings — fetch findings for a PR that the caller has not yet scored
7
- * score_pr_finding — record a verdict (useful | noise | wrong) for one finding
8
- *
9
- * The verdict enum matches the DB CHECK constraint exactly:
10
- * 'useful' | 'noise' | 'wrong'
11
- * 'Skip' is a UI-only sentinel and is intentionally excluded.
12
- */
13
- // Matches the DB CHECK constraint: verdict IN ('useful', 'noise', 'wrong')
14
- const verdictEnum = z.enum(['useful', 'noise', 'wrong']);
15
- const listUnscoredPrFindings = {
16
- name: 'list_unscored_pr_findings',
17
- description: 'List DainOS-reviewer findings on a specific PR that have not yet been scored by the caller. ' +
18
- 'Pass repo (e.g. "dain-agency/dain-os"), prNumber, and scoredBy (the caller\'s UUID). ' +
19
- 'Returns an empty array when all findings are already scored. ' +
20
- 'Returns a 404-style error when the PR has no reviews recorded.',
21
- inputSchema: z.object({
22
- repo: z
23
- .string()
24
- .min(1)
25
- .describe('Full GitHub repo path, e.g. "dain-agency/dain-os".'),
26
- prNumber: z.coerce
27
- .number()
28
- .int()
29
- .positive()
30
- .describe('The PR number, e.g. 307.'),
31
- scoredBy: z
32
- .string()
33
- .uuid()
34
- .describe('UUID of the user doing the scoring (used to exclude already-scored findings).'),
35
- }),
36
- handler: async (client, input) => {
37
- const params = new URLSearchParams({
38
- repo: input.repo,
39
- prNumber: String(input.prNumber),
40
- scoredBy: input.scoredBy,
41
- });
42
- return client.get(`/pr-review/findings/unscored?${params.toString()}`);
43
- },
44
- };
45
- const scorePrFinding = {
46
- name: 'score_pr_finding',
47
- description: 'Record a verdict for a single DainOS-reviewer finding. ' +
48
- 'Verdicts are "useful" (actionable, correctly identified), "noise" (not worth raising), ' +
49
- 'or "wrong" (factually incorrect). "Skip" is not a valid verdict — only persist when a decision is made. ' +
50
- 'Returns 201 with the created row on success. ' +
51
- 'Returns 409 with the existing row when the same scorer has already scored this finding. ' +
52
- 'Returns 404 when the findingId does not exist.',
53
- inputSchema: z.object({
54
- findingId: z
55
- .string()
56
- .uuid()
57
- .describe('UUID of the pr_review_findings row to score.'),
58
- verdict: verdictEnum.describe('One of "useful", "noise", or "wrong". Matches the DB CHECK constraint exactly.'),
59
- scoredBy: z
60
- .string()
61
- .uuid()
62
- .describe('UUID of the user recording this verdict.'),
63
- notes: z
64
- .string()
65
- .max(2000)
66
- .optional()
67
- .describe('Optional free-text notes explaining the verdict.'),
68
- reviewerVersion: z
69
- .string()
70
- .max(100)
71
- .optional()
72
- .describe('Reviewer version string at time of scoring, e.g. "v2.1".'),
73
- }),
74
- handler: async (client, input) => {
75
- const { findingId, ...body } = input;
76
- return client.post(`/pr-review/findings/${findingId}/feedback`, body);
77
- },
78
- };
79
- export const prReviewTools = [
80
- listUnscoredPrFindings,
81
- scorePrFinding,
82
- ];
83
- //# sourceMappingURL=pr-review.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pr-review.js","sourceRoot":"","sources":["../../src/tools/pr-review.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;GAUG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,MAAM,sBAAsB,GAAmB;IAC7C,IAAI,EAAE,2BAA2B;IACjC,WAAW,EACT,8FAA8F;QAC9F,uFAAuF;QACvF,+DAA+D;QAC/D,gEAAgE;IAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,oDAAoD,CAAC;QACjE,QAAQ,EAAE,CAAC,CAAC,MAAM;aACf,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,0BAA0B,CAAC;QACvC,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,CAAC,+EAA+E,CAAC;KAC7F,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,GAAG,CAAC,gCAAgC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;CACF,CAAC;AAEF,MAAM,cAAc,GAAmB;IACrC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,yDAAyD;QACzD,yFAAyF;QACzF,0GAA0G;QAC1G,+CAA+C;QAC/C,0FAA0F;QAC1F,gDAAgD;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC;aACT,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,OAAO,EAAE,WAAW,CAAC,QAAQ,CAC3B,gFAAgF,CACjF;QACD,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,IAAI,EAAE;aACN,QAAQ,CAAC,0CAA0C,CAAC;QACvD,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,IAAI,CAAC;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,kDAAkD,CAAC;QAC/D,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,0DAA0D,CAAC;KACxE,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,uBAAuB,SAAS,WAAW,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,sBAAsB;IACtB,cAAc;CACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const productTools: ToolDefinition[];
3
- //# sourceMappingURL=products.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA4CjD,eAAO,MAAM,YAAY,EAAE,cAAc,EAAgD,CAAC"}
@@ -1,37 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Product tools. Two read operations: lookup_product_repos and summarise_product_tasks.
4
- *
5
- * These back /recap and /wrap-up so the skills can resolve a GitHub repo to a
6
- * product without dropping to raw SQL.
7
- */
8
- // ---------------------------------------------------------------------------
9
- // lookup_product_repos — find product(s) by GitHub owner + repo
10
- // ---------------------------------------------------------------------------
11
- const lookupProductRepos = {
12
- name: 'lookup_product_repos',
13
- description: 'Look up which DainOS product(s) are linked to a GitHub repository. Returns an array because a single repo can be linked to more than one product. Use this to resolve "which product does this repo belong to?" during /recap or /wrapup without raw SQL.',
14
- inputSchema: z.object({
15
- owner: z.string().min(1).describe('GitHub organisation or username, e.g. "dain-agency".'),
16
- repo: z.string().min(1).describe('GitHub repository name, e.g. "dain-os".'),
17
- }),
18
- handler: async (client, input) => {
19
- const params = new URLSearchParams();
20
- params.set('owner', input.owner);
21
- params.set('repo', input.repo);
22
- return client.get(`/products/repos/lookup?${params.toString()}`);
23
- },
24
- };
25
- // ---------------------------------------------------------------------------
26
- // summarise_product_tasks — cross-project task aggregation for a product
27
- // ---------------------------------------------------------------------------
28
- const summariseProductTasks = {
29
- name: 'summarise_product_tasks',
30
- description: 'Get a task summary across all projects linked to a product. Returns status counts for all 8 statuses (backlog, todo, in_progress, review, production_ready, blocked, done, cancelled) — zeros included — plus up to 20 "active" tasks (in_progress, review, blocked, or done within the last 7 days). Use during /recap to give the user a live picture of where work stands.',
31
- inputSchema: z.object({
32
- productId: z.string().uuid().describe('The product UUID.'),
33
- }),
34
- handler: async (client, input) => client.get(`/products/${input.productId}/tasks/summary`),
35
- };
36
- export const productTools = [lookupProductRepos, summariseProductTasks];
37
- //# sourceMappingURL=products.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../../src/tools/products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;GAKG;AAEH,8EAA8E;AAC9E,gEAAgE;AAChE,8EAA8E;AAE9E,MAAM,kBAAkB,GAAmB;IACzC,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EACT,2PAA2P;IAC7P,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAC5E,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,IAAc,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;CACF,CAAC;AAEF,8EAA8E;AAC9E,yEAAyE;AACzE,8EAA8E;AAE9E,MAAM,qBAAqB,GAAmB;IAC5C,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EACT,+WAA+W;IACjX,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KAC3D,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAC/B,MAAM,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,SAAmB,gBAAgB,CAAC;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAqB,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const projectTools: ToolDefinition[];
3
- //# sourceMappingURL=projects.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAiKjD,eAAO,MAAM,YAAY,EAAE,cAAc,EAQxC,CAAC"}
@@ -1,151 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * Project tools. Five operations: list, get, create, update, archive.
4
- *
5
- * Descriptions are written for the model, not the user — they appear in the
6
- * tool-discovery output and shape how the model decides which tool to call.
7
- */
8
- const projectStatusEnum = z.enum([
9
- 'planning',
10
- 'active',
11
- 'on_hold',
12
- 'completed',
13
- 'archived',
14
- 'cancelled',
15
- ]);
16
- const listProjects = {
17
- name: 'list_projects',
18
- description: 'List projects in the current workspace. Returns id, name, code, status, and progress for each. Use this to discover project ids before calling get_project / create_task / list_tasks.',
19
- inputSchema: z.object({
20
- status: projectStatusEnum
21
- .optional()
22
- .describe('Filter by status. Omit to return all non-archived projects.'),
23
- limit: z.coerce.number().int().min(1).max(100).optional().describe('Default 25, max 100.'),
24
- }),
25
- handler: async (client, input) => {
26
- const params = new URLSearchParams();
27
- if (input.status)
28
- params.set('status', input.status);
29
- if (input.limit !== undefined)
30
- params.set('limit', String(input.limit));
31
- const query = params.toString() ? `?${params.toString()}` : '';
32
- const result = await client.get(`/projects${query}`);
33
- // The API returns all statuses regardless of filter, so when the caller
34
- // didn't specify a status we hide archived projects client-side to honour
35
- // the documented "no longer appears in list_projects by default" contract.
36
- if (input.status === undefined && Array.isArray(result)) {
37
- return result.filter((project) => typeof project === 'object' &&
38
- project !== null &&
39
- project.status !== 'archived');
40
- }
41
- return result;
42
- },
43
- };
44
- const getProject = {
45
- name: 'get_project',
46
- description: 'Get one project by id. Returns full project details including tasks count, members, owner, and client company.',
47
- inputSchema: z.object({
48
- id: z.string().uuid().describe('Project id (UUID). Get one from list_projects.'),
49
- }),
50
- handler: async (client, input) => client.get(`/projects/${input.id}`),
51
- };
52
- const createProject = {
53
- name: 'create_project',
54
- description: 'Create a new project. Only `name` is required. Returns the created project with its id.',
55
- inputSchema: z.object({
56
- name: z.string().min(1).max(200).describe('Project name. Required.'),
57
- description: z.string().max(2000).optional(),
58
- clientCompanyId: z.string().uuid().optional().describe('Link to a client company.'),
59
- ownerId: z.string().uuid().optional().describe('User id of the project owner.'),
60
- projectType: z
61
- .enum(['internal', 'client', 'product', 'research'])
62
- .optional()
63
- .describe('Defaults to "client" on the server.'),
64
- billingMethod: z
65
- .enum(['fixed', 'hourly', 'retainer', 'non_billable'])
66
- .optional(),
67
- startDate: z.string().optional().describe('ISO 8601 date.'),
68
- targetEndDate: z.string().optional().describe('ISO 8601 date.'),
69
- budgetHours: z.coerce.number().min(0).optional(),
70
- budgetAmount: z.coerce.number().min(0).optional(),
71
- priority: z.coerce.number().int().min(0).max(100).optional(),
72
- tags: z.array(z.string()).optional(),
73
- }),
74
- handler: async (client, input) => client.post('/projects', input),
75
- };
76
- const updateProject = {
77
- name: 'update_project',
78
- description: 'Update an existing project. Pass any subset of fields; omitted fields are left unchanged. Use this to rename, change status, retarget the end date, etc.',
79
- inputSchema: z.object({
80
- id: z.string().uuid(),
81
- name: z.string().min(1).max(200).optional(),
82
- description: z.string().max(2000).optional(),
83
- status: projectStatusEnum.optional(),
84
- ownerId: z.string().uuid().optional(),
85
- startDate: z.string().optional(),
86
- targetEndDate: z.string().optional(),
87
- budgetHours: z.coerce.number().min(0).optional(),
88
- budgetAmount: z.coerce.number().min(0).optional(),
89
- priority: z.coerce.number().int().min(0).max(100).optional(),
90
- tags: z.array(z.string()).optional(),
91
- }),
92
- handler: async (client, input) => {
93
- const { id, ...rest } = input;
94
- return client.put(`/projects/${id}`, rest);
95
- },
96
- };
97
- const archiveProject = {
98
- name: 'archive_project',
99
- description: 'Archive a project. The project is soft-deleted (status -> archived) and no longer appears in list_projects by default. Existing tasks remain accessible by id.',
100
- inputSchema: z.object({
101
- id: z.string().uuid(),
102
- }),
103
- handler: async (client, input) => client.delete(`/projects/${input.id}`),
104
- };
105
- const listMilestones = {
106
- name: 'list_milestones',
107
- description: 'List milestones for a project. Returns id, name, status, start/due dates, and tasks_count for each. Call this before create_task so the new task can be attached to the right milestone — orphan tasks (projectId without milestoneId) are a code smell and clutter the project view.',
108
- inputSchema: z.object({
109
- projectId: z
110
- .string()
111
- .uuid()
112
- .describe('Project id (UUID). Get one from list_projects.'),
113
- }),
114
- handler: async (client, input) => client.get(`/projects/${input.projectId}/milestones`),
115
- };
116
- const milestoneStatusEnum = z.enum([
117
- 'pending',
118
- 'in_progress',
119
- 'completed',
120
- 'cancelled',
121
- ]);
122
- const updateMilestone = {
123
- name: 'update_milestone',
124
- description: 'Update a milestone on a project. Pass any subset of fields. Covers rename, schedule (startDate/dueDate), status walk, billing toggle, and sort order. projectId + milestoneId are both required because the server route is nested.',
125
- inputSchema: z.object({
126
- projectId: z.string().uuid().describe('Parent project id. Get one from list_projects.'),
127
- milestoneId: z.string().uuid().describe('Milestone id. Get one from list_milestones.'),
128
- name: z.string().min(1).max(200).optional(),
129
- description: z.string().max(2000).nullable().optional(),
130
- startDate: z.string().nullable().optional().describe('ISO 8601 or null to clear.'),
131
- dueDate: z.string().nullable().optional().describe('ISO 8601 or null to clear.'),
132
- status: milestoneStatusEnum.optional(),
133
- isBillable: z.boolean().optional(),
134
- billableAmount: z.coerce.number().min(0).nullable().optional(),
135
- sortOrder: z.coerce.number().int().min(0).optional(),
136
- }),
137
- handler: async (client, input) => {
138
- const { projectId, milestoneId, ...rest } = input;
139
- return client.put(`/projects/${projectId}/milestones/${milestoneId}`, rest);
140
- },
141
- };
142
- export const projectTools = [
143
- listProjects,
144
- getProject,
145
- createProject,
146
- updateProject,
147
- archiveProject,
148
- listMilestones,
149
- updateMilestone,
150
- ];
151
- //# sourceMappingURL=projects.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from './types.js';
2
- export declare const proposalContentTools: ToolDefinition[];
3
- //# sourceMappingURL=proposal-content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-content.d.ts","sourceRoot":"","sources":["../../src/tools/proposal-content.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA6JjD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAShD,CAAC"}
@@ -1,136 +0,0 @@
1
- import { z } from 'zod';
2
- import { buildBlockCatalogue } from './proposal-content-catalogue.js';
3
- /**
4
- * Proposal content tools (8). Granular ops let the LLM ship only the bytes
5
- * it is changing rather than re-sending the whole content_json blob.
6
- *
7
- * Content shape (v2): `{ version: 2, sections: [{ id, key, title, visible?,
8
- * blocks: ContentBlock[] }] }`.
9
- *
10
- * Block types (8): text, cards, diagram, chart, table, image, gantt, iframe.
11
- * For the full schema of each block call `describe_proposal_block_types`.
12
- *
13
- * All mutations are validated server-side. An ops batch is rejected as
14
- * INVALID_FINAL_STATE if the resulting content doesn't pass the API's
15
- * `proposalContentV2Schema` (e.g. iframe block on a non-allowlisted host).
16
- */
17
- // Section / block payloads. These are intentionally permissive at the JSON
18
- // Schema layer -- the API enforces the strict shape. The LLM uses the
19
- // description fields + describe_proposal_block_types for guidance.
20
- const blockSchema = z.record(z.unknown()).describe('A content block. Required fields: `id` (string), `type` (one of: text, cards, diagram, chart, table, image, gantt, iframe). Per-type extra fields are documented by the describe_proposal_block_types tool.');
21
- const sectionSchema = z.record(z.unknown()).describe('A section. Required fields: `id` (string), `key` (slug), `title` (string), `blocks` (array of block objects). Optional: `visible` (boolean, defaults true).');
22
- const getProposalContent = {
23
- name: 'get_proposal_content',
24
- description: 'Get the structured content (sections + blocks) for a proposal. Returns `{ version: 2, sections: [...] }`. Lighter than get_proposal -- use this when you only need the section/block structure (e.g. before editing). Empty / legacy-version content_json returns an empty v2 envelope; mutations against legacy content require starting with a `replaceAll` op.',
25
- inputSchema: z.object({
26
- proposalId: z.string().uuid(),
27
- }),
28
- handler: async (client, input) => client.get(`/crm/proposals/${input.proposalId}/content`),
29
- };
30
- const describeProposalBlockTypes = {
31
- name: 'describe_proposal_block_types',
32
- description: 'Return the catalogue of available proposal content block types: their schemas, minimal + rich examples, when to use each, default section keys, and any gotchas (e.g. the iframe host allowlist). Call this first when drafting new content -- it is the canonical reference for what you can put inside a proposal section.',
33
- inputSchema: z.object({}),
34
- handler: async () => buildBlockCatalogue(),
35
- };
36
- const upsertProposalSection = {
37
- name: 'upsert_proposal_section',
38
- description: 'Add a new section or replace an existing one (matched by `key`). The section is a full object including its blocks array, so the API can validate cohesively. To edit a single block inside an existing section without re-sending the whole section, use upsert_proposal_block instead.',
39
- inputSchema: z.object({
40
- proposalId: z.string().uuid(),
41
- section: sectionSchema,
42
- }),
43
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
44
- ops: [{ kind: 'upsertSection', section: input.section }],
45
- }),
46
- };
47
- const deleteProposalSection = {
48
- name: 'delete_proposal_section',
49
- description: 'Delete a section from the proposal content by `key`. Returns SECTION_NOT_FOUND if the key does not match any section. All blocks in that section are removed with it.',
50
- inputSchema: z.object({
51
- proposalId: z.string().uuid(),
52
- key: z.string().min(1).max(120).describe('The section key, e.g. "executive_summary".'),
53
- }),
54
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
55
- ops: [{ kind: 'deleteSection', key: input.key }],
56
- }),
57
- };
58
- const upsertProposalBlock = {
59
- name: 'upsert_proposal_block',
60
- description: 'Add a new block to a section or replace an existing block by id within that section. The block must conform to the schema for its `type` -- see describe_proposal_block_types for per-type fields. This is the right tool for fine-grained content edits because you only send one block, not the whole section.',
61
- inputSchema: z.object({
62
- proposalId: z.string().uuid(),
63
- sectionKey: z.string().min(1).max(120).describe('The key of the parent section.'),
64
- block: blockSchema,
65
- }),
66
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
67
- ops: [
68
- {
69
- kind: 'upsertBlock',
70
- sectionKey: input.sectionKey,
71
- block: input.block,
72
- },
73
- ],
74
- }),
75
- };
76
- const deleteProposalBlock = {
77
- name: 'delete_proposal_block',
78
- description: 'Delete a block from a section by id. Returns BLOCK_NOT_FOUND if the id does not match any block in that section.',
79
- inputSchema: z.object({
80
- proposalId: z.string().uuid(),
81
- sectionKey: z.string().min(1).max(120),
82
- blockId: z.string().min(1).max(120),
83
- }),
84
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
85
- ops: [
86
- {
87
- kind: 'deleteBlock',
88
- sectionKey: input.sectionKey,
89
- blockId: input.blockId,
90
- },
91
- ],
92
- }),
93
- };
94
- const reorderProposalBlocks = {
95
- name: 'reorder_proposal_blocks',
96
- description: 'Reorder the blocks within a single section. `blockIds` must be a permutation of every current block id in that section -- the API returns REORDER_MISMATCH if any id is missing or duplicated.',
97
- inputSchema: z.object({
98
- proposalId: z.string().uuid(),
99
- sectionKey: z.string().min(1).max(120),
100
- blockIds: z
101
- .array(z.string().min(1).max(120))
102
- .min(1)
103
- .describe('Every block id currently in the section, in the new desired order.'),
104
- }),
105
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
106
- ops: [
107
- {
108
- kind: 'reorderBlocks',
109
- sectionKey: input.sectionKey,
110
- blockIds: input.blockIds,
111
- },
112
- ],
113
- }),
114
- };
115
- const replaceProposalContent = {
116
- name: 'replace_proposal_content',
117
- description: 'Replace ALL sections of the proposal with a new sections array. Use this sparingly: only for full regeneration, wholesale rewrites, or migrating a legacy (non-v2) content_json to v2. For fine-grained edits prefer upsert_proposal_section / upsert_proposal_block etc. -- they are token-cheap and easier to reason about.',
118
- inputSchema: z.object({
119
- proposalId: z.string().uuid(),
120
- sections: z.array(sectionSchema),
121
- }),
122
- handler: async (client, input) => client.patch(`/crm/proposals/${input.proposalId}/content`, {
123
- ops: [{ kind: 'replaceAll', sections: input.sections }],
124
- }),
125
- };
126
- export const proposalContentTools = [
127
- getProposalContent,
128
- describeProposalBlockTypes,
129
- upsertProposalSection,
130
- deleteProposalSection,
131
- upsertProposalBlock,
132
- deleteProposalBlock,
133
- reorderProposalBlocks,
134
- replaceProposalContent,
135
- ];
136
- //# sourceMappingURL=proposal-content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proposal-content.js","sourceRoot":"","sources":["../../src/tools/proposal-content.ts"],"names":[],"mappings":"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"}