@creator-notes/cli 0.1.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.
Files changed (89) hide show
  1. package/dist/cn.d.ts +3 -0
  2. package/dist/cn.d.ts.map +1 -0
  3. package/dist/cn.js +38 -0
  4. package/dist/cn.js.map +1 -0
  5. package/dist/commands/auth.d.ts +3 -0
  6. package/dist/commands/auth.d.ts.map +1 -0
  7. package/dist/commands/auth.js +184 -0
  8. package/dist/commands/auth.js.map +1 -0
  9. package/dist/commands/canvas.d.ts +3 -0
  10. package/dist/commands/canvas.d.ts.map +1 -0
  11. package/dist/commands/canvas.js +721 -0
  12. package/dist/commands/canvas.js.map +1 -0
  13. package/dist/commands/config.d.ts +3 -0
  14. package/dist/commands/config.d.ts.map +1 -0
  15. package/dist/commands/config.js +47 -0
  16. package/dist/commands/config.js.map +1 -0
  17. package/dist/commands/mcp.d.ts +3 -0
  18. package/dist/commands/mcp.d.ts.map +1 -0
  19. package/dist/commands/mcp.js +59 -0
  20. package/dist/commands/mcp.js.map +1 -0
  21. package/dist/commands/memory.d.ts +3 -0
  22. package/dist/commands/memory.d.ts.map +1 -0
  23. package/dist/commands/memory.js +145 -0
  24. package/dist/commands/memory.js.map +1 -0
  25. package/dist/commands/notes.d.ts +3 -0
  26. package/dist/commands/notes.d.ts.map +1 -0
  27. package/dist/commands/notes.js +508 -0
  28. package/dist/commands/notes.js.map +1 -0
  29. package/dist/commands/relationships.d.ts +3 -0
  30. package/dist/commands/relationships.d.ts.map +1 -0
  31. package/dist/commands/relationships.js +47 -0
  32. package/dist/commands/relationships.js.map +1 -0
  33. package/dist/commands/search.d.ts +3 -0
  34. package/dist/commands/search.d.ts.map +1 -0
  35. package/dist/commands/search.js +52 -0
  36. package/dist/commands/search.js.map +1 -0
  37. package/dist/commands/timeline.d.ts +3 -0
  38. package/dist/commands/timeline.d.ts.map +1 -0
  39. package/dist/commands/timeline.js +92 -0
  40. package/dist/commands/timeline.js.map +1 -0
  41. package/dist/commands/types.d.ts +3 -0
  42. package/dist/commands/types.d.ts.map +1 -0
  43. package/dist/commands/types.js +124 -0
  44. package/dist/commands/types.js.map +1 -0
  45. package/dist/commands/versions.d.ts +3 -0
  46. package/dist/commands/versions.d.ts.map +1 -0
  47. package/dist/commands/versions.js +104 -0
  48. package/dist/commands/versions.js.map +1 -0
  49. package/dist/commands/workspace.d.ts +3 -0
  50. package/dist/commands/workspace.d.ts.map +1 -0
  51. package/dist/commands/workspace.js +116 -0
  52. package/dist/commands/workspace.js.map +1 -0
  53. package/dist/lib/api-client.d.ts +12 -0
  54. package/dist/lib/api-client.d.ts.map +1 -0
  55. package/dist/lib/api-client.js +76 -0
  56. package/dist/lib/api-client.js.map +1 -0
  57. package/dist/lib/auth-store.d.ts +18 -0
  58. package/dist/lib/auth-store.d.ts.map +1 -0
  59. package/dist/lib/auth-store.js +54 -0
  60. package/dist/lib/auth-store.js.map +1 -0
  61. package/dist/lib/config.d.ts +26 -0
  62. package/dist/lib/config.d.ts.map +1 -0
  63. package/dist/lib/config.js +54 -0
  64. package/dist/lib/config.js.map +1 -0
  65. package/dist/lib/errors.d.ts +20 -0
  66. package/dist/lib/errors.d.ts.map +1 -0
  67. package/dist/lib/errors.js +54 -0
  68. package/dist/lib/errors.js.map +1 -0
  69. package/dist/lib/markdown-to-tiptap.d.ts +17 -0
  70. package/dist/lib/markdown-to-tiptap.d.ts.map +1 -0
  71. package/dist/lib/markdown-to-tiptap.js +228 -0
  72. package/dist/lib/markdown-to-tiptap.js.map +1 -0
  73. package/dist/lib/output.d.ts +22 -0
  74. package/dist/lib/output.d.ts.map +1 -0
  75. package/dist/lib/output.js +56 -0
  76. package/dist/lib/output.js.map +1 -0
  77. package/dist/lib/resolve-note.d.ts +7 -0
  78. package/dist/lib/resolve-note.d.ts.map +1 -0
  79. package/dist/lib/resolve-note.js +22 -0
  80. package/dist/lib/resolve-note.js.map +1 -0
  81. package/dist/lib/stdin.d.ts +5 -0
  82. package/dist/lib/stdin.d.ts.map +1 -0
  83. package/dist/lib/stdin.js +11 -0
  84. package/dist/lib/stdin.js.map +1 -0
  85. package/dist/mcp-server.d.ts +3 -0
  86. package/dist/mcp-server.d.ts.map +1 -0
  87. package/dist/mcp-server.js +508 -0
  88. package/dist/mcp-server.js.map +1 -0
  89. package/package.json +42 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTimelineCommands(program: Command): void;
