@mx-space/cli 0.14.2 → 0.15.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.
Files changed (52) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +35 -11
  3. package/dist/{Lexical.dev-CtGmYDoh.mjs → Lexical.dev-Cck4n26y.mjs} +240 -325
  4. package/dist/{Lexical.node-8sRFmq2X.mjs → Lexical.node-D6wf2D5M.mjs} +2 -2
  5. package/dist/{Lexical.prod-D-VfeKDz.mjs → Lexical.prod-DCwS1oTq.mjs} +1753 -1783
  6. package/dist/{LexicalClipboard.dev-CzQ15z6E.mjs → LexicalClipboard.dev-CMkPHV7O.mjs} +6 -6
  7. package/dist/{LexicalClipboard.node-D4gMGws6.mjs → LexicalClipboard.node-m4nZ7IYw.mjs} +2 -2
  8. package/dist/{LexicalClipboard.prod-CltkQpzS.mjs → LexicalClipboard.prod-B_rN1vE1.mjs} +6 -6
  9. package/dist/{LexicalCodeCore.dev-DkYBZRGB.mjs → LexicalCodeCore.dev-DyJw3i8V.mjs} +56 -68
  10. package/dist/{LexicalCodeCore.prod-COc3_QL8.mjs → LexicalCodeCore.prod-DPXLHQLF.mjs} +144 -156
  11. package/dist/{LexicalDragon.dev-Dv5_WUae.mjs → LexicalDragon.dev-ZkNfMwrE.mjs} +3 -3
  12. package/dist/{LexicalDragon.node-DgjrmWkd.mjs → LexicalDragon.node-Ds9oLUFh.mjs} +2 -2
  13. package/dist/{LexicalDragon.prod-DnpbDe-_.mjs → LexicalDragon.prod-B58ic2av.mjs} +3 -3
  14. package/dist/{LexicalExtension.dev-JMH_6-OZ.mjs → LexicalExtension.dev-DvwHs1Xv.mjs} +10 -19
  15. package/dist/{LexicalExtension.node-BUozzx4t.mjs → LexicalExtension.node-5OymZQfy.mjs} +2 -2
  16. package/dist/{LexicalExtension.prod-UiyDgmou.mjs → LexicalExtension.prod-Ce0T5smQ.mjs} +73 -82
  17. package/dist/{LexicalHeadless.dev-BfLGciiX.mjs → LexicalHeadless.dev-DA0WldSR.mjs} +2 -2
  18. package/dist/{LexicalHeadless.prod-CWF7edmQ.mjs → LexicalHeadless.prod-1kQgKB6c.mjs} +2 -2
  19. package/dist/{LexicalHtml.dev-D5EF5PGW.mjs → LexicalHtml.dev-BDB7CUrx.mjs} +6 -6
  20. package/dist/{LexicalHtml.node-BYbzHNVe.mjs → LexicalHtml.node-DpVNt7It.mjs} +2 -2
  21. package/dist/{LexicalHtml.prod-D_FfkvVD.mjs → LexicalHtml.prod-HkxM5scw.mjs} +6 -6
  22. package/dist/{LexicalLink.dev-D3Pgh6ik.mjs → LexicalLink.dev-C5zNJlrm.mjs} +17 -41
  23. package/dist/{LexicalLink.prod-XZoAYVYD.mjs → LexicalLink.prod-Bkt9hQAt.mjs} +113 -137
  24. package/dist/{LexicalList.dev-B5d3ObhB.mjs → LexicalList.dev-B7VgME-m.mjs} +15 -47
  25. package/dist/{LexicalList.prod-OQDpVAEb.mjs → LexicalList.prod-B8c7TDjH.mjs} +208 -224
  26. package/dist/{LexicalMarkdown.dev-BkM8G3DG.mjs → LexicalMarkdown.dev-B5z9kLbV.mjs} +5 -4
  27. package/dist/{LexicalMarkdown.prod-DcVXCex6.mjs → LexicalMarkdown.prod-wKzw7FFH.mjs} +5 -4
  28. package/dist/{LexicalRichText.dev-DppD7IrA.mjs → LexicalRichText.dev-CUd6Li5F.mjs} +76 -82
  29. package/dist/{LexicalRichText.node-CPSn7dkg.mjs → LexicalRichText.node-BKfaQ-CH.mjs} +8 -8
  30. package/dist/{LexicalRichText.prod-h7JPxFNp.mjs → LexicalRichText.prod-SBewjJHx.mjs} +86 -96
  31. package/dist/{LexicalSelection.dev-CD0SLbxP.mjs → LexicalSelection.dev-D27JOCqj.mjs} +2 -2
  32. package/dist/{LexicalSelection.node-CGlJgUlZ.mjs → LexicalSelection.node-DBEwPjBu.mjs} +2 -2
  33. package/dist/{LexicalSelection.prod-DbVZN5AV.mjs → LexicalSelection.prod-OaYhXHOL.mjs} +2 -2
  34. package/dist/{LexicalTable.dev-D0HU14UV.mjs → LexicalTable.dev-6IFFOAE0.mjs} +260 -131
  35. package/dist/{LexicalTable.prod-BcPNSrxP.mjs → LexicalTable.prod-2CaLZ7fH.mjs} +686 -630
  36. package/dist/{LexicalUtils.dev-iKy_TrRT.mjs → LexicalUtils.dev-DJA7J_7v.mjs} +3 -3
  37. package/dist/{LexicalUtils.node-CIgMS8cG.mjs → LexicalUtils.node-Df9oPTlA.mjs} +2 -2
  38. package/dist/{LexicalUtils.prod-DIAsKJzu.mjs → LexicalUtils.prod-Bb7V4Ewg.mjs} +3 -3
  39. package/dist/bin/mxs.mjs +1 -1
  40. package/dist/esm-CDcJmHkG.mjs +2 -0
  41. package/dist/{esm-CwXl1N0a.mjs → esm-DLzrv7gD.mjs} +165 -131
  42. package/dist/index.d.mts +16 -16
  43. package/dist/index.mjs +1 -1
  44. package/dist/{mxs-iW9DgqSZ.mjs → mxs-BIRW5Axj.mjs} +1434 -2233
  45. package/dist/vendor/litexml/cli.mjs +2462 -2557
  46. package/dist/vendor/litexml/litexml-html-preview-client.css +80 -47
  47. package/dist/vendor/litexml/litexml-html-preview-client.js +5276 -4906
  48. package/dist/vendor/litexml/style.css +6 -2
  49. package/package.json +31 -32
  50. package/skills/commands-ai.md +45 -12
  51. package/skills/overview.md +1 -1
  52. package/dist/esm-CH7CrOvh.mjs +0 -2
