@meltstudio/meltctl 4.152.0 → 4.154.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 +51 -7
  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.152.0";
17
+ CLI_VERSION = "4.154.0";
18
18
  }
19
19
  });
20
20
 
@@ -498,6 +498,24 @@ function createStandupsResource(config) {
498
498
  if (status !== 200)
499
499
  throw new Error(data.error ?? `Failed to fetch missing standups (${status})`);
500
500
  return data;
501
+ },
502
+ /**
503
+ * Per-developer standup-compliance counts over a sliding window. Feeds
504
+ * the dashboard's "Standup discipline" verdict on the developer detail
505
+ * page and the worklist items for the negative tiers (inconsistent /
506
+ * slipping / missing). Manager-only.
507
+ */
508
+ async getPerPersonStats(opts) {
509
+ const params = new URLSearchParams();
510
+ if (opts?.windowDays)
511
+ params.set("windowDays", String(opts.windowDays));
512
+ const path9 = `/standups/per-person-stats${params.toString() ? `?${params}` : ""}`;
513
+ const { data, status } = await apiFetch(config, path9);
514
+ if (status === 403)
515
+ throw new Error("Access denied. Only Team Managers can view standup stats.");
516
+ if (status !== 200)
517
+ throw new Error(data.error ?? `Failed to fetch standup per-person stats (${status})`);
518
+ return data;
501
519
  }
502
520
  };
503
521
  }
@@ -641,8 +659,12 @@ function createPeopleResource(config) {
641
659
  // ../sdk/dist/resources/projects.js
642
660
  function createProjectsResource(config) {
643
661
  return {
644
- async list() {
645
- const { data, status } = await apiFetch(config, "/projects");
662
+ async list(opts) {
663
+ const params = new URLSearchParams();
664
+ if (opts?.activeOnly)
665
+ params.set("activeOnly", "true");
666
+ const path9 = `/projects${params.toString() ? `?${params}` : ""}`;
667
+ const { data, status } = await apiFetch(config, path9);
646
668
  if (status === 403)
647
669
  throw new Error("Access denied. Only Team Managers can view projects.");
648
670
  if (status !== 200)
@@ -3351,6 +3373,24 @@ function createStandupsResource2(config) {
3351
3373
  if (status !== 200)
3352
3374
  throw new Error(data.error ?? `Failed to fetch missing standups (${status})`);
3353
3375
  return data;
3376
+ },
3377
+ /**
3378
+ * Per-developer standup-compliance counts over a sliding window. Feeds
3379
+ * the dashboard's "Standup discipline" verdict on the developer detail
3380
+ * page and the worklist items for the negative tiers (inconsistent /
3381
+ * slipping / missing). Manager-only.
3382
+ */
3383
+ async getPerPersonStats(opts) {
3384
+ const params = new URLSearchParams();
3385
+ if (opts?.windowDays)
3386
+ params.set("windowDays", String(opts.windowDays));
3387
+ const path22 = `/standups/per-person-stats${params.toString() ? `?${params}` : ""}`;
3388
+ const { data, status } = await apiFetch2(config, path22);
3389
+ if (status === 403)
3390
+ throw new Error("Access denied. Only Team Managers can view standup stats.");
3391
+ if (status !== 200)
3392
+ throw new Error(data.error ?? `Failed to fetch standup per-person stats (${status})`);
3393
+ return data;
3354
3394
  }
3355
3395
  };
3356
3396
  }
@@ -3482,8 +3522,12 @@ function createPeopleResource2(config) {
3482
3522
  }
3483
3523
  function createProjectsResource2(config) {
3484
3524
  return {
3485
- async list() {
3486
- const { data, status } = await apiFetch2(config, "/projects");
3525
+ async list(opts) {
3526
+ const params = new URLSearchParams();
3527
+ if (opts?.activeOnly)
3528
+ params.set("activeOnly", "true");
3529
+ const path22 = `/projects${params.toString() ? `?${params}` : ""}`;
3530
+ const { data, status } = await apiFetch2(config, path22);
3487
3531
  if (status === 403)
3488
3532
  throw new Error("Access denied. Only Team Managers can view projects.");
3489
3533
  if (status !== 200)
@@ -4508,7 +4552,7 @@ function withClientArgs(getClient2, handler) {
4508
4552
  };
4509
4553
  }
4510
4554
  async function listProjects(client) {
4511
- return safe(() => client.projects.list());
4555
+ return safe(() => client.projects.list({ activeOnly: true }));
4512
4556
  }
4513
4557
  async function getProjectSettings(client, input3) {
4514
4558
  return safe(() => client.pm.getProjectSettings(input3.projectId));
@@ -4521,7 +4565,7 @@ function registerProjectTools(server, getClient2) {
4521
4565
  "list_projects",
4522
4566
  {
4523
4567
  title: "List projects",
4524
- description: "Lists every Melt project the authenticated user can see. Use this to resolve a project's name to its numeric `projectId` before calling any other tool. Returns id, name, client, project manager, and repo count per project.",
4568
+ description: "Lists every actively-managed Melt project the authenticated user can see \u2014 i.e. projects with a project manager assigned. Use this to resolve a project's name to its numeric `projectId` before calling any other tool. Returns id, name, client, project manager, and repo count per project. Projects without a PM are unmanaged and intentionally excluded; create_feature / assign_feature_to_phase against an unmanaged project will succeed but is rarely intended.",
4525
4569
  inputSchema: {}
4526
4570
  },
4527
4571
  withClient(getClient2, listProjects)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltstudio/meltctl",
3
- "version": "4.152.0",
3
+ "version": "4.154.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",