@meltstudio/meltctl 4.176.0 → 4.178.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 (2) hide show
  1. package/dist/index.js +97 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ var CLI_VERSION;
14
14
  var init_version = __esm({
15
15
  "src/utils/version.ts"() {
16
16
  "use strict";
17
- CLI_VERSION = "4.176.0";
17
+ CLI_VERSION = "4.178.0";
18
18
  }
19
19
  });
20
20
 
@@ -1130,6 +1130,29 @@ function createPmResource(config) {
1130
1130
  const res = await apiFetch(config, `/pm/project-settings/${projectId}`, { method: "PATCH", body: JSON.stringify(input3) });
1131
1131
  return unwrap("update project settings", res);
1132
1132
  },
1133
+ /**
1134
+ * The calling PM's daily plan (#484). `date` defaults to today (server,
1135
+ * Colombia time). Returns null when no plan exists for that day. Auth-only:
1136
+ * a PM only ever reads their own plan.
1137
+ */
1138
+ async getDailyPlan(date) {
1139
+ const qs = date ? `?date=${encodeURIComponent(date)}` : "";
1140
+ const res = await apiFetch(config, `/pm/daily-plan${qs}`);
1141
+ const data = unwrap("get daily plan", res);
1142
+ return "id" in data ? data : null;
1143
+ },
1144
+ /**
1145
+ * Upsert the calling PM's daily plan for `planDate` (defaults to today).
1146
+ * plan-my-day writes the morning agenda; close-my-day writes it back with
1147
+ * each item's reconciled status. Idempotent on (pmEmail, planDate).
1148
+ */
1149
+ async submitDailyPlan(input3) {
1150
+ const res = await apiFetch(config, `/pm/daily-plan`, {
1151
+ method: "POST",
1152
+ body: JSON.stringify(input3)
1153
+ });
1154
+ return unwrap("submit daily plan", res);
1155
+ },
1133
1156
  /**
1134
1157
  * Read-only project context for the audit skill + other dev-callable
1135
1158
  * tools (#464). Auth-only (no manager check) so devs can call it from
@@ -3336,6 +3359,7 @@ import { z as z7 } from "zod";
3336
3359
  import { z as z8 } from "zod";
3337
3360
  import { z as z9 } from "zod";
3338
3361
  import { z as z10 } from "zod";
3362
+ import { z as z11 } from "zod";
3339
3363
  function createAuditsResource2(config) {
3340
3364
  return {
3341
3365
  async submit(input3) {
@@ -4166,6 +4190,29 @@ function createPmResource2(config) {
4166
4190
  const res = await apiFetch2(config, `/pm/project-settings/${projectId}`, { method: "PATCH", body: JSON.stringify(input3) });
4167
4191
  return unwrap2("update project settings", res);
4168
4192
  },
4193
+ /**
4194
+ * The calling PM's daily plan (#484). `date` defaults to today (server,
4195
+ * Colombia time). Returns null when no plan exists for that day. Auth-only:
4196
+ * a PM only ever reads their own plan.
4197
+ */
4198
+ async getDailyPlan(date) {
4199
+ const qs = date ? `?date=${encodeURIComponent(date)}` : "";
4200
+ const res = await apiFetch2(config, `/pm/daily-plan${qs}`);
4201
+ const data = unwrap2("get daily plan", res);
4202
+ return "id" in data ? data : null;
4203
+ },
4204
+ /**
4205
+ * Upsert the calling PM's daily plan for `planDate` (defaults to today).
4206
+ * plan-my-day writes the morning agenda; close-my-day writes it back with
4207
+ * each item's reconciled status. Idempotent on (pmEmail, planDate).
4208
+ */
4209
+ async submitDailyPlan(input3) {
4210
+ const res = await apiFetch2(config, `/pm/daily-plan`, {
4211
+ method: "POST",
4212
+ body: JSON.stringify(input3)
4213
+ });
4214
+ return unwrap2("submit daily plan", res);
4215
+ },
4169
4216
  /**
4170
4217
  * Read-only project context for the audit skill + other dev-callable
4171
4218
  * tools (#464). Auth-only (no manager check) so devs can call it from
@@ -5520,6 +5567,54 @@ function registerFindingsTools(server, getClient2) {
5520
5567
  withClientArgs(getClient2, listFindings)
5521
5568
  );
5522
5569
  }
5570
+ var planItemShape = {
5571
+ label: z11.string().min(1).describe("The thing to do, in plain terms."),
5572
+ projectId: z11.number().int().positive().optional(),
5573
+ projectName: z11.string().optional(),
5574
+ suggestedSkill: z11.string().optional().describe("The skill to run for this item, or 'dashboard' for a project-page action."),
5575
+ meeting: z11.string().optional().describe("The meeting this item preps for, if any."),
5576
+ status: z11.enum(["pending", "done", "blocked", "carried"]),
5577
+ note: z11.string().optional()
5578
+ };
5579
+ var planItemSchema = z11.object(planItemShape);
5580
+ async function getDailyPlan(client, input3 = {}) {
5581
+ return safe(() => client.pm.getDailyPlan(input3.date));
5582
+ }
5583
+ async function submitDailyPlan(client, input3) {
5584
+ return safe(() => client.pm.submitDailyPlan(input3));
5585
+ }
5586
+ var getDailyPlanInputSchema = z11.object({
5587
+ date: z11.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional()
5588
+ });
5589
+ var submitDailyPlanInputSchema = z11.object({
5590
+ planDate: z11.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
5591
+ agenda: z11.array(planItemSchema)
5592
+ });
5593
+ function registerDailyPlanTools(server, getClient2) {
5594
+ server.registerTool(
5595
+ "get_daily_plan",
5596
+ {
5597
+ title: "Get the PM's daily plan",
5598
+ description: "Returns the calling PM's daily plan for a day (defaults to today, Colombia time), or null if none exists. Each agenda item has a label, optional project/meeting/suggestedSkill, a status (pending/done/blocked/carried), and an optional note. Use this in melt-pm-close-my-day to read back the morning's plan and reconcile it. Self-scoped \u2014 a PM only ever reads their own plan.",
5599
+ inputSchema: {
5600
+ date: z11.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe("YYYY-MM-DD. Omit for today.")
5601
+ }
5602
+ },
5603
+ withClientArgs(getClient2, getDailyPlan)
5604
+ );
5605
+ server.registerTool(
5606
+ "submit_daily_plan",
5607
+ {
5608
+ title: "Submit/update the PM's daily plan",
5609
+ description: "Upserts the calling PM's daily plan for a day (defaults to today). melt-pm-plan-my-day calls this once it has built the morning agenda (items with status='pending'); melt-pm-close-my-day calls it again with the same items flipped to done/blocked/carried. Idempotent per (PM, day) \u2014 calling again replaces the day's agenda. Self-scoped.",
5610
+ inputSchema: {
5611
+ planDate: z11.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional().describe("YYYY-MM-DD. Omit for today."),
5612
+ agenda: z11.array(planItemSchema)
5613
+ }
5614
+ },
5615
+ withClientArgs(getClient2, submitDailyPlan)
5616
+ );
5617
+ }
5523
5618
  var VERSION = "0.0.0";
5524
5619
  function createMcpServer(clientOrProvider) {
5525
5620
  const getClient2 = typeof clientOrProvider === "function" ? clientOrProvider : () => Promise.resolve(clientOrProvider);
@@ -5536,6 +5631,7 @@ function createMcpServer(clientOrProvider) {
5536
5631
  registerProjectHealthTools(server, getClient2);
5537
5632
  registerPortfolioStatusTools(server, getClient2);
5538
5633
  registerFindingsTools(server, getClient2);
5634
+ registerDailyPlanTools(server, getClient2);
5539
5635
  return server;
5540
5636
  }
5541
5637
  async function startServer() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltstudio/meltctl",
3
- "version": "4.176.0",
3
+ "version": "4.178.0",
4
4
  "description": "AI-first development tools for teams - set up AGENTS.md, Claude Code, Cursor, and OpenCode standards",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",