@workjournal/cli 0.1.0 → 0.2.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 (51) hide show
  1. package/dist/api-client.d.ts +28 -0
  2. package/dist/api-client.d.ts.map +1 -0
  3. package/dist/api-client.js +114 -0
  4. package/dist/api-client.js.map +1 -0
  5. package/dist/auth.d.ts +1 -1
  6. package/dist/auth.d.ts.map +1 -1
  7. package/dist/auth.js +6 -3
  8. package/dist/auth.js.map +1 -1
  9. package/dist/commands/entries.d.ts +6 -0
  10. package/dist/commands/entries.d.ts.map +1 -0
  11. package/dist/commands/entries.js +92 -0
  12. package/dist/commands/entries.js.map +1 -0
  13. package/dist/commands/export.d.ts +2 -0
  14. package/dist/commands/export.d.ts.map +1 -0
  15. package/dist/commands/export.js +22 -0
  16. package/dist/commands/export.js.map +1 -0
  17. package/dist/commands/invites.d.ts +4 -0
  18. package/dist/commands/invites.d.ts.map +1 -0
  19. package/dist/commands/invites.js +45 -0
  20. package/dist/commands/invites.js.map +1 -0
  21. package/dist/commands/journals.d.ts +6 -0
  22. package/dist/commands/journals.d.ts.map +1 -0
  23. package/dist/commands/journals.js +70 -0
  24. package/dist/commands/journals.js.map +1 -0
  25. package/dist/commands/shares.d.ts +3 -0
  26. package/dist/commands/shares.d.ts.map +1 -0
  27. package/dist/commands/shares.js +34 -0
  28. package/dist/commands/shares.js.map +1 -0
  29. package/dist/config.d.ts +6 -0
  30. package/dist/config.d.ts.map +1 -0
  31. package/dist/config.js +22 -0
  32. package/dist/config.js.map +1 -0
  33. package/dist/credentials.d.ts +1 -0
  34. package/dist/credentials.d.ts.map +1 -1
  35. package/dist/credentials.js +1 -1
  36. package/dist/credentials.js.map +1 -1
  37. package/dist/formatting.d.ts +9 -0
  38. package/dist/formatting.d.ts.map +1 -0
  39. package/dist/formatting.js +37 -0
  40. package/dist/formatting.js.map +1 -0
  41. package/dist/index.js +385 -51
  42. package/dist/index.js.map +1 -1
  43. package/dist/project-config.d.ts +18 -0
  44. package/dist/project-config.d.ts.map +1 -0
  45. package/dist/project-config.js +55 -0
  46. package/dist/project-config.js.map +1 -0
  47. package/dist/wsl.d.ts +5 -0
  48. package/dist/wsl.d.ts.map +1 -0
  49. package/dist/wsl.js +33 -0
  50. package/dist/wsl.js.map +1 -0
  51. package/package.json +1 -1
@@ -3,6 +3,7 @@ export interface StoredCredentials {
3
3
  refresh_token?: string;
4
4
  expires_at: string;
5
5
  }
