@starascendin/lifeos-mcp 0.7.49 → 0.7.50

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/README.md CHANGED
@@ -72,6 +72,12 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
72
72
 
73
73
  ## Available Tools
74
74
 
75
+ ### Council
76
+ - **run_council** - Run the shared LifeOS council engine used by AI Panel and ZeroClaw skills
77
+ - **llm_council_deliberate** - Run the separate long-running LLM Council workflow
78
+ - **llm_council_list_conversations** - List saved LLM Council conversations
79
+ - **llm_council_get_deliberation** - Get a saved LLM Council deliberation
80
+
75
81
  ### Project Management
76
82
  - **get_projects** - List all projects with stats
77
83
  - **get_tasks** - Get tasks with filters (project, status, priority)
@@ -118,6 +124,16 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
118
124
  - **create_client** - Create a new client
119
125
  - **update_client** - Update client details
120
126
 
127
+ ## Shared Council Architecture
128
+
129
+ `run_council` calls the Convex `POST /council-skill` endpoint. That is the same shared council core used by:
130
+
131
+ - AI Panel council mode on Convex-backed models
132
+ - ZeroClaw's `council` skill
133
+ - MCP runtimes through `run_council`
134
+
135
+ This keeps council orchestration in one place instead of duplicating it per runtime.
136
+
121
137
  ## CLI Help
122
138
 
123
139
  ```bash
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.7.49";
2
- export declare const BUILD_TIME = "2026-03-07T20:23:38.830Z";
1
+ export declare const VERSION = "0.7.50";
2
+ export declare const BUILD_TIME = "2026-03-08T00:49:23.344Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.7.49";
3
- export const BUILD_TIME = "2026-03-07T20:23:38.830Z";
2
+ export const VERSION = "0.7.50";
3
+ export const BUILD_TIME = "2026-03-08T00:49:23.344Z";
package/dist/index.js CHANGED
@@ -3483,6 +3483,64 @@ const TOOLS = [
3483
3483
  required: ["conversationId"],
3484
3484
  },
3485
3485
  },
3486
+ {
3487
+ name: "run_council",
3488
+ description: "Run the shared LifeOS council deliberation engine and return the synthesized final answer plus council stage details. This is the same council used by the AI panel and claw council skill.",
3489
+ inputSchema: {
3490
+ type: "object",
3491
+ properties: {
3492
+ userId: {
3493
+ type: "string",
3494
+ description: "Override the default user ID (optional)",
3495
+ },
3496
+ query: {
3497
+ type: "string",
3498
+ description: "The question or prompt to deliberate on",
3499
+ },
3500
+ tier: {
3501
+ type: "string",
3502
+ enum: ["normal", "pro"],
3503
+ description: "Council tier. Defaults to normal.",
3504
+ },
3505
+ councilModels: {
3506
+ type: "array",
3507
+ items: {
3508
+ type: "object",
3509
+ properties: {
3510
+ modelId: { type: "string" },
3511
+ modelName: { type: "string" },
3512
+ },
3513
+ required: ["modelId", "modelName"],
3514
+ },
3515
+ description: "Optional custom council roster",
3516
+ },
3517
+ chairmanModel: {
3518
+ type: "object",
3519
+ properties: {
3520
+ modelId: { type: "string" },
3521
+ modelName: { type: "string" },
3522
+ },
3523
+ required: ["modelId", "modelName"],
3524
+ description: "Optional custom chairman model",
3525
+ },
3526
+ pageContext: {
3527
+ type: "object",
3528
+ properties: {
3529
+ type: { type: "string" },
3530
+ id: { type: "string" },
3531
+ title: { type: "string" },
3532
+ toolCategories: {
3533
+ type: "array",
3534
+ items: { type: "string" },
3535
+ },
3536
+ },
3537
+ required: ["type", "id", "title", "toolCategories"],
3538
+ description: "Optional page context to bias stage 0 tool gathering",
3539
+ },
3540
+ },
3541
+ required: ["query"],
3542
+ },
3543
+ },
3486
3544
  // ==================== AI COACHING ====================
3487
3545
  {
3488
3546
  name: "get_coach_profile",
@@ -5501,6 +5559,22 @@ async function callConvexTool(tool, params) {
5501
5559
  }
5502
5560
  return result.result;
5503
5561
  }
5562
+ async function callConvexJsonEndpoint(path, body) {
5563
+ const url = `${CONVEX_URL}${path}`;
5564
+ const response = await fetch(url, {
5565
+ method: "POST",
5566
+ headers: {
5567
+ "Content-Type": "application/json",
5568
+ "X-API-Key": API_KEY,
5569
+ },
5570
+ body: JSON.stringify(body),
5571
+ });
5572
+ if (!response.ok) {
5573
+ const errorText = await response.text();
5574
+ throw new Error(`Convex API error (${response.status}): ${errorText}`);
5575
+ }
5576
+ return await response.json();
5577
+ }
5504
5578
  // Create the MCP server
5505
5579
  const server = new Server({
5506
5580
  name: "lifeos-pm",
@@ -5539,28 +5613,36 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
5539
5613
  try {
5540
5614
  // Handle LLM Council deliberation (special endpoint, long-running)
5541
5615
  if (name === "llm_council_deliberate") {
5542
- const url = `${CONVEX_URL}/llm-council/mcp-deliberate`;
5543
5616
  const params = args || {};
5544
- const response = await fetch(url, {
5545
- method: "POST",
5546
- headers: {
5547
- "Content-Type": "application/json",
5548
- "X-API-Key": API_KEY,
5549
- },
5550
- body: JSON.stringify({
5551
- userId: USER_ID,
5552
- query: params.query,
5553
- tier: params.tier,
5554
- title: params.title,
5555
- councilModels: params.councilModels,
5556
- chairmanModel: params.chairmanModel,
5557
- }),
5617
+ const { userId: overrideUserId } = params;
5618
+ const result = await callConvexJsonEndpoint("/llm-council/mcp-deliberate", {
5619
+ userId: overrideUserId || USER_ID,
5620
+ query: params.query,
5621
+ tier: params.tier,
5622
+ title: params.title,
5623
+ councilModels: params.councilModels,
5624
+ chairmanModel: params.chairmanModel,
5625
+ });
5626
+ return {
5627
+ content: [
5628
+ {
5629
+ type: "text",
5630
+ text: JSON.stringify(result, null, 2),
5631
+ },
5632
+ ],
5633
+ };
5634
+ }
5635
+ if (name === "run_council") {
5636
+ const params = args || {};
5637
+ const { userId: overrideUserId } = params;
5638
+ const result = await callConvexJsonEndpoint("/council-skill", {
5639
+ userId: overrideUserId || USER_ID,
5640
+ query: params.query,
5641
+ tier: params.tier,
5642
+ councilModels: params.councilModels,
5643
+ chairmanModel: params.chairmanModel,
5644
+ pageContext: params.pageContext,
5558
5645
  });
5559
- if (!response.ok) {
5560
- const errorText = await response.text();
5561
- throw new Error(`LLM Council error (${response.status}): ${errorText}`);
5562
- }
5563
- const result = await response.json();
5564
5646
  return {
5565
5647
  content: [
5566
5648
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.7.49",
3
+ "version": "0.7.50",
4
4
  "description": "MCP server for LifeOS Project Management - manage projects, tasks, notes, and contacts via AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",