@codegame.dev/careerflow-mcp 1.1.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +398 -0
  3. package/dist/client.js +110 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.js +37 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/helpers.js +192 -0
  8. package/dist/helpers.js.map +1 -0
  9. package/dist/index.js +194 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/setup.js +296 -0
  12. package/dist/setup.js.map +1 -0
  13. package/dist/tools/admin.js +232 -0
  14. package/dist/tools/admin.js.map +1 -0
  15. package/dist/tools/benefit-funds.js +243 -0
  16. package/dist/tools/benefit-funds.js.map +1 -0
  17. package/dist/tools/chat-extra.js +172 -0
  18. package/dist/tools/chat-extra.js.map +1 -0
  19. package/dist/tools/chat.js +125 -0
  20. package/dist/tools/chat.js.map +1 -0
  21. package/dist/tools/cms.js +145 -0
  22. package/dist/tools/cms.js.map +1 -0
  23. package/dist/tools/crm-admin.js +269 -0
  24. package/dist/tools/crm-admin.js.map +1 -0
  25. package/dist/tools/crm.js +632 -0
  26. package/dist/tools/crm.js.map +1 -0
  27. package/dist/tools/dev-tickets.js +94 -0
  28. package/dist/tools/dev-tickets.js.map +1 -0
  29. package/dist/tools/forms.js +105 -0
  30. package/dist/tools/forms.js.map +1 -0
  31. package/dist/tools/hr.js +517 -0
  32. package/dist/tools/hr.js.map +1 -0
  33. package/dist/tools/kanban-extra.js +403 -0
  34. package/dist/tools/kanban-extra.js.map +1 -0
  35. package/dist/tools/misc.js +159 -0
  36. package/dist/tools/misc.js.map +1 -0
  37. package/dist/tools/projects.js +138 -0
  38. package/dist/tools/projects.js.map +1 -0
  39. package/dist/tools/tasks.js +342 -0
  40. package/dist/tools/tasks.js.map +1 -0
  41. package/dist/tools/time.js +129 -0
  42. package/dist/tools/time.js.map +1 -0
  43. package/dist/tools/workplace.js +110 -0
  44. package/dist/tools/workplace.js.map +1 -0
  45. package/dist/tools/workspace.js +199 -0
  46. package/dist/tools/workspace.js.map +1 -0
  47. package/package.json +61 -0
