@starascendin/lifeos-mcp 0.7.56 → 0.7.58
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 +13 -0
- package/dist/build-info.d.ts +2 -2
- package/dist/build-info.js +2 -2
- package/dist/index.js +250 -43
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -82,6 +82,7 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
|
|
|
82
82
|
- **get_projects** - List all projects with stats
|
|
83
83
|
- **get_tasks** - Get tasks with filters (project, status, priority)
|
|
84
84
|
- **get_todays_tasks** - Get today's tasks and top priorities
|
|
85
|
+
- **get_overdue_tasks** - Get open tasks that are already overdue
|
|
85
86
|
- **create_issue** - Create a new task/issue
|
|
86
87
|
- **update_issue** - Update an existing task, including estimate/story points
|
|
87
88
|
- **mark_issue_complete** - Mark a task as done
|
|
@@ -102,6 +103,18 @@ Add to your `.mcp.json` (project root or `~/.claude/mcp.json`):
|
|
|
102
103
|
- **get_daily_agenda** - Today's tasks, events, priorities
|
|
103
104
|
- **get_weekly_agenda** - Week's tasks and events
|
|
104
105
|
|
|
106
|
+
### Habits
|
|
107
|
+
- **get_habits** - List active habits with streaks and completion stats
|
|
108
|
+
- **get_habits_for_date** - Get scheduled habits and their state for one day
|
|
109
|
+
- **get_habit** - Get one habit with extended stats
|
|
110
|
+
- **create_habit** - Create a new habit
|
|
111
|
+
- **update_habit** - Update a habit's details or active state
|
|
112
|
+
- **archive_habit** - Archive a habit while preserving history
|
|
113
|
+
- **check_in_habit** - Mark a habit complete, incomplete, or skipped for a date
|
|
114
|
+
- **get_habit_check_ins** - Get one habit's check-in history
|
|
115
|
+
- **get_habit_categories** - List habit categories
|
|
116
|
+
- **create_habit_category** - Create a habit category
|
|
117
|
+
|
|
105
118
|
### Notes
|
|
106
119
|
- **search_notes** - Search voice memos/notes
|
|
107
120
|
- **get_recent_notes** - Get recent notes
|
package/dist/build-info.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.7.
|
|
2
|
-
export declare const BUILD_TIME = "2026-
|
|
1
|
+
export declare const VERSION = "0.7.58";
|
|
2
|
+
export declare const BUILD_TIME = "2026-04-01T15:25:50.379Z";
|
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.7.
|
|
3
|
-
export const BUILD_TIME = "2026-
|
|
2
|
+
export const VERSION = "0.7.58";
|
|
3
|
+
export const BUILD_TIME = "2026-04-01T15:25:50.379Z";
|
package/dist/index.js
CHANGED
|
@@ -236,6 +236,23 @@ const TOOLS = [
|
|
|
236
236
|
},
|
|
237
237
|
},
|
|
238
238
|
},
|
|
239
|
+
{
|
|
240
|
+
name: "get_overdue_tasks",
|
|
241
|
+
description: "Get overdue tasks that are past due and still open. Best for surfacing slipped work explicitly.",
|
|
242
|
+
inputSchema: {
|
|
243
|
+
type: "object",
|
|
244
|
+
properties: {
|
|
245
|
+
userId: {
|
|
246
|
+
type: "string",
|
|
247
|
+
description: "Override the default user ID (optional)",
|
|
248
|
+
},
|
|
249
|
+
date: {
|
|
250
|
+
type: "string",
|
|
251
|
+
description: "Specific date in ISO format used as the overdue cutoff (optional, default: today)",
|
|
252
|
+
},
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
},
|
|
239
256
|
{
|
|
240
257
|
name: "create_issue",
|
|
241
258
|
description: "Create a new task/issue. Assign to a project (by key like 'KORT') and optionally a phase (by name like 'Building Foundation' or by ID). Set priority, due date, cycle, and initiative.",
|
|
@@ -378,6 +395,11 @@ const TOOLS = [
|
|
|
378
395
|
type: "number",
|
|
379
396
|
description: "Story points / sprint points (optional)",
|
|
380
397
|
},
|
|
398
|
+
labelIds: {
|
|
399
|
+
type: "array",
|
|
400
|
+
items: { type: "string" },
|
|
401
|
+
description: "Array of label IDs to set on the issue (replaces existing labels) (optional)",
|
|
402
|
+
},
|
|
381
403
|
},
|
|
382
404
|
required: ["issueIdOrIdentifier"],
|
|
383
405
|
},
|
|
@@ -400,6 +422,106 @@ const TOOLS = [
|
|
|
400
422
|
required: ["issueIdOrIdentifier"],
|
|
401
423
|
},
|
|
402
424
|
},
|
|
425
|
+
// Label Management Tools
|
|
426
|
+
{
|
|
427
|
+
name: "get_labels",
|
|
428
|
+
description: "Get all labels for the user. Can filter by project or get workspace-wide labels.",
|
|
429
|
+
inputSchema: {
|
|
430
|
+
type: "object",
|
|
431
|
+
properties: {
|
|
432
|
+
userId: {
|
|
433
|
+
type: "string",
|
|
434
|
+
description: "Override the default user ID (optional)",
|
|
435
|
+
},
|
|
436
|
+
projectId: {
|
|
437
|
+
type: "string",
|
|
438
|
+
description: "Filter by project ID (optional)",
|
|
439
|
+
},
|
|
440
|
+
includeWorkspaceLabels: {
|
|
441
|
+
type: "boolean",
|
|
442
|
+
description: "Include workspace-wide labels when filtering by project (default: false)",
|
|
443
|
+
},
|
|
444
|
+
},
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
name: "create_label",
|
|
449
|
+
description: "Create a new label with a name and color.",
|
|
450
|
+
inputSchema: {
|
|
451
|
+
type: "object",
|
|
452
|
+
properties: {
|
|
453
|
+
userId: {
|
|
454
|
+
type: "string",
|
|
455
|
+
description: "Override the default user ID (optional)",
|
|
456
|
+
},
|
|
457
|
+
name: {
|
|
458
|
+
type: "string",
|
|
459
|
+
description: "Label name (required)",
|
|
460
|
+
},
|
|
461
|
+
color: {
|
|
462
|
+
type: "string",
|
|
463
|
+
description: "Hex color code, e.g., #ef4444 (required)",
|
|
464
|
+
},
|
|
465
|
+
description: {
|
|
466
|
+
type: "string",
|
|
467
|
+
description: "Label description (optional)",
|
|
468
|
+
},
|
|
469
|
+
projectId: {
|
|
470
|
+
type: "string",
|
|
471
|
+
description: "Project ID to scope label to (optional - omit for workspace-wide)",
|
|
472
|
+
},
|
|
473
|
+
},
|
|
474
|
+
required: ["name", "color"],
|
|
475
|
+
},
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
name: "update_label",
|
|
479
|
+
description: "Update an existing label's name, color, or description.",
|
|
480
|
+
inputSchema: {
|
|
481
|
+
type: "object",
|
|
482
|
+
properties: {
|
|
483
|
+
userId: {
|
|
484
|
+
type: "string",
|
|
485
|
+
description: "Override the default user ID (optional)",
|
|
486
|
+
},
|
|
487
|
+
labelId: {
|
|
488
|
+
type: "string",
|
|
489
|
+
description: "Label ID (required)",
|
|
490
|
+
},
|
|
491
|
+
name: {
|
|
492
|
+
type: "string",
|
|
493
|
+
description: "Updated name (optional)",
|
|
494
|
+
},
|
|
495
|
+
color: {
|
|
496
|
+
type: "string",
|
|
497
|
+
description: "Updated hex color (optional)",
|
|
498
|
+
},
|
|
499
|
+
description: {
|
|
500
|
+
type: "string",
|
|
501
|
+
description: "Updated description (optional)",
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
required: ["labelId"],
|
|
505
|
+
},
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
name: "delete_label",
|
|
509
|
+
description: "Delete a label and remove it from all issues.",
|
|
510
|
+
inputSchema: {
|
|
511
|
+
type: "object",
|
|
512
|
+
properties: {
|
|
513
|
+
userId: {
|
|
514
|
+
type: "string",
|
|
515
|
+
description: "Override the default user ID (optional)",
|
|
516
|
+
},
|
|
517
|
+
labelId: {
|
|
518
|
+
type: "string",
|
|
519
|
+
description: "Label ID to delete (required)",
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
required: ["labelId"],
|
|
523
|
+
},
|
|
524
|
+
},
|
|
403
525
|
// Cycle/Sprint Tools
|
|
404
526
|
{
|
|
405
527
|
name: "get_current_cycle",
|
|
@@ -4204,9 +4326,18 @@ const TOOLS = [
|
|
|
4204
4326
|
environment: { type: "string", description: "Updated environment" },
|
|
4205
4327
|
interactions: { type: "string", description: "Updated interactions" },
|
|
4206
4328
|
objects: { type: "string", description: "Updated objects" },
|
|
4207
|
-
usersInvolved: {
|
|
4208
|
-
|
|
4209
|
-
|
|
4329
|
+
usersInvolved: {
|
|
4330
|
+
type: "string",
|
|
4331
|
+
description: "Updated users involved",
|
|
4332
|
+
},
|
|
4333
|
+
energyRating: {
|
|
4334
|
+
type: "number",
|
|
4335
|
+
description: "Updated energy rating 1-5",
|
|
4336
|
+
},
|
|
4337
|
+
engagementRating: {
|
|
4338
|
+
type: "number",
|
|
4339
|
+
description: "Updated engagement rating 1-5",
|
|
4340
|
+
},
|
|
4210
4341
|
flowRating: { type: "number", description: "Updated flow rating 1-5" },
|
|
4211
4342
|
isWork: { type: "boolean", description: "Updated work flag" },
|
|
4212
4343
|
isPlay: { type: "boolean", description: "Updated play flag" },
|
|
@@ -4366,10 +4497,22 @@ const TOOLS = [
|
|
|
4366
4497
|
inputSchema: {
|
|
4367
4498
|
type: "object",
|
|
4368
4499
|
properties: {
|
|
4369
|
-
work: {
|
|
4370
|
-
|
|
4371
|
-
|
|
4372
|
-
|
|
4500
|
+
work: {
|
|
4501
|
+
type: "number",
|
|
4502
|
+
description: "Work satisfaction 1-10 (required)",
|
|
4503
|
+
},
|
|
4504
|
+
play: {
|
|
4505
|
+
type: "number",
|
|
4506
|
+
description: "Play satisfaction 1-10 (required)",
|
|
4507
|
+
},
|
|
4508
|
+
love: {
|
|
4509
|
+
type: "number",
|
|
4510
|
+
description: "Love satisfaction 1-10 (required)",
|
|
4511
|
+
},
|
|
4512
|
+
health: {
|
|
4513
|
+
type: "number",
|
|
4514
|
+
description: "Health satisfaction 1-10 (required)",
|
|
4515
|
+
},
|
|
4373
4516
|
notes: { type: "string", description: "Optional reflection notes" },
|
|
4374
4517
|
},
|
|
4375
4518
|
required: ["work", "play", "love", "health"],
|
|
@@ -4397,13 +4540,19 @@ const TOOLS = [
|
|
|
4397
4540
|
type: "object",
|
|
4398
4541
|
properties: {
|
|
4399
4542
|
title: { type: "string", description: "Experiment title (required)" },
|
|
4400
|
-
hypothesis: {
|
|
4543
|
+
hypothesis: {
|
|
4544
|
+
type: "string",
|
|
4545
|
+
description: "What you want to test/learn (required)",
|
|
4546
|
+
},
|
|
4401
4547
|
type: {
|
|
4402
4548
|
type: "string",
|
|
4403
4549
|
enum: ["conversation", "experience", "side_project"],
|
|
4404
4550
|
description: "Experiment type (required)",
|
|
4405
4551
|
},
|
|
4406
|
-
odysseyPlanId: {
|
|
4552
|
+
odysseyPlanId: {
|
|
4553
|
+
type: "string",
|
|
4554
|
+
description: "Link to an Odyssey Plan",
|
|
4555
|
+
},
|
|
4407
4556
|
status: {
|
|
4408
4557
|
type: "string",
|
|
4409
4558
|
enum: ["planned", "in_progress", "completed"],
|
|
@@ -4426,8 +4575,16 @@ const TOOLS = [
|
|
|
4426
4575
|
prototypeId: { type: "string", description: "Prototype ID (required)" },
|
|
4427
4576
|
title: { type: "string", description: "Updated title" },
|
|
4428
4577
|
hypothesis: { type: "string", description: "Updated hypothesis" },
|
|
4429
|
-
type: {
|
|
4430
|
-
|
|
4578
|
+
type: {
|
|
4579
|
+
type: "string",
|
|
4580
|
+
enum: ["conversation", "experience", "side_project"],
|
|
4581
|
+
description: "Updated type",
|
|
4582
|
+
},
|
|
4583
|
+
status: {
|
|
4584
|
+
type: "string",
|
|
4585
|
+
enum: ["planned", "in_progress", "completed"],
|
|
4586
|
+
description: "Updated status",
|
|
4587
|
+
},
|
|
4431
4588
|
odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
|
|
4432
4589
|
whatYouDid: { type: "string", description: "What you did" },
|
|
4433
4590
|
whatYouLearned: { type: "string", description: "What you learned" },
|
|
@@ -4444,7 +4601,10 @@ const TOOLS = [
|
|
|
4444
4601
|
inputSchema: {
|
|
4445
4602
|
type: "object",
|
|
4446
4603
|
properties: {
|
|
4447
|
-
prototypeId: {
|
|
4604
|
+
prototypeId: {
|
|
4605
|
+
type: "string",
|
|
4606
|
+
description: "Prototype ID to delete (required)",
|
|
4607
|
+
},
|
|
4448
4608
|
},
|
|
4449
4609
|
required: ["prototypeId"],
|
|
4450
4610
|
},
|
|
@@ -4464,7 +4624,10 @@ const TOOLS = [
|
|
|
4464
4624
|
inputSchema: {
|
|
4465
4625
|
type: "object",
|
|
4466
4626
|
properties: {
|
|
4467
|
-
personName: {
|
|
4627
|
+
personName: {
|
|
4628
|
+
type: "string",
|
|
4629
|
+
description: "Person interviewed (required)",
|
|
4630
|
+
},
|
|
4468
4631
|
role: { type: "string", description: "Their role/title (required)" },
|
|
4469
4632
|
company: { type: "string", description: "Their company" },
|
|
4470
4633
|
odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
|
|
@@ -4479,9 +4642,18 @@ const TOOLS = [
|
|
|
4479
4642
|
description: "Key takeaways (required)",
|
|
4480
4643
|
},
|
|
4481
4644
|
followUp: { type: "string", description: "Follow-up actions" },
|
|
4482
|
-
interviewDate: {
|
|
4645
|
+
interviewDate: {
|
|
4646
|
+
type: "string",
|
|
4647
|
+
description: "Interview date ISO string (required)",
|
|
4648
|
+
},
|
|
4483
4649
|
},
|
|
4484
|
-
required: [
|
|
4650
|
+
required: [
|
|
4651
|
+
"personName",
|
|
4652
|
+
"role",
|
|
4653
|
+
"questions",
|
|
4654
|
+
"keyTakeaways",
|
|
4655
|
+
"interviewDate",
|
|
4656
|
+
],
|
|
4485
4657
|
},
|
|
4486
4658
|
},
|
|
4487
4659
|
{
|
|
@@ -4495,10 +4667,21 @@ const TOOLS = [
|
|
|
4495
4667
|
role: { type: "string", description: "Updated role" },
|
|
4496
4668
|
company: { type: "string", description: "Updated company" },
|
|
4497
4669
|
odysseyPlanId: { type: "string", description: "Link to Odyssey Plan" },
|
|
4498
|
-
questions: {
|
|
4499
|
-
|
|
4670
|
+
questions: {
|
|
4671
|
+
type: "array",
|
|
4672
|
+
items: { type: "string" },
|
|
4673
|
+
description: "Updated questions",
|
|
4674
|
+
},
|
|
4675
|
+
keyTakeaways: {
|
|
4676
|
+
type: "array",
|
|
4677
|
+
items: { type: "string" },
|
|
4678
|
+
description: "Updated takeaways",
|
|
4679
|
+
},
|
|
4500
4680
|
followUp: { type: "string", description: "Updated follow-up" },
|
|
4501
|
-
interviewDate: {
|
|
4681
|
+
interviewDate: {
|
|
4682
|
+
type: "string",
|
|
4683
|
+
description: "Updated date ISO string",
|
|
4684
|
+
},
|
|
4502
4685
|
},
|
|
4503
4686
|
required: ["interviewId"],
|
|
4504
4687
|
},
|
|
@@ -4509,7 +4692,10 @@ const TOOLS = [
|
|
|
4509
4692
|
inputSchema: {
|
|
4510
4693
|
type: "object",
|
|
4511
4694
|
properties: {
|
|
4512
|
-
interviewId: {
|
|
4695
|
+
interviewId: {
|
|
4696
|
+
type: "string",
|
|
4697
|
+
description: "Interview ID to delete (required)",
|
|
4698
|
+
},
|
|
4513
4699
|
},
|
|
4514
4700
|
required: ["interviewId"],
|
|
4515
4701
|
},
|
|
@@ -4529,14 +4715,23 @@ const TOOLS = [
|
|
|
4529
4715
|
inputSchema: {
|
|
4530
4716
|
type: "object",
|
|
4531
4717
|
properties: {
|
|
4532
|
-
belief: {
|
|
4533
|
-
|
|
4718
|
+
belief: {
|
|
4719
|
+
type: "string",
|
|
4720
|
+
description: "The dysfunctional belief (required)",
|
|
4721
|
+
},
|
|
4722
|
+
reframe: {
|
|
4723
|
+
type: "string",
|
|
4724
|
+
description: "The reframed, healthier perspective (required)",
|
|
4725
|
+
},
|
|
4534
4726
|
category: {
|
|
4535
4727
|
type: "string",
|
|
4536
4728
|
enum: ["career", "identity", "relationship", "capability"],
|
|
4537
4729
|
description: "Belief category",
|
|
4538
4730
|
},
|
|
4539
|
-
isResolved: {
|
|
4731
|
+
isResolved: {
|
|
4732
|
+
type: "boolean",
|
|
4733
|
+
description: "Whether this belief has been resolved",
|
|
4734
|
+
},
|
|
4540
4735
|
},
|
|
4541
4736
|
required: ["belief", "reframe"],
|
|
4542
4737
|
},
|
|
@@ -4547,7 +4742,10 @@ const TOOLS = [
|
|
|
4547
4742
|
inputSchema: {
|
|
4548
4743
|
type: "object",
|
|
4549
4744
|
properties: {
|
|
4550
|
-
beliefId: {
|
|
4745
|
+
beliefId: {
|
|
4746
|
+
type: "string",
|
|
4747
|
+
description: "Belief reframe ID (required)",
|
|
4748
|
+
},
|
|
4551
4749
|
belief: { type: "string", description: "Updated belief" },
|
|
4552
4750
|
reframe: { type: "string", description: "Updated reframe" },
|
|
4553
4751
|
category: {
|
|
@@ -4581,14 +4779,23 @@ const TOOLS = [
|
|
|
4581
4779
|
inputSchema: {
|
|
4582
4780
|
type: "object",
|
|
4583
4781
|
properties: {
|
|
4584
|
-
event: {
|
|
4782
|
+
event: {
|
|
4783
|
+
type: "string",
|
|
4784
|
+
description: "Brief description of the failure event (required)",
|
|
4785
|
+
},
|
|
4585
4786
|
category: {
|
|
4586
4787
|
type: "string",
|
|
4587
4788
|
enum: ["screw_up", "weakness", "growth_opportunity"],
|
|
4588
4789
|
description: "Failure category (required)",
|
|
4589
4790
|
},
|
|
4590
|
-
whatHappened: {
|
|
4591
|
-
|
|
4791
|
+
whatHappened: {
|
|
4792
|
+
type: "string",
|
|
4793
|
+
description: "Detailed account of what happened (required)",
|
|
4794
|
+
},
|
|
4795
|
+
insight: {
|
|
4796
|
+
type: "string",
|
|
4797
|
+
description: "Insight or lesson learned (required)",
|
|
4798
|
+
},
|
|
4592
4799
|
actionTaken: { type: "string", description: "Action taken or planned" },
|
|
4593
4800
|
},
|
|
4594
4801
|
required: ["event", "category", "whatHappened", "insight"],
|
|
@@ -4600,7 +4807,10 @@ const TOOLS = [
|
|
|
4600
4807
|
inputSchema: {
|
|
4601
4808
|
type: "object",
|
|
4602
4809
|
properties: {
|
|
4603
|
-
failureId: {
|
|
4810
|
+
failureId: {
|
|
4811
|
+
type: "string",
|
|
4812
|
+
description: "Failure reframe ID (required)",
|
|
4813
|
+
},
|
|
4604
4814
|
event: { type: "string", description: "Updated event" },
|
|
4605
4815
|
category: {
|
|
4606
4816
|
type: "string",
|
|
@@ -4955,13 +5165,15 @@ const PROMPT_MESSAGES = {
|
|
|
4955
5165
|
|
|
4956
5166
|
1. Call get_daily_agenda for today's agenda (tasks due today, calendar events, top priorities)
|
|
4957
5167
|
2. Call get_todays_tasks for today's task list
|
|
4958
|
-
3. Call
|
|
5168
|
+
3. Call get_overdue_tasks to surface anything already slipping
|
|
5169
|
+
4. Call get_current_cycle for current sprint progress and stats
|
|
4959
5170
|
|
|
4960
5171
|
${dateClause}
|
|
4961
5172
|
|
|
4962
5173
|
Summarize in a concise standup format:
|
|
4963
5174
|
- **Today's Focus**: Top 3 things to focus on
|
|
4964
5175
|
- **Tasks Due**: List tasks due today with priority
|
|
5176
|
+
- **Overdue**: Anything already late that needs immediate triage
|
|
4965
5177
|
- **Sprint Progress**: Cycle completion % and key stats
|
|
4966
5178
|
- **Calendar**: Any meetings or events today
|
|
4967
5179
|
|
|
@@ -5069,9 +5281,7 @@ Present as a client brief:
|
|
|
5069
5281
|
},
|
|
5070
5282
|
],
|
|
5071
5283
|
"customer-success-triage": (args) => {
|
|
5072
|
-
const focusClause = args.focus
|
|
5073
|
-
? `\n\nFocus area: ${args.focus}`
|
|
5074
|
-
: "";
|
|
5284
|
+
const focusClause = args.focus ? `\n\nFocus area: ${args.focus}` : "";
|
|
5075
5285
|
return [
|
|
5076
5286
|
{
|
|
5077
5287
|
role: "user",
|
|
@@ -5449,12 +5659,13 @@ Present a monthly review:
|
|
|
5449
5659
|
type: "text",
|
|
5450
5660
|
text: `Show what's overdue or slipping. Use the LifeOS MCP tools:
|
|
5451
5661
|
|
|
5452
|
-
1. Call
|
|
5453
|
-
2. Call
|
|
5454
|
-
3. Call
|
|
5662
|
+
1. Call get_overdue_tasks to get overdue open tasks
|
|
5663
|
+
2. Call get_tasks with status "in_progress" to find stale active work
|
|
5664
|
+
3. Call get_projects to get all projects with health status
|
|
5665
|
+
4. Call get_current_cycle to see sprint status
|
|
5455
5666
|
|
|
5456
5667
|
Analyze and identify:
|
|
5457
|
-
- **Overdue tasks**: Tasks
|
|
5668
|
+
- **Overdue tasks**: Tasks returned by get_overdue_tasks
|
|
5458
5669
|
- **Off-track projects**: Projects with health "off_track" or "at_risk"
|
|
5459
5670
|
- **Stale in-progress**: Tasks marked "in_progress" for more than 7 days
|
|
5460
5671
|
- **Sprint slippage**: If cycle completion % is behind expected pace
|
|
@@ -5953,7 +6164,9 @@ function formatListSection(heading, items, options) {
|
|
|
5953
6164
|
}
|
|
5954
6165
|
const rendered = items.slice(0, limit).map((item) => {
|
|
5955
6166
|
const label = getItemLabel(item);
|
|
5956
|
-
const meta = options?.metaKeys
|
|
6167
|
+
const meta = options?.metaKeys
|
|
6168
|
+
? getItemMeta(item, options.metaKeys)
|
|
6169
|
+
: undefined;
|
|
5957
6170
|
return meta ? `- ${label} (${meta})` : `- ${label}`;
|
|
5958
6171
|
});
|
|
5959
6172
|
if (items.length > limit) {
|
|
@@ -6122,13 +6335,7 @@ function formatNotesResource(client, notesResponse) {
|
|
|
6122
6335
|
const content = getString(note.content) || "";
|
|
6123
6336
|
const updatedAt = getString(note.updatedAt) || getString(note.createdAt);
|
|
6124
6337
|
const meta = updatedAt ? `Updated: ${updatedAt}` : undefined;
|
|
6125
|
-
return [
|
|
6126
|
-
`## ${title}`,
|
|
6127
|
-
meta ?? "",
|
|
6128
|
-
content,
|
|
6129
|
-
]
|
|
6130
|
-
.filter(Boolean)
|
|
6131
|
-
.join("\n");
|
|
6338
|
+
return [`## ${title}`, meta ?? "", content].filter(Boolean).join("\n");
|
|
6132
6339
|
});
|
|
6133
6340
|
return [
|
|
6134
6341
|
`# ${client.name} Client Notes`,
|
package/package.json
CHANGED