@workjournal/cli 0.1.0 → 0.3.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.
- package/dist/api-client.d.ts +28 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +114 -0
- package/dist/api-client.js.map +1 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +6 -3
- package/dist/auth.js.map +1 -1
- package/dist/commands/entries.d.ts +7 -0
- package/dist/commands/entries.d.ts.map +1 -0
- package/dist/commands/entries.js +102 -0
- package/dist/commands/entries.js.map +1 -0
- package/dist/commands/export.d.ts +2 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +22 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/invites.d.ts +4 -0
- package/dist/commands/invites.d.ts.map +1 -0
- package/dist/commands/invites.js +45 -0
- package/dist/commands/invites.js.map +1 -0
- package/dist/commands/journals.d.ts +6 -0
- package/dist/commands/journals.d.ts.map +1 -0
- package/dist/commands/journals.js +70 -0
- package/dist/commands/journals.js.map +1 -0
- package/dist/commands/shares.d.ts +3 -0
- package/dist/commands/shares.d.ts.map +1 -0
- package/dist/commands/shares.js +34 -0
- package/dist/commands/shares.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +22 -0
- package/dist/config.js.map +1 -0
- package/dist/credentials.d.ts +1 -28
- package/dist/credentials.d.ts.map +1 -1
- package/dist/credentials.js +1 -124
- package/dist/credentials.js.map +1 -1
- package/dist/formatting.d.ts +9 -0
- package/dist/formatting.d.ts.map +1 -0
- package/dist/formatting.js +37 -0
- package/dist/formatting.js.map +1 -0
- package/dist/index.js +395 -51
- package/dist/index.js.map +1 -1
- package/dist/project-config.d.ts +18 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +55 -0
- package/dist/project-config.js.map +1 -0
- package/dist/wsl.d.ts +5 -0
- package/dist/wsl.d.ts.map +1 -0
- package/dist/wsl.js +33 -0
- package/dist/wsl.js.map +1 -0
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -1,72 +1,416 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { loginFinish, loginInteractive, loginStart } from './auth.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
3
|
+
import { createEntry, deleteEntry, getEntry, 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
|
-
|
|
72
|
+
break;
|
|
18
73
|
}
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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');
|
|
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;
|
|
125
|
+
}
|
|
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 'get': {
|
|
136
|
+
const index = argv[1];
|
|
137
|
+
if (!index) {
|
|
138
|
+
process.stderr.write('Usage: workjournal journals <id> entries get <index>\n');
|
|
139
|
+
process.exit(1);
|
|
140
|
+
}
|
|
141
|
+
await getEntry(journalId, index, jsonOutput);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
case 'delete': {
|
|
145
|
+
const index = argv[1];
|
|
146
|
+
if (!index) {
|
|
147
|
+
process.stderr.write('Usage: workjournal journals <id> entries delete <index>\n');
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
await deleteEntry(journalId, index, jsonOutput);
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case 'search': {
|
|
154
|
+
const query = argv[1];
|
|
155
|
+
if (!query) {
|
|
156
|
+
process.stderr.write('Usage: workjournal journals <id> entries search <query>\n');
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
await searchEntries(journalId, query, jsonOutput);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
default:
|
|
163
|
+
process.stderr.write(`Unknown entries subcommand: ${sub}\n`);
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async function routeShares(journalId, argv) {
|
|
168
|
+
const sub = argv[0];
|
|
169
|
+
switch (sub) {
|
|
170
|
+
case undefined:
|
|
171
|
+
case 'list':
|
|
172
|
+
await listShares(journalId, jsonOutput);
|
|
173
|
+
break;
|
|
174
|
+
case 'delete': {
|
|
175
|
+
const email = argv[1];
|
|
176
|
+
if (!email) {
|
|
177
|
+
process.stderr.write('Usage: workjournal journals <id> shares delete <email>\n');
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
await deleteShare(journalId, email, jsonOutput);
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
default:
|
|
184
|
+
process.stderr.write(`Unknown shares subcommand: ${sub}\n`);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async function routeInvites(journalId, argv) {
|
|
189
|
+
const sub = argv[0];
|
|
190
|
+
switch (sub) {
|
|
191
|
+
case undefined:
|
|
192
|
+
case 'list':
|
|
193
|
+
await listInvites(journalId, jsonOutput);
|
|
194
|
+
break;
|
|
195
|
+
case 'new': {
|
|
196
|
+
const email = argv[1];
|
|
197
|
+
if (!email) {
|
|
198
|
+
process.stderr.write('Usage: workjournal journals <id> invites new <email>\n');
|
|
199
|
+
process.exit(1);
|
|
200
|
+
}
|
|
201
|
+
await newInvite(journalId, email, jsonOutput);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'delete': {
|
|
205
|
+
const invitationId = argv[1];
|
|
206
|
+
if (!invitationId) {
|
|
207
|
+
process.stderr.write('Usage: workjournal journals <id> invites delete <invitation_id>\n');
|
|
208
|
+
process.exit(1);
|
|
209
|
+
}
|
|
210
|
+
await deleteInvite(journalId, invitationId, jsonOutput);
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
default:
|
|
214
|
+
process.stderr.write(`Unknown invites subcommand: ${sub}\n`);
|
|
25
215
|
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
async function routeJournalResource(journalId, argv) {
|
|
219
|
+
const sub = argv[0];
|
|
220
|
+
switch (sub) {
|
|
221
|
+
case undefined:
|
|
222
|
+
await getJournal(journalId, jsonOutput);
|
|
223
|
+
break;
|
|
224
|
+
case 'entries':
|
|
225
|
+
await routeEntries(journalId, argv.slice(1));
|
|
226
|
+
break;
|
|
227
|
+
case 'shares':
|
|
228
|
+
await routeShares(journalId, argv.slice(1));
|
|
229
|
+
break;
|
|
230
|
+
case 'invites':
|
|
231
|
+
await routeInvites(journalId, argv.slice(1));
|
|
232
|
+
break;
|
|
233
|
+
case 'export': {
|
|
234
|
+
const { flags } = parseFlags(argv.slice(1));
|
|
235
|
+
const format = flags['-f'] ?? flags['--format'] ?? 'json';
|
|
236
|
+
if (!['json', 'md', 'csv'].includes(format)) {
|
|
237
|
+
process.stderr.write('Invalid format. Use: -f json|md|csv\n');
|
|
238
|
+
process.exit(1);
|
|
239
|
+
}
|
|
240
|
+
const outputPath = flags['-p'] ?? flags['--path'];
|
|
241
|
+
await exportJournal(journalId, format, outputPath);
|
|
242
|
+
break;
|
|
26
243
|
}
|
|
27
|
-
|
|
244
|
+
default:
|
|
245
|
+
process.stderr.write(`Unknown subcommand: ${sub}\n`);
|
|
246
|
+
process.exit(1);
|
|
28
247
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
248
|
+
}
|
|
249
|
+
async function routeJournals(argv) {
|
|
250
|
+
const sub = argv[0];
|
|
251
|
+
if (sub === undefined) {
|
|
252
|
+
// Shortcut: workjournal journals → show selected journal details
|
|
253
|
+
const journalId = resolveJournalId();
|
|
254
|
+
await getJournal(journalId, jsonOutput);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
if (sub === 'list') {
|
|
258
|
+
await listJournals(jsonOutput);
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (sub === 'new') {
|
|
262
|
+
const name = argv[1];
|
|
263
|
+
if (!name) {
|
|
264
|
+
process.stderr.write('Usage: workjournal journals new <name>\n');
|
|
265
|
+
process.exit(1);
|
|
266
|
+
}
|
|
267
|
+
await createJournal(name, jsonOutput);
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
if (sub === 'delete') {
|
|
271
|
+
const id = argv[1];
|
|
272
|
+
if (!id) {
|
|
273
|
+
process.stderr.write('Usage: workjournal journals delete <journal_id>\n');
|
|
38
274
|
process.exit(1);
|
|
39
275
|
}
|
|
40
|
-
|
|
41
|
-
|
|
276
|
+
await deleteJournal(id, jsonOutput);
|
|
277
|
+
return;
|
|
42
278
|
}
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
46
|
-
process.
|
|
47
|
-
process.
|
|
279
|
+
if (sub === 'select') {
|
|
280
|
+
const id = argv[1];
|
|
281
|
+
if (!id) {
|
|
282
|
+
process.stderr.write('Usage: workjournal journals select <journal_id>\n');
|
|
283
|
+
process.exit(1);
|
|
284
|
+
}
|
|
285
|
+
await selectJournal(id);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
// Not a known subcommand — treat as a journal ID
|
|
289
|
+
const journalId = sub;
|
|
290
|
+
await routeJournalResource(journalId, argv.slice(1));
|
|
291
|
+
}
|
|
292
|
+
async function routeConfig(argv) {
|
|
293
|
+
const sub = argv[0];
|
|
294
|
+
if (sub === 'show') {
|
|
295
|
+
const projectPath = getProjectConfigPath();
|
|
296
|
+
const projectCfg = findProjectConfig();
|
|
297
|
+
const globalCfg = readConfig();
|
|
298
|
+
process.stdout.write('Project config:\n');
|
|
299
|
+
if (projectPath && projectCfg) {
|
|
300
|
+
process.stdout.write(` Path: ${projectPath}\n`);
|
|
301
|
+
process.stdout.write(` journal_id: ${projectCfg.journal_id}\n`);
|
|
48
302
|
}
|
|
49
303
|
else {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
304
|
+
process.stdout.write(' (none)\n');
|
|
305
|
+
}
|
|
306
|
+
process.stdout.write('Global config:\n');
|
|
307
|
+
if (globalCfg.journal) {
|
|
308
|
+
process.stdout.write(` journal: ${globalCfg.journal}\n`);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
process.stdout.write(' (none)\n');
|
|
54
312
|
}
|
|
55
|
-
break;
|
|
56
313
|
}
|
|
57
|
-
|
|
58
|
-
process.
|
|
314
|
+
else {
|
|
315
|
+
process.stderr.write('Usage: workjournal config show\n');
|
|
316
|
+
process.exit(1);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// ── Help ────────────────────────────────────────────────────────────────────
|
|
320
|
+
function printHelp() {
|
|
321
|
+
process.stdout.write(`workjournal — CLI for Workjournal (https://workjournal.pro)
|
|
59
322
|
|
|
60
323
|
Usage:
|
|
61
|
-
workjournal
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
workjournal
|
|
65
|
-
workjournal
|
|
66
|
-
workjournal
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
324
|
+
workjournal List entries in selected journal
|
|
325
|
+
|
|
326
|
+
Selected journal (workjournal journal ...):
|
|
327
|
+
workjournal journal Show selected journal details
|
|
328
|
+
workjournal journal entries List entries
|
|
329
|
+
workjournal journal entries write -s <summary> -b <body>
|
|
330
|
+
Create a new entry
|
|
331
|
+
workjournal journal entries last [count] Show most recent entries (full body)
|
|
332
|
+
workjournal journal entries get <index> Show a single entry by index
|
|
333
|
+
workjournal journal entries delete <index> Delete an entry by index
|
|
334
|
+
workjournal journal entries search <query> Search entries
|
|
335
|
+
workjournal journal shares List members
|
|
336
|
+
workjournal journal shares delete <email> Remove a member
|
|
337
|
+
workjournal journal invites List invitations
|
|
338
|
+
workjournal journal invites new <email> Invite a collaborator
|
|
339
|
+
workjournal journal invites delete <id> Revoke an invitation
|
|
340
|
+
workjournal journal export [-f json|md|csv] [-p <path>]
|
|
341
|
+
Export journal data
|
|
342
|
+
|
|
343
|
+
Manage journals (workjournal journals ...):
|
|
344
|
+
workjournal journals list List your journals
|
|
345
|
+
workjournal journals new <name> Create a new journal
|
|
346
|
+
workjournal journals delete <id> Delete a journal
|
|
347
|
+
workjournal journals select <id> Set active journal
|
|
348
|
+
workjournal journals <id> Show journal details
|
|
349
|
+
workjournal journals <id> entries|shares|invites|export
|
|
350
|
+
Access resources by journal ID
|
|
351
|
+
|
|
352
|
+
Auth:
|
|
353
|
+
workjournal auth login Interactive login
|
|
354
|
+
workjournal auth login start Print authorize URL (headless)
|
|
355
|
+
workjournal auth login finish <CODE> Exchange code for credentials
|
|
356
|
+
workjournal auth logout Remove stored credentials
|
|
357
|
+
workjournal auth whoami Show current auth status
|
|
358
|
+
workjournal auth status Show detailed auth status
|
|
359
|
+
|
|
360
|
+
Config:
|
|
361
|
+
workjournal config show Show resolved config
|
|
362
|
+
|
|
363
|
+
Flags:
|
|
364
|
+
--json Output raw JSON instead of tables
|
|
365
|
+
`);
|
|
366
|
+
}
|
|
367
|
+
// ── Main ────────────────────────────────────────────────────────────────────
|
|
368
|
+
async function run() {
|
|
369
|
+
try {
|
|
370
|
+
const command = args[0];
|
|
371
|
+
if (command === 'help' || command === '--help') {
|
|
372
|
+
printHelp();
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
if (command === undefined) {
|
|
376
|
+
// Shortcut: workjournal → list entries in selected journal
|
|
377
|
+
const journalId = resolveJournalId();
|
|
378
|
+
await listEntries(journalId, jsonOutput);
|
|
379
|
+
return;
|
|
380
|
+
}
|
|
381
|
+
switch (command) {
|
|
382
|
+
case 'auth':
|
|
383
|
+
await routeAuth(args.slice(1));
|
|
384
|
+
break;
|
|
385
|
+
case 'journal': {
|
|
386
|
+
const journalId = resolveJournalId();
|
|
387
|
+
await routeJournalResource(journalId, args.slice(1));
|
|
388
|
+
break;
|
|
389
|
+
}
|
|
390
|
+
case 'journals':
|
|
391
|
+
await routeJournals(args.slice(1));
|
|
392
|
+
break;
|
|
393
|
+
case 'config':
|
|
394
|
+
await routeConfig(args.slice(1));
|
|
395
|
+
break;
|
|
396
|
+
default:
|
|
397
|
+
printHelp();
|
|
398
|
+
process.stderr.write(`\nUnknown command: ${command}\n`);
|
|
399
|
+
process.exit(1);
|
|
70
400
|
}
|
|
401
|
+
}
|
|
402
|
+
catch (err) {
|
|
403
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
404
|
+
if (message.includes('fetch') ||
|
|
405
|
+
message.includes('ECONNREFUSED') ||
|
|
406
|
+
message.includes('ENOTFOUND')) {
|
|
407
|
+
process.stderr.write(`Network error: ${message}. Check your connection.\n`);
|
|
408
|
+
}
|
|
409
|
+
else {
|
|
410
|
+
process.stderr.write(`Error: ${message}\n`);
|
|
411
|
+
}
|
|
412
|
+
process.exit(1);
|
|
413
|
+
}
|
|
71
414
|
}
|
|
415
|
+
await run();
|
|
72
416
|
//# 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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { existsSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
const PROJECT_CONFIG_FILENAME = '.workjournal';
|
|
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 function findProjectConfig(startDir) {
|
|
9
|
+
const configPath = getProjectConfigPath(startDir);
|
|
10
|
+
if (!configPath)
|
|
11
|
+
return null;
|
|
12
|
+
try {
|
|
13
|
+
const raw = readFileSync(configPath, 'utf-8');
|
|
14
|
+
const parsed = JSON.parse(raw);
|
|
15
|
+
if (parsed && typeof parsed === 'object' && typeof parsed.journal_id === 'string') {
|
|
16
|
+
const journalId = parsed.journal_id.trim();
|
|
17
|
+
if (journalId.length > 0)
|
|
18
|
+
return { journal_id: journalId };
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Return the path to the `.workjournal` file found by walking upward from `startDir`,
|
|
28
|
+
* or `null` if none exists.
|
|
29
|
+
*/
|
|
30
|
+
export function getProjectConfigPath(startDir) {
|
|
31
|
+
let dir = startDir ?? process.cwd();
|
|
32
|
+
for (;;) {
|
|
33
|
+
const candidate = join(dir, PROJECT_CONFIG_FILENAME);
|
|
34
|
+
if (existsSync(candidate)) {
|
|
35
|
+
return candidate;
|
|
36
|
+
}
|
|
37
|
+
const parent = dirname(dir);
|
|
38
|
+
if (parent === dir) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
dir = parent;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Write a `.workjournal` config file to the given directory using atomic tmp+rename.
|
|
46
|
+
*/
|
|
47
|
+
export function writeProjectConfig(dir, journalId) {
|
|
48
|
+
const configPath = join(dir, PROJECT_CONFIG_FILENAME);
|
|
49
|
+
const tmpPath = `${configPath}.tmp`;
|
|
50
|
+
writeFileSync(tmpPath, `${JSON.stringify({ journal_id: journalId }, null, '\t')}\n`, {
|
|
51
|
+
mode: 0o600,
|
|
52
|
+
});
|
|
53
|
+
renameSync(tmpPath, configPath);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=project-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,uBAAuB,GAAG,cAAc,CAAC;AAM/C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IAClD,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA2B,CAAC;QACzD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnF,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC3C,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QAC5D,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACrD,IAAI,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,SAAS,CAAC;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACb,CAAC;QACD,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,SAAiB;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,GAAG,UAAU,MAAM,CAAC;IACpC,aAAa,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACpF,IAAI,EAAE,KAAK;KACX,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACjC,CAAC"}
|
package/dist/wsl.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsl.d.ts","sourceRoot":"","sources":["../src/wsl.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhF"}
|
package/dist/wsl.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { createInterface } from 'node:readline/promises';
|
|
2
|
+
import { CONFIG_DIR } from './credentials.js';
|
|
3
|
+
export function isWindowsNodeOnWsl() {
|
|
4
|
+
return process.platform === 'win32' && !!process.env['WSL_DISTRO_NAME'];
|
|
5
|
+
}
|
|
6
|
+
export async function warnIfWsl(options) {
|
|
7
|
+
if (!isWindowsNodeOnWsl())
|
|
8
|
+
return;
|
|
9
|
+
if (process.env['WORKJOURNAL_CONFIG_DIR'])
|
|
10
|
+
return;
|
|
11
|
+
const distro = process.env['WSL_DISTRO_NAME'];
|
|
12
|
+
process.stderr.write(`\nWarning: Node.js is running as a Windows binary inside WSL (distro: ${distro}).\n` +
|
|
13
|
+
`Credentials will be saved to: ${CONFIG_DIR}/credentials.json\n` +
|
|
14
|
+
`This path is on the Windows filesystem and may not be accessible from Linux tools in WSL.\n\n` +
|
|
15
|
+
`Recommended fix: install Node.js natively inside WSL:\n` +
|
|
16
|
+
` curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash\n` +
|
|
17
|
+
` nvm install 22\n\n` +
|
|
18
|
+
`To override the credential location, set WORKJOURNAL_CONFIG_DIR.\n\n`);
|
|
19
|
+
if (options.interactive && process.stdin.isTTY) {
|
|
20
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
21
|
+
try {
|
|
22
|
+
const answer = await rl.question('Continue? [y/N] ');
|
|
23
|
+
if (answer.trim().toLowerCase() !== 'y') {
|
|
24
|
+
process.stderr.write('Aborted.\n');
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
rl.close();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=wsl.js.map
|
package/dist/wsl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wsl.js","sourceRoot":"","sources":["../src/wsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,UAAU,kBAAkB;IACjC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAiC;IAChE,IAAI,CAAC,kBAAkB,EAAE;QAAE,OAAO;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAAE,OAAO;IAElD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,yEAAyE,MAAM,MAAM;QACpF,iCAAiC,UAAU,qBAAqB;QAChE,+FAA+F;QAC/F,yDAAyD;QACzD,qFAAqF;QACrF,sBAAsB;QACtB,sEAAsE,CACvE,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;YACrD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,KAAK,EAAE,CAAC;QACZ,CAAC;IACF,CAAC;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workjournal/cli",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Command-line tool for authenticating with Workjournal — the journaling service for AI agents and developers.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -37,7 +37,9 @@
|
|
|
37
37
|
"ai-agents",
|
|
38
38
|
"journaling"
|
|
39
39
|
],
|
|
40
|
-
"dependencies": {
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@workjournal/shared": "0.1.0"
|
|
42
|
+
},
|
|
41
43
|
"devDependencies": {
|
|
42
44
|
"@types/node": "22.15.29",
|
|
43
45
|
"typescript": "5.8.3",
|