@tokenrip/cli 1.5.1 → 1.5.4

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 (37) hide show
  1. package/AGENTS.md +20 -2
  2. package/README.md +1 -1
  3. package/SKILL.md +22 -3
  4. package/dist/cjs/commands/artifact-diff.js +19 -0
  5. package/dist/cjs/commands/artifact-diff.js.map +1 -0
  6. package/dist/cjs/commands/bulk.js +63 -0
  7. package/dist/cjs/commands/bulk.js.map +1 -0
  8. package/dist/cjs/commands/folder.js +19 -14
  9. package/dist/cjs/commands/folder.js.map +1 -1
  10. package/dist/cjs/commands/mount-collection.js +95 -0
  11. package/dist/cjs/commands/mount-collection.js.map +1 -0
  12. package/dist/cjs/commands/mountedagent.js +8 -179
  13. package/dist/cjs/commands/mountedagent.js.map +1 -1
  14. package/dist/cjs/formatters.js +31 -1
  15. package/dist/cjs/formatters.js.map +1 -1
  16. package/dist/cli.js +128 -1
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/artifact-diff.d.ts +3 -0
  19. package/dist/commands/artifact-diff.js +16 -0
  20. package/dist/commands/artifact-diff.js.map +1 -0
  21. package/dist/commands/bulk.d.ts +6 -0
  22. package/dist/commands/bulk.js +60 -0
  23. package/dist/commands/bulk.js.map +1 -0
  24. package/dist/commands/folder.d.ts +7 -0
  25. package/dist/commands/folder.js +18 -14
  26. package/dist/commands/folder.js.map +1 -1
  27. package/dist/commands/mount-collection.d.ts +17 -0
  28. package/dist/commands/mount-collection.js +88 -0
  29. package/dist/commands/mount-collection.js.map +1 -0
  30. package/dist/commands/mountedagent.d.ts +0 -26
  31. package/dist/commands/mountedagent.js +10 -173
  32. package/dist/commands/mountedagent.js.map +1 -1
  33. package/dist/formatters.d.ts +1 -0
  34. package/dist/formatters.js +29 -0
  35. package/dist/formatters.js.map +1 -1
  36. package/package.json +2 -3
  37. package/references/agent-architecture.md +15 -1
package/AGENTS.md CHANGED
@@ -136,6 +136,20 @@ rip artifact delete my-alias
136
136
  rip artifact delete https://tokenrip.com/s/my-alias
137
137
  ```
138
138
 
139
+ ### `rip artifact bulk <action>`
140
+
141
+ Move, archive, or delete many artifacts in one call. `<action>` is `move`,
142
+ `archive`, or `delete`. `--ids` is a comma-separated list of identifiers (UUID,
143
+ alias, or URL), up to 200. Output reports `succeeded` and `failed` ids.
144
+
145
+ ```bash
146
+ rip artifact bulk move --ids "id1,id2,id3" --folder reports
147
+ rip artifact bulk move --ids "id1,id2" --folder research --team my-team
148
+ rip artifact bulk move --ids "id1,id2" --unfiled
149
+ rip artifact bulk archive --ids "id1,id2,id3"
150
+ rip artifact bulk delete --ids "id1,id2"
151
+ ```
152
+
139
153
  ### Share an artifact
140
154
 
141
155
  ```bash
@@ -161,6 +175,8 @@ rip artifact download <uuid-or-url> # download content to file
161
175
  rip artifact download <uuid-or-url> --output ./report.pdf # custom output path
162
176
  rip artifact download <uuid-or-url> --version <versionId> # specific version
163
177
  rip artifact versions <uuid-or-url> # list all versions
178
+ rip artifact diff <uuid-or-url> # what changed vs. the previous version
179
+ rip artifact diff <uuid-or-url> --version <versionId> # diff a specific version
164
180
  ```
165
181
 
166
182
  ### Comments
@@ -240,10 +256,11 @@ These four commands are 1:1 mirrors of the MCP tools `agent_load`, `agent_record
240
256
  Before publishing a manifest, publish every referenced brain artifact alias:
241
257
 
242
258
  ```bash
243
- rip folder create office-hours
244
- rip artifact publish agents/office-hours/brain/office-hours-soul.md --type markdown --alias office-hours-soul --title "Office Hours Soul" --folder office-hours
259
+ rip artifact publish agents/office-hours/brain/office-hours-soul.md --type markdown --alias office-hours-soul --title "Office Hours Soul"
245
260
  ```
246
261
 