package/LICENSE ADDED
@@ -0,0 +1,33 @@
1
+ ** Mix Space Open Source License**
2
+
3
+ This project is dual-licensed under different terms for different parts of the project. It is important for users and contributors to understand the licensing terms applicable to each part of the project.
4
+
5
+ ### For the `apps/` Directory
6
+
7
+ **License:** GNU Affero General Public License v3.0 (AGPLv3) with Additional Terms (ADDITIONAL_TERMS).
8
+
9
+ **Scope:** This license applies exclusively to all files within the `apps/` directory of this project.
10
+
11
+ **Summary:**
12
+ - The AGPLv3 is a free, copyleft license suitable for software that will be distributed over a network. It allows users to use, modify, and distribute the software and any modifications under the same terms.
13
+ - The "Additional Terms" (ADDITIONAL_TERMS) are specific conditions that are added to the AGPLv3 license. These terms must be reviewed in the accompanying LICENSE file or documentation to understand any additional restrictions or permissions that apply to the software.
14
+
15
+ ### For Other Parts of the Project
16
+
17
+ **License:** MIT License.
18
+
19
+ **Scope:** This license applies to all parts of the project that are not included within the `apps/` directory.
20
+
21
+ **Summary:**
22
+ - The MIT License is a permissive open-source license that allows users considerable freedom. It permits use, copying, modification, merging, publishing, distribution, sublicensing, and/or selling copies of the software.
23
+ - It also protects the authors by including a limitation of liability and a disclaimer of warranty.
24
+
25
+ **General Conditions:**
26
+ - Redistribution and use in source and binary forms, with or without modification, are permitted provided that the above license notices and this permission notice appear in all copies of the software.
27
+ - The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement.
28
+
29
+ **Contribution:**
30
+ - Contributions to this project are accepted under the terms of the same license as the part of the project to which the contribution is made.
31
+
32
+ **Notice:**
33
+ - This summary is not the license itself and is not a substitute for reading the licenses in their entirety. All users and contributors are encouraged to read the full text of the licenses for a comprehensive understanding.
package/README.md CHANGED
@@ -471,16 +471,17 @@ Use when authoring or reviewing any Postgres migration in this codebase.
471
471
 
