@snagset/mcp 0.0.4 → 0.1.1

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.
package/README.md CHANGED
@@ -6,7 +6,8 @@ task the agent can start — rather than a screenshot pasted into a chat window.
6
6
 
7
7
  ## Setting it up
8
8
 
9
- Mint a token on your instance:
9
+ Mint a token on your instance — Studio › Integrations › MCP › **New token…**,
10
+ which shows it once beside the config below, or on the box itself:
10
11
 
11
12
  ```bash
12
13
  snagset mcp-token create "Claude Code"
package/dist/server.js CHANGED
@@ -2,7 +2,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { z } from "zod";
3
3
  import { Client } from "./client.js";
4
4
  import { mapToSource, MAX_CANDIDATES } from "./source.js";
5
- import { summary, detail, context, envelope, failure, MAX_THREADS, } from "./view.js";
5
+ import { summary, detail, context, envelope, failure, MAX_THREADS, brief } from "./view.js";
6
6
  const ok = (text) => ({ content: [{ type: "text", text }] });
7
7
  const err = (text) => ({ content: [{ type: "text", text: failure(text) }], isError: true });
8
8
  /** Unwrap a client result into a tool result, or the error the agent must relay. */
@@ -74,16 +74,26 @@ export function createServer(opts) {
74
74
  });
75
75
  server.registerTool("get_thread", {
76
76
  title: "Read one review thread",
77
- description: "The full conversation on one snag, oldest comment first, with what element it was left on.",
77
+ description: "The full conversation on one snag, oldest comment first, with what element it was left on. " +
78
+ "Answers as a markdown BRIEF by default — where to look, what's wrong, the screenshot; " +
79
+ "ask for format: 'json' for the structured view.",
78
80
  inputSchema: {
79
81
  key: z.string().describe("Thread key, e.g. SN-14"),
80
82
  project: z.string().optional(),
83
+ format: z
84
+ .enum(["markdown", "json"])
85
+ .optional()
86
+ .describe("markdown (default): the brief. json: the structured thread with ids and timestamps."),
81
87
  },
82
88
  }, async (args) => {
83
- const found = await findByKey(client, projectOf(args.project), args.key);
89
+ const project = projectOf(args.project);
90
+ const found = await findByKey(client, project, args.key);
84
91
  if (isToolResult(found))
85
92
  return found;
86
- return ok(envelope({ thread: detail(found) }));
93
+ if (args.format === "json")
94
+ return ok(envelope({ thread: detail(found) }));
95
+ // D88: a fenced JSON envelope is the wrong first answer for a model.
96
+ return ok(brief(found, { name: project ?? "the site", dashboardOrigin: client.host }));
87
97
  });
88
98
  // ── context:read ────────────────────────────────────────────────────────
89
99
  server.registerTool("get_thread_context", {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EACL,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,WAAW,GAEZ,MAAM,WAAW,CAAC;AAmCnB,MAAM,EAAE,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACjF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAEhH,oFAAoF;AACpF,SAAS,MAAM,CAAI,CAAY;IAC7B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AACD,MAAM,YAAY,GAAG,CAAC,CAAU,EAAmB,EAAE,CACnD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC;AAExD,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEhH,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,EACrD;QACE,YAAY,EACV,8EAA8E;YAC9E,oFAAoF;YACpF,sFAAsF;YACtF,sFAAsF;YACtF,uEAAuE;KAC1E,CACF,CAAC;IAEF;;;;;OAKG;IACH,MAAM,SAAS,GAAG,CAAC,GAAuB,EAAiB,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IAC1F,MAAM,SAAS,GAAG,GAAG,EAAE,CACrB,GAAG,CACD,yFAAyF;QACvF,sDAAsD,CACzD,CAAC;IAEJ,2EAA2E;IAE3E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EACT,sFAAsF;YACtF,8EAA8E;QAChF,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAChG,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YACxF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5E,WAAW,EAAE,CAAC;iBACX,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;iBACpD,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACzE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;SAC3D;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,EAAE,CAAC;QAEjC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAyB,oBAAoB,OAAO,UAAU,EAAE;YACzF,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE;SACzE,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC/B,+DAA+D;QAC/D,oEAAoE;QACpE,yEAAyE;QACzE,2BAA2B;QAC3B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,OAAO,EAAE,CACP,QAAQ,CAAC;YACP,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3B,mEAAmE;YACnE,mEAAmE;YACnE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM;gBAC/B,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,KAAK,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,gCAAgC,EAAE;gBAC7F,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CACH,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,4FAA4F;QAC9F,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC,CACF,CAAC;IAEF,2EAA2E;IAE3E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EACT,8EAA8E;YAC9E,qFAAqF;YACrF,6CAA6C;QAC/C,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;KACjE,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;IAEF,4EAA4E;IAE5E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,2FAA2F;YAC3F,yFAAyF;YACzF,wDAAwD;QAC1D,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SACjG;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAA4B,CAAC;QAC/D,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAA4B,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAmC,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC;gBACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;gBACxC,MAAM,EAAE;oBACN,GAAG,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,GAAG,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7F,GAAG,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC;iBAC/B;aACF,CAAC,CAAC;YACH,OAAO,EAAE,CACP,QAAQ,CAAC;gBACP,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,UAAU;gBACV,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,cAAc;oBACrC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,cAAc,aAAa,EAAE;oBAC1D,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;oBACzB,CAAC,CAAC;wBACE,IAAI,EACF,6EAA6E;4BAC7E,sEAAsE;qBACzE;oBACH,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,2EAA2E;IAE3E,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,mFAAmF;YACnF,oFAAoF;YACpF,yEAAyE;QAC3E,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CACzB,mBAAmB,KAAK,CAAC,EAAE,WAAW,EACtC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAC9C,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,iFAAiF;YACjF,uFAAuF;QACzF,WAAW,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAChG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B;KACF,EACD,KAAK,EAAE,IAAI,EAAuB,EAAE;QAClC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEtC,yEAAyE;QACzE,yEAAyE;QACzE,qEAAqE;QACrE,yEAAyE;QACzE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,EAAE,WAAW,EAAE;gBACvE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC,0DAA0D,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACzG,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAa,oBAAoB,OAAO,YAAY,KAAK,CAAC,EAAE,EAAE,EAAE;YACzF,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC3B,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,OAAsB,EACtB,GAAW;IAEX,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,8EAA8E,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAyB,oBAAoB,OAAO,UAAU,CAAC,CAAC;IAC3F,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;IAChF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,GAAG,CACR,aAAa,GAAG,OAAO,OAAO,8DAA8D;YAC1F,2DAA2D,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -119,6 +119,14 @@ const MARKER_LITERALS = [
119
119
  * One function per target syntax. Each one answers a single question: what does
120
120
  * this provider parse, that a reviewer could type?
121
121
  */
122
+ /** Slack's three characters, then the broadcast words a reviewer could type bare. */
123
+ function escapeSlack(s) {
124
+ return s
125
+ .replace(/&/g, "&")
126
+ .replace(/</g, "&lt;")
127
+ .replace(/>/g, "&gt;")
128
+ .replace(/@(channel|here|everyone)\b/gi, "@\u200b$1");
129
+ }
122
130
  const ESCAPE = {
123
131
  /**
124
132
  * GitHub and Linear both render GitHub-flavoured Markdown and both autolink
@@ -129,7 +137,10 @@ const ESCAPE = {
129
137
  * GFM documents and it survives the round trip.
130
138
  */
131
139
  github: (s) => escapeMarkdown(s),
132
- linear: (s) => escapeMarkdown(s),
140
+ // 07 §5.2: Linear resolves `ENG-123` references the way GitHub resolves
141
+ // `#123`, so a key-like token becomes an inert code span after the shared
142
+ // Markdown escape (backticks are not escaped by it, so the span survives).
143
+ linear: (s) => escapeMarkdown(s).replace(/(^|[^\w`])([A-Z][A-Z0-9]{1,7}-\d{1,6})\b/g, "$1`$2`"),
133
144
  /**
134
145
  * Slack's mrkdwn is NOT Markdown and escapes exactly three characters, which
135
146
  * Slack's own documentation is explicit about. Escaping more breaks the
@@ -137,8 +148,12 @@ const ESCAPE = {
137
148
  * everybody in the workspace — the highest-impact thing a comment body can
138
149
  * do to a third party.
139
150
  */
140
- "slack-mrkdwn": (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"),
141
- "slack-plain": (s) => s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"),
151
+ // 07 §6.1 step 2, defence in depth: the bare forms are inert under
152
+ // `parse=none`, which the client sets, but `chat.update` defaults to
153
+ // `parse=client`, which expands them the way the Slack app would. A
154
+ // zero-width space after the `@` keeps the word readable and unexpandable.
155
+ "slack-mrkdwn": (s) => escapeSlack(s),
156
+ "slack-plain": (s) => escapeSlack(s),
142
157
  /** JSON is escaped by the serialiser, so the string itself needs nothing.
143
158
  * Named rather than omitted: an absent case reads as an oversight. */
144
159
  json: (s) => s,
@@ -0,0 +1,121 @@
1
+ /**
2
+ * A thread as a BRIEF — the markdown an agent, a ticket or a clipboard wants:
3
+ * Where to look · What's wrong · Environment · Breadcrumbs · Screenshot.
4
+ *
5
+ * ONE formatter in the shared package (plan/08 §3, D93), so the dashboard's
6
+ * Copy button, the MCP server's `get_thread` and the server's own markdown
7
+ * route cannot drift from one another. Pure: a thread in, a string out, no
8
+ * clock, so the same thread always produces the same brief.
9
+ *
10
+ * STRUCTURAL INPUT. `BriefThread` is the intersection of what the dashboard's
11
+ * `Thread` and the MCP's `WireThread` both carry — nothing here imports
12
+ * either, which is what lets both hand their own type in unchanged.
13
+ *
14
+ * THE FENCE. Every string a reviewer could have typed — a comment body, a
15
+ * name, an element label, a breadcrumb message — passes through `fence`
16
+ * before it is written. The dashboard passes nothing (the clipboard is the
17
+ * studio's own), the MCP server passes `@snagset/adapters`' fence so a model
18
+ * reads `<untrusted-content kind="body">…</untrusted-content>` around the
19
+ * client's words (07 §8.6 mitigation 3). Ids, keys, timestamps and enums we
20
+ * minted are written bare.
21
+ */
22
+ import { param } from "./names.js";
23
+ const STATUS_WORDS = { open: "Open", progress: "In progress", review: "In review", resolved: "Resolved" };
24
+ export function briefMarkdown(t, site, opts = {}) {
25
+ const f = opts.fence ?? ((_k, v) => v);
26
+ const word = opts.statusLabel ?? ((s) => STATUS_WORDS[s] ?? s);
27
+ const anchor = (t.anchor ?? {});
28
+ const ctx = (t.context ?? {});
29
+ const page = anchor["page"];
30
+ const route = page?.route ?? t.route ?? "/";
31
+ const origin = page?.origin ?? site.origin ?? "";
32
+ const pathname = page?.pathname ?? route;
33
+ const url = origin ? `${origin}${pathname}` : pathname;
34
+ const label = typeof anchor["label"] === "string" ? f("label", anchor["label"]) : "";
35
+ // The element's fields sit at the top level on the wire the widget writes,
36
+ // and under `element` in the MCP fixtures; both are read.
37
+ const el = (anchor["element"] ?? anchor);
38
+ const lines = [];
39
+ lines.push(`# ${t.key}${label ? ` — ${label}` : ""}`);
40
+ lines.push("");
41
+ lines.push(`${site.name} · ${word(t.status)} · left by ${t.createdBy?.name ? f("name", t.createdBy.name) : "someone"} on ${t.createdAt.slice(0, 10)}` +
42
+ (t.assignee ? ` · assigned to ${f("name", t.assignee.name)}` : ""));
43
+ lines.push("");
44
+ lines.push("## Where to look");
45
+ lines.push("");
46
+ lines.push(`- Page: ${url}`);
47
+ if (origin)
48
+ lines.push(`- Open on the page: ${origin}${pathname}?${param("t")}=${encodeURIComponent(t.key)}`);
49
+ if (label)
50
+ lines.push(`- Element: ${label}`);
51
+ const css = typeof anchor["css"] === "string" ? anchor["css"] : typeof el["selector"] === "string" ? el["selector"] : "";
52
+ if (css)
53
+ lines.push(`- Selector: \`${f("selector", css)}\``);
54
+ if (typeof anchor["domid"] === "string")
55
+ lines.push(`- DOM id: \`#${f("selector", anchor["domid"])}\``);
56
+ if (typeof el["role"] === "string") {
57
+ const name = typeof el["accessibleName"] === "string" ? ` “${f("label", el["accessibleName"])}”` : "";
58
+ lines.push(`- Role: ${f("label", el["role"])}${name}`);
59
+ }
60
+ if (typeof el["testId"] === "string")
61
+ lines.push(`- Test id: ${f("label", el["testId"])}`);
62
+ const text = anchor["text"];
63
+ if (text?.exact)
64
+ lines.push(`- Text: “${f("label", text.exact)}”`);
65
+ lines.push(`- Anchor: ${t.anchorState ?? "unknown"}`);
66
+ lines.push("");
67
+ lines.push("## What's wrong");
68
+ lines.push("");
69
+ const readable = (t.comments ?? []).filter((c) => c.body !== null);
70
+ if (readable.length === 0)
71
+ lines.push("> (no comment — a pin with no words)");
72
+ for (const c of readable) {
73
+ const who = c.author?.name ? f("name", c.author.name) : "Anonymous";
74
+ lines.push(`> **${who}${c.author?.kind === "agent" ? " (agent)" : ""}** — ${c.createdAt.slice(0, 16).replace("T", " ")}`);
75
+ for (const l of f("body", String(c.body)).split("\n"))
76
+ lines.push(`> ${l}`);
77
+ lines.push(">");
78
+ }
79
+ if (lines[lines.length - 1] === ">")
80
+ lines.pop();
81
+ lines.push("");
82
+ lines.push("## Environment");
83
+ lines.push("");
84
+ const d = ctx.derived;
85
+ const vp = ctx.viewport;
86
+ if (d?.browser || d?.os)
87
+ lines.push(`- Browser: ${[d.browser, d.os, d.device].filter(Boolean).join(" · ")}`);
88
+ if (vp?.w)
89
+ lines.push(`- Viewport: ${vp.w} × ${vp.h}${vp.dpr ? ` @${Math.round(vp.dpr * 10) / 10}x` : ""}`);
90
+ if (ctx.prefersColorScheme)
91
+ lines.push(`- Colour scheme: ${ctx.prefersColorScheme}`);
92
+ if (ctx.language)
93
+ lines.push(`- Language: ${ctx.language}`);
94
+ if (ctx.ua)
95
+ lines.push(`- User agent: ${f("label", String(ctx.ua))}`);
96
+ const build = ctx.build;
97
+ if (build && Object.keys(build).length) {
98
+ lines.push(`- Build: ${Object.entries(build).map(([k, v]) => `${k}=${f("label", String(v))}`).join(", ")}`);
99
+ }
100
+ lines.push("");
101
+ const crumbs = ctx.breadcrumbs;
102
+ if (crumbs?.length) {
103
+ lines.push(`## Breadcrumbs (${crumbs.length}, oldest first)`);
104
+ lines.push("");
105
+ for (const b of crumbs) {
106
+ lines.push(`- \`${String(b.t).slice(11, 19)}\` ${b.type}${b.level ? `/${b.level}` : ""}: ${f("breadcrumb", String(b.message))}`);
107
+ }
108
+ lines.push("");
109
+ }
110
+ const shot = t.attachments?.find((a) => a.kind === "screenshot") ?? t.attachments?.[0];
111
+ if (shot) {
112
+ lines.push("## Screenshot");
113
+ lines.push("");
114
+ lines.push("Examine this screenshot for visual context — it is the viewport at the moment of the click.");
115
+ lines.push("");
116
+ const abs = shot.url.startsWith("http") ? shot.url : `${site.dashboardOrigin ?? ""}${shot.url}`;
117
+ lines.push(`![${t.key}${shot.width ? ` at ${shot.width}×${shot.height}` : ""}](${abs})`);
118
+ lines.push("");
119
+ }
120
+ return lines.join("\n").trimEnd() + "\n";
121
+ }
package/dist/view.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { fenced, DATA_BOUNDARY } from "./vendor/adapters/outbound/fence.js";
2
2
  import { sanitise, trusted } from "./vendor/adapters/outbound/sanitise.js";
3
+ import { briefMarkdown } from "./vendor/types/brief.js";
3
4
  /**
4
5
  * The view an agent sees — 07 §8.3, and the four §8.6 mitigations that live in
5
6
  * a projection rather than in a policy.
@@ -171,4 +172,29 @@ export function envelope(payload) {
171
172
  export function failure(message) {
172
173
  return `${DATA_BOUNDARY}\n\n${sanitise(message, "plain", { max: 1_000 })}`;
173
174
  }
175
+ /**
176
+ * `get_thread`'s default answer since D88/D93 — the BRIEF, as markdown: where
177
+ * to look, what's wrong, the screenshot. The same formatter the dashboard's
178
+ * Copy button and the server's `…/threads/:id.md` use, with two differences
179
+ * that belong to this package:
180
+ *
181
+ * · every string a reviewer could have typed is FENCED (§8.6 mitigation 3),
182
+ * through the same clamps the JSON view applies;
183
+ * · the capture CONTEXT is left out. It is the personal-data-bearing half
184
+ * (`context:read`, `get_thread_context`), and a token is not given that
185
+ * scope by default — so the brief says where it is rather than printing it.
186
+ */
187
+ export function brief(t, site) {
188
+ const clamp = {
189
+ body: CLAMP.body,
190
+ name: CLAMP.name,
191
+ label: CLAMP.label,
192
+ selector: CLAMP.selector,
193
+ breadcrumb: CLAMP.body,
194
+ };
195
+ const md = briefMarkdown({ ...t, context: null }, site, {
196
+ fence: (kind, value) => fenced(kind, value, clamp[kind]),
197
+ });
198
+ return `${DATA_BOUNDARY}\n\n${md}\n_Environment, breadcrumbs and capture reasons: get_thread_context (needs context:read)._\n`;
199
+ }
174
200
  //# sourceMappingURL=view.js.map
package/dist/view.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAyC,MAAM,sBAAsB,CAAC;AAE5F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC;AAE3C,yDAAyD;AACzD,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B;;;;;;;GAOG;AACH,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAW,CAAC;AA6B7E;;;;;;GAMG;AACH,SAAS,OAAO,CAAC,MAAkD;IACjE,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAA4B,CAAC;IACpE,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,IAA0B,EAAE,GAAW,EAAE,EAAE;QACnE,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,OAAO,CAAC,CAAa;IACnC,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;QACvC,0EAA0E;QAC1E,2EAA2E;QAC3E,wBAAwB;QACxB,SAAS,EAAE,OAAO,CAAU,CAAC,CAAC,SAAS,CAAC;QACxC,SAAS,EAAE,OAAO,CAAU,CAAC,CAAC,SAAS,CAAC;QACxC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;QACjC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,0EAA0E;QAC1E,qEAAqE;QACrE,6DAA6D;QAC7D,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,MAAM,CAAC,CAAa;IAClC,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,SAAS,EAAE,OAAO,CAAU,CAAC,CAAC,SAAS,CAAC;QACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC;QAC/D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO;QACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;KAC/C,CAAC,CAAC,CAAC;IACJ,OAAO;QACL,GAAG,OAAO,CAAC,CAAC,CAAC;QACb,wEAAwE;QACxE,+DAA+D;QAC/D,YAAY,EAAE,SAAS;QACvB,QAAQ;QACR,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY;YAChD,CAAC,CAAC;gBACE,sEAAsE;gBACtE,oEAAoE;gBACpE,OAAO;gBACP,iBAAiB,EAAE,sBAAsB,YAAY,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,WAAW;aACzF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,MAAM;YACvB,CAAC,CAAC;gBACE,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,oEAAoE;oBACpE,2DAA2D;oBAC3D,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,CAAC;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,CAAa;IACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAA4B,CAAC;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,aAAa,CAA+B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,GAA8B,CAAC;IACxE,OAAO;QACL,wEAAwE;QACxE,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC;QAChF,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;YACT,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACf,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC;SACtE,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAgB;IACvC,OAAO,GAAG,aAAa,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,GAAI,OAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACrH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,GAAG,aAAa,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,CAAa,EAAE,IAAgD;IACnF,MAAM,KAAK,GAAmC;QAC5C,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,KAAK,CAAC,IAAI;KACvB,CAAC;IACF,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAiB,EAAE,IAAI,EAAE;QACrE,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;KACzD,CAAC,CAAC;IACH,OAAO,GAAG,aAAa,OAAO,EAAE,8FAA8F,CAAC;AACjI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snagset/mcp",
3
- "version": "0.0.4",
3
+ "version": "0.1.1",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Read your Snagset review threads from a coding agent — the pin, the element, the route and the console with each one.",