@rolino/cli 0.5.0-beta.0 → 0.6.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.
- package/CHANGELOG.md +60 -0
- package/README.md +107 -38
- package/dist/bin.cjs +345 -237
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +1 -1
- package/dist/{chunk-TFNGSKT3.js → chunk-3WBZCTM5.js} +331 -222
- package/dist/chunk-3WBZCTM5.js.map +1 -0
- package/dist/index.cjs +345 -237
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +5 -5
- package/dist/chunk-TFNGSKT3.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
# @rolino/cli
|
|
2
2
|
|
|
3
|
+
## 0.6.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d162f85: Add safe Blog editorial cadence preview and apply operations across contracts, SDK, CLI, and MCP.
|
|
8
|
+
- 50cb9fc: Add Google Business Profile as a disabled-by-default standard text and single-image publishing destination across shared public clients.
|
|
9
|
+
- 1ac7ed5: Add signed custom Blog webhook setup, connection testing, one-time secret rotation, and safe idempotent replay parity.
|
|
10
|
+
- a56f834: Replace custom interactive CLI authorization with exact-resource OAuth, add the stateless MCP 2026-07-28 transport foundation, and provide safe connection instructions for workspace discovery and confirmed actions.
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies [d162f85]
|
|
15
|
+
- Updated dependencies [50cb9fc]
|
|
16
|
+
- Updated dependencies [1ac7ed5]
|
|
17
|
+
- Updated dependencies [a56f834]
|
|
18
|
+
- @rolino/contracts@0.6.0
|
|
19
|
+
- @rolino/sdk@0.6.0
|
|
20
|
+
- @rolino/local-auth@0.6.0
|
|
21
|
+
|
|
22
|
+
## 0.5.0
|
|
23
|
+
|
|
24
|
+
### Minor Changes
|
|
25
|
+
|
|
26
|
+
- 4f9e790: Add the optional `blog:manage` capability and synchronized agent-first Blog
|
|
27
|
+
setup, import, cadence planning, plan review, article creation, confirmed
|
|
28
|
+
connection provisioning, and safe verification operations.
|
|
29
|
+
- 1edd1e7: Add published Blog Studio delivery contracts and the server-only Next.js 16 Blog Studio package.
|
|
30
|
+
- 74a13ea: Expose immediate versus scheduled delivery and destination lifecycle stages,
|
|
31
|
+
preserve YouTube visibility for immediate publishing, and clarify remote
|
|
32
|
+
schedule confirmation across public clients.
|
|
33
|
+
- 4af607d: Add independent exact-bundle Blog approval, reviewed image upload and generation,
|
|
34
|
+
confirmed publication scheduling and cancellation, and the complete authorized
|
|
35
|
+
agent workflow without widening existing credentials.
|
|
36
|
+
- 4a893dd: Add provider-neutral Blog publishing destinations, safe delivery inspection,
|
|
37
|
+
and exact destination binding across public agent interfaces.
|
|
38
|
+
- 843a1db: Add the exact optional `seo:read` capability and bounded read-only SEO
|
|
39
|
+
opportunity and weekly-report parity across public agent contracts, clients,
|
|
40
|
+
CLI commands, and closed-world MCP tools. SEO reads now use the version 3 task
|
|
41
|
+
contract with the exact Ready, Research, or Rejected decision, selected format,
|
|
42
|
+
complete deliverables, bounded evidence, safe URLs, limitations, and no-publish
|
|
43
|
+
rules. Public output uses readable topic names and separate topic-relevance and
|
|
44
|
+
action-readiness confidence. Research tasks compare all supported formats and
|
|
45
|
+
must validate or reject the finding before a separate draft action is allowed.
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- Updated dependencies [4f9e790]
|
|
50
|
+
- Updated dependencies [1edd1e7]
|
|
51
|
+
- Updated dependencies [74a13ea]
|
|
52
|
+
- Updated dependencies [4af607d]
|
|
53
|
+
- Updated dependencies [4a893dd]
|
|
54
|
+
- Updated dependencies [843a1db]
|
|
55
|
+
- @rolino/contracts@0.5.0
|
|
56
|
+
- @rolino/sdk@0.5.0
|
|
57
|
+
- @rolino/local-auth@0.5.0
|
|
58
|
+
|
|
3
59
|
## 0.5.0-beta.0
|
|
4
60
|
|
|
5
61
|
### Minor Changes
|
|
@@ -37,6 +93,10 @@
|
|
|
37
93
|
|
|
38
94
|
### Minor Changes
|
|
39
95
|
|
|
96
|
+
- Add Blog image generation, exact local-file upload, image review, confirmed
|
|
97
|
+
exact-bundle approval, future scheduling, and schedule cancellation commands
|
|
98
|
+
with deterministic agent output, stable idempotency, safe errors, and
|
|
99
|
+
independent `blog:write`, `blog:approve`, and `blog:publish` boundaries.
|
|
40
100
|
- Add Blog destination discovery, delivery inspection, and exact destination selection for publication commands.
|
|
41
101
|
|
|
42
102
|
## 0.4.0
|
package/README.md
CHANGED
|
@@ -39,30 +39,41 @@ rolino projects list [--limit 50] [--cursor ID]
|
|
|
39
39
|
rolino projects show PROJECT_ID
|
|
40
40
|
rolino media list --project PROJECT_ID [--type IMAGE|VIDEO] [--query TEXT] [--limit 50] [--cursor ID]
|
|
41
41
|
rolino media upload FILE_PATH --project PROJECT_ID --yes
|
|
42
|
-
rolino posts create --project PROJECT_ID --caption TEXT [--platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN] [--media ASSET_ID] --yes
|
|
43
|
-
rolino posts update POST_ID --project PROJECT_ID --expected-version VERSION [--caption TEXT] [--platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN] [--media ASSET_ID] [--clear-platforms] [--clear-media] --yes
|
|
42
|
+
rolino posts create --project PROJECT_ID --caption TEXT [--platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN|GOOGLE_BUSINESS_PROFILE] [--media ASSET_ID] --yes
|
|
43
|
+
rolino posts update POST_ID --project PROJECT_ID --expected-version VERSION [--caption TEXT] [--platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN|GOOGLE_BUSINESS_PROFILE] [--media ASSET_ID] [--clear-platforms] [--clear-media] --yes
|
|
44
44
|
rolino posts list --project PROJECT_ID [--limit 50] [--cursor ID] [--status STATUS]
|
|
45
45
|
rolino posts show POST_ID --project PROJECT_ID
|
|
46
46
|
rolino posts readiness POST_ID --project PROJECT_ID
|
|
47
47
|
rolino posts schedule preview POST_ID --project PROJECT_ID --expected-version VERSION --at ISO_DATE --timezone IANA_TIMEZONE
|
|
48
48
|
rolino posts schedule execute POST_ID --project PROJECT_ID --expected-version VERSION --at ISO_DATE --timezone IANA_TIMEZONE --confirmation-token TOKEN [--idempotency-key KEY]
|
|
49
|
-
rolino posts publish preview POST_ID --project PROJECT_ID --expected-version VERSION --platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN
|
|
50
|
-
rolino posts publish execute POST_ID --project PROJECT_ID --expected-version VERSION --platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN --confirmation-token TOKEN [--idempotency-key KEY]
|
|
49
|
+
rolino posts publish preview POST_ID --project PROJECT_ID --expected-version VERSION --platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN|GOOGLE_BUSINESS_PROFILE
|
|
50
|
+
rolino posts publish execute POST_ID --project PROJECT_ID --expected-version VERSION --platform INSTAGRAM|TIKTOK|YOUTUBE|BLUESKY|LINKEDIN|GOOGLE_BUSINESS_PROFILE --confirmation-token TOKEN [--idempotency-key KEY]
|
|
51
51
|
rolino integrations health --project PROJECT_ID
|
|
52
52
|
rolino integrations delivery-options --project PROJECT_ID --provider TIKTOK|LINKEDIN
|
|
53
53
|
rolino calendar list --project PROJECT_ID [--from ISO_DATE --to ISO_DATE] [--limit 50] [--cursor CURSOR]
|
|
54
54
|
rolino seo opportunities list --project PROJECT_ID [--limit 20] [--cursor CURSOR] [--kind KIND] [--impact HIGH|MEDIUM|LOW]
|
|
55
55
|
rolino seo opportunities show OPPORTUNITY_ID --project PROJECT_ID
|
|
56
|
-
rolino seo reports list --project PROJECT_ID [--limit 10] [--cursor CURSOR] [--status COMPLETE|PARTIAL]
|
|
57
|
-
rolino seo reports show REPORT_ID --project PROJECT_ID
|
|
58
|
-
rolino blog destinations providers --project PROJECT_ID
|
|
59
|
-
rolino blog destinations list --project PROJECT_ID
|
|
60
|
-
rolino blog destinations deliveries --project PROJECT_ID [--article ARTICLE_ID]
|
|
61
|
-
rolino
|
|
56
|
+
rolino seo reports list --project PROJECT_ID [--limit 10] [--cursor CURSOR] [--status COMPLETE|PARTIAL]
|
|
57
|
+
rolino seo reports show REPORT_ID --project PROJECT_ID
|
|
58
|
+
rolino blog destinations providers --project PROJECT_ID
|
|
59
|
+
rolino blog destinations list --project PROJECT_ID
|
|
60
|
+
rolino blog destinations deliveries --project PROJECT_ID [--article ARTICLE_ID]
|
|
61
|
+
rolino blog images generate ARTICLE_ID --project PROJECT_ID --revision REVISION_ID
|
|
62
|
+
rolino blog images upload ARTICLE_ID FILE --project PROJECT_ID --revision REVISION_ID --alt-text TEXT
|
|
63
|
+
rolino blog images review ARTICLE_ID IMAGE_ID --project PROJECT_ID --decision APPROVED|REJECTED --expected-version VERSION [--alt-text TEXT]
|
|
64
|
+
rolino blog approve preview ARTICLE_ID --project PROJECT_ID --revision REVISION_ID
|
|
65
|
+
rolino blog approve execute ARTICLE_ID --project PROJECT_ID --revision REVISION_ID --confirmation-token TOKEN --idempotency-key KEY --yes
|
|
66
|
+
rolino blog schedule preview ARTICLE_ID --project PROJECT_ID --revision REVISION_ID --at ISO --timezone IANA [--destination ID...]
|
|
67
|
+
rolino blog schedule execute ARTICLE_ID --project PROJECT_ID --revision REVISION_ID --at ISO --timezone IANA --confirmation-token TOKEN --idempotency-key KEY --yes
|
|
68
|
+
rolino blog schedule cancel preview ARTICLE_ID --project PROJECT_ID
|
|
69
|
+
rolino blog schedule cancel execute ARTICLE_ID --project PROJECT_ID --confirmation-token TOKEN --idempotency-key KEY --yes
|
|
70
|
+
rolino doctor
|
|
62
71
|
```
|
|
63
72
|
|
|
64
|
-
Interactive login
|
|
65
|
-
|
|
73
|
+
Interactive login uses standard OAuth Authorization Code with PKCE S256. It
|
|
74
|
+
opens the configured Rolino instance, requests the exact \`/api/v1\` resource,
|
|
75
|
+
uses the fixed \`http://127.0.0.1:48391/oauth/callback\` redirect, and obtains
|
|
76
|
+
explicit workspace approval.
|
|
66
77
|
The approval screen always includes identity and workspace reads and lets the
|
|
67
78
|
user independently opt into project creation, draft writing, confirmed
|
|
68
79
|
scheduling, confirmed immediate publishing, and read-only SEO Intelligence.
|
|
@@ -78,11 +89,13 @@ with evidence. It cannot create a final draft in the same action.
|
|
|
78
89
|
Optional permissions start off,
|
|
79
90
|
and existing credentials never gain a newly selected permission. Revoke and
|
|
80
91
|
reauthorize an existing connection to grant project creation or `seo:read`.
|
|
81
|
-
Existing
|
|
82
|
-
|
|
83
|
-
|
|
92
|
+
Existing grants never receive `seo:read` automatically. OAuth tokens never
|
|
93
|
+
pass through a browser URL. The CLI stores a short-lived access token and a
|
|
94
|
+
rotating refresh token by host, issuer, client, and resource in the
|
|
95
|
+
operating-system configuration directory. It does not read or migrate the old
|
|
96
|
+
interactive credential, so the first use after this cutover requires sign-in;
|
|
84
97
|
`ROLINO_CONFIG_DIR` overrides that location. `auth logout` revokes the calling
|
|
85
|
-
|
|
98
|
+
workspace grant and OAuth refresh token before deleting its local copy.
|
|
86
99
|
|
|
87
100
|
The terminal waits five minutes for browser approval. If that request expires,
|
|
88
101
|
close the old approval page and run `rolino auth login` again; refreshing the
|
|
@@ -172,6 +185,19 @@ execution remains in preparation until LinkedIn confirms upload and processing.
|
|
|
172
185
|
If final post creation has an unknown outcome, inspect that member's LinkedIn
|
|
173
186
|
feed before retrying.
|
|
174
187
|
|
|
188
|
+
Google Business Profile drafts can be text-only or include one stored JPEG or
|
|
189
|
+
PNG image with a stable public URL. Use `--google-business-profile-caption`
|
|
190
|
+
for a destination override of up to 1,500 characters:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
rolino posts create --project PROJECT_ID --caption "Store update" --platform GOOGLE_BUSINESS_PROFILE --google-business-profile-caption "Visit us to see what is new." --media IMAGE_ASSET_ID --yes
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Rolino owns the schedule and publishes only a standard update to the location
|
|
197
|
+
selected in Integrations. The CLI cannot select a location or enable the
|
|
198
|
+
provider. If a create result is unknown, inspect the selected Business Profile
|
|
199
|
+
before you try again.
|
|
200
|
+
|
|
175
201
|
Project creation also requires interactive confirmation or `--yes`. It
|
|
176
202
|
atomically saves a project and its paired brand, but does not start research,
|
|
177
203
|
connect accounts, schedule posts, or publish. A fresh CLI invocation generates
|
|
@@ -208,13 +234,16 @@ processing are incomplete. The preview identifies the delivery as `IMMEDIATE`,
|
|
|
208
234
|
shows the exact visibility, and confirms that no schedule will be created; only
|
|
209
235
|
provider-confirmed visibility becomes published.
|
|
210
236
|
|
|
211
|
-
The CLI cannot enable YouTube, Bluesky,
|
|
237
|
+
The CLI cannot enable YouTube, Bluesky, LinkedIn, or Google Business Profile,
|
|
238
|
+
or infer provider approval.
|
|
212
239
|
Those are server-side deployment controls. Self-hosted operators should
|
|
213
240
|
complete the
|
|
214
241
|
[YouTube operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/youtube.md)
|
|
215
242
|
and
|
|
216
|
-
[Bluesky operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/bluesky.md),
|
|
243
|
+
[Bluesky operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/bluesky.md),
|
|
217
244
|
[LinkedIn operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/linkedin.md)
|
|
245
|
+
and the
|
|
246
|
+
[Google Business Profile operations guide](https://github.com/deifos/rolino/blob/main/docs/integrations/google-business-profile.md)
|
|
218
247
|
before live testing.
|
|
219
248
|
|
|
220
249
|
Configuration is read from `ROLINO_URL`, `ROLINO_TOKEN`, `ROLINO_CONFIG_DIR`,
|
|
@@ -262,26 +291,66 @@ gain it automatically. Start every setup with:
|
|
|
262
291
|
rolino --agent blog setup status --project PROJECT_ID
|
|
263
292
|
```
|
|
264
293
|
|
|
265
|
-
The `blog site`, `blog plan`, `blog article`, `blog connection`, and
|
|
266
|
-
`blog destinations` command groups mirror the versioned API. Use these safe
|
|
267
|
-
publishing reads before setup or publication:
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
rolino --agent blog destinations providers --project PROJECT_ID
|
|
271
|
-
rolino --agent blog destinations list --project PROJECT_ID
|
|
272
|
-
rolino --agent blog destinations deliveries --project PROJECT_ID
|
|
273
|
-
rolino --agent blog destinations deliveries --project PROJECT_ID --article ARTICLE_ID
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
The provider catalog requires `blog:manage`. It returns only providers enabled
|
|
277
|
-
for the workspace, safe capabilities, and official documentation. Destination
|
|
278
|
-
and delivery-attempt reads require `blog:read`. They omit draft content,
|
|
279
|
-
prompts, evidence, secrets, and raw provider responses. A returned remote URL
|
|
280
|
-
is not proof that a queued or failed delivery is live.
|
|
281
|
-
|
|
282
|
-
Mutations require a stable idempotency key.
|
|
283
|
-
Connection provisioning also requires preview, explicit confirmation, and
|
|
284
|
-
execute. A first successful execute can return a delivery token or webhook
|
|
294
|
+
The `blog site`, `blog plan`, `blog article`, `blog connection`, and
|
|
295
|
+
`blog destinations` command groups mirror the versioned API. Use these safe
|
|
296
|
+
publishing reads before setup or publication:
|
|
297
|
+
|
|
298
|
+
```bash
|
|
299
|
+
rolino --agent blog destinations providers --project PROJECT_ID
|
|
300
|
+
rolino --agent blog destinations list --project PROJECT_ID
|
|
301
|
+
rolino --agent blog destinations deliveries --project PROJECT_ID
|
|
302
|
+
rolino --agent blog destinations deliveries --project PROJECT_ID --article ARTICLE_ID
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
The provider catalog requires `blog:manage`. It returns only providers enabled
|
|
306
|
+
for the workspace, safe capabilities, and official documentation. Destination
|
|
307
|
+
and delivery-attempt reads require `blog:read`. They omit draft content,
|
|
308
|
+
prompts, evidence, secrets, and raw provider responses. A returned remote URL
|
|
309
|
+
is not proof that a queued or failed delivery is live.
|
|
310
|
+
|
|
311
|
+
Mutations require a stable idempotency key.
|
|
312
|
+
Connection provisioning also requires preview, explicit confirmation, and
|
|
313
|
+
execute. A first successful execute can return a delivery token or webhook
|
|
285
314
|
secret once; save it only in server-side environment configuration. Replays
|
|
286
315
|
do not reveal it again. Blog publication remains the separate approved exact
|
|
287
316
|
revision preview/execute workflow.
|
|
317
|
+
|
|
318
|
+
Blog image commands require `blog:write`; they cannot approve an article or
|
|
319
|
+
publish it. Image upload reads only the path in the command, accepts JPEG, PNG,
|
|
320
|
+
or WebP, and keeps its signed upload URL and storage key private. Approving an
|
|
321
|
+
exact revision and image bundle requires the independent `blog:approve`
|
|
322
|
+
capability and cannot publish. Scheduling, rescheduling, or canceling a future
|
|
323
|
+
publication requires the independent `blog:publish` capability and does not
|
|
324
|
+
grant approval.
|
|
325
|
+
|
|
326
|
+
Active-plan editorial calendar commands also require `blog:write`:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
rolino --agent blog plan cadence preview --project PROJECT_ID --plan PLAN_ID --weekdays 1,3,5 --expected-plan-version VERSION
|
|
330
|
+
rolino --agent blog plan cadence apply --project PROJECT_ID --plan PLAN_ID --weekdays 1,3,5 --expected-plan-version VERSION --expected-schedule-digest DIGEST --confirmation-token TOKEN --idempotency-key KEY --yes
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Preview a cadence change first and show every date change and locked item. Apply only
|
|
334
|
+
the unchanged preview values. These commands do not change `scheduledPublishAt` and never schedule, publish,
|
|
335
|
+
or unpublish an article. Image generation already accepts optional direction
|
|
336
|
+
with `blog images generate --editorial-brief TEXT` (maximum 500 characters).
|
|
337
|
+
|
|
338
|
+
Approval, schedule, and cancellation execution bind the short-lived token from
|
|
339
|
+
the matching preview and a stable idempotency key. Human output requires
|
|
340
|
+
`--yes`. JSON mode does not prompt, but it still requires the confirmation
|
|
341
|
+
token and idempotency key. A safe replay uses the same exact input and key.
|
|
342
|
+
|
|
343
|
+
Use this order for complete Blog work:
|
|
344
|
+
|
|
345
|
+
1. Read setup status and current article or plan state.
|
|
346
|
+
2. Ask for any missing website, cadence, destination, and access level.
|
|
347
|
+
3. Import and plan through durable jobs, then poll instead of retrying blindly.
|
|
348
|
+
4. Present evidence before accepting a plan item unless the user already authorized that exact bounded action.
|
|
349
|
+
5. Create or update one immutable revision with catalog-backed links.
|
|
350
|
+
6. Generate or upload one approved image, review it, and verify alt text.
|
|
351
|
+
7. Without `blog:approve`, stop and ask the user to approve in Rolino.
|
|
352
|
+
8. With `blog:approve`, preview and execute the unchanged exact bundle with confirmation and a stable idempotency key.
|
|
353
|
+
9. Without `blog:publish`, stop after approval.
|
|
354
|
+
10. With `blog:publish`, preview and execute unchanged immediate publication or scheduling with a stable idempotency key.
|
|
355
|
+
11. Poll delivery attempts and verify the live remote URL; queued is not published.
|
|
356
|
+
12. After any content or image change, restart from approval preview.
|