records-cli 0.0.1 → 0.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,cAAc,mCAAmC,CAAA;AAE9D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO;CAKzB;AAMD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa;cAGvB,CAAC,QAChB,MAAM,SACN,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KACrC,OAAO,CAAC,CAAC,CAAC;;EAgCd"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,eAAO,MAAM,cAAc,mCAAmC,CAAA;AAE9D,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,qBAAa,QAAS,SAAQ,KAAK;IAG/B,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO;gBAFtB,OAAO,EAAE,MAAM,EACN,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO;CAKzB;AAyBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa;cAGvB,CAAC,QAChB,MAAM,SACN,WAAW,GAAG;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,KACrC,OAAO,CAAC,CAAC,CAAC;;EAgCd"}
package/dist/client.js CHANGED
@@ -13,6 +13,27 @@ export class ApiError extends Error {
13
13
  function normalizeBaseUrl(url) {
14
14
  return url.replace(/\/+$/, "");
15
15
  }
16
+ /** Best-effort message from JSON error bodies (including nested Vercel-style `{ error: { message } }`). */
17
+ function formatHttpErrorPayload(parsed, fallback) {
18
+ if (parsed === null || typeof parsed !== "object") {
19
+ return fallback;
20
+ }
21
+ const o = parsed;
22
+ const err = o.error;
23
+ if (typeof err === "string")
24
+ return err;
25
+ if (err !== null && typeof err === "object" && "message" in err) {
26
+ const m = err.message;
27
+ if (typeof m === "string")
28
+ return m;
29
+ }
30
+ try {
31
+ return JSON.stringify(parsed);
32
+ }
33
+ catch {
34
+ return fallback;
35
+ }
36
+ }
16
37
  export function createClient(opts) {
17
38
  const base = normalizeBaseUrl(opts.baseUrl);
18
39
  async function request(path, init = {}) {
@@ -40,7 +61,10 @@ export function createClient(opts) {
40
61
  parsed = null;
41
62
  }
42
63
  if (!res.ok) {
43
- throw new ApiError(`HTTP ${res.status}: ${typeof parsed === "object" && parsed !== null && "error" in parsed ? String(parsed.error) : text || res.statusText}`, res.status, parsed);
64
+ const detail = typeof parsed === "object" && parsed !== null
65
+ ? formatHttpErrorPayload(parsed, text || res.statusText)
66
+ : text || res.statusText;
67
+ throw new ApiError(`HTTP ${res.status}: ${detail}`, res.status, parsed);
44
68
  }
45
69
  return parsed;
46
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAA;AAO9D,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGtB;IACA;IAHX,YACE,OAAe,EACN,MAAc,EACd,IAAa;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAA;QAHL,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAS;QAGtB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAA;IACxB,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE3C,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,OAAyC,EAAE;QAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAA;QACrE,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACpE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAA;QACjD,CAAC;QACD,MAAM,IAAI,GACR,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QACjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,MAAM,GAAY,IAAI,CAAA;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,IAAI,CAAA;YACf,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,QAAQ,CAChB,QAAQ,GAAG,CAAC,MAAM,KAAK,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,MAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,EACnK,GAAG,CAAC,MAAM,EACV,MAAM,CACP,CAAA;QACH,CAAC;QACD,OAAO,MAAW,CAAA;IACpB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "records-cli",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Command-line interface to Records for automation and LLM agents.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -83,13 +83,13 @@ Links to a record by path `**groupSlug/recordSlug`** (the slugs returned by the
83
83
  ### `groups`
84
84
 
85
85
 
86
- | Command | Auth | Notes |
87
- | ---------------------------------------------------- | ------ | -------------------------------------------------------------------------- |
88
- | `records-cli groups list [--with-records]` | No | With `--with-records`: each group may include `"records": RecordSummary[]` |
89
- | `records-cli groups get (--id <id> | --slug <slug>)` | No | Exactly one of `--id` or `--slug` |
90
- | `records-cli groups create --title <title>` | Bearer | 201 `{ "data": GroupRow }` |
91
- | `records-cli groups patch <id> --title <title>` | Bearer | 200 `{ "data": GroupRow }` |
92
- | `records-cli groups delete <id>` | Bearer | Success: empty body |
86
+ | Command | Auth | Notes |
87
+ | ----------------------------------------------- | --------- | -------------------------------------------------------------------------- |
88
+ | `records-cli groups list [--with-records]` | No | With `--with-records`: each group may include `"records": RecordSummary[]` |
89
+ | `records-cli groups get (--id | --slug )` | No |
90
+ | `records-cli groups create --title <title>` | Bearer | 201 `{ "data": GroupRow }` |
91
+ | `records-cli groups patch <id> --title <title>` | Bearer | 200 `{ "data": GroupRow }` |
92
+ | `records-cli groups delete <id>` | Bearer | Success: empty body |
93
93
 
94
94
 
95
95
  **Group row:** `{ "id", "title", "slug" }`
@@ -106,11 +106,11 @@ Slugs are generated from titles (unique per scope).
106
106
  ### `group-records` (nested under a group slug)
107
107
 
108
108
 
109
- | Command | Auth | Notes |
110
- | ---------------------------------------------------------------------------------------------------- | ------ | --------------------------------- |
111
- | `records-cli group-records list <groupSlug>` | No | 200 `{ "data": RecordSummary[] }` |
112
- | `records-cli group-records get <groupSlug> <recordSlug>` | No | 200 `{ "data": RecordRow }` |
113
- | `records-cli group-records create <groupSlug> --title <t> --content <path|-> [--description <text>]` | Bearer | 201 `{ "data": RecordRow }` |
109
+ | Command | Auth | Notes |
110
+ | --------------------------------------------------------- | -------------------- | --------------------------------- |
111
+ | `records-cli group-records list <groupSlug>` | No | 200 `{ "data": RecordSummary[] }` |
112
+ | `records-cli group-records get <groupSlug> <recordSlug>` | No | 200 `{ "data": RecordRow }` |
113
+ | `records-cli group-records create --title --content <path | -> [--description ]` | Bearer |
114
114
 
115
115
 
116
116
  **Create body:** `title` (required), `content` (required), optional `description`.
@@ -120,11 +120,11 @@ Slugs are generated from titles (unique per scope).
120
120
  ### `records` (by numeric id)
121
121
 
122
122
 
123
- | Command | Auth | Notes |
124
- | ----------------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------- |
125
- | `records-cli records get <id>` | No | 200 `{ "data": RecordRow }` |
126
- | `records-cli records patch <id> [--title] [--content <path|->] [--description] [--clear-description]` | Bearer | At least one field; 200 `{ "data": RecordRow }` |
127
- | `records-cli records delete <id>` | Bearer | Success: empty body |
123
+ | Command | Auth | Notes |
124
+ | ----------------------------------------------------- | ------------------------------------------ | --------------------------- |
125
+ | `records-cli records get <id>` | No | 200 `{ "data": RecordRow }` |
126
+ | `records-cli records patch [--title] [--content <path | ->] [--description] [--clear-description]` | Bearer |
127
+ | `records-cli records delete <id>` | Bearer | Success: empty body |
128
128
 
129
129
 
130
130
  **Record row:** `{ "id", "title", "description", "slug", "groupId", "content" }`