@flyingrobots/bijou-mcp 4.4.1 → 5.0.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 (88) hide show
  1. package/README.md +10 -3
  2. package/dist/output.d.ts +18 -0
  3. package/dist/output.d.ts.map +1 -0
  4. package/dist/output.js +48 -0
  5. package/dist/output.js.map +1 -0
  6. package/dist/server.js +8 -2
  7. package/dist/server.js.map +1 -1
  8. package/dist/tools/accordion.d.ts.map +1 -1
  9. package/dist/tools/accordion.js +3 -2
  10. package/dist/tools/accordion.js.map +1 -1
  11. package/dist/tools/alert.d.ts.map +1 -1
  12. package/dist/tools/alert.js +3 -2
  13. package/dist/tools/alert.js.map +1 -1
  14. package/dist/tools/badge.d.ts.map +1 -1
  15. package/dist/tools/badge.js +3 -2
  16. package/dist/tools/badge.js.map +1 -1
  17. package/dist/tools/box.d.ts.map +1 -1
  18. package/dist/tools/box.js +5 -4
  19. package/dist/tools/box.js.map +1 -1
  20. package/dist/tools/breadcrumb.d.ts.map +1 -1
  21. package/dist/tools/breadcrumb.js +3 -2
  22. package/dist/tools/breadcrumb.js.map +1 -1
  23. package/dist/tools/constrain.d.ts.map +1 -1
  24. package/dist/tools/constrain.js +3 -2
  25. package/dist/tools/constrain.js.map +1 -1
  26. package/dist/tools/dag.d.ts.map +1 -1
  27. package/dist/tools/dag.js +4 -3
  28. package/dist/tools/dag.js.map +1 -1
  29. package/dist/tools/docs.d.ts +23 -0
  30. package/dist/tools/docs.d.ts.map +1 -0
  31. package/dist/tools/docs.js +1106 -0
  32. package/dist/tools/docs.js.map +1 -0
  33. package/dist/tools/docs.test.d.ts +2 -0
  34. package/dist/tools/docs.test.d.ts.map +1 -0
  35. package/dist/tools/docs.test.js +121 -0
  36. package/dist/tools/docs.test.js.map +1 -0
  37. package/dist/tools/enumerated-list.d.ts.map +1 -1
  38. package/dist/tools/enumerated-list.js +3 -2
  39. package/dist/tools/enumerated-list.js.map +1 -1
  40. package/dist/tools/explainability.d.ts.map +1 -1
  41. package/dist/tools/explainability.js +3 -2
  42. package/dist/tools/explainability.js.map +1 -1
  43. package/dist/tools/hyperlink.d.ts.map +1 -1
  44. package/dist/tools/hyperlink.js +3 -2
  45. package/dist/tools/hyperlink.js.map +1 -1
  46. package/dist/tools/inspector.d.ts.map +1 -1
  47. package/dist/tools/inspector.js +3 -2
  48. package/dist/tools/inspector.js.map +1 -1
  49. package/dist/tools/kbd.d.ts.map +1 -1
  50. package/dist/tools/kbd.js +3 -2
  51. package/dist/tools/kbd.js.map +1 -1
  52. package/dist/tools/log.d.ts.map +1 -1
  53. package/dist/tools/log.js +3 -2
  54. package/dist/tools/log.js.map +1 -1
  55. package/dist/tools/output.test.d.ts +2 -0
  56. package/dist/tools/output.test.d.ts.map +1 -0
  57. package/dist/tools/output.test.js +105 -0
  58. package/dist/tools/output.test.js.map +1 -0
  59. package/dist/tools/paginator.d.ts.map +1 -1
  60. package/dist/tools/paginator.js +3 -2
  61. package/dist/tools/paginator.js.map +1 -1
  62. package/dist/tools/progress.d.ts.map +1 -1
  63. package/dist/tools/progress.js +3 -2
  64. package/dist/tools/progress.js.map +1 -1
  65. package/dist/tools/separator.d.ts.map +1 -1
  66. package/dist/tools/separator.js +3 -2
  67. package/dist/tools/separator.js.map +1 -1
  68. package/dist/tools/skeleton.d.ts.map +1 -1
  69. package/dist/tools/skeleton.js +3 -2
  70. package/dist/tools/skeleton.js.map +1 -1
  71. package/dist/tools/stepper.d.ts.map +1 -1
  72. package/dist/tools/stepper.js +3 -2
  73. package/dist/tools/stepper.js.map +1 -1
  74. package/dist/tools/table.d.ts.map +1 -1
  75. package/dist/tools/table.js +3 -2
  76. package/dist/tools/table.js.map +1 -1
  77. package/dist/tools/tabs.d.ts.map +1 -1
  78. package/dist/tools/tabs.js +3 -2
  79. package/dist/tools/tabs.js.map +1 -1
  80. package/dist/tools/timeline.d.ts.map +1 -1
  81. package/dist/tools/timeline.js +3 -2
  82. package/dist/tools/timeline.js.map +1 -1
  83. package/dist/tools/tree.d.ts.map +1 -1
  84. package/dist/tools/tree.js +3 -2
  85. package/dist/tools/tree.js.map +1 -1
  86. package/dist/types.d.ts +2 -0
  87. package/dist/types.d.ts.map +1 -1
  88. package/package.json +2 -2
