@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
@@ -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,5 @@
1
+ export declare function isWindowsNodeOnWsl(): boolean;
2
+ export declare function warnIfWsl(options: {
3
+ interactive: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=wsl.d.ts.map
@@ -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
@@ -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.0",
3
+ "version": "0.2.0",
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",