472
472
  ## AI
473
473
 
474
- Manage AI artifacts (summary, translation, insights) produced by the core AI module. Article references accept Snowflake id, post slug, or note nid — the CLI resolves to an article id via post-then-note lookup. Record references (`<recordId>`) are raw Snowflakes.
474
+ Manage AI artifacts (summary, translation, insights, tts, overview) produced by the core AI module. Article references accept Snowflake id, post slug, or note nid — the CLI resolves to an article id via post-then-note lookup. Record references (`<recordId>`) are raw Snowflakes.
475
475
 
476
- Generate verbs (`summary regen`, `translate run`, `insights refresh`) enqueue a task on the server, then poll `GET /tasks/:id` until the task reaches a terminal status (`completed`, `partial_failed`, `failed`, `cancelled`). Progress lines write to stderr. Pass `--no-wait` to return immediately with `status: pending` after the task is created. If the server reports `created: false`, an in-flight deduplicated task already exists and the CLI joins it instead of erroring. The polling cadence is 1000 ms by default; override via `MXS_AI_POLL_MS=<n>` for tests.
476
+ Generate verbs (`summary regen`, `summary translate`, `translate run`, `insights refresh`, `insights translate`, `tts run`) enqueue a task on the server, then poll `GET /tasks/:id` until the task reaches a terminal status (`completed`, `partial_failed`, `failed`, `cancelled`). Progress lines write to stderr. Pass `--no-wait` to return immediately with `status: pending` after the task is created. If the server reports `created: false`, an in-flight deduplicated task already exists and the CLI joins it instead of erroring. Pass `--force` to regenerate even when an up-to-date result exists (without it the server skips languages that are already current). Target-language lists are capped at 8 per task server-side. The polling cadence is 1000 ms by default; override via `MXS_AI_POLL_MS=<n>` for tests.
477
477
 
478
478
  ### Summary
479
479
 
480
480
  | Command | Description |
481
481
  | -------------------------------------------------- | ----------------------------------------------------------------- |
482
- | `mxs ai summary regen <id> [--to <lang>...]` | Regenerate an article's summary (optionally for given languages). |
483
- | `mxs ai summary list [--page <n>] [--size <n>] [--grouped]` | List summaries (flat or grouped by article). |
482
+ | `mxs ai summary regen <id> [--to <lang>...] [--force]` | Regenerate an article's summary (optionally for given languages). |
483
+ | `mxs ai summary translate <id> --to <lang> [--force]` | Translate the existing base summary into one language (fails with a hint when no base summary exists). |
484
+ | `mxs ai summary list [--page <n>] [--size <n>] [--grouped] [--search <q>]` | List summaries (flat or grouped by article). |
484
485
  | `mxs ai summary get <recordId>` | Get one summary by record id. |
485
486
  | `mxs ai summary by-article <id> [--lang <l>] [--only-db]` | Show an article's summary; `--only-db` skips auto-generate. |
486
487
  | `mxs ai summary edit <recordId>` | Edit the `summary` field via `$EDITOR` (JSON envelope). |
@@ -490,8 +491,8 @@ Generate verbs (`summary regen`, `translate run`, `insights refresh`) enqueue a
490
491
 
491
492
  | Command | Description |
492
493
  | -------------------------------------------------------- | ------------------------------------------------------------- |
