frontier-mcp 0.6.0 → 1.0.1

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 (79) hide show
  1. package/README.md +33 -0
  2. package/dist/domain.d.ts +62 -29
  3. package/dist/domain.d.ts.map +1 -1
  4. package/dist/domain.js +9 -0
  5. package/dist/domain.js.map +1 -1
  6. package/dist/frontier.js +1 -1
  7. package/dist/frontier.js.map +1 -1
  8. package/dist/server.d.ts.map +1 -1
  9. package/dist/server.js +14 -8
  10. package/dist/server.js.map +1 -1
  11. package/dist/storage/driver.d.ts +44 -6
  12. package/dist/storage/driver.d.ts.map +1 -1
  13. package/dist/storage/driver.js +65 -5
  14. package/dist/storage/driver.js.map +1 -1
  15. package/dist/storage/markdown/create.d.ts +0 -2
  16. package/dist/storage/markdown/create.d.ts.map +1 -1
  17. package/dist/storage/markdown/create.js +0 -10
  18. package/dist/storage/markdown/create.js.map +1 -1
  19. package/dist/storage/markdown/driver.d.ts.map +1 -1
  20. package/dist/storage/markdown/driver.js +55 -25
  21. package/dist/storage/markdown/driver.js.map +1 -1
  22. package/dist/storage/markdown/frontmatter.js +1 -1
  23. package/dist/storage/markdown/header-doc.d.ts.map +1 -1
  24. package/dist/storage/markdown/header-doc.js +13 -11
  25. package/dist/storage/markdown/header-doc.js.map +1 -1
  26. package/dist/storage/markdown/legacy.d.ts +8 -4
  27. package/dist/storage/markdown/legacy.d.ts.map +1 -1
  28. package/dist/storage/markdown/legacy.js +20 -15
  29. package/dist/storage/markdown/legacy.js.map +1 -1
  30. package/dist/storage/markdown/migrate.d.ts +11 -3
  31. package/dist/storage/markdown/migrate.d.ts.map +1 -1
  32. package/dist/storage/markdown/migrate.js +69 -80
  33. package/dist/storage/markdown/migrate.js.map +1 -1
  34. package/dist/storage/markdown/schema.d.ts +9 -0
  35. package/dist/storage/markdown/schema.d.ts.map +1 -0
  36. package/dist/storage/markdown/schema.js +21 -0
  37. package/dist/storage/markdown/schema.js.map +1 -0
  38. package/dist/storage/markdown/serialize.d.ts +1 -1
  39. package/dist/storage/markdown/serialize.d.ts.map +1 -1
  40. package/dist/storage/markdown/serialize.js +110 -24
  41. package/dist/storage/markdown/serialize.js.map +1 -1
  42. package/dist/storage/markdown/ticket.d.ts +29 -6
  43. package/dist/storage/markdown/ticket.d.ts.map +1 -1
  44. package/dist/storage/markdown/ticket.js +100 -33
  45. package/dist/storage/markdown/ticket.js.map +1 -1
  46. package/dist/storage/markdown/watcher.d.ts +1 -1
  47. package/dist/storage/markdown/watcher.d.ts.map +1 -1
  48. package/dist/storage/markdown/watcher.js +91 -11
  49. package/dist/storage/markdown/watcher.js.map +1 -1
  50. package/dist/tools/create-tickets.js +1 -1
  51. package/dist/tools/create-tickets.js.map +1 -1
  52. package/dist/tools/edit-map.d.ts.map +1 -1
  53. package/dist/tools/edit-map.js +6 -2
  54. package/dist/tools/edit-map.js.map +1 -1
  55. package/dist/tools/get-board.d.ts.map +1 -1
  56. package/dist/tools/get-board.js +34 -7
  57. package/dist/tools/get-board.js.map +1 -1
  58. package/dist/tools/get-tickets.d.ts.map +1 -1
  59. package/dist/tools/get-tickets.js +16 -9
  60. package/dist/tools/get-tickets.js.map +1 -1
  61. package/dist/tools/list-efforts.d.ts +7 -0
  62. package/dist/tools/list-efforts.d.ts.map +1 -1
  63. package/dist/tools/list-efforts.js +15 -0
  64. package/dist/tools/list-efforts.js.map +1 -1
  65. package/dist/tools/migrate-effort.d.ts +6 -1
  66. package/dist/tools/migrate-effort.d.ts.map +1 -1
  67. package/dist/tools/migrate-effort.js +59 -20
  68. package/dist/tools/migrate-effort.js.map +1 -1
  69. package/dist/tools/update-ticket.d.ts +2 -0
  70. package/dist/tools/update-ticket.d.ts.map +1 -1
  71. package/dist/tools/update-ticket.js +11 -4
  72. package/dist/tools/update-ticket.js.map +1 -1
  73. package/dist/workspace.d.ts +11 -0
  74. package/dist/workspace.d.ts.map +1 -1
  75. package/dist/workspace.js +17 -5
  76. package/dist/workspace.js.map +1 -1
  77. package/docs/agents/issue-tracker.md +15 -9
  78. package/package.json +11 -11
  79. package/scripts/frontier-setup.cjs +451 -18
