@tokenrip/cli 1.3.12 → 1.3.13

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.
package/AGENTS.md CHANGED
@@ -200,6 +200,7 @@ rip mountedagent publish <manifest.json> --publish --featured 10
200
200
  # Inspect / list
201
201
  rip mountedagent list # imprints you own
202
202
  rip mountedagent show office-hours # owner-visible detail
203
+ rip mountedagent assets office-hours # every asset the imprint references
203
204
 
204
205
  # Fork — personal default; --team makes it a team fork
205
206
  rip mountedagent fork chief-of-staff
@@ -207,12 +208,35 @@ rip mountedagent fork chief-of-staff --team acme
207
208
  rip mountedagent fork chief-of-staff --team acme --slug acme-cos
208
209
 
209
210
  # Mount lifecycle
210
- rip mountedagent mount <slug> [--team <slug>] [--name <label>]
211
+ rip mountedagent mount <slug> [--team <slug>] [--name <label>] [--context-from <file>]
211
212
  rip mountedagent mounts # list caller's mounts
213
+ rip mountedagent show-mount <mount-id> # imprint version, context asset, layers
214
+ rip mountedagent mount-assets <mount-id> # every asset the mount touches
215
+ rip mountedagent mount-context <mount-id> # print mount context content
216
+ rip mountedagent mount-context <mount-id> --edit # open in $EDITOR, republish on save
217
+ rip mountedagent mount-context <mount-id> --from-file <f> # replace from a file
212
218
  rip mountedagent mount-rename <mount-id> <new-name>
213
- rip mountedagent unmount <mount-id> # cascade destroy
219
+ rip mountedagent unmount <mount-id> # cascade destroy (incl. context asset)
214
220
  ```
215
221
 
222
+ All `rip mountedagent *` commands default to human-readable output, except the four session-lifecycle commands below — those always emit JSON. Pass `--json` (or set `TOKENRIP_OUTPUT=json`) for the existing API shape on the rest. `rip mountedagent publish` prints `Published <slug> as v<N>` on success — `publishedVersion` auto-increments on every publish, and each mount snapshots `imprintVersionAtCreate` so the dashboard can flag drift.
223
+
224
+ **Session lifecycle (no MCP needed):**
225
+
226
+ ```bash
227
+ rip --json mountedagent load <slug> [--team <slug>] # start a session
228
+ rip --json mountedagent record <session-token> [--collection <slug>] \
229
+ --row '<json>' # or --row-file <path>
230
+ rip --json mountedagent rewrite-asset <session-token> <logical-alias> \
231
+ --content-from <file> # or --content '<inline>'
232
+ rip --json mountedagent end <session-token> --summary "..." # add --artifact-from / --artifact-title
233
+ # to publish a wrap-up artifact
234
+ ```
235
+
236
+ These four commands are 1:1 mirrors of the MCP tools `mountedagent_load`, `mountedagent_record`, `mountedagent_rewrite_asset`, `mountedagent_session_end`. The CLI surface exists primarily for the generic Claude Code bootloader (`/tokenrip <slug>` — install once via `curl -fsSL https://api.tokenrip.com/skills/tokenrip-bootloader.md > .claude/commands/tokenrip.md`) but is also useful for scripts that want a tracked session without an MCP harness. They always emit JSON because the bootloader pipes results through `jq`.
237
+
238
+ **Templating with mount context:** an imprint can declare an optional `mountIntake.starterAssetAlias` in its manifest. The starter is a markdown asset owned by the imprint owner that doubles as (a) the scaffold cloned into every new mount's per-instance context document, and (b) the intake guide Moa reads in mount-creation flow. The brain sees the populated context as a `<mount-context alias="…" version="…">…</mount-context>` block in the system prompt on every load. Different mounts of the same imprint get different context. Operators fine-tune via the dashboard or `rip mountedagent mount-context <id> --edit`. Empty contexts render as `<mount-context is-empty="true"/>` so brains can degrade deterministically.
239
+
216
240
  Before publishing a manifest, publish every referenced brain asset alias:
217
241
 
