@stackmemoryai/stackmemory 1.2.7 → 1.2.9
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 +3 -3
- package/dist/src/cli/commands/daemon.js +306 -2
- package/dist/src/cli/commands/desires.js +117 -0
- package/dist/src/cli/commands/digest.js +73 -0
- package/dist/src/cli/commands/setup.js +369 -39
- package/dist/src/cli/commands/team.js +168 -0
- package/dist/src/cli/index.js +6 -0
- package/dist/src/core/digest/chronological-digest.js +143 -0
- package/dist/src/core/digest/index.js +1 -0
- package/dist/src/integrations/mcp/server.js +622 -251
- package/dist/src/integrations/mcp/tool-definitions.js +607 -50
- package/dist/src/utils/hook-installer.js +35 -0
- package/package.json +2 -2
- package/scripts/install-claude-hooks-auto.js +35 -0
- package/templates/claude-hooks/daemon-auto-start.js +125 -0
- package/templates/claude-hooks/desire-path-trace.js +118 -0
- package/templates/claude-hooks/session-rescue.sh +3 -0
- package/templates/claude-hooks/team-subagent-stop.js +77 -0
- package/templates/claude-hooks/team-task-complete.js +83 -0
- package/templates/claude-hooks/team-teammate-idle.js +96 -0
- /package/templates/claude-hooks/{auto-background-hook.js → archive/auto-background-hook.js} +0 -0
- /package/templates/claude-hooks/{hook-config.json → archive/hook-config.json} +0 -0
- /package/templates/claude-hooks/{hooks.json → archive/hooks.json} +0 -0
- /package/templates/claude-hooks/{on-compact-detected → archive/on-compact-detected} +0 -0
- /package/templates/claude-hooks/{on-exit → archive/on-exit} +0 -0
- /package/templates/claude-hooks/{post-edit-sweep.js → archive/post-edit-sweep.js} +0 -0
- /package/templates/claude-hooks/{pre-tool-use → archive/pre-tool-use} +0 -0
|
@@ -12,10 +12,19 @@ class MCPToolDefinitions {
|
|
|
12
12
|
...this.getTaskTools(),
|
|
13
13
|
...this.getLinearTools(),
|
|
14
14
|
...this.getTraceTools(),
|
|
15
|
+
...this.getTraceExtensionTools(),
|
|
16
|
+
...this.getPlanningTools(),
|
|
17
|
+
...this.getPendingTools(),
|
|
18
|
+
...this.getSmartContextTools(),
|
|
15
19
|
...this.getDiscoveryTools(),
|
|
16
20
|
...this.getEditTools(),
|
|
21
|
+
...this.getDiffMemTools(),
|
|
22
|
+
...this.getGreptileTools(),
|
|
23
|
+
...this.getProviderTools(),
|
|
17
24
|
...this.getTeamTools(),
|
|
18
|
-
...this.getCordTools()
|
|
25
|
+
...this.getCordTools(),
|
|
26
|
+
...this.getDigestTools(),
|
|
27
|
+
...this.getDesirePathTools()
|
|
19
28
|
];
|
|
20
29
|
}
|
|
21
30
|
/**
|
|
@@ -437,98 +446,238 @@ class MCPToolDefinitions {
|
|
|
437
446
|
}
|
|
438
447
|
}
|
|
439
448
|
}
|
|
449
|
+
}
|
|
450
|
+
];
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Trace extension tools (statistics, flush, compress)
|
|
454
|
+
*/
|
|
455
|
+
getTraceExtensionTools() {
|
|
456
|
+
return [
|
|
457
|
+
{
|
|
458
|
+
name: "get_trace_statistics",
|
|
459
|
+
description: "Get statistics about detected traces",
|
|
460
|
+
inputSchema: { type: "object", properties: {} }
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
name: "flush_traces",
|
|
464
|
+
description: "Flush any pending trace and finalize detection",
|
|
465
|
+
inputSchema: { type: "object", properties: {} }
|
|
440
466
|
},
|
|
441
467
|
{
|
|
442
|
-
name: "
|
|
443
|
-
description: "
|
|
468
|
+
name: "compress_old_traces",
|
|
469
|
+
description: "Compress traces older than specified hours",
|
|
444
470
|
inputSchema: {
|
|
445
471
|
type: "object",
|
|
446
472
|
properties: {
|
|
447
|
-
|
|
473
|
+
ageHours: {
|
|
474
|
+
type: "number",
|
|
475
|
+
description: "Age threshold in hours (default: 24)"
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
];
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Planning and orchestration tools
|
|
484
|
+
*/
|
|
485
|
+
getPlanningTools() {
|
|
486
|
+
return [
|
|
487
|
+
{
|
|
488
|
+
name: "plan_only",
|
|
489
|
+
description: "Generate an implementation plan (Claude) and return JSON only",
|
|
490
|
+
inputSchema: {
|
|
491
|
+
type: "object",
|
|
492
|
+
properties: {
|
|
493
|
+
task: { type: "string", description: "Task description" },
|
|
494
|
+
plannerModel: {
|
|
448
495
|
type: "string",
|
|
449
|
-
description: "
|
|
496
|
+
description: "Claude model for planning (optional)"
|
|
497
|
+
}
|
|
498
|
+
},
|
|
499
|
+
required: ["task"]
|
|
500
|
+
}
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
name: "call_codex",
|
|
504
|
+
description: "Invoke Codex via codex-sm with a prompt and args; dry-run by default",
|
|
505
|
+
inputSchema: {
|
|
506
|
+
type: "object",
|
|
507
|
+
properties: {
|
|
508
|
+
prompt: { type: "string", description: "Prompt for Codex" },
|
|
509
|
+
args: {
|
|
510
|
+
type: "array",
|
|
511
|
+
items: { type: "string" },
|
|
512
|
+
description: "Additional CLI args for codex-sm"
|
|
450
513
|
},
|
|
451
|
-
|
|
514
|
+
execute: {
|
|
452
515
|
type: "boolean",
|
|
453
516
|
default: false,
|
|
454
|
-
description: "
|
|
517
|
+
description: "Actually run codex-sm (otherwise dry-run)"
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
required: ["prompt"]
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
name: "call_claude",
|
|
525
|
+
description: "Invoke Claude with a prompt (Anthropic SDK)",
|
|
526
|
+
inputSchema: {
|
|
527
|
+
type: "object",
|
|
528
|
+
properties: {
|
|
529
|
+
prompt: { type: "string", description: "Prompt for Claude" },
|
|
530
|
+
model: { type: "string", description: "Claude model (optional)" },
|
|
531
|
+
system: { type: "string", description: "System prompt (optional)" }
|
|
532
|
+
},
|
|
533
|
+
required: ["prompt"]
|
|
534
|
+
}
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
name: "plan_gate",
|
|
538
|
+
description: "Phase 1: Generate a plan and return an approvalId for later execution",
|
|
539
|
+
inputSchema: {
|
|
540
|
+
type: "object",
|
|
541
|
+
properties: {
|
|
542
|
+
task: { type: "string", description: "Task description" },
|
|
543
|
+
plannerModel: {
|
|
544
|
+
type: "string",
|
|
545
|
+
description: "Claude model (optional)"
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
required: ["task"]
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
{
|
|
552
|
+
name: "approve_plan",
|
|
553
|
+
description: "Phase 2: Execute a previously generated plan by approvalId",
|
|
554
|
+
inputSchema: {
|
|
555
|
+
type: "object",
|
|
556
|
+
properties: {
|
|
557
|
+
approvalId: { type: "string", description: "Id from plan_gate" },
|
|
558
|
+
implementer: {
|
|
559
|
+
type: "string",
|
|
560
|
+
enum: ["codex", "claude"],
|
|
561
|
+
default: "codex",
|
|
562
|
+
description: "Which agent implements code"
|
|
563
|
+
},
|
|
564
|
+
maxIters: { type: "number", default: 2 },
|
|
565
|
+
recordFrame: { type: "boolean", default: true },
|
|
566
|
+
execute: { type: "boolean", default: true }
|
|
567
|
+
},
|
|
568
|
+
required: ["approvalId"]
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
];
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Pending approval management tools
|
|
575
|
+
*/
|
|
576
|
+
getPendingTools() {
|
|
577
|
+
return [
|
|
578
|
+
{
|
|
579
|
+
name: "pending_list",
|
|
580
|
+
description: "List pending approval-gated plans (supports filters)",
|
|
581
|
+
inputSchema: {
|
|
582
|
+
type: "object",
|
|
583
|
+
properties: {
|
|
584
|
+
taskContains: {
|
|
585
|
+
type: "string",
|
|
586
|
+
description: "Filter tasks containing this substring"
|
|
455
587
|
},
|
|
456
|
-
|
|
588
|
+
olderThanMs: {
|
|
457
589
|
type: "number",
|
|
458
|
-
|
|
459
|
-
description: "Browser width"
|
|
590
|
+
description: "Only items older than this age (ms)"
|
|
460
591
|
},
|
|
461
|
-
|
|
592
|
+
newerThanMs: {
|
|
462
593
|
type: "number",
|
|
463
|
-
|
|
464
|
-
description: "Browser height"
|
|
594
|
+
description: "Only items newer than this age (ms)"
|
|
465
595
|
},
|
|
466
|
-
|
|
467
|
-
type: "
|
|
468
|
-
|
|
469
|
-
description: "
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
|
|
596
|
+
sort: {
|
|
597
|
+
type: "string",
|
|
598
|
+
enum: ["asc", "desc"],
|
|
599
|
+
description: "Sort by createdAt"
|
|
600
|
+
},
|
|
601
|
+
limit: { type: "number", description: "Max items to return" }
|
|
602
|
+
}
|
|
473
603
|
}
|
|
474
604
|
},
|
|
475
605
|
{
|
|
476
|
-
name: "
|
|
477
|
-
description: "
|
|
606
|
+
name: "pending_clear",
|
|
607
|
+
description: "Clear pending approval-gated plans (by id, all, or olderThanMs)",
|
|
478
608
|
inputSchema: {
|
|
479
609
|
type: "object",
|
|
480
610
|
properties: {
|
|
481
|
-
|
|
482
|
-
type: "string",
|
|
483
|
-
description: "Browser session ID"
|
|
484
|
-
},
|
|
485
|
-
selector: {
|
|
611
|
+
approvalId: {
|
|
486
612
|
type: "string",
|
|
487
|
-
description: "
|
|
613
|
+
description: "Clear a single approval by id"
|
|
488
614
|
},
|
|
489
|
-
|
|
615
|
+
all: {
|
|
490
616
|
type: "boolean",
|
|
491
617
|
default: false,
|
|
492
|
-
description: "
|
|
618
|
+
description: "Clear all pending approvals"
|
|
619
|
+
},
|
|
620
|
+
olderThanMs: {
|
|
621
|
+
type: "number",
|
|
622
|
+
description: "Clear approvals older than this age (ms)"
|
|
493
623
|
}
|
|
494
|
-
}
|
|
495
|
-
required: ["session_id"]
|
|
624
|
+
}
|
|
496
625
|
}
|
|
497
626
|
},
|
|
498
627
|
{
|
|
499
|
-
name: "
|
|
500
|
-
description: "
|
|
628
|
+
name: "pending_show",
|
|
629
|
+
description: "Show a pending plan by approvalId",
|
|
501
630
|
inputSchema: {
|
|
502
631
|
type: "object",
|
|
503
632
|
properties: {
|
|
504
|
-
|
|
633
|
+
approvalId: {
|
|
505
634
|
type: "string",
|
|
506
|
-
description: "
|
|
507
|
-
}
|
|
508
|
-
|
|
635
|
+
description: "Approval id from plan_gate"
|
|
636
|
+
}
|
|
637
|
+
},
|
|
638
|
+
required: ["approvalId"]
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
];
|
|
642
|
+
}
|
|
643
|
+
/**
|
|
644
|
+
* Smart context and summary tools
|
|
645
|
+
*/
|
|
646
|
+
getSmartContextTools() {
|
|
647
|
+
return [
|
|
648
|
+
{
|
|
649
|
+
name: "smart_context",
|
|
650
|
+
description: "LLM-driven context retrieval - intelligently selects relevant frames based on query",
|
|
651
|
+
inputSchema: {
|
|
652
|
+
type: "object",
|
|
653
|
+
properties: {
|
|
654
|
+
query: {
|
|
509
655
|
type: "string",
|
|
510
|
-
description: "
|
|
656
|
+
description: "Natural language query describing what context you need"
|
|
511
657
|
},
|
|
512
|
-
|
|
513
|
-
type: "
|
|
514
|
-
description: "
|
|
658
|
+
tokenBudget: {
|
|
659
|
+
type: "number",
|
|
660
|
+
description: "Maximum tokens to use for context (default: 4000)"
|
|
661
|
+
},
|
|
662
|
+
forceRefresh: {
|
|
663
|
+
type: "boolean",
|
|
664
|
+
description: "Force refresh of cached summaries"
|
|
515
665
|
}
|
|
516
666
|
},
|
|
517
|
-
required: ["
|
|
667
|
+
required: ["query"]
|
|
518
668
|
}
|
|
519
669
|
},
|
|
520
670
|
{
|
|
521
|
-
name: "
|
|
522
|
-
description: "
|
|
671
|
+
name: "get_summary",
|
|
672
|
+
description: "Get compressed summary of project memory for analysis",
|
|
523
673
|
inputSchema: {
|
|
524
674
|
type: "object",
|
|
525
675
|
properties: {
|
|
526
|
-
|
|
527
|
-
type: "
|
|
528
|
-
description: "
|
|
676
|
+
forceRefresh: {
|
|
677
|
+
type: "boolean",
|
|
678
|
+
description: "Force refresh of cached summary"
|
|
529
679
|
}
|
|
530
|
-
}
|
|
531
|
-
required: ["session_id"]
|
|
680
|
+
}
|
|
532
681
|
}
|
|
533
682
|
}
|
|
534
683
|
];
|
|
@@ -674,6 +823,396 @@ class MCPToolDefinitions {
|
|
|
674
823
|
}
|
|
675
824
|
];
|
|
676
825
|
}
|
|
826
|
+
/**
|
|
827
|
+
* DiffMem user memory management tools
|
|
828
|
+
*/
|
|
829
|
+
getDiffMemTools() {
|
|
830
|
+
return [
|
|
831
|
+
{
|
|
832
|
+
name: "diffmem_get_user_context",
|
|
833
|
+
description: "Fetch user knowledge and preferences from memory. Use to personalize responses.",
|
|
834
|
+
inputSchema: {
|
|
835
|
+
type: "object",
|
|
836
|
+
properties: {
|
|
837
|
+
categories: {
|
|
838
|
+
type: "array",
|
|
839
|
+
items: {
|
|
840
|
+
type: "string",
|
|
841
|
+
enum: [
|
|
842
|
+
"preference",
|
|
843
|
+
"expertise",
|
|
844
|
+
"project_knowledge",
|
|
845
|
+
"pattern",
|
|
846
|
+
"correction"
|
|
847
|
+
]
|
|
848
|
+
},
|
|
849
|
+
description: "Filter by memory categories"
|
|
850
|
+
},
|
|
851
|
+
limit: {
|
|
852
|
+
type: "number",
|
|
853
|
+
default: 10,
|
|
854
|
+
description: "Maximum memories to return"
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
name: "diffmem_store_learning",
|
|
861
|
+
description: "Store a new insight about the user (preference, expertise, pattern, or correction)",
|
|
862
|
+
inputSchema: {
|
|
863
|
+
type: "object",
|
|
864
|
+
properties: {
|
|
865
|
+
content: { type: "string", description: "The insight to store" },
|
|
866
|
+
category: {
|
|
867
|
+
type: "string",
|
|
868
|
+
enum: [
|
|
869
|
+
"preference",
|
|
870
|
+
"expertise",
|
|
871
|
+
"project_knowledge",
|
|
872
|
+
"pattern",
|
|
873
|
+
"correction"
|
|
874
|
+
],
|
|
875
|
+
description: "Category of the insight"
|
|
876
|
+
},
|
|
877
|
+
confidence: {
|
|
878
|
+
type: "number",
|
|
879
|
+
minimum: 0,
|
|
880
|
+
maximum: 1,
|
|
881
|
+
default: 0.7,
|
|
882
|
+
description: "Confidence level (0-1)"
|
|
883
|
+
},
|
|
884
|
+
context: {
|
|
885
|
+
type: "object",
|
|
886
|
+
description: "Additional context for the insight"
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
required: ["content", "category"]
|
|
890
|
+
}
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
name: "diffmem_search",
|
|
894
|
+
description: "Semantic search across user memories. Find relevant past insights and preferences.",
|
|
895
|
+
inputSchema: {
|
|
896
|
+
type: "object",
|
|
897
|
+
properties: {
|
|
898
|
+
query: { type: "string", description: "Search query" },
|
|
899
|
+
timeRange: {
|
|
900
|
+
type: "string",
|
|
901
|
+
enum: ["day", "week", "month", "all"],
|
|
902
|
+
default: "all",
|
|
903
|
+
description: "Time range filter"
|
|
904
|
+
},
|
|
905
|
+
minConfidence: {
|
|
906
|
+
type: "number",
|
|
907
|
+
minimum: 0,
|
|
908
|
+
maximum: 1,
|
|
909
|
+
default: 0.5,
|
|
910
|
+
description: "Minimum confidence threshold"
|
|
911
|
+
},
|
|
912
|
+
limit: {
|
|
913
|
+
type: "number",
|
|
914
|
+
default: 10,
|
|
915
|
+
description: "Maximum results"
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
required: ["query"]
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
name: "diffmem_status",
|
|
923
|
+
description: "Check DiffMem connection status and memory statistics",
|
|
924
|
+
inputSchema: { type: "object", properties: {} }
|
|
925
|
+
}
|
|
926
|
+
];
|
|
927
|
+
}
|
|
928
|
+
/**
|
|
929
|
+
* Greptile code review tools
|
|
930
|
+
*/
|
|
931
|
+
getGreptileTools() {
|
|
932
|
+
return [
|
|
933
|
+
{
|
|
934
|
+
name: "greptile_pr_comments",
|
|
935
|
+
description: "Get PR review comments from Greptile. Returns unaddressed comments with suggestedCode.",
|
|
936
|
+
inputSchema: {
|
|
937
|
+
type: "object",
|
|
938
|
+
properties: {
|
|
939
|
+
name: {
|
|
940
|
+
type: "string",
|
|
941
|
+
description: 'Repository full name (e.g., "owner/repo")'
|
|
942
|
+
},
|
|
943
|
+
remote: {
|
|
944
|
+
type: "string",
|
|
945
|
+
enum: ["github", "gitlab", "azure", "bitbucket"],
|
|
946
|
+
description: "Remote provider"
|
|
947
|
+
},
|
|
948
|
+
defaultBranch: {
|
|
949
|
+
type: "string",
|
|
950
|
+
description: 'Default branch (e.g., "main")'
|
|
951
|
+
},
|
|
952
|
+
prNumber: { type: "number", description: "Pull request number" },
|
|
953
|
+
greptileGenerated: {
|
|
954
|
+
type: "boolean",
|
|
955
|
+
description: "Filter for only Greptile review comments"
|
|
956
|
+
},
|
|
957
|
+
addressed: {
|
|
958
|
+
type: "boolean",
|
|
959
|
+
description: "Filter by comment addressed status"
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
required: ["name", "remote", "defaultBranch", "prNumber"]
|
|
963
|
+
}
|
|
964
|
+
},
|
|
965
|
+
{
|
|
966
|
+
name: "greptile_pr_details",
|
|
967
|
+
description: "Get detailed PR information including metadata, statistics, and review analysis.",
|
|
968
|
+
inputSchema: {
|
|
969
|
+
type: "object",
|
|
970
|
+
properties: {
|
|
971
|
+
name: { type: "string", description: "Repository full name" },
|
|
972
|
+
remote: {
|
|
973
|
+
type: "string",
|
|
974
|
+
enum: ["github", "gitlab", "azure", "bitbucket"],
|
|
975
|
+
description: "Remote provider"
|
|
976
|
+
},
|
|
977
|
+
defaultBranch: { type: "string", description: "Default branch" },
|
|
978
|
+
prNumber: { type: "number", description: "Pull request number" }
|
|
979
|
+
},
|
|
980
|
+
required: ["name", "remote", "defaultBranch", "prNumber"]
|
|
981
|
+
}
|
|
982
|
+
},
|
|
983
|
+
{
|
|
984
|
+
name: "greptile_list_prs",
|
|
985
|
+
description: "List pull requests. Filter by repository, branch, author, or state.",
|
|
986
|
+
inputSchema: {
|
|
987
|
+
type: "object",
|
|
988
|
+
properties: {
|
|
989
|
+
name: { type: "string", description: "Repository full name" },
|
|
990
|
+
remote: {
|
|
991
|
+
type: "string",
|
|
992
|
+
enum: ["github", "gitlab", "azure", "bitbucket"],
|
|
993
|
+
description: "Remote provider"
|
|
994
|
+
},
|
|
995
|
+
defaultBranch: { type: "string", description: "Default branch" },
|
|
996
|
+
sourceBranch: {
|
|
997
|
+
type: "string",
|
|
998
|
+
description: "Filter by source branch name"
|
|
999
|
+
},
|
|
1000
|
+
authorLogin: {
|
|
1001
|
+
type: "string",
|
|
1002
|
+
description: "Filter by PR author username"
|
|
1003
|
+
},
|
|
1004
|
+
state: {
|
|
1005
|
+
type: "string",
|
|
1006
|
+
enum: ["open", "closed", "merged"],
|
|
1007
|
+
description: "Filter by PR state"
|
|
1008
|
+
},
|
|
1009
|
+
limit: { type: "number", description: "Max results (default 20)" }
|
|
1010
|
+
}
|
|
1011
|
+
}
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
name: "greptile_trigger_review",
|
|
1015
|
+
description: "Trigger a Greptile code review for a pull request.",
|
|
1016
|
+
inputSchema: {
|
|
1017
|
+
type: "object",
|
|
1018
|
+
properties: {
|
|
1019
|
+
name: { type: "string", description: "Repository full name" },
|
|
1020
|
+
remote: {
|
|
1021
|
+
type: "string",
|
|
1022
|
+
enum: ["github", "gitlab", "azure", "bitbucket"],
|
|
1023
|
+
description: "Remote provider"
|
|
1024
|
+
},
|
|
1025
|
+
defaultBranch: { type: "string", description: "Default branch" },
|
|
1026
|
+
prNumber: { type: "number", description: "Pull request number" },
|
|
1027
|
+
branch: { type: "string", description: "Current working branch" }
|
|
1028
|
+
},
|
|
1029
|
+
required: ["name", "remote", "prNumber"]
|
|
1030
|
+
}
|
|
1031
|
+
},
|
|
1032
|
+
{
|
|
1033
|
+
name: "greptile_search_patterns",
|
|
1034
|
+
description: "Search custom coding patterns and instructions in Greptile.",
|
|
1035
|
+
inputSchema: {
|
|
1036
|
+
type: "object",
|
|
1037
|
+
properties: {
|
|
1038
|
+
query: {
|
|
1039
|
+
type: "string",
|
|
1040
|
+
description: "Search query for pattern content"
|
|
1041
|
+
},
|
|
1042
|
+
limit: { type: "number", description: "Max results (default 10)" }
|
|
1043
|
+
},
|
|
1044
|
+
required: ["query"]
|
|
1045
|
+
}
|
|
1046
|
+
},
|
|
1047
|
+
{
|
|
1048
|
+
name: "greptile_create_pattern",
|
|
1049
|
+
description: "Create a new custom coding pattern or instruction in Greptile.",
|
|
1050
|
+
inputSchema: {
|
|
1051
|
+
type: "object",
|
|
1052
|
+
properties: {
|
|
1053
|
+
body: { type: "string", description: "Pattern content" },
|
|
1054
|
+
type: {
|
|
1055
|
+
type: "string",
|
|
1056
|
+
enum: ["CUSTOM_INSTRUCTION", "PATTERN"],
|
|
1057
|
+
description: "Context type"
|
|
1058
|
+
},
|
|
1059
|
+
scopes: {
|
|
1060
|
+
type: "object",
|
|
1061
|
+
description: "Boolean expression defining where this pattern applies"
|
|
1062
|
+
}
|
|
1063
|
+
},
|
|
1064
|
+
required: ["body"]
|
|
1065
|
+
}
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
name: "greptile_status",
|
|
1069
|
+
description: "Check Greptile integration connection status.",
|
|
1070
|
+
inputSchema: { type: "object", properties: {} }
|
|
1071
|
+
}
|
|
1072
|
+
];
|
|
1073
|
+
}
|
|
1074
|
+
/**
|
|
1075
|
+
* Multi-provider routing tools
|
|
1076
|
+
*/
|
|
1077
|
+
getProviderTools() {
|
|
1078
|
+
return [
|
|
1079
|
+
{
|
|
1080
|
+
name: "delegate_to_model",
|
|
1081
|
+
description: "Route a prompt to a specific provider/model. Uses smart cost-based routing by default.",
|
|
1082
|
+
inputSchema: {
|
|
1083
|
+
type: "object",
|
|
1084
|
+
properties: {
|
|
1085
|
+
prompt: { type: "string", description: "The prompt to send" },
|
|
1086
|
+
provider: {
|
|
1087
|
+
type: "string",
|
|
1088
|
+
enum: [
|
|
1089
|
+
"anthropic",
|
|
1090
|
+
"cerebras",
|
|
1091
|
+
"deepinfra",
|
|
1092
|
+
"openai",
|
|
1093
|
+
"openrouter"
|
|
1094
|
+
],
|
|
1095
|
+
description: "Override provider"
|
|
1096
|
+
},
|
|
1097
|
+
model: { type: "string", description: "Override model name" },
|
|
1098
|
+
taskType: {
|
|
1099
|
+
type: "string",
|
|
1100
|
+
enum: ["linting", "context", "code", "testing", "review", "plan"],
|
|
1101
|
+
description: "Task type for auto-routing"
|
|
1102
|
+
},
|
|
1103
|
+
maxTokens: { type: "number", description: "Max tokens" },
|
|
1104
|
+
temperature: { type: "number" },
|
|
1105
|
+
system: { type: "string", description: "System prompt" }
|
|
1106
|
+
},
|
|
1107
|
+
required: ["prompt"]
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
{
|
|
1111
|
+
name: "batch_submit",
|
|
1112
|
+
description: "Submit prompts to Anthropic Batch API (50% discount, async)",
|
|
1113
|
+
inputSchema: {
|
|
1114
|
+
type: "object",
|
|
1115
|
+
properties: {
|
|
1116
|
+
prompts: {
|
|
1117
|
+
type: "array",
|
|
1118
|
+
items: {
|
|
1119
|
+
type: "object",
|
|
1120
|
+
properties: {
|
|
1121
|
+
id: { type: "string" },
|
|
1122
|
+
prompt: { type: "string" },
|
|
1123
|
+
model: { type: "string" },
|
|
1124
|
+
maxTokens: { type: "number" },
|
|
1125
|
+
system: { type: "string" }
|
|
1126
|
+
},
|
|
1127
|
+
required: ["id", "prompt"]
|
|
1128
|
+
},
|
|
1129
|
+
description: "Array of prompts to batch"
|
|
1130
|
+
},
|
|
1131
|
+
description: {
|
|
1132
|
+
type: "string",
|
|
1133
|
+
description: "Batch job description"
|
|
1134
|
+
}
|
|
1135
|
+
},
|
|
1136
|
+
required: ["prompts"]
|
|
1137
|
+
}
|
|
1138
|
+
},
|
|
1139
|
+
{
|
|
1140
|
+
name: "batch_check",
|
|
1141
|
+
description: "Check status or retrieve results for a batch job",
|
|
1142
|
+
inputSchema: {
|
|
1143
|
+
type: "object",
|
|
1144
|
+
properties: {
|
|
1145
|
+
batchId: { type: "string", description: "Batch job ID" },
|
|
1146
|
+
retrieve: {
|
|
1147
|
+
type: "boolean",
|
|
1148
|
+
default: false,
|
|
1149
|
+
description: "Retrieve results if complete"
|
|
1150
|
+
}
|
|
1151
|
+
},
|
|
1152
|
+
required: ["batchId"]
|
|
1153
|
+
}
|
|
1154
|
+
}
|
|
1155
|
+
];
|
|
1156
|
+
}
|
|
1157
|
+
/**
|
|
1158
|
+
* Chronological digest tools
|
|
1159
|
+
*/
|
|
1160
|
+
getDigestTools() {
|
|
1161
|
+
return [
|
|
1162
|
+
{
|
|
1163
|
+
name: "sm_digest",
|
|
1164
|
+
description: "Generate a chronological activity digest for a time period",
|
|
1165
|
+
inputSchema: {
|
|
1166
|
+
type: "object",
|
|
1167
|
+
properties: {
|
|
1168
|
+
period: {
|
|
1169
|
+
type: "string",
|
|
1170
|
+
enum: ["today", "yesterday", "week"],
|
|
1171
|
+
description: "Time period for the digest"
|
|
1172
|
+
}
|
|
1173
|
+
},
|
|
1174
|
+
required: ["period"]
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
];
|
|
1178
|
+
}
|
|
1179
|
+
/**
|
|
1180
|
+
* Desire path analysis tools
|
|
1181
|
+
*/
|
|
1182
|
+
getDesirePathTools() {
|
|
1183
|
+
return [
|
|
1184
|
+
{
|
|
1185
|
+
name: "sm_desire_paths",
|
|
1186
|
+
description: 'Analyze failed tool calls (desire paths) \u2014 what agents want but cannot get. Use mode "summary" for aggregated counts or "list" for recent failures.',
|
|
1187
|
+
inputSchema: {
|
|
1188
|
+
type: "object",
|
|
1189
|
+
properties: {
|
|
1190
|
+
mode: {
|
|
1191
|
+
type: "string",
|
|
1192
|
+
enum: ["summary", "list"],
|
|
1193
|
+
description: "Output mode: summary (aggregated) or list (recent)",
|
|
1194
|
+
default: "summary"
|
|
1195
|
+
},
|
|
1196
|
+
limit: {
|
|
1197
|
+
type: "number",
|
|
1198
|
+
default: 20,
|
|
1199
|
+
description: "Max entries to return (list mode only)"
|
|
1200
|
+
},
|
|
1201
|
+
category: {
|
|
1202
|
+
type: "string",
|
|
1203
|
+
enum: ["unknown_tool", "handler_error", "invalid_params"],
|
|
1204
|
+
description: "Filter by failure category"
|
|
1205
|
+
},
|
|
1206
|
+
days: {
|
|
1207
|
+
type: "number",
|
|
1208
|
+
default: 7,
|
|
1209
|
+
description: "Look back N days"
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
];
|
|
1215
|
+
}
|
|
677
1216
|
/**
|
|
678
1217
|
* Multi-agent team collaboration tools
|
|
679
1218
|
*/
|
|
@@ -901,14 +1440,32 @@ class MCPToolDefinitions {
|
|
|
901
1440
|
return this.getLinearTools();
|
|
902
1441
|
case "trace":
|
|
903
1442
|
return this.getTraceTools();
|
|
1443
|
+
case "trace_extension":
|
|
1444
|
+
return this.getTraceExtensionTools();
|
|
1445
|
+
case "planning":
|
|
1446
|
+
return this.getPlanningTools();
|
|
1447
|
+
case "pending":
|
|
1448
|
+
return this.getPendingTools();
|
|
1449
|
+
case "smart_context":
|
|
1450
|
+
return this.getSmartContextTools();
|
|
904
1451
|
case "discovery":
|
|
905
1452
|
return this.getDiscoveryTools();
|
|
906
1453
|
case "edit":
|
|
907
1454
|
return this.getEditTools();
|
|
1455
|
+
case "diffmem":
|
|
1456
|
+
return this.getDiffMemTools();
|
|
1457
|
+
case "greptile":
|
|
1458
|
+
return this.getGreptileTools();
|
|
1459
|
+
case "provider":
|
|
1460
|
+
return this.getProviderTools();
|
|
908
1461
|
case "team":
|
|
909
1462
|
return this.getTeamTools();
|
|
910
1463
|
case "cord":
|
|
911
1464
|
return this.getCordTools();
|
|
1465
|
+
case "digest":
|
|
1466
|
+
return this.getDigestTools();
|
|
1467
|
+
case "desire_paths":
|
|
1468
|
+
return this.getDesirePathTools();
|
|
912
1469
|
default:
|
|
913
1470
|
return [];
|
|
914
1471
|
}
|