@starascendin/lifeos-mcp 0.5.0 → 0.6.0

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,2 +1,2 @@
1
- export declare const VERSION = "0.5.0";
2
- export declare const BUILD_TIME = "2026-02-08T16:47:22.729Z";
1
+ export declare const VERSION = "0.6.0";
2
+ export declare const BUILD_TIME = "2026-02-10T00:13:52.601Z";
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED — do not edit. Regenerated on every build.
2
- export const VERSION = "0.5.0";
3
- export const BUILD_TIME = "2026-02-08T16:47:22.729Z";
2
+ export const VERSION = "0.6.0";
3
+ export const BUILD_TIME = "2026-02-10T00:13:52.601Z";
package/dist/index.js CHANGED
@@ -331,7 +331,14 @@ const TOOLS = [
331
331
  },
332
332
  status: {
333
333
  type: "string",
334
- enum: ["backlog", "todo", "in_progress", "in_review", "done", "cancelled"],
334
+ enum: [
335
+ "backlog",
336
+ "todo",
337
+ "in_progress",
338
+ "in_review",
339
+ "done",
340
+ "cancelled",
341
+ ],
335
342
  description: "Updated status (optional)",
336
343
  },
337
344
  priority: {
@@ -514,6 +521,45 @@ const TOOLS = [
514
521
  required: ["cycleId"],
515
522
  },
516
523
  },
524
+ {
525
+ name: "close_cycle",
526
+ description: "Close/complete a cycle. Optionally rolls over incomplete issues (not done/cancelled) to the next upcoming cycle. If rolloverIncomplete is not specified, uses the user's autoRolloverIncompleteIssues setting.",
527
+ inputSchema: {
528
+ type: "object",
529
+ properties: {
530
+ userId: {
531
+ type: "string",
532
+ description: "Override the default user ID (optional)",
533
+ },
534
+ cycleId: {
535
+ type: "string",
536
+ description: "Cycle ID to close (required)",
537
+ },
538
+ rolloverIncomplete: {
539
+ type: "boolean",
540
+ description: "If true, move incomplete issues to the next cycle. If omitted, uses user's auto-rollover setting.",
541
+ },
542
+ },
543
+ required: ["cycleId"],
544
+ },
545
+ },
546
+ {
547
+ name: "generate_cycles",
548
+ description: "Generate upcoming cycles based on the user's cycle settings (duration, start day, timezone). Creates cycles starting after the latest existing cycle.",
549
+ inputSchema: {
550
+ type: "object",
551
+ properties: {
552
+ userId: {
553
+ type: "string",
554
+ description: "Override the default user ID (optional)",
555
+ },
556
+ count: {
557
+ type: "number",
558
+ description: "Number of cycles to generate (optional, defaults to user's defaultCyclesToCreate setting)",
559
+ },
560
+ },
561
+ },
562
+ },
517
563
  // Agenda Tools