493
- | `mxs ai translate run <id> --to <lang>... [--no-wait]` | Translate an article into one or more languages (`--to` required, repeatable). |
494
- | `mxs ai translate list [--page <n>] [--size <n>]` | List translations (always grouped by article — no flat list server-side). |
494
+ | `mxs ai translate run <id> --to <lang>... [--force] [--no-wait]` | Translate an article into one or more languages (`--to` required, repeatable). |
495
+ | `mxs ai translate list [--page <n>] [--size <n>] [--search <q>]` | List translations (always grouped by article — no flat list server-side). |
495
496
  | `mxs ai translate get <recordId>` | Get one translation by record id. |
496
497
  | `mxs ai translate by-article <id> [--lang <l>]` | Show an article's translations (single lang or all). |
497
498
  | `mxs ai translate languages <id>` | List languages an article has been translated into. |
@@ -513,18 +514,41 @@ The i18n dictionary entries layer used by category / topic / note metadata. `--k
513
514
 
514
515
  | Command | Description |
515
516
  | ------------------------------------------------------ | ------------------------------------------------------------------- |
516
- | `mxs ai insights refresh <id> [--no-wait]` | Refresh AI insights for an article. |
517
- | `mxs ai insights list [--page <n>] [--size <n>] [--grouped]` | List insights (flat or grouped by article). |
517
+ | `mxs ai insights refresh <id> [--to <lang>...] [--force] [--no-wait]` | Refresh AI insights for an article; `--to` also translates the result once generated. |
518
+ | `mxs ai insights translate <id> --to <lang> [--force]` | Translate the existing base insights into one language (fails with a hint when no base insights exist). |
519
+ | `mxs ai insights list [--page <n>] [--size <n>] [--grouped] [--search <q>]` | List insights (flat or grouped by article). |
518
520
  | `mxs ai insights get <recordId>` | Get one insights record by record id. |
519
521
  | `mxs ai insights by-article <id> [--lang <l>] [--only-db]` | Show an article's insights; `--only-db` skips auto-generate. |
520
522
  | `mxs ai insights edit <recordId>` | Edit the `content` field via `$EDITOR` (JSON envelope). |
521
523
  | `mxs ai insights delete <recordId> [--force]` | Delete an insights record. |
522
524
 
525
+ ### TTS (narrations)
526
+
527
+ | Command | Description |
528
+ | ------------------------------------------------------ | ------------------------------------------------------------------- |
529
+ | `mxs ai tts run <id> [--to <lang>...] [--force] [--no-wait]` | Generate AI narration for an article (per language). |
530
+ | `mxs ai tts list [--page <n>] [--size <n>] [--grouped] [--search <q>]` | List narrations (flat or grouped by article). |
531
+ | `mxs ai tts by-article <id>` | Show all narration rows for an article. |
532
+ | `mxs ai tts voices --provider <id> --model <m>` | Discover TTS voices for a provider/model pair (both required). |
533
+ | `mxs ai tts delete <recordId> [--force]` | Delete a narration record. |
534
+
535
+ ### Overview
536
+
537
+ Read-only board aggregating each article's AI artifact state (summary / translation / insights coverage).
538
+
539
+ | Command | Description |
540
+ | ------------------------------------------------------ | ------------------------------------------------------------------- |
541
+ | `mxs ai overview list [--page <n>] [--size <n>] [--search <q>] [--type post\|note\|page]` | List the per-article AI overview board. |
542
+ | `mxs ai overview by-article <id>` | Show the AI artifact overview for one article. |
543
+
523
544
  ```bash
524
- mxs ai summary regen my-post --to en --to ja
545
+ mxs ai summary regen my-post --to en --to ja --force
546
+ mxs ai summary translate my-post --to ja
525
547
  mxs ai translate run my-post --to en
526
- mxs ai insights refresh my-post
527
- mxs ai summary list --grouped
548
+ mxs ai insights refresh my-post --to en
549
+ mxs ai tts run my-post --to zh
550
+ mxs ai summary list --grouped --search hello
551
+ mxs ai overview list --type post
528
552
  mxs ai translate languages my-post
529
553
  ```
530
554