@cr8rcho/alkahest 0.1.69 → 0.1.71

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.
@@ -1 +1 @@
1
- {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/core/notes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../src/core/notes.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,14 @@ export declare function findProjectRoot(start: string): string;
4
4
  export declare function localSlug(root: string): string | undefined;
5
5
  /** Code map this checkout publishes to, stored alongside the slug in .alkahest/project.json. */
6
6
  export declare function localMapSlug(root: string): string | undefined;
7
- /** Resolve { root, slug, mapSlug } from any path: explicit → local file → saved creds (by root/path). */
7
+ /**
8
+ * Resolve { root, slug, mapSlug } from any path:
9
+ * explicit → local file → saved creds (by root/path) → ALKAHEST_PROJECT.
10
+ *
11
+ * The env var is the LAST fallback on purpose (same shape as ALKAHEST_TOKEN in
12
+ * credentials.ts): it lets an MCP server be configured for one project — a personal wiki,
13
+ * say — without a checkout to bind, while a real linked checkout still wins over it.
14
+ */
8
15
  export declare function resolveProject(path: string, explicitSlug?: string): {
9
16
  root: string;
10
17
  slug?: string;
@@ -54,14 +54,23 @@ export function localMapSlug(root) {
54
54
  catch { /* missing or unparsable */ }
55
55
  return undefined;
56
56
  }
57
- /** Resolve { root, slug, mapSlug } from any path: explicit → local file → saved creds (by root/path). */
57
+ /**
58
+ * Resolve { root, slug, mapSlug } from any path:
59
+ * explicit → local file → saved creds (by root/path) → ALKAHEST_PROJECT.
60
+ *
61
+ * The env var is the LAST fallback on purpose (same shape as ALKAHEST_TOKEN in
62
+ * credentials.ts): it lets an MCP server be configured for one project — a personal wiki,
63
+ * say — without a checkout to bind, while a real linked checkout still wins over it.
64
+ */
58
65
  export function resolveProject(path, explicitSlug) {
59
66
  const root = findProjectRoot(path);
60
67
  const creds = loadCredentials();
61
68
  const slug = explicitSlug ||
62
69
  localSlug(root) ||
63
70
  creds.projects?.[root]?.slug ||
64
- creds.projects?.[resolve(path || ".")]?.slug;
71
+ creds.projects?.[resolve(path || ".")]?.slug ||
72
+ process.env.ALKAHEST_PROJECT?.trim() ||
73
+ undefined;
65
74
  const mapSlug = localMapSlug(root) ||
66
75
  creds.projects?.[root]?.mapSlug ||
67
76
  creds.projects?.[resolve(path || ".")]?.mapSlug;
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"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"}
@@ -214,19 +214,20 @@ export function buildServer() {
214
214
  "node's source location (screen → sourceFile/route/title, resource → path/label) so you can open the right file " +
215
215
  "and address it. Use this to drive development from feedback: read open comments, edit the code, then call " +
216
216
  "resolve_comment. Needs an API token (ALKAHEST_TOKEN in this server's config, or a prior 'alkahest login') " +
217
- "and the project must have been published.",
217
+ "and the project named (see `project`).",
218
218
  inputSchema: {
219
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
219
220
  path: z.string().optional().describe("Project root (default: cwd)"),
220
221
  open: z.boolean().optional().describe("Only unresolved comments (default: false = all)"),
221
222
  },
222
- }, async ({ path, open }) => {
223
+ }, async ({ path, open, project }) => {
223
224
  const root = rootOf(path);
224
- const res = await pullComments(root, { open });
225
+ const res = await pullComments(root, { open, slug: project });
225
226
  if (!res.ok) {
226
227
  const hints = {
227
228
  no_token: "Set ALKAHEST_TOKEN in this MCP server's config (token from alkahest.app → Account).",
228
229
  no_api: "Set ALKAHEST_API_URL in this MCP server's config.",
229
- no_slug: "This project hasn't been published yetrun the publish tool first.",
230
+ no_slug: "Pass `project` a slug from list_projects or set ALKAHEST_PROJECT in this MCP server's config.",
230
231
  invalid_token: "The API token is invalid or revoked — create a new one at alkahest.app → Account.",
231
232
  not_found: "No accessible project for this slug.",
232
233
  };
@@ -267,9 +268,10 @@ export function buildServer() {
267
268
  inputSchema: {
268
269
  node: z.string().describe("screen id/route/title, resource id/path/label, or 'map'"),
269
270
  body: z.string().describe("the comment text"),
271
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
270
272
  path: z.string().optional().describe("Project root (default: cwd)"),
271
273
  },
272
- }, async ({ node, body, path }) => {
274
+ }, async ({ node, body, path, project }) => {
273
275
  const root = findProjectRoot(rootOf(path));
274
276
  const map = loadOrScan(root);
275
277
  if (!map)
@@ -277,11 +279,11 @@ export function buildServer() {
277
279
  const n = resolveNode(map, node);
278
280
  if (!n)
279
281
  return text(`No node matches '${node}'. Use the overview tool to list screens/resources.`);
280
- const res = await postComment(root, { node_key: n.node_key, anchor_kind: n.anchor_kind, anchor_label: n.anchor_label, body });
282
+ const res = await postComment(root, { node_key: n.node_key, anchor_kind: n.anchor_kind, anchor_label: n.anchor_label, body, slug: project });
281
283
  if (!res.ok) {
282
284
  const hints = {
283
285
  no_token: "Set ALKAHEST_TOKEN in this MCP server's config.",
284
- no_slug: "Publish this project first (publish tool).",
286
+ no_slug: "Pass `project` — a slug from list_projects — or set ALKAHEST_PROJECT in this MCP server's config.",
285
287
  forbidden: "Only the project owner or a collaborator can comment.",
286
288
  };
287
289
  return text(`Add comment failed (${res.code}): ${res.message}.${hints[res.code ?? ""] ? " " + hints[res.code ?? ""] : ""}`);
@@ -318,17 +320,18 @@ export function buildServer() {
318
320
  "already linked to an issue (creates a new one).",
319
321
  inputSchema: {
320
322
  ids: z.array(z.string()).min(1).describe("Comment ids to group into one issue (from the comments tool)"),
323
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
321
324
  path: z.string().optional().describe("Project root (default: cwd)"),
322
325
  title: z.string().optional().describe("Issue title (else derived from the comments)"),
323
326
  repo: z.string().optional().describe("Target GitHub repo owner/repo (else gh's default for the repo)"),
324
327
  force: z.boolean().optional().describe("File even if some selected comments are already tracked"),
325
328
  },
326
- }, async ({ ids, path, title, repo, force }) => {
327
- const res = await fileCommentsIssue(rootOf(path), ids, { title, repo, force });
329
+ }, async ({ ids, path, title, repo, force, project }) => {
330
+ const res = await fileCommentsIssue(rootOf(path), ids, { title, repo, force, slug: project });
328
331
  if (!res.ok) {
329
332
  const hints = {
330
333
  no_token: "Set ALKAHEST_TOKEN in this MCP server's config.",
331
- no_slug: "Publish this project first (publish tool).",
334
+ no_slug: "Pass `project` — a slug from list_projects — or set ALKAHEST_PROJECT in this MCP server's config.",
332
335
  already_tracked: "Some comments already have an issue — pass force:true to file a new one.",
333
336
  gh_failed: "Install and authenticate the GitHub CLI (`gh auth login`) for this repo.",
334
337
  forbidden: "Only the project owner or a collaborator can file issues.",
@@ -342,7 +345,7 @@ export function buildServer() {
342
345
  const issueHints = {
343
346
  no_token: "Set ALKAHEST_TOKEN in this MCP server's config (token from alkahest.app → Account).",
344
347
  no_api: "Set ALKAHEST_API_URL in this MCP server's config.",
345
- no_slug: "This project hasn't been published yetrun the publish tool first.",
348
+ no_slug: "Pass `project` a slug from list_projects or set ALKAHEST_PROJECT in this MCP server's config.",
346
349
  invalid_token: "The API token is invalid or revoked — create a new one at alkahest.app → Account.",
347
350
  forbidden: "Only the project owner or a collaborator can write issues.",
348
351
  not_found: "Not found — list ids with the issues tool, or the project's issue maps with the maps tool.",
@@ -360,15 +363,16 @@ export function buildServer() {
360
363
  "question awaits an answer), and awaitingDecision (open_questions > 0) — use actionable issues to decide what " +
361
364
  "to work on next. When you hit a decision you need the user to make mid-task, post it with ask_issue (the issue " +
362
365
  "stops being actionable until they answer and you resolve_issue_question). Read the thread with issue_comments. " +
363
- "Needs an API token and a published project.",
366
+ "Needs an API token and a named project — pass `project` (a slug from list_projects) unless the folder is a linked checkout or ALKAHEST_PROJECT is set. No publish required.",
364
367
  inputSchema: {
368
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
365
369
  path: z.string().optional().describe("Project root (default: cwd)"),
366
370
  open: z.boolean().optional().describe("Only issues that are not done (default: false = all)"),
367
371
  map: z.string().optional().describe("Restrict to one issue map (a project can hold several; omit when there's one). List them with the maps tool."),
368
372
  q: z.string().optional().describe("Filter issues by title/body substring (server-side). Edges/links stay unfiltered, so blockedBy may name issues outside the filtered list."),
369
373
  },
370
- }, async ({ path, open, map, q }) => {
371
- const res = await pullIssues(rootOf(path), { mapSlug: map, q });
374
+ }, async ({ path, open, map, q, project }) => {
375
+ const res = await pullIssues(rootOf(path), { mapSlug: map, q, slug: project });
372
376
  if (!res.ok || !res.graph)
373
377
  return issueFail("Read issues", res.code, res.message, res.maps);
374
378
  const states = deriveIssueStates(res.graph);
@@ -379,6 +383,8 @@ export function buildServer() {
379
383
  ok: true,
380
384
  slug: res.graph.slug,
381
385
  issue_config: res.graph.issue_config,
386
+ // The issue map's property schema (ADR-079) — issues carry their `props` values.
387
+ prop_defs: res.graph.prop_defs ?? [],
382
388
  // Members = @mention targets for ask_issue (route a decision to a specific person, ADR-020 §9).
383
389
  members: res.graph.members,
384
390
  count: issues.length,
@@ -402,19 +408,21 @@ export function buildServer() {
402
408
  priority: z.enum(["none", "low", "medium", "high", "urgent"]).optional().describe("Priority (default: none)"),
403
409
  due_on: z.string().optional().describe("Due date as YYYY-MM-DD"),
404
410
  assignee_id: z.string().optional().describe("Assign to a project member (user id)"),
411
+ props: z.record(z.any()).optional().describe("Issue properties (ADR-079, flat key→value): reserved key `tags` = string array; other keys should match the issue map's schema (see prop_defs in the issues tool) — unknown keys are kept but show as unregistered"),
405
412
  parent_id: z.string().optional().describe("Parent issue id — creates a contains edge (epic → task)"),
406
413
  target: z.string().optional().describe("Code-map target: 's:…'/'r:…' node key, '/route' (planned screen), or a resource label"),
407
414
  map: z.string().optional().describe("Which issue map to add to (a project can hold several; omit when there's one). List them with the maps tool, or create one with create_map."),
415
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
408
416
  path: z.string().optional().describe("Project root (default: cwd)"),
409
417
  },
410
- }, async ({ title, type, status, body, priority, due_on, assignee_id, parent_id, target, map, path }) => {
418
+ }, async ({ title, type, status, body, priority, due_on, assignee_id, props, parent_id, target, map, path, project }) => {
411
419
  const targetFields = target
412
420
  ? {
413
421
  target_kind: (target.startsWith("s:") || target.startsWith("r:") ? "node" : target.startsWith("/") ? "route" : "resource"),
414
422
  target_key: target,
415
423
  }
416
424
  : {};
417
- const res = await createIssue(rootOf(path), { title, type, status, body, priority, due_on, assignee_id, parent_id, mapSlug: map, ...targetFields });
425
+ const res = await createIssue(rootOf(path), { title, type, status, body, priority, due_on, assignee_id, props, parent_id, mapSlug: map, slug: project, ...targetFields });
418
426
  if (!res.ok || !res.issue)
419
427
  return issueFail("Add issue", res.code, res.message, res.maps);
420
428
  return json({ ok: true, issue: res.issue });
@@ -694,19 +702,20 @@ export function buildServer() {
694
702
  "Use it before creating anything (does a note/issue/task on this topic already exist?) and before linking " +
695
703
  "(which note should cite this issue?). Matching is a server-side substring over title + full body (and note " +
696
704
  "slug); results come back compact — note bodies as 240-char excerpts (read one in full with get_note), issues " +
697
- "with status/type, tasks with done state. Notes and issues need a published project (they fail soft with a " +
698
- "reason if there isn't one); tasks are yours and always searchable. For a deeper dive into one kind, use the " +
705
+ "with status/type, tasks with done state. Notes and issues need a named project (they fail soft with a " +
706
+ "reason if there isn't one — pass `project`); tasks are yours and always searchable. For a deeper dive into one kind, use the " +
699
707
  "notes / issues / list_tasks tools with their own `q`.",
700
708
  inputSchema: {
701
709
  q: z.string().describe("Text to find — substring match over titles and full bodies"),
710
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
702
711
  path: z.string().optional().describe("Project root (default: cwd)"),
703
712
  },
704
- }, async ({ q, path }) => {
713
+ }, async ({ q, path, project }) => {
705
714
  const root = rootOf(path);
706
715
  const [notesRes, issuesRes, tasksRes] = await Promise.all([
707
- pullNotes(root, { q, bodies: "excerpt" }),
708
- pullIssues(root, { q }),
709
- pullTasks(root, { q, status: "all" }),
716
+ pullNotes(root, { q, bodies: "excerpt", slug: project }),
717
+ pullIssues(root, { q, slug: project }),
718
+ pullTasks(root, { q, status: "all", project }),
710
719
  ]);
711
720
  const notes = notesRes.ok && notesRes.maps
712
721
  ? notesRes.maps.flatMap((m) => m.notes.map((n) => ({ slug: n.slug, title: n.title, map: m.slug, folder: n.folder ?? null, excerpt: n.body ?? null })))
@@ -732,15 +741,16 @@ export function buildServer() {
732
741
  "the notebook's property schema (key/type/options); notes carry their props values (reserved key `tags`). " +
733
742
  "ALWAYS check this before add_note when " +
734
743
  "recording knowledge: if a note on the topic exists, update_note it instead of adding a near-duplicate. " +
735
- "`q` searches title/slug/FULL body server-side. Needs an API token and a published project.",
744
+ "`q` searches title/slug/FULL body server-side. Needs an API token and a named project — pass `project` (a slug from list_projects) unless the folder is a linked checkout or ALKAHEST_PROJECT is set. No publish required.",
736
745
  inputSchema: {
746
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
737
747
  path: z.string().optional().describe("Project root (default: cwd)"),
738
748
  q: z.string().optional().describe("Filter notes by title/slug/body substring (matches the full body)"),
739
749
  map: z.string().optional().describe("Restrict to one note map (default: all readable). List them with the maps tool."),
740
750
  full_bodies: z.boolean().optional().describe("Return complete bodies instead of 240-char excerpts (heavy on a big wiki)"),
741
751
  },
742
- }, async ({ path, q, map, full_bodies }) => {
743
- const res = await pullNotes(rootOf(path), { mapSlug: map, q, bodies: full_bodies ? undefined : "excerpt" });
752
+ }, async ({ path, q, map, full_bodies, project }) => {
753
+ const res = await pullNotes(rootOf(path), { mapSlug: map, q, bodies: full_bodies ? undefined : "excerpt", slug: project });
744
754
  if (!res.ok || !res.maps)
745
755
  return issueFail("Read notes", res.code, res.message, res.mapList);
746
756
  return json({ ok: true, project: res.project, count: res.maps.reduce((n, m) => n + m.notes.length, 0), maps: res.maps });
@@ -752,10 +762,11 @@ export function buildServer() {
752
762
  inputSchema: {
753
763
  note: z.string().describe("Note slug (or id)"),
754
764
  map: z.string().optional().describe("Which note map (omit when the slug is unique across maps)"),
765
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
755
766
  path: z.string().optional().describe("Project root (default: cwd)"),
756
767
  },
757
- }, async ({ note, map, path }) => {
758
- const res = await getNote(rootOf(path), { note, mapSlug: map });
768
+ }, async ({ note, map, path, project }) => {
769
+ const res = await getNote(rootOf(path), { note, mapSlug: map, slug: project });
759
770
  if (!res.ok || !res.note)
760
771
  return issueFail("Get note", res.code, res.message, res.mapList);
761
772
  const { ok: _ok, code: _code, message: _message, mapList: _ml, ...rest } = res;
@@ -775,10 +786,11 @@ export function buildServer() {
775
786
  folder: z.string().optional().describe("Tree-sidebar path like 'raw/articles' (omit = unfiled) — the web viewer's Obsidian-style tree groups by it"),
776
787
  props: z.record(z.any()).optional().describe("Notebook properties (flat key→value): reserved key `tags` = string array; other keys should match the map's schema (see prop_defs in the notes tool) — unknown keys are kept but show as unregistered"),
777
788
  map: z.string().optional().describe("Which note map to add to (a project can hold several; omit when there's one). List them with the maps tool, or create one with create_map."),
789
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
778
790
  path: z.string().optional().describe("Project root (default: cwd)"),
779
791
  },
780
- }, async ({ title, body, note_slug, folder, props, map, path }) => {
781
- const res = await createNote(rootOf(path), { title, body, note_slug, folder, props, mapSlug: map });
792
+ }, async ({ title, body, note_slug, folder, props, map, path, project }) => {
793
+ const res = await createNote(rootOf(path), { title, body, note_slug, folder, props, mapSlug: map, slug: project });
782
794
  if (!res.ok || !res.note)
783
795
  return issueFail("Add note", res.code, res.message, res.maps);
784
796
  return json({ ok: true, note: res.note });
@@ -795,10 +807,11 @@ export function buildServer() {
795
807
  from: z.string().describe("Source note slug (or id)"),
796
808
  to: z.string().describe("Target: 'issue:<uuid>', or 'code:s:…' / 'code:r:…'"),
797
809
  remove: z.boolean().optional().describe("true → disconnect from→to instead"),
810
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
798
811
  path: z.string().optional().describe("Project root (default: cwd)"),
799
812
  },
800
- }, async ({ from, to, remove, path }) => {
801
- const res = await linkNotes(rootOf(path), { from, to, remove });
813
+ }, async ({ from, to, remove, path, project }) => {
814
+ const res = await linkNotes(rootOf(path), { from, to, remove, slug: project });
802
815
  if (!res.ok)
803
816
  return issueFail(remove ? "Unlink notes" : "Link notes", res.code, res.message, res.maps);
804
817
  return json({ ok: true, ...(remove ? { removed: `${from} → ${to}` } : { linked: `${from} → ${to}` }) });
@@ -812,10 +825,11 @@ export function buildServer() {
812
825
  inputSchema: {
813
826
  note: z.string().describe("Note slug (or id)"),
814
827
  map: z.string().optional().describe("Target note map (a project can hold several; omit when there's one). List them with the maps tool."),
828
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
815
829
  path: z.string().optional().describe("Project root (default: cwd)"),
816
830
  },
817
- }, async ({ note, map, path }) => {
818
- const res = await mapNote(rootOf(path), { noteRef: note, mapSlug: map });
831
+ }, async ({ note, map, path, project }) => {
832
+ const res = await mapNote(rootOf(path), { noteRef: note, mapSlug: map, slug: project });
819
833
  if (!res.ok)
820
834
  return issueFail("Move note", res.code, res.message, res.maps);
821
835
  return json({ ok: true, note: res.note, map: res.map });
@@ -841,10 +855,11 @@ export function buildServer() {
841
855
  reason: z.string().optional().describe("REQUIRED with delete (≤200 chars): a one-line reason the user sees in the Trash and the activity journal — say WHY the note should go, not just 'cleanup'"),
842
856
  restore: z.boolean().optional().describe("true → restore the note from the Trash (undoes a soft delete)"),
843
857
  map: z.string().optional().describe("Which note map (a project can hold several; omit when there's one)"),
858
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
844
859
  path: z.string().optional().describe("Project root (default: cwd)"),
845
860
  },
846
- }, async ({ note, title, body, new_slug, folder, props, delete: del, reason, restore, map, path }) => {
847
- const res = await updateNote(rootOf(path), { note, title, body, new_slug, folder, props, delete: del, reason, restore, mapSlug: map });
861
+ }, async ({ note, title, body, new_slug, folder, props, delete: del, reason, restore, map, path, project }) => {
862
+ const res = await updateNote(rootOf(path), { note, title, body, new_slug, folder, props, delete: del, reason, restore, mapSlug: map, slug: project });
848
863
  const what = del ? "Delete note" : restore ? "Restore note" : "Update note";
849
864
  if (!res.ok)
850
865
  return issueFail(what, res.code, res.message, res.maps);
@@ -877,13 +892,14 @@ export function buildServer() {
877
892
  })).optional().describe("Definitions to register/merge onto the note map's schema"),
878
893
  remove: z.array(z.string()).optional().describe("Property definition key(s) to unregister; note values are kept. Reserved key `tags` is refused."),
879
894
  map: z.string().optional().describe("Which note map (a project can hold several; omit when there's one)"),
895
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
880
896
  path: z.string().optional().describe("Project root (default: cwd)"),
881
897
  },
882
- }, async ({ define, remove, map, path }) => {
898
+ }, async ({ define, remove, map, path, project }) => {
883
899
  if (!define?.length && !remove?.length) {
884
900
  return json({ ok: false, error: "bad_request", message: "Pass `define` (definitions to register) and/or `remove` (keys to unregister)." });
885
901
  }
886
- const res = await editPropDefs(rootOf(path), { defs: define, remove, mapSlug: map });
902
+ const res = await editPropDefs(rootOf(path), { defs: define, remove, mapSlug: map, slug: project });
887
903
  if (!res.ok)
888
904
  return issueFail("Edit note props", res.code, res.message, res.maps);
889
905
  return json({ ok: true, added: res.added ?? 0, merged: res.merged ?? 0, removed: res.removed ?? 0, skipped: res.skipped ?? 0 });
@@ -893,21 +909,24 @@ export function buildServer() {
893
909
  description: "List the maps in this published project. A project is a container of many maps (ADR-011): code maps " +
894
910
  "(published from a scan) and issue maps — each with a per-project slug, addressed at /p/:project/:map. Maps " +
895
911
  "are equal (no default), so when a project has several of a type the publish / add_issue / issues tools return " +
896
- "'ambiguous_map' — call this to see the slugs, then pass `map`. Needs an API token and a published project.",
912
+ "'ambiguous_map' — call this to see the slugs, then pass `map`. Needs an API token and a named project — pass `project` (a slug from list_projects) unless the folder is a linked checkout or ALKAHEST_PROJECT is set. No publish required.",
897
913
  inputSchema: {
914
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
898
915
  path: z.string().optional().describe("Project root (default: cwd)"),
899
916
  type: z.enum(["code", "issue", "note"]).optional().describe("Restrict to one type (default: all)"),
900
917
  },
901
- }, async ({ path, type }) => {
902
- const res = await listMaps(rootOf(path), { type });
918
+ }, async ({ path, type, project }) => {
919
+ const res = await listMaps(rootOf(path), { type, slug: project });
903
920
  if (!res.ok || !res.maps)
904
921
  return issueFail("List maps", res.code, res.message);
905
922
  return json({ ok: true, slug: res.slug, count: res.maps.length, maps: res.maps });
906
923
  });
907
924
  server.registerTool("list_projects", {
908
925
  title: "List account projects & workspaces",
909
- description: "List every workspace and project this account's token can reach (ADR-022). Use it to find a project's slug — " +
910
- "e.g. to recover the right publish target after the local link was lost (a workspace move, a fresh clone, CI), " +
926
+ description: "List every workspace and project this account's token can reach (ADR-022). **This is how you get the `project` " +
927
+ "slug** the notes / issues / maps tools take call it whenever the user names a project in words ('my wiki') " +
928
+ "and you don't have its slug, or when a tool answers no_slug. Also useful " +
929
+ "to recover the right publish target after the local link was lost (a workspace move, a fresh clone, CI), " +
911
930
  "or before publishing to confirm which existing project to update instead of creating a duplicate. Each project " +
912
931
  "includes isOwner (only owned projects can be re-published/overwritten) and per-code-map fingerprints " +
913
932
  "(screens/resources counts) so you can match a local scan by structure. Needs an API token; no project context.",
@@ -938,14 +957,16 @@ export function buildServer() {
938
957
  description: "Show a code map's publish timeline (ADR-023) — when each publish happened, the screen/resource/" +
939
958
  "transition counts, and which nodes were added/removed since the previous publish. Use it to answer " +
940
959
  "'when did this last publish' and 'what changed' without diffing manually. Needs an API token and a " +
941
- "published project; `map` picks the code map when the project has several (else the oldest).",
960
+ "named project (see `project`); `map` picks the code map when the project has several (else the oldest). " +
961
+ "This one DOES read published versions — an unpublished project simply has no history yet.",
942
962
  inputSchema: {
963
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
943
964
  path: z.string().optional().describe("Project root (default: cwd)"),
944
965
  map: z.string().optional().describe("Which code map (default: this checkout's / the oldest)"),
945
966
  limit: z.number().optional().describe("Max versions (default 50)"),
946
967
  },
947
- }, async ({ path, map, limit }) => {
948
- const res = await listHistory(rootOf(path), { map, limit });
968
+ }, async ({ path, map, limit, project }) => {
969
+ const res = await listHistory(rootOf(path), { map, limit, slug: project });
949
970
  if (!res.ok || !res.versions)
950
971
  return issueFail("History", res.code, res.message);
951
972
  // Newest first; include count deltas vs the previous version so the agent needn't recompute.
@@ -975,10 +996,11 @@ export function buildServer() {
975
996
  slug: z.string().describe("The new map's slug (lowercase letters, numbers, dashes; the server slugifies)"),
976
997
  type: z.enum(["code", "issue", "note"]).optional().describe("Map type (default: issue)"),
977
998
  name: z.string().optional().describe("Display name (defaults to the slug)"),
999
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
978
1000
  path: z.string().optional().describe("Project root (default: cwd)"),
979
1001
  },
980
- }, async ({ slug, type, name, path }) => {
981
- const res = await createMap(rootOf(path), { mapSlug: slug, type, mapName: name });
1002
+ }, async ({ slug, type, name, path, project }) => {
1003
+ const res = await createMap(rootOf(path), { mapSlug: slug, type, mapName: name, slug: project });
982
1004
  if (!res.ok || !res.map)
983
1005
  return issueFail("Create map", res.code, res.message);
984
1006
  return json({ ok: true, map: res.map });
@@ -998,10 +1020,11 @@ export function buildServer() {
998
1020
  due_on: z.string().optional().describe("New due date YYYY-MM-DD; pass '' to clear"),
999
1021
  assignee_id: z.string().optional().describe("Assign to a project member (user id); pass '' to unassign"),
1000
1022
  target: z.string().optional().describe("New code-map target ('s:…'/'r:…'/'/route'/resource label); pass '' to clear"),
1023
+ props: z.record(z.any()).optional().describe("Properties patch (ADR-079), SHALLOW-merged: a null value deletes that key; other keys are untouched. See prop_defs in the issues tool."),
1001
1024
  delete: z.boolean().optional().describe("Delete the issue instead of updating it"),
1002
1025
  path: z.string().optional().describe("Project root (default: cwd)"),
1003
1026
  },
1004
- }, async ({ id, status, title, body, type, priority, due_on, assignee_id, target, delete: del, path }) => {
1027
+ }, async ({ id, status, title, body, type, priority, due_on, assignee_id, target, props, delete: del, path }) => {
1005
1028
  const set = {};
1006
1029
  if (status !== undefined)
1007
1030
  set.status = status;
@@ -1017,6 +1040,8 @@ export function buildServer() {
1017
1040
  set.due_on = due_on === "" ? null : due_on;
1018
1041
  if (assignee_id !== undefined)
1019
1042
  set.assignee_id = assignee_id === "" ? null : assignee_id;
1043
+ if (props !== undefined)
1044
+ set.props = props;
1020
1045
  if (target !== undefined) {
1021
1046
  if (target === "")
1022
1047
  Object.assign(set, { target_kind: null, target_key: null });
@@ -1059,10 +1084,11 @@ export function buildServer() {
1059
1084
  issue: z.string().describe("Issue id (from the issues tool)"),
1060
1085
  map: z.string().optional().describe("Which issue map (a project can hold several; omit when there's one). List them with the maps tool."),
1061
1086
  remove: z.boolean().optional().describe("true → take the issue off the map (the issue itself is never deleted)"),
1087
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
1062
1088
  path: z.string().optional().describe("Project root (default: cwd)"),
1063
1089
  },
1064
- }, async ({ issue, map, remove, path }) => {
1065
- const res = await mapIssue(rootOf(path), { issueId: issue, mapSlug: map, remove });
1090
+ }, async ({ issue, map, remove, path, project }) => {
1091
+ const res = await mapIssue(rootOf(path), { issueId: issue, mapSlug: map, remove, slug: project });
1066
1092
  if (!res.ok)
1067
1093
  return issueFail(remove ? "Unmap issue" : "Map issue", res.code, res.message, res.maps);
1068
1094
  return json({ ok: true, issue: res.issue, map: res.map, member: res.member });
@@ -1078,10 +1104,11 @@ export function buildServer() {
1078
1104
  inputSchema: {
1079
1105
  issue: z.string().optional().describe("Restrict to one issue's thread (issue id from the issues tool)"),
1080
1106
  open: z.boolean().optional().describe("Only unresolved comments — the decisions still awaiting an answer (default: false)"),
1107
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
1081
1108
  path: z.string().optional().describe("Project root (default: cwd)"),
1082
1109
  },
1083
- }, async ({ issue, open, path }) => {
1084
- const res = await pullIssueComments(rootOf(path), { issue, open });
1110
+ }, async ({ issue, open, path, project }) => {
1111
+ const res = await pullIssueComments(rootOf(path), { issue, open, slug: project });
1085
1112
  if (!res.ok || !res.comments)
1086
1113
  return issueFail("Read issue comments", res.code, res.message);
1087
1114
  return json({ ok: true, count: res.comments.length, comments: res.comments });
@@ -1154,14 +1181,15 @@ export function buildServer() {
1154
1181
  id: z.string().describe("Issue id to complete (from the issues tool)"),
1155
1182
  result: z.string().describe("What you did / the outcome — recorded as a 'result' comment on the issue"),
1156
1183
  status: z.string().optional().describe("Terminal status id from issue_config (default: the first terminal status, usually 'done')"),
1184
+ project: z.string().optional().describe("Which project (slug) — say it explicitly when the folder isn't a linked checkout. List them with list_projects."),
1157
1185
  path: z.string().optional().describe("Project root (default: cwd)"),
1158
1186
  },
1159
- }, async ({ id, result, status, path }) => {
1187
+ }, async ({ id, result, status, path, project }) => {
1160
1188
  const root = rootOf(path);
1161
1189
  // Resolve the terminal status to move to (explicit, else the project's first terminal status).
1162
1190
  let target = status;
1163
1191
  if (!target) {
1164
- const g = await pullIssues(root, {});
1192
+ const g = await pullIssues(root, { slug: project });
1165
1193
  if (!g.ok || !g.graph)
1166
1194
  return issueFail("Complete issue", g.code, g.message, g.maps);
1167
1195
  const terminal = [...terminalStatuses(g.graph.issue_config)];