handoff-mcp-server 0.11.0 → 0.13.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.
@@ -44,7 +44,15 @@ pub fn handle_update(arguments: &Value) -> Result<String> {
44
44
  "settings.history_limit",
45
45
  "settings.done_task_limit",
46
46
  "settings.auto_git_summary",
47
+ "settings.require_estimate_hours",
48
+ "settings.ai_estimate_multiplier",
47
49
  "settings.context_files",
50
+ "settings.memory_enabled",
51
+ "settings.memory_dup_threshold",
52
+ "settings.memory_query_min_score",
53
+ "settings.memory_query_limit",
54
+ "settings.memory_stale_days",
55
+ "settings.memory_injected_gc_days",
48
56
  "dashboard.scan_dirs",
49
57
  "dashboard.exclude_patterns",
50
58
  "project.name",
@@ -87,6 +95,21 @@ pub fn handle_update(arguments: &Value) -> Result<String> {
87
95
  applied.push(format!("settings.auto_git_summary = {b}"));
88
96
  }
89
97
  }
98
+ "settings.require_estimate_hours" => {
99
+ if let Some(b) = value.as_bool() {
100
+ config.settings.require_estimate_hours = b;
101
+ applied.push(format!("settings.require_estimate_hours = {b}"));
102
+ }
103
+ }
104
+ "settings.ai_estimate_multiplier" => {
105
+ if let Some(n) = value.as_f64() {
106
+ if n < 0.0 {
107
+ anyhow::bail!("settings.ai_estimate_multiplier must be >= 0");
108
+ }
109
+ config.settings.ai_estimate_multiplier = n;
110
+ applied.push(format!("settings.ai_estimate_multiplier = {n}"));
111
+ }
112
+ }
90
113
  "settings.context_files" => {
91
114
  if let Some(arr) = value.as_array() {
92
115
  config.settings.context_files = arr
@@ -99,6 +122,63 @@ pub fn handle_update(arguments: &Value) -> Result<String> {
99
122
  ));
100
123
  }
101
124
  }
125
+ "settings.memory_enabled" => {
126
+ let Some(b) = value.as_bool() else {
127
+ anyhow::bail!("settings.memory_enabled must be a boolean");
128
+ };
129
+ config.settings.memory_enabled = b;
130
+ applied.push(format!("settings.memory_enabled = {b}"));
131
+ }
132
+ "settings.memory_dup_threshold" => {
133
+ let Some(n) = value.as_f64() else {
134
+ anyhow::bail!("settings.memory_dup_threshold must be a number");
135
+ };
136
+ if !(0.0..=1.0).contains(&n) {
137
+ anyhow::bail!("settings.memory_dup_threshold must be between 0 and 1");
138
+ }
139
+ config.settings.memory_dup_threshold = n;
140
+ applied.push(format!("settings.memory_dup_threshold = {n}"));
141
+ }
142
+ "settings.memory_query_min_score" => {
143
+ let Some(n) = value.as_f64() else {
144
+ anyhow::bail!("settings.memory_query_min_score must be a number");
145
+ };
146
+ if n < 0.0 {
147
+ anyhow::bail!("settings.memory_query_min_score must be >= 0");
148
+ }
149
+ config.settings.memory_query_min_score = n;
150
+ applied.push(format!("settings.memory_query_min_score = {n}"));
151
+ }
152
+ "settings.memory_query_limit" => {
153
+ let Some(n) = value.as_u64() else {
154
+ anyhow::bail!("settings.memory_query_limit must be a non-negative integer");
155
+ };
156
+ if n == 0 {
157
+ anyhow::bail!("settings.memory_query_limit must be >= 1");
158
+ }
159
+ config.settings.memory_query_limit = n as u32;
160
+ applied.push(format!("settings.memory_query_limit = {n}"));
161
+ }
162
+ "settings.memory_stale_days" => {
163
+ let Some(n) = value.as_i64() else {
164
+ anyhow::bail!("settings.memory_stale_days must be an integer");
165
+ };
166
+ if n < 0 {
167
+ anyhow::bail!("settings.memory_stale_days must be >= 0");
168
+ }
169
+ config.settings.memory_stale_days = n;
170
+ applied.push(format!("settings.memory_stale_days = {n}"));
171
+ }
172
+ "settings.memory_injected_gc_days" => {
173
+ let Some(n) = value.as_i64() else {
174
+ anyhow::bail!("settings.memory_injected_gc_days must be an integer");
175
+ };
176
+ if n < 0 {
177
+ anyhow::bail!("settings.memory_injected_gc_days must be >= 0");
178
+ }
179
+ config.settings.memory_injected_gc_days = n;
180
+ applied.push(format!("settings.memory_injected_gc_days = {n}"));
181
+ }
102
182
  "dashboard.scan_dirs" => {
103
183
  if let Some(arr) = value.as_array() {
104
184
  config.dashboard.scan_dirs = arr
@@ -21,7 +21,7 @@ pub fn handle(arguments: &Value) -> Result<String> {
21
21
 
22
22
  Ok(format!(
23
23
  "Initialized handoff tracking for '{}' at {}/.handoff/\n\
24
- Created: config.toml, sessions/, tasks/",
24
+ Created: config.toml, sessions/, tasks/, memory/",
25
25
  project_name,
26
26
  project_dir.display()
27
27
  ))