faces-cli 1.5.11 → 1.5.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.
@@ -1,58 +1,5 @@
1
1
  {
2
2
  "commands": {
3
- "account:state": {
4
- "aliases": [],
5
- "args": {},
6
- "description": "Full account routing state (plan, balance, onboarding)",
7
- "flags": {
8
- "json": {
9
- "description": "Format output as json.",
10
- "helpGroup": "GLOBAL",
11
- "name": "json",
12
- "allowNo": false,
13
- "type": "boolean"
14
- },
15
- "base-url": {
16
- "description": "API base URL",
17
- "env": "FACES_BASE_URL",
18
- "name": "base-url",
19
- "hasDynamicHelp": false,
20
- "multiple": false,
21
- "type": "option"
22
- },
23
- "token": {
24
- "description": "JWT bearer token",
25
- "env": "FACES_TOKEN",
26
- "name": "token",
27
- "hasDynamicHelp": false,
28
- "multiple": false,
29
- "type": "option"
30
- },
31
- "api-key": {
32
- "description": "API key",
33
- "env": "FACES_API_KEY",
34
- "name": "api-key",
35
- "hasDynamicHelp": false,
36
- "multiple": false,
37
- "type": "option"
38
- }
39
- },
40
- "hasDynamicHelp": false,
41
- "hiddenAliases": [],
42
- "id": "account:state",
43
- "pluginAlias": "faces-cli",
44
- "pluginName": "faces-cli",
45
- "pluginType": "core",
46
- "strict": true,
47
- "enableJsonFlag": true,
48
- "isESM": true,
49
- "relativePath": [
50
- "dist",
51
- "commands",
52
- "account",
53
- "state.js"
54
- ]
55
- },
56
3
  "auth:connect": {
57
4
  "aliases": [],
58
5
  "args": {
@@ -1260,16 +1207,16 @@
1260
1207
  "manyfaced.js"
1261
1208
  ]
1262
1209
  },
1263
- "compile:import": {
1210
+ "chat:chat": {
1264
1211
  "aliases": [],
1265
1212
  "args": {
1266
- "face_id": {
1267
- "description": "Face alias",
1268
- "name": "face_id",
1213
+ "face_username": {
1214
+ "description": "Face alias (or alias@model)",
1215
+ "name": "face_username",
1269
1216
  "required": true
1270
1217
  }
1271
1218
  },
1272
- "description": "Import a YouTube video into a face via server-side download and transcription",
1219
+ "description": "Chat via a face. Auto-routes to the correct API endpoint based on model provider.",
1273
1220
  "flags": {
1274
1221
  "json": {
1275
1222
  "description": "Format output as json.",
@@ -1302,55 +1249,66 @@
1302
1249
  "multiple": false,
1303
1250
  "type": "option"
1304
1251
  },
1305
- "url": {
1306
- "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1307
- "name": "url",
1308
- "required": true,
1252
+ "message": {
1253
+ "char": "m",
1254
+ "description": "User message (repeatable)",
1255
+ "name": "message",
1256
+ "required": false,
1257
+ "hasDynamicHelp": false,
1258
+ "multiple": true,
1259
+ "type": "option"
1260
+ },
1261
+ "llm": {
1262
+ "description": "LLM override (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1263
+ "name": "llm",
1309
1264
  "hasDynamicHelp": false,
1310
1265
  "multiple": false,
1311
1266
  "type": "option"
1312
1267
  },
1313
- "type": {
1314
- "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1315
- "name": "type",
1316
- "default": "document",
1268
+ "system": {
1269
+ "description": "System prompt / instructions",
1270
+ "name": "system",
1317
1271
  "hasDynamicHelp": false,
1318
1272
  "multiple": false,
1319
- "options": [
1320
- "document",
1321
- "thread"
1322
- ],
1323
1273
  "type": "option"
1324
1274
  },
1325
- "perspective": {
1326
- "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1327
- "name": "perspective",
1328
- "default": "third-person",
1275
+ "stream": {
1276
+ "description": "Stream the response",
1277
+ "name": "stream",
1278
+ "allowNo": false,
1279
+ "type": "boolean"
1280
+ },
1281
+ "max-tokens": {
1282
+ "description": "Max tokens",
1283
+ "name": "max-tokens",
1329
1284
  "hasDynamicHelp": false,
1330
1285
  "multiple": false,
1331
- "options": [
1332
- "first-person",
1333
- "third-person"
1334
- ],
1335
1286
  "type": "option"
1336
1287
  },
1337
- "face-speaker": {
1338
- "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1339
- "name": "face-speaker",
1288
+ "temperature": {
1289
+ "description": "Temperature (0.0-2.0)",
1290
+ "name": "temperature",
1340
1291
  "hasDynamicHelp": false,
1341
1292
  "multiple": false,
1342
1293
  "type": "option"
1343
1294
  },
1344
- "no-wait": {
1345
- "description": "Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.",
1346
- "name": "no-wait",
1295
+ "file": {
1296
+ "description": "Read message from file",
1297
+ "name": "file",
1298
+ "hasDynamicHelp": false,
1299
+ "multiple": false,
1300
+ "type": "option"
1301
+ },
1302
+ "responses": {
1303
+ "description": "Use OpenAI Responses API instead of Chat Completions",
1304
+ "name": "responses",
1347
1305
  "allowNo": false,
1348
1306
  "type": "boolean"
1349
1307
  }
1350
1308
  },
1351
1309
  "hasDynamicHelp": false,
1352
1310
  "hiddenAliases": [],
1353
- "id": "compile:import",
1311
+ "id": "chat:chat",
1354
1312
  "pluginAlias": "faces-cli",
1355
1313
  "pluginName": "faces-cli",
1356
1314
  "pluginType": "core",
@@ -1360,20 +1318,20 @@
1360
1318
  "relativePath": [
1361
1319
  "dist",
1362
1320
  "commands",
1363
- "compile",
1364
- "import.js"
1321
+ "chat",
1322
+ "chat.js"
1365
1323
  ]
1366
1324
  },
1367
- "compile:upload": {
1325
+ "chat:messages": {
1368
1326
  "aliases": [],
1369
1327
  "args": {
1370
- "alias": {
1371
- "description": "Face alias",
1372
- "name": "alias",
1328
+ "face_model": {
1329
+ "description": "Face model (e.g. myface or myface@claude-sonnet-4-6)",
1330
+ "name": "face_model",
1373
1331
  "required": true
1374
1332
  }
1375
1333
  },
1376
- "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1334
+ "description": "Anthropic Messages API proxy via a face (alias: chat:chat auto-routes Anthropic models here)",
1377
1335
  "flags": {
1378
1336
  "json": {
1379
1337
  "description": "Format output as json.",
@@ -1406,55 +1364,40 @@
1406
1364
  "multiple": false,
1407
1365
  "type": "option"
1408
1366
  },
1409
- "file": {
1410
- "description": "File to upload",
1411
- "name": "file",
1367
+ "message": {
1368
+ "char": "m",
1369
+ "description": "User message (repeatable)",
1370
+ "name": "message",
1412
1371
  "required": true,
1413
1372
  "hasDynamicHelp": false,
1414
- "multiple": false,
1373
+ "multiple": true,
1415
1374
  "type": "option"
1416
1375
  },
1417
- "kind": {
1418
- "description": "Upload kind: document or thread",
1419
- "name": "kind",
1420
- "default": "document",
1376
+ "system": {
1377
+ "description": "System prompt",
1378
+ "name": "system",
1421
1379
  "hasDynamicHelp": false,
1422
1380
  "multiple": false,
1423
- "options": [
1424
- "document",
1425
- "thread"
1426
- ],
1427
1381
  "type": "option"
1428
1382
  },
1429
- "perspective": {
1430
- "description": "Perspective (document only)",
1431
- "name": "perspective",
1432
- "default": "third-person",
1433
- "hasDynamicHelp": false,
1434
- "multiple": false,
1435
- "options": [
1436
- "first-person",
1437
- "third-person"
1438
- ],
1439
- "type": "option"
1383
+ "stream": {
1384
+ "description": "Stream the response",
1385
+ "name": "stream",
1386
+ "allowNo": false,
1387
+ "type": "boolean"
1440
1388
  },
1441
- "face-speaker": {
1442
- "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1443
- "name": "face-speaker",
1389
+ "max-tokens": {
1390
+ "description": "Max tokens",
1391
+ "name": "max-tokens",
1392
+ "default": 1024,
1444
1393
  "hasDynamicHelp": false,
1445
1394
  "multiple": false,
1446
1395
  "type": "option"
1447
- },
1448
- "no-wait": {
1449
- "description": "Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.",
1450
- "name": "no-wait",
1451
- "allowNo": false,
1452
- "type": "boolean"
1453
1396
  }
1454
1397
  },
1455
1398
  "hasDynamicHelp": false,
1456
1399
  "hiddenAliases": [],
1457
- "id": "compile:upload",
1400
+ "id": "chat:messages",
1458
1401
  "pluginAlias": "faces-cli",
1459
1402
  "pluginName": "faces-cli",
1460
1403
  "pluginType": "core",
@@ -1464,20 +1407,20 @@
1464
1407
  "relativePath": [
1465
1408
  "dist",
1466
1409
  "commands",
1467
- "compile",
1468
- "upload.js"
1410
+ "chat",
1411
+ "messages.js"
1469
1412
  ]
1470
1413
  },
1471
- "chat:chat": {
1414
+ "chat:responses": {
1472
1415
  "aliases": [],
1473
1416
  "args": {
1474
- "face_username": {
1475
- "description": "Face alias (or alias@model)",
1476
- "name": "face_username",
1417
+ "face_model": {
1418
+ "description": "Face model (e.g. myface or myface@gpt-4o)",
1419
+ "name": "face_model",
1477
1420
  "required": true
1478
1421
  }
1479
1422
  },
1480
- "description": "Chat via a face. Auto-routes to the correct API endpoint based on model provider.",
1423
+ "description": "OpenAI Responses API proxy via a face (alias: chat:chat --responses)",
1481
1424
  "flags": {
1482
1425
  "json": {
1483
1426
  "description": "Format output as json.",
@@ -1512,23 +1455,16 @@
1512
1455
  },
1513
1456
  "message": {
1514
1457
  "char": "m",
1515
- "description": "User message (repeatable)",
1458
+ "description": "User input message",
1516
1459
  "name": "message",
1517
- "required": false,
1518
- "hasDynamicHelp": false,
1519
- "multiple": true,
1520
- "type": "option"
1521
- },
1522
- "llm": {
1523
- "description": "LLM override (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1524
- "name": "llm",
1460
+ "required": true,
1525
1461
  "hasDynamicHelp": false,
1526
1462
  "multiple": false,
1527
1463
  "type": "option"
1528
1464
  },
1529
- "system": {
1530
- "description": "System prompt / instructions",
1531
- "name": "system",
1465
+ "instructions": {
1466
+ "description": "System instructions",
1467
+ "name": "instructions",
1532
1468
  "hasDynamicHelp": false,
1533
1469
  "multiple": false,
1534
1470
  "type": "option"
@@ -1538,38 +1474,11 @@
1538
1474
  "name": "stream",
1539
1475
  "allowNo": false,
1540
1476
  "type": "boolean"
1541
- },
1542
- "max-tokens": {
1543
- "description": "Max tokens",
1544
- "name": "max-tokens",
1545
- "hasDynamicHelp": false,
1546
- "multiple": false,
1547
- "type": "option"
1548
- },
1549
- "temperature": {
1550
- "description": "Temperature (0.0-2.0)",
1551
- "name": "temperature",
1552
- "hasDynamicHelp": false,
1553
- "multiple": false,
1554
- "type": "option"
1555
- },
1556
- "file": {
1557
- "description": "Read message from file",
1558
- "name": "file",
1559
- "hasDynamicHelp": false,
1560
- "multiple": false,
1561
- "type": "option"
1562
- },
1563
- "responses": {
1564
- "description": "Use OpenAI Responses API instead of Chat Completions",
1565
- "name": "responses",
1566
- "allowNo": false,
1567
- "type": "boolean"
1568
1477
  }
1569
1478
  },
1570
1479
  "hasDynamicHelp": false,
1571
1480
  "hiddenAliases": [],
1572
- "id": "chat:chat",
1481
+ "id": "chat:responses",
1573
1482
  "pluginAlias": "faces-cli",
1574
1483
  "pluginName": "faces-cli",
1575
1484
  "pluginType": "core",
@@ -1580,19 +1489,19 @@
1580
1489
  "dist",
1581
1490
  "commands",
1582
1491
  "chat",
1583
- "chat.js"
1492
+ "responses.js"
1584
1493
  ]
1585
1494
  },
1586
- "chat:messages": {
1495
+ "compile:import": {
1587
1496
  "aliases": [],
1588
1497
  "args": {
1589
- "face_model": {
1590
- "description": "Face model (e.g. myface or myface@claude-sonnet-4-6)",
1591
- "name": "face_model",
1498
+ "face_id": {
1499
+ "description": "Face alias",
1500
+ "name": "face_id",
1592
1501
  "required": true
1593
1502
  }
1594
1503
  },
1595
- "description": "Anthropic Messages API proxy via a face (alias: chat:chat auto-routes Anthropic models here)",
1504
+ "description": "Import a YouTube video into a face via server-side download and transcription",
1596
1505
  "flags": {
1597
1506
  "json": {
1598
1507
  "description": "Format output as json.",
@@ -1625,40 +1534,55 @@
1625
1534
  "multiple": false,
1626
1535
  "type": "option"
1627
1536
  },
1628
- "message": {
1629
- "char": "m",
1630
- "description": "User message (repeatable)",
1631
- "name": "message",
1537
+ "url": {
1538
+ "description": "YouTube URL (youtube.com/watch?v=... or youtu.be/...)",
1539
+ "name": "url",
1632
1540
  "required": true,
1633
1541
  "hasDynamicHelp": false,
1634
- "multiple": true,
1542
+ "multiple": false,
1635
1543
  "type": "option"
1636
1544
  },
1637
- "system": {
1638
- "description": "System prompt",
1639
- "name": "system",
1545
+ "type": {
1546
+ "description": "\"document\" for solo talks, lectures, monologues; \"thread\" for interviews or multi-speaker conversations",
1547
+ "name": "type",
1548
+ "default": "document",
1640
1549
  "hasDynamicHelp": false,
1641
1550
  "multiple": false,
1551
+ "options": [
1552
+ "document",
1553
+ "thread"
1554
+ ],
1642
1555
  "type": "option"
1643
1556
  },
1644
- "stream": {
1645
- "description": "Stream the response",
1646
- "name": "stream",
1647
- "allowNo": false,
1648
- "type": "boolean"
1557
+ "perspective": {
1558
+ "description": "\"first-person\" if the face is the speaker; \"third-person\" if the video is about the face",
1559
+ "name": "perspective",
1560
+ "default": "third-person",
1561
+ "hasDynamicHelp": false,
1562
+ "multiple": false,
1563
+ "options": [
1564
+ "first-person",
1565
+ "third-person"
1566
+ ],
1567
+ "type": "option"
1649
1568
  },
1650
- "max-tokens": {
1651
- "description": "Max tokens",
1652
- "name": "max-tokens",
1653
- "default": 1024,
1569
+ "face-speaker": {
1570
+ "description": "For --type thread: AssemblyAI speaker label (e.g. \"A\") that corresponds to the face. Defaults to first detected speaker.",
1571
+ "name": "face-speaker",
1654
1572
  "hasDynamicHelp": false,
1655
1573
  "multiple": false,
1656
1574
  "type": "option"
1575
+ },
1576
+ "no-wait": {
1577
+ "description": "Return immediately after import starts (do not poll for transcription). Prints the ID for manual polling.",
1578
+ "name": "no-wait",
1579
+ "allowNo": false,
1580
+ "type": "boolean"
1657
1581
  }
1658
1582
  },
1659
1583
  "hasDynamicHelp": false,
1660
1584
  "hiddenAliases": [],
1661
- "id": "chat:messages",
1585
+ "id": "compile:import",
1662
1586
  "pluginAlias": "faces-cli",
1663
1587
  "pluginName": "faces-cli",
1664
1588
  "pluginType": "core",
@@ -1668,20 +1592,20 @@
1668
1592
  "relativePath": [
1669
1593
  "dist",
1670
1594
  "commands",
1671
- "chat",
1672
- "messages.js"
1595
+ "compile",
1596
+ "import.js"
1673
1597
  ]
1674
1598
  },
1675
- "chat:responses": {
1599
+ "compile:upload": {
1676
1600
  "aliases": [],
1677
1601
  "args": {
1678
- "face_model": {
1679
- "description": "Face model (e.g. myface or myface@gpt-4o)",
1680
- "name": "face_model",
1602
+ "alias": {
1603
+ "description": "Face alias",
1604
+ "name": "alias",
1681
1605
  "required": true
1682
1606
  }
1683
1607
  },
1684
- "description": "OpenAI Responses API proxy via a face (alias: chat:chat --responses)",
1608
+ "description": "Upload a file (text/PDF/audio/video) to compile into a face",
1685
1609
  "flags": {
1686
1610
  "json": {
1687
1611
  "description": "Format output as json.",
@@ -1714,32 +1638,55 @@
1714
1638
  "multiple": false,
1715
1639
  "type": "option"
1716
1640
  },
1717
- "message": {
1718
- "char": "m",
1719
- "description": "User input message",
1720
- "name": "message",
1641
+ "file": {
1642
+ "description": "File to upload",
1643
+ "name": "file",
1721
1644
  "required": true,
1722
1645
  "hasDynamicHelp": false,
1723
1646
  "multiple": false,
1724
1647
  "type": "option"
1725
1648
  },
1726
- "instructions": {
1727
- "description": "System instructions",
1728
- "name": "instructions",
1649
+ "kind": {
1650
+ "description": "Upload kind: document or thread",
1651
+ "name": "kind",
1652
+ "default": "document",
1729
1653
  "hasDynamicHelp": false,
1730
1654
  "multiple": false,
1655
+ "options": [
1656
+ "document",
1657
+ "thread"
1658
+ ],
1731
1659
  "type": "option"
1732
1660
  },
1733
- "stream": {
1734
- "description": "Stream the response",
1735
- "name": "stream",
1661
+ "perspective": {
1662
+ "description": "Perspective (document only)",
1663
+ "name": "perspective",
1664
+ "default": "third-person",
1665
+ "hasDynamicHelp": false,
1666
+ "multiple": false,
1667
+ "options": [
1668
+ "first-person",
1669
+ "third-person"
1670
+ ],
1671
+ "type": "option"
1672
+ },
1673
+ "face-speaker": {
1674
+ "description": "Speaker name to map to the face (thread only). If omitted, auto-detected from face name.",
1675
+ "name": "face-speaker",
1676
+ "hasDynamicHelp": false,
1677
+ "multiple": false,
1678
+ "type": "option"
1679
+ },
1680
+ "no-wait": {
1681
+ "description": "Return immediately after upload (do not poll for transcription). Prints the ID for manual polling.",
1682
+ "name": "no-wait",
1736
1683
  "allowNo": false,
1737
1684
  "type": "boolean"
1738
1685
  }
1739
1686
  },
1740
1687
  "hasDynamicHelp": false,
1741
1688
  "hiddenAliases": [],
1742
- "id": "chat:responses",
1689
+ "id": "compile:upload",
1743
1690
  "pluginAlias": "faces-cli",
1744
1691
  "pluginName": "faces-cli",
1745
1692
  "pluginType": "core",
@@ -1749,8 +1696,8 @@
1749
1696
  "relativePath": [
1750
1697
  "dist",
1751
1698
  "commands",
1752
- "chat",
1753
- "responses.js"
1699
+ "compile",
1700
+ "upload.js"
1754
1701
  ]
1755
1702
  },
1756
1703
  "config:clear": {
@@ -2215,6 +2162,112 @@
2215
2162
  "update.js"
2216
2163
  ]
2217
2164
  },
2165
+ "account:state": {
2166
+ "aliases": [],
2167
+ "args": {},
2168
+ "description": "Full account routing state (plan, balance, onboarding)",
2169
+ "flags": {
2170
+ "json": {
2171
+ "description": "Format output as json.",
2172
+ "helpGroup": "GLOBAL",
2173
+ "name": "json",
2174
+ "allowNo": false,
2175
+ "type": "boolean"
2176
+ },
2177
+ "base-url": {
2178
+ "description": "API base URL",
2179
+ "env": "FACES_BASE_URL",
2180
+ "name": "base-url",
2181
+ "hasDynamicHelp": false,
2182
+ "multiple": false,
2183
+ "type": "option"
2184
+ },
2185
+ "token": {
2186
+ "description": "JWT bearer token",
2187
+ "env": "FACES_TOKEN",
2188
+ "name": "token",
2189
+ "hasDynamicHelp": false,
2190
+ "multiple": false,
2191
+ "type": "option"
2192
+ },
2193
+ "api-key": {
2194
+ "description": "API key",
2195
+ "env": "FACES_API_KEY",
2196
+ "name": "api-key",
2197
+ "hasDynamicHelp": false,
2198
+ "multiple": false,
2199
+ "type": "option"
2200
+ }
2201
+ },
2202
+ "hasDynamicHelp": false,
2203
+ "hiddenAliases": [],
2204
+ "id": "account:state",
2205
+ "pluginAlias": "faces-cli",
2206
+ "pluginName": "faces-cli",
2207
+ "pluginType": "core",
2208
+ "strict": true,
2209
+ "enableJsonFlag": true,
2210
+ "isESM": true,
2211
+ "relativePath": [
2212
+ "dist",
2213
+ "commands",
2214
+ "account",
2215
+ "state.js"
2216
+ ]
2217
+ },
2218
+ "face:attributes": {
2219
+ "aliases": [],
2220
+ "args": {},
2221
+ "description": "List all supported attribute keys",
2222
+ "flags": {
2223
+ "json": {
2224
+ "description": "Format output as json.",
2225
+ "helpGroup": "GLOBAL",
2226
+ "name": "json",
2227
+ "allowNo": false,
2228
+ "type": "boolean"
2229
+ },
2230
+ "base-url": {
2231
+ "description": "API base URL",
2232
+ "env": "FACES_BASE_URL",
2233
+ "name": "base-url",
2234
+ "hasDynamicHelp": false,
2235
+ "multiple": false,
2236
+ "type": "option"
2237
+ },
2238
+ "token": {
2239
+ "description": "JWT bearer token",
2240
+ "env": "FACES_TOKEN",
2241
+ "name": "token",
2242
+ "hasDynamicHelp": false,
2243
+ "multiple": false,
2244
+ "type": "option"
2245
+ },
2246
+ "api-key": {
2247
+ "description": "API key",
2248
+ "env": "FACES_API_KEY",
2249
+ "name": "api-key",
2250
+ "hasDynamicHelp": false,
2251
+ "multiple": false,
2252
+ "type": "option"
2253
+ }
2254
+ },
2255
+ "hasDynamicHelp": false,
2256
+ "hiddenAliases": [],
2257
+ "id": "face:attributes",
2258
+ "pluginAlias": "faces-cli",
2259
+ "pluginName": "faces-cli",
2260
+ "pluginType": "core",
2261
+ "strict": true,
2262
+ "enableJsonFlag": true,
2263
+ "isESM": true,
2264
+ "relativePath": [
2265
+ "dist",
2266
+ "commands",
2267
+ "face",
2268
+ "attributes.js"
2269
+ ]
2270
+ },
2218
2271
  "face:create": {
2219
2272
  "aliases": [],
2220
2273
  "args": {},
@@ -2902,7 +2955,7 @@
2902
2955
  "upload.js"
2903
2956
  ]
2904
2957
  },
2905
- "compile:doc:create": {
2958
+ "compile:thread:create": {
2906
2959
  "aliases": [],
2907
2960
  "args": {
2908
2961
  "face_id": {
@@ -2911,7 +2964,7 @@
2911
2964
  "required": true
2912
2965
  }
2913
2966
  },
2914
- "description": "Submit a document to a face",
2967
+ "description": "Start a new thread for a face",
2915
2968
  "flags": {
2916
2969
  "json": {
2917
2970
  "description": "Format output as json.",
@@ -2945,42 +2998,16 @@
2945
2998
  "type": "option"
2946
2999
  },
2947
3000
  "label": {
2948
- "description": "Document label/title",
3001
+ "description": "Thread label",
2949
3002
  "name": "label",
2950
3003
  "hasDynamicHelp": false,
2951
3004
  "multiple": false,
2952
3005
  "type": "option"
2953
- },
2954
- "content": {
2955
- "description": "Inline text content",
2956
- "name": "content",
2957
- "hasDynamicHelp": false,
2958
- "multiple": false,
2959
- "type": "option"
2960
- },
2961
- "file": {
2962
- "description": "Read content from file",
2963
- "name": "file",
2964
- "hasDynamicHelp": false,
2965
- "multiple": false,
2966
- "type": "option"
2967
- },
2968
- "perspective": {
2969
- "description": "Perspective (first-person or third-person)",
2970
- "name": "perspective",
2971
- "default": "first-person",
2972
- "hasDynamicHelp": false,
2973
- "multiple": false,
2974
- "options": [
2975
- "first-person",
2976
- "third-person"
2977
- ],
2978
- "type": "option"
2979
3006
  }
2980
3007
  },
2981
3008
  "hasDynamicHelp": false,
2982
3009
  "hiddenAliases": [],
2983
- "id": "compile:doc:create",
3010
+ "id": "compile:thread:create",
2984
3011
  "pluginAlias": "faces-cli",
2985
3012
  "pluginName": "faces-cli",
2986
3013
  "pluginType": "core",
@@ -2991,20 +3018,20 @@
2991
3018
  "dist",
2992
3019
  "commands",
2993
3020
  "compile",
2994
- "doc",
3021
+ "thread",
2995
3022
  "create.js"
2996
3023
  ]
2997
3024
  },
2998
- "compile:doc:delete": {
3025
+ "compile:thread:delete": {
2999
3026
  "aliases": [],
3000
3027
  "args": {
3001
- "doc_id": {
3002
- "description": "Document ID",
3003
- "name": "doc_id",
3028
+ "thread_id": {
3029
+ "description": "Thread ID",
3030
+ "name": "thread_id",
3004
3031
  "required": true
3005
3032
  }
3006
3033
  },
3007
- "description": "Delete a document",
3034
+ "description": "Delete a thread",
3008
3035
  "flags": {
3009
3036
  "json": {
3010
3037
  "description": "Format output as json.",
@@ -3036,11 +3063,17 @@
3036
3063
  "hasDynamicHelp": false,
3037
3064
  "multiple": false,
3038
3065
  "type": "option"
3066
+ },
3067
+ "yes": {
3068
+ "description": "Skip confirmation",
3069
+ "name": "yes",
3070
+ "allowNo": false,
3071
+ "type": "boolean"
3039
3072
  }
3040
3073
  },
3041
3074
  "hasDynamicHelp": false,
3042
3075
  "hiddenAliases": [],
3043
- "id": "compile:doc:delete",
3076
+ "id": "compile:thread:delete",
3044
3077
  "pluginAlias": "faces-cli",
3045
3078
  "pluginName": "faces-cli",
3046
3079
  "pluginType": "core",
@@ -3051,20 +3084,20 @@
3051
3084
  "dist",
3052
3085
  "commands",
3053
3086
  "compile",
3054
- "doc",
3087
+ "thread",
3055
3088
  "delete.js"
3056
3089
  ]
3057
3090
  },
3058
- "compile:doc:edit": {
3091
+ "compile:thread:edit": {
3059
3092
  "aliases": [],
3060
3093
  "args": {
3061
- "doc_id": {
3062
- "description": "Document ID",
3063
- "name": "doc_id",
3094
+ "thread_id": {
3095
+ "description": "Thread ID",
3096
+ "name": "thread_id",
3064
3097
  "required": true
3065
3098
  }
3066
3099
  },
3067
- "description": "Edit a document (label, content, or perspective)",
3100
+ "description": "Edit a thread (label and/or reassign face speaker)",
3068
3101
  "flags": {
3069
3102
  "json": {
3070
3103
  "description": "Format output as json.",
@@ -3098,41 +3131,23 @@
3098
3131
  "type": "option"
3099
3132
  },
3100
3133
  "label": {
3101
- "description": "New label/title",
3134
+ "description": "New thread label",
3102
3135
  "name": "label",
3103
3136
  "hasDynamicHelp": false,
3104
3137
  "multiple": false,
3105
3138
  "type": "option"
3106
3139
  },
3107
- "content": {
3108
- "description": "New inline text content",
3109
- "name": "content",
3110
- "hasDynamicHelp": false,
3111
- "multiple": false,
3112
- "type": "option"
3113
- },
3114
- "file": {
3115
- "description": "Read new content from file",
3116
- "name": "file",
3117
- "hasDynamicHelp": false,
3118
- "multiple": false,
3119
- "type": "option"
3120
- },
3121
- "perspective": {
3122
- "description": "Perspective (first-person or third-person)",
3123
- "name": "perspective",
3140
+ "face-speaker": {
3141
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3142
+ "name": "face-speaker",
3124
3143
  "hasDynamicHelp": false,
3125
3144
  "multiple": false,
3126
- "options": [
3127
- "first-person",
3128
- "third-person"
3129
- ],
3130
3145
  "type": "option"
3131
3146
  }
3132
3147
  },
3133
3148
  "hasDynamicHelp": false,
3134
3149
  "hiddenAliases": [],
3135
- "id": "compile:doc:edit",
3150
+ "id": "compile:thread:edit",
3136
3151
  "pluginAlias": "faces-cli",
3137
3152
  "pluginName": "faces-cli",
3138
3153
  "pluginType": "core",
@@ -3143,20 +3158,20 @@
3143
3158
  "dist",
3144
3159
  "commands",
3145
3160
  "compile",
3146
- "doc",
3161
+ "thread",
3147
3162
  "edit.js"
3148
3163
  ]
3149
3164
  },
3150
- "compile:doc:get": {
3165
+ "compile:thread:get": {
3151
3166
  "aliases": [],
3152
3167
  "args": {
3153
- "doc_id": {
3154
- "description": "Document ID",
3155
- "name": "doc_id",
3168
+ "thread_id": {
3169
+ "description": "Thread ID",
3170
+ "name": "thread_id",
3156
3171
  "required": true
3157
3172
  }
3158
3173
  },
3159
- "description": "Get a document by ID",
3174
+ "description": "Get a thread by ID",
3160
3175
  "flags": {
3161
3176
  "json": {
3162
3177
  "description": "Format output as json.",
@@ -3192,7 +3207,7 @@
3192
3207
  },
3193
3208
  "hasDynamicHelp": false,
3194
3209
  "hiddenAliases": [],
3195
- "id": "compile:doc:get",
3210
+ "id": "compile:thread:get",
3196
3211
  "pluginAlias": "faces-cli",
3197
3212
  "pluginName": "faces-cli",
3198
3213
  "pluginType": "core",
@@ -3203,11 +3218,11 @@
3203
3218
  "dist",
3204
3219
  "commands",
3205
3220
  "compile",
3206
- "doc",
3221
+ "thread",
3207
3222
  "get.js"
3208
3223
  ]
3209
3224
  },
3210
- "compile:doc": {
3225
+ "compile:thread:list": {
3211
3226
  "aliases": [],
3212
3227
  "args": {
3213
3228
  "face_id": {
@@ -3216,7 +3231,7 @@
3216
3231
  "required": true
3217
3232
  }
3218
3233
  },
3219
- "description": "Compile a document into a face (create → make in one step)",
3234
+ "description": "List threads for a face",
3220
3235
  "flags": {
3221
3236
  "json": {
3222
3237
  "description": "Format output as json.",
@@ -3248,58 +3263,11 @@
3248
3263
  "hasDynamicHelp": false,
3249
3264
  "multiple": false,
3250
3265
  "type": "option"
3251
- },
3252
- "label": {
3253
- "description": "Document label/title",
3254
- "name": "label",
3255
- "hasDynamicHelp": false,
3256
- "multiple": false,
3257
- "type": "option"
3258
- },
3259
- "content": {
3260
- "description": "Inline text content",
3261
- "name": "content",
3262
- "hasDynamicHelp": false,
3263
- "multiple": false,
3264
- "type": "option"
3265
- },
3266
- "file": {
3267
- "description": "Read content from file",
3268
- "name": "file",
3269
- "hasDynamicHelp": false,
3270
- "multiple": false,
3271
- "type": "option"
3272
- },
3273
- "perspective": {
3274
- "description": "Perspective",
3275
- "name": "perspective",
3276
- "default": "first-person",
3277
- "hasDynamicHelp": false,
3278
- "multiple": false,
3279
- "options": [
3280
- "first-person",
3281
- "third-person"
3282
- ],
3283
- "type": "option"
3284
- },
3285
- "timeout": {
3286
- "description": "Compile timeout in seconds (default: 600)",
3287
- "name": "timeout",
3288
- "default": 600,
3289
- "hasDynamicHelp": false,
3290
- "multiple": false,
3291
- "type": "option"
3292
- },
3293
- "no-wait": {
3294
- "description": "Create and trigger compilation, then return immediately without polling.",
3295
- "name": "no-wait",
3296
- "allowNo": false,
3297
- "type": "boolean"
3298
3266
  }
3299
3267
  },
3300
3268
  "hasDynamicHelp": false,
3301
3269
  "hiddenAliases": [],
3302
- "id": "compile:doc",
3270
+ "id": "compile:thread:list",
3303
3271
  "pluginAlias": "faces-cli",
3304
3272
  "pluginName": "faces-cli",
3305
3273
  "pluginType": "core",
@@ -3310,20 +3278,20 @@
3310
3278
  "dist",
3311
3279
  "commands",
3312
3280
  "compile",
3313
- "doc",
3314
- "index.js"
3281
+ "thread",
3282
+ "list.js"
3315
3283
  ]
3316
3284
  },
3317
- "compile:doc:list": {
3285
+ "compile:thread:make": {
3318
3286
  "aliases": [],
3319
3287
  "args": {
3320
- "face_id": {
3321
- "description": "Face alias",
3322
- "name": "face_id",
3288
+ "thread_id": {
3289
+ "description": "Thread ID",
3290
+ "name": "thread_id",
3323
3291
  "required": true
3324
3292
  }
3325
3293
  },
3326
- "description": "List documents for a face",
3294
+ "description": "Compile an existing thread (prepare + sync in one step)",
3327
3295
  "flags": {
3328
3296
  "json": {
3329
3297
  "description": "Format output as json.",
@@ -3355,11 +3323,25 @@
3355
3323
  "hasDynamicHelp": false,
3356
3324
  "multiple": false,
3357
3325
  "type": "option"
3326
+ },
3327
+ "timeout": {
3328
+ "description": "Compile timeout in seconds (default: 600)",
3329
+ "name": "timeout",
3330
+ "default": 600,
3331
+ "hasDynamicHelp": false,
3332
+ "multiple": false,
3333
+ "type": "option"
3334
+ },
3335
+ "no-wait": {
3336
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3337
+ "name": "no-wait",
3338
+ "allowNo": false,
3339
+ "type": "boolean"
3358
3340
  }
3359
3341
  },
3360
3342
  "hasDynamicHelp": false,
3361
3343
  "hiddenAliases": [],
3362
- "id": "compile:doc:list",
3344
+ "id": "compile:thread:make",
3363
3345
  "pluginAlias": "faces-cli",
3364
3346
  "pluginName": "faces-cli",
3365
3347
  "pluginType": "core",
@@ -3370,20 +3352,20 @@
3370
3352
  "dist",
3371
3353
  "commands",
3372
3354
  "compile",
3373
- "doc",
3374
- "list.js"
3355
+ "thread",
3356
+ "make.js"
3375
3357
  ]
3376
3358
  },
3377
- "compile:doc:make": {
3359
+ "compile:thread:message": {
3378
3360
  "aliases": [],
3379
3361
  "args": {
3380
- "doc_id": {
3381
- "description": "Document ID",
3382
- "name": "doc_id",
3362
+ "thread_id": {
3363
+ "description": "Thread ID",
3364
+ "name": "thread_id",
3383
3365
  "required": true
3384
3366
  }
3385
3367
  },
3386
- "description": "Compile an existing document (prepare + sync in one step)",
3368
+ "description": "Send a user message to a thread",
3387
3369
  "flags": {
3388
3370
  "json": {
3389
3371
  "description": "Format output as json.",
@@ -3416,24 +3398,19 @@
3416
3398
  "multiple": false,
3417
3399
  "type": "option"
3418
3400
  },
3419
- "timeout": {
3420
- "description": "Compile timeout in seconds (default: 600)",
3421
- "name": "timeout",
3422
- "default": 600,
3401
+ "message": {
3402
+ "char": "m",
3403
+ "description": "User message to append",
3404
+ "name": "message",
3405
+ "required": true,
3423
3406
  "hasDynamicHelp": false,
3424
3407
  "multiple": false,
3425
3408
  "type": "option"
3426
- },
3427
- "no-wait": {
3428
- "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
3429
- "name": "no-wait",
3430
- "allowNo": false,
3431
- "type": "boolean"
3432
3409
  }
3433
3410
  },
3434
3411
  "hasDynamicHelp": false,
3435
3412
  "hiddenAliases": [],
3436
- "id": "compile:doc:make",
3413
+ "id": "compile:thread:message",
3437
3414
  "pluginAlias": "faces-cli",
3438
3415
  "pluginName": "faces-cli",
3439
3416
  "pluginType": "core",
@@ -3444,20 +3421,20 @@
3444
3421
  "dist",
3445
3422
  "commands",
3446
3423
  "compile",
3447
- "doc",
3448
- "make.js"
3424
+ "thread",
3425
+ "message.js"
3449
3426
  ]
3450
3427
  },
3451
- "compile:doc:pause": {
3428
+ "compile:thread:pause": {
3452
3429
  "aliases": [],
3453
3430
  "args": {
3454
- "doc_id": {
3455
- "description": "Document ID",
3456
- "name": "doc_id",
3431
+ "thread_id": {
3432
+ "description": "Thread ID",
3433
+ "name": "thread_id",
3457
3434
  "required": true
3458
3435
  }
3459
3436
  },
3460
- "description": "Pause a running document compilation (preserves progress, resume with make)",
3437
+ "description": "Pause a running thread compilation (preserves progress, resume with make)",
3461
3438
  "flags": {
3462
3439
  "json": {
3463
3440
  "description": "Format output as json.",
@@ -3493,7 +3470,7 @@
3493
3470
  },
3494
3471
  "hasDynamicHelp": false,
3495
3472
  "hiddenAliases": [],
3496
- "id": "compile:doc:pause",
3473
+ "id": "compile:thread:pause",
3497
3474
  "pluginAlias": "faces-cli",
3498
3475
  "pluginName": "faces-cli",
3499
3476
  "pluginType": "core",
@@ -3504,20 +3481,20 @@
3504
3481
  "dist",
3505
3482
  "commands",
3506
3483
  "compile",
3507
- "doc",
3484
+ "thread",
3508
3485
  "pause.js"
3509
3486
  ]
3510
3487
  },
3511
- "compile:doc:reset": {
3488
+ "compile:thread:reset": {
3512
3489
  "aliases": [],
3513
3490
  "args": {
3514
- "doc_id": {
3515
- "description": "Document ID",
3516
- "name": "doc_id",
3491
+ "thread_id": {
3492
+ "description": "Thread ID",
3493
+ "name": "thread_id",
3517
3494
  "required": true
3518
3495
  }
3519
3496
  },
3520
- "description": "Reset document compilation progress (wipe extraction, keep content)",
3497
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
3521
3498
  "flags": {
3522
3499
  "json": {
3523
3500
  "description": "Format output as json.",
@@ -3559,7 +3536,7 @@
3559
3536
  },
3560
3537
  "hasDynamicHelp": false,
3561
3538
  "hiddenAliases": [],
3562
- "id": "compile:doc:reset",
3539
+ "id": "compile:thread:reset",
3563
3540
  "pluginAlias": "faces-cli",
3564
3541
  "pluginName": "faces-cli",
3565
3542
  "pluginType": "core",
@@ -3570,20 +3547,20 @@
3570
3547
  "dist",
3571
3548
  "commands",
3572
3549
  "compile",
3573
- "doc",
3550
+ "thread",
3574
3551
  "reset.js"
3575
3552
  ]
3576
3553
  },
3577
- "compile:thread:create": {
3554
+ "compile:thread:sync": {
3578
3555
  "aliases": [],
3579
3556
  "args": {
3580
- "face_id": {
3581
- "description": "Face alias",
3582
- "name": "face_id",
3557
+ "thread_id": {
3558
+ "description": "Thread ID",
3559
+ "name": "thread_id",
3583
3560
  "required": true
3584
3561
  }
3585
3562
  },
3586
- "description": "Start a new thread for a face",
3563
+ "description": "Archive and sync a thread into a face",
3587
3564
  "flags": {
3588
3565
  "json": {
3589
3566
  "description": "Format output as json.",
@@ -3615,18 +3592,11 @@
3615
3592
  "hasDynamicHelp": false,
3616
3593
  "multiple": false,
3617
3594
  "type": "option"
3618
- },
3619
- "label": {
3620
- "description": "Thread label",
3621
- "name": "label",
3622
- "hasDynamicHelp": false,
3623
- "multiple": false,
3624
- "type": "option"
3625
3595
  }
3626
3596
  },
3627
3597
  "hasDynamicHelp": false,
3628
3598
  "hiddenAliases": [],
3629
- "id": "compile:thread:create",
3599
+ "id": "compile:thread:sync",
3630
3600
  "pluginAlias": "faces-cli",
3631
3601
  "pluginName": "faces-cli",
3632
3602
  "pluginType": "core",
@@ -3638,19 +3608,19 @@
3638
3608
  "commands",
3639
3609
  "compile",
3640
3610
  "thread",
3641
- "create.js"
3611
+ "sync.js"
3642
3612
  ]
3643
3613
  },
3644
- "compile:thread:delete": {
3614
+ "compile:doc:create": {
3645
3615
  "aliases": [],
3646
3616
  "args": {
3647
- "thread_id": {
3648
- "description": "Thread ID",
3649
- "name": "thread_id",
3617
+ "face_id": {
3618
+ "description": "Face alias",
3619
+ "name": "face_id",
3650
3620
  "required": true
3651
3621
  }
3652
3622
  },
3653
- "description": "Delete a thread",
3623
+ "description": "Submit a document to a face",
3654
3624
  "flags": {
3655
3625
  "json": {
3656
3626
  "description": "Format output as json.",
@@ -3683,16 +3653,43 @@
3683
3653
  "multiple": false,
3684
3654
  "type": "option"
3685
3655
  },
3686
- "yes": {
3687
- "description": "Skip confirmation",
3688
- "name": "yes",
3689
- "allowNo": false,
3690
- "type": "boolean"
3656
+ "label": {
3657
+ "description": "Document label/title",
3658
+ "name": "label",
3659
+ "hasDynamicHelp": false,
3660
+ "multiple": false,
3661
+ "type": "option"
3662
+ },
3663
+ "content": {
3664
+ "description": "Inline text content",
3665
+ "name": "content",
3666
+ "hasDynamicHelp": false,
3667
+ "multiple": false,
3668
+ "type": "option"
3669
+ },
3670
+ "file": {
3671
+ "description": "Read content from file",
3672
+ "name": "file",
3673
+ "hasDynamicHelp": false,
3674
+ "multiple": false,
3675
+ "type": "option"
3676
+ },
3677
+ "perspective": {
3678
+ "description": "Perspective (first-person or third-person)",
3679
+ "name": "perspective",
3680
+ "default": "first-person",
3681
+ "hasDynamicHelp": false,
3682
+ "multiple": false,
3683
+ "options": [
3684
+ "first-person",
3685
+ "third-person"
3686
+ ],
3687
+ "type": "option"
3691
3688
  }
3692
3689
  },
3693
3690
  "hasDynamicHelp": false,
3694
3691
  "hiddenAliases": [],
3695
- "id": "compile:thread:delete",
3692
+ "id": "compile:doc:create",
3696
3693
  "pluginAlias": "faces-cli",
3697
3694
  "pluginName": "faces-cli",
3698
3695
  "pluginType": "core",
@@ -3703,20 +3700,20 @@
3703
3700
  "dist",
3704
3701
  "commands",
3705
3702
  "compile",
3706
- "thread",
3707
- "delete.js"
3703
+ "doc",
3704
+ "create.js"
3708
3705
  ]
3709
3706
  },
3710
- "compile:thread:edit": {
3707
+ "compile:doc:delete": {
3711
3708
  "aliases": [],
3712
3709
  "args": {
3713
- "thread_id": {
3714
- "description": "Thread ID",
3715
- "name": "thread_id",
3710
+ "doc_id": {
3711
+ "description": "Document ID",
3712
+ "name": "doc_id",
3716
3713
  "required": true
3717
3714
  }
3718
3715
  },
3719
- "description": "Edit a thread (label and/or reassign face speaker)",
3716
+ "description": "Delete a document",
3720
3717
  "flags": {
3721
3718
  "json": {
3722
3719
  "description": "Format output as json.",
@@ -3748,25 +3745,11 @@
3748
3745
  "hasDynamicHelp": false,
3749
3746
  "multiple": false,
3750
3747
  "type": "option"
3751
- },
3752
- "label": {
3753
- "description": "New thread label",
3754
- "name": "label",
3755
- "hasDynamicHelp": false,
3756
- "multiple": false,
3757
- "type": "option"
3758
- },
3759
- "face-speaker": {
3760
- "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3761
- "name": "face-speaker",
3762
- "hasDynamicHelp": false,
3763
- "multiple": false,
3764
- "type": "option"
3765
3748
  }
3766
3749
  },
3767
3750
  "hasDynamicHelp": false,
3768
3751
  "hiddenAliases": [],
3769
- "id": "compile:thread:edit",
3752
+ "id": "compile:doc:delete",
3770
3753
  "pluginAlias": "faces-cli",
3771
3754
  "pluginName": "faces-cli",
3772
3755
  "pluginType": "core",
@@ -3777,20 +3760,20 @@
3777
3760
  "dist",
3778
3761
  "commands",
3779
3762
  "compile",
3780
- "thread",
3781
- "edit.js"
3763
+ "doc",
3764
+ "delete.js"
3782
3765
  ]
3783
3766
  },
3784
- "compile:thread:get": {
3767
+ "compile:doc:edit": {
3785
3768
  "aliases": [],
3786
3769
  "args": {
3787
- "thread_id": {
3788
- "description": "Thread ID",
3789
- "name": "thread_id",
3770
+ "doc_id": {
3771
+ "description": "Document ID",
3772
+ "name": "doc_id",
3790
3773
  "required": true
3791
3774
  }
3792
3775
  },
3793
- "description": "Get a thread by ID",
3776
+ "description": "Edit a document (label, content, or perspective)",
3794
3777
  "flags": {
3795
3778
  "json": {
3796
3779
  "description": "Format output as json.",
@@ -3822,11 +3805,43 @@
3822
3805
  "hasDynamicHelp": false,
3823
3806
  "multiple": false,
3824
3807
  "type": "option"
3808
+ },
3809
+ "label": {
3810
+ "description": "New label/title",
3811
+ "name": "label",
3812
+ "hasDynamicHelp": false,
3813
+ "multiple": false,
3814
+ "type": "option"
3815
+ },
3816
+ "content": {
3817
+ "description": "New inline text content",
3818
+ "name": "content",
3819
+ "hasDynamicHelp": false,
3820
+ "multiple": false,
3821
+ "type": "option"
3822
+ },
3823
+ "file": {
3824
+ "description": "Read new content from file",
3825
+ "name": "file",
3826
+ "hasDynamicHelp": false,
3827
+ "multiple": false,
3828
+ "type": "option"
3829
+ },
3830
+ "perspective": {
3831
+ "description": "Perspective (first-person or third-person)",
3832
+ "name": "perspective",
3833
+ "hasDynamicHelp": false,
3834
+ "multiple": false,
3835
+ "options": [
3836
+ "first-person",
3837
+ "third-person"
3838
+ ],
3839
+ "type": "option"
3825
3840
  }
3826
3841
  },
3827
3842
  "hasDynamicHelp": false,
3828
3843
  "hiddenAliases": [],
3829
- "id": "compile:thread:get",
3844
+ "id": "compile:doc:edit",
3830
3845
  "pluginAlias": "faces-cli",
3831
3846
  "pluginName": "faces-cli",
3832
3847
  "pluginType": "core",
@@ -3837,20 +3852,20 @@
3837
3852
  "dist",
3838
3853
  "commands",
3839
3854
  "compile",
3840
- "thread",
3841
- "get.js"
3855
+ "doc",
3856
+ "edit.js"
3842
3857
  ]
3843
3858
  },
3844
- "compile:thread:list": {
3859
+ "compile:doc:get": {
3845
3860
  "aliases": [],
3846
3861
  "args": {
3847
- "face_id": {
3848
- "description": "Face alias",
3849
- "name": "face_id",
3862
+ "doc_id": {
3863
+ "description": "Document ID",
3864
+ "name": "doc_id",
3850
3865
  "required": true
3851
3866
  }
3852
3867
  },
3853
- "description": "List threads for a face",
3868
+ "description": "Get a document by ID",
3854
3869
  "flags": {
3855
3870
  "json": {
3856
3871
  "description": "Format output as json.",
@@ -3886,7 +3901,7 @@
3886
3901
  },
3887
3902
  "hasDynamicHelp": false,
3888
3903
  "hiddenAliases": [],
3889
- "id": "compile:thread:list",
3904
+ "id": "compile:doc:get",
3890
3905
  "pluginAlias": "faces-cli",
3891
3906
  "pluginName": "faces-cli",
3892
3907
  "pluginType": "core",
@@ -3897,20 +3912,20 @@
3897
3912
  "dist",
3898
3913
  "commands",
3899
3914
  "compile",
3900
- "thread",
3901
- "list.js"
3915
+ "doc",
3916
+ "get.js"
3902
3917
  ]
3903
3918
  },
3904
- "compile:thread:make": {
3919
+ "compile:doc": {
3905
3920
  "aliases": [],
3906
3921
  "args": {
3907
- "thread_id": {
3908
- "description": "Thread ID",
3909
- "name": "thread_id",
3922
+ "face_id": {
3923
+ "description": "Face alias",
3924
+ "name": "face_id",
3910
3925
  "required": true
3911
3926
  }
3912
3927
  },
3913
- "description": "Compile an existing thread (prepare + sync in one step)",
3928
+ "description": "Compile a document into a face (create make in one step)",
3914
3929
  "flags": {
3915
3930
  "json": {
3916
3931
  "description": "Format output as json.",
@@ -3943,6 +3958,39 @@
3943
3958
  "multiple": false,
3944
3959
  "type": "option"
3945
3960
  },
3961
+ "label": {
3962
+ "description": "Document label/title",
3963
+ "name": "label",
3964
+ "hasDynamicHelp": false,
3965
+ "multiple": false,
3966
+ "type": "option"
3967
+ },
3968
+ "content": {
3969
+ "description": "Inline text content",
3970
+ "name": "content",
3971
+ "hasDynamicHelp": false,
3972
+ "multiple": false,
3973
+ "type": "option"
3974
+ },
3975
+ "file": {
3976
+ "description": "Read content from file",
3977
+ "name": "file",
3978
+ "hasDynamicHelp": false,
3979
+ "multiple": false,
3980
+ "type": "option"
3981
+ },
3982
+ "perspective": {
3983
+ "description": "Perspective",
3984
+ "name": "perspective",
3985
+ "default": "first-person",
3986
+ "hasDynamicHelp": false,
3987
+ "multiple": false,
3988
+ "options": [
3989
+ "first-person",
3990
+ "third-person"
3991
+ ],
3992
+ "type": "option"
3993
+ },
3946
3994
  "timeout": {
3947
3995
  "description": "Compile timeout in seconds (default: 600)",
3948
3996
  "name": "timeout",
@@ -3952,7 +4000,7 @@
3952
4000
  "type": "option"
3953
4001
  },
3954
4002
  "no-wait": {
3955
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
4003
+ "description": "Create and trigger compilation, then return immediately without polling.",
3956
4004
  "name": "no-wait",
3957
4005
  "allowNo": false,
3958
4006
  "type": "boolean"
@@ -3960,7 +4008,7 @@
3960
4008
  },
3961
4009
  "hasDynamicHelp": false,
3962
4010
  "hiddenAliases": [],
3963
- "id": "compile:thread:make",
4011
+ "id": "compile:doc",
3964
4012
  "pluginAlias": "faces-cli",
3965
4013
  "pluginName": "faces-cli",
3966
4014
  "pluginType": "core",
@@ -3971,20 +4019,20 @@
3971
4019
  "dist",
3972
4020
  "commands",
3973
4021
  "compile",
3974
- "thread",
3975
- "make.js"
4022
+ "doc",
4023
+ "index.js"
3976
4024
  ]
3977
4025
  },
3978
- "compile:thread:message": {
4026
+ "compile:doc:list": {
3979
4027
  "aliases": [],
3980
4028
  "args": {
3981
- "thread_id": {
3982
- "description": "Thread ID",
3983
- "name": "thread_id",
4029
+ "face_id": {
4030
+ "description": "Face alias",
4031
+ "name": "face_id",
3984
4032
  "required": true
3985
4033
  }
3986
4034
  },
3987
- "description": "Send a user message to a thread",
4035
+ "description": "List documents for a face",
3988
4036
  "flags": {
3989
4037
  "json": {
3990
4038
  "description": "Format output as json.",
@@ -4016,20 +4064,11 @@
4016
4064
  "hasDynamicHelp": false,
4017
4065
  "multiple": false,
4018
4066
  "type": "option"
4019
- },
4020
- "message": {
4021
- "char": "m",
4022
- "description": "User message to append",
4023
- "name": "message",
4024
- "required": true,
4025
- "hasDynamicHelp": false,
4026
- "multiple": false,
4027
- "type": "option"
4028
4067
  }
4029
4068
  },
4030
4069
  "hasDynamicHelp": false,
4031
4070
  "hiddenAliases": [],
4032
- "id": "compile:thread:message",
4071
+ "id": "compile:doc:list",
4033
4072
  "pluginAlias": "faces-cli",
4034
4073
  "pluginName": "faces-cli",
4035
4074
  "pluginType": "core",
@@ -4040,20 +4079,20 @@
4040
4079
  "dist",
4041
4080
  "commands",
4042
4081
  "compile",
4043
- "thread",
4044
- "message.js"
4082
+ "doc",
4083
+ "list.js"
4045
4084
  ]
4046
4085
  },
4047
- "compile:thread:pause": {
4086
+ "compile:doc:make": {
4048
4087
  "aliases": [],
4049
4088
  "args": {
4050
- "thread_id": {
4051
- "description": "Thread ID",
4052
- "name": "thread_id",
4089
+ "doc_id": {
4090
+ "description": "Document ID",
4091
+ "name": "doc_id",
4053
4092
  "required": true
4054
4093
  }
4055
4094
  },
4056
- "description": "Pause a running thread compilation (preserves progress, resume with make)",
4095
+ "description": "Compile an existing document (prepare + sync in one step)",
4057
4096
  "flags": {
4058
4097
  "json": {
4059
4098
  "description": "Format output as json.",
@@ -4085,11 +4124,25 @@
4085
4124
  "hasDynamicHelp": false,
4086
4125
  "multiple": false,
4087
4126
  "type": "option"
4127
+ },
4128
+ "timeout": {
4129
+ "description": "Compile timeout in seconds (default: 600)",
4130
+ "name": "timeout",
4131
+ "default": 600,
4132
+ "hasDynamicHelp": false,
4133
+ "multiple": false,
4134
+ "type": "option"
4135
+ },
4136
+ "no-wait": {
4137
+ "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
4138
+ "name": "no-wait",
4139
+ "allowNo": false,
4140
+ "type": "boolean"
4088
4141
  }
4089
4142
  },
4090
4143
  "hasDynamicHelp": false,
4091
4144
  "hiddenAliases": [],
4092
- "id": "compile:thread:pause",
4145
+ "id": "compile:doc:make",
4093
4146
  "pluginAlias": "faces-cli",
4094
4147
  "pluginName": "faces-cli",
4095
4148
  "pluginType": "core",
@@ -4100,20 +4153,20 @@
4100
4153
  "dist",
4101
4154
  "commands",
4102
4155
  "compile",
4103
- "thread",
4104
- "pause.js"
4156
+ "doc",
4157
+ "make.js"
4105
4158
  ]
4106
4159
  },
4107
- "compile:thread:reset": {
4160
+ "compile:doc:pause": {
4108
4161
  "aliases": [],
4109
4162
  "args": {
4110
- "thread_id": {
4111
- "description": "Thread ID",
4112
- "name": "thread_id",
4163
+ "doc_id": {
4164
+ "description": "Document ID",
4165
+ "name": "doc_id",
4113
4166
  "required": true
4114
4167
  }
4115
4168
  },
4116
- "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
4169
+ "description": "Pause a running document compilation (preserves progress, resume with make)",
4117
4170
  "flags": {
4118
4171
  "json": {
4119
4172
  "description": "Format output as json.",
@@ -4145,17 +4198,11 @@
4145
4198
  "hasDynamicHelp": false,
4146
4199
  "multiple": false,
4147
4200
  "type": "option"
4148
- },
4149
- "yes": {
4150
- "description": "Skip confirmation",
4151
- "name": "yes",
4152
- "allowNo": false,
4153
- "type": "boolean"
4154
4201
  }
4155
4202
  },
4156
4203
  "hasDynamicHelp": false,
4157
4204
  "hiddenAliases": [],
4158
- "id": "compile:thread:reset",
4205
+ "id": "compile:doc:pause",
4159
4206
  "pluginAlias": "faces-cli",
4160
4207
  "pluginName": "faces-cli",
4161
4208
  "pluginType": "core",
@@ -4166,20 +4213,20 @@
4166
4213
  "dist",
4167
4214
  "commands",
4168
4215
  "compile",
4169
- "thread",
4170
- "reset.js"
4216
+ "doc",
4217
+ "pause.js"
4171
4218
  ]
4172
4219
  },
4173
- "compile:thread:sync": {
4220
+ "compile:doc:reset": {
4174
4221
  "aliases": [],
4175
4222
  "args": {
4176
- "thread_id": {
4177
- "description": "Thread ID",
4178
- "name": "thread_id",
4223
+ "doc_id": {
4224
+ "description": "Document ID",
4225
+ "name": "doc_id",
4179
4226
  "required": true
4180
4227
  }
4181
4228
  },
4182
- "description": "Archive and sync a thread into a face",
4229
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
4183
4230
  "flags": {
4184
4231
  "json": {
4185
4232
  "description": "Format output as json.",
@@ -4211,11 +4258,17 @@
4211
4258
  "hasDynamicHelp": false,
4212
4259
  "multiple": false,
4213
4260
  "type": "option"
4261
+ },
4262
+ "yes": {
4263
+ "description": "Skip confirmation",
4264
+ "name": "yes",
4265
+ "allowNo": false,
4266
+ "type": "boolean"
4214
4267
  }
4215
4268
  },
4216
4269
  "hasDynamicHelp": false,
4217
4270
  "hiddenAliases": [],
4218
- "id": "compile:thread:sync",
4271
+ "id": "compile:doc:reset",
4219
4272
  "pluginAlias": "faces-cli",
4220
4273
  "pluginName": "faces-cli",
4221
4274
  "pluginType": "core",
@@ -4226,10 +4279,10 @@
4226
4279
  "dist",
4227
4280
  "commands",
4228
4281
  "compile",
4229
- "thread",
4230
- "sync.js"
4282
+ "doc",
4283
+ "reset.js"
4231
4284
  ]
4232
4285
  }
4233
4286
  },
4234
- "version": "1.5.11"
4287
+ "version": "1.5.13"
4235
4288
  }