@creator-notes/cnotes 0.69.0 → 0.70.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.
- package/.claude-plugin/plugin.json +1 -1
- package/dist/commands/canvas.d.ts.map +1 -1
- package/dist/commands/canvas.js +23 -6
- package/dist/commands/canvas.js.map +1 -1
- package/dist/commands/notes.d.ts.map +1 -1
- package/dist/commands/notes.js +14 -2
- package/dist/commands/notes.js.map +1 -1
- package/dist/commands/operations.d.ts.map +1 -1
- package/dist/commands/operations.js +24 -1
- package/dist/commands/operations.js.map +1 -1
- package/dist/commands/quality.d.ts +9 -0
- package/dist/commands/quality.d.ts.map +1 -0
- package/dist/commands/quality.js +223 -0
- package/dist/commands/quality.js.map +1 -0
- package/dist/lib/canvas-read.d.ts +15 -1
- package/dist/lib/canvas-read.d.ts.map +1 -1
- package/dist/lib/canvas-read.js +54 -9
- package/dist/lib/canvas-read.js.map +1 -1
- package/dist/lib/quality.d.ts +64 -0
- package/dist/lib/quality.d.ts.map +1 -0
- package/dist/lib/quality.js +131 -0
- package/dist/lib/quality.js.map +1 -0
- package/dist/lib/session-brief.d.ts +30 -0
- package/dist/lib/session-brief.d.ts.map +1 -0
- package/dist/lib/session-brief.js +41 -0
- package/dist/lib/session-brief.js.map +1 -0
- package/dist/mcp-server.js +9 -4
- package/dist/mcp-server.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +2 -0
- package/dist/program.js.map +1 -1
- package/package.json +1 -1
- package/skills/cnotes/SKILL.md +19 -1
package/dist/lib/canvas-read.js
CHANGED
|
@@ -34,8 +34,42 @@ function shortLabel(s, max = 32) {
|
|
|
34
34
|
function num(v) {
|
|
35
35
|
return typeof v === "number" ? v : undefined;
|
|
36
36
|
}
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The canvas id inside a share link (`https://<host>/shared/<canvasId>`), with
|
|
39
|
+
* the link's origin so the caller can check it points at the server it is
|
|
40
|
+
* signed in to. Null for anything that isn't a share link.
|
|
41
|
+
*/
|
|
42
|
+
export function parseSharedCanvasLink(input) {
|
|
43
|
+
let url;
|
|
44
|
+
try {
|
|
45
|
+
url = new URL(input.trim());
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
if (url.protocol !== "https:" && url.protocol !== "http:")
|
|
51
|
+
return null;
|
|
52
|
+
const m = /^\/shared\/([a-z0-9]+)\/?$/.exec(url.pathname);
|
|
53
|
+
return m ? { canvasId: m[1], origin: url.origin } : null;
|
|
54
|
+
}
|
|
55
|
+
/** Whether a share link's origin is the server the CLI talks to. `www.` and
|
|
56
|
+
* the bare domain serve the same app, so they count as one. */
|
|
57
|
+
export function sameServerOrigin(linkOrigin, serverUrl) {
|
|
58
|
+
const norm = (u) => {
|
|
59
|
+
const url = new URL(u);
|
|
60
|
+
return `${url.protocol}//${url.host.replace(/^www\./, "")}`;
|
|
61
|
+
};
|
|
62
|
+
try {
|
|
63
|
+
return norm(linkOrigin) === norm(serverUrl);
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function readCanvasMarkdown(api, workspaceId, canvasId, opts = {}) {
|
|
70
|
+
// A shared read goes through the share link's access rules and names no
|
|
71
|
+
// workspace: the canvas may belong to one the reader isn't a member of.
|
|
72
|
+
const data = await api.get(`/api/canvas/${encodeURIComponent(canvasId)}`, opts.shared ? { access: "shared", format: "markdown" } : { workspaceId, format: "markdown" });
|
|
39
73
|
const nodes = data.nodes || [];
|
|
40
74
|
const textNodes = data.textNodes || [];
|
|
41
75
|
const richtextNodes = data.richtextNodes || [];
|
|
@@ -51,13 +85,24 @@ export async function readCanvasMarkdown(api, workspaceId, canvasId) {
|
|
|
51
85
|
wantedDisplayIds.add(id);
|
|
52
86
|
}
|
|
53
87
|
const idsArr = Array.from(wantedDisplayIds);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
88
|
+
// Shared reads carry the bodies of the canvas's cards in the same response
|
|
89
|
+
// (`noteBodies`), because `/api/notes` is scoped to the reader's own
|
|
90
|
+
// workspaces. They have no supersededBy: that needs the owner's graph.
|
|
91
|
+
const sharedBodies = opts.shared
|
|
92
|
+
? (data.noteBodies ?? []).map((b) => ({
|
|
93
|
+
displayId: b.displayId,
|
|
94
|
+
content: b.content,
|
|
95
|
+
}))
|
|
96
|
+
: null;
|
|
97
|
+
const bulk = sharedBodies !== null
|
|
98
|
+
? sharedBodies
|
|
99
|
+
: idsArr.length === 0
|
|
100
|
+
? []
|
|
101
|
+
: await api.get("/api/notes", {
|
|
102
|
+
workspaceId,
|
|
103
|
+
exact_ids: idsArr.join(","),
|
|
104
|
+
format: "markdown",
|
|
105
|
+
});
|
|
61
106
|
const markdownByDisplayId = new Map();
|
|
62
107
|
const supersededByDisplayId = new Map();
|
|
63
108
|
for (const n of bulk) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canvas-read.js","sourceRoot":"","sources":["../../src/lib/canvas-read.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canvas-read.js","sourceRoot":"","sources":["../../src/lib/canvas-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** Same floor the grader uses (MIN_CONTENT_LENGTH_FOR_VALIDATION). Below it
|
|
2
|
+
* the server skips grading as "still drafting", so flag it here instead. */
|
|
3
|
+
export declare const MIN_BODY_CHARS = 50;
|
|
4
|
+
/** Top rung of the quality ladder (1 Fragment … 4 Strong). */
|
|
5
|
+
export declare const LADDER_TOP = 4;
|
|
6
|
+
export declare const LADDER_LABELS: Record<number, string>;
|
|
7
|
+
export type QualityIssueCode = "missing_title" | "empty_body" | "unknown_type" | "no_rubric" | "superseded" | "bare_id";
|
|
8
|
+
export interface QualityIssue {
|
|
9
|
+
code: QualityIssueCode;
|
|
10
|
+
message: string;
|
|
11
|
+
/** 1-based body line, for issues tied to one spot. */
|
|
12
|
+
line?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface QualityNote {
|
|
15
|
+
id: string;
|
|
16
|
+
displayId: string;
|
|
17
|
+
title: string;
|
|
18
|
+
type: string;
|
|
19
|
+
markdown: string;
|
|
20
|
+
raw: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface TypeCatalog {
|
|
23
|
+
/** Lower-cased names of every type the workspace defines. */
|
|
24
|
+
known: Set<string>;
|
|
25
|
+
/** Lower-cased names of types that carry a rubric (validationPrompt). */
|
|
26
|
+
withRubric: Set<string>;
|
|
27
|
+
}
|
|
28
|
+
/** Normalise a `/api/notes` row (markdown format) into what the checks read. */
|
|
29
|
+
export declare function toQualityNote(row: Record<string, unknown>): QualityNote;
|
|
30
|
+
/** Build the type catalog from a `/api/supertags` response. */
|
|
31
|
+
export declare function typeCatalogFrom(supertags: unknown): TypeCatalog;
|
|
32
|
+
/** Every structural issue on one note that needs no further lookup. */
|
|
33
|
+
export declare function structuralIssues(note: QualityNote, types: TypeCatalog): QualityIssue[];
|
|
34
|
+
/** The server's Check quality response, as `cnotes quality` reports it. */
|
|
35
|
+
export type GradeResult = {
|
|
36
|
+
outcome: "graded";
|
|
37
|
+
level: number;
|
|
38
|
+
label: string;
|
|
39
|
+
isTopRung: boolean;
|
|
40
|
+
feedback: string;
|
|
41
|
+
nextStep: string;
|
|
42
|
+
suggestions: string[];
|
|
43
|
+
} | {
|
|
44
|
+
outcome: "skipped";
|
|
45
|
+
reason: string;
|
|
46
|
+
} | {
|
|
47
|
+
outcome: "not_run";
|
|
48
|
+
reason: string;
|
|
49
|
+
};
|
|
50
|
+
export declare function gradeFromResponse(body: Record<string, unknown>): GradeResult;
|
|
51
|
+
export interface QualityReportItem {
|
|
52
|
+
displayId: string;
|
|
53
|
+
title: string;
|
|
54
|
+
type: string;
|
|
55
|
+
grade: GradeResult;
|
|
56
|
+
issues: QualityIssue[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Whether a report item should fail a `--fail-below <level>` gate: a graded
|
|
60
|
+
* note under the bar, or any structural issue except `no_rubric` (that one is
|
|
61
|
+
* the workspace's gap, not the note's, so it never blocks the author).
|
|
62
|
+
*/
|
|
63
|
+
export declare function itemFails(item: QualityReportItem, failBelow: number | undefined): boolean;
|
|
64
|
+
//# sourceMappingURL=quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"AAmBA;6EAC6E;AAC7E,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,8DAA8D;AAC9D,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAKhD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,YAAY,GACZ,cAAc,GACd,WAAW,GACX,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,yEAAyE;IACzE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAWvE;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,CAY/D;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CA+CtF;AAED,2EAA2E;AAC3E,MAAM,MAAM,WAAW,GACnB;IACE,OAAO,EAAE,QAAQ,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GACD;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAgB5E;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAIzF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Note quality checks for `cnotes quality`.
|
|
3
|
+
*
|
|
4
|
+
* Two kinds of check, kept apart because one is free and one is not:
|
|
5
|
+
*
|
|
6
|
+
* - STRUCTURAL (this module, pure): things a reader trips on regardless of
|
|
7
|
+
* type: no title, a body too thin to say anything, a type the workspace
|
|
8
|
+
* doesn't define, a type with no rubric to grade against, a note that has
|
|
9
|
+
* already been superseded. Bare display IDs are structural too, but need a
|
|
10
|
+
* workspace lookup, so the command runs them through mention-lint.
|
|
11
|
+
* - RUBRIC (the server's Check quality grader, 1 credit per note): the same
|
|
12
|
+
* quality ladder the web ⋮ menu uses, so a bot and a person see the same
|
|
13
|
+
* rung for the same note.
|
|
14
|
+
*
|
|
15
|
+
* Output is shaped for an agent that writes, checks and revises in one run:
|
|
16
|
+
* every issue carries a stable `code` to branch on and a sentence to act on.
|
|
17
|
+
*/
|
|
18
|
+
import { readSupersededBy } from "./superseded-by.js";
|
|
19
|
+
/** Same floor the grader uses (MIN_CONTENT_LENGTH_FOR_VALIDATION). Below it
|
|
20
|
+
* the server skips grading as "still drafting", so flag it here instead. */
|
|
21
|
+
export const MIN_BODY_CHARS = 50;
|
|
22
|
+
/** Top rung of the quality ladder (1 Fragment … 4 Strong). */
|
|
23
|
+
export const LADDER_TOP = 4;
|
|
24
|
+
export const LADDER_LABELS = {
|
|
25
|
+
1: "Fragment",
|
|
26
|
+
2: "Taking shape",
|
|
27
|
+
3: "One move from strong",
|
|
28
|
+
4: "Strong",
|
|
29
|
+
};
|
|
30
|
+
/** Normalise a `/api/notes` row (markdown format) into what the checks read. */
|
|
31
|
+
export function toQualityNote(row) {
|
|
32
|
+
const latest = row.latestVersion;
|
|
33
|
+
const body = latest?.content ?? row.content;
|
|
34
|
+
return {
|
|
35
|
+
id: String(row._id ?? row.id ?? ""),
|
|
36
|
+
displayId: String(row.displayId ?? ""),
|
|
37
|
+
title: typeof row.title === "string" ? row.title : "",
|
|
38
|
+
type: typeof row.type === "string" ? row.type : "",
|
|
39
|
+
markdown: typeof body === "string" ? body : "",
|
|
40
|
+
raw: row,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/** Build the type catalog from a `/api/supertags` response. */
|
|
44
|
+
export function typeCatalogFrom(supertags) {
|
|
45
|
+
const known = new Set();
|
|
46
|
+
const withRubric = new Set();
|
|
47
|
+
for (const s of Array.isArray(supertags) ? supertags : []) {
|
|
48
|
+
const name = String(s.name ?? "").toLowerCase();
|
|
49
|
+
if (!name)
|
|
50
|
+
continue;
|
|
51
|
+
known.add(name);
|
|
52
|
+
if (typeof s.validationPrompt === "string" && s.validationPrompt.trim()) {
|
|
53
|
+
withRubric.add(name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return { known, withRubric };
|
|
57
|
+
}
|
|
58
|
+
/** Every structural issue on one note that needs no further lookup. */
|
|
59
|
+
export function structuralIssues(note, types) {
|
|
60
|
+
const issues = [];
|
|
61
|
+
const title = note.title.trim();
|
|
62
|
+
if (!title || title.toLowerCase() === "untitled") {
|
|
63
|
+
issues.push({
|
|
64
|
+
code: "missing_title",
|
|
65
|
+
message: "No title. A title is the claim a reader sees on the canvas card; write it as one.",
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const bodyChars = note.markdown.replace(/\s+/g, " ").trim().length;
|
|
69
|
+
if (bodyChars < MIN_BODY_CHARS) {
|
|
70
|
+
issues.push({
|
|
71
|
+
code: "empty_body",
|
|
72
|
+
message: bodyChars === 0
|
|
73
|
+
? "Empty body. The note says nothing beyond its title."
|
|
74
|
+
: `Body is ${bodyChars} characters, under the ${MIN_BODY_CHARS} the grader needs to judge it.`,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const typeKey = note.type.toLowerCase();
|
|
78
|
+
if (!typeKey || !types.known.has(typeKey)) {
|
|
79
|
+
issues.push({
|
|
80
|
+
code: "unknown_type",
|
|
81
|
+
message: note.type
|
|
82
|
+
? `Type "${note.type}" is not defined in this workspace, so it has no rubric and no color. Retype it with \`cnotes notes retype\`.`
|
|
83
|
+
: "Untyped. Give it a type so readers know what kind of claim it makes.",
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else if (!types.withRubric.has(typeKey)) {
|
|
87
|
+
issues.push({
|
|
88
|
+
code: "no_rubric",
|
|
89
|
+
message: `Type "${note.type}" has no rubric, so it cannot be graded. Add one with \`cnotes types update ${note.type} --validation-prompt "…"\`.`,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
const supersededBy = readSupersededBy(note.raw);
|
|
93
|
+
if (supersededBy && supersededBy.length > 0) {
|
|
94
|
+
const by = supersededBy.map((r) => r.displayId).filter(Boolean).join(", ");
|
|
95
|
+
issues.push({
|
|
96
|
+
code: "superseded",
|
|
97
|
+
message: `Superseded${by ? ` by ${by}` : ""}. Readers should land on the replacement; archive this or point to it.`,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
return issues;
|
|
101
|
+
}
|
|
102
|
+
export function gradeFromResponse(body) {
|
|
103
|
+
if (body.outcome === "graded" && typeof body.level === "number") {
|
|
104
|
+
return {
|
|
105
|
+
outcome: "graded",
|
|
106
|
+
level: body.level,
|
|
107
|
+
label: LADDER_LABELS[body.level] ?? `Level ${body.level}`,
|
|
108
|
+
isTopRung: body.level >= LADDER_TOP,
|
|
109
|
+
feedback: String(body.feedback ?? ""),
|
|
110
|
+
nextStep: String(body.nextStep ?? ""),
|
|
111
|
+
suggestions: Array.isArray(body.suggestions) ? body.suggestions.map(String) : [],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
outcome: "skipped",
|
|
116
|
+
reason: String(body.reason ?? body.skipReason ?? "not graded"),
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Whether a report item should fail a `--fail-below <level>` gate: a graded
|
|
121
|
+
* note under the bar, or any structural issue except `no_rubric` (that one is
|
|
122
|
+
* the workspace's gap, not the note's, so it never blocks the author).
|
|
123
|
+
*/
|
|
124
|
+
export function itemFails(item, failBelow) {
|
|
125
|
+
if (failBelow === undefined)
|
|
126
|
+
return false;
|
|
127
|
+
if (item.grade.outcome === "graded" && item.grade.level < failBelow)
|
|
128
|
+
return true;
|
|
129
|
+
return item.issues.some((i) => i.code !== "no_rubric");
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;6EAC6E;AAC7E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC;AAE5B,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,CAAC,EAAE,UAAU;IACb,CAAC,EAAE,cAAc;IACjB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,QAAQ;CACZ,CAAC;AAiCF,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,GAA4B;IACxD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAoD,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC;IAC5C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;QACtC,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrD,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAClD,QAAQ,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QAC9C,GAAG,EAAE,GAAG;KACT,CAAC;AACJ,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,SAAkB;IAChD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,SAA4C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,IAAI,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC;YACxE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AAC/B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,IAAiB,EAAE,KAAkB;IACpE,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,mFAAmF;SAC7F,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;IACnE,IAAI,SAAS,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,OAAO,EACL,SAAS,KAAK,CAAC;gBACb,CAAC,CAAC,qDAAqD;gBACvD,CAAC,CAAC,WAAW,SAAS,0BAA0B,cAAc,gCAAgC;SACnG,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,IAAI,CAAC,IAAI;gBAChB,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,+GAA+G;gBACnI,CAAC,CAAC,sEAAsE;SAC3E,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,+EAA+E,IAAI,CAAC,IAAI,6BAA6B;SACjJ,CAAC,CAAC;IACL,CAAC;IAED,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,wEAAwE;SACpH,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAgBD,MAAM,UAAU,iBAAiB,CAAC,IAA6B;IAC7D,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,CAAC,KAAK,EAAE;YACzD,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,UAAU;YACnC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SACjF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC;KAC/D,CAAC;AACJ,CAAC;AAUD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAuB,EAAE,SAA6B;IAC9E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session brief for `cnotes operations begin`.
|
|
3
|
+
*
|
|
4
|
+
* An agent that is about to act should first see what the workspace already
|
|
5
|
+
* knows about the task: the decision that settled it, the guide that says how,
|
|
6
|
+
* the metric that says it is already done. Orienting through search was a
|
|
7
|
+
* standing rule agents had to remember, and they forgot (one suggested setting
|
|
8
|
+
* an Amplitude key that a Metric note already said existed). So `begin`, the
|
|
9
|
+
* one call every write path already makes first, runs the task prompt through
|
|
10
|
+
* the same hybrid search `cnotes search` uses and hands back the top notes.
|
|
11
|
+
*
|
|
12
|
+
* Best-effort by contract: a failed search yields no brief, never a failed
|
|
13
|
+
* begin.
|
|
14
|
+
*/
|
|
15
|
+
import type { ApiClient } from "./api-client.js";
|
|
16
|
+
export declare const BRIEF_LIMIT = 8;
|
|
17
|
+
export interface BriefNote {
|
|
18
|
+
displayId: string;
|
|
19
|
+
title: string;
|
|
20
|
+
type: string;
|
|
21
|
+
snippet: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SessionBrief {
|
|
24
|
+
query: string;
|
|
25
|
+
notes: BriefNote[];
|
|
26
|
+
}
|
|
27
|
+
/** Pull brief rows out of a unified `/api/search` response. */
|
|
28
|
+
export declare function briefFromSearch(query: string, data: unknown, limit?: number): SessionBrief;
|
|
29
|
+
export declare function loadSessionBrief(api: ApiClient, workspaceId: string, prompt: string | undefined): Promise<SessionBrief | null>;
|
|
30
|
+
//# sourceMappingURL=session-brief.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-brief.d.ts","sourceRoot":"","sources":["../../src/lib/session-brief.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,SAAc,GAAG,YAAY,CAmB/F;AAED,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAa9B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export const BRIEF_LIMIT = 8;
|
|
2
|
+
/** Pull brief rows out of a unified `/api/search` response. */
|
|
3
|
+
export function briefFromSearch(query, data, limit = BRIEF_LIMIT) {
|
|
4
|
+
const results = data?.sections?.notes?.results;
|
|
5
|
+
const notes = [];
|
|
6
|
+
for (const r of Array.isArray(results) ? results : []) {
|
|
7
|
+
const displayId = typeof r.displayId === "string" ? r.displayId : "";
|
|
8
|
+
if (!displayId)
|
|
9
|
+
continue;
|
|
10
|
+
const title = typeof r.title === "string" ? r.title : "";
|
|
11
|
+
const snippet = typeof r.snippet === "string" ? r.snippet.replace(/\s+/g, " ").trim() : "";
|
|
12
|
+
notes.push({
|
|
13
|
+
displayId,
|
|
14
|
+
title,
|
|
15
|
+
type: typeof r.type === "string" ? r.type : "",
|
|
16
|
+
// Snippets often open by repeating the title; drop that echo so the line
|
|
17
|
+
// carries something the title doesn't.
|
|
18
|
+
snippet: title && snippet.startsWith(title) ? snippet.slice(title.length).trim() : snippet,
|
|
19
|
+
});
|
|
20
|
+
if (notes.length >= limit)
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
return { query, notes };
|
|
24
|
+
}
|
|
25
|
+
export async function loadSessionBrief(api, workspaceId, prompt) {
|
|
26
|
+
const query = prompt?.trim();
|
|
27
|
+
if (!query)
|
|
28
|
+
return null;
|
|
29
|
+
try {
|
|
30
|
+
const data = await api.get("/api/search", {
|
|
31
|
+
q: query,
|
|
32
|
+
workspaceId,
|
|
33
|
+
limit: String(BRIEF_LIMIT),
|
|
34
|
+
});
|
|
35
|
+
return briefFromSearch(query, data);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=session-brief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-brief.js","sourceRoot":"","sources":["../../src/lib/session-brief.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAc7B,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,IAAa,EAAE,KAAK,GAAG,WAAW;IAC/E,MAAM,OAAO,GAAI,IAAyD,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC;IACrG,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAA0C,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1F,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC;YACT,SAAS;YACT,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC9C,yEAAyE;YACzE,uCAAuC;YACvC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO;SAC3F,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK;YAAE,MAAM;IACnC,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAc,EACd,WAAmB,EACnB,MAA0B;IAE1B,MAAM,KAAK,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAU,aAAa,EAAE;YACjD,CAAC,EAAE,KAAK;YACR,WAAW;YACX,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/mcp-server.js
CHANGED
|
@@ -27,7 +27,7 @@ import { ApiClient } from "./lib/api-client.js";
|
|
|
27
27
|
import { ApiError, CliError, NotFoundError } from "./lib/errors.js";
|
|
28
28
|
import { parseStart as parseFocusStart } from "./lib/focus-time.js";
|
|
29
29
|
import { resolveNoteId } from "./lib/resolve-note.js";
|
|
30
|
-
import { readCanvasMarkdown, readCanvasSection } from "./lib/canvas-read.js";
|
|
30
|
+
import { parseSharedCanvasLink, readCanvasMarkdown, readCanvasSection } from "./lib/canvas-read.js";
|
|
31
31
|
import { buildSchema } from "./lib/build-schema.js";
|
|
32
32
|
import { assertMcpLocalFileReadable, getMcpLocalFileRoots, } from "./lib/mcp-local-file.js";
|
|
33
33
|
import { attachRubricsToResults, loadRubricMap, rubricsForTypes, } from "./lib/rubrics.js";
|
|
@@ -330,9 +330,14 @@ server.tool("cnotes_canvas_list", "List canvases in the workspace. Archived canv
|
|
|
330
330
|
server.tool("cnotes_canvas_get", "Get canvas details including nodes, edges, and canvas links. Richtext node content is returned as markdown.", {
|
|
331
331
|
canvasId: z.string().describe("Canvas ID"),
|
|
332
332
|
}, async ({ canvasId }) => withErrorHandling(() => api.get(`/api/canvas/${encodeURIComponent(canvasId)}`, { workspaceId, format: "markdown" })));
|
|
333
|
-
server.tool("cnotes_canvas_read", "Read every note on a canvas as one concatenated markdown document, in display order (top-to-bottom, then left-to-right). Use this to think across a canvas in a single round-trip — preferred over canvas_get + N notes_get calls.", {
|
|
334
|
-
canvasId: z.string().describe("Canvas ID"),
|
|
335
|
-
}, async ({ canvasId }) => withErrorHandling(async () =>
|
|
333
|
+
server.tool("cnotes_canvas_read", "Read every note on a canvas as one concatenated markdown document, in display order (top-to-bottom, then left-to-right). Use this to think across a canvas in a single round-trip — preferred over canvas_get + N notes_get calls. Also accepts a share link (https://…/shared/<id>) someone sent the user: it is read with the access that link gives the same account in a browser, even when the canvas is outside the user's workspaces.", {
|
|
334
|
+
canvasId: z.string().describe("Canvas ID, or a share link (https://…/shared/<id>)"),
|
|
335
|
+
}, async ({ canvasId }) => withErrorHandling(async () => {
|
|
336
|
+
const link = parseSharedCanvasLink(canvasId);
|
|
337
|
+
return link
|
|
338
|
+
? readCanvasMarkdown(api, workspaceId, link.canvasId, { shared: true })
|
|
339
|
+
: readCanvasMarkdown(api, workspaceId, canvasId);
|
|
340
|
+
}));
|
|
336
341
|
server.tool("cnotes_canvas_read_section", "Read ONE section frame of a canvas: every note, sticky, list and portal whose center sits inside it, any frame nested within it, plus the edges it touches (an edge leaving the frame reports where it goes). Takes the SECTION-<n> handle on its own — the canvas is resolved for you. Use this when the user refers to a group of cards by its frame (\"look at SECTION-6GC\", \"what's in the risks section\") instead of reading the whole canvas and filtering.", {
|
|
337
342
|
section: z.string().describe("Section handle — SECTION-<n> display ID, or a raw section node ID"),
|
|
338
343
|
}, async ({ section }) => withErrorHandling(async () => readCanvasSection(api, workspaceId, section)));
|