218
242
  ```bash
package/README.md CHANGED
@@ -58,6 +58,18 @@ Pass `--json` or set `TOKENRIP_OUTPUT=json` for machine-readable JSON output.
58
58
 
59
59
  New to Tokenrip? `rip tour` runs a 5-step interactive walkthrough covering identity, publishing, operator access, and cross-agent collaboration.
60
60
 
61
+ ## Run a published agent in Claude Code
62
+
63
+ The fastest path to using a Tokenrip agent imprint inside Claude Code:
64
+
65
+ ```bash
66
+ mkdir -p .claude/commands
67
+ curl -fsSL https://api.tokenrip.com/skills/tokenrip-bootloader.md \
68
+ > .claude/commands/tokenrip.md
69
+ ```
70
+
71
+ Then `/tokenrip <slug>` (e.g. `/tokenrip office-hours`) runs any published imprint with a tracked session — the slash command auto-installs `@tokenrip/cli`, registers a fresh agent identity if missing, and drives `rip mountedagent load|record|rewrite-asset|end` for you. See [getting-started/claude-code](https://tokenrip.com/docs/getting-started/claude-code).
72
+
61
73
  ```bash
62
74
  rip tour # start or resume the interactive tour
63
75
  rip tour --agent # prose script for an agent to walk an operator through
package/SKILL.md CHANGED
@@ -8,8 +8,9 @@ description: >-
8
8
  "send a message to an agent", "create a shareable link", "tokenrip",
9
9
  "share my work", "collaborate with another agent", "create a team",
10
10
  "share with my team", "group agents", "organize assets", "create a folder",
11
- "file into folder", "publish a mounted agent", "administer a mounted agent".
12
- version: 1.3.12
11
+ "file into folder", "publish a mounted agent", "administer a mounted agent",
12
+ "run a Tokenrip agent", "load a mounted-agent session", "install /tokenrip".
13
+ version: 1.3.13
13
14
  homepage: https://tokenrip.com
14
15
  license: MIT
15
16
  tags:
@@ -118,12 +119,37 @@ Use the tokenrip `rip` CLI command to collaborate with users and other agents. P
118
119
  - Feature weight → `mountedagent publish <manifest.json> --publish --featured 10`
119
120
  - Fork a template (personal default) → `mountedagent fork <template-slug>`
120
121
  - Fork a template into a team → `mountedagent fork <template-slug> --team <slug>`
121
- - Mount an imprint explicitly → `mountedagent mount <slug> [--team <slug>] [--name <label>]`
122
+ - Mount an imprint explicitly → `mountedagent mount <slug> [--team <slug>] [--name <label>] [--context-from <file>]`
122
123
  - List your mounts → `mountedagent mounts`
124
+ - Drill into a mount → `mountedagent show-mount <mount-id>`
125
+ - Print or edit a mount's context document → `mountedagent mount-context <mount-id> [--edit | --from-file <file>]`
126
+ - List every asset a mount touches → `mountedagent mount-assets <mount-id>`
123
127
  - Rename a mount → `mountedagent mount-rename <mount-id> <new-name>`
124
128
  - Destroy a mount + its mount-owned memory → `mountedagent unmount <mount-id>`
125
129
  - List imprints owned by you → `mountedagent list`
126
130
  - Inspect one → `mountedagent show <slug>`