package/README.md CHANGED
@@ -95,6 +95,7 @@ Or point directly at a local checkout:
95
95
  | `bijou_kbd` | Keyboard key indicator |
96
96
  | `bijou_hyperlink` | Terminal hyperlink (OSC 8) |
97
97
  | `bijou_skeleton` | Placeholder loading block |
98
+ | `bijou_docs` | Machine-readable docs for the MCP surface plus the full first-party component-family field guide |
98
99
 
99
100
  ## Example Output
100
101
 
@@ -104,9 +105,9 @@ bijou_table
104
105
  ┌────────────┬─────────┬─────────┐
105
106
  │ Name │ Status │ Version │
106
107
  ├────────────┼─────────┼─────────┤
107
- │ bijou │ healthy │ 4.4.1
108
- │ bijou-node │ healthy │ 4.4.1
109
- │ bijou-mcp │ new │ 4.4.1
108
+ │ bijou │ healthy │ 5.0.0
109
+ │ bijou-node │ healthy │ 5.0.0
110
+ │ bijou-mcp │ new │ 5.0.0
110
111
  └────────────┴─────────┴─────────┘
111
112
 
112
113
  bijou_tree
@@ -156,6 +157,12 @@ renders correctly in any monospace context.
156
157
  Each tool accepts structured JSON input, renders via the corresponding
157
158
  Bijou component, and returns the result as a plain text string.
158
159
 
160
+ All tools also accept an optional `output` field:
161
+
162
+ - `text` (default): return the rendered plain-text output in `content`
163
+ - `data`: return only MCP `structuredContent` with machine-readable semantic payload
164
+ - `both`: return both the rendered text and the structured payload
165
+
159
166
  ## License
160
167
 
