@sentroy-co/client-sdk 2.13.9 → 2.15.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 (49) hide show
  1. package/README.md +53 -5
  2. package/dist/auth/client.d.ts.map +1 -1
  3. package/dist/auth/client.js +8 -1
  4. package/dist/auth/client.js.map +1 -1
  5. package/dist/auth/react/index.js +1 -1
  6. package/dist/auth/react/index.js.map +1 -1
  7. package/dist/auth/react-native/index.d.ts +93 -0
  8. package/dist/auth/react-native/index.d.ts.map +1 -0
  9. package/dist/auth/react-native/index.js +106 -0
  10. package/dist/auth/react-native/index.js.map +1 -0
  11. package/dist/cli/ai.d.ts +35 -0
  12. package/dist/cli/ai.d.ts.map +1 -0
  13. package/dist/cli/ai.js +399 -0
  14. package/dist/cli/ai.js.map +1 -0
  15. package/dist/cli/args.d.ts +62 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +199 -0
  18. package/dist/cli/args.js.map +1 -0
  19. package/dist/cli/env.d.ts.map +1 -1
  20. package/dist/cli/env.js +8 -2
  21. package/dist/cli/env.js.map +1 -1
  22. package/dist/cli/format.d.ts +37 -0
  23. package/dist/cli/format.d.ts.map +1 -0
  24. package/dist/cli/format.js +129 -0
  25. package/dist/cli/format.js.map +1 -0
  26. package/dist/cli/index.d.ts +8 -2
  27. package/dist/cli/index.d.ts.map +1 -1
  28. package/dist/cli/index.js +128 -25
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/mail.d.ts +25 -0
  31. package/dist/cli/mail.d.ts.map +1 -0
  32. package/dist/cli/mail.js +253 -0
  33. package/dist/cli/mail.js.map +1 -0
  34. package/dist/cli/storage.d.ts +28 -0
  35. package/dist/cli/storage.d.ts.map +1 -0
  36. package/dist/cli/storage.js +189 -0
  37. package/dist/cli/storage.js.map +1 -0
  38. package/package.json +9 -2
  39. package/skill/SKILL.md +577 -0
  40. package/src/auth/client.ts +8 -1
  41. package/src/auth/react/index.tsx +1 -1
  42. package/src/auth/react-native/index.ts +157 -0
  43. package/src/cli/ai.ts +440 -0
  44. package/src/cli/args.ts +225 -0
  45. package/src/cli/env.ts +10 -2
  46. package/src/cli/format.ts +147 -0
  47. package/src/cli/index.ts +147 -25
  48. package/src/cli/mail.ts +363 -0
  49. package/src/cli/storage.ts +307 -0
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /**
3
+ * `sentroy storage <subcommand>` — bucket + media browsing for the
4
+ * Sentroy storage product.
5
+ *
6
+ * Mirrors the dashboard at https://storage.sentroy.com but stays
7
+ * read-only: list/get buckets and media, surface usage + quota. Mutating
8
+ * ops (upload/delete) are intentionally not in this CLI — use the SDK or
9
+ * dashboard, which give you progress + crop UX.
10
+ *
11
+ * Auth: Bearer stk_… via `resolveSharedOpts({requireCompanySlug: true})`.
12
+ * Every path is prefixed `/api/companies/<slug>`.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.STORAGE_HANDLERS = void 0;
16
+ const args_1 = require("./args");
17
+ const format_1 = require("./format");
18
+ // ── Helpers ─────────────────────────────────────────────────────────────
19
+ function humanBytes(n) {
20
+ if (n === null || n === undefined || !Number.isFinite(n))
21
+ return "—";
22
+ if (n < 1024)
23
+ return `${n} B`;
24
+ const units = ["KB", "MB", "GB", "TB"];
25
+ let v = n / 1024;
26
+ let i = 0;
27
+ while (v >= 1024 && i < units.length - 1) {
28
+ v /= 1024;
29
+ i++;
30
+ }
31
+ return `${v.toFixed(1)} ${units[i]}`;
32
+ }
33
+ function yesNo(v) {
34
+ return v ? "yes" : "no";
35
+ }
36
+ function shortDate(v) {
37
+ if (typeof v !== "string" || v.length < 10)
38
+ return "";
39
+ return v.slice(0, 10);
40
+ }
41
+ function companyPrefix(shared) {
42
+ if (!shared.companySlug) {
43
+ (0, args_1.fail)("internal: company slug missing after resolveSharedOpts guard");
44
+ }
45
+ return `/api/companies/${encodeURIComponent(shared.companySlug)}`;
46
+ }
47
+ /** Append flag-derived query params; only emits keys whose flag is set. */
48
+ function buildQuery(flags, keys) {
49
+ const params = [];
50
+ for (const k of keys) {
51
+ const raw = flags[k];
52
+ if (raw === undefined || raw === false)
53
+ continue;
54
+ const value = raw === true ? "" : String(raw);
55
+ if (!value)
56
+ continue;
57
+ params.push(`${encodeURIComponent(k)}=${encodeURIComponent(value)}`);
58
+ }
59
+ return params.length ? `?${params.join("&")}` : "";
60
+ }
61
+ // ── Column specs ────────────────────────────────────────────────────────
62
+ const BUCKET_COLUMNS = [
63
+ { header: "ID", get: (b) => b.id, maxWidth: 24 },
64
+ { header: "NAME", get: (b) => b.name, maxWidth: 32 },
65
+ { header: "SLUG", get: (b) => b.slug, maxWidth: 32 },
66
+ { header: "PUBLIC", get: (b) => yesNo(b.isPublic), maxWidth: 6 },
67
+ { header: "USED", get: (b) => humanBytes(b.storageUsed), alignRight: true },
68
+ { header: "FILES", get: (b) => b.fileCount, alignRight: true },
69
+ { header: "CREATED", get: (b) => shortDate(b.createdAt), maxWidth: 10 },
70
+ ];
71
+ const MEDIA_COLUMNS = [
72
+ { header: "ID", get: (m) => m.id, maxWidth: 24 },
73
+ { header: "NAME", get: (m) => m.originalName, maxWidth: 40 },
74
+ { header: "TYPE", get: (m) => m.type, maxWidth: 12 },
75
+ { header: "MIME", get: (m) => m.mimeType, maxWidth: 24 },
76
+ { header: "SIZE", get: (m) => humanBytes(m.size), alignRight: true },
77
+ { header: "FOLDER", get: (m) => m.folder ?? "", maxWidth: 24 },
78
+ { header: "PUBLIC", get: (m) => yesNo(m.isPublic), maxWidth: 6 },
79
+ ];
80
+ // ── Subcommand handlers ─────────────────────────────────────────────────
81
+ async function bucketsList(argv) {
82
+ const { flags } = (0, args_1.parseFlags)(argv);
83
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
84
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/buckets`);
85
+ const rows = Array.isArray(data) ? data : (data?.items ?? []);
86
+ (0, format_1.printRows)(rows, BUCKET_COLUMNS, flags);
87
+ }
88
+ async function bucketsGet(argv) {
89
+ const { positional, flags } = (0, args_1.parseFlags)(argv);
90
+ const bucketSlug = positional[0];
91
+ if (!bucketSlug) {
92
+ (0, args_1.fail)("usage: sentroy storage buckets get <bucketSlug>");
93
+ }
94
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
95
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/buckets/${encodeURIComponent(bucketSlug)}`);
96
+ (0, format_1.printDetail)(data, flags);
97
+ }
98
+ async function mediaList(argv) {
99
+ const { positional, flags } = (0, args_1.parseFlags)(argv);
100
+ const bucketSlug = positional[0];
101
+ if (!bucketSlug) {
102
+ (0, args_1.fail)("usage: sentroy storage media list <bucketSlug> [--type= --folder= --q= --sort= --dir= --limit= --skip=]");
103
+ }
104
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
105
+ const query = buildQuery(flags, [
106
+ "type",
107
+ "folder",
108
+ "q",
109
+ "sort",
110
+ "dir",
111
+ "limit",
112
+ "skip",
113
+ ]);
114
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/buckets/${encodeURIComponent(bucketSlug)}/media${query}`);
115
+ const items = data?.items ?? [];
116
+ (0, format_1.printRows)(items, MEDIA_COLUMNS, flags);
117
+ // Footer only in table mode — JSON consumers get total/limit/skip in payload.
118
+ const output = typeof flags.output === "string" ? flags.output.toLowerCase() : "table";
119
+ if (output !== "json") {
120
+ const total = data?.total ?? items.length;
121
+ const limit = data?.limit ?? items.length;
122
+ const skip = data?.skip ?? 0;
123
+ const page = limit > 0 ? Math.floor(skip / limit) + 1 : 1;
124
+ const pages = limit > 0 ? Math.max(1, Math.ceil(total / limit)) : 1;
125
+ (0, args_1.info)(`Total: ${total} item${total === 1 ? "" : "s"}, page ${page}/${pages}`);
126
+ }
127
+ }
128
+ async function mediaGet(argv) {
129
+ const { positional, flags } = (0, args_1.parseFlags)(argv);
130
+ const bucketSlug = positional[0];
131
+ const mediaId = positional[1];
132
+ if (!bucketSlug || !mediaId) {
133
+ (0, args_1.fail)("usage: sentroy storage media get <bucketSlug> <mediaId>");
134
+ }
135
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
136
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/buckets/${encodeURIComponent(bucketSlug)}/media/${encodeURIComponent(mediaId)}`);
137
+ (0, format_1.printDetail)(data, flags);
138
+ }
139
+ async function usage(argv) {
140
+ const { flags } = (0, args_1.parseFlags)(argv);
141
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
142
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/usage`);
143
+ const output = typeof flags.output === "string" ? flags.output.toLowerCase() : "table";
144
+ if (output === "json") {
145
+ process.stdout.write(JSON.stringify(data, null, 2) + "\n");
146
+ return;
147
+ }
148
+ // Table mode renders quota summary only — the nested arrays
149
+ // (buckets, byType, timeSeries, recent) bloat the terminal; nudge to
150
+ // --output=json for the full picture.
151
+ const quota = data?.quota ?? { used: 0, limit: 0, remaining: 0 };
152
+ const pct = quota.limit > 0 ? ((quota.used / quota.limit) * 100).toFixed(1) + "%" : "—";
153
+ (0, format_1.printDetail)({
154
+ used: humanBytes(quota.used),
155
+ limit: humanBytes(quota.limit),
156
+ remaining: humanBytes(quota.remaining),
157
+ utilization: pct,
158
+ buckets: data?.buckets?.length ?? 0,
159
+ recentItems: data?.recent?.length ?? 0,
160
+ }, flags);
161
+ (0, args_1.info)(`Pass ${args_1.c.cyan("--output=json")} for the full byType / timeSeries / recent payload.`);
162
+ }
163
+ async function quota(argv) {
164
+ const { flags } = (0, args_1.parseFlags)(argv);
165
+ const shared = (0, args_1.resolveSharedOpts)(flags, { requireCompanySlug: true });
166
+ const data = await (0, args_1.apiFetch)(shared, `${companyPrefix(shared)}/storage-quota`);
167
+ const output = typeof flags.output === "string" ? flags.output.toLowerCase() : "table";
168
+ if (output === "json") {
169
+ process.stdout.write(JSON.stringify(data, null, 2) + "\n");
170
+ return;
171
+ }
172
+ const pct = data.limit > 0 ? ((data.used / data.limit) * 100).toFixed(1) + "%" : "—";
173
+ (0, format_1.printDetail)({
174
+ used: humanBytes(data.used),
175
+ limit: humanBytes(data.limit),
176
+ remaining: humanBytes(data.remaining),
177
+ utilization: pct,
178
+ }, flags);
179
+ }
180
+ // ── Export ──────────────────────────────────────────────────────────────
181
+ exports.STORAGE_HANDLERS = {
182
+ bucketsList,
183
+ bucketsGet,
184
+ mediaList,
185
+ mediaGet,
186
+ usage,
187
+ quota,
188
+ };
189
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/cli/storage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentroy-co/client-sdk",
3
- "version": "2.13.9",
3
+ "version": "2.15.0",
4
4
  "description": "TypeScript SDK + CLI for the Sentroy platform — mail, storage, env vault + React components.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -53,13 +53,20 @@
53
53
  "types": "./dist/auth/react/index.d.ts",
54
54
  "import": "./dist/auth/react/index.js",
55
55
  "require": "./dist/auth/react/index.js"
56
+ },
57
+ "./auth/react-native": {
58
+ "types": "./dist/auth/react-native/index.d.ts",
59
+ "import": "./dist/auth/react-native/index.js",
60
+ "require": "./dist/auth/react-native/index.js"
56
61
  }
57
62
  },
58
63
  "files": [
59
64
  "dist",
60
65
  "src",
61
66
  "bin",
62
- "AGENTS.md"
67
+ "skill",
68
+ "AGENTS.md",
69
+ "SKILL.md"
63
70
  ],
64
71
  "scripts": {
65
72
  "build": "tsc && node scripts/build-styles.mjs",