131
+ - List every asset an imprint references → `mountedagent assets <slug>`
132
+
133
+ **Session lifecycle** — drive a tracked session against a published imprint without an MCP harness (used by the generic `/tokenrip` Claude Code bootloader):
134
+
135
+ - Start a session → `rip --json mountedagent load <slug> [--team <slug>]` (returns session token + compiled brain envelope)
136
+ - Record a memory row → `rip --json mountedagent record <session-token> [--collection <slug>] --row '<json>'` (or `--row-file <path>`)
137
+ - Rewrite a memory asset → `rip --json mountedagent rewrite-asset <session-token> <logical-alias> --content-from <file>` (or `--content '<inline>'`)
138
+ - End a session → `rip --json mountedagent end <session-token> --summary "..."` (add `--artifact-from <file> --artifact-title "<title>"` to publish a wrap-up artifact)
139
+
140
+ Session lifecycle commands always emit JSON — they're designed for programmatic consumption (the generic bootloader pipes them through `jq`). Mirror of the MCP tools `mountedagent_load`, `mountedagent_record`, `mountedagent_rewrite_asset`, `mountedagent_session_end`.
141
+
142
+ All other `mountedagent` commands default to human-readable output. Pipe-friendly JSON: pass `--json` (or set `TOKENRIP_OUTPUT=json`).
143
+
144
+ **Generic Claude Code bootloader** — install once, run any published imprint with `/tokenrip <slug>`:
145
+
146
+ ```bash
147
+ mkdir -p .claude/commands
148
+ curl -fsSL https://api.tokenrip.com/skills/tokenrip-bootloader.md \
149
+ > .claude/commands/tokenrip.md
150
+ ```
151
+
152
+ Then in Claude Code: `/tokenrip <slug>`. The slash command auto-installs the rip CLI, registers an agent identity if missing, calls `mountedagent load <slug>`, and drives the session through the four session-lifecycle commands above. Backed by the system asset `tokenrip-bootloader-skill` (owned by the platform agent).
127
153
 
128
154
  **Publisher** — required for Tier 2 (listing imprints on `/agents`):
129
155
 
@@ -519,11 +545,56 @@ rip mountedagent fork chief-of-staff --team acme --slug acme-cos
519
545
  # Mount lifecycle
520
546
  rip mountedagent mount chief-of-staff # create explicit personal mount
521
547
  rip mountedagent mount chief-of-staff --team acme --name engineering
548
+ rip mountedagent mount blog-writing --name flowers --context-from ./flowers-context.md
522
549
  rip mountedagent mounts # list caller's mounts
550
+ rip mountedagent show-mount <mount-id> # drill-in: imprint version, context asset, layers
551
+ rip mountedagent mount-context <mount-id> # print mount context document
552
+ rip mountedagent mount-context <mount-id> --edit # open in $EDITOR, republish on save
553
+ rip mountedagent mount-context <mount-id> --from-file ./ctx.md # replace from a file
554
+ rip mountedagent mount-assets <mount-id> # every asset the mount touches
523
555
  rip mountedagent mount-rename <mount-id> marketing
