@sprid/cli 0.1.2 → 0.1.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.
@@ -63,7 +63,7 @@ op('lemonsqueezy', 'subscription-invoices', 'Read initial, renewal and update in
63
63
  op('paddle', 'transactions', 'Read billed transactions by time, status, customer or subscription.', { ...dates, status: array(choice('Status.', ['draft', 'ready', 'billed', 'paid', 'completed', 'canceled', 'past_due']), 7), customer_id: id('Paddle customer ID.'), subscription_id: id('Paddle subscription ID.'), limit, cursor }, [], { start: '2026-08-01', end: '2026-09-01', status: ['completed'], limit: 100 });
64
64
  op('paddle', 'subscriptions', 'Read subscription lifecycles by status or price; optional creation dates filter each returned page locally.', { ...dates, status: array(choice('Status.', ['active', 'canceled', 'past_due', 'paused', 'trialing']), 5), customer_id: id('Paddle customer ID.'), price_id: id('Paddle price ID.'), limit, cursor }, [], { status: ['trialing'], limit: 100 });
65
65
  for (const source of Object.keys(QUERY_SOURCES).filter(s => QUERY_SOURCES[s].stored)) {
66
- op(source, 'posts', 'Filter stored publishing outcomes with the latest metric snapshot before the exclusive end.', { ...dates, status: choice('Publishing status.', ['published', 'failed', 'missed', 'scheduled', 'pending', 'rendering', 'publishing', 'awaiting_runner']), formatId: integer('Sprid format ID.', 1000000000), contentType: choice('Post type.', ['carousel', 'reel']), limit, offset: integer('Zero-based offset.', 100000, 0) }, ['start', 'end'], { start: '2026-08-01', end: '2026-09-01', status: 'published', limit: 100 });
66
+ op(source, 'posts', 'Filter stored publishing outcomes with the latest metric snapshot before the exclusive end.', { ...dates, status: choice('Publishing status.', ['published', 'failed', 'missed', 'scheduled', 'pending', 'rendering', 'publishing', 'awaiting_runner']), contentType: choice('Post type.', ['carousel', 'reel']), limit, offset: integer('Zero-based offset.', 100000, 0) }, ['start', 'end'], { start: '2026-08-01', end: '2026-09-01', status: 'published', limit: 100 });
67
67
  op(source, 'comments', 'Read feedback already collected into Sprid’s Inbox, with optional post and reply filters.', { ...dates, postId: integer('Sprid post ID.', 1000000000), replied: { type: 'boolean', description: 'Filter comments by reply state.' }, limit, offset: integer('Zero-based offset.', 100000, 0) }, ['start', 'end'], { start: '2026-08-01', end: '2026-09-01', replied: false, limit: 100 });
68
68
  }
69
69
 
package/src/post/cli.mjs CHANGED
@@ -179,7 +179,7 @@ const LANE_KEYS = new Set([
179
179
  // opening card is still arriving there says so. See `coverFrame`.
180
180
  "coverAtMs",
181
181
  // composed lanes: what Sprid is asked to render, and what may not be said
182
- "format", "template", "contentType", "neverSay", "sourcesRequired", "platforms",
182
+ "template", "contentType", "neverSay", "sourcesRequired", "platforms",
183
183
  ]);
184
184
 
185
185
  /**
@@ -515,9 +515,7 @@ export default {
515
515
  carousels: {
516
516
  kind: "composed",
517
517
  spec: "social/specs/<slug>.json",
518
- // Optional: the Sprid format a post is created from, and the template
519
- // every card renders through.
520
- // format: <format id from this account>,
518
+ // Optional: the template every card renders through.
521
519
  // template: <template id from this account>,
522
520
  expect: { slides: [5, 9], words: [0, 30] },
523
521
  hashtags: [3, 6],
@@ -1462,15 +1460,12 @@ async function cmdDraft(cfg, argv) {
1462
1460
  // Public titles come from approved copy; identifiers stay in internalName.
1463
1461
  title: m.post?.title ?? postTitle(caption, m.slug),
1464
1462
  internalName: m.post?.internalName ?? m.slug,
1465
- // A composed lane may name the Sprid format its posts are made from,
1466
- // and creating with it is what scaffolds the right slide roles.
1467
- ...(cfg.lanes[m.lane]?.format ? { formatId: cfg.lanes[m.lane].format } : {}),
1468
1463
  }));
1469
1464
  const carousel = (m.kind ?? "reel") === "carousel";
1470
1465
  const composed = isComposed(m);
1471
1466
 
1472
1467
  // **A new post already has slides, and `POST /posts` does not return
1473
- // them.** It scaffolds one row (or one per the format's template) and
1468
+ // them.** It scaffolds one row and
1474
1469
  // answers with the post alone, so `post.slides?.[0]` was always undefined
1475
1470
  // and every draft this package made carried an EMPTY leading slide with
1476
1471
  // the real media behind it - a blank first frame on a reel, a blank first