compact-agent 1.1.1 → 1.2.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/dist/stitch.js ADDED
@@ -0,0 +1,278 @@
1
+ /**
2
+ * Stitch integration — Google's AI UI/UX design + code generation tool.
3
+ *
4
+ * Ports gemini-cli-extensions/stitch into compact-agent. Two surfaces:
5
+ *
6
+ * 1. A `stitch` tool (src/tools/stitch.ts) that the LLM can call to hit
7
+ * the Stitch MCP server at stitch.googleapis.com/mcp via JSON-RPC.
8
+ *
9
+ * 2. A `/stitch <query>` slash command (wired in src/index.ts) that
10
+ * injects a system-prompt addition copied from the upstream
11
+ * gemini-extension commands/stitch.toml — intent routing between
12
+ * "enhance a prompt" and "use the assistant" modes.
13
+ *
14
+ * Auth: API key only, stored at ~/.crowcoder/stitch.json. ADC auth
15
+ * (Google Cloud) would require gcloud + the OAuth dance — out of scope
16
+ * for now. Get a key from https://stitch.withgoogle.com/ → profile menu
17
+ * → Stitch Settings → API Keys → Create Key.
18
+ *
19
+ * Bypass the config file via STITCH_API_KEY env var.
20
+ */
21
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
22
+ import { join } from 'node:path';
23
+ import chalk from 'chalk';
24
+ import { getConfigDir } from './config.js';
25
+ const STITCH_MCP_URL = 'https://stitch.googleapis.com/mcp';
26
+ const STITCH_CONFIG_FILE = join(getConfigDir(), 'stitch.json');
27
+ export function loadStitchConfig() {
28
+ const envKey = process.env.STITCH_API_KEY;
29
+ if (envKey) {
30
+ return { apiKey: envKey, configuredAt: '(from STITCH_API_KEY env)' };
31
+ }
32
+ if (!existsSync(STITCH_CONFIG_FILE))
33
+ return null;
34
+ try {
35
+ return JSON.parse(readFileSync(STITCH_CONFIG_FILE, 'utf-8'));
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ export function saveStitchConfig(apiKey) {
42
+ mkdirSync(getConfigDir(), { recursive: true });
43
+ const cfg = {
44
+ apiKey,
45
+ configuredAt: new Date().toISOString(),
46
+ };
47
+ writeFileSync(STITCH_CONFIG_FILE, JSON.stringify(cfg, null, 2), 'utf-8');
48
+ }
49
+ export function stitchConfigured() {
50
+ return loadStitchConfig() !== null;
51
+ }
52
+ export async function callStitchMcp(req) {
53
+ const cfg = loadStitchConfig();
54
+ if (!cfg) {
55
+ return {
56
+ ok: false,
57
+ error: { message: 'Stitch not configured. Run /stitch-config to set an API key, or set STITCH_API_KEY in your env.' },
58
+ };
59
+ }
60
+ const body = {
61
+ jsonrpc: '2.0',
62
+ id: Date.now(),
63
+ method: req.method,
64
+ params: req.params ?? {},
65
+ };
66
+ try {
67
+ const resp = await fetch(STITCH_MCP_URL, {
68
+ method: 'POST',
69
+ headers: {
70
+ 'Content-Type': 'application/json',
71
+ 'Accept': 'application/json',
72
+ 'X-Goog-Api-Key': cfg.apiKey,
73
+ },
74
+ body: JSON.stringify(body),
75
+ signal: AbortSignal.timeout(60_000),
76
+ });
77
+ const text = await resp.text();
78
+ let parsed = null;
79
+ try {
80
+ parsed = JSON.parse(text);
81
+ }
82
+ catch { /* not JSON */ }
83
+ if (!resp.ok) {
84
+ return {
85
+ ok: false,
86
+ status: resp.status,
87
+ error: {
88
+ message: parsed?.error?.message || `HTTP ${resp.status}: ${text.slice(0, 200)}`,
89
+ code: parsed?.error?.code,
90
+ },
91
+ };
92
+ }
93
+ if (parsed?.error) {
94
+ return { ok: false, status: resp.status, error: parsed.error };
95
+ }
96
+ return { ok: true, status: resp.status, result: parsed?.result ?? parsed };
97
+ }
98
+ catch (err) {
99
+ const msg = err instanceof Error ? err.message : String(err);
100
+ return { ok: false, error: { message: `Network error: ${msg}` } };
101
+ }
102
+ }
103
+ /**
104
+ * /stitch-tools — inject a prompt that drives the agent to call tools/list
105
+ * and pretty-print the catalog. Routes through the standard LLM tool loop
106
+ * (async via runQuery) so we don't need to make handleSlashCommand async.
107
+ */
108
+ export function buildStitchToolsPrompt() {
109
+ return `# Stitch — list available MCP tools
110
+
111
+ Call the \`stitch\` tool with:
112
+
113
+ \`\`\`json
114
+ { "method": "tools/list" }
115
+ \`\`\`
116
+
117
+ The response will be \`{ tools: [{ name, description, inputSchema }, ...] }\`.
118
+
119
+ Then render the catalog as a clean Markdown table with columns:
120
+ - **name** (exact string the user types)
121
+ - **description** (first line, trimmed)
122
+ - **required args** (comma-separated list from inputSchema.required, or "—")
123
+
124
+ If the call fails (non-ok response), report the HTTP status and error
125
+ message verbatim and suggest:
126
+ - Check the API key is valid (\`/stitch-status\`)
127
+ - Re-set it via \`/stitch-config <api-key>\`
128
+ - Confirm internet reachability
129
+
130
+ Do not invoke any tools other than \`stitch\`. Do not edit any files.`;
131
+ }
132
+ // ── Status ──────────────────────────────────────────────
133
+ export function printStitchStatus() {
134
+ const cfg = loadStitchConfig();
135
+ console.log(chalk.cyan('\n Stitch integration'));
136
+ if (!cfg) {
137
+ console.log(chalk.yellow(' not configured'));
138
+ console.log(chalk.dim(' Configure with /stitch-config <api-key>'));
139
+ console.log(chalk.dim(' Or: $env:STITCH_API_KEY = "..." (PowerShell)'));
140
+ console.log(chalk.dim(' export STITCH_API_KEY="..." (POSIX)'));
141
+ console.log(chalk.dim(' Get a key: https://stitch.withgoogle.com/ → Stitch Settings → API Keys'));
142
+ console.log();
143
+ return;
144
+ }
145
+ const masked = cfg.apiKey.length > 8
146
+ ? cfg.apiKey.slice(0, 4) + '...' + cfg.apiKey.slice(-4)
147
+ : '***';
148
+ console.log(chalk.dim(` api key: ${masked}`));
149
+ console.log(chalk.dim(` configured at: ${cfg.configuredAt}`));
150
+ console.log(chalk.dim(` server: ${STITCH_MCP_URL}`));
151
+ console.log(chalk.dim(`\n Try: /stitch list my projects`));
152
+ console.log(chalk.dim(` /stitch generate a landing page for a podcast about productivity`));
153
+ console.log(chalk.dim(` /stitch enhance: dark dashboard with sidebar nav and 3 charts`));
154
+ console.log();
155
+ }
156
+ // ── Prompt builder (ports gemini-extension/commands/stitch.toml) ─────
157
+ /**
158
+ * Returns the prompt body for /stitch <query>. The model is given an intent
159
+ * router (enhance vs assistant) and the complete Stitch MCP tool catalog
160
+ * sourced from https://stitch.withgoogle.com/docs/mcp/reference.
161
+ */
162
+ export function buildStitchPrompt(query) {
163
+ const safeQuery = query.replace(/`/g, '\\`');
164
+ return `# Stitch Intelligent Interface
165
+
166
+ You are the Stitch interface inside Compact Agent. Stitch is Google's AI
167
+ UI/UX design and code generation tool (https://stitch.withgoogle.com/).
168
+ Connect via the \`stitch\` tool, which wraps the Stitch MCP server at
169
+ https://stitch.googleapis.com/mcp.
170
+
171
+ Call shape:
172
+
173
+ { "method": "tools/call", "name": "<tool>", "arguments": { ... } }
174
+
175
+ Use \`{ "method": "tools/list" }\` only if you encounter a tool-not-found
176
+ error — the catalog below is the authoritative list from the upstream
177
+ reference docs.
178
+
179
+ The user's query is: "${safeQuery}"
180
+
181
+ ## Intent classification
182
+
183
+ Does the user want to **Enhance / Improve** a design prompt?
184
+ * **YES** (triggers: "enhance", "refine", "make this better"): PROTOCOL A.
185
+ * **NO** (any other Stitch operation): PROTOCOL B.
186
+
187
+ ## PROTOCOL A: ENHANCE
188
+
189
+ 1. \`web_fetch\` https://discuss.ai.google.dev/t/stitch-prompt-guide/83844
190
+ for the Stitch Effective Prompting Guide. Read it.
191
+ 2. Generate a snake_case filename for the topic (e.g. \`podcast_landing_page.md\`).
192
+ 3. Rewrite the user's intent into a polished prompt following the guide.
193
+ 4. \`write_file\` to save it to that filename in the CWD.
194
+ 5. Reply: "✨ Enhanced prompt saved to \`[filename]\`."
195
+
196
+ ## PROTOCOL B: ASSISTANT
197
+
198
+ Use the catalog below. **Project Management** + **Screen Management** are
199
+ read-only and fast. **AI Generation** + **Design Systems** mutate state and
200
+ can take **a few minutes** — do NOT retry on connection errors; instead
201
+ poll \`get_screen\` after a few minutes to see if it completed.
202
+
203
+ ### Domain model
204
+
205
+ - A user owns **projects** (a project is a container of UI work).
206
+ - Each project has many **screens**. A screen has an image + full HTML/
207
+ Tailwind document.
208
+ - Screens can share a **design system** (theme, components, tokens).
209
+ - Resource names follow Google Cloud format: \`projects/{projectId}\` and
210
+ \`projects/{projectId}/screens/{screenId}\`.
211
+
212
+ ### Project Management
213
+
214
+ \`create_project\` (writes) — Create a new project.
215
+ \`get_project\` (read-only) — Args: \`{ name: "projects/{projectId}" }\`.
216
+ \`list_projects\` (read-only) — Args: \`{}\` or omit.
217
+
218
+ ### Screen Management
219
+
220
+ \`list_screens\` (read-only) — Args: \`{ projectId: "<id-no-prefix>" }\`.
221
+ Returns an array of Screen objects.
222
+ \`get_screen\` (read-only) — Prefer \`{ name: "projects/{p}/screens/{s}" }\`.
223
+ Legacy \`projectId\` + \`screenId\` (deprecated, no prefixes) are also
224
+ accepted; currently all three may be required together.
225
+
226
+ ### AI Generation (destructive, slow — minutes per call)
227
+
228
+ \`generate_screen_from_text\` — Generates a new screen from a text prompt.
229
+ Args: \`{ projectId, prompt, deviceType?, modelId? }\`.
230
+ - \`deviceType\` enum: \`DEVICE_TYPE_UNSPECIFIED\` | \`MOBILE\` | \`DESKTOP\` |
231
+ \`TABLET\` | \`AGNOSTIC\`. Default unspecified.
232
+ - \`modelId\` enum: \`MODEL_ID_UNSPECIFIED\` | \`GEMINI_3_PRO\` |
233
+ \`GEMINI_3_FLASH\`. Default unspecified (server picks Flash).
234
+ - If the response \`output_components\` field contains suggestions,
235
+ present them to the user. If accepted, call this tool AGAIN with the
236
+ chosen suggestion as the new \`prompt\`.
237
+ - This call takes **a few minutes**. Avoid retrying on connection
238
+ errors — they don't necessarily mean failure. Instead, poll
239
+ \`get_screen\` after a few minutes.
240
+
241
+ \`edit_screens\` — Edits existing screens with a text prompt.
242
+ Args: \`{ projectId, selectedScreenIds: [string], prompt, deviceType? }\`.
243
+ Same minutes-long behavior as \`generate_screen_from_text\`.
244
+
245
+ \`generate_variants\` — Produces alternate variants of a screen.
246
+
247
+ ### Design Systems
248
+
249
+ \`create_design_system\` (writes) — Create a new design system.
250
+ \`update_design_system\` (writes) — Update an existing one.
251
+ \`list_design_systems\` (read-only) — List available design systems.
252
+ \`apply_design_system\` (writes) — Apply a design system to screens.
253
+
254
+ ## Rules
255
+
256
+ 1. **Don't retry slow AI calls.** If \`generate_screen_from_text\` or
257
+ \`edit_screens\` returns a network/timeout error, the work is likely
258
+ still progressing on the server. Wait, then call \`get_screen\` to
259
+ check status. Mention this to the user so they don't get impatient.
260
+
261
+ 2. **Surface suggestions.** When \`generate_screen_from_text\` returns
262
+ \`output_components\` with prompt suggestions, list them for the user
263
+ in a numbered list and ask which to use.
264
+
265
+ 3. **Resource names over deprecated IDs.** Prefer the \`name\` form
266
+ (\`projects/{p}\` or \`projects/{p}/screens/{s}\`) over bare \`projectId\`
267
+ when both are accepted.
268
+
269
+ 4. **Read-only vs destructive matters.** Use read-only tools liberally to
270
+ explore. Confirm before generating/editing if the user wasn't explicit.
271
+
272
+ 5. **Respond with structure.** Lists → Markdown tables. Generated screens
273
+ → screen id + brief description + offer to fetch with \`get_screen\`.
274
+ On any failure, return the upstream error verbatim, then suggest a fix.`;
275
+ }
276
+ // ── Re-exports ──────────────────────────────────────────
277
+ export { STITCH_MCP_URL, STITCH_CONFIG_FILE };
278
+ //# sourceMappingURL=stitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../src/stitch.ts"],"names":[],"mappings":"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"}
package/dist/theme.d.ts CHANGED
@@ -54,7 +54,8 @@ export declare function printToolResult(success: boolean, elapsed: number, outpu
54
54
  export declare function printThinkingOpen(): void;
55
55
  export declare function printThinkingText(text: string): void;
56
56
  export declare function printThinkingClose(): void;
57
- export declare function printCost(prompt: number, completion: number, cost: number, warning?: string): void;
57
+ export declare function printCost(prompt: number, completion: number, cost: number, warning?: string, elapsedMs?: number): void;
58
+ export declare function printApiError(message: string): void;
58
59
  export declare function printSecurityBadge(level: string, threats: string[], blocked: boolean): void;
59
60
  export declare function printDivider(): void;
60
61
  export declare function spinner(text: string): string;
package/dist/theme.js CHANGED
@@ -165,39 +165,88 @@ export function printKV(key, value, indent = 2) {
165
165
  console.log(padding + theme.secondary(key.padEnd(14)) + theme.bright(value));
166
166
  }
167
167
  // ── Tool Execution Display ──────────────────────────────
168
+ // Args are condensed to a single line, truncated to 80 chars to keep the
169
+ // vertical footprint low.
168
170
  export function printToolRun(name, args) {
171
+ const compactArgs = args.replace(/\s+/g, ' ').trim();
172
+ const display = compactArgs.length > 80 ? compactArgs.slice(0, 77) + '...' : compactArgs;
169
173
  console.log(theme.toolName(` ${sym.running} ${name}`) +
170
- theme.toolArgs(` ${args}`));
174
+ (display ? theme.toolArgs(` ${display}`) : ''));
171
175
  }
176
+ // Result is always a single line: icon + elapsed + first non-empty line of
177
+ // output (max 120 chars). No more multi-line previews — they bloat the
178
+ // transcript and obscure the next action.
172
179
  export function printToolResult(success, elapsed, output) {
173
180
  const icon = success ? theme.toolStatus(sym.success) : theme.toolError(sym.error);
174
- const time = theme.toolTime(`(${elapsed}ms)`);
175
- const preview = output.length > 200
176
- ? theme.dim(output.slice(0, 150) + '...')
177
- : theme.dim(output);
178
- console.log(` ${icon} ${time} ${preview}`);
181
+ const time = theme.toolTime(`${(elapsed / 1000).toFixed(1)}s`);
182
+ const firstLine = (output.split('\n').find((l) => l.trim().length > 0) || '').trim();
183
+ const preview = firstLine.length > 120 ? firstLine.slice(0, 117) + '...' : firstLine;
184
+ const tail = output.length > preview.length + 10
185
+ ? theme.dim(` +${output.length - preview.length}b`)
186
+ : '';
187
+ console.log(` ${icon} ${time} ${theme.dim(preview)}${tail}`);
179
188
  }
180
189
  // ── Thinking Display ────────────────────────────────────
190
+ // Inline streaming with a left border, no surrounding blank lines.
191
+ // Toggle visibility with /thinking.
181
192
  export function printThinkingOpen() {
182
- console.log('');
183
- console.log(theme.thinkBorder(' │ ') + theme.thinkLabel(`${sym.thinking} Thinking...`));
193
+ console.log(theme.thinkBorder('') + theme.thinkLabel(`${sym.thinking} thinking`));
184
194
  }
185
195
  export function printThinkingText(text) {
186
- // Prefix each line with the left border
187
- process.stdout.write(theme.thinkBorder(' │ ') + theme.thinkText(text));
196
+ // Prefix each newline within the chunk so multi-line thoughts stay aligned.
197
+ const prefixed = text.replace(/\n(?!$)/g, '\n' + theme.thinkBorder(' │ '));
198
+ process.stdout.write(theme.thinkBorder(' │ ') + theme.thinkText(prefixed));
188
199
  }
189
200
  export function printThinkingClose() {
190
- console.log('');
191
- console.log(theme.thinkBorder(' │'));
201
+ process.stdout.write('\n');
192
202
  }
193
- // ── Cost Display ────────────────────────────────────────
194
- export function printCost(prompt, completion, cost, warning) {
195
- const p = prompt > 999 ? `${(prompt / 1000).toFixed(1)}K` : String(prompt);
196
- const c = completion > 999 ? `${(completion / 1000).toFixed(1)}K` : String(completion);
197
- process.stdout.write(theme.cost(`\n ${p}${sym.arrow}${c} tokens $${cost.toFixed(4)}`));
203
+ // ── Cost / telemetry line ─────────────────────────────────
204
+ // One compact status line per model turn: tokens + cost + elapsed time.
205
+ // No leading blank caller is responsible for line state (newline as
206
+ // needed before this is printed).
207
+ export function printCost(prompt, completion, cost, warning, elapsedMs) {
208
+ const fmt = (n) => (n > 999 ? `${(n / 1000).toFixed(1)}K` : String(n));
209
+ const p = fmt(prompt);
210
+ const c = fmt(completion);
211
+ const t = typeof elapsedMs === 'number'
212
+ ? ` ${theme.toolTime((elapsedMs / 1000).toFixed(1) + 's')}`
213
+ : '';
214
+ console.log(theme.cost(` ${p}${sym.arrow}${c} tokens $${cost.toFixed(4)}`) + t);
198
215
  if (warning) {
199
- console.log(theme.warning(`\n ${sym.warn} ${warning}`));
216
+ console.log(theme.warning(` ${sym.warn} ${warning}`));
217
+ }
218
+ }
219
+ // ── API error formatter ─────────────────────────────────
220
+ // Distinguish actionable errors (404/401/429) from generic failures.
221
+ // Surface the URL if the upstream message has one; suggest the fix.
222
+ export function printApiError(message) {
223
+ console.log('');
224
+ console.log(theme.error(` ${sym.error} API error`));
225
+ // Indent body, wrap at ~76 chars
226
+ for (const line of message.split('\n')) {
227
+ const trimmed = line.trim();
228
+ if (!trimmed)
229
+ continue;
230
+ console.log(theme.dim(' ' + trimmed));
231
+ }
232
+ const lower = message.toLowerCase();
233
+ let hint = '';
234
+ if (lower.includes('404') || lower.includes('no longer') || lower.includes('not found')) {
235
+ hint = 'Model unavailable. Switch with /model <name> or /config to pick a new one.';
200
236
  }
237
+ else if (lower.includes('401') || lower.includes('unauthorized') || lower.includes('invalid api key')) {
238
+ hint = 'Auth failed. Re-set your key with /config.';
239
+ }
240
+ else if (lower.includes('429') || lower.includes('rate limit')) {
241
+ hint = 'Rate-limited. Wait a moment or switch to a different model with /model.';
242
+ }
243
+ else if (lower.includes('econn') || lower.includes('etimedout') || lower.includes('network')) {
244
+ hint = 'Network issue. Check connectivity, then retry.';
245
+ }
246
+ if (hint) {
247
+ console.log(theme.warning(` → ${hint}`));
248
+ }
249
+ console.log('');
201
250
  }
202
251
  // ── Security Display ────────────────────────────────────
203
252
  export function printSecurityBadge(level, threats, blocked) {
package/dist/theme.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,13 @@ import { GlobTool } from './glob.js';
7
7
  import { WebFetchTool } from './web-fetch.js';
8
8
  import { WebSearchTool } from './web-search.js';
9
9
  import { ListDirTool } from './list-dir.js';
10
+ import { StitchTool } from './stitch.js';
11
+ import { stitchConfigured } from '../stitch.js';
12
+ // Stitch is only listed in the tool registry when configured — otherwise
13
+ // free models hallucinate calls to it and waste turns on auth errors.
14
+ const OPTIONAL_TOOLS = [];
15
+ if (stitchConfigured())
16
+ OPTIONAL_TOOLS.push(StitchTool);
10
17
  export const ALL_TOOLS = [
11
18
  BashTool,
12
19
  ReadTool,
@@ -17,6 +24,7 @@ export const ALL_TOOLS = [
17
24
  ListDirTool,
18
25
  WebFetchTool,
19
26
  WebSearchTool,
27
+ ...OPTIONAL_TOOLS,
20
28
  ];
21
29
  export function getToolNames() {
22
30
  return ALL_TOOLS.map((t) => t.name);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,aAAa;CACd,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,yEAAyE;AACzE,sEAAsE;AACtE,MAAM,cAAc,GAAW,EAAE,CAAC;AAClC,IAAI,gBAAgB,EAAE;IAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAExD,MAAM,CAAC,MAAM,SAAS,GAAW;IAC/B,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,aAAa;IACb,GAAG,cAAc;CAClB,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * stitch tool — calls the Google Stitch MCP server.
3
+ *
4
+ * The LLM uses this to manage UI/UX design projects on Stitch:
5
+ * - List the user's projects
6
+ * - Read screens within a project
7
+ * - Download assets (images, HTML)
8
+ * - Generate a new screen from a text prompt
9
+ *
10
+ * Auth: API key from ~/.crowcoder/stitch.json or STITCH_API_KEY env var.
11
+ * Configure with `/stitch-config <key>` inside the REPL.
12
+ */
13
+ import type { Tool } from './types.js';
14
+ export declare const StitchTool: Tool;
@@ -0,0 +1,84 @@
1
+ import { callStitchMcp, stitchConfigured } from '../stitch.js';
2
+ export const StitchTool = {
3
+ name: 'stitch',
4
+ description: 'Google Stitch MCP server (stitch.googleapis.com/mcp). 12 tools across 4 categories: ' +
5
+ 'Project Management (create_project, get_project, list_projects), ' +
6
+ 'Screen Management (list_screens, get_screen), ' +
7
+ 'AI Generation (generate_screen_from_text, edit_screens, generate_variants), ' +
8
+ 'Design Systems (create_design_system, update_design_system, list_design_systems, apply_design_system). ' +
9
+ 'AI Generation calls take a few minutes — do not retry on connection errors; poll with get_screen instead. ' +
10
+ 'Requires STITCH_API_KEY or `/stitch-config` setup.',
11
+ parameters: {
12
+ type: 'object',
13
+ properties: {
14
+ method: {
15
+ type: 'string',
16
+ description: 'JSON-RPC method. "tools/call" to invoke a tool (default). "tools/list" to re-enumerate the catalog if you hit a tool-not-found error.',
17
+ },
18
+ name: {
19
+ type: 'string',
20
+ description: 'For "tools/call": the exact tool name (e.g. "list_projects", "generate_screen_from_text", "edit_screens"). See description for the full 12-tool catalog.',
21
+ },
22
+ arguments: {
23
+ type: 'object',
24
+ description: 'For "tools/call": tool-specific arguments. Examples: get_project → { name: "projects/{id}" }; list_screens → { projectId: "<id>" }; generate_screen_from_text → { projectId, prompt, deviceType?: "MOBILE"|"DESKTOP"|"TABLET"|"AGNOSTIC", modelId?: "GEMINI_3_PRO"|"GEMINI_3_FLASH" }.',
25
+ },
26
+ },
27
+ required: ['method'],
28
+ },
29
+ isReadOnly: false,
30
+ // Marked destructive because the tool covers AI Generation (generate_screen_
31
+ // from_text, edit_screens, generate_variants) and Design System mutations
32
+ // (create/update/apply). Permission gating in permissions.ts will prompt
33
+ // under /perm ask, auto-approve in /perm yolo.
34
+ isDestructive: true,
35
+ async call(input) {
36
+ if (!stitchConfigured()) {
37
+ return {
38
+ output: 'Stitch is not configured. Run `/stitch-config <api-key>` in the REPL, or set STITCH_API_KEY in your environment. Get a key from https://stitch.withgoogle.com/ → Stitch Settings → API Keys.',
39
+ isError: true,
40
+ };
41
+ }
42
+ const method = String(input.method || '').trim();
43
+ if (!method) {
44
+ return { output: 'stitch: missing required parameter "method"', isError: true };
45
+ }
46
+ if (method !== 'tools/list' && method !== 'tools/call') {
47
+ return {
48
+ output: `stitch: unsupported method "${method}". Use "tools/list" or "tools/call".`,
49
+ isError: true,
50
+ };
51
+ }
52
+ let params = {};
53
+ if (method === 'tools/call') {
54
+ const name = String(input.name || '').trim();
55
+ if (!name) {
56
+ return {
57
+ output: 'stitch: "tools/call" requires a "name" parameter. Run with method="tools/list" first to discover available tools.',
58
+ isError: true,
59
+ };
60
+ }
61
+ params = {
62
+ name,
63
+ arguments: input.arguments || {},
64
+ };
65
+ }
66
+ const resp = await callStitchMcp({ method, params });
67
+ if (!resp.ok) {
68
+ return {
69
+ output: `stitch error${resp.status ? ` (HTTP ${resp.status})` : ''}: ${resp.error?.message || 'unknown error'}`,
70
+ isError: true,
71
+ };
72
+ }
73
+ // Truncate huge payloads (Stitch can return image bytes / large HTML)
74
+ const formatted = typeof resp.result === 'string'
75
+ ? resp.result
76
+ : JSON.stringify(resp.result, null, 2);
77
+ const MAX = 100_000;
78
+ const output = formatted.length > MAX
79
+ ? formatted.slice(0, MAX) + `\n…[truncated ${formatted.length - MAX} bytes]`
80
+ : formatted;
81
+ return { output, isError: false };
82
+ },
83
+ };
84
+ //# sourceMappingURL=stitch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/tools/stitch.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -3,7 +3,7 @@ export type Role = 'system' | 'user' | 'assistant' | 'tool';
3
3
  export interface Message {
4
4
  role: Role;
5
5
  content: string | null;
6
- tool_calls?: OpenAI.Chat.ChatCompletionMessageToolCall[];
6
+ tool_calls?: OpenAI.Chat.ChatCompletionMessageFunctionToolCall[];
7
7
  tool_call_id?: string;
8
8
  name?: string;
9
9
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,SAAS,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,2BAA2B;QACzC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,0DAA0D;QACnE,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,KAAK;KACnB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAqCA,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,SAAS,EAAE;QACT,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,+BAA+B;QACxC,YAAY,EAAE,0BAA0B;QACxC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,IAAI;KAClB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,2BAA2B;QACzC,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,0DAA0D;QACnE,YAAY,EAAE,kBAAkB;QAChC,WAAW,EAAE,IAAI;KAClB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,6BAA6B;QACtC,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,2BAA2B;QACpC,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,KAAK;KACnB;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,0BAA0B;QACnC,YAAY,EAAE,cAAc;QAC5B,WAAW,EAAE,KAAK;KACnB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,sCAAsC;QAC/C,YAAY,EAAE,YAAY;QAC1B,WAAW,EAAE,IAAI;KAClB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "compact-agent",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "A dense, feature-rich AI coding agent for the terminal. 80+ slash commands, 8 modes including Hermes self-improving loop, multi-agent orchestration, bundled everything-claude-code skills library, learning system, and observable LLM transport. Works with OpenRouter, OpenAI, Anthropic-compatible, Ollama, LM Studio, DeepSeek, or any OpenAI-compatible API.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,8 +45,8 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "chalk": "^5.3.0",
48
- "glob": "^11.0.0",
49
- "openai": "^4.73.0"
48
+ "glob": "^13.0.0",
49
+ "openai": "^6.0.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^22.0.0",