@starascendin/lifeos-mcp 0.6.0 → 0.7.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.
- package/dist/build-info.d.ts +2 -2
- package/dist/build-info.js +2 -2
- package/dist/index.js +797 -1
- package/package.json +1 -1
package/dist/build-info.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
2
|
-
export declare const BUILD_TIME = "2026-02-
|
|
1
|
+
export declare const VERSION = "0.7.0";
|
|
2
|
+
export declare const BUILD_TIME = "2026-02-12T17:27:58.965Z";
|
package/dist/build-info.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED — do not edit. Regenerated on every build.
|
|
2
|
-
export const VERSION = "0.
|
|
3
|
-
export const BUILD_TIME = "2026-02-
|
|
2
|
+
export const VERSION = "0.7.0";
|
|
3
|
+
export const BUILD_TIME = "2026-02-12T17:27:58.965Z";
|
package/dist/index.js
CHANGED
|
@@ -110,6 +110,10 @@ const TOOLS = [
|
|
|
110
110
|
enum: ["urgent", "high", "medium", "low", "none"],
|
|
111
111
|
description: "Priority level (optional, default: none)",
|
|
112
112
|
},
|
|
113
|
+
initiativeId: {
|
|
114
|
+
type: "string",
|
|
115
|
+
description: "Link to a yearly initiative ID (optional)",
|
|
116
|
+
},
|
|
113
117
|
},
|
|
114
118
|
required: ["name", "key"],
|
|
115
119
|
},
|
|
@@ -155,6 +159,10 @@ const TOOLS = [
|
|
|
155
159
|
type: "string",
|
|
156
160
|
description: "Associate with a client ID, or empty to unlink (optional)",
|
|
157
161
|
},
|
|
162
|
+
initiativeId: {
|
|
163
|
+
type: "string",
|
|
164
|
+
description: "Link to a yearly initiative ID, or empty to unlink (optional)",
|
|
165
|
+
},
|
|
158
166
|
},
|
|
159
167
|
required: ["projectIdOrKey"],
|
|
160
168
|
},
|
|
@@ -267,6 +275,10 @@ const TOOLS = [
|
|
|
267
275
|
type: "string",
|
|
268
276
|
description: "Assign to a specific phase within the project (optional)",
|
|
269
277
|
},
|
|
278
|
+
initiativeId: {
|
|
279
|
+
type: "string",
|
|
280
|
+
description: "Link directly to a yearly initiative ID (optional)",
|
|
281
|
+
},
|
|
270
282
|
},
|
|
271
283
|
required: ["title"],
|
|
272
284
|
},
|
|
@@ -354,6 +366,10 @@ const TOOLS = [
|
|
|
354
366
|
type: "boolean",
|
|
355
367
|
description: "Mark as top priority (optional)",
|
|
356
368
|
},
|
|
369
|
+
initiativeId: {
|
|
370
|
+
type: "string",
|
|
371
|
+
description: "Link to a yearly initiative ID, or empty to unlink (optional)",
|
|
372
|
+
},
|
|
357
373
|
},
|
|
358
374
|
required: ["issueIdOrIdentifier"],
|
|
359
375
|
},
|
|
@@ -941,6 +957,10 @@ const TOOLS = [
|
|
|
941
957
|
type: "string",
|
|
942
958
|
description: "The topic/context of the conversation that led to this summary (optional)",
|
|
943
959
|
},
|
|
960
|
+
rawConversation: {
|
|
961
|
+
type: "string",
|
|
962
|
+
description: "Raw conversation transcript as a JSON string (optional)",
|
|
963
|
+
},
|
|
944
964
|
},
|
|
945
965
|
required: ["title", "summary"],
|
|
946
966
|
},
|
|
@@ -1998,6 +2018,297 @@ const TOOLS = [
|
|
|
1998
2018
|
required: ["threadConvexId", "meetingSource", "meetingId"],
|
|
1999
2019
|
},
|
|
2000
2020
|
},
|
|
2021
|
+
// ==================== INITIATIVE MANAGEMENT ====================
|
|
2022
|
+
{
|
|
2023
|
+
name: "get_initiatives",
|
|
2024
|
+
description: "Get yearly initiatives with optional filters. Initiatives are the highest-order goals (e.g., 'Career Growth', 'Health Improvement') that cascade down to projects, tasks, and habits.",
|
|
2025
|
+
inputSchema: {
|
|
2026
|
+
type: "object",
|
|
2027
|
+
properties: {
|
|
2028
|
+
userId: {
|
|
2029
|
+
type: "string",
|
|
2030
|
+
description: "Override the default user ID (optional)",
|
|
2031
|
+
},
|
|
2032
|
+
year: {
|
|
2033
|
+
type: "number",
|
|
2034
|
+
description: "Filter by year, e.g. 2026 (optional)",
|
|
2035
|
+
},
|
|
2036
|
+
status: {
|
|
2037
|
+
type: "string",
|
|
2038
|
+
enum: ["active", "completed", "paused", "cancelled"],
|
|
2039
|
+
description: "Filter by initiative status (optional)",
|
|
2040
|
+
},
|
|
2041
|
+
category: {
|
|
2042
|
+
type: "string",
|
|
2043
|
+
enum: [
|
|
2044
|
+
"career",
|
|
2045
|
+
"health",
|
|
2046
|
+
"learning",
|
|
2047
|
+
"relationships",
|
|
2048
|
+
"finance",
|
|
2049
|
+
"personal",
|
|
2050
|
+
],
|
|
2051
|
+
description: "Filter by category (optional)",
|
|
2052
|
+
},
|
|
2053
|
+
includeArchived: {
|
|
2054
|
+
type: "boolean",
|
|
2055
|
+
description: "Include archived initiatives (default: false)",
|
|
2056
|
+
},
|
|
2057
|
+
},
|
|
2058
|
+
},
|
|
2059
|
+
},
|
|
2060
|
+
{
|
|
2061
|
+
name: "get_initiative",
|
|
2062
|
+
description: "Get a single initiative's details by ID.",
|
|
2063
|
+
inputSchema: {
|
|
2064
|
+
type: "object",
|
|
2065
|
+
properties: {
|
|
2066
|
+
userId: {
|
|
2067
|
+
type: "string",
|
|
2068
|
+
description: "Override the default user ID (optional)",
|
|
2069
|
+
},
|
|
2070
|
+
initiativeId: {
|
|
2071
|
+
type: "string",
|
|
2072
|
+
description: "The initiative ID (required)",
|
|
2073
|
+
},
|
|
2074
|
+
},
|
|
2075
|
+
required: ["initiativeId"],
|
|
2076
|
+
},
|
|
2077
|
+
},
|
|
2078
|
+
{
|
|
2079
|
+
name: "get_initiative_with_stats",
|
|
2080
|
+
description: "Get an initiative with full stats: linked projects, habits, directly linked issues, task completion counts, and calculated progress.",
|
|
2081
|
+
inputSchema: {
|
|
2082
|
+
type: "object",
|
|
2083
|
+
properties: {
|
|
2084
|
+
userId: {
|
|
2085
|
+
type: "string",
|
|
2086
|
+
description: "Override the default user ID (optional)",
|
|
2087
|
+
},
|
|
2088
|
+
initiativeId: {
|
|
2089
|
+
type: "string",
|
|
2090
|
+
description: "The initiative ID (required)",
|
|
2091
|
+
},
|
|
2092
|
+
},
|
|
2093
|
+
required: ["initiativeId"],
|
|
2094
|
+
},
|
|
2095
|
+
},
|
|
2096
|
+
{
|
|
2097
|
+
name: "create_initiative",
|
|
2098
|
+
description: "Create a new yearly initiative. Initiatives are the highest-order goals that organize projects, tasks, and habits.",
|
|
2099
|
+
inputSchema: {
|
|
2100
|
+
type: "object",
|
|
2101
|
+
properties: {
|
|
2102
|
+
userId: {
|
|
2103
|
+
type: "string",
|
|
2104
|
+
description: "Override the default user ID (optional)",
|
|
2105
|
+
},
|
|
2106
|
+
year: {
|
|
2107
|
+
type: "number",
|
|
2108
|
+
description: "The year for this initiative, e.g. 2026 (required)",
|
|
2109
|
+
},
|
|
2110
|
+
title: {
|
|
2111
|
+
type: "string",
|
|
2112
|
+
description: "Initiative title (required)",
|
|
2113
|
+
},
|
|
2114
|
+
category: {
|
|
2115
|
+
type: "string",
|
|
2116
|
+
enum: [
|
|
2117
|
+
"career",
|
|
2118
|
+
"health",
|
|
2119
|
+
"learning",
|
|
2120
|
+
"relationships",
|
|
2121
|
+
"finance",
|
|
2122
|
+
"personal",
|
|
2123
|
+
],
|
|
2124
|
+
description: "Category for grouping (required)",
|
|
2125
|
+
},
|
|
2126
|
+
description: {
|
|
2127
|
+
type: "string",
|
|
2128
|
+
description: "Detailed description (optional)",
|
|
2129
|
+
},
|
|
2130
|
+
status: {
|
|
2131
|
+
type: "string",
|
|
2132
|
+
enum: ["active", "completed", "paused", "cancelled"],
|
|
2133
|
+
description: "Status (optional, default: active)",
|
|
2134
|
+
},
|
|
2135
|
+
targetMetric: {
|
|
2136
|
+
type: "string",
|
|
2137
|
+
description: "Target metric description, e.g. 'Complete 3 projects' or 'Run 500 miles' (optional)",
|
|
2138
|
+
},
|
|
2139
|
+
manualProgress: {
|
|
2140
|
+
type: "number",
|
|
2141
|
+
description: "Manual progress override 0-100 (optional)",
|
|
2142
|
+
},
|
|
2143
|
+
color: {
|
|
2144
|
+
type: "string",
|
|
2145
|
+
description: "Hex color for visual display (optional)",
|
|
2146
|
+
},
|
|
2147
|
+
icon: {
|
|
2148
|
+
type: "string",
|
|
2149
|
+
description: "Emoji icon (optional)",
|
|
2150
|
+
},
|
|
2151
|
+
},
|
|
2152
|
+
required: ["year", "title", "category"],
|
|
2153
|
+
},
|
|
2154
|
+
},
|
|
2155
|
+
{
|
|
2156
|
+
name: "update_initiative",
|
|
2157
|
+
description: "Update an initiative's details.",
|
|
2158
|
+
inputSchema: {
|
|
2159
|
+
type: "object",
|
|
2160
|
+
properties: {
|
|
2161
|
+
userId: {
|
|
2162
|
+
type: "string",
|
|
2163
|
+
description: "Override the default user ID (optional)",
|
|
2164
|
+
},
|
|
2165
|
+
initiativeId: {
|
|
2166
|
+
type: "string",
|
|
2167
|
+
description: "The initiative ID (required)",
|
|
2168
|
+
},
|
|
2169
|
+
title: {
|
|
2170
|
+
type: "string",
|
|
2171
|
+
description: "Updated title (optional)",
|
|
2172
|
+
},
|
|
2173
|
+
description: {
|
|
2174
|
+
type: "string",
|
|
2175
|
+
description: "Updated description (optional)",
|
|
2176
|
+
},
|
|
2177
|
+
category: {
|
|
2178
|
+
type: "string",
|
|
2179
|
+
enum: [
|
|
2180
|
+
"career",
|
|
2181
|
+
"health",
|
|
2182
|
+
"learning",
|
|
2183
|
+
"relationships",
|
|
2184
|
+
"finance",
|
|
2185
|
+
"personal",
|
|
2186
|
+
],
|
|
2187
|
+
description: "Updated category (optional)",
|
|
2188
|
+
},
|
|
2189
|
+
status: {
|
|
2190
|
+
type: "string",
|
|
2191
|
+
enum: ["active", "completed", "paused", "cancelled"],
|
|
2192
|
+
description: "Updated status (optional)",
|
|
2193
|
+
},
|
|
2194
|
+
targetMetric: {
|
|
2195
|
+
type: "string",
|
|
2196
|
+
description: "Updated target metric (optional)",
|
|
2197
|
+
},
|
|
2198
|
+
manualProgress: {
|
|
2199
|
+
type: "number",
|
|
2200
|
+
description: "Updated manual progress 0-100 (optional)",
|
|
2201
|
+
},
|
|
2202
|
+
color: {
|
|
2203
|
+
type: "string",
|
|
2204
|
+
description: "Updated hex color (optional)",
|
|
2205
|
+
},
|
|
2206
|
+
icon: {
|
|
2207
|
+
type: "string",
|
|
2208
|
+
description: "Updated emoji icon (optional)",
|
|
2209
|
+
},
|
|
2210
|
+
},
|
|
2211
|
+
required: ["initiativeId"],
|
|
2212
|
+
},
|
|
2213
|
+
},
|
|
2214
|
+
{
|
|
2215
|
+
name: "archive_initiative",
|
|
2216
|
+
description: "Archive an initiative (soft delete). Can be unarchived later.",
|
|
2217
|
+
inputSchema: {
|
|
2218
|
+
type: "object",
|
|
2219
|
+
properties: {
|
|
2220
|
+
userId: {
|
|
2221
|
+
type: "string",
|
|
2222
|
+
description: "Override the default user ID (optional)",
|
|
2223
|
+
},
|
|
2224
|
+
initiativeId: {
|
|
2225
|
+
type: "string",
|
|
2226
|
+
description: "The initiative ID (required)",
|
|
2227
|
+
},
|
|
2228
|
+
},
|
|
2229
|
+
required: ["initiativeId"],
|
|
2230
|
+
},
|
|
2231
|
+
},
|
|
2232
|
+
{
|
|
2233
|
+
name: "delete_initiative",
|
|
2234
|
+
description: "Permanently delete an initiative. Linked projects, habits, and issues are unlinked (not deleted).",
|
|
2235
|
+
inputSchema: {
|
|
2236
|
+
type: "object",
|
|
2237
|
+
properties: {
|
|
2238
|
+
userId: {
|
|
2239
|
+
type: "string",
|
|
2240
|
+
description: "Override the default user ID (optional)",
|
|
2241
|
+
},
|
|
2242
|
+
initiativeId: {
|
|
2243
|
+
type: "string",
|
|
2244
|
+
description: "The initiative ID (required)",
|
|
2245
|
+
},
|
|
2246
|
+
},
|
|
2247
|
+
required: ["initiativeId"],
|
|
2248
|
+
},
|
|
2249
|
+
},
|
|
2250
|
+
{
|
|
2251
|
+
name: "link_project_to_initiative",
|
|
2252
|
+
description: "Link a project to an initiative, or unlink by omitting initiativeId.",
|
|
2253
|
+
inputSchema: {
|
|
2254
|
+
type: "object",
|
|
2255
|
+
properties: {
|
|
2256
|
+
userId: {
|
|
2257
|
+
type: "string",
|
|
2258
|
+
description: "Override the default user ID (optional)",
|
|
2259
|
+
},
|
|
2260
|
+
projectIdOrKey: {
|
|
2261
|
+
type: "string",
|
|
2262
|
+
description: "Project ID or key like 'ACME' (required)",
|
|
2263
|
+
},
|
|
2264
|
+
initiativeId: {
|
|
2265
|
+
type: "string",
|
|
2266
|
+
description: "Initiative ID to link to (optional — omit to unlink)",
|
|
2267
|
+
},
|
|
2268
|
+
},
|
|
2269
|
+
required: ["projectIdOrKey"],
|
|
2270
|
+
},
|
|
2271
|
+
},
|
|
2272
|
+
{
|
|
2273
|
+
name: "link_issue_to_initiative",
|
|
2274
|
+
description: "Link an issue/task directly to an initiative, or unlink by omitting initiativeId.",
|
|
2275
|
+
inputSchema: {
|
|
2276
|
+
type: "object",
|
|
2277
|
+
properties: {
|
|
2278
|
+
userId: {
|
|
2279
|
+
type: "string",
|
|
2280
|
+
description: "Override the default user ID (optional)",
|
|
2281
|
+
},
|
|
2282
|
+
issueIdOrIdentifier: {
|
|
2283
|
+
type: "string",
|
|
2284
|
+
description: "Issue ID or identifier like 'PROJ-123' (required)",
|
|
2285
|
+
},
|
|
2286
|
+
initiativeId: {
|
|
2287
|
+
type: "string",
|
|
2288
|
+
description: "Initiative ID to link to (optional — omit to unlink)",
|
|
2289
|
+
},
|
|
2290
|
+
},
|
|
2291
|
+
required: ["issueIdOrIdentifier"],
|
|
2292
|
+
},
|
|
2293
|
+
},
|
|
2294
|
+
{
|
|
2295
|
+
name: "get_initiative_yearly_rollup",
|
|
2296
|
+
description: "Get yearly rollup of all initiatives with aggregated stats: task counts, project counts, habit counts, and progress per initiative.",
|
|
2297
|
+
inputSchema: {
|
|
2298
|
+
type: "object",
|
|
2299
|
+
properties: {
|
|
2300
|
+
userId: {
|
|
2301
|
+
type: "string",
|
|
2302
|
+
description: "Override the default user ID (optional)",
|
|
2303
|
+
},
|
|
2304
|
+
year: {
|
|
2305
|
+
type: "number",
|
|
2306
|
+
description: "The year to get rollup for, e.g. 2026 (required)",
|
|
2307
|
+
},
|
|
2308
|
+
},
|
|
2309
|
+
required: ["year"],
|
|
2310
|
+
},
|
|
2311
|
+
},
|
|
2001
2312
|
// MCP Server Info
|
|
2002
2313
|
{
|
|
2003
2314
|
name: "get_version",
|
|
@@ -2109,6 +2420,127 @@ const PROMPTS = [
|
|
|
2109
2420
|
},
|
|
2110
2421
|
],
|
|
2111
2422
|
},
|
|
2423
|
+
{
|
|
2424
|
+
name: "initiative-review",
|
|
2425
|
+
description: "Review yearly initiative progress: get all initiatives for a year, show stats per category, highlight stalled or off-track initiatives.",
|
|
2426
|
+
arguments: [
|
|
2427
|
+
{
|
|
2428
|
+
name: "year",
|
|
2429
|
+
description: "Year to review (optional, defaults to current year)",
|
|
2430
|
+
required: false,
|
|
2431
|
+
},
|
|
2432
|
+
],
|
|
2433
|
+
},
|
|
2434
|
+
{
|
|
2435
|
+
name: "client-health",
|
|
2436
|
+
description: "Show health dashboard across all clients with risk indicators, project health, and communication recency.",
|
|
2437
|
+
arguments: [
|
|
2438
|
+
{
|
|
2439
|
+
name: "filter",
|
|
2440
|
+
description: "Optional filter: 'critical' to only show at-risk and critical clients",
|
|
2441
|
+
required: false,
|
|
2442
|
+
},
|
|
2443
|
+
],
|
|
2444
|
+
},
|
|
2445
|
+
{
|
|
2446
|
+
name: "context-switch",
|
|
2447
|
+
description: "Quickly load context for a client or project for fast mental context switching.",
|
|
2448
|
+
arguments: [
|
|
2449
|
+
{
|
|
2450
|
+
name: "name",
|
|
2451
|
+
description: "Client name or project key/name to load context for (required)",
|
|
2452
|
+
required: true,
|
|
2453
|
+
},
|
|
2454
|
+
],
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
name: "end-of-day",
|
|
2458
|
+
description: "Run end-of-day wrap-up with completion summary, carry-over items, and tomorrow planning.",
|
|
2459
|
+
arguments: [
|
|
2460
|
+
{
|
|
2461
|
+
name: "date",
|
|
2462
|
+
description: "Specific date in ISO format (optional, defaults to today)",
|
|
2463
|
+
required: false,
|
|
2464
|
+
},
|
|
2465
|
+
],
|
|
2466
|
+
},
|
|
2467
|
+
{
|
|
2468
|
+
name: "follow-ups",
|
|
2469
|
+
description: "Track follow-ups needed with people and clients based on interaction recency.",
|
|
2470
|
+
arguments: [
|
|
2471
|
+
{
|
|
2472
|
+
name: "name",
|
|
2473
|
+
description: "Optional: specific person or client name to focus on",
|
|
2474
|
+
required: false,
|
|
2475
|
+
},
|
|
2476
|
+
],
|
|
2477
|
+
},
|
|
2478
|
+
{
|
|
2479
|
+
name: "inbox-triage",
|
|
2480
|
+
description: "Process captured notes and triage into actionable tasks, tags, and links.",
|
|
2481
|
+
arguments: [
|
|
2482
|
+
{
|
|
2483
|
+
name: "mode",
|
|
2484
|
+
description: "Optional: 'auto' to process automatically with best-guess actions instead of asking",
|
|
2485
|
+
required: false,
|
|
2486
|
+
},
|
|
2487
|
+
],
|
|
2488
|
+
},
|
|
2489
|
+
{
|
|
2490
|
+
name: "monthly-review",
|
|
2491
|
+
description: "Run monthly review with accomplishments, project progress, client health, and next month planning.",
|
|
2492
|
+
arguments: [
|
|
2493
|
+
{
|
|
2494
|
+
name: "month",
|
|
2495
|
+
description: "Month to review in ISO format like '2025-01' (optional, defaults to current month)",
|
|
2496
|
+
required: false,
|
|
2497
|
+
},
|
|
2498
|
+
],
|
|
2499
|
+
},
|
|
2500
|
+
{
|
|
2501
|
+
name: "overdue",
|
|
2502
|
+
description: "Show what's overdue or slipping — tasks past due, off-track projects, stale in-progress items.",
|
|
2503
|
+
arguments: [
|
|
2504
|
+
{
|
|
2505
|
+
name: "filter",
|
|
2506
|
+
description: "Optional: 'critical' or 'urgent' to only show critical items",
|
|
2507
|
+
required: false,
|
|
2508
|
+
},
|
|
2509
|
+
],
|
|
2510
|
+
},
|
|
2511
|
+
{
|
|
2512
|
+
name: "relationship-pulse",
|
|
2513
|
+
description: "Check on neglected relationships and suggest reconnection actions based on interaction history.",
|
|
2514
|
+
arguments: [
|
|
2515
|
+
{
|
|
2516
|
+
name: "type",
|
|
2517
|
+
description: "Optional: relationship type to filter (e.g., 'family', 'friends', 'colleagues')",
|
|
2518
|
+
required: false,
|
|
2519
|
+
},
|
|
2520
|
+
],
|
|
2521
|
+
},
|
|
2522
|
+
{
|
|
2523
|
+
name: "voice-notes",
|
|
2524
|
+
description: "Interactive voice memo exploration — review, analyze, and discuss your recorded thoughts.",
|
|
2525
|
+
arguments: [
|
|
2526
|
+
{
|
|
2527
|
+
name: "topic",
|
|
2528
|
+
description: "Optional: topic or date range to start exploring",
|
|
2529
|
+
required: false,
|
|
2530
|
+
},
|
|
2531
|
+
],
|
|
2532
|
+
},
|
|
2533
|
+
{
|
|
2534
|
+
name: "voice-notes-crystallize",
|
|
2535
|
+
description: "Save a crystallized summary of AI conversation — preserve insights, plans, and ideas from voice note discussions.",
|
|
2536
|
+
arguments: [
|
|
2537
|
+
{
|
|
2538
|
+
name: "title",
|
|
2539
|
+
description: "Optional: title or topic for the crystallization summary",
|
|
2540
|
+
required: false,
|
|
2541
|
+
},
|
|
2542
|
+
],
|
|
2543
|
+
},
|
|
2112
2544
|
];
|
|
2113
2545
|
// Prompt message templates keyed by prompt name
|
|
2114
2546
|
const PROMPT_MESSAGES = {
|
|
@@ -2328,7 +2760,7 @@ Present the cycle review:
|
|
|
2328
2760
|
- **Progress**: Completion %, issues done vs total
|
|
2329
2761
|
- **Incomplete Items**: List all non-done/non-cancelled issues with status and priority
|
|
2330
2762
|
- **Next Cycle**: Show the next upcoming cycle (if any)
|
|
2331
|
-
- **Recommendations**:
|
|
2763
|
+
- **Recommendations**:
|
|
2332
2764
|
- If cycle is ending soon, suggest closing with rollover
|
|
2333
2765
|
- If many items are incomplete, suggest re-prioritizing
|
|
2334
2766
|
- If cycle is already past end date, strongly recommend closing it
|
|
@@ -2340,6 +2772,370 @@ ${!args.action ? "Ask the user if they want to close the cycle, and whether to r
|
|
|
2340
2772
|
},
|
|
2341
2773
|
];
|
|
2342
2774
|
},
|
|
2775
|
+
"initiative-review": (args) => {
|
|
2776
|
+
const year = args.year || new Date().getFullYear().toString();
|
|
2777
|
+
return [
|
|
2778
|
+
{
|
|
2779
|
+
role: "user",
|
|
2780
|
+
content: {
|
|
2781
|
+
type: "text",
|
|
2782
|
+
text: `Review my yearly initiative progress. Use the LifeOS MCP tools:
|
|
2783
|
+
|
|
2784
|
+
1. Call get_initiative_yearly_rollup with year ${year} — this gives all initiatives with aggregated stats
|
|
2785
|
+
2. For any initiative with low progress or stalled status, call get_initiative_with_stats for deeper details
|
|
2786
|
+
|
|
2787
|
+
Present the review:
|
|
2788
|
+
- **Year ${year} Overview**: Total initiatives, active vs completed, average progress
|
|
2789
|
+
- **By Category**: Group initiatives by category (career, health, learning, etc.) and show progress
|
|
2790
|
+
- **Each Initiative**: Title, status, progress %, tasks completed/total, linked projects, habits
|
|
2791
|
+
- **Highlights**: Call out any initiatives at 80%+ progress (near completion)
|
|
2792
|
+
- **Concerns**: Flag initiatives with 0% progress, no linked projects, or "paused" status
|
|
2793
|
+
- **Recommendations**: Suggest next actions — which initiatives to focus on, which need attention
|
|
2794
|
+
|
|
2795
|
+
Be concise but thorough. Use emoji for categories. Suggest linking unlinked projects/tasks if appropriate.`,
|
|
2796
|
+
},
|
|
2797
|
+
},
|
|
2798
|
+
];
|
|
2799
|
+
},
|
|
2800
|
+
"client-health": (args) => {
|
|
2801
|
+
const filterClause = args.filter === "critical"
|
|
2802
|
+
? "\n\nOnly show at-risk and critical clients."
|
|
2803
|
+
: "";
|
|
2804
|
+
return [
|
|
2805
|
+
{
|
|
2806
|
+
role: "user",
|
|
2807
|
+
content: {
|
|
2808
|
+
type: "text",
|
|
2809
|
+
text: `Show health dashboard across all clients. Use the LifeOS MCP tools:
|
|
2810
|
+
|
|
2811
|
+
1. Call get_clients to get all active clients
|
|
2812
|
+
2. For each client, call get_projects_for_client to get project stats
|
|
2813
|
+
3. Call get_tasks to analyze overdue/at-risk tasks per client
|
|
2814
|
+
4. Call get_beeper_threads to check communication recency
|
|
2815
|
+
|
|
2816
|
+
Calculate health score for each client based on:
|
|
2817
|
+
- **Project health**: Are projects on_track, at_risk, or off_track?
|
|
2818
|
+
- **Task completion**: % of tasks done vs total
|
|
2819
|
+
- **Overdue items**: Number of overdue tasks
|
|
2820
|
+
- **Communication**: Days since last message/meeting
|
|
2821
|
+
- **Revenue risk**: Active projects nearing completion without follow-on
|
|
2822
|
+
|
|
2823
|
+
Present as a dashboard:
|
|
2824
|
+
| Client | Health | Projects | Overdue | Last Contact | Action |
|
|
2825
|
+
|--------|--------|----------|---------|--------------|--------|
|
|
2826
|
+
|
|
2827
|
+
Then detail:
|
|
2828
|
+
- **Healthy clients**: All good, maintain relationship
|
|
2829
|
+
- **At-risk clients**: Need attention soon (explain why)
|
|
2830
|
+
- **Critical clients**: Immediate action needed
|
|
2831
|
+
|
|
2832
|
+
For at-risk and critical, provide specific recommended actions.${filterClause}`,
|
|
2833
|
+
},
|
|
2834
|
+
},
|
|
2835
|
+
];
|
|
2836
|
+
},
|
|
2837
|
+
"context-switch": (args) => [
|
|
2838
|
+
{
|
|
2839
|
+
role: "user",
|
|
2840
|
+
content: {
|
|
2841
|
+
type: "text",
|
|
2842
|
+
text: `Quickly load context for "${args.name}". Use the LifeOS MCP tools:
|
|
2843
|
+
|
|
2844
|
+
**If it's a client name:**
|
|
2845
|
+
1. Call get_clients and find the matching client
|
|
2846
|
+
2. Call get_client with the client ID for details
|
|
2847
|
+
3. Call get_projects_for_client to see their projects
|
|
2848
|
+
4. Call get_beeper_threads_for_client for recent communications
|
|
2849
|
+
|
|
2850
|
+
**If it's a project name/key:**
|
|
2851
|
+
1. Call get_project with the project key/name
|
|
2852
|
+
2. Call get_phases for the project phases
|
|
2853
|
+
3. Call get_tasks filtered by the project to see active work
|
|
2854
|
+
4. If project has a client, load client context too
|
|
2855
|
+
|
|
2856
|
+
Present a quick context brief:
|
|
2857
|
+
- **Overview**: What this client/project is about
|
|
2858
|
+
- **Current Status**: Active phase, health, completion %
|
|
2859
|
+
- **Open Items**: Tasks in progress or todo (top 5)
|
|
2860
|
+
- **Recent Activity**: Last meeting, last message (if available)
|
|
2861
|
+
- **Blockers**: Anything stuck or overdue
|
|
2862
|
+
- **Quick Actions**: Suggested next steps
|
|
2863
|
+
|
|
2864
|
+
Keep it scannable — this is for fast context loading, not deep analysis.`,
|
|
2865
|
+
},
|
|
2866
|
+
},
|
|
2867
|
+
],
|
|
2868
|
+
"end-of-day": (args) => {
|
|
2869
|
+
const dateClause = args.date
|
|
2870
|
+
? `Use date: ${args.date}`
|
|
2871
|
+
: "Use today's date.";
|
|
2872
|
+
return [
|
|
2873
|
+
{
|
|
2874
|
+
role: "user",
|
|
2875
|
+
content: {
|
|
2876
|
+
type: "text",
|
|
2877
|
+
text: `Run my end-of-day wrap-up. Use the LifeOS MCP tools:
|
|
2878
|
+
|
|
2879
|
+
1. Call get_daily_agenda for today's agenda
|
|
2880
|
+
2. Call get_tasks with status "done" to see what was completed today
|
|
2881
|
+
3. Call get_tasks with status "in_progress" to see what's still in flight
|
|
2882
|
+
4. Call get_todays_tasks to see what was planned vs actual
|
|
2883
|
+
5. Call get_recent_notes with limit 5 for any thoughts captured today
|
|
2884
|
+
|
|
2885
|
+
${dateClause}
|
|
2886
|
+
|
|
2887
|
+
Present an end-of-day summary:
|
|
2888
|
+
- **Completed today**: What got done (celebrate wins!)
|
|
2889
|
+
- **Still in progress**: What's carrying over
|
|
2890
|
+
- **Moved to tomorrow**: Tasks that got bumped
|
|
2891
|
+
- **Unplanned work**: Things that came up unexpectedly
|
|
2892
|
+
- **Notes captured**: Any thoughts/ideas from today
|
|
2893
|
+
|
|
2894
|
+
Then prompt for reflection:
|
|
2895
|
+
- What went well today?
|
|
2896
|
+
- What was challenging?
|
|
2897
|
+
- What's the #1 priority for tomorrow morning?
|
|
2898
|
+
|
|
2899
|
+
Offer to:
|
|
2900
|
+
- Update any task statuses
|
|
2901
|
+
- Create tasks for tomorrow based on reflection
|
|
2902
|
+
- Capture any final thoughts as a note`,
|
|
2903
|
+
},
|
|
2904
|
+
},
|
|
2905
|
+
];
|
|
2906
|
+
},
|
|
2907
|
+
"follow-ups": (args) => {
|
|
2908
|
+
const nameClause = args.name
|
|
2909
|
+
? `\n\nFocus specifically on: "${args.name}"`
|
|
2910
|
+
: "";
|
|
2911
|
+
return [
|
|
2912
|
+
{
|
|
2913
|
+
role: "user",
|
|
2914
|
+
content: {
|
|
2915
|
+
type: "text",
|
|
2916
|
+
text: `Track follow-ups needed with people and clients. Use the LifeOS MCP tools:
|
|
2917
|
+
|
|
2918
|
+
1. Call get_people to get all contacts
|
|
2919
|
+
2. Call get_clients to get all clients
|
|
2920
|
+
3. Call get_beeper_threads to see recent message activity
|
|
2921
|
+
4. Call get_granola_meetings to see recent meetings
|
|
2922
|
+
|
|
2923
|
+
Analyze and identify:
|
|
2924
|
+
- **People needing follow-up**: Contacts with no interaction in 7+ days who have open items or recent meetings
|
|
2925
|
+
- **Client follow-ups**: Clients with stale threads or meetings that had action items
|
|
2926
|
+
- **Promised callbacks**: Any meetings/messages where you said "I'll get back to you"
|
|
2927
|
+
|
|
2928
|
+
Present as:
|
|
2929
|
+
- **Urgent** (14+ days): People/clients you really need to reach out to
|
|
2930
|
+
- **Soon** (7-14 days): Worth a quick check-in
|
|
2931
|
+
- **Suggested actions**: Specific follow-up actions for each${nameClause}`,
|
|
2932
|
+
},
|
|
2933
|
+
},
|
|
2934
|
+
];
|
|
2935
|
+
},
|
|
2936
|
+
"inbox-triage": (args) => {
|
|
2937
|
+
const autoMode = args.mode === "auto"
|
|
2938
|
+
? "\n\nProcess automatically with best-guess actions instead of asking for confirmation."
|
|
2939
|
+
: "\n\nAsk for confirmation before making changes.";
|
|
2940
|
+
return [
|
|
2941
|
+
{
|
|
2942
|
+
role: "user",
|
|
2943
|
+
content: {
|
|
2944
|
+
type: "text",
|
|
2945
|
+
text: `Process captured notes and triage into actionable items. Use the LifeOS MCP tools:
|
|
2946
|
+
|
|
2947
|
+
1. Call get_recent_notes with limit 20 to get recent unprocessed captures
|
|
2948
|
+
2. Call get_projects to know available projects for assignment
|
|
2949
|
+
3. Call get_people to know contacts for linking
|
|
2950
|
+
|
|
2951
|
+
For each note, analyze and suggest:
|
|
2952
|
+
- **Convert to task?** If it contains an action item, offer to create an issue
|
|
2953
|
+
- **Link to person?** If it mentions someone, offer to link the note
|
|
2954
|
+
- **Link to project?** If it relates to a project, suggest assignment
|
|
2955
|
+
- **Add tags?** Suggest relevant tags based on content
|
|
2956
|
+
|
|
2957
|
+
Present as an interactive triage list:
|
|
2958
|
+
- Show each note with its content summary
|
|
2959
|
+
- Provide recommended action (task, tag, link, or archive)
|
|
2960
|
+
|
|
2961
|
+
After triage, use the appropriate tools:
|
|
2962
|
+
- Call create_issue to convert notes to tasks
|
|
2963
|
+
- Call add_tags_to_note to categorize
|
|
2964
|
+
- Call link_memo_to_person to connect to people${autoMode}`,
|
|
2965
|
+
},
|
|
2966
|
+
},
|
|
2967
|
+
];
|
|
2968
|
+
},
|
|
2969
|
+
"monthly-review": (args) => {
|
|
2970
|
+
const monthClause = args.month
|
|
2971
|
+
? `Use month start date: ${args.month}-01`
|
|
2972
|
+
: "Use the current month.";
|
|
2973
|
+
return [
|
|
2974
|
+
{
|
|
2975
|
+
role: "user",
|
|
2976
|
+
content: {
|
|
2977
|
+
type: "text",
|
|
2978
|
+
text: `Run my monthly review. Use the LifeOS MCP tools:
|
|
2979
|
+
|
|
2980
|
+
1. Call get_monthly_agenda for this month's overview and AI summary
|
|
2981
|
+
2. Call get_cycles to see all sprints this month and their completion rates
|
|
2982
|
+
3. Call get_tasks with status "done" to see everything completed this month
|
|
2983
|
+
4. Call get_projects to see project progress and health
|
|
2984
|
+
5. Call get_clients to review client status
|
|
2985
|
+
6. Call get_recent_notes with limit 20 to review captured thoughts
|
|
2986
|
+
|
|
2987
|
+
${monthClause}
|
|
2988
|
+
|
|
2989
|
+
Present a monthly review:
|
|
2990
|
+
- **Accomplishments**: Major wins and completed work this month
|
|
2991
|
+
- **Projects Progress**: Status of each active project
|
|
2992
|
+
- **Sprint Performance**: Average completion rate across cycles
|
|
2993
|
+
- **Client Health**: How each client relationship is doing
|
|
2994
|
+
- **Themes**: Patterns from notes and completed work
|
|
2995
|
+
- **Carried Forward**: What's rolling into next month
|
|
2996
|
+
- **Reflections**: What worked, what didn't
|
|
2997
|
+
- **Next Month Focus**: Top 3 priorities for the coming month`,
|
|
2998
|
+
},
|
|
2999
|
+
},
|
|
3000
|
+
];
|
|
3001
|
+
},
|
|
3002
|
+
overdue: (args) => {
|
|
3003
|
+
const filterClause = args.filter === "critical" || args.filter === "urgent"
|
|
3004
|
+
? "\n\nOnly show critical items (7+ days overdue)."
|
|
3005
|
+
: "";
|
|
3006
|
+
return [
|
|
3007
|
+
{
|
|
3008
|
+
role: "user",
|
|
3009
|
+
content: {
|
|
3010
|
+
type: "text",
|
|
3011
|
+
text: `Show what's overdue or slipping. Use the LifeOS MCP tools:
|
|
3012
|
+
|
|
3013
|
+
1. Call get_tasks to get all tasks
|
|
3014
|
+
2. Call get_projects to get all projects with health status
|
|
3015
|
+
3. Call get_current_cycle to see sprint status
|
|
3016
|
+
|
|
3017
|
+
Analyze and identify:
|
|
3018
|
+
- **Overdue tasks**: Tasks past their due date (compare dueDate to today)
|
|
3019
|
+
- **Off-track projects**: Projects with health "off_track" or "at_risk"
|
|
3020
|
+
- **Stale in-progress**: Tasks marked "in_progress" for more than 7 days
|
|
3021
|
+
- **Sprint slippage**: If cycle completion % is behind expected pace
|
|
3022
|
+
|
|
3023
|
+
Present as:
|
|
3024
|
+
- **Critical** (7+ days overdue): Needs immediate attention
|
|
3025
|
+
- **Overdue** (1-7 days): Should address soon
|
|
3026
|
+
- **At Risk**: In-progress items that might slip
|
|
3027
|
+
- **Projects Off Track**: Projects needing intervention
|
|
3028
|
+
|
|
3029
|
+
For each item, suggest: reschedule, delegate, or drop.${filterClause}`,
|
|
3030
|
+
},
|
|
3031
|
+
},
|
|
3032
|
+
];
|
|
3033
|
+
},
|
|
3034
|
+
"relationship-pulse": (args) => {
|
|
3035
|
+
const typeClause = args.type
|
|
3036
|
+
? `\n\nFilter to relationship type: "${args.type}"`
|
|
3037
|
+
: "";
|
|
3038
|
+
return [
|
|
3039
|
+
{
|
|
3040
|
+
role: "user",
|
|
3041
|
+
content: {
|
|
3042
|
+
type: "text",
|
|
3043
|
+
text: `Check on neglected relationships. Use the LifeOS MCP tools:
|
|
3044
|
+
|
|
3045
|
+
1. Call get_people to get all contacts
|
|
3046
|
+
2. Call get_beeper_threads to check message activity
|
|
3047
|
+
3. Call get_granola_meetings to see meeting history
|
|
3048
|
+
|
|
3049
|
+
Analyze each contact for:
|
|
3050
|
+
- **Last interaction**: When did you last talk/meet?
|
|
3051
|
+
- **Interaction frequency**: How often do you typically connect?
|
|
3052
|
+
- **Relationship type**: Family, friend, colleague, mentor, etc.
|
|
3053
|
+
|
|
3054
|
+
Identify neglected relationships:
|
|
3055
|
+
- **Family/Close friends**: No contact in 14+ days
|
|
3056
|
+
- **Friends**: No contact in 30+ days
|
|
3057
|
+
- **Colleagues/Mentors**: No contact in 60+ days
|
|
3058
|
+
- **Acquaintances**: No contact in 90+ days
|
|
3059
|
+
|
|
3060
|
+
Present as:
|
|
3061
|
+
- **Reach out soon**: People you should contact (prioritized by relationship closeness)
|
|
3062
|
+
- **Consider reconnecting**: People you might want to re-engage
|
|
3063
|
+
- **Suggested touchpoints**: Quick ways to reconnect (reply to old thread, schedule catch-up, etc.)${typeClause}`,
|
|
3064
|
+
},
|
|
3065
|
+
},
|
|
3066
|
+
];
|
|
3067
|
+
},
|
|
3068
|
+
"voice-notes": (args) => {
|
|
3069
|
+
const topicClause = args.topic
|
|
3070
|
+
? `\n\nStart by exploring: "${args.topic}"`
|
|
3071
|
+
: "\n\nShow recent activity and ask what I want to explore.";
|
|
3072
|
+
return [
|
|
3073
|
+
{
|
|
3074
|
+
role: "user",
|
|
3075
|
+
content: {
|
|
3076
|
+
type: "text",
|
|
3077
|
+
text: `Explore and work with my voice notes interactively. Use the LifeOS MCP tools.
|
|
3078
|
+
|
|
3079
|
+
This is an interactive session to help me think through my voice notes, formulate plans, refine ideas, and review journal entries.
|
|
3080
|
+
|
|
3081
|
+
**Getting Started:**
|
|
3082
|
+
1. Call get_voice_memo_labels to see all topics/labels
|
|
3083
|
+
2. Call get_recent_notes with limit 10 to see recent entries
|
|
3084
|
+
|
|
3085
|
+
**Based on what I want to explore:**
|
|
3086
|
+
- To review recent notes: Call get_recent_notes or get_voice_memos_by_date
|
|
3087
|
+
- To explore a topic: Call get_voice_memos_by_labels or search_notes
|
|
3088
|
+
- To review a time period: Call get_voice_memos_by_date with date range
|
|
3089
|
+
- For deeper analysis: Call get_voice_memo for full details
|
|
3090
|
+
|
|
3091
|
+
**During the conversation:**
|
|
3092
|
+
- Help me think through my notes
|
|
3093
|
+
- Identify patterns and connections across memos
|
|
3094
|
+
- Surface action items I may have forgotten
|
|
3095
|
+
- Help formulate new plans or refine existing ideas
|
|
3096
|
+
- Offer reflections on journal entries
|
|
3097
|
+
|
|
3098
|
+
**At the end:** Offer to crystallize insights using the voice-notes-crystallize prompt.${topicClause}`,
|
|
3099
|
+
},
|
|
3100
|
+
},
|
|
3101
|
+
];
|
|
3102
|
+
},
|
|
3103
|
+
"voice-notes-crystallize": (args) => {
|
|
3104
|
+
const titleClause = args.title
|
|
3105
|
+
? `Use title: "${args.title}"`
|
|
3106
|
+
: "Generate a title based on the conversation.";
|
|
3107
|
+
return [
|
|
3108
|
+
{
|
|
3109
|
+
role: "user",
|
|
3110
|
+
content: {
|
|
3111
|
+
type: "text",
|
|
3112
|
+
text: `Save a crystallized summary of our conversation about voice notes. Use the LifeOS MCP tools.
|
|
3113
|
+
|
|
3114
|
+
${titleClause}
|
|
3115
|
+
|
|
3116
|
+
**Analyze the conversation and extract:**
|
|
3117
|
+
|
|
3118
|
+
1. **Title**: A descriptive title for this crystallization
|
|
3119
|
+
2. **Summary**: The main insights, conclusions, or outcomes (2-4 paragraphs)
|
|
3120
|
+
3. **Key Insights**: 3-7 bullet points of the most important realizations
|
|
3121
|
+
4. **Action Items**: Any tasks or actions that emerged
|
|
3122
|
+
5. **Ideas**: New ideas, plans, or directions formulated
|
|
3123
|
+
6. **Tags**: 3-5 relevant tags for categorization
|
|
3124
|
+
|
|
3125
|
+
**Determine the summary type:**
|
|
3126
|
+
- reflection — Processing past experiences or feelings
|
|
3127
|
+
- planning — Creating plans or strategies
|
|
3128
|
+
- brainstorm — Generating new ideas
|
|
3129
|
+
- journal_review — Reviewing journal/diary entries
|
|
3130
|
+
- idea_refinement — Developing and refining existing ideas
|
|
3131
|
+
|
|
3132
|
+
**Save using:** Call create_ai_convo_summary with the extracted data.
|
|
3133
|
+
|
|
3134
|
+
**After saving:** Confirm success and show the summary ID.`,
|
|
3135
|
+
},
|
|
3136
|
+
},
|
|
3137
|
+
];
|
|
3138
|
+
},
|
|
2343
3139
|
};
|
|
2344
3140
|
// Configuration: CLI flags take precedence over env vars
|
|
2345
3141
|
// NOTE: HTTP routes are served from .convex.site, NOT .convex.cloud
|
package/package.json
CHANGED