@framedash/cli 0.1.1 → 0.1.2

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 (47) hide show
  1. package/README.md +23 -0
  2. package/dist/commands/builds.d.ts +2 -0
  3. package/dist/commands/builds.d.ts.map +1 -0
  4. package/dist/commands/builds.js +31 -0
  5. package/dist/commands/builds.js.map +1 -0
  6. package/dist/commands/content.d.ts.map +1 -1
  7. package/dist/commands/content.js +2 -2
  8. package/dist/commands/content.js.map +1 -1
  9. package/dist/commands/dashboard.d.ts.map +1 -1
  10. package/dist/commands/dashboard.js +3 -3
  11. package/dist/commands/dashboard.js.map +1 -1
  12. package/dist/commands/funnel.d.ts.map +1 -1
  13. package/dist/commands/funnel.js +7 -8
  14. package/dist/commands/funnel.js.map +1 -1
  15. package/dist/commands/map-capture.d.ts.map +1 -1
  16. package/dist/commands/map-capture.js +5 -4
  17. package/dist/commands/map-capture.js.map +1 -1
  18. package/dist/commands/perf-diff.d.ts +2 -0
  19. package/dist/commands/perf-diff.d.ts.map +1 -0
  20. package/dist/commands/perf-diff.js +125 -0
  21. package/dist/commands/perf-diff.js.map +1 -0
  22. package/dist/commands/retention.d.ts.map +1 -1
  23. package/dist/commands/retention.js +3 -3
  24. package/dist/commands/retention.js.map +1 -1
  25. package/dist/commands/run-profile-test.d.ts +7 -0
  26. package/dist/commands/run-profile-test.d.ts.map +1 -0
  27. package/dist/commands/run-profile-test.js +386 -0
  28. package/dist/commands/run-profile-test.js.map +1 -0
  29. package/dist/index.js +6 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/lib/create-client.d.ts +9 -1
  32. package/dist/lib/create-client.d.ts.map +1 -1
  33. package/dist/lib/create-client.js +17 -1
  34. package/dist/lib/create-client.js.map +1 -1
  35. package/dist/lib/logger.d.ts +2 -0
  36. package/dist/lib/logger.d.ts.map +1 -1
  37. package/dist/lib/logger.js +4 -0
  38. package/dist/lib/logger.js.map +1 -1
  39. package/dist/lib/perf-diff-eval.d.ts +58 -0
  40. package/dist/lib/perf-diff-eval.d.ts.map +1 -0
  41. package/dist/lib/perf-diff-eval.js +49 -0
  42. package/dist/lib/perf-diff-eval.js.map +1 -0
  43. package/dist/lib/run-profile-test-lib.d.ts +117 -0
  44. package/dist/lib/run-profile-test-lib.d.ts.map +1 -0
  45. package/dist/lib/run-profile-test-lib.js +124 -0
  46. package/dist/lib/run-profile-test-lib.js.map +1 -0
  47. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perf-diff-eval.js","sourceRoot":"","sources":["../../src/lib/perf-diff-eval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAgC,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEpG,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC/C,OAAQ,kBAAwC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAuCD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CACjC,UAA8B,EAC9B,UAA2B,EAAE;IAE7B,8EAA8E;IAC9E,6EAA6E;IAC7E,8EAA8E;IAC9E,8EAA8E;IAC9E,WAAW;IACX,MAAM,SAAS,GACd,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,IAAK,OAAO,CAAC,YAAuB,IAAI,CAAC;QAC7E,CAAC,CAAE,OAAO,CAAC,YAAuB;QAClC,CAAC,CAAC,CAAC,CAAC;IACN,+EAA+E;IAC/E,8EAA8E;IAC9E,6EAA6E;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CACxF,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,OAAkB,GAAG,SAAS,CAAC,CAAC;IAC7E,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,CAAgB;IAChD,8EAA8E;IAC9E,sDAAsD;IACtD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC,CAAC,MAAM,sBAAsB,CAAC;IAC5E,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,OAAO,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,QAAQ,CACjG,CAAC,CAAC,YAAY,CACd,GAAG,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAgC;IACjD,uEAAuE;IACvE,oDAAoD;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Pure helpers for `framedash run-profile-test`, kept free of process/network