262
+ `rip agent publish` auto-creates a system-managed folder under the agent owner and files brain/sample/shared artifacts into it — you don't need to create or pass `--folder` yourself. That folder is locked (see `FOLDER_LOCKED` below): rename or delete only via the agent lifecycle.
263
+
247
264
  **Memory primitives in the manifest:**
248
265
 
249
266
  - `memoryCollections[]` — schema-bound rows. Scopes: `shared`, `team`, `operator-private`.
@@ -512,3 +529,4 @@ Use on artifact commands to build lineage and traceability:
512
529
  | `INVALID_LOAD_PARAMS` | `agent_load` got both/neither of `slug`/`mountId` | Pass exactly one |
513
530
  | `SESSION_OUTPUT_NOT_PERMITTED` | Agent forbids session outputs | Drop the session output |
514
531
  | `ADMIN_REQUIRED` | Publisher approve/reject/revoke endpoint | Platform admin only |
532
+ | `FOLDER_LOCKED` | Tried to rename/delete or move artifacts in/out of a system-managed agent or mount folder | Don't touch agent/mount folders — they're managed by `rip agent publish`/`fork`/`mount`/`unmount` |
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p>
2
- <img src="./artifacts/banner.svg" alt="tokenrip — The collaboration layer for AI agents" width="100%">
2
+ <img src="./assets/banner.svg" alt="tokenrip — The collaboration layer for AI agents" width="100%">
3
3
  </p>
4
4
 
5
5
  # tokenrip/cli
package/SKILL.md CHANGED
@@ -14,7 +14,7 @@ description: >-
14
14
  web browsing or scraping (use browser tools), database queries,
15
15
  or git operations. Tokenrip is for publishing, sharing, and collaborating
16
16
  on artifacts across agents — not for local development workflows.
17
- version: 1.5.1
17
+ version: 1.5.4
18
18
  homepage: https://tokenrip.com
19
19
  license: MIT
20
20
  tags:
@@ -53,7 +53,7 @@ metadata:
53
53
  - terminal
54
54
  ---
55
55
 
56
- <!-- tokenrip-skill-version: 1.5.0 -->
56
+ <!-- tokenrip-skill-version: 1.5.2 -->
57
57
 
58
58
  ## Auto-Installation
59
59
 
@@ -64,7 +64,7 @@ if ! command -v rip &> /dev/null; then
64
64
  fi
65
65
 
66
66
  # Auto-update CLI and skill files if a newer version is available
67
- SKILL_VER="1.5.0"
67
+ SKILL_VER="1.5.2"
68
68
  REMOTE_VER=$(curl -fsSL "https://tokenrip.com/.well-known/skills/tokenrip/manifest.json" 2>/dev/null | grep -o '"version":"[^"]*"' | head -1 | cut -d'"' -f4)
69
69
  if [ -n "$REMOTE_VER" ] && [ "$REMOTE_VER" != "$SKILL_VER" ]; then
70
70
  rip update
@@ -198,6 +198,15 @@ Team inbox?
198
198
  → rip inbox --team <slug>
199
199
  ```
200
200
 
201
+ ### Folders you can't touch
202
+
203
+ `rip agent publish` / `fork` / `mount` auto-create system-managed folders
204
+ (`kind='agent'` for an agent's package, `kind='mount'` for a mount's
205
+ materialized artifacts and themes). `rip folder rename`, `rip folder delete`,
206
+ and `rip artifact move` into or out of those folders return `FOLDER_LOCKED`
207
+ (HTTP 409). Use the agent lifecycle instead — delete the agent or `rip agent
208
+ unmount` to remove the folder; both cascade to the filed artifacts.
209
+
201
210
  ### Updating vs versioning
202
211
 
203
212
  ```
@@ -208,11 +217,20 @@ Fix metadata (title, description, alias) without a new version?
208
217
  Publish a new version (content changed)?
209
218
  → rip artifact update <uuid> <file> --type markdown --label "revised"
210
219
 
220
+ See what changed between a version and the one before it?
221
+ → rip artifact diff <id-or-alias> # current version vs. previous
222
+ → rip artifact diff <id-or-alias> --version <versionId>
223
+
211
224
  Archive (hide from listings, still accessible by ID)?
212
225
  → rip artifact archive <identifier>
213
226
 
214
227
  Permanently delete?
215
228
  → rip artifact delete <identifier>
229
+
230
+ Move, archive, or delete many artifacts at once (up to 200)?
231
+ → rip artifact bulk move --ids "id1,id2" --folder <slug>
232
+ → rip artifact bulk archive --ids "id1,id2"
233
+ → rip artifact bulk delete --ids "id1,id2"
216
234
  ```
217
235
 
218
236
  ### Aliases and resolution
@@ -311,6 +329,7 @@ For JSON output format, provenance flags, or `--json` details, read `references/
311
329
  | `MOUNT_NAME_TAKEN` | Pick a different `--name` |
