@limeadelabs/launchpad-mcp 1.2.3 → 1.2.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/dist/index.js +28 -13
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -621,14 +621,19 @@ function registerSessionTools(server2, client2) {
621
621
  );
622
622
  server2.tool(
623
623
  "lp_session_progress",
624
- 'Report progress on an active session. Sends an activity update with action "progress".',
624
+ "Report progress on an active session. Provide session_id directly or task_id to look up session from disk.",
625
625
  {
626
- session_id: z9.coerce.number().describe("Session ID"),
626
+ session_id: z9.coerce.number().optional().describe("Session ID"),
627
+ task_id: z9.coerce.number().optional().describe("Task ID to look up session from disk"),
627
628
  detail: z9.string().describe("Description of progress made")
628
629
  },
629
- async ({ session_id, detail }) => {
630
+ async ({ session_id, task_id, detail }) => {
630
631
  try {
631
- const result = await client2.updateSession(session_id, {
632
+ const resolvedId = session_id ?? (task_id !== void 0 ? getSessionId(task_id) : null);
633
+ if (resolvedId === null) {
634
+ return { content: [{ type: "text", text: "No active session found. Provide session_id or task_id." }] };
635
+ }
636
+ const result = await client2.updateSession(resolvedId, {
632
637
  activity: { action: "progress", detail }
633
638
  });
634
639
  return {
@@ -641,15 +646,20 @@ function registerSessionTools(server2, client2) {
641
646
  );
642
647
  server2.tool(
643
648
  "lp_session_event",
644
- "Log a discrete event for a session (commit, ci_pass, ci_fail, pr_opened, blocker, cost_update).",
649
+ "Log a discrete event for a session (commit, ci_pass, ci_fail, pr_opened, blocker, cost_update). Provide session_id or task_id.",
645
650
  {
646
- session_id: z9.coerce.number().describe("Session ID"),
651
+ session_id: z9.coerce.number().optional().describe("Session ID"),
652
+ task_id: z9.coerce.number().optional().describe("Task ID to look up session from disk"),
647
653
  event_type: z9.enum(["commit", "ci_pass", "ci_fail", "pr_opened", "blocker", "cost_update"]).describe("Type of event"),
648
654
  payload: z9.record(z9.unknown()).describe("Event payload data")
649
655
  },
650
- async ({ session_id, event_type, payload }) => {
656
+ async ({ session_id, task_id, event_type, payload }) => {
651
657
  try {
652
- const result = await client2.createSessionEvent(session_id, event_type, payload);
658
+ const resolvedId = session_id ?? (task_id !== void 0 ? getSessionId(task_id) : null);
659
+ if (resolvedId === null) {
660
+ return { content: [{ type: "text", text: "No active session found. Provide session_id or task_id." }] };
661
+ }
662
+ const result = await client2.createSessionEvent(resolvedId, event_type, payload);
653
663
  return {
654
664
  content: [{ type: "text", text: JSON.stringify(result, null, 2) }]
655
665
  };
@@ -660,16 +670,21 @@ function registerSessionTools(server2, client2) {
660
670
  );
661
671
  server2.tool(
662
672
  "lp_session_blocked",
663
- 'Mark a session as blocked. Updates status to "blocked" and logs a blocker event.',
673
+ 'Mark a session as blocked. Updates status to "blocked" and logs a blocker event. Provide session_id or task_id.',
664
674
  {
665
- session_id: z9.coerce.number().describe("Session ID"),
675
+ session_id: z9.coerce.number().optional().describe("Session ID"),
676
+ task_id: z9.coerce.number().optional().describe("Task ID to look up session from disk"),
666
677
  reason: z9.string().describe("Reason the session is blocked")
667
678
  },
668
- async ({ session_id, reason }) => {
679
+ async ({ session_id, task_id, reason }) => {
669
680
  try {
681
+ const resolvedId = session_id ?? (task_id !== void 0 ? getSessionId(task_id) : null);
682
+ if (resolvedId === null) {
683
+ return { content: [{ type: "text", text: "No active session found. Provide session_id or task_id." }] };
684
+ }
670
685
  const [sessionResult, eventResult] = await Promise.all([
671
- client2.updateSession(session_id, { status: "blocked" }),
672
- client2.createSessionEvent(session_id, "blocker", { reason })
686
+ client2.updateSession(resolvedId, { status: "blocked" }),
687
+ client2.createSessionEvent(resolvedId, "blocker", { reason })
673
688
  ]);
674
689
  return {
675
690
  content: [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limeadelabs/launchpad-mcp",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "LaunchPad MCP server for Claude Code — AI-native project management integration",
5
5
  "type": "module",
6
6
  "exports": {