@urateam/cli 0.1.39 → 0.1.41

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 (61) hide show
  1. package/dist/__tests__/init.test.d.ts +2 -0
  2. package/dist/__tests__/init.test.d.ts.map +1 -0
  3. package/dist/__tests__/init.test.js +65 -0
  4. package/dist/__tests__/init.test.js.map +1 -0
  5. package/dist/__tests__/repo.test.d.ts +2 -0
  6. package/dist/__tests__/repo.test.d.ts.map +1 -0
  7. package/dist/__tests__/repo.test.js +191 -0
  8. package/dist/__tests__/repo.test.js.map +1 -0
  9. package/dist/__tests__/service-unit.test.d.ts +2 -0
  10. package/dist/__tests__/service-unit.test.d.ts.map +1 -0
  11. package/dist/__tests__/service-unit.test.js +65 -0
  12. package/dist/__tests__/service-unit.test.js.map +1 -0
  13. package/dist/__tests__/service.test.d.ts +2 -0
  14. package/dist/__tests__/service.test.d.ts.map +1 -0
  15. package/dist/__tests__/service.test.js +193 -0
  16. package/dist/__tests__/service.test.js.map +1 -0
  17. package/dist/__tests__/start-user-level-fallback.test.d.ts +2 -0
  18. package/dist/__tests__/start-user-level-fallback.test.d.ts.map +1 -0
  19. package/dist/__tests__/start-user-level-fallback.test.js +191 -0
  20. package/dist/__tests__/start-user-level-fallback.test.js.map +1 -0
  21. package/dist/__tests__/uninstall.test.d.ts +2 -0
  22. package/dist/__tests__/uninstall.test.d.ts.map +1 -0
  23. package/dist/__tests__/uninstall.test.js +51 -0
  24. package/dist/__tests__/uninstall.test.js.map +1 -0
  25. package/dist/__tests__/user-level-config.test.d.ts +2 -0
  26. package/dist/__tests__/user-level-config.test.d.ts.map +1 -0
  27. package/dist/__tests__/user-level-config.test.js +92 -0
  28. package/dist/__tests__/user-level-config.test.js.map +1 -0
  29. package/dist/commands/init.d.ts +11 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +27 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/commands/repo.d.ts +7 -0
  34. package/dist/commands/repo.d.ts.map +1 -0
  35. package/dist/commands/repo.js +126 -0
  36. package/dist/commands/repo.js.map +1 -0
  37. package/dist/commands/service.d.ts +13 -0
  38. package/dist/commands/service.d.ts.map +1 -0
  39. package/dist/commands/service.js +164 -0
  40. package/dist/commands/service.js.map +1 -0
  41. package/dist/commands/start.d.ts.map +1 -1
  42. package/dist/commands/start.js +25 -0
  43. package/dist/commands/start.js.map +1 -1
  44. package/dist/commands/uninstall.d.ts +17 -0
  45. package/dist/commands/uninstall.d.ts.map +1 -0
  46. package/dist/commands/uninstall.js +38 -0
  47. package/dist/commands/uninstall.js.map +1 -0
  48. package/dist/index.js +8 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/build-repo-configs.d.ts.map +1 -1
  51. package/dist/lib/build-repo-configs.js +85 -27
  52. package/dist/lib/build-repo-configs.js.map +1 -1
  53. package/dist/lib/service-unit.d.ts +25 -0
  54. package/dist/lib/service-unit.d.ts.map +1 -0
  55. package/dist/lib/service-unit.js +67 -0
  56. package/dist/lib/service-unit.js.map +1 -0
  57. package/dist/lib/user-level-config.d.ts +70 -0
  58. package/dist/lib/user-level-config.d.ts.map +1 -0
  59. package/dist/lib/user-level-config.js +91 -0
  60. package/dist/lib/user-level-config.js.map +1 -0
  61. package/package.json +4 -3
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Pure unit-file generators for `ura service install`.
3
+ *
4
+ * Both generators are I/O-free string functions so they can be unit-tested
5
+ * without touching the filesystem and so `--dry-run` can print the would-be
6
+ * unit content without mutating anything. The shape mirrors what
7
+ * `deploy/USER_LEVEL_INSTALL.md` previously documented as copy-paste blocks.
8
+ */
9
+ const LAUNCHD_LABEL = "com.urateam.daemon";
10
+ export function renderLaunchdPlist(opts) {
11
+ return [
12
+ `<?xml version="1.0" encoding="UTF-8"?>`,
13
+ `<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">`,
14
+ `<plist version="1.0">`,
15
+ `<dict>`,
16
+ ` <key>Label</key>`,
17
+ ` <string>${LAUNCHD_LABEL}</string>`,
18
+ ` <key>ProgramArguments</key>`,
19
+ ` <array>`,
20
+ ` <string>${opts.binaryPath}</string>`,
21
+ ` <string>start</string>`,
22
+ ` </array>`,
23
+ ` <key>WorkingDirectory</key>`,
24
+ ` <string>${opts.urateamHome}</string>`,
25
+ ` <key>EnvironmentVariables</key>`,
26
+ ` <dict>`,
27
+ ` <key>URATEAM_HOME</key>`,
28
+ ` <string>${opts.urateamHome}</string>`,
29
+ ` </dict>`,
30
+ ` <key>RunAtLoad</key>`,
31
+ ` <true/>`,
32
+ ` <key>KeepAlive</key>`,
33
+ ` <true/>`,
34
+ ` <key>StandardOutPath</key>`,
35
+ ` <string>${opts.stdoutPath}</string>`,
36
+ ` <key>StandardErrorPath</key>`,
37
+ ` <string>${opts.stderrPath}</string>`,
38
+ `</dict>`,
39
+ `</plist>`,
40
+ ``,
41
+ ].join("\n");
42
+ }
43
+ export function renderSystemdUserUnit(opts) {
44
+ return [
45
+ `[Unit]`,
46
+ `Description=urateam user-level daemon`,
47
+ `After=network.target`,
48
+ ``,
49
+ `[Service]`,
50
+ `Type=simple`,
51
+ `WorkingDirectory=${opts.urateamHome}`,
52
+ `EnvironmentFile=${opts.envFilePath}`,
53
+ `Environment=URATEAM_HOME=${opts.urateamHome}`,
54
+ `ExecStart=${opts.binaryPath} start`,
55
+ `StandardOutput=append:${opts.stdoutPath}`,
56
+ `StandardError=append:${opts.stderrPath}`,
57
+ `Restart=always`,
58
+ `RestartSec=5`,
59
+ ``,
60
+ `[Install]`,
61
+ `WantedBy=default.target`,
62
+ ``,
63
+ ].join("\n");
64
+ }
65
+ export const SERVICE_LABEL = LAUNCHD_LABEL;
66
+ export const SYSTEMD_UNIT_BASENAME = "urateam.service";
67
+ //# sourceMappingURL=service-unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-unit.js","sourceRoot":"","sources":["../../src/lib/service-unit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,MAAM,UAAU,kBAAkB,CAAC,IAAsB;IACvD,OAAO;QACL,wCAAwC;QACxC,wGAAwG;QACxG,uBAAuB;QACvB,QAAQ;QACR,oBAAoB;QACpB,aAAa,aAAa,WAAW;QACrC,+BAA+B;QAC/B,WAAW;QACX,eAAe,IAAI,CAAC,UAAU,WAAW;QACzC,4BAA4B;QAC5B,YAAY;QACZ,+BAA+B;QAC/B,aAAa,IAAI,CAAC,WAAW,WAAW;QACxC,mCAAmC;QACnC,UAAU;QACV,6BAA6B;QAC7B,eAAe,IAAI,CAAC,WAAW,WAAW;QAC1C,WAAW;QACX,wBAAwB;QACxB,WAAW;QACX,wBAAwB;QACxB,WAAW;QACX,8BAA8B;QAC9B,aAAa,IAAI,CAAC,UAAU,WAAW;QACvC,gCAAgC;QAChC,aAAa,IAAI,CAAC,UAAU,WAAW;QACvC,SAAS;QACT,UAAU;QACV,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAsB;IAC1D,OAAO;QACL,QAAQ;QACR,uCAAuC;QACvC,sBAAsB;QACtB,EAAE;QACF,WAAW;QACX,aAAa;QACb,oBAAoB,IAAI,CAAC,WAAW,EAAE;QACtC,mBAAmB,IAAI,CAAC,WAAW,EAAE;QACrC,4BAA4B,IAAI,CAAC,WAAW,EAAE;QAC9C,aAAa,IAAI,CAAC,UAAU,QAAQ;QACpC,yBAAyB,IAAI,CAAC,UAAU,EAAE;QAC1C,wBAAwB,IAAI,CAAC,UAAU,EAAE;QACzC,gBAAgB;QAChB,cAAc;QACd,EAAE;QACF,WAAW;QACX,yBAAyB;QACzB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * User-level install — config schema, on-disk locations, read/write helpers.
3
+ *
4
+ * The user-level path stores everything under `~/.urateam/` (or
5
+ * `$URATEAM_HOME` when set). Layout:
6
+ *
7
+ * ~/.urateam/
8
+ * ├── config.json # this module's schema
9
+ * ├── .env # secrets (ANTHROPIC_API_KEY, etc.)
10
+ * ├── data/ # SQLite DB lives here
11
+ * └── repos/ # cloned repos managed by `ura repo add`
12
+ *
13
+ * The schema intentionally mirrors the existing `RepoConfig` shape (`url`,
14
+ * `defaultBranch`, `testCommand`, `buildCommand`, optional `labelPattern`)
15
+ * plus a `path` field that records WHERE the clone lives — that's the
16
+ * field the daemon needs to actually find the worktree.
17
+ *
18
+ * `URATEAM_HOME` env-var override exists for two reasons:
19
+ * 1. Tests (hermetic temp dir per test)
20
+ * 2. Operators who want to run multiple isolated user-level installs on
21
+ * one machine (e.g., one per Linear workspace) without touching
22
+ * `~/.urateam/`.
23
+ */
24
+ import { z } from "zod";
25
+ export declare const UserLevelRepoSchema: z.ZodObject<{
26
+ url: z.ZodString;
27
+ path: z.ZodString;
28
+ defaultBranch: z.ZodString;
29
+ testCommand: z.ZodDefault<z.ZodString>;
30
+ buildCommand: z.ZodDefault<z.ZodString>;
31
+ teamId: z.ZodOptional<z.ZodString>;
32
+ labelPattern: z.ZodOptional<z.ZodString>;
33
+ }, z.core.$strip>;
34
+ export type UserLevelRepo = z.infer<typeof UserLevelRepoSchema>;
35
+ export declare const UserLevelConfigSchema: z.ZodObject<{
36
+ version: z.ZodLiteral<1>;
37
+ repos: z.ZodDefault<z.ZodArray<z.ZodObject<{
38
+ url: z.ZodString;
39
+ path: z.ZodString;
40
+ defaultBranch: z.ZodString;
41
+ testCommand: z.ZodDefault<z.ZodString>;
42
+ buildCommand: z.ZodDefault<z.ZodString>;
43
+ teamId: z.ZodOptional<z.ZodString>;
44
+ labelPattern: z.ZodOptional<z.ZodString>;
45
+ }, z.core.$strip>>>;
46
+ }, z.core.$strip>;
47
+ export type UserLevelConfig = z.infer<typeof UserLevelConfigSchema>;
48
+ /**
49
+ * Resolve the user-level state directory. Returns `$URATEAM_HOME` when set,
50
+ * otherwise `~/.urateam`.
51
+ */
52
+ export declare function resolveUserLevelHome(): string;
53
+ export declare function userLevelConfigPath(): string;
54
+ export declare function userLevelReposDir(): string;
55
+ export declare function userLevelDataDir(): string;
56
+ /**
57
+ * Read and validate the user-level config. Returns `null` when the file
58
+ * doesn't exist (so callers can distinguish "not initialized" from "empty
59
+ * config"). Throws on schema-validation failure — operators should see the
60
+ * Zod error explicitly rather than silently get an unconfigured daemon.
61
+ */
62
+ export declare function readUserLevelConfig(): UserLevelConfig | null;
63
+ /**
64
+ * Write the user-level config, creating `~/.urateam/` if missing.
65
+ * Idempotent: callers are expected to read-modify-write to preserve any
66
+ * fields the writer doesn't know about (the schema is forward-compatible
67
+ * within version 1).
68
+ */
69
+ export declare function writeUserLevelConfig(config: UserLevelConfig): void;
70
+ //# sourceMappingURL=user-level-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-level-config.d.ts","sourceRoot":"","sources":["../../src/lib/user-level-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,mBAAmB;;;;;;;;iBAgB9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;iBAKhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAIlE"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * User-level install — config schema, on-disk locations, read/write helpers.
3
+ *
4
+ * The user-level path stores everything under `~/.urateam/` (or
5
+ * `$URATEAM_HOME` when set). Layout:
6
+ *
7
+ * ~/.urateam/
8
+ * ├── config.json # this module's schema
9
+ * ├── .env # secrets (ANTHROPIC_API_KEY, etc.)
10
+ * ├── data/ # SQLite DB lives here
11
+ * └── repos/ # cloned repos managed by `ura repo add`
12
+ *
13
+ * The schema intentionally mirrors the existing `RepoConfig` shape (`url`,
14
+ * `defaultBranch`, `testCommand`, `buildCommand`, optional `labelPattern`)
15
+ * plus a `path` field that records WHERE the clone lives — that's the
16
+ * field the daemon needs to actually find the worktree.
17
+ *
18
+ * `URATEAM_HOME` env-var override exists for two reasons:
19
+ * 1. Tests (hermetic temp dir per test)
20
+ * 2. Operators who want to run multiple isolated user-level installs on
21
+ * one machine (e.g., one per Linear workspace) without touching
22
+ * `~/.urateam/`.
23
+ */
24
+ import { z } from "zod";
25
+ import { homedir } from "node:os";
26
+ import { join } from "node:path";
27
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
28
+ export const UserLevelRepoSchema = z.object({
29
+ /** Source URL (https / git@ — anything `git clone` accepts). */
30
+ url: z.string().min(1),
31
+ /** Absolute filesystem path where the clone lives. */
32
+ path: z.string().min(1),
33
+ /** Default branch — the daemon uses this for diff/rebase targets. */
34
+ defaultBranch: z.string().min(1),
35
+ /** Test command invoked in the worktree. */
36
+ testCommand: z.string().default("pnpm test"),
37
+ /** Build command invoked in the worktree. */
38
+ buildCommand: z.string().default("pnpm build"),
39
+ /** Linear team ID (optional — required when promote routes by team). */
40
+ teamId: z.string().optional(),
41
+ /** BEC-177: label-based routing. When set, this repo handles tickets
42
+ * whose pipeline label matches the pattern. */
43
+ labelPattern: z.string().optional(),
44
+ });
45
+ export const UserLevelConfigSchema = z.object({
46
+ /** Schema version — bumped if/when the file format changes. */
47
+ version: z.literal(1),
48
+ /** Configured repos. `ura repo add` appends; `ura repo remove` filters. */
49
+ repos: z.array(UserLevelRepoSchema).default([]),
50
+ });
51
+ /**
52
+ * Resolve the user-level state directory. Returns `$URATEAM_HOME` when set,
53
+ * otherwise `~/.urateam`.
54
+ */
55
+ export function resolveUserLevelHome() {
56
+ return process.env.URATEAM_HOME ?? join(homedir(), ".urateam");
57
+ }
58
+ export function userLevelConfigPath() {
59
+ return join(resolveUserLevelHome(), "config.json");
60
+ }
61
+ export function userLevelReposDir() {
62
+ return join(resolveUserLevelHome(), "repos");
63
+ }
64
+ export function userLevelDataDir() {
65
+ return join(resolveUserLevelHome(), "data");
66
+ }
67
+ /**
68
+ * Read and validate the user-level config. Returns `null` when the file
69
+ * doesn't exist (so callers can distinguish "not initialized" from "empty
70
+ * config"). Throws on schema-validation failure — operators should see the
71
+ * Zod error explicitly rather than silently get an unconfigured daemon.
72
+ */
73
+ export function readUserLevelConfig() {
74
+ const path = userLevelConfigPath();
75
+ if (!existsSync(path))
76
+ return null;
77
+ const raw = JSON.parse(readFileSync(path, "utf8"));
78
+ return UserLevelConfigSchema.parse(raw);
79
+ }
80
+ /**
81
+ * Write the user-level config, creating `~/.urateam/` if missing.
82
+ * Idempotent: callers are expected to read-modify-write to preserve any
83
+ * fields the writer doesn't know about (the schema is forward-compatible
84
+ * within version 1).
85
+ */
86
+ export function writeUserLevelConfig(config) {
87
+ const home = resolveUserLevelHome();
88
+ mkdirSync(home, { recursive: true });
89
+ writeFileSync(userLevelConfigPath(), JSON.stringify(config, null, 2) + "\n");
90
+ }
91
+ //# sourceMappingURL=user-level-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-level-config.js","sourceRoot":"","sources":["../../src/lib/user-level-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,gEAAgE;IAChE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,sDAAsD;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,qEAAqE;IACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,4CAA4C;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5C,6CAA6C;IAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,wEAAwE;IACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B;oDACgD;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,+DAA+D;IAC/D,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,2EAA2E;IAC3E,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAGH;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACnD,OAAO,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,aAAa,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urateam/cli",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "license": "BUSL-1.1",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -22,8 +22,9 @@
22
22
  "better-sqlite3": "^11.8.0",
23
23
  "commander": "^13.1.0",
24
24
  "postgres": "^3.4.0",
25
- "@urateam/core": "0.1.37",
26
- "@urateam/dashboard": "0.1.37"
25
+ "zod": "^4.3.6",
26
+ "@urateam/core": "0.1.39",
27
+ "@urateam/dashboard": "0.1.39"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/better-sqlite3": "^7.6.0",