312
330
  | `IMPRINT_NOT_LOADABLE` | Verify agent ownership or team membership |
313
331
  | `TIMEOUT` / `NETWORK_ERROR` | Retry once; check connection with `rip config show` |
332
+ | `FOLDER_LOCKED` | Don't rename/delete or move into/out of system-managed agent/mount folders — manage via the agent lifecycle |
314
333
 
315
334
  ## CLI Updates
316
335
 
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.artifactDiff = artifactDiff;
4
+ const auth_client_js_1 = require("../auth-client.js");
5
+ const output_js_1 = require("../output.js");
6
+ const formatters_js_1 = require("../formatters.js");
7
+ const parse_artifact_id_js_1 = require("../parse-artifact-id.js");
8
+ async function artifactDiff(input, options) {
9
+ const uuid = (0, parse_artifact_id_js_1.parseArtifactId)(input);
10
+ const { client } = (0, auth_client_js_1.optionalAuthClient)();
11
+ let versionId = options.version;
12
+ if (!versionId) {
13
+ const { data } = await client.get(`/v0/artifacts/${uuid}`);
14
+ versionId = data.data.currentVersionId;
15
+ }
16
+ const { data } = await client.get(`/v0/artifacts/${uuid}/versions/${versionId}/diff`);
17
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatVersionDiff);
18
+ }
19
+ //# sourceMappingURL=artifact-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-diff.js","sourceRoot":"","sources":["../../../src/commands/artifact-diff.ts"],"names":[],"mappings":";;AAKA,oCAeC;AApBD,sDAAuD;AACvD,4CAA6C;AAC7C,oDAAqD;AACrD,kEAA0D;AAEnD,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,OAA6B;IAE7B,MAAM,IAAI,GAAG,IAAA,sCAAe,EAAC,KAAK,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,mCAAkB,GAAE,CAAC;IAExC,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3D,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,aAAa,SAAS,OAAO,CAAC,CAAC;IACtF,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,iCAAiB,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.artifactBulk = artifactBulk;
4
+ const auth_client_js_1 = require("../auth-client.js");
5
+ const errors_js_1 = require("../errors.js");
6
+ const output_js_1 = require("../output.js");
7
+ const parse_artifact_id_js_1 = require("../parse-artifact-id.js");
8
+ const folder_js_1 = require("./folder.js");
9
+ const VALID_ACTIONS = ['move', 'archive', 'delete'];
10
+ async function artifactBulk(action, options) {
11
+ if (!VALID_ACTIONS.includes(action)) {
12
+ throw new errors_js_1.CliError('INVALID_TYPE', `Invalid action "${action}". Must be one of: ${VALID_ACTIONS.join(', ')}`);
13
+ }
14
+ if (!options.ids) {
15
+ throw new errors_js_1.CliError('MISSING_FIELD', 'Provide --ids <csv> with comma-separated artifact identifiers');
16
+ }
17
+ const publicIds = options.ids
18
+ .split(',')
19
+ .map((s) => (0, parse_artifact_id_js_1.parseArtifactId)(s.trim()))
20
+ .filter((s) => s.length > 0);
21
+ if (publicIds.length === 0) {
22
+ throw new errors_js_1.CliError('MISSING_FIELD', 'No artifact identifiers provided in --ids');
23
+ }
24
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
25
+ const body = {
26
+ action: action,
27
+ publicIds,
28
+ };
29
+ if (action === 'move') {
30
+ if (options.unfiled) {
31
+ body.folderId = null;
32
+ }
33
+ else if (options.folder) {
34
+ body.folderId = await (0, folder_js_1.resolveFolderId)(client, options.folder, options.team);
35
+ }
36
+ else {
37
+ throw new errors_js_1.CliError('MISSING_FIELD', 'For "move", provide --folder <slug> or --unfiled');
38
+ }
39
+ }
40
+ const { data } = await client.post('/v0/artifacts/bulk', body);
41
+ const result = data.data;
42
+ (0, output_js_1.outputSuccess)({
43
+ action,
44
+ requested: publicIds.length,
45
+ succeeded: result.succeeded,
46
+ failed: result.failed,
47
+ failed_count: result.failed.length,
48
+ }, (d) => {
49
+ const lines = [
50
+ `Bulk ${d.action}: ${d.succeeded} succeeded, ${d.failed_count} failed`,
51
+ ];
52
+ const failed = d.failed;
53
+ if (failed.length > 0) {
54
+ lines.push('');
55
+ lines.push('Failed:');
56
+ for (const f of failed) {
57
+ lines.push(` ${f.publicId}: ${f.error}`);
58
+ }
59
+ }
60
+ return lines.join('\n');
61
+ });
62
+ }
63
+ //# sourceMappingURL=bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../../../src/commands/bulk.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveFolderId = resolveFolderId;
3
4
  exports.folderCreate = folderCreate;
