felo-ai 0.2.48 → 0.2.50

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,6 +1,6 @@
1
1
  ---
2
2
  name: felo-superAgent
3
- description: "Felo SuperAgent API: AI conversation with real-time SSE streaming on a persistent LiveDoc canvas. Use when users want SuperAgent chat, continuous conversation, tweet writing, logo/branding design, or e-commerce product images. Explicit commands: /felo-superagent."
3
+ description: "Felo SuperAgent API: AI conversation with real-time SSE streaming on a persistent LiveDoc canvas. Use when users want SuperAgent chat, continuous conversation, logo/branding design, or e-commerce product images. Do NOT use for tweet/X post writing — use felo-twitter-writer instead. Explicit commands: /felo-superagent."
4
4
  ---
5
5
 
6
6
  # Felo SuperAgent Skill
@@ -57,7 +57,6 @@ Trigger this skill when users want:
57
57
 
58
58
  - **SuperAgent conversation:** AI conversation with Felo SuperAgent, with real-time streaming output
59
59
  - **Continuous conversation:** Multi-turn Q&A on a persistent LiveDoc canvas
60
- - **Tweet writing:** Compose or post tweets (auto-selects `twitter-writer` skill)
61
60
  - **Logo & branding:** Create logos or brand designs (auto-selects `logo-and-branding` skill)
62
61
  - **E-commerce images:** Generate product images (auto-selects `ecommerce-product-image` skill)
63
62
  - **Tool-augmented answers:** Responses that may include image generation, document creation, PPT generation, or Twitter/X search
@@ -65,15 +64,16 @@ Trigger this skill when users want:
65
64
 
66
65
  **Trigger words:**
67
66
 
68
- - English: superagent, super agent, stream chat, streaming conversation, livedoc conversation, continuous chat, follow-up question, write a tweet, post a tweet, create a logo, brand design, product image, e-commerce image
69
- - Simplified Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, fa tui wen, xie tui wen, she ji logo, pin pai she ji, dian shang tu pian
70
- - Traditional Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, fa tui wen, xie tui wen, she ji logo, pin pai she ji, dian shang tu pian
71
- - Japanese (romaji): suupaa eejento, sutoriimingu kaiwa, keizoku kaiwa, tsuiito wo kaku, rogo sakusei, shouhin gazou
67
+ - English: superagent, super agent, stream chat, streaming conversation, livedoc conversation, continuous chat, follow-up question, create a logo, brand design, product image, e-commerce image
68
+ - Simplified Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, she ji logo, pin pai she ji, dian shang tu pian
69
+ - Traditional Chinese (pinyin): chao ji zhu shou, liu shi dui hua, lian xu dui hua, zhui wen, she ji logo, pin pai she ji, dian shang tu pian
70
+ - Japanese (romaji): suupaa eejento, sutoriimingu kaiwa, keizoku kaiwa, rogo sakusei, shouhin gazou
72
71
 
73
72
  **Explicit commands:** `/felo-superagent`, "use felo superagent", "felo superagent"
74
73
 
75
74
  **Do NOT use for:**
76
75
 
76
+ - Tweet/X post writing of any kind (use `felo-twitter-writer` instead)
77
77
  - Simple one-off Q&A or real-time information queries (prefer `felo-search`)
78
78
  - Web page content fetching only (use `felo-web-fetch`)
79
79
  - PPT/slide generation only (use `felo-slides`)
@@ -147,7 +147,7 @@ Skip to Step 3. Reuse the same ID. Sources include: a previous SuperAgent call's
147
147
  node felo-livedoc/scripts/run_livedoc.mjs list --json
148
148
  ```
149
149
 
150
- Parse the JSON output. The response contains `data.items` — an array of LiveDoc objects sorted by modification time. Pick the first item's `short_id` as your `live_doc_id`.
150
+ Parse the JSON output. The response contains `data.items` — an array of LiveDoc objects sorted by modification time descending. Find the **first item where `is_shared === false`** and use its `short_id` as your `live_doc_id`. **NEVER pick an item where `is_shared === true`** — shared LiveDocs belong to other projects and will cause a 502 error.
151
151
 
152
152
  Example response:
153
153
  ```json
