@vheins/local-memory-mcp 0.19.14 → 0.19.16

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.
@@ -1748,7 +1748,7 @@ var TaskEntity = class extends BaseEntity {
1748
1748
  handleDuplicateTaskCode(err, taskCode, repo) {
1749
1749
  if (isSqliteError(err) && err.code === "SQLITE_CONSTRAINT_UNIQUE") {
1750
1750
  throw new Error(
1751
- `Duplicate task_code: '${taskCode}' already exists in repository '${repo}'. The task_code must be unique within the repository.`
1751
+ `Duplicate task_code: '${taskCode}' already exists in repository '${repo}'. The task_code must be unique within the repository. Omit task_code to auto-generate a new unique code.`
1752
1752
  );
1753
1753
  }
1754
1754
  throw err;
@@ -4442,7 +4442,10 @@ var TASK_TOOL_DEFINITIONS = [
4442
4442
  type: "string",
4443
4443
  description: "Repository/project name (e.g., 'local-memory-mcp'). Auto-inferred from session when omitted."
4444
4444
  },
4445
- task_code: { type: "string", description: "Unique task code (e.g. TASK-001) (Required for single task)" },
4445
+ task_code: {
4446
+ type: "string",
4447
+ description: "Unique task code (e.g. TASK-001, REFACTOR-2). Optional \u2014 auto-generated as TASK-xxx if omitted."
4448
+ },
4446
4449
  phase: { type: "string", description: "Project phase (Required for single task)" },
4447
4450
  title: {
4448
4451
  type: "string",
@@ -6611,19 +6614,19 @@ var MemoryScopeSchema = z2.object({
6611
6614
  });
6612
6615
  var MemoryTypeSchema = z2.enum(["code_fact", "decision", "mistake", "pattern", "task_archive"]);
6613
6616
  var TaskStatusSchema = z2.enum(["backlog", "pending", "in_progress", "completed", "canceled", "blocked"]);
6614
- var TaskPrioritySchema = z2.number().min(1).max(5);
6617
+ var TaskPrioritySchema = z2.coerce.number().min(1).max(5);
6615
6618
  var HandoffStatusSchema = z2.enum(["pending", "accepted", "rejected", "expired"]);
6616
6619
  var SingleMemorySchema = z2.object({
6617
6620
  code: z2.string().max(20).optional(),
6618
6621
  type: MemoryTypeSchema,
6619
6622
  title: z2.string().min(3).max(255),
6620
6623
  content: z2.string().min(10),
6621
- importance: z2.number().min(1).max(5),
6624
+ importance: z2.coerce.number().min(1).max(5),
6622
6625
  agent: z2.string().min(1),
6623
6626
  role: z2.string().optional().default("unknown"),
6624
6627
  model: z2.string().min(1),
6625
6628
  scope: MemoryScopeSchema,
6626
- ttlDays: z2.number().min(1).optional(),
6629
+ ttlDays: z2.coerce.number().min(1).optional(),
6627
6630
  supersedes: z2.string().optional(),
6628
6631
  tags: z2.array(z2.string()).optional(),
6629
6632
  metadata: z2.record(z2.string(), z2.unknown()).optional(),
@@ -6676,12 +6679,12 @@ var MemoryStoreSchema = z3.object({
6676
6679
  type: MemoryTypeSchema,
6677
6680
  title: z3.string().min(3).max(255),
6678
6681
  content: z3.string().min(10),
6679
- importance: z3.number().min(1).max(5),
6682
+ importance: z3.coerce.number().min(1).max(5),
6680
6683
  agent: z3.string().min(1),
6681
6684
  role: z3.string().optional().default("unknown"),
6682
6685
  model: z3.string().min(1),
6683
6686
  scope: MemoryScopeSchema,
6684
- ttlDays: z3.number().min(1).optional(),
6687
+ ttlDays: z3.coerce.number().min(1).optional(),
6685
6688
  supersedes: z3.string().optional(),
6686
6689
  tags: z3.array(z3.string()).optional(),
6687
6690
  metadata: z3.record(z3.string(), z3.unknown()).optional(),
@@ -6697,7 +6700,7 @@ var MemoryUpdateSchema = z3.object({
6697
6700
  type: MemoryTypeSchema.optional(),
6698
6701
  title: z3.string().min(3).max(255).optional(),
6699
6702
  content: z3.string().min(10).optional(),
6700
- importance: z3.number().min(1).max(5).optional(),
6703
+ importance: z3.coerce.number().min(1).max(5).optional(),
6701
6704
  agent: z3.string().optional(),
6702
6705
  role: z3.string().optional(),
6703
6706
  status: z3.enum(["active", "archived"]).optional(),
@@ -6719,9 +6722,9 @@ var MemorySearchSchema = z3.object({
6719
6722
  owner: z3.string().min(1),
6720
6723
  repo: z3.string().min(1).transform(normalizeRepo),
6721
6724
  types: z3.array(MemoryTypeSchema).optional(),
6722
- minImportance: z3.number().min(1).max(5).optional(),
6723
- limit: z3.number().min(1).max(100).default(5),
6724
- offset: z3.number().min(0).default(0),
6725
+ minImportance: z3.coerce.number().min(1).max(5).optional(),
6726
+ limit: z3.coerce.number().min(1).max(100).default(5),
6727
+ offset: z3.coerce.number().min(0).default(0),
6725
6728
  includeRecap: z3.boolean().default(false),
6726
6729
  current_file_path: z3.string().optional(),
6727
6730
  include_archived: z3.boolean().default(false),
@@ -6743,8 +6746,8 @@ var MemoryAcknowledgeSchema = z3.object({
6743
6746
  var MemoryRecapSchema = z3.object({
6744
6747
  owner: z3.string().min(1, "owner is required \u2014 provide it explicitly or configure MCP workspace roots"),
6745
6748
  repo: z3.string().min(1, "repo is required \u2014 provide it explicitly or configure MCP workspace roots").transform(normalizeRepo),
6746
- limit: z3.number().min(1).max(50).default(20),
6747
- offset: z3.number().min(0).default(0),
6749
+ limit: z3.coerce.number().min(1).max(50).default(20),
6750
+ offset: z3.coerce.number().min(0).default(0),
6748
6751
  structured: z3.boolean().default(false)
6749
6752
  });
6750
6753
  var MemoryDeleteSchema = z3.object({
@@ -6784,8 +6787,8 @@ var MemorySynthesizeSchema = z3.object({
6784
6787
  include_summary: z3.boolean().default(true),
6785
6788
  include_tasks: z3.boolean().default(true),
6786
6789
  use_tools: z3.boolean().default(true),
6787
- max_iterations: z3.number().int().min(1).max(5).default(3),
6788
- max_tokens: z3.number().int().min(128).max(4e3).default(1200),
6790
+ max_iterations: z3.coerce.number().int().min(1).max(5).default(3),
6791
+ max_tokens: z3.coerce.number().int().min(128).max(4e3).default(1200),
6789
6792
  structured: z3.boolean().default(false)
6790
6793
  });
6791
6794
 
@@ -6851,7 +6854,7 @@ var SingleTaskCreateSchema = z4.object({
6851
6854
  metadata: TaskMetadataSchema,
6852
6855
  parent_id: z4.string().optional(),
6853
6856
  depends_on: z4.string().optional(),
6854
- est_tokens: z4.number().int().min(0).optional()
6857
+ est_tokens: z4.coerce.number().int().min(0).optional()
6855
6858
  });
6856
6859
  var TaskStatusListSchema = z4.string().refine(
6857
6860
  (val) => {
@@ -6880,7 +6883,7 @@ var TaskCreateSchema = z4.object({
6880
6883
  metadata: z4.record(z4.string(), z4.unknown()).optional(),
6881
6884
  parent_id: z4.string().optional(),
6882
6885
  depends_on: z4.string().optional(),
6883
- est_tokens: z4.number().int().min(0).optional(),
6886
+ est_tokens: z4.coerce.number().int().min(0).optional(),
6884
6887
  // Allow bulk tasks
6885
6888
  tasks: z4.array(SingleTaskCreateSchema).min(1).optional(),
6886
6889
  structured: z4.boolean().default(false)
@@ -6918,7 +6921,7 @@ var TaskUpdateSchema = z4.object({
6918
6921
  suggested_skills: z4.array(z4.string()).optional(),
6919
6922
  parent_id: z4.string().optional(),
6920
6923
  depends_on: z4.string().optional(),
6921
- est_tokens: z4.number().int().min(0).optional(),
6924
+ est_tokens: z4.coerce.number().int().min(0).optional(),
6922
6925
  commit_id: z4.string().optional(),
6923
6926
  changed_files: z4.array(z4.string()).optional(),
6924
6927
  force: z4.boolean().optional(),
@@ -6937,8 +6940,8 @@ var TaskListSchema = z4.object({
6937
6940
  status: TaskStatusListSchema.default("backlog,pending,in_progress,blocked"),
6938
6941
  phase: z4.string().optional(),
6939
6942
  query: z4.string().optional(),
6940
- limit: z4.number().min(1).max(100).default(15),
6941
- offset: z4.number().min(0).default(0),
6943
+ limit: z4.coerce.number().min(1).max(100).default(15),
6944
+ offset: z4.coerce.number().min(0).default(0),
6942
6945
  structured: z4.boolean().default(false)
6943
6946
  });
6944
6947
  var TaskSearchSchema = z4.object({
@@ -6947,9 +6950,9 @@ var TaskSearchSchema = z4.object({
6947
6950
  query: z4.string().min(1),
6948
6951
  status: z4.string().optional(),
6949
6952
  phase: z4.string().optional(),
6950
- priority: z4.number().min(1).max(5).optional(),
6951
- limit: z4.number().min(1).max(100).default(10),
6952
- offset: z4.number().min(0).default(0),
6953
+ priority: z4.coerce.number().min(1).max(5).optional(),
6954
+ limit: z4.coerce.number().min(1).max(100).default(10),
6955
+ offset: z4.coerce.number().min(0).default(0),
6953
6956
  structured: z4.boolean().default(false)
6954
6957
  });
6955
6958
  var TaskDeleteSchema = z4.object({
@@ -7009,8 +7012,8 @@ var HandoffListSchema = z5.object({
7009
7012
  status: HandoffStatusSchema.optional(),
7010
7013
  from_agent: z5.string().min(1).optional(),
7011
7014
  to_agent: z5.string().min(1).optional(),
7012
- limit: z5.number().min(1).max(100).default(20),
7013
- offset: z5.number().min(0).default(0),
7015
+ limit: z5.coerce.number().min(1).max(100).default(20),
7016
+ offset: z5.coerce.number().min(0).default(0),
7014
7017
  structured: z5.boolean().default(false)
7015
7018
  });
7016
7019
  var TaskClaimSchema = z5.object({
@@ -7032,8 +7035,8 @@ var ClaimListSchema = z5.object({
7032
7035
  repo: z5.string().transform(normalizeRepo).optional().default(""),
7033
7036
  agent: z5.string().min(1).optional(),
7034
7037
  active_only: z5.boolean().default(true),
7035
- limit: z5.number().min(1).max(100).default(20),
7036
- offset: z5.number().min(0).default(0),
7038
+ limit: z5.coerce.number().min(1).max(100).default(20),
7039
+ offset: z5.coerce.number().min(0).default(0),
7037
7040
  structured: z5.boolean().default(false)
7038
7041
  });
7039
7042
  var ClaimReleaseSchema = z5.object({
@@ -7113,8 +7116,8 @@ var StandardSearchSchema = z6.object({
7113
7116
  owner: z6.string().optional().default(""),
7114
7117
  repo: z6.string().transform(normalizeRepo).optional(),
7115
7118
  is_global: z6.boolean().optional(),
7116
- limit: z6.number().min(1).max(100).default(20),
7117
- offset: z6.number().min(0).default(0),
7119
+ limit: z6.coerce.number().min(1).max(100).default(20),
7120
+ offset: z6.coerce.number().min(0).default(0),
7118
7121
  structured: z6.boolean().default(false)
7119
7122
  });
7120
7123
  var StandardDeleteSchema = z6.object({
@@ -7148,7 +7151,7 @@ var AgentContextSchema = z7.object({
7148
7151
  repo: z7.string().min(1),
7149
7152
  objective: z7.string().optional(),
7150
7153
  type_filter: z7.enum(["code_fact", "decision", "mistake", "pattern", "task_archive"]).optional(),
7151
- limit: z7.number().min(1).max(100).default(5),
7154
+ limit: z7.coerce.number().min(1).max(100).default(5),
7152
7155
  structured: z7.boolean().default(false)
7153
7156
  });
7154
7157
  var DecisionLogSchema = z7.object({
@@ -15,7 +15,7 @@ import {
15
15
  handleTaskClaim,
16
16
  listResources,
17
17
  logger
18
- } from "../chunk-3ZCTWRSA.js";
18
+ } from "../chunk-ZG2WJU7H.js";
19
19
 
20
20
  // src/dashboard/server.ts
21
21
  import express from "express";
@@ -62,7 +62,7 @@ import {
62
62
  parseRepoInput,
63
63
  rankCompletionValues,
64
64
  toContextSlug
65
- } from "../chunk-3ZCTWRSA.js";
65
+ } from "../chunk-ZG2WJU7H.js";
66
66
 
67
67
  // src/mcp/server.ts
68
68
  import { serveStdio } from "@modelcontextprotocol/server/stdio";
@@ -75,8 +75,8 @@ import path from "path";
75
75
  import { fileURLToPath } from "url";
76
76
  var __dirname = path.dirname(fileURLToPath(import.meta.url));
77
77
  var pkgVersion = "0.1.0";
78
- if ("0.19.14") {
79
- pkgVersion = "0.19.14";
78
+ if ("0.19.16") {
79
+ pkgVersion = "0.19.16";
80
80
  } else {
81
81
  let searchDir = __dirname;
82
82
  for (let i = 0; i < 5; i++) {
@@ -2391,7 +2391,9 @@ async function handleTaskCreate(args, storage) {
2391
2391
  throw new Error(`Duplicate task_code in request: '${code}'`);
2392
2392
  }
2393
2393
  if (existingCodes.has(code)) {
2394
- throw new Error(`Duplicate task_code: '${code}' already exists in repository '${repo}'`);
2394
+ throw new Error(
2395
+ `Duplicate task_code: '${code}' already exists in repository '${repo}'. Omit task_code to auto-generate, or use task-list/task-search to find available codes.`
2396
+ );
2395
2397
  }
2396
2398
  codesInRequest.add(code);
2397
2399
  let normalizedStatus = taskData.status || "backlog";
@@ -2472,7 +2474,9 @@ async function handleTaskCreate(args, storage) {
2472
2474
  let effectiveStatus = requestedStatus || "backlog";
2473
2475
  const resolvedCode = task_code || generateNextCode(owner ?? "", repo, "task", storage);
2474
2476
  if (storage.tasks.isTaskCodeDuplicate(owner, repo, resolvedCode)) {
2475
- throw new Error(`Duplicate task_code: '${resolvedCode}' already exists in repository '${repo}'`);
2477
+ throw new Error(
2478
+ `Duplicate task_code: '${resolvedCode}' already exists in repository '${repo}'. Omit task_code to auto-generate, or use task-list/task-search to find available codes.`
2479
+ );
2476
2480
  }
2477
2481
  if (requestedStatus !== "backlog" && requestedStatus !== "pending" && requestedStatus !== void 0) {
2478
2482
  throw new Error("New tasks must be created with status 'backlog' or 'pending'.");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.19.14",
3
+ "version": "0.19.16",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",