4
5
  exports.folderList = folderList;
5
6
  exports.folderShow = folderShow;
@@ -9,6 +10,19 @@ exports.artifactMove = artifactMove;
9
10
  const auth_client_js_1 = require("../auth-client.js");
10
11
  const output_js_1 = require("../output.js");
11
12
  const teams_js_1 = require("../teams.js");
13
+ /**
14
+ * Resolve a folder slug to its ID. Personal folders by default; pass a team
15
+ * slug to resolve a team folder. Used by `artifact move` and `artifact bulk`.
16
+ */
17
+ async function resolveFolderId(client, folderSlug, teamSlug) {
18
+ if (teamSlug) {
19
+ const team = (0, teams_js_1.resolveTeam)(teamSlug);
20
+ const { data } = await client.get(`/v0/teams/${encodeURIComponent(team)}/folders/${encodeURIComponent(folderSlug)}`);
21
+ return data.data.id;
22
+ }
23
+ const { data } = await client.get(`/v0/folders/${encodeURIComponent(folderSlug)}`);
24
+ return data.data.id;
25
+ }
12
26
  async function folderCreate(slug, options) {
13
27
  const { client } = (0, auth_client_js_1.requireAuthClient)();
14
28
  if (options.team) {
@@ -47,14 +61,15 @@ async function folderShow(slug, options) {
47
61
  }
48
62
  async function folderDelete(slug, options) {
49
63
  const { client } = (0, auth_client_js_1.requireAuthClient)();
64
+ const config = options.deleteContents ? { params: { mode: 'delete' } } : undefined;
50
65
  if (options.team) {
51
66
  const teamSlug = (0, teams_js_1.resolveTeam)(options.team);
52
- await client.delete(`/v0/teams/${encodeURIComponent(teamSlug)}/folders/${encodeURIComponent(slug)}`);
67
+ await client.delete(`/v0/teams/${encodeURIComponent(teamSlug)}/folders/${encodeURIComponent(slug)}`, config);
53
68
  }
54
69
  else {
55
- await client.delete(`/v0/folders/${encodeURIComponent(slug)}`);
70
+ await client.delete(`/v0/folders/${encodeURIComponent(slug)}`, config);
56
71
  }
57
- (0, output_js_1.outputSuccess)({ ok: true });
72
+ (0, output_js_1.outputSuccess)({ deleted: true, slug, contents: options.deleteContents ? 'deleted' : 'archived' });
58
73
  }
59
74
  async function folderRename(oldSlug, newSlug, options) {
60
75
  const { client } = (0, auth_client_js_1.requireAuthClient)();
@@ -78,17 +93,7 @@ async function artifactMove(uuid, options) {
78
93
  if (!options.folder) {
79
94
  throw new Error('Provide --folder <slug> or --unfiled');
80
95
  }
81
- // Resolve folder slug to ID
82
- let folderId;
83
- if (options.team) {
84
- const teamSlug = (0, teams_js_1.resolveTeam)(options.team);
85
- const { data } = await client.get(`/v0/teams/${encodeURIComponent(teamSlug)}/folders/${encodeURIComponent(options.folder)}`);
86
- folderId = data.data.id;
87
- }
88
- else {
89
- const { data } = await client.get(`/v0/folders/${encodeURIComponent(options.folder)}`);
90
- folderId = data.data.id;
91
- }
96
+ const folderId = await resolveFolderId(client, options.folder, options.team);
92
97
  const { data } = await client.patch(`/v0/artifacts/${uuid}`, { folderId });
93
98
  (0, output_js_1.outputSuccess)(data.data);
94
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/commands/folder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folder.js","sourceRoot":"","sources":["../../../src/commands/folder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mountCollectionList = mountCollectionList;
4
+ exports.mountCollectionRows = mountCollectionRows;
5
+ exports.mountCollectionLatest = mountCollectionLatest;
6
+ exports.mountCollectionByTag = mountCollectionByTag;
7
+ exports.mountCollectionPatch = mountCollectionPatch;
8
+ const auth_client_js_1 = require("../auth-client.js");
9
+ const errors_js_1 = require("../errors.js");
10
+ const output_js_1 = require("../output.js");
11
+ /**
12
+ * `--set key=value` repeats: `[ "status=seen", "owner=alice" ]` → `{ status: 'seen', owner: 'alice' }`.
13
+ * Number-looking values stay strings on this path — agents that need typed
14
+ * values should pass a JSON object via `--data-json` (future). For v1 the
15
+ * schema validator on the backend coerces strings to enums/numbers as
16
+ * declared in the collection schema.
17
+ */
18
+ function parseSetPairs(pairs) {
19
+ if (!pairs || pairs.length === 0)
20
+ return {};
21
+ const out = {};
22
+ for (const pair of pairs) {
23
+ const idx = pair.indexOf('=');
24
+ if (idx <= 0) {
25
+ throw new errors_js_1.CliError('INVALID_SET', `Bad --set value (expected key=value): ${pair}`);
26
+ }
27
+ out[pair.slice(0, idx).trim()] = pair.slice(idx + 1);
28
+ }
29
+ return out;
30
+ }
31
+ /** Convert `--filter key:value` (repeatable) into the query-string `key:val,key:val` shape the controller expects. */
32
+ function joinFilters(filters) {
33
+ if (!filters || filters.length === 0)
34
+ return undefined;
35
+ return filters.join(',');
36
+ }
37
+ async function mountCollectionList(mountId, _options) {
38
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
39
+ const { data } = await client.get(`/v0/operator/mounts/${encodeURIComponent(mountId)}/collections`);
40
+ (0, output_js_1.outputSuccess)(data.data, (rows) => {
41
+ if (!Array.isArray(rows) || rows.length === 0)
42
+ return '(no collections)';
43
+ const lines = ['slug kind tags'];
44
+ for (const r of rows) {
45
+ const slug = String(r.slug ?? '').padEnd(30);
46
+ const kind = String(r.templateKind ?? '').padEnd(18);
47
+ const tags = Array.isArray(r.tags) && r.tags.length > 0 ? r.tags.join(', ') : '—';
48
+ lines.push(`${slug} ${kind} ${tags}`);
49
+ }
50
+ return lines.join('\n');
51
+ });
52
+ }
53
+ async function mountCollectionRows(mountId, slug, options) {
54
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
55
+ const params = {};
56
+ const filterStr = joinFilters(options.filter);
57
+ if (filterStr)
58
+ params.filter = filterStr;
59
+ if (options.sort)
60
+ params.sort = options.sort;
61
+ if (options.limit)
62
+ params.limit = options.limit;
63
+ if (options.after)
64
+ params.after = options.after;
65
+ const { data } = await client.get(`/v0/operator/mounts/${encodeURIComponent(mountId)}/collections/${encodeURIComponent(slug)}/rows`, { params });
66
+ (0, output_js_1.outputSuccess)(data, () => JSON.stringify(data, null, 2));
67
+ }
68
+ async function mountCollectionLatest(mountId, slug) {
69
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
70
+ const { data } = await client.get(`/v0/operator/mounts/${encodeURIComponent(mountId)}/collections/${encodeURIComponent(slug)}/rows/latest`);
71
+ (0, output_js_1.outputSuccess)(data.data, () => JSON.stringify(data.data, null, 2));
72
+ }
73
+ async function mountCollectionByTag(mountId, tag, options) {
74
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
75
+ const params = {};
76
+ const filterStr = joinFilters(options.filter);
77
+ if (filterStr)
78
+ params.filter = filterStr;
79
+ if (options.sort)
80
+ params.sort = options.sort;
81
+ if (options.limit)
82
+ params.limit = options.limit;
83
+ const { data } = await client.get(`/v0/operator/mounts/${encodeURIComponent(mountId)}/collections-by-tag/${encodeURIComponent(tag)}/rows`, { params });
84
+ (0, output_js_1.outputSuccess)(data, () => JSON.stringify(data, null, 2));
85
+ }
86
+ async function mountCollectionPatch(mountId, slug, rowId, options) {
87
+ const dataPatch = parseSetPairs(options.set);
88
+ if (Object.keys(dataPatch).length === 0) {
89
+ throw new errors_js_1.CliError('NO_FIELDS', 'At least one --set key=value required');
90
+ }
91
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
92
+ const { data } = await client.patch(`/v0/operator/mounts/${encodeURIComponent(mountId)}/collections/${encodeURIComponent(slug)}/rows/${encodeURIComponent(rowId)}`, { data: dataPatch });
93
+ (0, output_js_1.outputSuccess)(data.data, () => JSON.stringify(data.data, null, 2));
94
+ }
95
+ //# sourceMappingURL=mount-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount-collection.js","sourceRoot":"","sources":["../../../src/commands/mount-collection.ts"],"names":[],"mappings":"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"}