518
564
  {
519
565
  name: "get_daily_agenda",
@@ -1037,7 +1083,14 @@ const TOOLS = [
1037
1083
  },
1038
1084
  relationshipType: {
1039
1085
  type: "string",
1040
- enum: ["family", "friend", "colleague", "acquaintance", "mentor", "other"],
1086
+ enum: [
1087
+ "family",
1088
+ "friend",
1089
+ "colleague",
1090
+ "acquaintance",
1091
+ "mentor",
1092
+ "other",
1093
+ ],
1041
1094
  description: "Filter by relationship type",
1042
1095
  },
1043
1096
  includeArchived: {
@@ -1154,7 +1207,14 @@ const TOOLS = [
1154
1207
  },
1155
1208
  relationshipType: {
1156
1209
  type: "string",
1157
- enum: ["family", "friend", "colleague", "acquaintance", "mentor", "other"],
1210
+ enum: [
1211
+ "family",
1212
+ "friend",
1213
+ "colleague",
1214
+ "acquaintance",
1215
+ "mentor",
1216
+ "other",
1217
+ ],
1158
1218
  description: "Relationship type (optional)",
1159
1219
  },
1160
1220
  avatarEmoji: {
@@ -1193,7 +1253,14 @@ const TOOLS = [
1193
1253
  },
1194
1254
  relationshipType: {
1195
1255
  type: "string",
1196
- enum: ["family", "friend", "colleague", "acquaintance", "mentor", "other"],
1256
+ enum: [
1257
+ "family",
1258
+ "friend",
1259
+ "colleague",
1260
+ "acquaintance",
1261
+ "mentor",
1262
+ "other",
1263
+ ],
1197
1264
  description: "Updated relationship type (optional)",
1198
1265
  },
1199
1266
  email: {
@@ -2031,12 +2098,26 @@ const PROMPTS = [
2031
2098
  },
2032
2099
  ],
2033
2100
  },
2101
+ {
2102
+ name: "cycle-review",
2103
+ description: "Review the current cycle: progress, incomplete items, rollover options. Useful for end-of-sprint review.",
2104
+ arguments: [
2105
+ {
2106
+ name: "action",
2107
+ description: "Optional action: 'close' to close the cycle, 'rollover' to close and roll over incomplete issues",
2108
+ required: false,
2109
+ },
2110
+ ],
2111
+ },
2034
2112
  ];
2035
2113
  // Prompt message templates keyed by prompt name
2036
2114
  const PROMPT_MESSAGES = {
2037
2115
  "daily-standup": (args) => {
2038
- const dateClause = args.date ? `Use date: ${args.date}` : "Use today's date.";
2039
- return [{
2116
+ const dateClause = args.date
2117
+ ? `Use date: ${args.date}`
2118
+ : "Use today's date.";
2119
+ return [
2120
+ {
2040
2121
  role: "user",
2041
2122
  content: {
2042
2123
  type: "text",
@@ -2056,11 +2137,15 @@ Summarize in a concise standup format:
2056
2137
 
2057
2138
  Keep it short and actionable.`,
2058
2139
  },
2059
- }];
2140
+ },
2141
+ ];
2060
2142
  },
2061
2143
  "weekly-review": (args) => {
2062
- const dateClause = args.date ? `Use week start date: ${args.date}` : "Use this week.";
2063
- return [{
2144
+ const dateClause = args.date
2145
+ ? `Use week start date: ${args.date}`
2146
+ : "Use this week.";
2147
+ return [
2148
+ {
2064
2149
  role: "user",
2065
2150
  content: {
2066
2151
  type: "text",
@@ -2081,11 +2166,13 @@ Present a weekly review:
2081
2166
  - **Blockers**: Anything overdue or stuck
2082
2167
  - **Next Week**: Key items to tackle`,
2083
2168
  },
2084
- }];
2169
+ },
2170
+ ];
2085
2171
  },
2086
2172
  "sprint-plan": (args) => {
2087
2173
  const notesClause = args.notes ? `Additional context: ${args.notes}` : "";
2088
- return [{
2174
+ return [
2175
+ {
2089
2176
  role: "user",
2090
2177
  content: {
2091
2178
  type: "text",
@@ -2106,9 +2193,11 @@ Then help me plan:
2106
2193
 
2107
2194
  Ask me to confirm before creating or assigning any issues.`,
2108
2195
  },
2109
- }];
2196
+ },
2197
+ ];
2110
2198
  },
2111
- "contact-lookup": (args) => [{
2199
+ "contact-lookup": (args) => [
2200
+ {
2112
2201
  role: "user",
2113
2202
  content: {
2114
2203
  type: "text",
@@ -2124,8 +2213,10 @@ Present the dossier in a structured format:
2124
2213
  - **Meeting History**: Granola/Fathom meetings with key takeaways
2125
2214
  - **Chat Threads**: Beeper conversation threads linked to this person`,
2126
2215
  },
2127
- }],
2128
- "client-brief": (args) => [{
2216
+ },
2217
+ ],
2218
+ "client-brief": (args) => [
2219
+ {
2129
2220
  role: "user",
2130
2221
  content: {
2131
2222
  type: "text",
@@ -2145,8 +2236,10 @@ Present as a client brief:
2145
2236
  - **Recent Comms**: Latest Beeper thread activity
2146
2237
  - **Action Items**: Any overdue or urgent tasks for this client`,
2147
2238
  },
2148
- }],
2149
- "project-status": (args) => [{
2239
+ },
2240
+ ],
2241
+ "project-status": (args) => [
2242
+ {
2150
2243
  role: "user",
2151
2244
  content: {
2152
2245
  type: "text",
@@ -2164,8 +2257,10 @@ Present a project status report:
2164
2257
  - **In Progress**: What's actively being worked on
2165
2258
  - **Blockers**: Anything that looks stuck`,
2166
2259
  },
2167
- }],
2168
- "capture": (args) => [{
2260
+ },
2261
+ ],
2262
+ capture: (args) => [
2263
+ {
2169
2264
  role: "user",
2170
2265
  content: {
2171
2266
  type: "text",
@@ -2187,8 +2282,10 @@ Analyze the input and determine what type of capture this is:
2187
2282
 
2188
2283
  After creating, confirm what was captured with the ID/identifier.`,
2189
2284
  },
2190
- }],
2191
- "meeting-prep": (args) => [{
2285
+ },
2286
+ ],
2287
+ "meeting-prep": (args) => [
2288
+ {
2192
2289
  role: "user",
2193
2290
  content: {
2194
2291
  type: "text",
@@ -2207,7 +2304,42 @@ Compile a meeting prep brief:
2207
2304
  - **Past Meetings**: Summary of last 3 meetings with key decisions/takeaways
2208
2305
  - **Suggested Talking Points**: Based on open items and recent context`,
2209
2306
  },
2210
- }],
2307
+ },
2308
+ ],
2309
+ "cycle-review": (args) => {
2310
+ const actionClause = args.action
2311
+ ? `\n\nThe user wants to: ${args.action === "rollover" ? "close the cycle AND roll over incomplete issues to the next cycle" : args.action === "close" ? "close the cycle (without rollover)" : args.action}`
2312
+ : "";
2313
+ return [
2314
+ {
2315
+ role: "user",
2316
+ content: {
2317
+ type: "text",
2318
+ text: `Review my current cycle/sprint. Use the LifeOS MCP tools:
2319
+
2320
+ 1. Call get_current_cycle for the active cycle with progress stats
2321
+ 2. Call get_cycles with status "upcoming" to see what's next
2322
+ 3. Call get_tasks with status "in_progress" to see active work
2323
+ 4. Call get_tasks with status "backlog" or "todo" to see incomplete items in the cycle
2324
+ ${actionClause}
2325
+
2326
+ Present the cycle review:
2327
+ - **Cycle Summary**: Name, dates, days remaining
2328
+ - **Progress**: Completion %, issues done vs total
2329
+ - **Incomplete Items**: List all non-done/non-cancelled issues with status and priority
2330
+ - **Next Cycle**: Show the next upcoming cycle (if any)
2331
+ - **Recommendations**:
2332
+ - If cycle is ending soon, suggest closing with rollover
2333
+ - If many items are incomplete, suggest re-prioritizing
2334
+ - If cycle is already past end date, strongly recommend closing it
2335
+
2336
+ ${args.action === "close" ? "After presenting the review, call close_cycle to close the current cycle WITHOUT rolling over incomplete issues." : ""}
2337
+ ${args.action === "rollover" ? "After presenting the review, call close_cycle with rolloverIncomplete=true to close the cycle and move incomplete issues to the next cycle." : ""}
2338
+ ${!args.action ? "Ask the user if they want to close the cycle, and whether to roll over incomplete issues to the next cycle." : ""}`,
2339
+ },
2340
+ },
2341
+ ];
2342
+ },
2211
2343
  };
2212
2344
  // Configuration: CLI flags take precedence over env vars
2213
2345
  // NOTE: HTTP routes are served from .convex.site, NOT .convex.cloud
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@starascendin/lifeos-mcp",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
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",