@zibby/mcp-cli 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +7 -4
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -479,7 +479,7 @@ server.tool(
479
479
  appType: z.string().min(1).optional().describe('Catalog id (e.g. "grafana", "gastown"). MUTUALLY EXCLUSIVE with goal — pass exactly one. Use this when the user wants something from the curated catalog.'),
480
480
  goal: z.string().min(1).optional().describe('Free-form description of what to install (e.g. "install n8n on port 5678 with sqlite persistence"). MUTUALLY EXCLUSIVE with appType. Use this when the user wants something NOT in catalog OR has custom config needs — the agent-ops bootstrap will follow the description to install whatever it describes. Examples: "install n8n", "set up an Outline wiki at /wiki", "deploy a basic Rails app from <repo URL>". The user is responsible for any license terms of software they install via this path.'),
481
481
  projectId: z.string().min(1).describe('Project the instance attaches to'),
482
- name: z.string().min(1).optional().describe('Display name for the instance (defaults to appType, or the first line of goal)'),
482
+ name: z.string().min(1).optional().describe('Display name for the instance (shown as the dashboard header). ALWAYS pick a meaningful name based on WHAT is being installed and its purpose, NOT the install command. Good examples: `n8n-workflows`, `team-wiki`, `vaultwarden-secrets`, `rails-blog`. Bad examples: `test`, `goal-test`, `instance-1`, `install-n8n`. Max 80 chars, alphanumeric + dashes. Defaults to appType on catalog deploys; for goal deploys you MUST provide one or the server falls back to the first line of the goal text which is usually ugly.'),
483
483
  provider: z.enum(['claude', 'codex']).optional().describe('Agent provider. Default "claude" (Anthropic). "codex" runs the OpenAI Codex agent and requires an OpenAI API key in workspace-credentials.'),
484
484
  architecture: z.enum(['x86_64', 'arm64']).optional().describe('CPU architecture for the Fargate task. "arm64" runs on AWS Graviton — ~20% cheaper compute (same price to user). "x86_64" is the historical default + widest catalog compatibility. Omit to accept the catalog tile\'s preferred arch (first entry in its `architectures` array — usually arm64 for tiles that support it).'),
485
485
  },
@@ -515,7 +515,7 @@ server.tool(
515
515
  // resources, app version, project.
516
516
  server.tool(
517
517
  'zibby_get_app',
518
- 'Show one deployed app instance: status (running / pending / failed), running task count, app type+version, resources, public URL, project. Use when the user asks "is my app up?" or "what URL is it on?".',
518
+ 'Show one deployed app instance: status (running / pending / failed), running task count, app type+version, resources, public URL, project. For multi-container apps the output also includes a per-service table (name/status/health/exit code) so the agent can diagnose which sidecar is unhealthy. Use when the user asks "is my app up?" or "what URL is it on?".',
519
519
  {
520
520
  instanceId: z.string().min(1).describe('Instance ID returned from zibby_deploy_app or zibby_list_apps'),
521
521
  projectId: z.string().min(1).optional()
@@ -535,14 +535,16 @@ server.tool(
535
535
  // (no streaming over MCP — agents can call again for fresh batches).
536
536
  server.tool(
537
537
  'zibby_get_app_logs',
538
- 'Fetch the most recent log lines from a deployed app instance. One-shot snapshot (the user should call again for new lines). Useful for diagnosing why an app is stuck, failed to provision, or to confirm a feature works end-to-end. Returns a string with one event per line, prefixed by ISO timestamp.',
538
+ 'Fetch the most recent log lines from a deployed app instance. One-shot snapshot (the user should call again for new lines). Useful for diagnosing why an app is stuck, failed to provision, or to confirm a feature works end-to-end. Returns a string with one event per line, prefixed by ISO timestamp. For multi-container apps pass `service` to narrow to one container (e.g. `db`, `web`, `agent-ops`); without it, lines from all containers are interleaved by timestamp.',
539
539
  {
540
540
  instanceId: z.string().min(1).describe('Instance ID returned from zibby_deploy_app or zibby_list_apps'),
541
541
  projectId: z.string().min(1).optional().describe('Project the instance belongs to (picks the right cached API token)'),
542
542
  lines: z.number().int().min(1).max(5000).optional().default(200)
543
543
  .describe('Max number of recent lines to fetch (default 200, max 5000)'),
544
+ service: z.string().min(1).max(40).optional()
545
+ .describe('Multi-container apps only: limit logs to one service name (e.g. "db", "web", "agent-ops"). Defaults to interleaved across every container in the task.'),
544
546
  },
545
- async ({ instanceId, projectId, lines }) => {
547
+ async ({ instanceId, projectId, lines, service }) => {
546
548
  const extraEnv = {};
547
549
  if (projectId) {
548
550
  const apiKey = getProjectApiToken(projectId);
@@ -550,6 +552,7 @@ server.tool(
550
552
  }
551
553
  const args = ['app', 'logs', instanceId];
552
554
  if (lines) args.push('--lines', String(lines));
555
+ if (service) args.push('--service', service);
553
556
  return cliResult(await runCli(args, { extraEnv }));
554
557
  }
555
558
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zibby/mcp-cli",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "Zibby local-essential MCP Server — local workflow scaffold/validate/run + deploy/download (bundles local files). Pure-API tools live in the Zibby Remote MCP (api-prod.zibby.app/mcp).",
5
5
  "type": "module",
6
6
  "main": "index.js",