3
+ * I/O so the env-contract and ingest-wait logic is unit-testable. The command
4
+ * (commands/run-profile-test.ts) layers git resolution, the child-process
5
+ * spawn, and the perf-diff gate around these.
6
+ */
7
+ /**
8
+ * The FRAMEDASH_* environment contract the SDK's
9
+ * BeginAutomatedSessionFromEnvironment() reads to stamp the automated session.
10
+ * The build id becomes the first-class `build_id`; branch/commit/scenario ride
11
+ * the attributes map as ci.branch / ci.commit / ci.scenario.
12
+ */
13
+ export declare const ENV_BUILD_ID = "FRAMEDASH_BUILD_ID";
14
+ export declare const ENV_GIT_BRANCH = "FRAMEDASH_GIT_BRANCH";
15
+ export declare const ENV_GIT_COMMIT = "FRAMEDASH_GIT_COMMIT";
16
+ export declare const ENV_TEST_SCENARIO = "FRAMEDASH_TEST_SCENARIO";
17
+ /**
18
+ * The full FRAMEDASH_* session contract. The runner is authoritative for all of
19
+ * these: it clears any it does not set so the launched game can never inherit a
20
+ * stale value (e.g. a FRAMEDASH_GIT_BRANCH left in the CI environment) when the
21
+ * current run omits that field.
22
+ */
23
+ export declare const SESSION_ENV_KEYS: readonly ["FRAMEDASH_BUILD_ID", "FRAMEDASH_GIT_BRANCH", "FRAMEDASH_GIT_COMMIT", "FRAMEDASH_TEST_SCENARIO"];
24
+ /** Resolved build identity stamped onto the profiling run. */
25
+ export interface ProfileIdentity {
26
+ /** Becomes FRAMEDASH_BUILD_ID and the perf-diff candidate; always set. */
27
+ buildId: string;
28
+ /** FRAMEDASH_GIT_BRANCH (ci.branch); omitted from the env when empty. */
29
+ branch?: string;
30
+ /** FRAMEDASH_GIT_COMMIT (ci.commit); omitted when empty. */
31
+ commit?: string;
32
+ /** FRAMEDASH_TEST_SCENARIO (ci.scenario); omitted when empty. */
33
+ scenario?: string;
34
+ }
35
+ /** Raw identity flags as parsed from the command line (any may be unset). */
36
+ export interface IdentityInputs {
37
+ buildId?: string;
38
+ branch?: string;
39
+ commit?: string;
40
+ scenario?: string;
41
+ }
42
+ /** Git fallbacks (best-effort `git rev-parse` outputs; either may be unset). */
43
+ export interface GitFallbacks {
44
+ branch?: string;
45
+ commit?: string;
46
+ }
47
+ /**
48
+ * Resolve the build identity from explicit flags, falling back to git. The
49
+ * build id defaults to the resolved commit, so a CI run that sets only --commit
50
+ * (or relies on the git fallback) still gets a stable, first-class build_id.
51
+ * Returns null when no build id can be determined, so the caller can error out
52
+ * before launching the game.
53
+ */
54
+ export declare function resolveProfileIdentity(flags: IdentityInputs, git: GitFallbacks): ProfileIdentity | null;
55
+ /**
56
+ * The FRAMEDASH_* variables to overlay onto the child process environment. Only
57
+ * non-empty values are included so the SDK's env reader never picks up a blank
58
+ * branch/commit/scenario and stamps an empty ci.* tag.
59
+ */
60
+ export declare function buildSessionEnv(identity: ProfileIdentity): Record<string, string>;
61
+ /** Minimal shape of a builds-list row (mirrors apps/web BuildInfo). */
62
+ export interface BuildListEntry {
63
+ build_id: string;
64
+ /**
65
+ * Perf-event count. ClickHouse `count()` is a UInt64, which the JSON format
66
+ * serializes as a quoted string by default, so this can arrive as a number OR
67
+ * a numeric string -- buildEventCount() normalizes it.
68
+ */
69
+ event_count?: number | string;
70
+ }
71
+ /**
72
+ * The perf-bearing event count currently reported for a build_id, or 0 when the
73
+ * build is absent (or the row has no usable count). Normalizes the value with
74
+ * Number() so a JSON-quoted UInt64 string compares numerically, not
75
+ * lexicographically (otherwise "10" > "9" would be false). Used to snapshot the
76
+ * candidate's count before a run so the wait can require it to grow.
77
+ */
78
+ export declare function buildEventCount(builds: BuildListEntry[] | null | undefined, buildId: string): number;
79
+ /**
80
+ * True once the candidate build_id has produced MORE than `minEventCount`
81
+ * perf-bearing events. With the default 0 this means "present with any events".
82
+ * Passing the build's pre-run count makes the wait require fresh events from
83
+ * THIS run, so a CI re-run for the same build_id is not satisfied by old data.
84
+ */
85
+ export declare function hasIngestedBuild(builds: BuildListEntry[] | null | undefined, buildId: string, minEventCount?: number): boolean;
86
+ /** Injected dependencies for waitForIngest (so the poll loop is unit-testable). */
87
+ export interface WaitForIngestDeps {
88
+ /** Fetch the current builds list (one poll). */
89
+ fetchBuilds: () => Promise<BuildListEntry[]>;
90
+ /** Candidate build_id to wait for. */
91
+ buildId: string;
92
+ /**
93
+ * Require the candidate's event count to exceed this value (its count before
94
+ * the run), so the wait confirms fresh events rather than pre-existing data.
95
+ * Defaults to 0 ("present with any events").
96
+ */
97
+ minEventCount?: number;
98
+ /** Give up after this many milliseconds. */
99
+ timeoutMs: number;
100
+ /** Delay between polls, in milliseconds. */
101
+ intervalMs: number;
102
+ /** Sleep helper (injected so tests can advance a fake clock). */
103
+ sleep: (ms: number) => Promise<void>;
104
+ /** Monotonic clock in milliseconds (injected for the same reason). */
105
+ now: () => number;
106
+ /** Optional per-attempt hook (for progress logging). */
107
+ onPoll?: (attempt: number) => void;
108
+ }
109
+ /**
110
+ * Poll the builds list until the candidate build's perf data has landed, or the
111
+ * timeout elapses. Returns true if the build appeared, false on timeout. Always
112
+ * polls at least once (so timeoutMs=0 still makes a single attempt). A transient
113
+ * fetch error (ingest / ClickHouse lag) is swallowed and retried until the
114
+ * deadline rather than failing the whole run on a blip.
115
+ */
116
+ export declare function waitForIngest(deps: WaitForIngestDeps): Promise<boolean>;
117
+ //# sourceMappingURL=run-profile-test-lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-profile-test-lib.d.ts","sourceRoot":"","sources":["../../src/lib/run-profile-test-lib.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,cAAc,yBAAyB,CAAC;AACrD,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,4GAKnB,CAAC;AAEX,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC/B,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAUD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,cAAc,EACrB,GAAG,EAAE,YAAY,GACf,eAAe,GAAG,IAAI,CAUxB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjF;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,EAAE,MAAM,GACb,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAC3C,OAAO,EAAE,MAAM,EACf,aAAa,SAAI,GACf,OAAO,CAET;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IACjC,gDAAgD;IAChD,WAAW,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC7C,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,sEAAsE;IACtE,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmB7E"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Pure helpers for `framedash run-profile-test`, kept free of process/network
3
+ * I/O so the env-contract and ingest-wait logic is unit-testable. The command
4
+ * (commands/run-profile-test.ts) layers git resolution, the child-process
5
+ * spawn, and the perf-diff gate around these.
6
+ */
7
+ /**
8
+ * The FRAMEDASH_* environment contract the SDK's
9
+ * BeginAutomatedSessionFromEnvironment() reads to stamp the automated session.
10
+ * The build id becomes the first-class `build_id`; branch/commit/scenario ride
11
+ * the attributes map as ci.branch / ci.commit / ci.scenario.
12
+ */
13
+ export const ENV_BUILD_ID = "FRAMEDASH_BUILD_ID";
14
+ export const ENV_GIT_BRANCH = "FRAMEDASH_GIT_BRANCH";
15
+ export const ENV_GIT_COMMIT = "FRAMEDASH_GIT_COMMIT";
16
+ export const ENV_TEST_SCENARIO = "FRAMEDASH_TEST_SCENARIO";
17
+ /**
18
+ * The full FRAMEDASH_* session contract. The runner is authoritative for all of
19
+ * these: it clears any it does not set so the launched game can never inherit a
20
+ * stale value (e.g. a FRAMEDASH_GIT_BRANCH left in the CI environment) when the
21
+ * current run omits that field.
22
+ */
23
+ export const SESSION_ENV_KEYS = [
24
+ ENV_BUILD_ID,
25
+ ENV_GIT_BRANCH,
26
+ ENV_GIT_COMMIT,
27
+ ENV_TEST_SCENARIO,
28
+ ];
29
+ function clean(value) {
30
+ // Guard the type defensively: parseArgs only yields strings for these flags,
31
+ // but a non-string (boolean/null) must not crash .trim().
32
+ if (typeof value !== "string")
33
+ return undefined;
34
+ const trimmed = value.trim();
35
+ return trimmed.length > 0 ? trimmed : undefined;
36
+ }
37
+ /**
38
+ * Resolve the build identity from explicit flags, falling back to git. The
39
+ * build id defaults to the resolved commit, so a CI run that sets only --commit
40
+ * (or relies on the git fallback) still gets a stable, first-class build_id.
41
+ * Returns null when no build id can be determined, so the caller can error out
42
+ * before launching the game.
43
+ */
44
+ export function resolveProfileIdentity(flags, git) {
45
+ const commit = clean(flags.commit) ?? clean(git.commit);
46
+ const buildId = clean(flags.buildId) ?? commit;
47
+ if (!buildId)
48
+ return null;
49
+ return {
50
+ buildId,
51
+ branch: clean(flags.branch) ?? clean(git.branch),
52
+ commit,
53
+ scenario: clean(flags.scenario),
54
+ };
55
+ }
56
+ /**
57
+ * The FRAMEDASH_* variables to overlay onto the child process environment. Only
58
+ * non-empty values are included so the SDK's env reader never picks up a blank
59
+ * branch/commit/scenario and stamps an empty ci.* tag.
60
+ */
61
+ export function buildSessionEnv(identity) {
62
+ const env = { [ENV_BUILD_ID]: identity.buildId };
63
+ if (identity.branch)
64
+ env[ENV_GIT_BRANCH] = identity.branch;
65
+ if (identity.commit)
66
+ env[ENV_GIT_COMMIT] = identity.commit;
67
+ if (identity.scenario)
68
+ env[ENV_TEST_SCENARIO] = identity.scenario;
69
+ return env;
70
+ }
71
+ /**
72
+ * The perf-bearing event count currently reported for a build_id, or 0 when the
73
+ * build is absent (or the row has no usable count). Normalizes the value with
74
+ * Number() so a JSON-quoted UInt64 string compares numerically, not
75
+ * lexicographically (otherwise "10" > "9" would be false). Used to snapshot the
76
+ * candidate's count before a run so the wait can require it to grow.
77
+ */
78
+ export function buildEventCount(builds, buildId) {
79
+ if (!Array.isArray(builds))
80
+ return 0;
81
+ const row = builds.find((b) => b.build_id === buildId);
82
+ const count = Number(row?.event_count);
83
+ return Number.isFinite(count) ? count : 0;
84
+ }
85
+ /**
86
+ * True once the candidate build_id has produced MORE than `minEventCount`
87
+ * perf-bearing events. With the default 0 this means "present with any events".
88
+ * Passing the build's pre-run count makes the wait require fresh events from
89
+ * THIS run, so a CI re-run for the same build_id is not satisfied by old data.
90
+ */
91
+ export function hasIngestedBuild(builds, buildId, minEventCount = 0) {
92
+ return buildEventCount(builds, buildId) > minEventCount;
93
+ }
94
+ /**
95
+ * Poll the builds list until the candidate build's perf data has landed, or the
96
+ * timeout elapses. Returns true if the build appeared, false on timeout. Always
97
+ * polls at least once (so timeoutMs=0 still makes a single attempt). A transient
98
+ * fetch error (ingest / ClickHouse lag) is swallowed and retried until the
99
+ * deadline rather than failing the whole run on a blip.
100
+ */
101
+ export async function waitForIngest(deps) {
102
+ const deadline = deps.now() + deps.timeoutMs;
103
+ let attempt = 0;
104
+ while (true) {
105
+ attempt++;
106
+ deps.onPoll?.(attempt);
107
+ try {
108
+ const builds = await deps.fetchBuilds();
109
+ if (hasIngestedBuild(builds, deps.buildId, deps.minEventCount ?? 0))
110
+ return true;
111
+ }
112
+ catch {
113
+ // Transient ingest / aggregation lag -- keep polling until the deadline.
114
+ }
115
+ // Read the clock once so the deadline check and the sleep window are
116
+ // consistent (a second now() call could advance past the deadline and yield
117
+ // a negative remaining); never sleep past the deadline.
118
+ const remaining = deadline - deps.now();
119
+ if (remaining <= 0)
120
+ return false;
121
+ await deps.sleep(Math.min(deps.intervalMs, remaining));
122
+ }
123
+ }
124
+ //# sourceMappingURL=run-profile-test-lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-profile-test-lib.js","sourceRoot":"","sources":["../../src/lib/run-profile-test-lib.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framedash/cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "files": [
@@ -31,7 +31,7 @@
31
31
  "node": ">=18.0.0"
32
32
  },
33
33
  "dependencies": {
34
- "@framedash/api-client": "0.1.1",
34
+ "@framedash/api-client": "0.1.2",
35
35
  "zod": "^4.3.6"
36
36
  },
37
37
  "devDependencies": {