3
+ //# sourceMappingURL=timeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/commands/timeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoEpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE/D"}
@@ -0,0 +1,92 @@
1
+ import { ApiClient } from "../lib/api-client.js";
2
+ import { resolveConfig } from "../lib/config.js";
3
+ import { handleError, ValidationError } from "../lib/errors.js";
4
+ import { outputJson, outputTable, timeAgo, truncate } from "../lib/output.js";
5
+ const DURATION_UNITS = {
6
+ m: 60_000,
7
+ h: 3_600_000,
8
+ d: 86_400_000,
9
+ w: 604_800_000,
10
+ };
11
+ function parseDateInput(input) {
12
+ // Relative shorthand: 7d, 3h, 30m, 2w
13
+ const rel = input.match(/^(\d+)([mhdw])$/);
14
+ if (rel) {
15
+ const amount = parseInt(rel[1], 10);
16
+ const unit = rel[2];
17
+ return Date.now() - amount * DURATION_UNITS[unit];
18
+ }
19
+ // Unix ms timestamp
20
+ if (/^\d{10,13}$/.test(input)) {
21
+ const n = parseInt(input, 10);
22
+ return input.length <= 10 ? n * 1000 : n;
23
+ }
24
+ // Reject short ambiguous strings (e.g. "7" parses as Jan 7 2001)
25
+ if (input.length < 6) {
26
+ throw new ValidationError(`Invalid date: "${input}". Use relative (7d, 2w), ISO date (2026-03-21), or unix ms.`);
27
+ }
28
+ // ISO / calendar date
29
+ const ms = new Date(input).getTime();
30
+ if (isNaN(ms)) {
31
+ throw new ValidationError(`Invalid date: "${input}". Use relative (7d, 2w), ISO date (2026-03-21), or unix ms.`);
32
+ }
33
+ return ms;
34
+ }
35
+ export function registerTimelineCommands(program) {
36
+ program
37
+ .command("timeline")
38
+ .alias("tl")
39
+ .description("Show recent changes across notes")
40
+ .option("--since <when>", "Start of range (e.g. 7d, 2w, 2026-03-21)", "7d")
41
+ .option("--until <when>", "End of range (default: now)")
42
+ .option("--type <noteType>", "Filter by note type (comma-separated, e.g. Meeting,Decision)")
43
+ .option("--note <filter>", "Filter by note ID or title substring")
44
+ .option("--limit <n>", "Max results (1-100)", "50")
45
+ .action(async (opts) => {
46
+ const cfg = resolveConfig(program.opts());
47
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
48
+ try {
49
+ const sinceMs = parseDateInput(opts.since);
50
+ const untilMs = opts.until ? parseDateInput(opts.until) : undefined;
51
+ const limit = Math.max(1, Math.min(100, parseInt(opts.limit, 10) || 50));
52
+ const params = {
53
+ workspaceId: cfg.workspaceId,
54
+ afterTimestamp: String(sinceMs),
55
+ beforeTimestamp: untilMs ? String(untilMs) : undefined,
56
+ limit: String(limit),
57
+ noteTypes: opts.type,
58
+ noteFilter: opts.note,
59
+ };
60
+ const data = await api.get("/api/timeline", params);
61
+ if (cfg.json) {
62
+ outputJson(data);
63
+ return;
64
+ }
65
+ if (cfg.quiet) {
66
+ for (const item of data.items) {
67
+ console.log(item.versionId);
68
+ }
69
+ return;
70
+ }
71
+ if (data.items.length === 0) {
72
+ console.log("No changes found in the specified time range.");
73
+ return;
74
+ }
75
+ const rows = data.items.map((item) => [
76
+ item.note.displayId,
77
+ `v${item.versionNumber}`,
78
+ truncate(item.changeDescription || "(no description)", 50),
79
+ timeAgo(item.createdAtRaw),
80
+ ]);
81
+ outputTable(["NOTE", "V#", "CHANGE", "WHEN"], rows);
82
+ const typeSummary = Object.entries(data.summary.byType)
83
+ .map(([type, count]) => `${type}: ${count}`)
84
+ .join(", ");
85
+ console.log(`\n${data.summary.totalChanges} changes across ${data.summary.uniqueNotes} notes (${typeSummary})`);
86
+ }
87
+ catch (error) {
88
+ handleError(error, cfg.json);
89
+ }
90
+ });
91
+ }
92
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/commands/timeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTypesCommands(program: Command): void;
3
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6H5D"}
@@ -0,0 +1,124 @@
1
+ import { ApiClient } from "../lib/api-client.js";
2
+ import { resolveConfig } from "../lib/config.js";
3
+ import { handleError } from "../lib/errors.js";
4
+ import { outputJson, outputTable, outputQuiet } from "../lib/output.js";
5
+ export function registerTypesCommands(program) {
6
+ const types = program
7
+ .command("types")
8
+ .alias("t")
9
+ .description("Manage note types (supertags)");
10
+ types
11
+ .command("list")
12
+ .description("List note types in the current workspace")
13
+ .action(async () => {
14
+ const cfg = resolveConfig(program.opts());
15
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
16
+ try {
17
+ const data = await api.get("/api/supertags", {
18
+ workspaceId: cfg.workspaceId,
19
+ });
20
+ const list = Array.isArray(data) ? data : [];
21
+ if (cfg.json) {
22
+ outputJson(list);
23
+ return;
24
+ }
25
+ if (list.length === 0) {
26
+ console.log("No types found.");
27
+ return;
28
+ }
29
+ const rows = list.map((s) => [
30
+ String(s.name || ""),
31
+ String(s.prefix || ""),
32
+ s.displayName !== s.name ? String(s.displayName || "") : "",
33
+ s.color ? String(s.color) : "",
34
+ s.isBuiltIn ? "yes" : "",
35
+ ]);
36
+ outputTable(["NAME", "PREFIX", "DISPLAY NAME", "COLOR", "BUILT-IN"], rows);
37
+ }
38
+ catch (error) {
39
+ handleError(error, cfg.json);
40
+ }
41
+ });
42
+ types
43
+ .command("create")
44
+ .description("Create a new note type")
45
+ .argument("<name>", "Type name (no spaces, e.g., PainPoint, UserStory)")
46
+ .option("--display-name <name>", "Display name (can have spaces)")
47
+ .option("--prefix <prefix>", "ID prefix (uppercase, e.g., PP, US)")
48
+ .option("--description <desc>", "Description")
49
+ .option("--color <color>", "Color hex code (e.g., #FF5733)")
50
+ .action(async (name, opts) => {
51
+ const cfg = resolveConfig(program.opts());
52
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
53
+ // Validate no spaces in name
54
+ if (/\s/.test(name)) {
55
+ console.error(`Error: Type name cannot contain spaces. Use PascalCase (e.g., "PainPoint" instead of "Pain Point").`);
56
+ process.exit(1);
57
+ }
58
+ try {
59
+ const data = await api.post("/api/supertags", {
60
+ workspaceId: cfg.workspaceId,
61
+ name,
62
+ displayName: opts.displayName,
63
+ prefix: opts.prefix,
64
+ description: opts.description,
65
+ color: opts.color,
66
+ });
67
+ if (cfg.quiet) {
68
+ outputQuiet(String(data.id || ""));
69
+ return;
70
+ }
71
+ if (cfg.json) {
72
+ outputJson(data);
73
+ }
74
+ else {
75
+ const displayName = opts.displayName ? ` (${opts.displayName})` : "";
76
+ console.log(`Created type: ${name}${displayName}`);
77
+ }
78
+ }
79
+ catch (error) {
80
+ handleError(error, cfg.json);
81
+ }
82
+ });
83
+ types
84
+ .command("update")
85
+ .description("Update a note type")
86
+ .argument("<name>", "Type name to update")
87
+ .option("--display-name <name>", "New display name")
88
+ .option("--prefix <prefix>", "New ID prefix (uppercase)")
89
+ .option("--description <desc>", "New description")
90
+ .option("--color <color>", "Color hex code (e.g., #FF5733)")
91
+ .action(async (name, opts) => {
92
+ const cfg = resolveConfig(program.opts());
93
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
94
+ try {
95
+ const body = {
96
+ workspaceId: cfg.workspaceId,
97
+ name,
98
+ };
99
+ if (opts.displayName)
100
+ body.displayName = opts.displayName;
101
+ if (opts.prefix)
102
+ body.prefix = opts.prefix;
103
+ if (opts.description)
104
+ body.description = opts.description;
105
+ if (opts.color)
106
+ body.color = opts.color;
107
+ if (Object.keys(body).length === 2) {
108
+ console.error("Error: No update flags provided. Use --display-name, --prefix, --description, or --color.");
109
+ process.exit(1);
110
+ }
111
+ const data = await api.patch("/api/supertags", body);
112
+ if (cfg.json) {
113
+ outputJson(data);
114
+ }
115
+ else {
116
+ console.log(`Updated type: ${name}`);
117
+ }
118
+ }
119
+ catch (error) {
120
+ handleError(error, cfg.json);
121
+ }
122
+ });
123
+ }
124
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/commands/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerVersionsCommands(program: Command): void;
3
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/commands/versions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwG/D"}
@@ -0,0 +1,104 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { ApiClient } from "../lib/api-client.js";
3
+ import { resolveConfig } from "../lib/config.js";
4
+ import { handleError } from "../lib/errors.js";
5
+ import { outputJson, outputTable, timeAgo } from "../lib/output.js";
6
+ import { resolveNoteId } from "../lib/resolve-note.js";
7
+ import { readStdin } from "../lib/stdin.js";
8
+ export function registerVersionsCommands(program) {
9
+ const versions = program
10
+ .command("versions")
11
+ .alias("v")
12
+ .description("Manage note versions");
13
+ versions
14
+ .command("list")
15
+ .description("List versions of a note")
16
+ .argument("<noteId>", "Note display ID or Convex ID")
17
+ .action(async (noteId) => {
18
+ const cfg = resolveConfig(program.opts());
19
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
20
+ try {
21
+ // Get note with versions
22
+ const notesList = await api.get(`/api/notes`, {
23
+ workspaceId: cfg.workspaceId,
24
+ exact_id: noteId,
25
+ includeVersions: "true",
26
+ });
27
+ const note = Array.isArray(notesList) ? notesList[0] : null;
28
+ if (!note) {
29
+ console.error(`Note not found: ${noteId}`);
30
+ process.exit(1);
31
+ }
32
+ const versionsList = (note.versions || []);
33
+ if (cfg.json) {
34
+ outputJson(versionsList);
35
+ return;
36
+ }
37
+ if (versionsList.length === 0) {
38
+ console.log("No versions found.");
39
+ return;
40
+ }
41
+ const rows = versionsList.map((v) => [
42
+ String(v.versionNumber || ""),
43
+ v.isLatest ? "*" : "",
44
+ String(v.changeDescription || ""),
45
+ v.createdAt ? timeAgo(v.createdAt) : "",
46
+ ]);
47
+ outputTable(["VERSION", "LATEST", "DESCRIPTION", "CREATED"], rows);
48
+ }
49
+ catch (error) {
50
+ handleError(error, cfg.json);
51
+ }
52
+ });
53
+ versions
54
+ .command("create")
55
+ .description("Create a new version of a note")
56
+ .argument("<noteId>", "Note display ID or Convex ID")
57
+ .option("--markdown <md>", "Content as markdown")
58
+ .option("--markdown-file <path>", "Read markdown content from file")
59
+ .option("--markdown-stdin", "Read markdown content from stdin")
60
+ .option("--content-file <path>", "Read TipTap JSON from file")
61
+ .option("--content-stdin", "Read TipTap JSON from stdin")
62
+ .requiredOption("--description <text>", "Change description (required)")
63
+ .action(async (noteId, opts) => {
64
+ const cfg = resolveConfig(program.opts());
65
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
66
+ try {
67
+ let content = undefined;
68
+ if (opts.markdownFile) {
69
+ content = readFileSync(opts.markdownFile, "utf-8");
70
+ }
71
+ else if (opts.markdownStdin) {
72
+ content = await readStdin();
73
+ }
74
+ else if (opts.contentFile) {
75
+ content = JSON.parse(readFileSync(opts.contentFile, "utf-8"));
76
+ }
77
+ else if (opts.contentStdin) {
78
+ content = JSON.parse(await readStdin());
79
+ }
80
+ else if (opts.markdown) {
81
+ content = opts.markdown; // Server converts markdown to TipTap JSON
82
+ }
83
+ if (!content) {
84
+ throw new Error("Content is required. Use --markdown, --markdown-file, --content-file, or --content-stdin");
85
+ }
86
+ // Resolve note ID if it's a display ID
87
+ const resolvedId = await resolveNoteId(api, cfg.workspaceId, noteId);
88
+ const data = await api.post(`/api/notes/${resolvedId}/versions`, {
89
+ content,
90
+ description: opts.description,
91
+ });
92
+ if (cfg.json) {
93
+ outputJson(data);
94
+ }
95
+ else {
96
+ console.log(`Created version ${data.versionNumber || "new"} for ${noteId}`);
97
+ }
98
+ }
99
+ catch (error) {
100
+ handleError(error, cfg.json);
101
+ }
102
+ });
103
+ }
104
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/commands/versions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerWorkspaceCommands(program: Command): void;
3
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6GhE"}
@@ -0,0 +1,116 @@
1
+ import { select } from "@inquirer/prompts";
2
+ import { ApiClient } from "../lib/api-client.js";
3
+ import { resolveBaseConfig } from "../lib/config.js";
4
+ import { loadConfig, setWorkspaceId } from "../lib/auth-store.js";
5
+ import { handleError, AuthError } from "../lib/errors.js";
6
+ import { outputJson, outputTable } from "../lib/output.js";
7
+ export function registerWorkspaceCommands(program) {
8
+ const ws = program
9
+ .command("workspace")
10
+ .alias("ws")
11
+ .description("Manage workspaces");
12
+ ws
13
+ .command("list")
14
+ .description("List your workspaces")
15
+ .action(async () => {
16
+ const opts = program.opts();
17
+ const cfg = resolveBaseConfig(opts);
18
+ if (!cfg.token)
19
+ throw new AuthError();
20
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
21
+ try {
22
+ const data = await api.get("/api/workspaces");
23
+ const workspaces = data.workspaces || data;
24
+ if (cfg.json) {
25
+ outputJson(workspaces);
26
+ }
27
+ else if (process.stdout.isTTY) {
28
+ const list = Array.isArray(workspaces) ? workspaces : [];
29
+ if (list.length === 0) {
30
+ console.log("No workspaces found.");
31
+ return;
32
+ }
33
+ const chosen = await select({
34
+ message: "Select a workspace to activate:",
35
+ choices: list.map((w) => ({
36
+ name: `${String(w.name || "(unnamed)")}${(w._id || w.id) === cfg.workspaceId ? " (active)" : ""}`,
37
+ value: String(w._id || w.id || ""),
38
+ })),
39
+ });
40
+ const config = loadConfig();
41
+ setWorkspaceId(config, cfg.serverUrl, chosen);
42
+ const name = list.find((w) => String(w._id || w.id) === chosen)?.name;
43
+ console.log(`Active workspace set to ${name || chosen}`);
44
+ }
45
+ else {
46
+ const rows = (Array.isArray(workspaces) ? workspaces : []).map((w) => [
47
+ String(w._id || w.id || ""),
48
+ String(w.name || ""),
49
+ (w._id || w.id) === cfg.workspaceId ? "(active)" : "",
50
+ ]);
51
+ outputTable(["ID", "NAME", ""], rows);
52
+ }
53
+ }
54
+ catch (error) {
55
+ handleError(error, cfg.json);
56
+ }
57
+ });
58
+ ws
59
+ .command("select")
60
+ .description("Set the active workspace")
61
+ .argument("<id>", "Workspace ID")
62
+ .action(async (id) => {
63
+ const opts = program.opts();
64
+ const cfg = resolveBaseConfig(opts);
65
+ try {
66
+ const config = loadConfig();
67
+ setWorkspaceId(config, cfg.serverUrl, id);
68
+ if (cfg.json) {
69
+ outputJson({ workspaceId: id });
70
+ }
71
+ else {
72
+ console.log(`Active workspace set to ${id}`);
73
+ }
74
+ }
75
+ catch (error) {
76
+ handleError(error, cfg.json);
77
+ }
78
+ });
79
+ ws
80
+ .command("current")
81
+ .description("Show the active workspace")
82
+ .action(async () => {
83
+ const opts = program.opts();
84
+ const cfg = resolveBaseConfig(opts);
85
+ try {
86
+ if (!cfg.workspaceId) {
87
+ if (cfg.json) {
88
+ outputJson({ workspaceId: null });
89
+ }
90
+ else {
91
+ console.log("No workspace selected. Run `cn workspace select <id>`");
92
+ }
93
+ return;
94
+ }
95
+ if (!cfg.token)
96
+ throw new AuthError();
97
+ const api = new ApiClient(cfg.serverUrl, cfg.token);
98
+ const data = await api.get(`/api/workspaces/${cfg.workspaceId}`);
99
+ const workspace = data.workspace || data;
100
+ if (cfg.json) {
101
+ outputJson(data);
102
+ }
103
+ else {
104
+ console.log(`Workspace: ${workspace.name || "Unknown"}`);
105
+ console.log(`ID: ${cfg.workspaceId}`);
106
+ if (workspace.userPermission) {
107
+ console.log(`Role: ${workspace.userPermission}`);
108
+ }
109
+ }
110
+ }
111
+ catch (error) {
112
+ handleError(error, cfg.json);
113
+ }
114
+ });
115
+ }
116
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/commands/workspace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAc,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,EAAE,GAAG,OAAO;SACf,OAAO,CAAC,WAAW,CAAC;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAEpC,EAAE;SACC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,KAAK;YAAE,MAAM,IAAI,SAAS,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAiD,iBAAiB,CAAC,CAAC;YAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;YAE3C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,UAAU,CAAC,UAAU,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;oBAC1B,OAAO,EAAE,iCAAiC;oBAC1C,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,CAAC;wBACjD,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;qBACnC,CAAC,CAAC;iBACJ,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC;gBAC/F,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC;YAC3D,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAA0B,EAAE,EAAE,CAAC;oBAC7F,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;oBAC3B,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;iBACtD,CAAC,CAAC;gBACH,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,EAAE;SACC,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;SAChC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;QAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAE1C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,UAAU,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,EAAE;SACC,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEpC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;oBACb,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,KAAK;gBAAE,MAAM,IAAI,SAAS,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAyC,mBAAmB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACzG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;YAEzC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACb,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,cAAe,SAAiB,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;gBAClE,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7C,IAAK,SAAiB,CAAC,cAAc,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,cAAe,SAAiB,CAAC,cAAc,EAAE,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class ApiClient {
2
+ private serverUrl;
3
+ private token;
4
+ constructor(serverUrl: string, token: string);
5
+ private headers;
6
+ get<T = unknown>(path: string, params?: Record<string, string | undefined>): Promise<T>;
7
+ post<T = unknown>(path: string, body?: Record<string, unknown>): Promise<T>;
8
+ patch<T = unknown>(path: string, body?: Record<string, unknown>): Promise<T>;
9
+ delete<T = unknown>(path: string): Promise<T>;
10
+ private parseJsonSafe;
11
+ }
12
+ //# sourceMappingURL=api-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAEA,qBAAa,SAAS;IAElB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;gBADL,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM;IAGvB,OAAO,CAAC,OAAO;IAOT,GAAG,CAAC,CAAC,GAAG,OAAO,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC1C,OAAO,CAAC,CAAC,CAAC;IAqBP,IAAI,CAAC,CAAC,GAAG,OAAO,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAgBP,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAgBP,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAerC,aAAa;CAI5B"}
@@ -0,0 +1,76 @@
1
+ import { ApiError } from "./errors.js";
2
+ export class ApiClient {
3
+ serverUrl;
4
+ token;
5
+ constructor(serverUrl, token) {
6
+ this.serverUrl = serverUrl;
7
+ this.token = token;
8
+ }
9
+ headers() {
10
+ return {
11
+ Authorization: `Bearer ${this.token}`,
12
+ "Content-Type": "application/json",
13
+ };
14
+ }
15
+ async get(path, params) {
16
+ const url = new URL(path, this.serverUrl);
17
+ if (params) {
18
+ for (const [k, v] of Object.entries(params)) {
19
+ if (v !== undefined)
20
+ url.searchParams.set(k, v);
21
+ }
22
+ }
23
+ const res = await fetch(url.toString(), {
24
+ method: "GET",
25
+ headers: this.headers(),
26
+ });
27
+ if (!res.ok) {
28
+ const body = await res.json().catch(() => ({}));
29
+ throw new ApiError(res.status, body);
30
+ }
31
+ return res.json();
32
+ }
33
+ async post(path, body) {
34
+ const url = new URL(path, this.serverUrl);
35
+ const res = await fetch(url.toString(), {
36
+ method: "POST",
37
+ headers: this.headers(),
38
+ body: body ? JSON.stringify(body) : undefined,
39
+ });
40
+ if (!res.ok) {
41
+ const respBody = await res.json().catch(() => ({}));
42
+ throw new ApiError(res.status, respBody);
43
+ }
44
+ return res.json();
45
+ }
46
+ async patch(path, body) {
47
+ const url = new URL(path, this.serverUrl);
48
+ const res = await fetch(url.toString(), {
49
+ method: "PATCH",
50
+ headers: this.headers(),
51
+ body: body ? JSON.stringify(body) : undefined,
52
+ });
53
+ if (!res.ok) {
54
+ const respBody = await res.json().catch(() => ({}));
55
+ throw new ApiError(res.status, respBody);
56
+ }
57
+ return this.parseJsonSafe(res);
58
+ }
59
+ async delete(path) {
60
+ const url = new URL(path, this.serverUrl);
61
+ const res = await fetch(url.toString(), {
62
+ method: "DELETE",
63
+ headers: this.headers(),
64
+ });
65
+ if (!res.ok) {
66
+ const body = await res.json().catch(() => ({}));
67
+ throw new ApiError(res.status, body);
68
+ }
69
+ return this.parseJsonSafe(res);
70
+ }
71
+ async parseJsonSafe(res) {
72
+ const text = await res.text();
73
+ return (text ? JSON.parse(text) : {});
74
+ }
75
+ }
76
+ //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ServerConfig {
2
+ token: string;
3
+ email: string;
4
+ workspaceId?: string;
5
+ }
6
+ export interface CliConfig {
7
+ version: 1;
8
+ servers: Record<string, ServerConfig>;
9
+ currentServer: string;
10
+ }
11
+ export declare function loadConfig(): CliConfig;
12
+ export declare function saveConfig(config: CliConfig): void;
13
+ export declare function getServerConfig(config: CliConfig, server?: string): ServerConfig | null;
14
+ export declare function setServerConfig(config: CliConfig, serverUrl: string, serverConfig: ServerConfig): void;
15
+ export declare function removeServerConfig(config: CliConfig, serverUrl: string): void;
16
+ export declare function setCurrentServer(config: CliConfig, serverUrl: string): void;
17
+ export declare function setWorkspaceId(config: CliConfig, serverUrl: string, workspaceId: string): void;
18
+ //# sourceMappingURL=auth-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../../src/lib/auth-store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,aAAa,EAAE,MAAM,CAAC;CACvB;AAaD,wBAAgB,UAAU,IAAI,SAAS,CAOtC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAQlD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAGvF;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,GACzB,IAAI,CAGN;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAG7E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,IAAI,CAMN"}