@@ -1,51 +1,90 @@
1
1
  import { z } from 'zod';
2
2
  export const migrateEffortInputSchema = z.object({
3
- effort: z.string().describe('Effort slug whose Legacy Tickets to normalize.'),
3
+ effort: z.string().describe('Effort slug whose Foreign Tickets to normalize.'),
4
4
  preview: z
5
5
  .boolean()
6
6
  .optional()
7
7
  .describe('Report every change and write nothing. Defaults to false.'),
8
- rename: z
9
- .boolean()
10
- .optional()
11
- .describe('Rename files to <NN>-T<n>-<slug>.md. Off by default so relative links keep resolving.'),
12
8
  root: z.string().optional().describe('Workspace directory. Defaults to the session workspace.'),
13
9
  });
14
- export const migrateEffortDescription = 'Normalize Legacy Tickets in an Effort: schema frontmatter, preserve existing ids, mint ' +
15
- 'ids for Tickets that have none, turn prose Edges into blocked_by. Preview writes nothing. ' +
16
- 'Filename rewriting is opt-in. Unrecognized files in the Effort directory are ignored.';
10
+ export const migrateEffortDescription = 'Normalize Foreign Tickets in an Effort: schema frontmatter, preserve existing ids, mint ' +
11
+ 'ids for Tickets that have none, turn prose Edges into blocked_by. Filenames never change. ' +
12
+ 'Preview writes nothing and names a Ticket it would mint by its handle, not a predicted id. ' +
13
+ 'Unrecognized files in the Effort directory are ignored.';
14
+ /**
15
+ * Every Ticket line is labelled reference-style and resolved once in a closing
16
+ * definition block, so a `blocked_by=` naming three siblings stays one short
17
+ * line. Paths are workspace-root-relative: the reader's working directory is
18
+ * not knowable, the root the call resolved is.
19
+ */
17
20
  export function renderMigration(report) {
18
21
  const count = report.changes.length;
19
22
  const verb = report.preview ? 'would migrate' : 'migrated';
20
- const rename = report.renamed ? ' (renamed)' : '';
21
- const lines = [
22
- `${report.effort}: ${report.preview ? 'preview — ' : ''}${verb} ${String(count)}${rename}`,
23
- ];
23
+ const lines = [`${report.effort}: ${report.preview ? 'preview — ' : ''}${verb} ${String(count)}`];
24
24
  if (count === 0) {
25
25
  lines.push('(nothing to migrate)');
26
26
  return lines.join('\n');
27
27
  }
28
+ const labels = labelsOf(report.changes);
29
+ const defined = new Set(labels.values());
30
+ for (const change of report.changes) {
31
+ lines.push(renderChange(change, labels.get(change) ?? change.filename, defined));
32
+ }
33
+ if (report.crossEffortEdges.length > 0) {
34
+ lines.push(`> Edges to another Effort (${String(report.crossEffortEdges.length)}) — check each is meant: ` +
35
+ capped(report.crossEffortEdges));
36
+ }
37
+ if (report.keptSubSlices.length > 0) {
38
+ lines.push(`> sub-slice Edges kept as declared, parent not in this Effort ` +
39
+ `(${String(report.keptSubSlices.length)}): ${capped(report.keptSubSlices)} — they dangle; ` +
40
+ 'fix each with update_ticket blocked_by');
41
+ }
42
+ lines.push('');
28
43
  for (const change of report.changes) {
29
- lines.push(renderChange(change));
44
+ // Angle brackets keep a filename with a space a valid link destination.
45
+ lines.push(`[${labels.get(change) ?? change.filename}]: <${report.directory}/${change.filename}>`);
30
46
  }
31
47
  return lines.join('\n');
32
48
  }
