@meltstudio/meltctl 5.9.0 → 5.10.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 +84 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -7450,7 +7450,7 @@ var CLI_VERSION;
7450
7450
  var init_version = __esm({
7451
7451
  "src/utils/version.ts"() {
7452
7452
  "use strict";
7453
- CLI_VERSION = "5.9.0";
7453
+ CLI_VERSION = "5.10.0";
7454
7454
  }
7455
7455
  });
7456
7456
 
@@ -27935,6 +27935,32 @@ function createProfileAuditsResource(config2) {
27935
27935
  };
27936
27936
  }
27937
27937
 
27938
+ // ../sdk/dist/resources/support-effort.js
27939
+ function createSupportEffortResource(config2) {
27940
+ return {
27941
+ /**
27942
+ * Get the by-project + by-architect rollups, the week/month trend, and the
27943
+ * actionable missing-time worklist. `period` selects the trend granularity
27944
+ * (default 'week').
27945
+ */
27946
+ async get(opts = {}) {
27947
+ const params = new URLSearchParams();
27948
+ if (opts.period)
27949
+ params.set("period", opts.period);
27950
+ const query = params.toString();
27951
+ const path10 = query ? `/support-effort?${query}` : "/support-effort";
27952
+ const { data, status } = await apiFetch(config2, path10);
27953
+ if (status === 403)
27954
+ throw new Error("Access denied. Only Team Managers can view support effort.");
27955
+ if (status !== 200) {
27956
+ const msg = data && typeof data === "object" && "error" in data ? data.error : void 0;
27957
+ throw new Error(msg ?? `Failed to fetch support effort (${status})`);
27958
+ }
27959
+ return data;
27960
+ }
27961
+ };
27962
+ }
27963
+
27938
27964
  // ../sdk/dist/client.js
27939
27965
  var DEFAULT_TIMEOUT_MS = 1e4;
27940
27966
  var RETRYABLE_STATUS = /* @__PURE__ */ new Set([502, 503, 504]);
@@ -28006,7 +28032,8 @@ function createMeltClient(config2) {
28006
28032
  me: createMeResource(config2),
28007
28033
  developers: createDevelopersResource(config2),
28008
28034
  endpointChecks: createEndpointChecksResource(config2),
28009
- profileAudits: createProfileAuditsResource(config2)
28035
+ profileAudits: createProfileAuditsResource(config2),
28036
+ supportEffort: createSupportEffortResource(config2)
28010
28037
  };
28011
28038
  }
28012
28039
 
@@ -54496,6 +54523,30 @@ function createProfileAuditsResource2(config2) {
54496
54523
  }
54497
54524
  };
54498
54525
  }
54526
+ function createSupportEffortResource2(config2) {
54527
+ return {
54528
+ /**
54529
+ * Get the by-project + by-architect rollups, the week/month trend, and the
54530
+ * actionable missing-time worklist. `period` selects the trend granularity
54531
+ * (default 'week').
54532
+ */
54533
+ async get(opts = {}) {
54534
+ const params = new URLSearchParams();
54535
+ if (opts.period)
54536
+ params.set("period", opts.period);
54537
+ const query = params.toString();
54538
+ const path22 = query ? `/support-effort?${query}` : "/support-effort";
54539
+ const { data, status } = await apiFetch2(config2, path22);
54540
+ if (status === 403)
54541
+ throw new Error("Access denied. Only Team Managers can view support effort.");
54542
+ if (status !== 200) {
54543
+ const msg = data && typeof data === "object" && "error" in data ? data.error : void 0;
54544
+ throw new Error(msg ?? `Failed to fetch support effort (${status})`);
54545
+ }
54546
+ return data;
54547
+ }
54548
+ };
54549
+ }
54499
54550
  var DEFAULT_TIMEOUT_MS2 = 1e4;
54500
54551
  var RETRYABLE_STATUS2 = /* @__PURE__ */ new Set([502, 503, 504]);
54501
54552
  function delay2(ms) {
@@ -54566,7 +54617,8 @@ function createMeltClient2(config2) {
54566
54617
  me: createMeResource2(config2),
54567
54618
  developers: createDevelopersResource2(config2),
54568
54619
  endpointChecks: createEndpointChecksResource2(config2),
54569
- profileAudits: createProfileAuditsResource2(config2)
54620
+ profileAudits: createProfileAuditsResource2(config2),
54621
+ supportEffort: createSupportEffortResource2(config2)
54570
54622
  };
54571
54623
  }
54572
54624
  var auditFindingSchema2 = external_exports.object({
@@ -55833,6 +55885,34 @@ function registerEndpointCheckTools(server, getClient2) {
55833
55885
  withClientArgs(getClient2, submitEndpointCheck)
55834
55886
  );
55835
55887
  }
55888
+ async function getSupportEffort(client, input) {
55889
+ return safe(async () => {
55890
+ const data = await client.supportEffort.get({ period: input.period });
55891
+ const totalMissingTime = data.missingTimeTickets.length;
55892
+ return {
55893
+ asOf: data.asOf,
55894
+ byProject: data.byProject,
55895
+ byArchitect: data.byArchitect,
55896
+ trend: data.trend,
55897
+ // Surface the count prominently; the full actionable list is available via
55898
+ // the read API / dashboard page (Slice 2) rather than flooding the tool.
55899
+ missingTimeCount: totalMissingTime
55900
+ };
55901
+ });
55902
+ }
55903
+ function registerSupportEffortTools(server, getClient2) {
55904
+ server.registerTool(
55905
+ "get_support_effort",
55906
+ {
55907
+ title: "Get tech-support effort",
55908
+ description: "Tech-support / DevOps effort rollup for the 'Tech Support Ops' Linear team (key DEV). Returns logged hours (parsed from each ticket's self-reported 'Time Spent' label \u2014 the architect's active effort, NOT cycle time) and ticket counts rolled up two ways: `byProject` (which client/product the support load lands on) and `byArchitect` (who is carrying it). Each rollup entry has ticketCount, totalLoggedMinutes, avgLoggedMinutes, and missingTimeCount. Also returns `missingTimeCount`: the number of Done tickets with no time label (a data-quality gap that makes the hours less trustworthy \u2014 the dashboard page surfaces the actionable list). `period` selects the trend granularity (week|month, default week). Manager-gated. Use for 'how much support work did <project> need?', 'who's carrying the support load?', and 'is our support time logged completely?'.",
55909
+ inputSchema: {
55910
+ period: external_exports.enum(["week", "month"]).optional().describe("Trend bucket granularity. Default week.")
55911
+ }
55912
+ },
55913
+ withClientArgs(getClient2, getSupportEffort)
55914
+ );
55915
+ }
55836
55916
  var VERSION = "0.0.0";
55837
55917
  function createMcpServer(clientOrProvider) {
55838
55918
  const getClient2 = typeof clientOrProvider === "function" ? clientOrProvider : () => Promise.resolve(clientOrProvider);
@@ -55851,6 +55931,7 @@ function createMcpServer(clientOrProvider) {
55851
55931
  registerFindingsTools(server, getClient2);
55852
55932
  registerDailyPlanTools(server, getClient2);
55853
55933
  registerEndpointCheckTools(server, getClient2);
55934
+ registerSupportEffortTools(server, getClient2);
55854
55935
  return server;
55855
55936
  }
55856
55937
  async function startServer() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltstudio/meltctl",
3
- "version": "5.9.0",
3
+ "version": "5.10.0",
4
4
  "description": "AI-first development tooling for Melt teams — companion CLI for the org-distributed Claude Code dev skills",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",