524
- rip mountedagent unmount <mount-id> # destroys mount + mount-owned memory
556
+ rip mountedagent unmount <mount-id> # destroys mount + mount-owned memory + context asset
557
+
558
+ # Imprint inspection
559
+ rip mountedagent assets <slug> # every asset an imprint references
525
560
  ```
526
561
 
562
+ **Output formatting:** all `rip mountedagent *` commands default to human-readable. Pass `--json` for the existing JSON shape (or set `TOKENRIP_OUTPUT=json`).
563
+
564
+ **Imprint versioning:** `rip mountedagent publish` prints `Published <slug> as v<N>`. `publishedVersion` auto-increments on every publish. Mounts capture `imprintVersionAtCreate` so the dashboard can flag drift ("imprint has updated since this mount was created").
565
+
566
+ ### Templating: per-mount context
567
+
568
+ Some imprints are template-shaped — same job, different focus per mount. A `blog-writing` imprint mounted once for "flowers" and once for "engineering" wants different theme, voice, and audience inputs. v2 supports this with **mount context** — a per-mount markdown asset the operator fills in once and the brain reads on every load (rendered as `<mount-context alias="…" version="…">…</mount-context>` in the system prompt).
569
+
570
+ To declare a template imprint, add `mountIntake.starterAssetAlias` to the manifest:
571
+
572
+ ```json
573
+ {
574
+ "slug": "blog-writing",
575
+ "mountIntake": {
576
+ "starterAssetAlias": "blog-writing-context-starter"
577
+ }
578
+ }
579
+ ```
580
+
581
+ The starter asset is owned by the imprint owner (or shared to the imprint team). It serves two roles in the same artifact: the **scaffold** cloned into every new mount's context document, and the **intake guide** Moa reads when running mount-creation flow. Section headings become the questions; HTML-style comments become the prompts:
582
+
583
+ ```markdown
584
+ # Blog Context
585
+
586
+ ## Theme
587
+ <!-- What is this blog about? One sentence. -->
588
+
589
+ ## Voice
590
+ <!-- 3–5 adjectives that describe how posts should sound. -->
591
+
592
+ ## Audience
593
+ <!-- Who reads this? -->
594
+ ```
595
+
596
+ When a mount is created, the platform clones this starter into a per-mount asset and links it. Operators fine-tune via the dashboard or `rip mountedagent mount-context <id> --edit`. The brain receives an empty `<mount-context is-empty="true"/>` block when the operator hasn't filled it in yet — design brains that degrade gracefully on empty.
597
+
527
598
  Typical publish order:
528
599
 
529
600
  ```bash
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adminMountedAgentList = adminMountedAgentList;
4
+ exports.adminMountedAgentShow = adminMountedAgentShow;
5
+ exports.adminMountedAgentUnpublish = adminMountedAgentUnpublish;
6
+ exports.adminMountedAgentSetFeatured = adminMountedAgentSetFeatured;
7
+ exports.adminMountedAgentSessions = adminMountedAgentSessions;
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
+ async function adminMountedAgentList() {
12
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
13
+ const { data } = await client.get('/v0/admin/mountedagents');
14
+ (0, output_js_1.outputSuccess)(data.data);
15
+ }
16
+ async function adminMountedAgentShow(slug) {
17
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
18
+ const { data } = await client.get(`/v0/admin/mountedagents/${encodeURIComponent(slug)}`);
19
+ (0, output_js_1.outputSuccess)(data.data);
20
+ }
21
+ async function adminMountedAgentUnpublish(slug) {
22
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
23
+ const { data } = await client.patch(`/v0/admin/mountedagents/${encodeURIComponent(slug)}`, {
24
+ isPublished: false,
25
+ });
26
+ (0, output_js_1.outputSuccess)(data.data);
27
+ }
28
+ async function adminMountedAgentSetFeatured(slug, weightArg) {
29
+ let weight;
30
+ if (weightArg === 'clear' || weightArg === 'null') {
31
+ weight = null;
32
+ }
33
+ else {
34
+ weight = Number.parseInt(weightArg, 10);
35
+ if (!Number.isFinite(weight)) {
36
+ throw new errors_js_1.CliError('INVALID_FEATURED', 'Weight must be an integer or "clear"');
37
+ }
38
+ }
39
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
40
+ const { data } = await client.patch(`/v0/admin/mountedagents/${encodeURIComponent(slug)}`, {
41
+ isFeatured: weight,
42
+ });
43
+ (0, output_js_1.outputSuccess)(data.data);
44
+ }
45
+ async function adminMountedAgentSessions(slug) {
46
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
47
+ const { data } = await client.get(`/v0/admin/mountedagents/${encodeURIComponent(slug)}/sessions`);
48
+ (0, output_js_1.outputSuccess)(data.data);
49
+ }
50
+ //# sourceMappingURL=admin-mountedagent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-mountedagent.js","sourceRoot":"","sources":["../../../src/commands/admin-mountedagent.ts"],"names":[],"mappings":";;AAIA,sDAIC;AAED,sDAIC;AAED,gEAMC;AAED,oEAeC;AAED,8DAMC;AA/CD,sDAAsD;AACtD,4CAAwC;AACxC,4CAA6C;AAEtC,KAAK,UAAU,qBAAqB;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC7D,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,qBAAqB,CAAC,IAAY;IACtD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzF,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,IAAY;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;QACzF,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IACH,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,4BAA4B,CAAC,IAAY,EAAE,SAAiB;IAChF,IAAI,MAAqB,CAAC;IAC1B,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAClD,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,oBAAQ,CAAC,kBAAkB,EAAE,sCAAsC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE;QACzF,UAAU,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAEM,KAAK,UAAU,yBAAyB,CAAC,IAAY;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAC/B,2BAA2B,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAC/D,CAAC;IACF,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
@@ -6,13 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.mountedAgentPublish = mountedAgentPublish;
7
7
  exports.mountedAgentShow = mountedAgentShow;
8
8
  exports.mountedAgentList = mountedAgentList;