@@ -156,16 +156,17 @@ Example response:
156
156
  "data": {
157
157
  "total": 3,
158
158
  "items": [
159
- { "short_id": "QPetunwpGnkKuZHStP7gwt", "name": "My Workspace", "modified_at": "..." },
159
+ { "short_id": "abc123", "name": "Shared Project", "is_shared": true, "modified_at": "..." },
160
+ { "short_id": "QPetunwpGnkKuZHStP7gwt", "name": "My Workspace", "is_shared": false, "modified_at": "..." },
160
161
  ...
161
162
  ]
162
163
  }
163
164
  }
164
165
  ```
165
166
 
166
- Use: `live_doc_id = data.items[0].short_id`
167
+ Use: `live_doc_id = data.items.find(i => !i.is_shared)?.short_id`
167
168
 
168
- **2c. If the list is empty (no LiveDocs exist) — create one:**
169
+ **2c. If no `is_shared === false` item exists (or list is empty) — create one:**
169
170
 
170
171
  ```bash
171
172
  node felo-livedoc/scripts/run_livedoc.mjs create --name "SuperAgent Workspace" --json
@@ -293,12 +294,12 @@ Example style block output:
293
294
  ```
294
295
  Style name: darioamodei
295
296
  Style labels: Thoughtful long-form essays
296
- Style DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## 风格速写\nDario writes like a serious intellectual...
297
+ Style DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...
297
298
  ```
298
299
 
299
300
  Serialized as `--ext`:
300
301
  ```bash
301
- --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## 风格速写\nDario writes like a serious intellectual..."}'
302
+ --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual..."}'
302
303
  ```
303
304
 
304
305
  **Important:** Pass the `brand_style_requirement` value completely and verbatim — do NOT truncate `Style DNA`. Partial style content will degrade output quality.
@@ -320,9 +321,9 @@ Construct and execute the command. **ALWAYS use `--json`** — in Claude Code's
320
321
  - **Keep it concise:** The query has a 2000-character limit. Enrich the content but stay focused and avoid unnecessary padding.
321
322
 
322
323
  Examples:
323
- - User says "继续" → `--query "请继续上面关于量子计算的分析,进一步展开实际应用场景"`
324
- - User says "再来一张" → `--query "请再生成一张类似风格的无线耳机产品图,白色背景"`
325
- - User says "帮我改改" → `--query "请修改上面生成的推文,语气更轻松一些,加一些emoji"`
324
+ - User says "continue" → `--query "Please continue the analysis above on quantum computing, expanding on real-world applications"`
325
+ - User says "one more" → `--query "Please generate another product image in a similar style, white background"`
326
+ - User says "fix it" → `--query "Please revise the tweet generated above, make the tone more casual and add some emojis"`
326
327
 
327
328
  **New conversation (first question, no skill):**
328
329
  ```bash
@@ -349,7 +350,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
349
350
  --query "Write a tweet about the latest AI trends" \
350
351
  --live-doc-id "LIVE_DOC_ID" \
351
352
  --skill-id twitter-writer \
352
- --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## 风格速写\nDario writes like a serious intellectual...(full content)"}' \
353
+ --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content)"}' \
353
354
  --accept-language en \
354
355
  --json
355
356
  ```
@@ -569,7 +570,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
569
570
  --query "Write a tweet about AI trends" \
570
571
  --live-doc-id "QPetunwpGnkKuZHStP7gwt" \
571
572
  --skill-id twitter-writer \
572
- --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## 风格速写\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
573
+ --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
573
574
  --accept-language en \
574
575
  --json