161
168
  Apache-2.0
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ import type { ToolRegistration, ToolResult, ToolResultContent, ZodShape } from './types.js';
3
+ export declare const toolOutputModeSchema: z.ZodEnum<["text", "data", "both"]>;
4
+ export type ToolOutputMode = z.infer<typeof toolOutputModeSchema>;
5
+ export declare const structuredToolOutputShape: {
6
+ output: z.ZodEnum<["text", "data", "both"]>;
7
+ rendered: z.ZodOptional<z.ZodString>;
8
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
9
+ };
10
+ declare const toolOutputInputShape: {
11
+ output: z.ZodOptional<z.ZodEnum<["text", "data", "both"]>>;
12
+ };
13
+ export declare function withOutputMode<Shape extends ZodShape>(inputShape: Shape): Shape & typeof toolOutputInputShape;
14
+ export declare function stripOutputMode(args: Record<string, unknown>): Record<string, unknown>;
15
+ export declare function buildStructuredToolResult(rendered: string, data: Record<string, unknown>, output?: ToolOutputMode, content?: ToolResultContent[]): ToolResult;
16
+ export declare function withStructuredToolOutput(tool: ToolRegistration): ToolRegistration;
17
+ export {};
18
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE5F,eAAO,MAAM,oBAAoB,qCAAmC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,yBAAyB;;;;CAIlB,CAAC;AAErB,QAAA,MAAM,oBAAoB;;CAIN,CAAC;AAErB,wBAAgB,cAAc,CAAC,KAAK,SAAS,QAAQ,EAAE,UAAU,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,oBAAoB,CAK7G;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGtF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,GAAE,cAAuB,EAC/B,OAAO,CAAC,EAAE,iBAAiB,EAAE,GAC5B,UAAU,CASZ;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAgBjF"}
package/dist/output.js ADDED
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ export const toolOutputModeSchema = z.enum(['text', 'data', 'both']);
3
+ export const structuredToolOutputShape = {
4
+ output: toolOutputModeSchema.describe('Resolved output mode for this tool call.'),
5
+ rendered: z.string().optional().describe('Rendered plain-text output when requested.'),
6
+ data: z.record(z.string(), z.unknown()).describe('Machine-readable semantic payload for the tool result.'),
7
+ };
8
+ const toolOutputInputShape = {
9
+ output: toolOutputModeSchema.optional().describe("Output mode: 'text' (default), 'data', or 'both'."),
10
+ };
11
+ export function withOutputMode(inputShape) {
12
+ return {
13
+ ...inputShape,
14
+ ...toolOutputInputShape,
15
+ };
16
+ }
17
+ export function stripOutputMode(args) {
18
+ const { output: _output, ...data } = args;
19
+ return data;
20
+ }
21
+ export function buildStructuredToolResult(rendered, data, output = 'text', content) {
22
+ return {
23
+ content: output === 'data' ? [] : (content ?? [{ type: 'text', text: rendered }]),
24
+ structuredContent: {
25
+ output,
26
+ ...(output === 'data' ? {} : { rendered }),
27
+ data,
28
+ },
29
+ };
30
+ }
31
+ export function withStructuredToolOutput(tool) {
32
+ if (tool.outputSchema !== undefined)
33
+ return tool;
34
+ return {
35
+ ...tool,
36
+ inputSchema: withOutputMode(tool.inputSchema ?? {}),
37
+ outputSchema: structuredToolOutputShape,
38
+ handler: async (args) => {
39
+ const result = await tool.handler(args);
40
+ if (result['isError'] || result.structuredContent !== undefined)
41
+ return result;
42
+ const output = toolOutputModeSchema.optional().parse(args['output']) ?? 'text';
43
+ const rendered = result.content.find((block) => block.type === 'text')?.text ?? '';
44
+ return buildStructuredToolResult(rendered, stripOutputMode(args), output, result.content);
45
+ },
46
+ };
47
+ }
48
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAGrE,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACjF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACtF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,wDAAwD,CAAC;CACxF,CAAC;AAErB,MAAM,oBAAoB,GAAG;IAC3B,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,mDAAmD,CACpD;CACiB,CAAC;AAErB,MAAM,UAAU,cAAc,CAAyB,UAAiB;IACtE,OAAO;QACL,GAAG,UAAU;QACb,GAAG,oBAAoB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAA6B;IAC3D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAgB,EAChB,IAA6B,EAC7B,SAAyB,MAAM,EAC/B,OAA6B;IAE7B,OAAO;QACL,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjF,iBAAiB,EAAE;YACjB,MAAM;YACN,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC1C,IAAI;SACL;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAsB;IAC7D,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAEjD,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QACnD,YAAY,EAAE,yBAAyB;QACvC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YAE/E,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC;YAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;YACnF,OAAO,yBAAyB,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/server.js CHANGED
@@ -32,6 +32,7 @@ import { constrainTool } from './tools/constrain.js';
32
32
  import { progressBarTool } from './tools/progress.js';