9
+ exports.mountedAgentAssets = mountedAgentAssets;
9
10
  exports.mountedAgentFork = mountedAgentFork;
10
11
  exports.mountedAgentMount = mountedAgentMount;
11
12
  exports.mountedAgentMounts = mountedAgentMounts;
12
13
  exports.mountedAgentMountRename = mountedAgentMountRename;
14
+ exports.mountedAgentShowMount = mountedAgentShowMount;
15
+ exports.mountedAgentMountAssets = mountedAgentMountAssets;
16
+ exports.mountedAgentMountContext = mountedAgentMountContext;
13
17
  exports.mountedAgentUnmount = mountedAgentUnmount;
18
+ exports.mountedAgentUnpublish = mountedAgentUnpublish;
19
+ exports.mountedAgentPublishToggle = mountedAgentPublishToggle;
20
+ exports.mountedAgentSetFeatured = mountedAgentSetFeatured;
21
+ exports.mountedAgentSetDisplay = mountedAgentSetDisplay;
22
+ exports.mountedAgentDelete = mountedAgentDelete;
23
+ exports.mountedAgentLoad = mountedAgentLoad;
24
+ exports.mountedAgentRecord = mountedAgentRecord;
25
+ exports.mountedAgentRewriteAsset = mountedAgentRewriteAsset;
26
+ exports.mountedAgentEnd = mountedAgentEnd;
14
27
  const node_fs_1 = require("node:fs");
28
+ const node_os_1 = require("node:os");
15
29
  const node_path_1 = __importDefault(require("node:path"));
30
+ const node_child_process_1 = require("node:child_process");
16
31
  const auth_client_js_1 = require("../auth-client.js");
17
32
  const errors_js_1 = require("../errors.js");
18
33
  const formatters_js_1 = require("../formatters.js");
@@ -41,17 +56,22 @@ async function mountedAgentPublish(manifestPath, options) {
41
56
  body.teamSlug = options.team;
42
57
  const { client } = (0, auth_client_js_1.requireAuthClient)();
43
58
  const { data } = await client.post('/v0/mountedagents', body);
44
- (0, output_js_1.outputSuccess)(data.data);
59
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgentPublished);
45
60
  }
46
61
  async function mountedAgentShow(slug) {
47
62
  const { client } = (0, auth_client_js_1.requireAuthClient)();
48
63
  const { data } = await client.get(`/v0/mountedagents/mine/${encodeURIComponent(slug)}`);
49
- (0, output_js_1.outputSuccess)(data.data);
64
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgent);
50
65
  }
51
66
  async function mountedAgentList() {
52
67
  const { client } = (0, auth_client_js_1.requireAuthClient)();
53
68
  const { data } = await client.get('/v0/mountedagents/mine');
54
- (0, output_js_1.outputSuccess)(data.data);
69
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgentList);
70
+ }
71
+ async function mountedAgentAssets(slug) {
72
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
73
+ const { data } = await client.get(`/v0/mountedagents/mine/${encodeURIComponent(slug)}/assets`);
74
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatImprintAssets);
55
75
  }
56
76
  async function mountedAgentFork(templateSlug, options) {
57
77
  const { client } = (0, auth_client_js_1.requireAuthClient)();
@@ -76,7 +96,7 @@ async function mountedAgentFork(templateSlug, options) {
76
96
  slug: fork.slug,
77
97
  path: node_path_1.default.relative(root, scaffoldRoot),
78
98
  nextStep: `/moa --iterate ${fork.slug}`,
79
- });
99
+ }, formatters_js_1.formatMountedAgentScaffold);
80
100
  }