575
576
  ```
@@ -15,10 +15,11 @@ These rules are mandatory. Violating any of them will produce incorrect behavior
15
15
 
16
16
  3. **ALWAYS output `data.answer` verbatim.** After the script finishes, print `data.answer` exactly as-is as your response text. Do NOT summarize, paraphrase, or add commentary around it.
17
17
 
18
- 4. **`--live-doc-id` is REQUIRED** for every SuperAgent call. Follow the livedoc reuse rules from `felo-superAgent/SKILL.md`:
19
- - Reuse any `live_doc_id` already available in this session
20
- - If none: run `node felo-livedoc/scripts/run_livedoc.mjs list --json`, use `data.items[0].short_id`
21
- - If list is empty: run `node felo-livedoc/scripts/run_livedoc.mjs create --name "Twitter Writer" --json`, use `data.short_id`
18
+ 4. **`--live-doc-id` is REQUIRED** for every SuperAgent call. Follow these rules strictly:
19
+ - Reuse any `live_doc_id` already available in this session (from a prior SuperAgent or livedoc call)
20
+ - If none: run `node felo-livedoc/scripts/run_livedoc.mjs list --json`, then find the **first item where `is_shared === false`** in `data.items` (list is sorted by modification time descending, so this gives the most recently modified private LiveDoc). Use its `short_id`.
21
+ - If no `is_shared === false` item exists (or list is empty): run `node felo-livedoc/scripts/run_livedoc.mjs create --name "Twitter Writer" --json`, use `data.short_id`
22
+ - **NEVER use a LiveDoc where `is_shared === true`** — shared LiveDocs belong to other projects and will cause a 502 error.
22
23
 
23
24
  5. **Always persist state.** After every SuperAgent call, extract `thread_short_id` and `live_doc_short_id` from the JSON response fields `data.thread_short_id` and `data.live_doc_short_id`. Use them in subsequent calls.
24
25
 
@@ -184,7 +185,7 @@ Always pass `--accept-language` matching the user's language (same value used fo
184
185
 
185
186
  **If the list is empty:** Skip silently. Proceed to Step 2 without `--ext`.
186
187
 
187
- **If styles are available:** Present them to the user grouped by type, showing names only. Always include a "no preference" option. Wait for the user's reply before proceeding.
188
+ **If styles are available:** Output the COMPLETE list as plain text — every style returned by the API, grouped by type, numbered sequentially. NEVER use `AskUserQuestion` tool (it limits to 4 options and will silently drop styles). NEVER pre-select or filter styles on behalf of the user. Always append a "no preference" option as the last item. Then wait for the user's plain-text reply before proceeding.
188
189
 
189
190
  Example presentation (adapt language to match user's language):
190
191
  ```
@@ -192,10 +193,11 @@ Here are the available Twitter writing styles — choosing one will make the out
192
193
 
193
194
  [Your styles]
194
195
  1. My Bold Voice
195
- 2. darioamodei
196
196
 
197
197
  [Recommended styles]
198
- 3. Casual & Witty
198
+ 2. elonmusk Shitposting provocateur
199
+ 3. naval — Pithy aphorism master
200
+ ...(list ALL styles, do not omit any)
199
201
 
200
202
  0. No preference — use default style
201
203
  ```
@@ -269,7 +271,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
269
271
  --query "/twitter-writer ENRICHED_QUERY" \
270
272
  --live-doc-id "LIVE_DOC_ID" \
271
273
  --skill-id twitter-writer \
272
- --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## 风格速写\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
274
+ --ext '{"brand_style_requirement":"Style name: darioamodei\nStyle labels: Thoughtful long-form essays\nStyle DNA: # Dario Amodei (@DarioAmodei) Tweet Writing Style DNA\n\n## Style Overview\nDario writes like a serious intellectual...(full content, do NOT truncate)"}' \
273
275
  --accept-language LANG \
274
276
  --json
275
277
  ```
@@ -338,7 +340,7 @@ User input
338
340
  ### Example A: Analyze an account's style
339
341
 
340
342
  ```
341
- User: "@paulg のツイートスタイルを分析して"
343
+ User: "Analyze @paulg's tweet style"
342
344
  ```
343
345
 
344
346
  **Step 1:** Fetch tweets:
@@ -352,10 +354,10 @@ node felo-x-search/scripts/run_x_search.mjs --id "paulg" --user
352
354
  **Step 3:** Call SuperAgent (Mode 1 — no style library step):
353
355
  ```bash
354
356
  node felo-superAgent/scripts/run_superagent.mjs \
355
- --query "/twitter-writer @paulg のツイートを分析し、文体のスタイルDNAドキュメントを作成してください。トーン、文章構造、冒頭フック、締めのアクション、頻出ワード、ハッシュタグ戦略、絵文字の使い方などを含めてください。\n\nアカウント概要:[BIO]\n\nツイート:\n[TWEETS]" \
357
+ --query "/twitter-writer Please analyze the following tweets from @paulg and extract a writing style DNA document. Cover tone, sentence structure, opening hooks, closing CTAs, frequently used words, hashtag strategy, and emoji usage.\n\nAccount bio: [BIO]\n\nTweets:\n[TWEETS]" \
356
358
  --live-doc-id "LIVE_DOC_ID" \
357
359
  --skill-id twitter-writer \
358
- --accept-language ja \
360
+ --accept-language en \
359
361
  --json
360
362
  ```