33
33
  import { explainabilityTool } from './tools/explainability.js';
34
34
  import { inspectorTool } from './tools/inspector.js';
35
+ import { createDocsTool } from './tools/docs.js';
35
36
  const TOOLS = [
36
37
  tableTool,
37
38
  boxTool,
@@ -57,12 +58,17 @@ const TOOLS = [
57
58
  explainabilityTool,
58
59
  inspectorTool,
59
60
  ];
61
+ const docsTool = createDocsTool(TOOLS);
60
62
  const server = new McpServer({
61
63
  name: 'bijou-mcp',
62
64
  version: PACKAGE_VERSION,
63
65
  });
64
- for (const tool of TOOLS) {
65
- server.tool(tool.name, tool.description, tool.inputSchema, async (args) => tool.handler(args));
66
+ for (const tool of [...TOOLS, docsTool]) {
67
+ server.registerTool(tool.name, {
68
+ description: tool.description,
69
+ inputSchema: tool.inputSchema,
70
+ outputSchema: tool.outputSchema,
71
+ }, async (args) => tool.handler(args));
66
72
  }
67
73
  const transport = new StdioServerTransport();
68
74
  await server.connect(transport);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,KAAK,CAC7C,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC3C,CAAC;AAGzB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,KAAK,GAAgC;IACzC,SAAS;IACT,OAAO;IACP,aAAa;IACb,SAAS;IACT,QAAQ;IACR,OAAO;IACP,YAAY;IACZ,aAAa;IACb,WAAW;IACX,SAAS;IACT,aAAa;IACb,YAAY;IACZ,OAAO;IACP,QAAQ;IACR,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,aAAa;IACb,OAAO;IACP,aAAa;IACb,eAAe;IACf,kBAAkB;IAClB,aAAa;CACd,CAAC;AAEF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,eAAe;CACzB,CAAC,CAAC;AAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;IACzB,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,EAChB,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAA+B,CAAC,CAC9D,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/tools/accordion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAapD,eAAO,MAAM,aAAa,EAAE,gBAU3B,CAAC"}
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/tools/accordion.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAapD,eAAO,MAAM,aAAa,EAAE,gBAU1B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { accordion } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const inputShape = {
5
6
  sections: z.array(z.object({
6
7
  title: z.string().describe('Section heading text.'),
@@ -10,7 +11,7 @@ const inputShape = {
10
11
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
11
12
  };
12
13
  const inputSchema = z.object(inputShape);
13
- export const accordionTool = {
14
+ export const accordionTool = withStructuredToolOutput({
14
15
  name: 'bijou_accordion',
15
16
  description: 'Render collapsible accordion sections with expand/collapse indicators. Returns plain-text with Unicode arrow characters.',
16
17
  inputSchema: inputShape,
@@ -20,5 +21,5 @@ export const accordionTool = {
20
21
  const result = accordion(input.sections, { ctx });
21
22
  return { content: [{ type: 'text', text: result }] };
22
23
  },
23
- };
24
+ });
24
25
  //# sourceMappingURL=accordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/tools/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC7D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KAC9F,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0HAA0H;IACvI,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../src/tools/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;QAC7D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;KAC9F,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC5C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAqB,wBAAwB,CAAC;IACtE,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,0HAA0H;IACvI,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/tools/alert.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpD,eAAO,MAAM,SAAS,EAAE,gBAUvB,CAAC"}
1
+ {"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/tools/alert.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpD,eAAO,MAAM,SAAS,EAAE,gBAUtB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { alert } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const inputShape = {
5
6
  message: z.string().describe('Alert body text.'),
6
7
  variant: z.enum(['success', 'error', 'warning', 'info']).optional()
@@ -8,7 +9,7 @@ const inputShape = {
8
9
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
9
10
  };
10
11
  const inputSchema = z.object(inputShape);
11
- export const alertTool = {
12
+ export const alertTool = withStructuredToolOutput({
12
13
  name: 'bijou_alert',
13
14
  description: 'Render an alert box with an icon and message. Variants: success (✓), error (✗), warning (⚠), info (ℹ). Returns plain-text with box-drawing characters.',
14
15
  inputSchema: inputShape,
@@ -18,5 +19,5 @@ export const alertTool = {
18
19
  const result = alert(input.message, { variant: input.variant, ctx });
19
20
  return { content: [{ type: 'text', text: result }] };
20
21
  },
21
- };
22
+ });
22
23
  //# sourceMappingURL=alert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/tools/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;SAChE,QAAQ,CAAC,oCAAoC,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,wJAAwJ;IACrK,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"alert.js","sourceRoot":"","sources":["../../src/tools/alert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;SAChE,QAAQ,CAAC,oCAAoC,CAAC;IACjD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAqB,wBAAwB,CAAC;IAClE,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,wJAAwJ;IACrK,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/tools/badge.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpD,eAAO,MAAM,SAAS,EAAE,gBAWvB,CAAC"}
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/tools/badge.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAWpD,eAAO,MAAM,SAAS,EAAE,gBAWtB,CAAC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { badge, surfaceToString } from '@flyingrobots/bijou';
3
3
  import { plainStyle } from '@flyingrobots/bijou/adapters/test';
4
4
  import { mcpContext } from '../context.js';
5
+ import { withStructuredToolOutput } from '../output.js';
5
6
  const inputShape = {
6
7
  text: z.string().describe('Label to display inside the badge.'),
7
8
  variant: z.enum(['success', 'error', 'warning', 'info', 'accent', 'primary']).optional()
@@ -9,7 +10,7 @@ const inputShape = {
9
10
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
10
11
  };
11
12
  const inputSchema = z.object(inputShape);
12
- export const badgeTool = {
13
+ export const badgeTool = withStructuredToolOutput({
13
14
  name: 'bijou_badge',
14
15
  description: 'Render an inline pill-shaped badge label. Variants: success, error, warning, info, accent, primary.',
15
16
  inputSchema: inputShape,
@@ -20,5 +21,5 @@ export const badgeTool = {
20
21
  const result = surfaceToString(surface, plainStyle());
21
22
  return { content: [{ type: 'text', text: result }] };
22
23
  },
23
- };
24
+ });
24
25
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/tools/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SACrF,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAqB;IACzC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,qGAAqG;IAClH,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["../../src/tools/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;SACrF,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAqB,wBAAwB,CAAC;IAClE,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,qGAAqG;IAClH,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/tools/box.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAsBpD,eAAO,MAAM,OAAO,EAAE,gBAgBrB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAgB3B,CAAC"}
1
+ {"version":3,"file":"box.d.ts","sourceRoot":"","sources":["../../src/tools/box.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAsBpD,eAAO,MAAM,OAAO,EAAE,gBAgBpB,CAAC;AAEH,eAAO,MAAM,aAAa,EAAE,gBAgB1B,CAAC"}
package/dist/tools/box.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { box, headerBox } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const boxShape = {
5
6
  content: z.string().describe('Text to display inside the box (may contain newlines).'),
6
7
  title: z.string().optional().describe('Optional title displayed in the top border.'),
@@ -17,7 +18,7 @@ const headerBoxShape = {
17
18
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
18
19
  };
19
20
  const headerBoxSchema = z.object(headerBoxShape);
20
- export const boxTool = {
21
+ export const boxTool = withStructuredToolOutput({
21
22
  name: 'bijou_box',
22
23
  description: 'Render text inside a Unicode bordered box. Returns plain-text with box-drawing characters.',
23
24
  inputSchema: boxShape,
@@ -33,8 +34,8 @@ export const boxTool = {
33
34
  });
34
35
  return { content: [{ type: 'text', text: result }] };
35
36
  },
36
- };
37
- export const headerBoxTool = {
37
+ });
38
+ export const headerBoxTool = withStructuredToolOutput({
38
39
  name: 'bijou_header_box',
39
40
  description: 'Render a labeled box with an optional detail line. Returns plain-text with box-drawing characters.',
40
41
  inputSchema: headerBoxShape,
@@ -50,5 +51,5 @@ export const headerBoxTool = {
50
51
  });
51
52
  return { content: [{ type: 'text', text: result }] };
52
53
  },
53
- };
54
+ });
54
55
  //# sourceMappingURL=box.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/tools/box.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,QAAQ,GAAG;IACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACpF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAErC,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACrF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IACtF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACvE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAqB;IACvC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,4FAA4F;IACzG,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YACrD,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,oGAAoG;IACjH,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YACrD,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"box.js","sourceRoot":"","sources":["../../src/tools/box.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/tools/breadcrumb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAUpD,eAAO,MAAM,cAAc,EAAE,gBAU5B,CAAC"}
1
+ {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../src/tools/breadcrumb.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAUpD,eAAO,MAAM,cAAc,EAAE,gBAU3B,CAAC"}
@@ -1,13 +1,14 @@
1
1
  import { z } from 'zod';
2
2
  import { breadcrumb } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const inputShape = {
5
6
  items: z.array(z.string()).describe('Breadcrumb path segments (e.g. ["Home", "Docs", "API"]).'),
6
7
  separator: z.string().optional().describe('Separator between items (default " > ").'),
7
8
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
8
9
  };
9
10
  const inputSchema = z.object(inputShape);
10
- export const breadcrumbTool = {
11
+ export const breadcrumbTool = withStructuredToolOutput({
11
12
  name: 'bijou_breadcrumb',
12
13
  description: 'Render a breadcrumb navigation trail. The last item is highlighted as the current location.',
13
14
  inputSchema: inputShape,
@@ -17,5 +18,5 @@ export const breadcrumbTool = {
17
18
  const result = breadcrumb(input.items, { separator: input.separator, ctx });
18
19
  return { content: [{ type: 'text', text: result }] };
19
20
  },
20
- };
21
+ });
21
22
  //# sourceMappingURL=breadcrumb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../src/tools/breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,6FAA6F;IAC1G,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"breadcrumb.js","sourceRoot":"","sources":["../../src/tools/breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACrF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAqB,wBAAwB,CAAC;IACvE,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,6FAA6F;IAC1G,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"constrain.d.ts","sourceRoot":"","sources":["../../src/tools/constrain.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,eAAO,MAAM,aAAa,EAAE,gBAY3B,CAAC"}
1
+ {"version":3,"file":"constrain.d.ts","sourceRoot":"","sources":["../../src/tools/constrain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAYpD,eAAO,MAAM,aAAa,EAAE,gBAY1B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { constrain } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const inputShape = {
5
6
  content: z.string().describe('Text content to constrain.'),
6
7
  maxWidth: z.number().optional().describe('Maximum width in columns.'),
@@ -9,7 +10,7 @@ const inputShape = {
9
10
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
10
11
  };
11
12
  const inputSchema = z.object(inputShape);
12
- export const constrainTool = {
13
+ export const constrainTool = withStructuredToolOutput({
13
14
  name: 'bijou_constrain',
14
15
  description: 'Constrain text to a maximum width and/or height, truncating with ellipsis if needed.',
15
16
  inputSchema: inputShape,
@@ -21,5 +22,5 @@ export const constrainTool = {
21
22
  });
22
23
  return { content: [{ type: 'text', text: result }] };
23
24
  },
24
- };
25
+ });
25
26
  //# sourceMappingURL=constrain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constrain.js","sourceRoot":"","sources":["../../src/tools/constrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC3F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,sFAAsF;IACnG,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG;SACpF,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"constrain.js","sourceRoot":"","sources":["../../src/tools/constrain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACrE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;IAC3F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,aAAa,GAAqB,wBAAwB,CAAC;IACtE,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,sFAAsF;IACnG,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE;YACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG;SACpF,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../src/tools/dag.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAepD,eAAO,MAAM,OAAO,EAAE,gBAWrB,CAAC"}
1
+ {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../src/tools/dag.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAepD,eAAO,MAAM,OAAO,EAAE,gBAWpB,CAAC"}
package/dist/tools/dag.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { dag } from '@flyingrobots/bijou';
3
3
  import { mcpContext } from '../context.js';
4
+ import { withStructuredToolOutput } from '../output.js';
4
5
  const inputShape = {
5
6
  nodes: z.array(z.object({
6
7
  id: z.string().describe('Unique node identifier.'),
@@ -12,9 +13,9 @@ const inputShape = {
12
13
  terminalWidth: z.number().optional().describe('Terminal width override (default 80).'),
13
14
  };
14
15
  const inputSchema = z.object(inputShape);
15
- export const dagTool = {
16
+ export const dagTool = withStructuredToolOutput({
16
17
  name: 'bijou_dag',
17
- description: 'Render a directed acyclic graph with boxed nodes and edge lines. Returns plain-text with Unicode box-drawing characters.',
18
+ description: 'Render a directed graph with boxed nodes and edge lines. Returns plain-text with Unicode box-drawing characters.',
18
19
  inputSchema: inputShape,
19
20
  handler: async (args) => {
20
21
  const input = inputSchema.parse(args);
@@ -23,5 +24,5 @@ export const dagTool = {
23
24
  const result = dag(input.nodes, { maxWidth: input.maxWidth, ctx });
24
25
  return { content: [{ type: 'text', text: result }] };
25
26
  },
26
- };
27
+ });
27
28
  //# sourceMappingURL=dag.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dag.js","sourceRoot":"","sources":["../../src/tools/dag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAqB;IACvC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,0HAA0H;IACvI,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"dag.js","sourceRoot":"","sources":["../../src/tools/dag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,UAAU,GAAG;IACjB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAClD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACxD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC3F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;KAClF,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAC9E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;CACvF,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAqB,wBAAwB,CAAC;IAChE,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,kHAAkH;IAC/H,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvD,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ToolRegistration } from '../types.js';
2
+ interface ToolInteractionProfiles {
3
+ readonly interactive: string;
4
+ readonly static: string;
5
+ readonly pipe: string;
6
+ readonly accessible: string;
7
+ }
8
+ interface ToolDocsCatalogEntry {
9
+ readonly toolName: string;
10
+ readonly family: string;
11
+ readonly category: string;
12
+ readonly summary: string;
13
+ readonly aliases: readonly string[];
14
+ readonly useWhen: readonly string[];
15
+ readonly avoidWhen: readonly string[];
16
+ readonly interactionProfiles?: Partial<ToolInteractionProfiles>;
17
+ readonly related: readonly string[];
18
+ readonly exampleArgs?: Record<string, unknown>;
19
+ }
20
+ export declare const MCP_DOCS_CATALOG: readonly ToolDocsCatalogEntry[];
21
+ export declare function createDocsTool(tools: readonly ToolRegistration[]): ToolRegistration;
22
+ export {};
23
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,gBAAgB,EAAc,MAAM,aAAa,CAAC;AAEhE,UAAU,uBAAuB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD;AA+BD,eAAO,MAAM,gBAAgB,EAAE,SAAS,oBAAoB,EAm2B3D,CAAC;AAoKF,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,GAAG,gBAAgB,CAsFnF"}