@basegrid_tech/mcp 0.11.1 → 0.12.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.
Files changed (2) hide show
  1. package/dist/index.js +58 -7
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -364,7 +364,8 @@ function createSchema() {
364
364
  icon TEXT,
365
365
  icon_color TEXT,
366
366
  host_ids TEXT,
367
- project_id TEXT
367
+ project_id TEXT,
368
+ basegrid_config TEXT
368
369
  );
369
370
  -- UNIQUE INDEX \u043F\u043E project_id \u0441\u043E\u0437\u0434\u0430\u0451\u0442\u0441\u044F \u0432 \u043C\u0438\u0433\u0440\u0430\u0446\u0438\u0438 v17 (\u0441\u043C. migrateSchema):
370
371
  -- \u043D\u0430 upgrade-\u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0438 \u043A\u043E\u043B\u043E\u043D\u043A\u0438 project_id \u0435\u0449\u0451 \u043D\u0435\u0442, \u0438 CREATE INDEX \u0437\u0434\u0435\u0441\u044C \u043F\u0430\u0434\u0430\u043B \u0431\u044B.
@@ -623,6 +624,19 @@ function createSchema() {
623
624
  ON usage_metrics(project_path, timestamp);
624
625
  CREATE INDEX IF NOT EXISTS idx_usage_metrics_ts
625
626
  ON usage_metrics(timestamp);
627
+
628
+ CREATE TABLE IF NOT EXISTS usage_limit_snapshots (
629
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
630
+ window_type TEXT NOT NULL,
631
+ snapshot_at INTEGER NOT NULL,
632
+ used_percent REAL NOT NULL,
633
+ resets_at INTEGER
634
+ );
635
+
636
+ -- Unique per (window, fetch time): also serves the ordered range scan the
637
+ -- sparkline reads with, so no extra index is needed.
638
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_usage_limit_snap_unique
639
+ ON usage_limit_snapshots(window_type, snapshot_at);
626
640
  `);
627
641
  migrateSchema(d);
628
642
  verifySchema(d);
@@ -1193,6 +1207,18 @@ function migrateSchema(d) {
1193
1207
  })();
1194
1208
  logger_default.info("[database] migrated schema to version 26 (worktree is_auto_generated flag)");
1195
1209
  }
1210
+ if (version < 27) {
1211
+ d.transaction(() => {
1212
+ const cols = d.prepare("PRAGMA table_info(projects)").all();
1213
+ if (!cols.some((c) => c.name === "basegrid_config")) {
1214
+ d.exec("ALTER TABLE projects ADD COLUMN basegrid_config TEXT");
1215
+ }
1216
+ d.prepare(
1217
+ "INSERT OR REPLACE INTO schema_meta (key, value) VALUES ('schema_version', '27')"
1218
+ ).run();
1219
+ })();
1220
+ logger_default.info("[database] migrated schema to version 27 (projects.basegrid_config overrides)");
1221
+ }
1196
1222
  }
1197
1223
  function verifySchema(d) {
1198
1224
  const expectedTables = [
@@ -1263,6 +1289,10 @@ function verifySchema(d) {
1263
1289
  {
1264
1290
  column: "project_id",
1265
1291
  ddl: "ALTER TABLE projects ADD COLUMN project_id TEXT"
1292
+ },
1293
+ {
1294
+ column: "basegrid_config",
1295
+ ddl: "ALTER TABLE projects ADD COLUMN basegrid_config TEXT"
1266
1296
  }
1267
1297
  ],
1268
1298
  workflows: [
@@ -1546,7 +1576,7 @@ function saveConfig(config) {
1546
1576
  }
1547
1577
  d.prepare("DELETE FROM projects").run();
1548
1578
  const insertProject = d.prepare(
1549
- "INSERT INTO projects (name, path, preferred_agents, icon, icon_color, host_ids, workspace_id, project_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
1579
+ "INSERT INTO projects (name, path, preferred_agents, icon, icon_color, host_ids, workspace_id, project_id, basegrid_config) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
1550
1580
  );
1551
1581
  for (const p of config.projects) {
1552
1582
  const projectId = p.projectId ?? existingIds.get(p.name) ?? randomUUID();
@@ -1558,7 +1588,8 @@ function saveConfig(config) {
1558
1588
  p.iconColor ?? null,
1559
1589
  p.hostIds ? JSON.stringify(p.hostIds) : null,
1560
1590
  p.workspaceId ?? "personal",
1561
- projectId
1591
+ projectId,
1592
+ serializeBasegridConfig(p.basegridConfig)
1562
1593
  );
1563
1594
  }
1564
1595
  d.prepare("DELETE FROM workflows").run();
@@ -1750,7 +1781,7 @@ function dbGetProject(name) {
1750
1781
  function dbInsertProject(project) {
1751
1782
  const projectId = project.projectId ?? randomUUID();
1752
1783
  getDb().prepare(
1753
- "INSERT INTO projects (name, path, preferred_agents, icon, icon_color, host_ids, workspace_id, project_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
1784
+ "INSERT INTO projects (name, path, preferred_agents, icon, icon_color, host_ids, workspace_id, project_id, basegrid_config) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
1754
1785
  ).run(
1755
1786
  project.name,
1756
1787
  project.path,
@@ -1759,7 +1790,8 @@ function dbInsertProject(project) {
1759
1790
  project.iconColor ?? null,
1760
1791
  project.hostIds ? JSON.stringify(project.hostIds) : null,
1761
1792
  project.workspaceId ?? "personal",
1762
- projectId
1793
+ projectId,
1794
+ serializeBasegridConfig(project.basegridConfig)
1763
1795
  );
1764
1796
  }
1765
1797
  function dbUpdateProject(name, updates) {
@@ -1789,6 +1821,10 @@ function dbUpdateProject(name, updates) {
1789
1821
  sets.push("workspace_id = ?");
1790
1822
  params.push(updates.workspaceId);
1791
1823
  }
1824
+ if (updates.basegridConfig !== void 0) {
1825
+ sets.push("basegrid_config = ?");
1826
+ params.push(serializeBasegridConfig(updates.basegridConfig));
1827
+ }
1792
1828
  if (sets.length === 0) return;
1793
1829
  params.push(name);
1794
1830
  getDb().prepare(`UPDATE projects SET ${sets.join(", ")} WHERE name = ?`).run(...params);
@@ -1932,6 +1968,7 @@ function rowToTask(r) {
1932
1968
  };
1933
1969
  }
1934
1970
  function rowToProject(r) {
1971
+ const basegridConfig = parseBasegridConfig(r.basegrid_config);
1935
1972
  return {
1936
1973
  name: r.name,
1937
1974
  path: r.path,
@@ -1940,9 +1977,23 @@ function rowToProject(r) {
1940
1977
  ...r.icon_color != null && { iconColor: r.icon_color },
1941
1978
  ...r.host_ids != null && { hostIds: JSON.parse(r.host_ids) },
1942
1979
  workspaceId: r.workspace_id ?? "personal",
1943
- ...r.project_id != null && r.project_id !== "" && { projectId: r.project_id }
1980
+ ...r.project_id != null && r.project_id !== "" && { projectId: r.project_id },
1981
+ ...basegridConfig && { basegridConfig }
1944
1982
  };
1945
1983
  }
1984
+ function parseBasegridConfig(raw) {
1985
+ if (!raw) return null;
1986
+ try {
1987
+ const parsed = JSON.parse(raw);
1988
+ return parsed && typeof parsed === "object" ? parsed : null;
1989
+ } catch {
1990
+ return null;
1991
+ }
1992
+ }
1993
+ function serializeBasegridConfig(cfg) {
1994
+ if (!cfg || Object.keys(cfg).length === 0) return null;
1995
+ return JSON.stringify(cfg);
1996
+ }
1946
1997
  function rowToWorkflow(r) {
1947
1998
  return {
1948
1999
  id: r.id,
@@ -3586,7 +3637,7 @@ console.warn = (...args) => _origError("[mcp:warn]", ...args);
3586
3637
  console.error = (...args) => _origError("[mcp:error]", ...args);
3587
3638
  async function main() {
3588
3639
  configManager.init();
3589
- const version = true ? "0.11.1" : createRequire(import.meta.url)("../package.json").version;
3640
+ const version = true ? "0.12.0" : createRequire(import.meta.url)("../package.json").version;
3590
3641
  const server = createMcpServer(version);
3591
3642
  const transport = new StdioServerTransport();
3592
3643
  await server.connect(transport);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@basegrid_tech/mcp",
3
- "version": "0.11.1",
3
+ "version": "0.12.0",
4
4
  "description": "BaseGrid MCP server — task management, git, and workflow tools for AI coding agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -42,8 +42,8 @@
42
42
  "zod": "^4.3.6"
43
43
  },
44
44
  "devDependencies": {
45
- "@basegrid/server": "0.11.1",
46
- "@basegrid/shared": "0.11.1",
45
+ "@basegrid/server": "0.12.0",
46
+ "@basegrid/shared": "0.12.0",
47
47
  "tsup": "^8.5.1",
48
48
  "tsx": "^4.21.0",
49
49
  "typescript": "^6.0.3"