@agent-plan/mcp 0.2.19-next.14 → 0.2.19-next.15

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAohCA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA4iCA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAItD"}
package/dist/index.js CHANGED
@@ -124,7 +124,7 @@ server.registerTool("planner-export", {
124
124
  const markdown = exportService.exportToMarkdown(plan, full);
125
125
  const fs = await import("node:fs/promises");
126
126
  await fs.writeFile(join(st.root, "EXPORT.md"), markdown, "utf-8");
127
- return text(`Project export generated. Summary results:\n\n${markdown.slice(0, 1000)}${markdown.length > 1000 ? "... (full report in .planner/EXPORT.md)" : ""}`, { markdown });
127
+ return text(`Project export generated. Summary results:\n\n${markdown.slice(0, 1000)}${markdown.length > 1000 ? "... (full report in .planner/EXPORT.md)" : ""}`);
128
128
  });
129
129
  server.registerTool("planner-authorize-bypass", {
130
130
  description: "Authorize a temporary guard bypass (default 15 minutes) so edit/write tools can proceed even when no task is in-progress. Use ONLY after the user explicitly authorizes proceeding without a task. Harness-agnostic: stored in resume.json so all adapters (Pi, Claude Code, Codex, ...) respect it.",
@@ -165,19 +165,43 @@ server.registerTool("planner-init", {
165
165
  return writeAndSummarize(st, `.planner/ initialized for "${project.name}"`);
166
166
  });
167
167
  server.registerTool("planner-show", {
168
- description: "Show the current planner overview.",
168
+ description: "Show a compact planner overview: project metadata, counts, and a one-line summary of each feature (F00x · shortId — name (status; N phases, M tasks)). Does NOT include full descriptions, phases, or tasks — use planner-feature-list / planner-phase-list / planner-task-list for discovery and planner-*-show for full detail of a single entity. Keeps the result small to avoid token overflow.",
169
169
  }, async () => {
170
170
  const st = await requireStore();
171
- const plan = await st.loadAll();
172
- return text([
173
- `📋 ${plan.project.name}`,
174
- `Description: ${plan.project.description || "(not set)"}`,
175
- `Goal: ${plan.project.goal || "(not set)"}`,
176
- `Features: ${plan.features.features.length}`,
177
- `Phases: ${plan.phases.length}`,
178
- `Tasks: ${plan.phases.reduce((total, phase) => total + phase.tasks.length, 0)}`,
179
- `Updated: ${plan.manifest.updatedAt}`,
180
- ].join("\n"), { plan });
171
+ const features = (await st.loadFeatures()).features;
172
+ const phases = await st.loadAllPhases();
173
+ const totalTasks = phases.reduce((total, phase) => total + phase.tasks.length, 0);
174
+ const project = await st.loadProject();
175
+ const manifest = await st.loadManifest();
176
+ const featureLines = features.map((feature) => {
177
+ const featurePhases = phases.filter((phase) => phase.featureId === feature.id);
178
+ const taskCount = featurePhases.reduce((total, phase) => total + phase.tasks.length, 0);
179
+ return `- ${formatFeatureRef(feature.number)}${feature.shortId ? ` · ${feature.shortId}` : ""} — ${feature.name} (${feature.status}; ${featurePhases.length} phases, ${taskCount} tasks)`;
180
+ });
181
+ const summary = [
182
+ `📋 ${project.name}`,
183
+ `Description: ${project.description || "(not set)"}`,
184
+ `Goal: ${project.goal || "(not set)"}`,
185
+ `Features: ${features.length} | Phases: ${phases.length} | Tasks: ${totalTasks}`,
186
+ `Updated: ${manifest.updatedAt || "(unknown)"}`,
187
+ "",
188
+ "Features:",
189
+ featureLines.join("\n") || "(none)",
190
+ ].join("\n");
191
+ // Compact structured overview (no full plan: avoids 1M+ char token overflow).
192
+ const overview = {
193
+ project: { name: project.name, description: project.description || null, goal: project.goal || null, updatedAt: manifest.updatedAt || null },
194
+ counts: { features: features.length, phases: phases.length, tasks: totalTasks },
195
+ features: features.map((feature) => ({
196
+ ref: formatFeatureRef(feature.number),
197
+ shortId: feature.shortId || null,
198
+ name: feature.name,
199
+ status: feature.status,
200
+ phases: phases.filter((p) => p.featureId === feature.id).length,
201
+ tasks: phases.filter((p) => p.featureId === feature.id).reduce((t, p) => t + p.tasks.length, 0),
202
+ })),
203
+ };
204
+ return text(summary, { overview });
181
205
  });
182
206
  server.registerTool("planner-repair", {
183
207
  description: "Repair dangling feature→phase references, rebuild phase containment from each task's own phaseId (heals the migrateToGlobalSequence task-shuffle bug where tasks land in the wrong phase file), and report integrity.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-plan/mcp",
3
- "version": "0.2.19-next.14",
3
+ "version": "0.2.19-next.15",
4
4
  "private": false,
5
5
  "description": "MCP server for Agent Plan, exposing planner-* tools over stdio.",
6
6
  "license": "MIT",
@@ -41,8 +41,8 @@
41
41
  "dependencies": {
42
42
  "@modelcontextprotocol/sdk": "^1.17.0",
43
43
  "zod": "^3.24.0",
44
- "@agent-plan/core": "0.2.19-next.14",
45
- "@agent-plan/server": "0.2.19-next.14"
44
+ "@agent-plan/core": "0.2.19-next.15",
45
+ "@agent-plan/server": "0.2.19-next.15"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsc -p tsconfig.json",