drafted 1.19.33 → 1.19.34
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/mcp/server.mjs +30 -10
- package/package.json +1 -1
package/mcp/server.mjs
CHANGED
|
@@ -3339,16 +3339,38 @@ tool('fs', 'Navigate Drafted like a local filesystem. A FOLDER is the single con
|
|
|
3339
3339
|
out.push(body ? `${title}:\n${body}` : `${title}: no matches`);
|
|
3340
3340
|
};
|
|
3341
3341
|
|
|
3342
|
+
// PER-HIT, not a footer. Whether a wiki page or skill is git-owned depends
|
|
3343
|
+
// on the FOLDER it sits in, and two hits with the same-shaped path can
|
|
3344
|
+
// differ: /o/<org>/wiki/x is read-only in an org whose root is linked and
|
|
3345
|
+
// writable in one whose root is not. A summary line at the bottom makes
|
|
3346
|
+
// the reader cross-reference; the mark belongs on the line it describes.
|
|
3347
|
+
const repoByFolder = new Map(
|
|
3348
|
+
(Array.isArray(repos.v?.repos) ? repos.v.repos : []).map(r => [r.folderName || '', `${r.slug}@${r.branch}`])
|
|
3349
|
+
);
|
|
3350
|
+
const gitMark = (folder) => {
|
|
3351
|
+
const r = repoByFolder.get(folder ?? '');
|
|
3352
|
+
return r ? ` [git: ${r} — edit via commit]` : '';
|
|
3353
|
+
};
|
|
3354
|
+
|
|
3342
3355
|
section('Wiki', wiki, (v) => {
|
|
3343
3356
|
const hits = (v?.hits || v?.pages || v?.results || []).slice(0, 10);
|
|
3344
|
-
return hits.length ? hits.map(h => ` ${scope}${h.folder ? `/${h.folder}` : ''}/wiki/${h.path}${h.title ? ` — ${clip(h.title, 80)}` : ''}`).join('\n') : '';
|
|
3357
|
+
return hits.length ? hits.map(h => ` ${scope}${h.folder ? `/${h.folder}` : ''}/wiki/${h.path}${h.title ? ` — ${clip(h.title, 80)}` : ''}${gitMark(h.folder)}`).join('\n') : '';
|
|
3345
3358
|
});
|
|
3346
3359
|
section('Skills', skills, (v) => {
|
|
3347
3360
|
// Fewer than the other legs on purpose: skills search is fuzzy and its tail
|
|
3348
3361
|
// is weak matches, which is noise in a fan-out whose job is "where does this
|
|
3349
3362
|
// live?". fs(search, path="/skills") is the place to go deeper.
|
|
3350
3363
|
const list = (Array.isArray(v) ? v : (v?.skills || [])).slice(0, 5);
|
|
3351
|
-
return list.length ? list.map(s =>
|
|
3364
|
+
return list.length ? list.map(s => {
|
|
3365
|
+
// A repo-indexed hit IS git-owned by construction — it was read out of
|
|
3366
|
+
// a repo index, so it needs no folder lookup. Its branch comes from the
|
|
3367
|
+
// repos leg; falling back to the bare slug keeps the mark honest if
|
|
3368
|
+
// that leg failed.
|
|
3369
|
+
const mark = s.repoEntry
|
|
3370
|
+
? ` [git: ${[...repoByFolder.values()].find(v2 => v2.startsWith(`${s.repoSlug}@`)) || s.repoSlug} — edit via commit]`
|
|
3371
|
+
: gitMark(s.folder);
|
|
3372
|
+
return ` ${scope}/skills/${s.slug} — ${clip(s.description || s.name, 120)}`.trimEnd() + mark;
|
|
3373
|
+
}).join('\n') : '';
|
|
3352
3374
|
});
|
|
3353
3375
|
|
|
3354
3376
|
// NO client-side org filter on either leg. Both endpoints scope server-side
|
|
@@ -3384,14 +3406,12 @@ tool('fs', 'Navigate Drafted like a local filesystem. A FOLDER is the single con
|
|
|
3384
3406
|
: (note ? note.trimStart() : '');
|
|
3385
3407
|
});
|
|
3386
3408
|
|
|
3387
|
-
//
|
|
3388
|
-
//
|
|
3389
|
-
//
|
|
3390
|
-
//
|
|
3391
|
-
|
|
3392
|
-
.
|
|
3393
|
-
if (linked.length) {
|
|
3394
|
-
out.push(`Git-owned WIKI + SKILLS (edit those via commit; tasks + projects write normally): ${linked.join('; ')}`);
|
|
3409
|
+
// No summary footer: every affected line now carries its own mark, and two
|
|
3410
|
+
// mechanisms saying the same thing is one that can disagree. The note below
|
|
3411
|
+
// is the part a per-hit mark cannot express — that the marks are about
|
|
3412
|
+
// wiki/skills only, so a project hit under a linked folder is still writable.
|
|
3413
|
+
if (repoByFolder.size) {
|
|
3414
|
+
out.push('Marked [git: …] = wiki/skill owned by that repo; edit via commit. Projects and tasks in the same folder write normally.');
|
|
3395
3415
|
}
|
|
3396
3416
|
|
|
3397
3417
|
const searched = orgFromPath || org || null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "drafted",
|
|
3
|
-
"version": "1.19.
|
|
3
|
+
"version": "1.19.34",
|
|
4
4
|
"description": "Drafted — visual thinking surface for humans and AI agents. Renders HTML, markdown, images, and code as frames on a zoomable canvas, with MCP tools for AI agents and real-time sync for humans.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|