33
- function renderChange(change) {
49
+ // One line each, however large the Effort: the first few are named, the rest
50
+ // counted — the duplicate-id Board warning's shape. The count stays exact.
51
+ const NOTE_NAMED = 10;
52
+ function capped(items) {
53
+ const named = items.slice(0, NOTE_NAMED).join(' ');
54
+ const rest = items.length - NOTE_NAMED;
55
+ return rest > 0 ? `${named} and ${String(rest)} more` : named;
56
+ }
57
+ /**
58
+ * A Ticket's id, or its handle before it has one. Two files a preview finds
59
+ * carrying one id would share a label and the first definition would win, so
60
+ * those are labelled by filename, which an Effort cannot repeat.
61
+ */
62
+ function labelsOf(changes) {
63
+ const natural = changes.map(change => change.id ?? change.beforeHandle);
64
+ return new Map(changes.map((change, index) => {
65
+ const label = natural[index] ?? change.filename;
66
+ return [
67
+ change,
68
+ natural.indexOf(label) === natural.lastIndexOf(label) ? label : change.filename,
69
+ ];
70
+ }));
71
+ }
72
+ function renderChange(change, label, defined) {
34
73
  const flags = [
35
74
  change.normalized ? 'normalize' : undefined,
36
75
  change.minted ? 'mint' : undefined,
37
76
  ].filter(part => part !== undefined);
38
- const rename = change.fromName !== undefined && change.toName !== undefined
39
- ? `${change.fromName} -> ${change.toName}`
77
+ const was = change.minted && change.id !== undefined && change.beforeHandle !== change.id
78
+ ? `was ${change.beforeHandle}`
40
79
  : undefined;
41
- const was = change.minted && change.beforeHandle !== change.id ? `was ${change.beforeHandle}` : undefined;
42
- const edges = change.blockedBy.length === 0 ? undefined : `blocked_by=${change.blockedBy.join(',')}`;
80
+ const edges = change.blockedBy.length === 0
81
+ ? undefined
82
+ : `blocked_by=${change.blockedBy.map(edge => (defined.has(edge) ? `[${edge}]` : edge)).join(',')}`;
43
83
  return [
44
- change.id,
84
+ `[${label}]`,
45
85
  change.title,
46
86
  flags.length === 0 ? undefined : flags.join('+'),
47
87
  was,
48
- rename,
49
88
  edges,
50
89
  change.duplicateFiles === undefined
51
90
  ? undefined
@@ -1 +1 @@
1
- {"version":3,"file":"migrate-effort.js","sourceRoot":"","sources":["../../src/tools/migrate-effort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate-effort.js","sourceRoot":"","sources":["../../src/tools/migrate-effort.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export declare const updateTicketInputSchema: z.ZodObject<{
33
33
  blocked_by: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
34
  comment: z.ZodOptional<z.ZodString>;
35
35
  tick: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ drop_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
37
  title: z.ZodOptional<z.ZodString>;
37
38
  kind: z.ZodOptional<z.ZodEnum<{
38
39
  build: "build";
@@ -62,6 +63,7 @@ export interface UpdateRequest {
62
63
  readonly blocked_by?: readonly string[] | undefined;
63
64
  readonly comment?: string | undefined;
64
65
  readonly tick?: readonly string[] | undefined;
66
+ readonly drop_keys?: readonly string[] | undefined;
65
67
  readonly title?: string | undefined;
66
68
  readonly kind?: Kind | undefined;
67
69
  readonly type?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"update-ticket.d.ts","sourceRoot":"","sources":["../../src/tools/update-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiElC,CAAC;AAEH,eAAO,MAAM,uBAAuB,QAKQ,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IACpF,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,SAAS,aAAa,EAAE,EAC7B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,GACV,UAAU,CAqFZ;AAoHD,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAY5F"}
1
+ {"version":3,"file":"update-ticket.d.ts","sourceRoot":"","sources":["../../src/tools/update-ticket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI/C,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAyElC,CAAC;AAEH,eAAO,MAAM,uBAAuB,QAKQ,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IACpF,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,SAAS,aAAa,EAAE,EAC7B,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,MAAM,GACV,UAAU,CAsFZ;AAoHD,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAY5F"}
@@ -3,7 +3,7 @@ import { STATUSES, TRIAGE_ROLES } from '../domain.js';
3
3
  import { cycleThrough, renderCycle } from '../edges.js';
4
4
  import { claimantsById, edgesOfClaimants } from '../frontier.js';
5
5
  export const updateTicketInputSchema = z.object({
6
- id: z.string().describe('Ticket id, or the <effort>#<order> handle of a Legacy Ticket.'),
6
+ id: z.string().describe('Ticket id, or the <effort>#<order> handle of a Ticket with no id.'),
7
7
  claim: z
8
8
  .object({ by: z.string().min(1).describe('Who is taking it.') })
9
9
  .optional()
@@ -51,6 +51,12 @@ export const updateTicketInputSchema = z.object({
51
51
  .describe('Acceptance criteria to check off, matched on their text. Wrapped criteria match both ' +
52
52
  'as get_tickets returns them and re-joined onto one line. All references resolve before ' +
53
53
  'anything is written — one unmatched name fails the whole call and leaves the file untouched.'),
54
+ drop_keys: z
55
+ .array(z.string().min(1))
56
+ .min(1)
57
+ .optional()
58
+ .describe('Unimported frontmatter keys to delete, as get_tickets lists them. A schema key or an ' +
59
+ 'absent one fails the whole call; nothing else in the fence changes.'),
54
60
  title: z.string().min(1).optional().describe('Replace the Ticket title.'),
55
61
  kind: z.enum(['build', 'decision']).optional().describe('Replace the Ticket kind.'),
56
62
  type: z
@@ -63,7 +69,7 @@ export const updateTicketInputSchema = z.object({
63
69
  export const updateTicketDescription = 'Change one Ticket. Lifecycle: claim, resolve with a one-line gist, drop with a reason, reopen ' +
64
70
  'with a reason, or release a claim — at most one of those per call. Graph: replace the Edges, ' +
65
71
  'refused if they close a cycle. Identity: title, kind, and type. Annotations: triage role, a ' +
66
- 'comment, ticking acceptance criteria; these touch no part of the graph. Any of the four groups ' +
72
+ 'comment, ticking acceptance criteria, dropping Unimported keys; these touch no part of the graph. Any of the four groups ' +
67
73
  'may accompany the others or stand alone.';
68
74
  /**
69
75
  * Turn a request into the edit the driver applies, refusing anything the Status
@@ -83,6 +89,7 @@ export function editFor(ticket, all, request, now) {
83
89
  ...(request.triage === undefined ? {} : { triage: request.triage }),
84
90
  ...(request.comment === undefined ? {} : { comment: request.comment }),
85
91
  ...(request.tick === undefined ? {} : { tick: request.tick }),
92
+ ...(request.drop_keys === undefined ? {} : { dropKeys: request.drop_keys }),
86
93
  ...(request.blocked_by === undefined ? {} : { blockedBy: edgesFor(ticket, all, request) }),
87
94
  };
88
95
  // Status is derived from the transition, never assigned. Saying so beats
@@ -105,7 +112,7 @@ export function editFor(ticket, all, request, now) {
105
112
  if (actions.length === 0) {
106
113
  if (Object.keys(annotations).length === 0) {
107
114
  throw new Error('Nothing to do: pass a lifecycle change, or title, kind, type, blocked_by, triage, comment, ' +
108
- 'or tick.');
115
+ 'tick, or drop_keys.');
109
116
  }
110
117
  return annotations;
111
118
  }
@@ -170,7 +177,7 @@ function identityFor(ticket, request) {
170
177
  */
171
178
  function edgesFor(ticket, all, request) {
172
179
  const blockedBy = request.blocked_by ?? [];
173
- // Nothing can name an id-less Legacy Ticket, so no path leads back to it.
180
+ // Nothing can name an id-less Ticket, so no path leads back to it.
174
181
  if (ticket.id === undefined)
175
182
  return blockedBy;
176
183
  const byId = claimantsById(all);
@@ -1 +1 @@
1
- {"version":3,"file":"update-ticket.js","sourceRoot":"","sources":["../../src/tools/update-ticket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-ticket.js","sourceRoot":"","sources":["../../src/tools/update-ticket.ts"],"names":[],"mappings":"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"}
@@ -24,4 +24,15 @@ export interface WorkspaceContext {
24
24
  * A workspace with no `.scratch/` is not — that is a fresh project.
25
25
  */
26
26
  export declare function resolveWorkspace(root: string | undefined, context: WorkspaceContext): string;
27
+ export interface LocatedWorkspace {
28
+ readonly root: string;
29
+ /**
30
+ * What located `root`, for a reader to check it against: the override that
31
+ * named it, the marker the upward walk stopped at, or the working directory
32
+ * when the walk found none.
33
+ */
34
+ readonly resolvedBy: string;
35
+ }
36
+ /** {@link resolveWorkspace}, saying which source won. */
37
+ export declare function locateWorkspace(root: string | undefined, context: WorkspaceContext): LocatedWorkspace;
27
38
  //# sourceMappingURL=workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAuBjD,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAY5F"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAuBjD,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAE5F;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,gBAAgB,GACxB,gBAAgB,CAqBlB"}
package/dist/workspace.js CHANGED
@@ -41,15 +41,26 @@ const ROOT_MARKERS = [
41
41
  * A workspace with no `.scratch/` is not — that is a fresh project.
42
42
  */
43
43
  export function resolveWorkspace(root, context) {
44
+ return locateWorkspace(root, context).root;
45
+ }
46
+ /** {@link resolveWorkspace}, saying which source won. */
47
+ export function locateWorkspace(root, context) {
44
48
  const argument = given(root);
45
49
  if (argument !== undefined) {
46
- return requireDirectory(resolve(context.cwd, argument), 'root argument');
50
+ return {
51
+ root: requireDirectory(resolve(context.cwd, argument), 'root argument'),
52
+ resolvedBy: 'root argument',
53
+ };
47
54
  }
48
55
  const fromEnv = given(context.env[WORKSPACE_ENV_VAR]);
49
56
  if (fromEnv !== undefined) {
50
- return requireDirectory(resolve(context.cwd, fromEnv), WORKSPACE_ENV_VAR);
57
+ return {
58
+ root: requireDirectory(resolve(context.cwd, fromEnv), WORKSPACE_ENV_VAR),
59
+ resolvedBy: `$${WORKSPACE_ENV_VAR}`,
60
+ };
51
61
  }
52
- return findRootMarker(resolve(context.cwd)) ?? resolve(context.cwd);
62
+ const cwd = resolve(context.cwd);
63
+ return (findRootMarker(cwd) ?? { root: cwd, resolvedBy: 'working directory, no root marker found' });
53
64
  }
54
65
  /**
55
66
  * An empty override was not supplied. Falling through to the next source is the
@@ -67,8 +78,9 @@ function given(value) {
67
78
  function findRootMarker(from) {
68
79
  let dir = from;
69
80
  for (;;) {
70
- if (ROOT_MARKERS.some(marker => marker.matches(join(dir, marker.name))))
71
- return dir;
81
+ const marker = ROOT_MARKERS.find(candidate => candidate.matches(join(dir, candidate.name)));
82
+ if (marker !== undefined)
83
+ return { root: dir, resolvedBy: marker.name };
72
84
  const parent = dirname(dir);
73
85
  if (parent === dir)
74
86
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,YAAY,GAAG;IACnB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;IAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;CAClC,CAAC;AAQF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB,EAAE,OAAyB;IAClF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,KAAyB;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,GAAG,GAAG,IAAI,CAAC;IAEf,SAAS,CAAC;QACR,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAEpF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAc;IACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qFAAqF;AACrF,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,YAAY,GAAG;IACnB,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;IAC1C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;CAClC,CAAC;AAQF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB,EAAE,OAAyB;IAClF,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAYD,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAC7B,IAAwB,EACxB,OAAyB;IAEzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;YACvE,UAAU,EAAE,eAAe;SAC5B,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC;YACxE,UAAU,EAAE,IAAI,iBAAiB,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CACL,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,yCAAyC,EAAE,CAC5F,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,KAAK,CAAC,KAAyB;IACtC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,GAAG,GAAG,IAAI,CAAC;IAEf,SAAS,CAAC;QACR,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAExE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAAc;IACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,MAAM,wBAAwB,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qFAAqF;AACrF,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  # Issue tracker — FrontierMCP and file fallback
2
2
 
3
- Tracker doc revision 2. To check a vendored copy, compare this number with the one in the
3
+ Tracker doc revision 7. To check a vendored copy, compare this number with the one in the
4
4
  `frontier://tracker-doc` resource of the server you run; a lower number, or no revision line, is
5
5
  stale.
6
6
 
@@ -48,14 +48,14 @@ Eight tools permanently. Optional arguments extend an existing tool; there is no
48
48
 
49
49
  | Tool | Use when |
50
50
  | --- | --- |
51
- | `list_efforts` | Orient — list Efforts with Ticket counts, header doc kinds, and Frontier size. |
51
+ | `list_efforts` | Orient — list Efforts with Ticket counts, header doc kinds, and Frontier size. A repository with no `.scratch/` at all gets `no tracker here`, the marker that located the root, and a `start one` line to copy; an empty `.scratch/` still reads `(no efforts)`. |
52
52
  | `get_board` | See the whole Effort cheaply — Destination, one summary line per Ticket, Frontier marked. Never returns bodies. |
53
53
  | `get_tickets` | Fetch full bodies for specific ids after the Board tells you which Tickets matter. |
54
54
  | `create_tickets` | Publish a breakdown in one call. Declare Edges with temporary keys; the server assigns ids and numbers. |
55
- | `update_ticket` | Claim, resolve, drop, reopen, release, set title/kind/type, set triage, replace Edges, comment, or tick acceptance criteria. One Ticket per call. |
55
+ | `update_ticket` | Claim, resolve, drop, reopen, release, set title/kind/type, set triage, replace Edges, comment, tick acceptance criteria, or `drop_keys` to delete Unimported frontmatter keys. One Ticket per call. |
56
56
  | `edit_map` | Edit Map sections — Destination, Notes, fog, Out of scope. Decisions-so-far regenerates from resolved Tickets. |
57
57
  | `spec` | Read or write a Spec as a whole document. |
58
- | `migrate_effort` | Normalize Legacy Tickets in an Effort. Preview writes nothing; filename rename is opt-in. |
58
+ | `migrate_effort` | Normalize Foreign Tickets — those whose file does not conform to the schema — in an Effort. Filenames never change. Preview writes nothing and names a Ticket it would mint by its handle (`<effort>#<order>`), not a predicted id. |
59
59
 
60
60
  ### Typical agent flow
61
61
 
@@ -80,15 +80,21 @@ Eight tools permanently. Optional arguments extend an existing tool; there is no
80
80
  | release a stale claim | `update_ticket` with `{ release: true }` |
81
81
  | edit the Map | `edit_map` |
82
82
  | write or read the Spec | `spec` |
83
- | normalize legacy files | `migrate_effort` |
83
+ | normalize foreign files | `migrate_effort` |
84
84
 
85
85
  Two Ticket files carrying one id are listed in each Board's warnings, with claimant files for the
86
86
  first few, and every write addressed to that id is refused. Fix it by hand, giving all but one a new id; the server never
87
87
  renumbers. Under a pattern whose only variable token is `<N>`, every `create_tickets` result carries
88
88
  a standing warning that the pattern collides across branches — it describes the configuration, not
89
- that call; the remedy is a mixed pattern such as `T<N>-<b36{4}>`. When a Ticket's frontmatter fence
90
- is not in the schema, `get_tickets` appends it, unimported, as a fenced `yaml` block under a Foreign
91
- frontmatter heading; the read leaves the file unchanged.
89
+ that call; the remedy is a mixed pattern such as `T<N>-<b36{4}>`. When a Ticket's frontmatter carries
90
+ keys outside the schema, `get_tickets` appends them as a fenced `yaml` block under `## Unimported
91
+ frontmatter` — the whole fence for a Ticket with no `id`, only the unimported entries otherwise. The
92
+ read leaves the file unchanged, and no ordinary write removes them: pass `update_ticket` `drop_keys`
93
+ with the names to delete. A schema key or a key the fence does not carry fails the call and writes
94
+ nothing; the rest of the fence stays byte-identical. Dropping the last one from a Ticket with no `id`
95
+ leaves it no longer Foreign, still listed under the Board's `no id` warning. A Board counts `resolved` Tickets
96
+ with no `answer_gist`, `dropped` with no `dropped_reason` and `claimed` with no `claimed_by` or `claimed_at` in its
97
+ warnings, so set the field with the Status.
92
98
 
93
99
  Claims are compare-and-set — a parallel session that already holds the Ticket wins. Writes carry the
94
100
  `revision` from the last read; a mismatch is refused, never retried over the caller's edit.
@@ -143,7 +149,7 @@ bypasses the mint whatever the pattern.
143
149
  ```yaml
144
150
  ---
145
151
  id: T12 # shaped by id_pattern; repo-unique, never reused or changed
146
- title: Parse legacy tickets without frontmatter
152
+ title: Parse tickets without frontmatter
147
153
  kind: build # build | decision
148
154
  type: research # decision only: research | prototype | grilling | task
149
155
  status: open # open | claimed | resolved | dropped
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontier-mcp",
3
- "version": "0.6.0",
3
+ "version": "1.0.1",
4
4
  "description": "An MCP server exposing the markdown issue tracker under a repo's .scratch/ as a queryable graph",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -25,19 +25,19 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@modelcontextprotocol/server": "^2.0.0",
29
- "yaml": "^2.9.0",
30
- "zod": "^4.4.3"
28
+ "@modelcontextprotocol/server": "^2.4.0",
29
+ "yaml": "^2.9.1",
30
+ "zod": "^4.6.7"
31
31
  },
32
32
  "devDependencies": {
33
- "@modelcontextprotocol/client": "^2.0.0",
34
- "@release-it/conventional-changelog": "^12.0.0",
35
- "@types/node": "^24.10.1",
36
- "oxfmt": "^0.62.0",
37
- "oxlint": "^1.77.0",
38
- "release-it": "^21.0.1",
33
+ "@modelcontextprotocol/client": "^2.4.0",
34
+ "@release-it/conventional-changelog": "^12.0.2",
35
+ "@types/node": "^24.19.2",
36
+ "oxfmt": "^0.78.0",
37
+ "oxlint": "^1.93.0",
38
+ "release-it": "^21.1.2",
39
39
  "typescript": "^7.0.2",
40
- "vitest": "^4.1.10"
40
+ "vitest": "^5.1.0"
41
41
  },
42
42
  "engines": {
43
43
  "node": "^20.20.2 || ^22.17.1 || ^24.15.0"