@basegrid_tech/mcp 0.15.1 → 0.15.3
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/dist/index.js +150 -10
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -8,19 +8,59 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|
|
8
8
|
import fs4 from "fs";
|
|
9
9
|
|
|
10
10
|
// ../shared/src/types.ts
|
|
11
|
-
var CLAUDE_DEFAULT_MODEL_ID = "claude-
|
|
11
|
+
var CLAUDE_DEFAULT_MODEL_ID = "claude-opus-5";
|
|
12
12
|
var CLAUDE_DEFAULT_EFFORT = "medium";
|
|
13
13
|
var CLAUDE_OBSOLETE_MODEL_IDS = [
|
|
14
14
|
"claude-opus-4-7[1m]",
|
|
15
|
-
"claude-opus-4-6[1m]"
|
|
15
|
+
"claude-opus-4-6[1m]",
|
|
16
|
+
// Opus 4.1 уходит в retirement 2026-08-05 — после этой даты Anthropic
|
|
17
|
+
// отвечает 404, поэтому убран из пикера и мигрируется на дефолт.
|
|
18
|
+
"claude-opus-4-1"
|
|
16
19
|
];
|
|
17
|
-
var
|
|
20
|
+
var CODEX_EFFORT_LEVELS = [
|
|
21
|
+
"low",
|
|
22
|
+
"medium",
|
|
23
|
+
"high",
|
|
24
|
+
"xhigh",
|
|
25
|
+
"max",
|
|
26
|
+
"ultra"
|
|
27
|
+
];
|
|
28
|
+
var CODEX_DEFAULT_MODEL_ID = "gpt-5.6-terra";
|
|
18
29
|
var CODEX_OBSOLETE_MODEL_IDS = [
|
|
19
30
|
"gpt-5-codex",
|
|
20
|
-
"gpt-5.
|
|
21
|
-
|
|
31
|
+
"gpt-5.2",
|
|
32
|
+
// Выпали из shipping-списка CLI к 0.145.0. `gpt-5.4-mini` наоборот
|
|
33
|
+
// вернулся в пикер, поэтому в obsolete его больше нет.
|
|
34
|
+
"gpt-5.4",
|
|
35
|
+
"gpt-5.3-codex-spark",
|
|
36
|
+
"gpt-5.3-codex",
|
|
37
|
+
"gpt-5.2-codex"
|
|
22
38
|
];
|
|
23
39
|
var CODEX_DEFAULT_EFFORT = "medium";
|
|
40
|
+
var CODEX_EFFORTS_BY_MODEL = {
|
|
41
|
+
"gpt-5.6-terra": ["low", "medium", "high", "xhigh", "max", "ultra"],
|
|
42
|
+
"gpt-5.6-luna": ["low", "medium", "high", "xhigh", "max"],
|
|
43
|
+
"gpt-5.5": ["low", "medium", "high", "xhigh"],
|
|
44
|
+
"gpt-5.4-mini": ["low", "medium", "high", "xhigh"]
|
|
45
|
+
};
|
|
46
|
+
var CODEX_EFFORTS_FALLBACK = ["low", "medium", "high", "xhigh"];
|
|
47
|
+
function getCodexEfforts(model) {
|
|
48
|
+
if (!model) return CODEX_EFFORTS_FALLBACK;
|
|
49
|
+
return CODEX_EFFORTS_BY_MODEL[model] ?? CODEX_EFFORTS_FALLBACK;
|
|
50
|
+
}
|
|
51
|
+
function normalizeCodexEffort(value, model) {
|
|
52
|
+
const supported = getCodexEfforts(model);
|
|
53
|
+
const raw = value === "minimal" ? "low" : value;
|
|
54
|
+
if (typeof raw === "string" && supported.includes(raw)) {
|
|
55
|
+
return raw;
|
|
56
|
+
}
|
|
57
|
+
const idx = CODEX_EFFORT_LEVELS.indexOf(raw);
|
|
58
|
+
if (idx < 0) return CODEX_DEFAULT_EFFORT;
|
|
59
|
+
for (let i = idx; i >= 0; i--) {
|
|
60
|
+
if (supported.includes(CODEX_EFFORT_LEVELS[i])) return CODEX_EFFORT_LEVELS[i];
|
|
61
|
+
}
|
|
62
|
+
return CODEX_DEFAULT_EFFORT;
|
|
63
|
+
}
|
|
24
64
|
var DEFAULT_WORKSPACE = {
|
|
25
65
|
id: "personal",
|
|
26
66
|
name: "Personal",
|
|
@@ -675,6 +715,12 @@ function createSchema() {
|
|
|
675
715
|
updated_at INTEGER NOT NULL
|
|
676
716
|
);
|
|
677
717
|
|
|
718
|
+
CREATE TABLE IF NOT EXISTS worktree_view_modes (
|
|
719
|
+
worktree_path TEXT PRIMARY KEY,
|
|
720
|
+
view_mode TEXT NOT NULL,
|
|
721
|
+
updated_at INTEGER NOT NULL
|
|
722
|
+
);
|
|
723
|
+
|
|
678
724
|
CREATE TABLE IF NOT EXISTS worktree_list_cache (
|
|
679
725
|
project_path TEXT NOT NULL,
|
|
680
726
|
worktree_path TEXT NOT NULL,
|
|
@@ -685,6 +731,7 @@ function createSchema() {
|
|
|
685
731
|
alias_generated_at INTEGER,
|
|
686
732
|
sort_order INTEGER NOT NULL DEFAULT 0,
|
|
687
733
|
is_auto_generated INTEGER,
|
|
734
|
+
ownership TEXT,
|
|
688
735
|
updated_at INTEGER NOT NULL,
|
|
689
736
|
PRIMARY KEY (project_path, worktree_path)
|
|
690
737
|
);
|
|
@@ -692,6 +739,17 @@ function createSchema() {
|
|
|
692
739
|
CREATE INDEX IF NOT EXISTS idx_worktree_list_project
|
|
693
740
|
ON worktree_list_cache(project_path);
|
|
694
741
|
|
|
742
|
+
CREATE TABLE IF NOT EXISTS external_worktree_settings (
|
|
743
|
+
project_path TEXT PRIMARY KEY,
|
|
744
|
+
visibility TEXT NOT NULL DEFAULT 'hide',
|
|
745
|
+
prompt_dismissed_at INTEGER,
|
|
746
|
+
discovery_suppressed_at INTEGER,
|
|
747
|
+
imported_paths TEXT NOT NULL DEFAULT '[]',
|
|
748
|
+
hidden_paths TEXT NOT NULL DEFAULT '[]',
|
|
749
|
+
baseline_paths TEXT NOT NULL DEFAULT '[]',
|
|
750
|
+
updated_at INTEGER NOT NULL
|
|
751
|
+
);
|
|
752
|
+
|
|
695
753
|
CREATE TABLE IF NOT EXISTS usage_metrics (
|
|
696
754
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
697
755
|
terminal_id TEXT NOT NULL,
|
|
@@ -1306,6 +1364,53 @@ function migrateSchema(d) {
|
|
|
1306
1364
|
})();
|
|
1307
1365
|
logger_default.info("[database] migrated schema to version 27 (projects.basegrid_config overrides)");
|
|
1308
1366
|
}
|
|
1367
|
+
if (version < 28) {
|
|
1368
|
+
d.transaction(() => {
|
|
1369
|
+
const cols = d.prepare("PRAGMA table_info(worktree_list_cache)").all();
|
|
1370
|
+
if (!cols.some((c) => c.name === "ownership")) {
|
|
1371
|
+
d.exec("ALTER TABLE worktree_list_cache ADD COLUMN ownership TEXT");
|
|
1372
|
+
}
|
|
1373
|
+
d.exec("UPDATE worktree_list_cache SET ownership = 'managed' WHERE ownership IS NULL");
|
|
1374
|
+
d.prepare(
|
|
1375
|
+
"INSERT OR REPLACE INTO schema_meta (key, value) VALUES ('schema_version', '28')"
|
|
1376
|
+
).run();
|
|
1377
|
+
})();
|
|
1378
|
+
logger_default.info("[database] migrated schema to version 28 (worktree_list_cache.ownership)");
|
|
1379
|
+
}
|
|
1380
|
+
if (version < 29) {
|
|
1381
|
+
d.transaction(() => {
|
|
1382
|
+
d.exec(`
|
|
1383
|
+
CREATE TABLE IF NOT EXISTS external_worktree_settings (
|
|
1384
|
+
project_path TEXT PRIMARY KEY,
|
|
1385
|
+
visibility TEXT NOT NULL DEFAULT 'hide',
|
|
1386
|
+
prompt_dismissed_at INTEGER,
|
|
1387
|
+
discovery_suppressed_at INTEGER,
|
|
1388
|
+
imported_paths TEXT NOT NULL DEFAULT '[]',
|
|
1389
|
+
hidden_paths TEXT NOT NULL DEFAULT '[]',
|
|
1390
|
+
baseline_paths TEXT NOT NULL DEFAULT '[]',
|
|
1391
|
+
updated_at INTEGER NOT NULL
|
|
1392
|
+
);
|
|
1393
|
+
`);
|
|
1394
|
+
d.prepare(
|
|
1395
|
+
"INSERT OR REPLACE INTO schema_meta (key, value) VALUES ('schema_version', '29')"
|
|
1396
|
+
).run();
|
|
1397
|
+
})();
|
|
1398
|
+
logger_default.info("[database] migrated schema to version 29 (external_worktree_settings)");
|
|
1399
|
+
}
|
|
1400
|
+
if (version < 30) {
|
|
1401
|
+
d.transaction(() => {
|
|
1402
|
+
const cols = d.prepare("PRAGMA table_info(external_worktree_settings)").all();
|
|
1403
|
+
if (!cols.some((c) => c.name === "hidden_paths")) {
|
|
1404
|
+
d.exec(
|
|
1405
|
+
"ALTER TABLE external_worktree_settings ADD COLUMN hidden_paths TEXT NOT NULL DEFAULT '[]'"
|
|
1406
|
+
);
|
|
1407
|
+
}
|
|
1408
|
+
d.prepare(
|
|
1409
|
+
"INSERT OR REPLACE INTO schema_meta (key, value) VALUES ('schema_version', '30')"
|
|
1410
|
+
).run();
|
|
1411
|
+
})();
|
|
1412
|
+
logger_default.info("[database] migrated schema to version 30 (external_worktree_settings.hidden_paths)");
|
|
1413
|
+
}
|
|
1309
1414
|
}
|
|
1310
1415
|
function verifySchema(d) {
|
|
1311
1416
|
const expectedTables = [
|
|
@@ -1472,6 +1577,16 @@ function verifySchema(d) {
|
|
|
1472
1577
|
{
|
|
1473
1578
|
column: "is_auto_generated",
|
|
1474
1579
|
ddl: "ALTER TABLE worktree_list_cache ADD COLUMN is_auto_generated INTEGER"
|
|
1580
|
+
},
|
|
1581
|
+
{
|
|
1582
|
+
column: "ownership",
|
|
1583
|
+
ddl: "ALTER TABLE worktree_list_cache ADD COLUMN ownership TEXT"
|
|
1584
|
+
}
|
|
1585
|
+
],
|
|
1586
|
+
external_worktree_settings: [
|
|
1587
|
+
{
|
|
1588
|
+
column: "hidden_paths",
|
|
1589
|
+
ddl: "ALTER TABLE external_worktree_settings ADD COLUMN hidden_paths TEXT NOT NULL DEFAULT '[]'"
|
|
1475
1590
|
}
|
|
1476
1591
|
]
|
|
1477
1592
|
};
|
|
@@ -1526,6 +1641,7 @@ var DEFAULTS_KEYS_MAP = {
|
|
|
1526
1641
|
minimizeToTray: true,
|
|
1527
1642
|
slashCommandFallbackDescription: true,
|
|
1528
1643
|
taskViewMode: true,
|
|
1644
|
+
usagePopoverMode: true,
|
|
1529
1645
|
taskListCollapsedStatuses: true,
|
|
1530
1646
|
layoutMode: true,
|
|
1531
1647
|
mainViewMode: true,
|
|
@@ -2222,6 +2338,22 @@ function listWorkflowRunsByTask(taskId, limit = 20) {
|
|
|
2222
2338
|
nodeStates: nodesByRunId.get(r.id) ?? []
|
|
2223
2339
|
}));
|
|
2224
2340
|
}
|
|
2341
|
+
var LIMIT_HISTORY_WINDOW_MINUTES = {
|
|
2342
|
+
session: 300,
|
|
2343
|
+
// Claude, 5 часов
|
|
2344
|
+
weekly: 10080,
|
|
2345
|
+
// Claude, 7 дней
|
|
2346
|
+
fable: 10080,
|
|
2347
|
+
// Claude Fable, 7 дней
|
|
2348
|
+
// Длительность окон Codex зависит от тарифа (free — одно 30-дневное ведро,
|
|
2349
|
+
// платные — 5ч + неделя), а сервер её не знает. Отдаём с запасом на 30 дней;
|
|
2350
|
+
// спарклайн в рендерере обрезает точки по реальному окну.
|
|
2351
|
+
"codex-session": 43200,
|
|
2352
|
+
"codex-weekly": 43200
|
|
2353
|
+
};
|
|
2354
|
+
var LIMIT_HISTORY_WINDOW_TYPES = Object.keys(
|
|
2355
|
+
LIMIT_HISTORY_WINDOW_MINUTES
|
|
2356
|
+
);
|
|
2225
2357
|
|
|
2226
2358
|
// ../server/src/config-manager.ts
|
|
2227
2359
|
var DB_DIR = getDataDir();
|
|
@@ -2308,20 +2440,28 @@ var ConfigManager = class {
|
|
|
2308
2440
|
seedCodexDefaults(config) {
|
|
2309
2441
|
const stored = config.defaults.codexDefaultModel;
|
|
2310
2442
|
const needsModel = stored == null || typeof stored === "string" && CODEX_OBSOLETE_MODEL_IDS.includes(stored);
|
|
2311
|
-
const
|
|
2312
|
-
|
|
2443
|
+
const model = needsModel ? CODEX_DEFAULT_MODEL_ID : stored;
|
|
2444
|
+
const storedEffort = config.defaults.codexDefaultEffort;
|
|
2445
|
+
const effort = storedEffort == null ? CODEX_DEFAULT_EFFORT : normalizeCodexEffort(storedEffort, model);
|
|
2446
|
+
const needsEffort = effort !== storedEffort;
|
|
2447
|
+
const storedReviewEffort = config.defaults.reviewCodexEffort;
|
|
2448
|
+
const reviewModel = config.defaults.reviewCodexModel ?? model;
|
|
2449
|
+
const reviewEffort = storedReviewEffort == null ? void 0 : normalizeCodexEffort(storedReviewEffort, reviewModel);
|
|
2450
|
+
const needsReviewEffort = reviewEffort !== void 0 && reviewEffort !== storedReviewEffort;
|
|
2451
|
+
if (!needsModel && !needsEffort && !needsReviewEffort) return config;
|
|
2313
2452
|
const seeded = {
|
|
2314
2453
|
...config,
|
|
2315
2454
|
defaults: {
|
|
2316
2455
|
...config.defaults,
|
|
2317
2456
|
...needsModel ? { codexDefaultModel: CODEX_DEFAULT_MODEL_ID } : {},
|
|
2318
|
-
...needsEffort ? { codexDefaultEffort:
|
|
2457
|
+
...needsEffort ? { codexDefaultEffort: effort } : {},
|
|
2458
|
+
...needsReviewEffort ? { reviewCodexEffort: reviewEffort } : {}
|
|
2319
2459
|
}
|
|
2320
2460
|
};
|
|
2321
2461
|
try {
|
|
2322
2462
|
saveConfig(seeded);
|
|
2323
2463
|
logger_default.info(
|
|
2324
|
-
`[config-manager] seeded codex defaults: model=${needsModel ? CODEX_DEFAULT_MODEL_ID : "(kept)"} effort=${needsEffort ?
|
|
2464
|
+
`[config-manager] seeded codex defaults: model=${needsModel ? CODEX_DEFAULT_MODEL_ID : "(kept)"} effort=${needsEffort ? effort : "(kept)"} reviewEffort=${needsReviewEffort ? reviewEffort : "(kept)"}`
|
|
2325
2465
|
);
|
|
2326
2466
|
} catch (err) {
|
|
2327
2467
|
logger_default.warn(
|
|
@@ -3769,7 +3909,7 @@ console.warn = (...args) => _origError("[mcp:warn]", ...args);
|
|
|
3769
3909
|
console.error = (...args) => _origError("[mcp:error]", ...args);
|
|
3770
3910
|
async function main() {
|
|
3771
3911
|
configManager.init();
|
|
3772
|
-
const version = true ? "0.15.
|
|
3912
|
+
const version = true ? "0.15.3" : createRequire(import.meta.url)("../package.json").version;
|
|
3773
3913
|
const server = createMcpServer(version);
|
|
3774
3914
|
const transport = new StdioServerTransport();
|
|
3775
3915
|
await server.connect(transport);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@basegrid_tech/mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.3",
|
|
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.15.
|
|
46
|
-
"@basegrid/shared": "0.15.
|
|
45
|
+
"@basegrid/server": "0.15.3",
|
|
46
|
+
"@basegrid/shared": "0.15.3",
|
|
47
47
|
"tsup": "^8.5.1",
|
|
48
48
|
"tsx": "^4.21.0",
|
|
49
49
|
"typescript": "^6.0.3"
|