6
+ export declare const CONFIG_DIR: string;
6
7
  export interface LoginState {
7
8
  verifier: string;
8
9
  challenge: string;
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB;AASD,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAU1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI/D;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAIvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CA0BlD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAI9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAE3D;AAID,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0BzF;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB7D"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,QAA2E,CAAC;AAOnG,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAgB,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAU1D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAI/D;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAIvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CA0BlD;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAI9D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAE3D;AAID,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0BzF;AAED;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB7D"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- const CONFIG_DIR = join(homedir(), '.workjournal');
4
+ export const CONFIG_DIR = process.env['WORKJOURNAL_CONFIG_DIR'] ?? join(homedir(), '.workjournal');
5
5
  const CREDENTIALS_PATH = join(CONFIG_DIR, 'credentials.json');
6
6
  const CREDENTIALS_TMP_PATH = `${CREDENTIALS_PATH}.tmp`;
7
7
  const LOGIN_STATE_PATH = join(CONFIG_DIR, 'cli-login-state.json');
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Format data as a simple ASCII table for terminal output.
3
+ */
4
+ export declare function formatTable(headers: string[], rows: string[][]): string;
5
+ /**
6
+ * Truncate a string to a maximum length, appending "..." if truncated.
7
+ */
8
+ export declare function truncate(s: string, maxLength: number): string;
9
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAqBvE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK7D"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Format data as a simple ASCII table for terminal output.
3
+ */
4
+ export function formatTable(headers, rows) {
5
+ if (headers.length === 0)
6
+ return '';
7
+ const widths = headers.map((h, i) => {
8
+ let max = h.length;
9
+ for (const row of rows) {
10
+ const cell = row[i] ?? '';
11
+ if (cell.length > max)
12
+ max = cell.length;
13
+ }
14
+ return max;
15
+ });
16
+ const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
17
+ const lines = [];
18
+ lines.push(headers.map((h, i) => pad(h, widths[i] ?? 0)).join(' '));
19
+ lines.push(widths.map((w) => '-'.repeat(w)).join(' '));
20
+ for (const row of rows) {
21
+ lines.push(headers.map((_, i) => pad(row[i] ?? '', widths[i] ?? 0)).join(' '));
22
+ }
23
+ return `${lines.join('\n')}\n`;
24
+ }
25
+ /**
26
+ * Truncate a string to a maximum length, appending "..." if truncated.
27
+ */
28
+ export function truncate(s, maxLength) {
29
+ if (maxLength <= 0)
30
+ return '';
31
+ if (s.length <= maxLength)
32
+ return s;
33
+ if (maxLength <= 3)
34
+ return s.slice(0, maxLength);
35
+ return `${s.slice(0, maxLength - 3)}...`;
36
+ }
37
+ //# sourceMappingURL=formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../src/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAiB,EAAE,IAAgB;IAC9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG;gBAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1C,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,SAAiB;IACpD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;AAC1C,CAAC"}
package/dist/index.js CHANGED
@@ -1,72 +1,406 @@
1
1
  #!/usr/bin/env node
2
2
  import { loginFinish, loginInteractive, loginStart } from './auth.js';
3
- import { clearCredentials, clearLoginState, readCredentials } from './credentials.js';
4
- const command = process.argv[2];
5
- switch (command) {
6
- case 'login': {
7
- const sub = process.argv[3];
8
- if (sub === 'start') {
9
- loginStart();
10
- }
11
- else if (sub === 'finish') {
12
- const code = process.argv[4];
13
- if (!code) {
14
- process.stderr.write('Usage: workjournal login finish <CODE>\n');
3
+ import { createEntry, deleteEntry, lastEntries, listEntries, searchEntries, } from './commands/entries.js';
4
+ import { exportJournal } from './commands/export.js';
5
+ import { deleteInvite, listInvites, newInvite } from './commands/invites.js';
6
+ import { createJournal, deleteJournal, getJournal, listJournals, selectJournal, } from './commands/journals.js';
7
+ import { deleteShare, listShares } from './commands/shares.js';
8
+ import { readConfig } from './config.js';
9
+ import { CONFIG_DIR, clearCredentials, clearLoginState, readCredentials } from './credentials.js';
10
+ import { findProjectConfig, getProjectConfigPath } from './project-config.js';
11
+ // ── Arg parsing ─────────────────────────────────────────────────────────────
12
+ const rawArgs = process.argv.slice(2);
13
+ const jsonOutput = rawArgs.includes('--json');
14
+ const args = rawArgs.filter((a) => a !== '--json');
15
+ /** Parse args into flags (single-dash short or double-dash long) and positional args. */
16
+ function parseFlags(argv) {
17
+ const flags = {};
18
+ const positional = [];
19
+ let i = 0;
20
+ while (i < argv.length) {
21
+ const arg = argv[i];
22
+ if ((arg.startsWith('--') || (arg.startsWith('-') && arg.length === 2)) &&
23
+ i + 1 < argv.length) {
24
+ flags[arg] = argv[i + 1];
25
+ i += 2;
26
+ }
27
+ else {
28
+ positional.push(arg);
29
+ i++;
30
+ }
31
+ }
32
+ return { flags, positional };
33
+ }
34
+ // ── Journal ID resolution ───────────────────────────────────────────────────
35
+ function resolveJournalId() {
36
+ const projectConfig = findProjectConfig();
37
+ if (projectConfig)
38
+ return projectConfig.journal_id;
39
+ const config = readConfig();
40
+ if (config.journal)
41
+ return config.journal;
42
+ process.stderr.write(`No journal selected. To select one:
43
+ workjournal journals list List available journals
44
+ workjournal journals select <id> Set active journal
45
+ `);
46
+ process.exit(1);
47
+ }
48
+ // ── Routing ─────────────────────────────────────────────────────────────────
49
+ async function routeAuth(argv) {
50
+ const sub = argv[0];
51
+ switch (sub) {
52
+ case 'login': {
53
+ const loginSub = argv[1];
54
+ if (loginSub === 'start') {
55
+ await loginStart();
56
+ }
57
+ else if (loginSub === 'finish') {
58
+ const code = argv[2];
59
+ if (!code) {
60
+ process.stderr.write('Usage: workjournal auth login finish <CODE>\n');
61
+ process.exit(1);
62
+ }
63
+ await loginFinish(code);
64
+ }
65
+ else if (loginSub === undefined) {
66
+ await loginInteractive();
67
+ }
68
+ else {
69
+ process.stderr.write(`Unknown auth login subcommand: ${loginSub}\n`);
15
70
  process.exit(1);
16
71
  }
17
- await loginFinish(code);
72
+ break;
18
73
  }
19
- else if (sub === undefined) {
20
- await loginInteractive();
74
+ case 'logout':
75
+ clearCredentials();
76
+ clearLoginState();
77
+ process.stdout.write('Logged out. Credentials removed.\n');
78
+ break;
79
+ case 'whoami': {
80
+ const creds = readCredentials();
81
+ if (!creds) {
82
+ process.stderr.write('Not logged in. Run `workjournal auth login` to authenticate.\n');
83
+ process.exit(1);
84
+ }
85
+ process.stdout.write(`Authenticated. Credentials stored at ${CONFIG_DIR}/credentials.json\n`);
86
+ break;
21
87
  }
22
- else {
23
- process.stderr.write(`Unknown login subcommand: ${sub}\n`);
24
- process.stderr.write('Usage: workjournal login [start | finish <CODE>]\n');
88
+ case 'status': {
89
+ const creds = readCredentials();
90
+ if (!creds) {
91
+ process.stdout.write('Status: not authenticated\n');
92
+ process.stdout.write('Run `workjournal auth login` to authenticate.\n');
93
+ }
94
+ else {
95
+ const expiresAt = new Date(creds.expires_at);
96
+ const isExpired = expiresAt < new Date();
97
+ process.stdout.write('Status: authenticated\n');
98
+ process.stdout.write(`Token expires: ${expiresAt.toISOString()}${isExpired ? ' (expired, will auto-refresh)' : ''}\n`);
99
+ }
100
+ break;
101
+ }
102
+ default:
103
+ process.stderr.write(`Unknown auth subcommand: ${sub ?? '(none)'}\n` +
104
+ 'Usage: workjournal auth <login|logout|whoami|status>\n');
25
105
  process.exit(1);
106
+ }
107
+ }
108
+ async function routeEntries(journalId, argv) {
109
+ const sub = argv[0];
110
+ switch (sub) {
111
+ case undefined:
112
+ case 'list':
113
+ await listEntries(journalId, jsonOutput);
114
+ break;
115
+ case 'write': {
116
+ const { flags } = parseFlags(argv.slice(1));
117
+ const summary = flags['-s'] ?? flags['--summary'];
118
+ const body = flags['-b'] ?? flags['--body'];
119
+ if (!summary || !body) {
120
+ process.stderr.write('Usage: workjournal journals <id> entries write -s <summary> -b <body>\n');
121
+ process.exit(1);
122
+ }
123
+ await createEntry(journalId, summary, body, jsonOutput);
124
+ break;
26
125
  }
27
- break;
126
+ case 'last': {
127
+ const count = Number.parseInt(argv[1] ?? '1', 10);
128
+ if (Number.isNaN(count) || count < 1) {
129
+ process.stderr.write('Usage: workjournal journals <id> entries last [count]\n');
130
+ process.exit(1);
131
+ }
132
+ await lastEntries(journalId, count, jsonOutput);
133
+ break;
134
+ }
135
+ case 'delete': {
136
+ const entryNumber = argv[1];
137
+ if (!entryNumber) {
138
+ process.stderr.write('Usage: workjournal journals <id> entries delete <entry_number>\n');
139
+ process.exit(1);
140
+ }
141
+ await deleteEntry(journalId, entryNumber, jsonOutput);
142
+ break;
143
+ }
144
+ case 'search': {
145
+ const query = argv[1];
146
+ if (!query) {
147
+ process.stderr.write('Usage: workjournal journals <id> entries search <query>\n');
148
+ process.exit(1);
149
+ }
150
+ await searchEntries(journalId, query, jsonOutput);
151
+ break;
152
+ }
153
+ default:
154
+ process.stderr.write(`Unknown entries subcommand: ${sub}\n`);
155
+ process.exit(1);
28
156
  }
29
- case 'logout':
30
- clearCredentials();
31
- clearLoginState();
32
- process.stdout.write('Logged out. Credentials removed.\n');
33
- break;
34
- case 'whoami': {
35
- const creds = readCredentials();
36
- if (!creds) {
37
- process.stderr.write('Not logged in. Run `workjournal login` to authenticate.\n');
157
+ }
158
+ async function routeShares(journalId, argv) {
159
+ const sub = argv[0];
160
+ switch (sub) {
161
+ case undefined:
162
+ case 'list':
163
+ await listShares(journalId, jsonOutput);
164
+ break;
165
+ case 'delete': {
166
+ const email = argv[1];
167
+ if (!email) {
168
+ process.stderr.write('Usage: workjournal journals <id> shares delete <email>\n');
169
+ process.exit(1);
170
+ }
171
+ await deleteShare(journalId, email, jsonOutput);
172
+ break;
173
+ }
174
+ default:
175
+ process.stderr.write(`Unknown shares subcommand: ${sub}\n`);
38
176
  process.exit(1);
177
+ }
178
+ }
179
+ async function routeInvites(journalId, argv) {
180
+ const sub = argv[0];
181
+ switch (sub) {
182
+ case undefined:
183
+ case 'list':
184
+ await listInvites(journalId, jsonOutput);
185
+ break;
186
+ case 'new': {
187
+ const email = argv[1];
188
+ if (!email) {
189
+ process.stderr.write('Usage: workjournal journals <id> invites new <email>\n');
190
+ process.exit(1);
191
+ }
192
+ await newInvite(journalId, email, jsonOutput);
193
+ break;
39
194
  }
40
- process.stdout.write('Authenticated. Credentials stored at ~/.workjournal/credentials.json\n');
41
- break;
195
+ case 'delete': {
196
+ const invitationId = argv[1];
197
+ if (!invitationId) {
198
+ process.stderr.write('Usage: workjournal journals <id> invites delete <invitation_id>\n');
199
+ process.exit(1);
200
+ }
201
+ await deleteInvite(journalId, invitationId, jsonOutput);
202
+ break;
203
+ }
204
+ default:
205
+ process.stderr.write(`Unknown invites subcommand: ${sub}\n`);
206
+ process.exit(1);
42
207
  }
43
- case 'status': {
44
- const creds = readCredentials();
45
- if (!creds) {
46
- process.stdout.write('Status: not authenticated\n');
47
- process.stdout.write('Run `workjournal login` to authenticate.\n');
208
+ }
209
+ async function routeJournalResource(journalId, argv) {
210
+ const sub = argv[0];
211
+ switch (sub) {
212
+ case undefined:
213
+ await getJournal(journalId, jsonOutput);
214
+ break;
215
+ case 'entries':
216
+ await routeEntries(journalId, argv.slice(1));
217
+ break;
218
+ case 'shares':
219
+ await routeShares(journalId, argv.slice(1));
220
+ break;
221
+ case 'invites':
222
+ await routeInvites(journalId, argv.slice(1));
223
+ break;
224
+ case 'export': {
225
+ const { flags } = parseFlags(argv.slice(1));
226
+ const format = flags['-f'] ?? flags['--format'] ?? 'json';
227
+ if (!['json', 'md', 'csv'].includes(format)) {
228
+ process.stderr.write('Invalid format. Use: -f json|md|csv\n');
229
+ process.exit(1);
230
+ }
231
+ const outputPath = flags['-p'] ?? flags['--path'];
232
+ await exportJournal(journalId, format, outputPath);
233
+ break;
234
+ }
235
+ default:
236
+ process.stderr.write(`Unknown subcommand: ${sub}\n`);
237
+ process.exit(1);
238
+ }
239
+ }
240
+ async function routeJournals(argv) {
241
+ const sub = argv[0];
242
+ if (sub === undefined) {
243
+ // Shortcut: workjournal journals → show selected journal details
244
+ const journalId = resolveJournalId();
245
+ await getJournal(journalId, jsonOutput);
246
+ return;
247
+ }
248
+ if (sub === 'list') {
249
+ await listJournals(jsonOutput);
250
+ return;
251
+ }
252
+ if (sub === 'new') {
253
+ const name = argv[1];
254
+ if (!name) {
255
+ process.stderr.write('Usage: workjournal journals new <name>\n');
256
+ process.exit(1);
257
+ }
258
+ await createJournal(name, jsonOutput);
259
+ return;
260
+ }
261
+ if (sub === 'delete') {
262
+ const id = argv[1];
263
+ if (!id) {
264
+ process.stderr.write('Usage: workjournal journals delete <journal_id>\n');
265
+ process.exit(1);
266
+ }
267
+ await deleteJournal(id, jsonOutput);
268
+ return;
269
+ }
270
+ if (sub === 'select') {
271
+ const id = argv[1];
272
+ if (!id) {
273
+ process.stderr.write('Usage: workjournal journals select <journal_id>\n');
274
+ process.exit(1);
275
+ }
276
+ await selectJournal(id);
277
+ return;
278
+ }
279
+ // Not a known subcommand — treat as a journal ID
280
+ const journalId = sub;
281
+ await routeJournalResource(journalId, argv.slice(1));
282
+ }
283
+ async function routeConfig(argv) {
284
+ const sub = argv[0];
285
+ if (sub === 'show') {
286
+ const projectPath = getProjectConfigPath();
287
+ const projectCfg = findProjectConfig();
288
+ const globalCfg = readConfig();
289
+ process.stdout.write('Project config:\n');
290
+ if (projectPath && projectCfg) {
291
+ process.stdout.write(` Path: ${projectPath}\n`);
292
+ process.stdout.write(` journal_id: ${projectCfg.journal_id}\n`);
293
+ }
294
+ else {
295
+ process.stdout.write(' (none)\n');
296
+ }
297
+ process.stdout.write('Global config:\n');
298
+ if (globalCfg.journal) {
299
+ process.stdout.write(` journal: ${globalCfg.journal}\n`);
48
300
  }
49
301
  else {
50
- const expiresAt = new Date(creds.expires_at);
51
- const isExpired = expiresAt < new Date();
52
- process.stdout.write('Status: authenticated\n');
53
- process.stdout.write(`Token expires: ${expiresAt.toISOString()}${isExpired ? ' (expired, will auto-refresh)' : ''}\n`);
302
+ process.stdout.write(' (none)\n');
54
303
  }
55
- break;
56
304
  }
57
- default:
58
- process.stdout.write(`workjournal CLI for Workjournal (https://workjournal.pro)
305
+ else {
306
+ process.stderr.write('Usage: workjournal config show\n');
307
+ process.exit(1);
308
+ }
309
+ }
310
+ // ── Help ────────────────────────────────────────────────────────────────────
311
+ function printHelp() {
312
+ process.stdout.write(`workjournal — CLI for Workjournal (https://workjournal.pro)
59
313
 
60
314
  Usage:
61
- workjournal login Interactive login (terminal only)
62
- workjournal login start Print authorize URL and store PKCE state
63
- workjournal login finish <CODE> Exchange the pasted code for credentials
64
- workjournal logout Remove stored credentials
65
- workjournal whoami Show current auth status
66
- workjournal status Show detailed auth status\n`);
67
- if (command && command !== 'help' && command !== '--help') {
68
- process.stderr.write(`Unknown command: ${command}\n`);
69
- process.exit(1);
315
+ workjournal List entries in selected journal
316
+
317
+ Selected journal (workjournal journal ...):
318
+ workjournal journal Show selected journal details
319
+ workjournal journal entries List entries
320
+ workjournal journal entries write -s <summary> -b <body>
321
+ Create a new entry
322
+ workjournal journal entries last [count] Show most recent entries
323
+ workjournal journal entries delete <number> Delete an entry
324
+ workjournal journal entries search <query> Search entries
325
+ workjournal journal shares List members
326
+ workjournal journal shares delete <email> Remove a member
327
+ workjournal journal invites List invitations
328
+ workjournal journal invites new <email> Invite a collaborator
329
+ workjournal journal invites delete <id> Revoke an invitation
330
+ workjournal journal export [-f json|md|csv] [-p <path>]
331
+ Export journal data
332
+
333
+ Manage journals (workjournal journals ...):
334
+ workjournal journals list List your journals
335
+ workjournal journals new <name> Create a new journal
336
+ workjournal journals delete <id> Delete a journal
337
+ workjournal journals select <id> Set active journal
338
+ workjournal journals <id> Show journal details
339
+ workjournal journals <id> entries|shares|invites|export
340
+ Access resources by journal ID
341
+
342
+ Auth:
343
+ workjournal auth login Interactive login
344
+ workjournal auth login start Print authorize URL (headless)
345
+ workjournal auth login finish <CODE> Exchange code for credentials
346
+ workjournal auth logout Remove stored credentials
347
+ workjournal auth whoami Show current auth status
348
+ workjournal auth status Show detailed auth status
349
+
350
+ Config:
351
+ workjournal config show Show resolved config
352
+
353
+ Flags:
354
+ --json Output raw JSON instead of tables
355
+ `);
356
+ }
357
+ // ── Main ────────────────────────────────────────────────────────────────────
358
+ async function run() {
359
+ try {
360
+ const command = args[0];
361
+ if (command === 'help' || command === '--help') {
362
+ printHelp();
363
+ return;
364
+ }
365
+ if (command === undefined) {
366
+ // Shortcut: workjournal → list entries in selected journal
367
+ const journalId = resolveJournalId();
368
+ await listEntries(journalId, jsonOutput);
369
+ return;
370
+ }
371
+ switch (command) {
372
+ case 'auth':
373
+ await routeAuth(args.slice(1));
374
+ break;
375
+ case 'journal': {
376
+ const journalId = resolveJournalId();
377
+ await routeJournalResource(journalId, args.slice(1));
378
+ break;
379
+ }
380
+ case 'journals':
381
+ await routeJournals(args.slice(1));
382
+ break;
383
+ case 'config':
384
+ await routeConfig(args.slice(1));
385
+ break;
386
+ default:
387
+ printHelp();
388
+ process.stderr.write(`\nUnknown command: ${command}\n`);
389
+ process.exit(1);
70
390
  }
391
+ }
392
+ catch (err) {
393
+ const message = err instanceof Error ? err.message : String(err);
394
+ if (message.includes('fetch') ||
395
+ message.includes('ECONNREFUSED') ||
396
+ message.includes('ENOTFOUND')) {
397
+ process.stderr.write(`Network error: ${message}. Check your connection.\n`);
398
+ }
399
+ else {
400
+ process.stderr.write(`Error: ${message}\n`);
401
+ }
402
+ process.exit(1);
403
+ }
71
404
  }
405
+ await run();
72
406
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface ProjectConfig {
2
+ journal_id: string;
3
+ }
4
+ /**
5
+ * Walk from `startDir` (default `process.cwd()`) upward, looking for a `.workjournal` JSON file.
6
+ * Returns the parsed config or `null` if not found or malformed.
7
+ */
8
+ export declare function findProjectConfig(startDir?: string): ProjectConfig | null;
9
+ /**
10
+ * Return the path to the `.workjournal` file found by walking upward from `startDir`,
11
+ * or `null` if none exists.
12
+ */
13
+ export declare function getProjectConfigPath(startDir?: string): string | null;
14
+ /**
15
+ * Write a `.workjournal` config file to the given directory using atomic tmp+rename.
16
+ */
17
+ export declare function writeProjectConfig(dir: string, journalId: string): void;
18
+ //# sourceMappingURL=project-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC7B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAezE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAcrE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAOvE"}