@meltstudio/meltctl 4.93.2 → 4.94.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 +74 -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.93.2";
17
+ CLI_VERSION = "4.94.0";
18
18
  }
19
19
  });
20
20
 
@@ -2567,6 +2567,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2567
2567
  import { z as z22 } from "zod";
2568
2568
  import { z as z3 } from "zod";
2569
2569
  import { z as z4 } from "zod";
2570
+ import { z as z5 } from "zod";
2570
2571
  function createAuditsResource2(config) {
2571
2572
  return {
2572
2573
  async submit(input3) {
@@ -3511,6 +3512,77 @@ function registerFeatureTools(server, client) {
3511
3512
  (args) => createFeature(client, args)
3512
3513
  );
3513
3514
  }
3515
+ var FLAG_STATUS_VALUES = ["open", "resolved", "dismissed", "all"];
3516
+ async function listAuditFlags(client, input3) {
3517
+ return safe(() => client.pm.listAuditFlags(input3.projectId, input3.status ?? "open"));
3518
+ }
3519
+ async function dismissAuditFlag(client, input3) {
3520
+ return safe(() => client.pm.dismissAuditFlag(input3.flagId, input3.reason));
3521
+ }
3522
+ async function getAuditCatalog(client) {
3523
+ return safe(() => client.pm.getAuditCatalog());
3524
+ }
3525
+ async function runProjectAudit(client, input3) {
3526
+ return safe(() => client.pm.runProjectAudit(input3.projectId));
3527
+ }
3528
+ var listAuditFlagsInputSchema = z5.object({
3529
+ projectId: z5.number().int().positive(),
3530
+ status: z5.enum(FLAG_STATUS_VALUES).optional()
3531
+ });
3532
+ var dismissAuditFlagInputSchema = z5.object({
3533
+ flagId: z5.string().uuid(),
3534
+ reason: z5.string().min(1)
3535
+ });
3536
+ function registerAuditTools(server, client) {
3537
+ server.registerTool(
3538
+ "list_audit_flags",
3539
+ {
3540
+ title: "List project audit flags",
3541
+ description: "Lists audit flags the nightly cron has raised for a project. Each entry pairs the flag (id, severity, evidence, entity it points at, first/last seen, occurrence count, dismissed-by/reason if applicable) with its catalog entry (human-readable title + description + rule type). Default status='open'; pass 'all' to include resolved + dismissed for context.",
3542
+ inputSchema: {
3543
+ projectId: z5.number().int().positive(),
3544
+ status: z5.enum(FLAG_STATUS_VALUES).optional().describe(
3545
+ "Default 'open'. 'resolved' = fixed (flag no longer tripping on latest run). 'dismissed' = PM marked intentionally accepted. 'all' = every flag ever raised on this project."
3546
+ )
3547
+ }
3548
+ },
3549
+ (args) => listAuditFlags(client, args)
3550
+ );
3551
+ server.registerTool(
3552
+ "get_audit_catalog",
3553
+ {
3554
+ title: "Get audit catalog",
3555
+ description: "Returns every audit rule the system knows about (code, category, title, description, severity, rubric version). Use this to explain to a PM what a specific flag means, or to enumerate what kinds of things we audit for. Catalog is read-only \u2014 new entries land via migration.",
3556
+ inputSchema: {}
3557
+ },
3558
+ () => getAuditCatalog(client)
3559
+ );
3560
+ server.registerTool(
3561
+ "dismiss_audit_flag",
3562
+ {
3563
+ title: "Dismiss audit flag",
3564
+ description: "Marks an audit flag as intentionally dismissed with a reason. Use when the PM has reviewed the flag and decided it's a false positive, out of scope, or an accepted trade-off. The reason is stored on the flag + visible in the audit trail; dismissals show up again the next time the flag re-fires unless the underlying rule is retired. This is a write \u2014 confirm with the PM before calling.",
3565
+ inputSchema: {
3566
+ flagId: z5.string().uuid(),
3567
+ reason: z5.string().min(1).describe(
3568
+ "Why this flag is being dismissed. Stored verbatim and shown in the audit trail."
3569
+ )
3570
+ }
3571
+ },
3572
+ (args) => dismissAuditFlag(client, args)
3573
+ );
3574
+ server.registerTool(
3575
+ "run_project_audit",
3576
+ {
3577
+ title: "Run project audit now",
3578
+ description: "Triggers an immediate audit run for a single project (same checks the nightly cron performs). Returns {fired, resolved, checkErrors}: how many new flags raised, how many existing flags cleared, and any per-check errors. Useful after a PM fixes something and wants to verify it cleared without waiting for tomorrow's cron.",
3579
+ inputSchema: {
3580
+ projectId: z5.number().int().positive()
3581
+ }
3582
+ },
3583
+ (args) => runProjectAudit(client, args)
3584
+ );
3585
+ }
3514
3586
  var VERSION = "0.0.0";
3515
3587
  function createMcpServer(client) {
3516
3588
  const server = new McpServer(
@@ -3520,6 +3592,7 @@ function createMcpServer(client) {
3520
3592
  registerProjectTools(server, client);
3521
3593
  registerPhaseTools(server, client);
3522
3594
  registerFeatureTools(server, client);
3595
+ registerAuditTools(server, client);
3523
3596
  return server;
3524
3597
  }
3525
3598
  async function startServer() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meltstudio/meltctl",
3
- "version": "4.93.2",
3
+ "version": "4.94.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",