@frmwrkd/snag-mcp 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `@frmwrkd/snag-mcp` — the stdio MCP server. Five tools, four resources.
4
+ *
5
+ * doc 02 §9.2, registered in a project-scoped `.mcp.json`. The package is not
6
+ * published yet, so `scripts/install-claude-code.mjs` registers the local
7
+ * build with an absolute path instead of doc 02's `npx -y @frmwrkd/snag-mcp`:
8
+ *
9
+ * ```json
10
+ * { "mcpServers": { "snag": { "type": "stdio", "command": "node", "args": ["<snag>/apps/mcp/dist/index.js"] } } }
11
+ * ```
12
+ *
13
+ * ## Why the low-level `Server` and not `McpServer`
14
+ *
15
+ * `McpServer.registerTool` generates each tool's wire JSON Schema itself, from
16
+ * the zod schema, at **draft-7** with `$ref`s (`zod-json-schema-compat.ts` in
17
+ * the SDK). The MCP `2026-07-28` spec says tool `inputSchema`/`outputSchema`
18
+ * are JSON Schema **2020-12**, and `@frmwrkd/snag-core` exists partly to emit exactly
19
+ * that — `toInlineJsonSchema` rewrites draft-7 tuples to `prefixItems` and
20
+ * draft-4 boolean exclusive bounds to numbers, both of which appear in
21
+ * `Task.suspect_files[].lines`. Going through the low-level `Server` keeps
22
+ * `@frmwrkd/snag-core` as the single source of truth for the schema *and* makes the
23
+ * emitted definitions inspectable, which is what lets `test/tools.test.ts`
24
+ * assert their token cost. The SDK marks `Server` "advanced use cases"; pinning
25
+ * the bytes that are paid for on every turn is one.
26
+ *
27
+ * ## stdout is the transport
28
+ *
29
+ * Nothing may be written to stdout except JSON-RPC frames. Every diagnostic in
30
+ * this file goes to stderr.
31
+ */
32
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
33
+ import type { SnagBackend } from './client.js';
34
+ export declare const SERVER_NAME = "snag";
35
+ export declare const SERVER_VERSION = "0.1.0";
36
+ /**
37
+ * Always-on cost, so it is two sentences. The rest of what an agent needs to
38
+ * know is in the `/snag` skill, which loads lazily.
39
+ */
40
+ export declare const SERVER_INSTRUCTIONS: string;
41
+ export declare function createServer(backend: SnagBackend): Server;
42
+ /**
43
+ * Resolve the project root, or explain why not.
44
+ *
45
+ * The server is spawned with the project directory as its cwd, so `.snag/` is
46
+ * normally right there. Exiting non-zero with a readable reason beats
47
+ * connecting and then failing every call.
48
+ */
49
+ export declare function resolveRoot(cwd?: string): string | null;
50
+ export declare function main(): Promise<void>;
51
+ /**
52
+ * The file Node was asked to run, with symlinks resolved. `import.meta.url` is
53
+ * the real path; `process.argv[1]` is the path as given, and under pnpm
54
+ * `node_modules/@frmwrkd/snag-mcp` is a symlink — compared raw, they never match and
55
+ * the server exits having served nothing.
56
+ */
57
+ export declare function entryUrl(entry: string | undefined): string | undefined;
58
+ export { SnagClient, findProjectRoot } from './client.js';
59
+ export { TOOLS, TOOL_COUNT, toolDefinitions, callTool } from './tools.js';
60
+ export { RESOURCES, RESOURCE_TEMPLATES, RESOURCE_COUNT, readResource } from './resources.js';
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAYnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,eAAO,MAAM,WAAW,SAAS,CAAC;AAClC,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,QAEgF,CAAC;AAEjH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAyCzD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAEtE;AAED,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAe1C;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOtE;AASD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,128 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `@frmwrkd/snag-mcp` — the stdio MCP server. Five tools, four resources.
4
+ *
5
+ * doc 02 §9.2, registered in a project-scoped `.mcp.json`. The package is not
6
+ * published yet, so `scripts/install-claude-code.mjs` registers the local
7
+ * build with an absolute path instead of doc 02's `npx -y @frmwrkd/snag-mcp`:
8
+ *
9
+ * ```json
10
+ * { "mcpServers": { "snag": { "type": "stdio", "command": "node", "args": ["<snag>/apps/mcp/dist/index.js"] } } }
11
+ * ```
12
+ *
13
+ * ## Why the low-level `Server` and not `McpServer`
14
+ *
15
+ * `McpServer.registerTool` generates each tool's wire JSON Schema itself, from
16
+ * the zod schema, at **draft-7** with `$ref`s (`zod-json-schema-compat.ts` in
17
+ * the SDK). The MCP `2026-07-28` spec says tool `inputSchema`/`outputSchema`
18
+ * are JSON Schema **2020-12**, and `@frmwrkd/snag-core` exists partly to emit exactly
19
+ * that — `toInlineJsonSchema` rewrites draft-7 tuples to `prefixItems` and
20
+ * draft-4 boolean exclusive bounds to numbers, both of which appear in
21
+ * `Task.suspect_files[].lines`. Going through the low-level `Server` keeps
22
+ * `@frmwrkd/snag-core` as the single source of truth for the schema *and* makes the
23
+ * emitted definitions inspectable, which is what lets `test/tools.test.ts`
24
+ * assert their token cost. The SDK marks `Server` "advanced use cases"; pinning
25
+ * the bytes that are paid for on every turn is one.
26
+ *
27
+ * ## stdout is the transport
28
+ *
29
+ * Nothing may be written to stdout except JSON-RPC frames. Every diagnostic in
30
+ * this file goes to stderr.
31
+ */
32
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
33
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
34
+ import { CallToolRequestSchema, ListResourceTemplatesRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
35
+ import { realpathSync } from 'node:fs';
36
+ import { pathToFileURL } from 'node:url';
37
+ import { SnagClient, findProjectRoot, snagdCommand } from './client.js';
38
+ import { RESOURCES, RESOURCE_TEMPLATES, UnknownResourceError, readResource } from './resources.js';
39
+ import { callTool, toolDefinitions } from './tools.js';
40
+ export const SERVER_NAME = 'snag';
41
+ export const SERVER_VERSION = '0.1.0';
42
+ /**
43
+ * Always-on cost, so it is two sentences. The rest of what an agent needs to
44
+ * know is in the `/snag` skill, which loads lazily.
45
+ */
46
+ export const SERVER_INSTRUCTIONS = 'Snag holds bug captures merged into tasks that already name the file and line to edit. ' +
47
+ 'snag_list first, then snag_get; the full text of every task is in .snag/tasks/*.md, which has no output cap.';
48
+ export function createServer(backend) {
49
+ const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, {
50
+ capabilities: { tools: {}, resources: {} },
51
+ instructions: SERVER_INSTRUCTIONS,
52
+ });
53
+ server.setRequestHandler(ListToolsRequestSchema, () => ({ tools: toolDefinitions() }));
54
+ server.setRequestHandler(CallToolRequestSchema, async (request) => callTool(request.params.name, request.params.arguments, backend));
55
+ server.setRequestHandler(ListResourcesRequestSchema, () => ({ resources: [...RESOURCES] }));
56
+ server.setRequestHandler(ListResourceTemplatesRequestSchema, () => ({
57
+ resourceTemplates: [...RESOURCE_TEMPLATES],
58
+ }));
59
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
60
+ try {
61
+ return await readResource(request.params.uri, backend);
62
+ }
63
+ catch (error) {
64
+ if (error instanceof UnknownResourceError) {
65
+ return {
66
+ contents: [
67
+ {
68
+ uri: request.params.uri,
69
+ mimeType: 'text/plain',
70
+ text: error.message,
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ throw error;
76
+ }
77
+ });
78
+ return server;
79
+ }
80
+ /**
81
+ * Resolve the project root, or explain why not.
82
+ *
83
+ * The server is spawned with the project directory as its cwd, so `.snag/` is
84
+ * normally right there. Exiting non-zero with a readable reason beats
85
+ * connecting and then failing every call.
86
+ */
87
+ export function resolveRoot(cwd = process.cwd()) {
88
+ return findProjectRoot(cwd);
89
+ }
90
+ export async function main() {
91
+ const root = resolveRoot();
92
+ if (root === null) {
93
+ process.stderr.write(`@frmwrkd/snag-mcp: no .snag/ directory found at or above ${process.cwd()} (~/.snag/ is the token directory, not a project).\n` +
94
+ `Run \`${snagdCommand()}\` in the project root once to create it, then restart this server.\n`);
95
+ process.exitCode = 1;
96
+ return;
97
+ }
98
+ const backend = new SnagClient(root);
99
+ const server = createServer(backend);
100
+ await server.connect(new StdioServerTransport());
101
+ process.stderr.write(`@frmwrkd/snag-mcp: serving ${root}\n`);
102
+ }
103
+ /**
104
+ * The file Node was asked to run, with symlinks resolved. `import.meta.url` is
105
+ * the real path; `process.argv[1]` is the path as given, and under pnpm
106
+ * `node_modules/@frmwrkd/snag-mcp` is a symlink — compared raw, they never match and
107
+ * the server exits having served nothing.
108
+ */
109
+ export function entryUrl(entry) {
110
+ if (entry === undefined)
111
+ return undefined;
112
+ try {
113
+ return pathToFileURL(realpathSync(entry)).href;
114
+ }
115
+ catch {
116
+ return pathToFileURL(entry).href;
117
+ }
118
+ }
119
+ if (import.meta.url === entryUrl(process.argv[1])) {
120
+ main().catch((error) => {
121
+ process.stderr.write(`@frmwrkd/snag-mcp: ${error instanceof Error ? error.stack : String(error)}\n`);
122
+ process.exitCode = 1;
123
+ });
124
+ }
125
+ export { SnagClient, findProjectRoot } from './client.js';
126
+ export { TOOLS, TOOL_COUNT, toolDefinitions, callTool } from './tools.js';
127
+ export { RESOURCES, RESOURCE_TEMPLATES, RESOURCE_COUNT, readResource } from './resources.js';
128
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ReadResourceResult, Resource, ResourceTemplate } from '@modelcontextprotocol/sdk/types.js';
2
+ import type { SnagBackend } from './client.js';
3
+ /** Stay under the client's *warning* threshold, not just its hard cap. */
4
+ export declare const RESOURCE_MAX_TOKENS: number;
5
+ export declare const QUEUE_URI = "snag://queue";
6
+ export declare const PLAN_URI = "snag://plan";
7
+ export declare const MAP_URI = "snag://map";
8
+ export declare const TASK_URI_TEMPLATE = "snag://task/{id}";
9
+ export declare const RESOURCES: readonly Resource[];
10
+ export declare const RESOURCE_TEMPLATES: readonly ResourceTemplate[];
11
+ /** The four the spec names — three fixed plus one template. */
12
+ export declare const RESOURCE_COUNT: number;
13
+ export declare class UnknownResourceError extends Error {
14
+ constructor(uri: string);
15
+ }
16
+ /** `snag://task/SNAG-3` → `SNAG-3`. `null` when the URI is not a task URI. */
17
+ export declare function parseTaskUri(uri: string): string | null;
18
+ export declare function readResource(uri: string, backend: SnagBackend): Promise<ReadResourceResult>;
19
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,QAAiC,CAAC;AAElE,eAAO,MAAM,SAAS,iBAAiB,CAAC;AACxC,eAAO,MAAM,QAAQ,gBAAgB,CAAC;AACtC,eAAO,MAAM,OAAO,eAAe,CAAC;AACpC,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAKpD,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EAmBxC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAOzD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,cAAc,QAA+C,CAAC;AAE3E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,GAAG,EAAE,MAAM;CAMxB;AAYD,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvD;AA+MD,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOjG"}
@@ -0,0 +1,281 @@
1
+ /**
2
+ * The four resources — doc 02 §9.2:
3
+ *
4
+ * > Also expose resources — Claude Code surfaces these as
5
+ * > `@snag:snag://capture/abc` autocompletes: `snag://queue`, `snag://plan`,
6
+ * > `snag://task/{id}`, `snag://map`.
7
+ *
8
+ * Three are fixed URIs; `snag://task/{id}` is an RFC 6570 template, advertised
9
+ * through `resources/templates/list`. Four entries total, no more.
10
+ *
11
+ * ## Why `snag://task/{id}` returns markdown, not JSON
12
+ *
13
+ * doc 02 §9.1 puts repo files first: `.snag/tasks/*.md` has "zero protocol
14
+ * overhead, prompt-cacheable, no output cap". This resource therefore serves
15
+ * the **bytes of the file on disk**, unchanged, so that reading it through MCP
16
+ * and reading it with `Read` give the agent character-identical text — which
17
+ * matters, because the frontmatter carries `suspect_files` paths and line
18
+ * ranges that are edit anchors (doc 00 §3).
19
+ *
20
+ * ## Why every resource is capped
21
+ *
22
+ * Claude Code hard-caps MCP output at 25,000 tokens and warns at 10,000 (doc 03
23
+ * §4.3). A 40-task `plan.json` clears 10,000 easily. Rather than let a client
24
+ * truncate mid-JSON — which produces unparseable output and silently loses the
25
+ * tail — each resource projects itself down to a summary and points at the file
26
+ * on disk when it would exceed `RESOURCE_MAX_TOKENS`. Losing detail loudly
27
+ * beats losing it silently.
28
+ */
29
+ import { isTerminalStatus } from '@frmwrkd/snag-core';
30
+ import { MCP_OUTPUT_WARN_TOKENS, estimateJsonTokens, estimateTokens } from './tokens.js';
31
+ import { summarise } from './tools.js';
32
+ /** Stay under the client's *warning* threshold, not just its hard cap. */
33
+ export const RESOURCE_MAX_TOKENS = MCP_OUTPUT_WARN_TOKENS - 2_000;
34
+ export const QUEUE_URI = 'snag://queue';
35
+ export const PLAN_URI = 'snag://plan';
36
+ export const MAP_URI = 'snag://map';
37
+ export const TASK_URI_TEMPLATE = 'snag://task/{id}';
38
+ const JSON_MIME = 'application/json';
39
+ const MARKDOWN_MIME = 'text/markdown';
40
+ export const RESOURCES = [
41
+ {
42
+ uri: QUEUE_URI,
43
+ name: 'snag queue',
44
+ description: 'Unfinished Snag tasks in wave order, with counts. Compact.',
45
+ mimeType: JSON_MIME,
46
+ },
47
+ {
48
+ uri: PLAN_URI,
49
+ name: 'snag plan',
50
+ description: 'The current plan: waves, dropped edges, warnings, cost.',
51
+ mimeType: JSON_MIME,
52
+ },
53
+ {
54
+ uri: MAP_URI,
55
+ name: 'snag repo map',
56
+ description: 'Routes, components, API handlers and models from .snag/map.json.',
57
+ mimeType: JSON_MIME,
58
+ },
59
+ ];
60
+ export const RESOURCE_TEMPLATES = [
61
+ {
62
+ uriTemplate: TASK_URI_TEMPLATE,
63
+ name: 'snag task',
64
+ description: 'One task as its .snag/tasks/*.md file, verbatim. id is SNAG-<n> or tsk_<ulid>.',
65
+ mimeType: MARKDOWN_MIME,
66
+ },
67
+ ];
68
+ /** The four the spec names — three fixed plus one template. */
69
+ export const RESOURCE_COUNT = RESOURCES.length + RESOURCE_TEMPLATES.length;
70
+ export class UnknownResourceError extends Error {
71
+ constructor(uri) {
72
+ super(`Unknown resource ${uri}. This server exposes ${QUEUE_URI}, ${PLAN_URI}, ${MAP_URI} and ${TASK_URI_TEMPLATE}.`);
73
+ this.name = 'UnknownResourceError';
74
+ }
75
+ }
76
+ function jsonContents(uri, value) {
77
+ return {
78
+ contents: [{ uri, mimeType: JSON_MIME, text: JSON.stringify(value, null, 2) }],
79
+ };
80
+ }
81
+ function textContents(uri, mimeType, text) {
82
+ return { contents: [{ uri, mimeType, text }] };
83
+ }
84
+ /** `snag://task/SNAG-3` → `SNAG-3`. `null` when the URI is not a task URI. */
85
+ export function parseTaskUri(uri) {
86
+ const prefix = 'snag://task/';
87
+ if (!uri.startsWith(prefix))
88
+ return null;
89
+ const id = decodeURIComponent(uri.slice(prefix.length));
90
+ return id.length > 0 ? id : null;
91
+ }
92
+ /* ---------------------------------------------------------------- queue */
93
+ async function readQueue(backend) {
94
+ const { tasks, source } = await backend.listTasks({ limit: 200 });
95
+ const open = tasks.filter((task) => !isTerminalStatus(task.status));
96
+ const byWave = new Map();
97
+ for (const task of open)
98
+ byWave.set(task.wave, (byWave.get(task.wave) ?? 0) + 1);
99
+ const payload = {
100
+ source,
101
+ total: open.length,
102
+ by_severity: countBy(open, (t) => t.severity),
103
+ by_status: countBy(open, (t) => t.status),
104
+ waves: [...byWave.entries()]
105
+ .sort((a, b) => a[0] - b[0])
106
+ .map(([wave, count]) => ({ wave, tasks: count })),
107
+ tasks: open
108
+ .slice()
109
+ .sort((a, b) => a.wave - b.wave || a.order - b.order)
110
+ .map(summarise),
111
+ note: 'Full detail lives in .snag/tasks/*.md — Read or Grep it, no output cap.',
112
+ };
113
+ return capped(QUEUE_URI, payload, () => ({
114
+ ...payload,
115
+ tasks: payload.tasks.slice(0, 25),
116
+ truncated: `showing 25 of ${payload.tasks.length}; use snag_list(wave=n) or Read .snag/tasks/`,
117
+ }));
118
+ }
119
+ function countBy(items, key) {
120
+ const out = {};
121
+ for (const item of items) {
122
+ const k = key(item);
123
+ out[k] = (out[k] ?? 0) + 1;
124
+ }
125
+ return out;
126
+ }
127
+ /* ----------------------------------------------------------------- plan */
128
+ function projectPlan(plan) {
129
+ return {
130
+ id: plan.id,
131
+ v: plan.v,
132
+ generated_at: plan.generated_at,
133
+ source_capture_count: plan.source_capture_count,
134
+ folded_count: plan.folded_count,
135
+ task_count: plan.task_count,
136
+ cost_usd: plan.cost_usd,
137
+ model: plan.model,
138
+ waves: plan.waves,
139
+ dropped_edges: plan.dropped_edges,
140
+ warnings: plan.warnings,
141
+ tasks: plan.tasks.map(summarise),
142
+ truncated: 'tasks projected to summaries to stay under the MCP output cap; the full objects are in .snag/plan.json',
143
+ };
144
+ }
145
+ /** Enough to act on, bounded so a broken 53-task plan is readable, not a wall. */
146
+ const MAX_REPORTED_ISSUES = 12;
147
+ async function readPlan(backend) {
148
+ const { plan, source } = await backend.plan();
149
+ if (plan === null) {
150
+ // "Not generated yet" and "on disk but invalid" are different problems and
151
+ // must read differently. Reporting the second as the first told an agent to
152
+ // go run Merge & Plan when the actual fix was to repair a file.
153
+ const onDisk = backend.files.readPlanResult();
154
+ if (onDisk.state === 'invalid') {
155
+ const shown = onDisk.issues.slice(0, MAX_REPORTED_ISSUES);
156
+ const more = onDisk.issues.length - shown.length;
157
+ return jsonContents(PLAN_URI, {
158
+ plan: null,
159
+ source,
160
+ error: 'invalid_plan',
161
+ file: '.snag/plan.json',
162
+ problem_count: onDisk.issues.length,
163
+ problems: shown,
164
+ ...(more > 0 ? { truncated: `… and ${more} more` } : {}),
165
+ note: 'This plan exists but does not match @frmwrkd/snag-core\'s schema, so it could not be loaded. It is a broken plan, not an absent one — fix the file or regenerate it.',
166
+ });
167
+ }
168
+ return jsonContents(PLAN_URI, {
169
+ plan: null,
170
+ source,
171
+ note: 'No plan yet. Captures live in .snag/captures/; run Merge & Plan to produce .snag/plan.json.',
172
+ });
173
+ }
174
+ return capped(PLAN_URI, { plan, source }, () => ({ plan: projectPlan(plan), source }));
175
+ }
176
+ /* ------------------------------------------------------------------ map */
177
+ function projectMap(map) {
178
+ return {
179
+ v: map.v,
180
+ generated_at: map.generated_at,
181
+ root: map.root,
182
+ framework: map.framework,
183
+ commit: map.commit,
184
+ counts: {
185
+ routes: map.routes.length,
186
+ components: map.components.length,
187
+ api: map.api.length,
188
+ models: map.models.length,
189
+ },
190
+ routes: map.routes.map((route) => ({ pattern: route.pattern, file: route.file })),
191
+ api: map.api.map((entry) => ({ method: entry.method, path: entry.path, file: entry.file })),
192
+ models: map.models.map((entry) => ({ name: entry.name, file: entry.file, line: entry.line })),
193
+ truncated: 'components and per-route component lists omitted to stay under the MCP output cap; the full graph is in .snag/map.json',
194
+ };
195
+ }
196
+ async function readMap(backend) {
197
+ const { map, source } = await backend.map();
198
+ if (map === null) {
199
+ return jsonContents(MAP_URI, {
200
+ map: null,
201
+ source,
202
+ note: 'No .snag/map.json yet. The daemon builds it on start; POST /map/rebuild forces it.',
203
+ });
204
+ }
205
+ return capped(MAP_URI, { map, source }, () => ({ map: projectMap(map), source }));
206
+ }
207
+ /* ----------------------------------------------------------------- task */
208
+ async function readTask(backend, id) {
209
+ const found = await backend.getTask(id);
210
+ if (found === null)
211
+ throw new UnknownResourceError(`snag://task/${id}`);
212
+ if (found.file !== null) {
213
+ const markdown = backend.files.readTextFile(found.file);
214
+ if (markdown !== null) {
215
+ const text = estimateTokens(markdown) > RESOURCE_MAX_TOKENS
216
+ ? `${markdown.slice(0, RESOURCE_MAX_TOKENS * 4)}\n\n<!-- truncated; Read ${found.file} for the rest -->`
217
+ : markdown;
218
+ return textContents(`snag://task/${found.task.id}`, MARKDOWN_MIME, text);
219
+ }
220
+ }
221
+ // The markdown is the artifact; this is the fallback for a task that exists
222
+ // in the index but whose file has not been written (or was deleted).
223
+ return textContents(`snag://task/${found.task.id}`, MARKDOWN_MIME, renderTaskMarkdown(found.task, found.file));
224
+ }
225
+ function renderTaskMarkdown(task, file) {
226
+ const lines = [
227
+ `# ${task.id} — ${task.title}`,
228
+ '',
229
+ `severity: ${task.severity} · kind: ${task.kind} · wave: ${task.wave} · status: ${task.status}`,
230
+ '',
231
+ '## Repro',
232
+ ...task.repro.map((step, index) => `${index + 1}. ${step}`),
233
+ '',
234
+ '## Expected',
235
+ task.expected,
236
+ '',
237
+ '## Actual',
238
+ task.actual,
239
+ '',
240
+ '## Suspect files',
241
+ ...(task.suspect_files.length === 0
242
+ ? ['(none)']
243
+ : task.suspect_files.map((f) => f.lines === undefined
244
+ ? `- \`${f.path}\` (no line range) — ${f.why}`
245
+ : `- \`${f.path}\` lines ${f.lines[0]}-${f.lines[1]} — ${f.why}`)),
246
+ '',
247
+ '## Acceptance',
248
+ ...(task.acceptance_criteria.length === 0
249
+ ? ['(none)']
250
+ : task.acceptance_criteria.map((c) => `- [ ] ${c}`)),
251
+ '',
252
+ '## Evidence',
253
+ `- Captures: ${task.merged_from.join(', ')}`,
254
+ ...task.evidence_refs.screenshots.map((s) => `- Screenshot: \`${s}\``),
255
+ '',
256
+ file === null
257
+ ? '<!-- rendered from the index: no .snag/tasks/*.md file was found for this task -->'
258
+ : `<!-- rendered from the index: ${file} could not be read -->`,
259
+ ];
260
+ return lines.join('\n');
261
+ }
262
+ /* -------------------------------------------------------------- dispatch */
263
+ /** Use `full` if it fits the budget, otherwise the projection. */
264
+ function capped(uri, full, project) {
265
+ if (estimateJsonTokens(full) <= RESOURCE_MAX_TOKENS)
266
+ return jsonContents(uri, full);
267
+ return jsonContents(uri, project());
268
+ }
269
+ export async function readResource(uri, backend) {
270
+ if (uri === QUEUE_URI)
271
+ return readQueue(backend);
272
+ if (uri === PLAN_URI)
273
+ return readPlan(backend);
274
+ if (uri === MAP_URI)
275
+ return readMap(backend);
276
+ const taskId = parseTaskUri(uri);
277
+ if (taskId !== null)
278
+ return readTask(backend, taskId);
279
+ throw new UnknownResourceError(uri);
280
+ }
281
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,GAAG,KAAK,CAAC;AAElE,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AACxC,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;AACtC,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAEpD,MAAM,SAAS,GAAG,kBAAkB,CAAC;AACrC,MAAM,aAAa,GAAG,eAAe,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAwB;IAC5C;QACE,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,4DAA4D;QACzE,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,GAAG,EAAE,OAAO;QACZ,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,kEAAkE;QAC/E,QAAQ,EAAE,SAAS;KACpB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D;QACE,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gFAAgF;QAC7F,QAAQ,EAAE,aAAa;KACxB;CACF,CAAC;AAEF,+DAA+D;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAE3E,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,GAAW;QACrB,KAAK,CACH,oBAAoB,GAAG,yBAAyB,SAAS,KAAK,QAAQ,KAAK,OAAO,QAAQ,iBAAiB,GAAG,CAC/G,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,KAAc;IAC/C,OAAO;QACL,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,QAAgB,EAAE,IAAY;IAC/D,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,MAAM,GAAG,cAAc,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,EAAE,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,4EAA4E;AAE5E,KAAK,UAAU,SAAS,CAAC,OAAoB;IAC3C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjF,MAAM,OAAO,GAAG;QACd,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,MAAM;QAClB,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACzC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;aACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,KAAK,EAAE,IAAI;aACR,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;aACpD,GAAG,CAAC,SAAS,CAAC;QACjB,IAAI,EAAE,yEAAyE;KAChF,CAAC;IACF,OAAO,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,GAAG,OAAO;QACV,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACjC,SAAS,EAAE,iBAAiB,OAAO,CAAC,KAAK,CAAC,MAAM,8CAA8C;KAC/F,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAI,KAAmB,EAAE,GAAwB;IAC/D,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4EAA4E;AAE5E,SAAS,WAAW,CAAC,IAAU;IAC7B,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC,SAAS,EACP,wGAAwG;KAC3G,CAAC;AACJ,CAAC;AAED,kFAAkF;AAClF,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,KAAK,UAAU,QAAQ,CAAC,OAAoB;IAC1C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,2EAA2E;QAC3E,4EAA4E;QAC5E,gEAAgE;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACjD,OAAO,YAAY,CAAC,QAAQ,EAAE;gBAC5B,IAAI,EAAE,IAAI;gBACV,MAAM;gBACN,KAAK,EAAE,cAAc;gBACrB,IAAI,EAAE,iBAAiB;gBACvB,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;gBACnC,QAAQ,EAAE,KAAK;gBACf,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,EAAE,sKAAsK;aAC7K,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,IAAI;YACV,MAAM;YACN,IAAI,EAAE,6FAA6F;SACpG,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,4EAA4E;AAE5E,SAAS,UAAU,CAAC,GAAY;IAC9B,OAAO;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,MAAM,EAAE;YACN,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;YACzB,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM;YACjC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM;YACnB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;SAC1B;QACD,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3F,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7F,SAAS,EACP,wHAAwH;KAC3H,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAAoB;IACzC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC,OAAO,EAAE;YAC3B,GAAG,EAAE,IAAI;YACT,MAAM;YACN,IAAI,EAAE,oFAAoF;SAC3F,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,4EAA4E;AAE5E,KAAK,UAAU,QAAQ,CAAC,OAAoB,EAAE,EAAU;IACtD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,IAAI,oBAAoB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAExE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,GACR,cAAc,CAAC,QAAQ,CAAC,GAAG,mBAAmB;gBAC5C,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,GAAG,CAAC,CAAC,4BAA4B,KAAK,CAAC,IAAI,mBAAmB;gBACxG,CAAC,CAAC,QAAQ,CAAC;YACf,OAAO,YAAY,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,qEAAqE;IACrE,OAAO,YAAY,CACjB,eAAe,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAC9B,aAAa,EACb,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU,EAAE,IAAmB;IACzD,MAAM,KAAK,GAAG;QACZ,KAAK,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE;QAC9B,EAAE;QACF,aAAa,IAAI,CAAC,QAAQ,YAAY,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,MAAM,EAAE;QAC/F,EAAE;QACF,UAAU;QACV,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3D,EAAE;QACF,aAAa;QACb,IAAI,CAAC,QAAQ;QACb,EAAE;QACF,WAAW;QACX,IAAI,CAAC,MAAM;QACX,EAAE;QACF,kBAAkB;QAClB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YACjC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACZ,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,CAAC,CAAC,KAAK,KAAK,SAAS;gBACnB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,GAAG,EAAE;gBAC9C,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CACnE,CAAC;QACN,EAAE;QACF,eAAe;QACf,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;YACvC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACZ,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtD,EAAE;QACF,aAAa;QACb,eAAe,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAC5C,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACtE,EAAE;QACF,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,oFAAoF;YACtF,CAAC,CAAC,iCAAiC,IAAI,wBAAwB;KAClE,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAE7E,kEAAkE;AAClE,SAAS,MAAM,CACb,GAAW,EACX,IAAa,EACb,OAAsB;IAEtB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,mBAAmB;QAAE,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpF,OAAO,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,OAAoB;IAClE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACtC,CAAC"}