@@ -0,0 +1,145 @@
1
+ import { z } from "zod";
2
+ import { companyIdSchema, extractList, resolveCompanyId, safeHandler, textResult } from "../helpers.js";
3
+ /**
4
+ * Trims a CMS post row for list results. The raw row carries the full
5
+ * `content` body (`{en, tr, fa}` HTML) alongside `short_content`, five image
6
+ * variants, and per-locale JSON blobs (`features`/`info`) meant for the page
7
+ * renderer — a list result only needs enough to identify a post and decide
8
+ * whether to fetch it in full with get_post.
9
+ */
10
+ function summarisePost(p) {
11
+ return {
12
+ id: p.id,
13
+ slug: p.slug,
14
+ type: p.type,
15
+ status: p.status,
16
+ title: p.title?.en || p.title?.fa || undefined,
17
+ short_content: p.short_content?.en || p.short_content?.fa || undefined,
18
+ is_featured: Boolean(p.is_featured),
19
+ view_count: p.view_count ?? undefined,
20
+ author: [p.user_firstname, p.user_lastname].filter(Boolean).join(" ") || undefined,
21
+ category_ids: Array.isArray(p.category_ids) ? p.category_ids : undefined,
22
+ published: p.published || undefined,
23
+ created: p.created,
24
+ updated: p.updated
25
+ };
26
+ }
27
+ /** CMS tools: blog/news posts and static custom pages. */
28
+ export function registerCmsTools(server, client) {
29
+ server.registerTool("list_posts", {
30
+ title: "List CMS posts",
31
+ description: "List blog/news posts.",
32
+ inputSchema: {
33
+ company_id: companyIdSchema,
34
+ search: z.string().optional(),
35
+ limit: z.number().int().min(1).max(50).optional().default(15),
36
+ page: z.number().int().min(1).optional().default(1)
37
+ }
38
+ }, safeHandler(async (args) => {
39
+ const companyId = resolveCompanyId(client, args.company_id);
40
+ const response = await client.get("posts/search", {
41
+ company_id: companyId,
42
+ search: args.search,
43
+ limit: args.limit,
44
+ page: args.page
45
+ });
46
+ const { items, total } = extractList(response.data, "posts");
47
+ return textResult({ count: total ?? items.length, posts: items.map(summarisePost) });
48
+ }));
49
+ server.registerTool("get_post", {
50
+ title: "Get a CMS post",
51
+ description: "Fetch one post in full, by id or slug.",
52
+ inputSchema: {
53
+ company_id: companyIdSchema,
54
+ post_id: z.number().int().optional(),
55
+ slug: z.string().optional()
56
+ }
57
+ }, safeHandler(async (args) => {
58
+ if (!args.post_id && !args.slug) {
59
+ throw new Error("Pass either post_id or slug.");
60
+ }
61
+ const companyId = resolveCompanyId(client, args.company_id);
62
+ const path = args.post_id ? `posts/${args.post_id}` : `posts/slug/${args.slug}`;
63
+ const response = await client.get(path, { company_id: companyId });
64
+ return textResult(response.data);
65
+ }));
66
+ server.registerTool("create_post", {
67
+ title: "Create a CMS post",
68
+ description: "Create a blog/news post.",
69
+ inputSchema: {
70
+ company_id: companyIdSchema,
71
+ title: z.string().min(1),
72
+ content: z.string().optional(),
73
+ category_id: z.number().int().optional()
74
+ }
75
+ }, safeHandler(async (args) => {
76
+ const companyId = resolveCompanyId(client, args.company_id);
77
+ const response = await client.post("posts/create", {
78
+ company_id: companyId,
79
+ title: args.title,
80
+ content: args.content,
81
+ category_id: args.category_id
82
+ });
83
+ return textResult({ created: true, post: response.data });
84
+ }));
85
+ server.registerTool("update_post", {
86
+ title: "Update a CMS post",
87
+ description: "Edit a post's title or content.",
88
+ inputSchema: {
89
+ company_id: companyIdSchema,
90
+ post_id: z.number().int(),
91
+ title: z.string().min(1).optional(),
92
+ content: z.string().optional()
93
+ }
94
+ }, safeHandler(async (args) => {
95
+ const companyId = resolveCompanyId(client, args.company_id);
96
+ const response = await client.post("posts/edit", {
97
+ company_id: companyId,
98
+ id: args.post_id,
99
+ title: args.title,
100
+ content: args.content
101
+ });
102
+ return textResult({ updated: true, post: response.data });
103
+ }));
104
+ server.registerTool("delete_post", {
105
+ title: "Delete a CMS post",
106
+ description: "Delete a post.",
107
+ inputSchema: { company_id: companyIdSchema, post_id: z.number().int() }
108
+ }, safeHandler(async (args) => {
109
+ const companyId = resolveCompanyId(client, args.company_id);
110
+ await client.post(`posts/delete/${args.post_id}`, { company_id: companyId });
111
+ return textResult({ deleted: true, post_id: args.post_id });
112
+ }));
113
+ server.registerTool("list_custom_pages", {
114
+ title: "List custom pages",
115
+ description: "List static custom pages on the company's site.",
116
+ inputSchema: {
117
+ company_id: companyIdSchema,
118
+ search: z.string().optional(),
119
+ limit: z.number().int().min(1).max(50).optional().default(15),
120
+ page: z.number().int().min(1).optional().default(1)
121
+ }
122
+ }, safeHandler(async (args) => {
123
+ const companyId = resolveCompanyId(client, args.company_id);
124
+ const response = await client.get("custom-pages/search", {
125
+ company_id: companyId,
126
+ search: args.search,
127
+ limit: args.limit,
128
+ page: args.page
129
+ });
130
+ const { items, total } = extractList(response.data, "custom_pages");
131
+ return textResult({ count: total ?? items.length, custom_pages: items });
132
+ }));
133
+ server.registerTool("get_custom_page", {
134
+ title: "Get a custom page",
135
+ description: "Fetch one custom page's content.",
136
+ inputSchema: { company_id: companyIdSchema, page_id: z.number().int() }
137
+ }, safeHandler(async (args) => {
138
+ const companyId = resolveCompanyId(client, args.company_id);
139
+ const response = await client.get(`custom-pages/${args.page_id}`, {
140
+ company_id: companyId
141
+ });
142
+ return textResult(response.data);
143
+ }));
144
+ }
145
+ //# sourceMappingURL=cms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cms.js","sourceRoot":"","sources":["../../src/tools/cms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,269 @@
1
+ import { z } from "zod";
2
+ import { boolParam, companyIdSchema, resolveCompanyId, safeHandler, textResult } from "../helpers.js";
3
+ /**
4
+ * Pipeline/stage rows duplicate their Farsi name twice: once inside the
5
+ * `{en, fa}` name object and again as a separately flattened `*_fa` column
6
+ * from the same underlying table row. Stages nested under a pipeline here
7
+ * keep the same duplication, so they're trimmed too.
8
+ */
9
+ function summarisePipeline(p) {
10
+ return {
11
+ id: p.id,
12
+ name: p.name?.en || p.name?.fa || undefined,
13
+ kind: p.kind,
14
+ num: p.num,
15
+ is_default: Boolean(p.is_default),
16
+ is_active: Boolean(p.is_active),
17
+ stages: Array.isArray(p.stages) ? p.stages.map(summariseStage) : undefined
18
+ };
19
+ }
20
+ function summariseStage(s) {
21
+ return {
22
+ id: s.id,
23
+ pipeline_id: s.pipeline_id,
24
+ pipeline_name: s.pipeline_name?.en || s.pipeline_name?.fa || undefined,
25
+ pipeline_kind: s.pipeline_kind || undefined,
26
+ stage_name: s.stage_name?.en || s.stage_name?.fa || undefined,
27
+ num: s.num,
28
+ probability_default: s.probability_default ?? undefined,
29
+ is_won: Boolean(s.is_won),
30
+ is_lost: Boolean(s.is_lost),
31
+ is_active: Boolean(s.is_active),
32
+ color_code: s.color_code || undefined
33
+ };
34
+ }
35
+ /**
36
+ * CRM configuration tools: pipelines/stages, lead sources, custom fields, tags,
37
+ * attachments, and lead-scoring rules.
38
+ *
39
+ * These shape the boards that crm_create_contact/crm_create_deal place records
40
+ * on — list_pipelines and list_stages are how a caller resolves the ids those
41
+ * tools need.
42
+ */
43
+ export function registerCrmAdminTools(server, client) {
44
+ server.registerTool("crm_list_pipelines", {
45
+ title: "List CRM pipelines",
46
+ description: "List lead or deal pipelines. Use this to resolve pipeline_id for contacts and deals.",
47
+ inputSchema: { company_id: companyIdSchema, kind: z.enum(["lead", "deal"]).optional() }
48
+ }, safeHandler(async (args) => {
49
+ const companyId = resolveCompanyId(client, args.company_id);
50
+ const response = await client.get("crm/pipelines/all", {
51
+ company_id: companyId,
52
+ kind: args.kind
53
+ });
54
+ const items = response.data ?? [];
55
+ return textResult({ count: items.length, pipelines: items.map(summarisePipeline) });
56
+ }));
57
+ server.registerTool("crm_create_pipeline", {
58
+ title: "Create a CRM pipeline",
59
+ description: "Create a lead or deal pipeline. Add stages to it afterward with crm_create_stage.",
60
+ inputSchema: {
61
+ company_id: companyIdSchema,
62
+ name: z.string().min(1).max(100),
63
+ kind: z.enum(["lead", "deal"]),
64
+ name_fa: z.string().optional(),
65
+ num: z.number().optional().default(0),
66
+ is_default: z.boolean().optional(),
67
+ is_active: z.boolean().optional().default(true)
68
+ }
69
+ }, safeHandler(async (args) => {
70
+ const companyId = resolveCompanyId(client, args.company_id);
71
+ const response = await client.post("crm/pipelines/create", {
72
+ company_id: companyId,
73
+ name: args.name,
74
+ kind: args.kind,
75
+ name_fa: args.name_fa,
76
+ num: args.num,
77
+ is_default: boolParam(args.is_default),
78
+ is_active: boolParam(args.is_active)
79
+ });
80
+ return textResult({ created: true, pipeline: response.data });
81
+ }));
82
+ server.registerTool("crm_delete_pipeline", {
83
+ title: "Delete a CRM pipeline",
84
+ description: "Delete a pipeline. Refused if any deal still references it.",
85
+ inputSchema: { company_id: companyIdSchema, pipeline_id: z.number().int() }
86
+ }, safeHandler(async (args) => {
87
+ const companyId = resolveCompanyId(client, args.company_id);
88
+ await client.post(`crm/pipelines/delete/${args.pipeline_id}`, { company_id: companyId });
89
+ return textResult({ deleted: true, pipeline_id: args.pipeline_id });
90
+ }));
91
+ server.registerTool("crm_list_stages", {
92
+ title: "List CRM pipeline stages",
93
+ description: "List stages, optionally for one pipeline. is_won/is_lost mark the stages that settle a " +
94
+ "lead or deal. Use this to resolve stage_id.",
95
+ inputSchema: { company_id: companyIdSchema, pipeline_id: z.number().int().optional() }
96
+ }, safeHandler(async (args) => {
97
+ const companyId = resolveCompanyId(client, args.company_id);
98
+ const response = await client.get("crm/stages/all", {
99
+ company_id: companyId,
100
+ pipeline_id: args.pipeline_id
101
+ });
102
+ const items = response.data ?? [];
103
+ return textResult({ count: items.length, stages: items.map(summariseStage) });
104
+ }));
105
+ server.registerTool("crm_create_stage", {
106
+ title: "Create a CRM pipeline stage",
107
+ description: "Add a stage to a pipeline at a given position (num).",
108
+ inputSchema: {
109
+ company_id: companyIdSchema,
110
+ pipeline_id: z.number().int(),
111
+ stage_name: z.string().min(1).max(100),
112
+ num: z.number().describe("Sort position."),
113
+ stage_name_fa: z.string().optional(),
114
+ probability_default: z.number().int().optional().default(0),
115
+ is_won: z.boolean().optional().default(false),
116
+ is_lost: z.boolean().optional().default(false),
117
+ is_active: z.boolean().optional().default(true),
118
+ color_code: z.string().max(7).optional()
119
+ }
120
+ }, safeHandler(async (args) => {
121
+ const companyId = resolveCompanyId(client, args.company_id);
122
+ const response = await client.post("crm/stages/create", {
123
+ company_id: companyId,
124
+ pipeline_id: args.pipeline_id,
125
+ stage_name: args.stage_name,
126
+ num: args.num,
127
+ stage_name_fa: args.stage_name_fa,
128
+ probability_default: args.probability_default,
129
+ is_won: boolParam(args.is_won),
130
+ is_lost: boolParam(args.is_lost),
131
+ is_active: boolParam(args.is_active),
132
+ color_code: args.color_code
133
+ });
134
+ return textResult({ created: true, stage: response.data });
135
+ }));
136
+ server.registerTool("crm_delete_stage", {
137
+ title: "Delete a CRM pipeline stage",
138
+ description: "Delete a stage. Refused if any deal is currently on it.",
139
+ inputSchema: { company_id: companyIdSchema, stage_id: z.number().int() }
140
+ }, safeHandler(async (args) => {
141
+ const companyId = resolveCompanyId(client, args.company_id);
142
+ await client.post(`crm/stages/delete/${args.stage_id}`, { company_id: companyId });
143
+ return textResult({ deleted: true, stage_id: args.stage_id });
144
+ }));
145
+ server.registerTool("crm_list_lead_sources", {
146
+ title: "List CRM lead sources",
147
+ description: "List lead sources, for tagging where a lead came from.",
148
+ inputSchema: { company_id: companyIdSchema }
149
+ }, safeHandler(async (args) => {
150
+ const companyId = resolveCompanyId(client, args.company_id);
151
+ const response = await client.get("crm/lead-sources/all", { company_id: companyId });
152
+ return textResult(response.data);
153
+ }));
154
+ server.registerTool("crm_create_lead_source", {
155
+ title: "Create a CRM lead source",
156
+ description: "Add a lead source.",
157
+ inputSchema: {
158
+ company_id: companyIdSchema,
159
+ source_name: z.string().min(1).max(100),
160
+ source_name_fa: z.string().optional(),
161
+ is_active: z.boolean().optional().default(true),
162
+ num: z.number().optional().default(0)
163
+ }
164
+ }, safeHandler(async (args) => {
165
+ const companyId = resolveCompanyId(client, args.company_id);
166
+ const response = await client.post("crm/lead-sources/create", {
167
+ company_id: companyId,
168
+ source_name: args.source_name,
169
+ source_name_fa: args.source_name_fa,
170
+ is_active: boolParam(args.is_active),
171
+ num: args.num
172
+ });
173
+ return textResult({ created: true, lead_source: response.data });
174
+ }));
175
+ server.registerTool("crm_list_tags", {
176
+ title: "List CRM tags",
177
+ description: "List tags available to attach to contacts.",
178
+ inputSchema: { company_id: companyIdSchema }
179
+ }, safeHandler(async (args) => {
180
+ const companyId = resolveCompanyId(client, args.company_id);
181
+ const response = await client.get("crm/tags/all", { company_id: companyId });
182
+ return textResult(response.data);
183
+ }));
184
+ server.registerTool("crm_create_tag", {
185
+ title: "Create a CRM tag",
186
+ description: "Create a tag that can be assigned to contacts.",
187
+ inputSchema: {
188
+ company_id: companyIdSchema,
189
+ name: z.string().min(1).max(100),
190
+ name_fa: z.string().optional(),
191
+ color_code: z.string().max(7).optional()
192
+ }
193
+ }, safeHandler(async (args) => {
194
+ const companyId = resolveCompanyId(client, args.company_id);
195
+ const response = await client.post("crm/tags/create", {
196
+ company_id: companyId,
197
+ name: args.name,
198
+ name_fa: args.name_fa,
199
+ color_code: args.color_code
200
+ });
201
+ return textResult({ created: true, tag: response.data });
202
+ }));
203
+ server.registerTool("crm_assign_tag", {
204
+ title: "Assign or unassign a CRM tag",
205
+ description: "Attach or detach a tag on a contact.",
206
+ inputSchema: {
207
+ company_id: companyIdSchema,
208
+ contact_id: z.number().int(),
209
+ tag_id: z.number().int(),
210
+ assign: z.boolean().optional().default(true).describe("true attaches, false detaches.")
211
+ }
212
+ }, safeHandler(async (args) => {
213
+ const companyId = resolveCompanyId(client, args.company_id);
214
+ const path = (args.assign ?? true) ? "crm/tags/assign" : "crm/tags/unassign";
215
+ await client.post(path, { company_id: companyId, contact_id: args.contact_id, tag_id: args.tag_id });
216
+ return textResult({ contact_id: args.contact_id, tag_id: args.tag_id, assigned: args.assign ?? true });
217
+ }));
218
+ server.registerTool("crm_list_custom_fields", {
219
+ title: "List CRM custom field definitions",
220
+ description: "List the custom fields defined for contacts and/or leads, with their type and options.",
221
+ inputSchema: { company_id: companyIdSchema }
222
+ }, safeHandler(async (args) => {
223
+ const companyId = resolveCompanyId(client, args.company_id);
224
+ const response = await client.get("crm/custom-fields/all", { company_id: companyId });
225
+ return textResult(response.data);
226
+ }));
227
+ server.registerTool("crm_create_custom_field", {
228
+ title: "Create a CRM custom field",
229
+ description: "Define a custom field for contacts and/or leads. Values are later set via " +
230
+ "crm_create_contact/crm_update_contact's custom_field_values.",
231
+ inputSchema: {
232
+ company_id: companyIdSchema,
233
+ applies_to: z.enum(["lead", "contact", "both"]),
234
+ field_key: z
235
+ .string()
236
+ .regex(/^[a-z0-9_]+$/)
237
+ .max(64)
238
+ .describe("Lowercase snake_case identifier, unique per company."),
239
+ label: z.string().min(1).max(100),
240
+ type: z.enum(["text", "textarea", "number", "select", "date", "toggle"]),
241
+ label_fa: z.string().optional(),
242
+ options: z.array(z.string()).optional().describe("Required when type is 'select'."),
243
+ radius_multiplier: z.number().positive().optional().describe("Used only when type is 'number'.")
244
+ }
245
+ }, safeHandler(async (args) => {
246
+ const companyId = resolveCompanyId(client, args.company_id);
247
+ const response = await client.post("crm/custom-fields/create", {
248
+ company_id: companyId,
249
+ applies_to: args.applies_to,
250
+ field_key: args.field_key,
251
+ label: args.label,
252
+ type: args.type,
253
+ label_fa: args.label_fa,
254
+ options: args.options ? JSON.stringify(args.options) : undefined,
255
+ radius_multiplier: args.radius_multiplier
256
+ });
257
+ return textResult({ created: true, field: response.data });
258
+ }));
259
+ server.registerTool("crm_settings", {
260
+ title: "Get CRM settings",
261
+ description: "Get the CRM module's currency override and default location radius.",
262
+ inputSchema: { company_id: companyIdSchema }
263
+ }, safeHandler(async (args) => {
264
+ const companyId = resolveCompanyId(client, args.company_id);
265
+ const response = await client.get("crm/settings/all", { company_id: companyId });
266
+ return textResult(response.data);
267
+ }));
268
+ }
269
+ //# sourceMappingURL=crm-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crm-admin.js","sourceRoot":"","sources":["../../src/tools/crm-admin.ts"],"names":[],"mappings":"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"}