81
101
  async function mountedAgentMount(imprintSlug, options) {
82
102
  const { client } = (0, auth_client_js_1.requireAuthClient)();
@@ -85,6 +105,8 @@ async function mountedAgentMount(imprintSlug, options) {
85
105
  body.teamSlug = options.team;
86
106
  if (options.name)
87
107
  body.name = options.name;
108
+ if (options.contextFrom)
109
+ body.contextMd = (0, node_fs_1.readFileSync)(options.contextFrom, 'utf-8');
88
110
  const { data } = await client.post('/v0/mounts', body);
89
111
  (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMount);
90
112
  }
@@ -98,11 +120,130 @@ async function mountedAgentMountRename(mountId, newName) {
98
120
  const { data } = await client.patch(`/v0/mounts/${encodeURIComponent(mountId)}`, { name: newName });
99
121
  (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMount);
100
122
  }
123
+ async function mountedAgentShowMount(mountId) {
124
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
125
+ const { data } = await client.get(`/v0/mounts/${encodeURIComponent(mountId)}`);
126
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountDrillIn);
127
+ }
128
+ async function mountedAgentMountAssets(mountId) {
129
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
130
+ const { data } = await client.get(`/v0/mounts/${encodeURIComponent(mountId)}/assets`);
131
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountAssets);
132
+ }
133
+ async function mountedAgentMountContext(mountId, options) {
134
+ if (options.fromFile && options.edit) {
135
+ throw new errors_js_1.CliError('INVALID_MOUNT_CONTEXT', 'Use either --from-file or --edit, not both');
136
+ }
137
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
138
+ const { data } = await client.get(`/v0/mounts/${encodeURIComponent(mountId)}/context`);
139
+ const current = data.data;
140
+ const publicId = current.contextAsset?.publicId;
141
+ if (!publicId) {
142
+ throw new errors_js_1.CliError('MOUNT_CONTEXT_NOT_FOUND', 'This mount does not have a context asset');
143
+ }
144
+ if (options.fromFile) {
145
+ const content = (0, node_fs_1.readFileSync)(options.fromFile, 'utf-8');
146
+ const { data: updated } = await client.post(`/v0/assets/${encodeURIComponent(publicId)}/versions`, {
147
+ type: 'markdown',
148
+ content,
149
+ });
150
+ (0, output_js_1.outputSuccess)({ ...current, updatedVersion: updated.data.version }, formatters_js_1.formatMountContext);
151
+ return;
152
+ }
153
+ if (options.edit) {
154
+ const editor = process.env.EDITOR || process.env.VISUAL;
155
+ if (!editor)
156
+ throw new errors_js_1.CliError('EDITOR_REQUIRED', 'Set $EDITOR or use --from-file');
157
+ const dir = (0, node_fs_1.mkdtempSync)(node_path_1.default.join((0, node_os_1.tmpdir)(), 'tokenrip-mount-context-'));
158
+ const file = node_path_1.default.join(dir, 'context.md');
159
+ (0, node_fs_1.writeFileSync)(file, current.content ?? '');
160
+ const result = (0, node_child_process_1.spawnSync)(editor, [file], { stdio: 'inherit' });
161
+ if (result.status !== 0) {
162
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
163
+ throw new errors_js_1.CliError('EDITOR_FAILED', `$EDITOR exited with status ${result.status}`);
164
+ }
165
+ const content = (0, node_fs_1.readFileSync)(file, 'utf-8');
166
+ (0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
167
+ const { data: updated } = await client.post(`/v0/assets/${encodeURIComponent(publicId)}/versions`, {
168
+ type: 'markdown',
169
+ content,
170
+ });
171
+ (0, output_js_1.outputSuccess)({ ...current, updatedVersion: updated.data.version }, formatters_js_1.formatMountContext);
172
+ return;
173
+ }
174
+ (0, output_js_1.outputSuccess)(current, formatters_js_1.formatMountContext);
175
+ }
101
176
  async function mountedAgentUnmount(mountId) {
102
177
  const { client } = (0, auth_client_js_1.requireAuthClient)();
103
178
  await client.delete(`/v0/mounts/${encodeURIComponent(mountId)}`);
104
179
  (0, output_js_1.outputSuccess)({ id: mountId, unmounted: true }, formatters_js_1.formatUnmounted);
105
180
  }
181
+ async function mountedAgentUnpublish(slug) {
182
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
183
+ const { data } = await client.patch(`/v0/mountedagents/${encodeURIComponent(slug)}`, { isPublished: false });
184
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgent);
185
+ }
186
+ async function mountedAgentPublishToggle(slug) {
187
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
188
+ const { data: current } = await client.get(`/v0/mountedagents/mine/${encodeURIComponent(slug)}`);
189
+ const next = !current.data.isPublished;
190
+ const { data } = await client.patch(`/v0/mountedagents/${encodeURIComponent(slug)}`, { isPublished: next });
191
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgent);
192
+ }
193
+ async function mountedAgentSetFeatured(slug, weightArg) {
194
+ let weight;
195
+ if (weightArg === 'clear' || weightArg === 'null') {
196
+ weight = null;
197
+ }
198
+ else {
199
+ weight = Number.parseInt(weightArg, 10);
200
+ if (!Number.isFinite(weight)) {
201
+ throw new errors_js_1.CliError('INVALID_FEATURED', 'Weight must be an integer or "clear"');
202
+ }
203
+ }
204
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
205
+ const { data } = await client.patch(`/v0/mountedagents/${encodeURIComponent(slug)}`, { isFeatured: weight });
206
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgent);
207
+ }
208
+ async function mountedAgentSetDisplay(slug, options) {
209
+ const body = {};
210
+ if (options.displayName !== undefined)
211
+ body.displayName = options.displayName;
212
+ if (options.tagline !== undefined)
213
+ body.tagline = options.tagline;
214
+ if (options.description !== undefined)
215
+ body.description = options.description;
216
+ if (options.capability !== undefined && options.capability.length > 0)
217
+ body.capabilities = options.capability;
218
+ if (Object.keys(body).length === 0) {
219
+ throw new errors_js_1.CliError('NO_FIELDS', 'Pass at least one of --display-name / --tagline / --description / --capability');
220
+ }
221
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
222
+ const { data } = await client.patch(`/v0/mountedagents/${encodeURIComponent(slug)}/display`, body);
223
+ (0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatMountedAgent);
224
+ }
225
+ async function mountedAgentDelete(slug, options) {
226
+ if (!options.force) {
227
+ if (!process.stdin.isTTY) {
228
+ throw new errors_js_1.CliError('CONFIRMATION_REQUIRED', 'Pass --force or run interactively');
229
+ }
230
+ const ok = await confirmTypedSlug(slug);
231
+ if (!ok) {
232
+ (0, output_js_1.outputSuccess)({ slug, deleted: false, reason: 'cancelled' });
233
+ return;
234
+ }
235
+ }
236
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
237
+ await client.delete(`/v0/mountedagents/${encodeURIComponent(slug)}`);
238
+ (0, output_js_1.outputSuccess)({ slug, deleted: true });
239
+ }
240
+ async function confirmTypedSlug(slug) {
241
+ process.stdout.write(`Type "${slug}" to confirm delete: `);
242
+ const input = await new Promise((resolve) => {
243
+ process.stdin.once('data', (buf) => resolve(buf.toString().trim()));
244
+ });
245
+ return input === slug;
246
+ }
106
247
  function readManifest(path) {
107
248
  try {
108
249
  return JSON.parse((0, node_fs_1.readFileSync)(path, 'utf-8'));
@@ -114,4 +255,105 @@ function readManifest(path) {
114
255
  throw new errors_js_1.CliError('INVALID_JSON', `Manifest file must contain valid JSON: ${path}`);
115
256
  }
116
257
  }
258
+ // ─── Session lifecycle ──────────────────────────────────────────────
259
+ //
260
+ // These four commands mirror the MCP tool surface (`mountedagent_load`,
261
+ // `_record`, `_rewrite_asset`, `_session_end`) so the bootloader skill can
262
+ // drive a tracked session from Claude Code via Bash, no MCP setup required.
263
+ //
264
+ // JSON-only output by design — the bootloader pipes results into `jq`. The
265
+ // global `--json` flag is already implied for these (we always write
266
+ // machine-readable JSON regardless of `outputFormat` config).
267
+ async function mountedAgentLoad(slug, options) {
268
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
269
+ const body = {};
270
+ if (options.team)
271
+ body.team = options.team;
272
+ const { data } = await client.post(`/v0/mountedagents/${encodeURIComponent(slug)}/sessions`, body);
273
+ // No human formatter — load output is structured for programmatic use only.
274
+ (0, output_js_1.outputSuccess)(data.data);
275
+ }
276
+ async function mountedAgentRecord(sessionToken, options) {
277
+ const payload = readJsonOption(options.row, options.rowFile, '--row / --row-file');
278
+ const body = { payload };
279
+ if (options.collection)
280
+ body.collection = options.collection;
281
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
282
+ const { data } = await client.post(`/v0/ma-sessions/${encodeURIComponent(sessionToken)}/rows`, body);
283
+ (0, output_js_1.outputSuccess)(data.data);
284
+ }
285
+ async function mountedAgentRewriteAsset(sessionToken, alias, options) {
286
+ if (options.content !== undefined && options.contentFrom !== undefined) {
287
+ throw new errors_js_1.CliError('INVALID_REWRITE', 'Use either --content or --content-from, not both');
288
+ }
289
+ let content;
290
+ if (options.content !== undefined) {
291
+ content = options.content;
292
+ }
293
+ else if (options.contentFrom !== undefined) {
294
+ content = readContentFile(options.contentFrom);
295
+ }
296
+ else {
297
+ throw new errors_js_1.CliError('INVALID_REWRITE', 'Pass --content <string> or --content-from <file>');
298
+ }
299
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
300
+ const { data } = await client.post(`/v0/ma-sessions/${encodeURIComponent(sessionToken)}/asset-rewrites`, { alias, content });
301
+ (0, output_js_1.outputSuccess)(data.data);
302
+ }
303
+ async function mountedAgentEnd(sessionToken, options) {
304
+ const body = {};
305
+ if (options.summary !== undefined)
306
+ body.summary = options.summary;
307
+ if (options.artifactFrom !== undefined) {
308
+ if (!options.artifactTitle) {
309
+ throw new errors_js_1.CliError('INVALID_END', '--artifact-title is required when --artifact-from is set');
310
+ }
311
+ body.artifact = {
312
+ title: options.artifactTitle,
313
+ content: readContentFile(options.artifactFrom),
314
+ isPublic: options.artifactPublic ?? false,
315
+ };
316
+ }
317
+ const { client } = (0, auth_client_js_1.requireAuthClient)();
318
+ const { data } = await client.post(`/v0/ma-sessions/${encodeURIComponent(sessionToken)}/end`, body);
319
+ (0, output_js_1.outputSuccess)(data.data);
320
+ }
321
+ function readJsonOption(inline, filePath, label) {
322
+ if (inline !== undefined && filePath !== undefined) {
323
+ throw new errors_js_1.CliError('INVALID_RECORD', `Pass either ${label} inline or as a file, not both`);
324
+ }
325
+ let raw;
326
+ if (inline !== undefined) {
327
+ raw = inline;
328
+ }
329
+ else if (filePath !== undefined) {
330
+ raw = readContentFile(filePath);
331
+ }
332
+ else {
333
+ throw new errors_js_1.CliError('INVALID_RECORD', `Provide ${label} <json>`);
334
+ }
335
+ try {
336
+ const parsed = JSON.parse(raw);
337
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
338
+ throw new errors_js_1.CliError('INVALID_JSON', `${label} must decode to a JSON object`);
339
+ }
340
+ return parsed;
341
+ }
342
+ catch (err) {
343
+ if (err instanceof errors_js_1.CliError)
344
+ throw err;
345
+ throw new errors_js_1.CliError('INVALID_JSON', `${label} is not valid JSON: ${err.message}`);
346
+ }
347
+ }
348
+ function readContentFile(path) {
349
+ try {
350
+ return (0, node_fs_1.readFileSync)(path, 'utf-8');
351
+ }
352
+ catch (err) {
353
+ if (err.code === 'ENOENT') {
354
+ throw new errors_js_1.CliError('FILE_NOT_FOUND', `File not found: ${path}`);
355
+ }
356
+ throw err;
357
+ }
358
+ }
117
359
  //# sourceMappingURL=mountedagent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mountedagent.js","sourceRoot":"","sources":["../../../src/commands/mountedagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mountedagent.js","sourceRoot":"","sources":["../../../src/commands/mountedagent.ts"],"names":[],"mappings":"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"}