361
363
 
@@ -366,7 +368,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
366
368
  ### Example B: Create tweets with a reference style (Mode 1 → Mode 2)
367
369
 
368
370
  ```
369
- User: "@paulg のスタイルでスタートアップについてのツイートを3つ書いて"
371
+ User: "Write 3 tweets about startups in @paulg's style"
370
372
  ```
371
373
 
372
374
  **Step 1:** Run Mode 1 to extract style DNA (same as Example A). Style library step is skipped because Mode 1 already establishes style context in the thread.
@@ -376,10 +378,10 @@ User: "@paulg のスタイルでスタートアップについてのツイート
376
378
  **Step 3:** Follow-up call (continuing the same thread — `thread_short_id` from Mode 1, no `--ext`):
377
379
  ```bash
378
380
  node felo-superAgent/scripts/run_superagent.mjs \
379
- --query "/twitter-writer 上記で抽出した @paulg のスタイルDNAをもとに、「スタートアップ」をテーマにしたツイートを3パターン作成してください。それぞれ異なるトーンや切り口で、280文字以内に収めてください。" \
381
+ --query "/twitter-writer Based on the @paulg style DNA extracted above, write 3 tweet variations about startups. Each should have a distinct tone and angle, within 280 characters." \
380
382
  --thread-id "THREAD_SHORT_ID" \
381
383
  --live-doc-id "LIVE_DOC_ID" \
382
- --accept-language ja \
384
+ --accept-language en \
383
385
  --json
384
386
  ```
385
387
 
@@ -447,17 +449,17 @@ console.log(JSON.stringify({brand_style_requirement:block}));
447
449
  ### Example D: Iterate on generated content (follow-up, no style step)
448
450
 
449
451
  ```
450
- User: "2番目のツイートをもっとユーモラスにして、絵文字も追加して"
452
+ User: "Make the 2nd tweet more humorous and add some emojis"
451
453
  ```
452
454
 
453
455
  Already have `thread_short_id` and `live_doc_id` from the previous call. This is a follow-up — do NOT fetch styles again, do NOT pass `--ext`.
454
456
 
455
457
  ```bash
456
458
  node felo-superAgent/scripts/run_superagent.mjs \
457
- --query "/twitter-writer 上記で生成した2番目のツイートを修正してください。トーンをよりユーモラスで軽快にし、適切な絵文字を追加してください。内容の意図は変えないでください。" \
459
+ --query "/twitter-writer Please revise the 2nd tweet generated above. Make the tone more humorous and lighthearted, and add appropriate emojis. Keep the original intent intact." \
458
460
  --thread-id "THREAD_SHORT_ID" \
459
461
  --live-doc-id "LIVE_DOC_ID" \
460
- --accept-language ja \
462
+ --accept-language en \
461
463
  --json
462
464
  ```
463
465
 
@@ -526,7 +528,7 @@ node felo-superAgent/scripts/run_superagent.mjs \
526
528
  ### Example G: User chooses no preference
527
529
 
528
530
  ```
529
- User: "帮我写一条关于新产品发布的推文"
531
+ User: "Write a tweet about a new product launch"
530
532
  ```
531
533
 
532
534
  **Step 1.5:** Fetch styles, present list. User replies: `0` (no preference).
@@ -534,10 +536,10 @@ User: "帮我写一条关于新产品发布的推文"
534
536
  Proceed without `--ext`:
535
537
  ```bash
536
538
  node felo-superAgent/scripts/run_superagent.mjs \
537
- --query "/twitter-writer 帮我写3条关于新产品发布的推文,每条风格略有不同。" \
539
+ --query "/twitter-writer Write 3 tweets about a new product launch, each with a slightly different tone." \
538
540
  --live-doc-id "LIVE_DOC_ID" \
539
541
  --skill-id twitter-writer \
540
- --accept-language zh \
542
+ --accept-language en \
541
543
  --json
542
544
  ```
543
545
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "felo-ai",
3
- "version": "0.2.48",
3
+ "version": "0.2.50",
4
4
  "description": "Felo AI CLI - real-time search, PPT generation, SuperAgent conversation, LiveDoc management, web fetch, YouTube subtitles, LiveDoc knowledge base, and X (Twitter) search from the terminal",
5
5
  "type": "module",
6
6
  "main": "src/cli.js",