faces-cli 1.5.4 → 1.5.6

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.
@@ -495,6 +495,18 @@
495
495
  "hasDynamicHelp": false,
496
496
  "multiple": false,
497
497
  "type": "option"
498
+ },
499
+ "plan": {
500
+ "description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
501
+ "name": "plan",
502
+ "default": "free",
503
+ "hasDynamicHelp": false,
504
+ "multiple": false,
505
+ "options": [
506
+ "free",
507
+ "connect"
508
+ ],
509
+ "type": "option"
498
510
  }
499
511
  },
500
512
  "hasDynamicHelp": false,
@@ -1837,10 +1849,10 @@
1837
1849
  "show.js"
1838
1850
  ]
1839
1851
  },
1840
- "face:create": {
1852
+ "keys:create": {
1841
1853
  "aliases": [],
1842
1854
  "args": {},
1843
- "description": "Create a new face",
1855
+ "description": "Create a new API key (JWT required)",
1844
1856
  "flags": {
1845
1857
  "json": {
1846
1858
  "description": "Format output as json.",
@@ -1874,52 +1886,37 @@
1874
1886
  "type": "option"
1875
1887
  },
1876
1888
  "name": {
1877
- "description": "Display name",
1889
+ "description": "Key name/label",
1878
1890
  "name": "name",
1879
1891
  "required": true,
1880
1892
  "hasDynamicHelp": false,
1881
1893
  "multiple": false,
1882
1894
  "type": "option"
1883
1895
  },
1884
- "alias": {
1885
- "description": "Unique alias slug",
1886
- "name": "alias",
1887
- "required": true,
1888
- "hasDynamicHelp": false,
1889
- "multiple": false,
1890
- "type": "option"
1891
- },
1892
- "description": {
1893
- "description": "Description for local catalog",
1894
- "name": "description",
1895
- "hasDynamicHelp": false,
1896
- "multiple": false,
1897
- "type": "option"
1898
- },
1899
- "default-model": {
1900
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1901
- "name": "default-model",
1896
+ "expires-days": {
1897
+ "description": "Expiry in days (omit for no expiry)",
1898
+ "name": "expires-days",
1902
1899
  "hasDynamicHelp": false,
1903
1900
  "multiple": false,
1904
1901
  "type": "option"
1905
1902
  },
1906
- "formula": {
1907
- "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
1908
- "name": "formula",
1903
+ "budget": {
1904
+ "description": "Spend budget in USD",
1905
+ "name": "budget",
1909
1906
  "hasDynamicHelp": false,
1910
1907
  "multiple": false,
1911
1908
  "type": "option"
1912
1909
  },
1913
- "attr": {
1914
- "description": "Attribute KEY=VALUE (repeatable)",
1915
- "name": "attr",
1910
+ "face": {
1911
+ "description": "Allowed face alias (repeatable)",
1912
+ "name": "face",
1916
1913
  "hasDynamicHelp": false,
1917
1914
  "multiple": true,
1918
1915
  "type": "option"
1919
1916
  },
1920
- "tool": {
1921
- "description": "Tool name to enable (repeatable)",
1922
- "name": "tool",
1917
+ "model": {
1918
+ "description": "Allowed model name (repeatable)",
1919
+ "name": "model",
1923
1920
  "hasDynamicHelp": false,
1924
1921
  "multiple": true,
1925
1922
  "type": "option"
@@ -1927,7 +1924,7 @@
1927
1924
  },
1928
1925
  "hasDynamicHelp": false,
1929
1926
  "hiddenAliases": [],
1930
- "id": "face:create",
1927
+ "id": "keys:create",
1931
1928
  "pluginAlias": "faces-cli",
1932
1929
  "pluginName": "faces-cli",
1933
1930
  "pluginType": "core",
@@ -1937,20 +1934,14 @@
1937
1934
  "relativePath": [
1938
1935
  "dist",
1939
1936
  "commands",
1940
- "face",
1937
+ "keys",
1941
1938
  "create.js"
1942
1939
  ]
1943
1940
  },
1944
- "face:delete": {
1941
+ "keys:list": {
1945
1942
  "aliases": [],
1946
- "args": {
1947
- "face_id": {
1948
- "description": "Face alias",
1949
- "name": "face_id",
1950
- "required": true
1951
- }
1952
- },
1953
- "description": "Delete a face permanently",
1943
+ "args": {},
1944
+ "description": "List all API keys (JWT required)",
1954
1945
  "flags": {
1955
1946
  "json": {
1956
1947
  "description": "Format output as json.",
@@ -1982,17 +1973,11 @@
1982
1973
  "hasDynamicHelp": false,
1983
1974
  "multiple": false,
1984
1975
  "type": "option"
1985
- },
1986
- "yes": {
1987
- "description": "Skip confirmation",
1988
- "name": "yes",
1989
- "allowNo": false,
1990
- "type": "boolean"
1991
1976
  }
1992
1977
  },
1993
1978
  "hasDynamicHelp": false,
1994
1979
  "hiddenAliases": [],
1995
- "id": "face:delete",
1980
+ "id": "keys:list",
1996
1981
  "pluginAlias": "faces-cli",
1997
1982
  "pluginName": "faces-cli",
1998
1983
  "pluginType": "core",
@@ -2002,14 +1987,20 @@
2002
1987
  "relativePath": [
2003
1988
  "dist",
2004
1989
  "commands",
2005
- "face",
2006
- "delete.js"
1990
+ "keys",
1991
+ "list.js"
2007
1992
  ]
2008
1993
  },
2009
- "face:diff": {
1994
+ "keys:revoke": {
2010
1995
  "aliases": [],
2011
- "args": {},
2012
- "description": "Compare owned faces pairwise across all centroid components",
1996
+ "args": {
1997
+ "key_id": {
1998
+ "description": "Key ID",
1999
+ "name": "key_id",
2000
+ "required": true
2001
+ }
2002
+ },
2003
+ "description": "Revoke an API key (JWT required)",
2013
2004
  "flags": {
2014
2005
  "json": {
2015
2006
  "description": "Format output as json.",
@@ -2042,18 +2033,16 @@
2042
2033
  "multiple": false,
2043
2034
  "type": "option"
2044
2035
  },
2045
- "face": {
2046
- "description": "Face alias to include (repeatable, min 2)",
2047
- "name": "face",
2048
- "required": true,
2049
- "hasDynamicHelp": false,
2050
- "multiple": true,
2051
- "type": "option"
2036
+ "yes": {
2037
+ "description": "Skip confirmation",
2038
+ "name": "yes",
2039
+ "allowNo": false,
2040
+ "type": "boolean"
2052
2041
  }
2053
2042
  },
2054
2043
  "hasDynamicHelp": false,
2055
2044
  "hiddenAliases": [],
2056
- "id": "face:diff",
2045
+ "id": "keys:revoke",
2057
2046
  "pluginAlias": "faces-cli",
2058
2047
  "pluginName": "faces-cli",
2059
2048
  "pluginType": "core",
@@ -2063,20 +2052,20 @@
2063
2052
  "relativePath": [
2064
2053
  "dist",
2065
2054
  "commands",
2066
- "face",
2067
- "diff.js"
2055
+ "keys",
2056
+ "revoke.js"
2068
2057
  ]
2069
2058
  },
2070
- "face:get": {
2059
+ "keys:update": {
2071
2060
  "aliases": [],
2072
2061
  "args": {
2073
- "face_id": {
2074
- "description": "Face alias",
2075
- "name": "face_id",
2062
+ "key_id": {
2063
+ "description": "Key ID",
2064
+ "name": "key_id",
2076
2065
  "required": true
2077
2066
  }
2078
2067
  },
2079
- "description": "Get details for a face by alias",
2068
+ "description": "Update API key metadata (JWT required)",
2080
2069
  "flags": {
2081
2070
  "json": {
2082
2071
  "description": "Format output as json.",
@@ -2108,11 +2097,31 @@
2108
2097
  "hasDynamicHelp": false,
2109
2098
  "multiple": false,
2110
2099
  "type": "option"
2100
+ },
2101
+ "name": {
2102
+ "description": "New key name",
2103
+ "name": "name",
2104
+ "hasDynamicHelp": false,
2105
+ "multiple": false,
2106
+ "type": "option"
2107
+ },
2108
+ "budget": {
2109
+ "description": "New spend budget in USD",
2110
+ "name": "budget",
2111
+ "hasDynamicHelp": false,
2112
+ "multiple": false,
2113
+ "type": "option"
2114
+ },
2115
+ "reset-spent": {
2116
+ "description": "Reset spent amount to zero",
2117
+ "name": "reset-spent",
2118
+ "allowNo": false,
2119
+ "type": "boolean"
2111
2120
  }
2112
2121
  },
2113
2122
  "hasDynamicHelp": false,
2114
2123
  "hiddenAliases": [],
2115
- "id": "face:get",
2124
+ "id": "keys:update",
2116
2125
  "pluginAlias": "faces-cli",
2117
2126
  "pluginName": "faces-cli",
2118
2127
  "pluginType": "core",
@@ -2122,14 +2131,14 @@
2122
2131
  "relativePath": [
2123
2132
  "dist",
2124
2133
  "commands",
2125
- "face",
2126
- "get.js"
2134
+ "keys",
2135
+ "update.js"
2127
2136
  ]
2128
2137
  },
2129
- "face:list": {
2138
+ "face:create": {
2130
2139
  "aliases": [],
2131
2140
  "args": {},
2132
- "description": "List all owned faces",
2141
+ "description": "Create a new face",
2133
2142
  "flags": {
2134
2143
  "json": {
2135
2144
  "description": "Format output as json.",
@@ -2161,11 +2170,62 @@
2161
2170
  "hasDynamicHelp": false,
2162
2171
  "multiple": false,
2163
2172
  "type": "option"
2173
+ },
2174
+ "name": {
2175
+ "description": "Display name",
2176
+ "name": "name",
2177
+ "required": true,
2178
+ "hasDynamicHelp": false,
2179
+ "multiple": false,
2180
+ "type": "option"
2181
+ },
2182
+ "alias": {
2183
+ "description": "Unique alias slug",
2184
+ "name": "alias",
2185
+ "required": true,
2186
+ "hasDynamicHelp": false,
2187
+ "multiple": false,
2188
+ "type": "option"
2189
+ },
2190
+ "description": {
2191
+ "description": "Description for local catalog",
2192
+ "name": "description",
2193
+ "hasDynamicHelp": false,
2194
+ "multiple": false,
2195
+ "type": "option"
2196
+ },
2197
+ "default-model": {
2198
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2199
+ "name": "default-model",
2200
+ "hasDynamicHelp": false,
2201
+ "multiple": false,
2202
+ "type": "option"
2203
+ },
2204
+ "formula": {
2205
+ "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2206
+ "name": "formula",
2207
+ "hasDynamicHelp": false,
2208
+ "multiple": false,
2209
+ "type": "option"
2210
+ },
2211
+ "attr": {
2212
+ "description": "Attribute KEY=VALUE (repeatable)",
2213
+ "name": "attr",
2214
+ "hasDynamicHelp": false,
2215
+ "multiple": true,
2216
+ "type": "option"
2217
+ },
2218
+ "tool": {
2219
+ "description": "Tool name to enable (repeatable)",
2220
+ "name": "tool",
2221
+ "hasDynamicHelp": false,
2222
+ "multiple": true,
2223
+ "type": "option"
2164
2224
  }
2165
2225
  },
2166
2226
  "hasDynamicHelp": false,
2167
2227
  "hiddenAliases": [],
2168
- "id": "face:list",
2228
+ "id": "face:create",
2169
2229
  "pluginAlias": "faces-cli",
2170
2230
  "pluginName": "faces-cli",
2171
2231
  "pluginType": "core",
@@ -2176,10 +2236,10 @@
2176
2236
  "dist",
2177
2237
  "commands",
2178
2238
  "face",
2179
- "list.js"
2239
+ "create.js"
2180
2240
  ]
2181
2241
  },
2182
- "face:neighbors": {
2242
+ "face:delete": {
2183
2243
  "aliases": [],
2184
2244
  "args": {
2185
2245
  "face_id": {
@@ -2188,7 +2248,7 @@
2188
2248
  "required": true
2189
2249
  }
2190
2250
  },
2191
- "description": "Find the most similar or dissimilar owned faces to a given face",
2251
+ "description": "Delete a face permanently",
2192
2252
  "flags": {
2193
2253
  "json": {
2194
2254
  "description": "Format output as json.",
@@ -2221,44 +2281,16 @@
2221
2281
  "multiple": false,
2222
2282
  "type": "option"
2223
2283
  },
2224
- "k": {
2225
- "description": "Number of results (1–20)",
2226
- "name": "k",
2227
- "default": 5,
2228
- "hasDynamicHelp": false,
2229
- "multiple": false,
2230
- "type": "option"
2231
- },
2232
- "component": {
2233
- "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2234
- "name": "component",
2235
- "default": "face",
2236
- "hasDynamicHelp": false,
2237
- "multiple": false,
2238
- "options": [
2239
- "face",
2240
- "beta",
2241
- "delta",
2242
- "epsilon"
2243
- ],
2244
- "type": "option"
2245
- },
2246
- "direction": {
2247
- "description": "nearest (most similar) or furthest (most dissimilar)",
2248
- "name": "direction",
2249
- "default": "nearest",
2250
- "hasDynamicHelp": false,
2251
- "multiple": false,
2252
- "options": [
2253
- "nearest",
2254
- "furthest"
2255
- ],
2256
- "type": "option"
2284
+ "yes": {
2285
+ "description": "Skip confirmation",
2286
+ "name": "yes",
2287
+ "allowNo": false,
2288
+ "type": "boolean"
2257
2289
  }
2258
2290
  },
2259
2291
  "hasDynamicHelp": false,
2260
2292
  "hiddenAliases": [],
2261
- "id": "face:neighbors",
2293
+ "id": "face:delete",
2262
2294
  "pluginAlias": "faces-cli",
2263
2295
  "pluginName": "faces-cli",
2264
2296
  "pluginType": "core",
@@ -2269,13 +2301,279 @@
2269
2301
  "dist",
2270
2302
  "commands",
2271
2303
  "face",
2272
- "neighbors.js"
2304
+ "delete.js"
2273
2305
  ]
2274
2306
  },
2275
- "face:stats": {
2307
+ "face:diff": {
2276
2308
  "aliases": [],
2277
2309
  "args": {},
2278
- "description": "Compile and chat stats for all owned faces",
2310
+ "description": "Compare owned faces pairwise across all centroid components",
2311
+ "flags": {
2312
+ "json": {
2313
+ "description": "Format output as json.",
2314
+ "helpGroup": "GLOBAL",
2315
+ "name": "json",
2316
+ "allowNo": false,
2317
+ "type": "boolean"
2318
+ },
2319
+ "base-url": {
2320
+ "description": "API base URL",
2321
+ "env": "FACES_BASE_URL",
2322
+ "name": "base-url",
2323
+ "hasDynamicHelp": false,
2324
+ "multiple": false,
2325
+ "type": "option"
2326
+ },
2327
+ "token": {
2328
+ "description": "JWT bearer token",
2329
+ "env": "FACES_TOKEN",
2330
+ "name": "token",
2331
+ "hasDynamicHelp": false,
2332
+ "multiple": false,
2333
+ "type": "option"
2334
+ },
2335
+ "api-key": {
2336
+ "description": "API key",
2337
+ "env": "FACES_API_KEY",
2338
+ "name": "api-key",
2339
+ "hasDynamicHelp": false,
2340
+ "multiple": false,
2341
+ "type": "option"
2342
+ },
2343
+ "face": {
2344
+ "description": "Face alias to include (repeatable, min 2)",
2345
+ "name": "face",
2346
+ "required": true,
2347
+ "hasDynamicHelp": false,
2348
+ "multiple": true,
2349
+ "type": "option"
2350
+ }
2351
+ },
2352
+ "hasDynamicHelp": false,
2353
+ "hiddenAliases": [],
2354
+ "id": "face:diff",
2355
+ "pluginAlias": "faces-cli",
2356
+ "pluginName": "faces-cli",
2357
+ "pluginType": "core",
2358
+ "strict": true,
2359
+ "enableJsonFlag": true,
2360
+ "isESM": true,
2361
+ "relativePath": [
2362
+ "dist",
2363
+ "commands",
2364
+ "face",
2365
+ "diff.js"
2366
+ ]
2367
+ },
2368
+ "face:get": {
2369
+ "aliases": [],
2370
+ "args": {
2371
+ "face_id": {
2372
+ "description": "Face alias",
2373
+ "name": "face_id",
2374
+ "required": true
2375
+ }
2376
+ },
2377
+ "description": "Get details for a face by alias",
2378
+ "flags": {
2379
+ "json": {
2380
+ "description": "Format output as json.",
2381
+ "helpGroup": "GLOBAL",
2382
+ "name": "json",
2383
+ "allowNo": false,
2384
+ "type": "boolean"
2385
+ },
2386
+ "base-url": {
2387
+ "description": "API base URL",
2388
+ "env": "FACES_BASE_URL",
2389
+ "name": "base-url",
2390
+ "hasDynamicHelp": false,
2391
+ "multiple": false,
2392
+ "type": "option"
2393
+ },
2394
+ "token": {
2395
+ "description": "JWT bearer token",
2396
+ "env": "FACES_TOKEN",
2397
+ "name": "token",
2398
+ "hasDynamicHelp": false,
2399
+ "multiple": false,
2400
+ "type": "option"
2401
+ },
2402
+ "api-key": {
2403
+ "description": "API key",
2404
+ "env": "FACES_API_KEY",
2405
+ "name": "api-key",
2406
+ "hasDynamicHelp": false,
2407
+ "multiple": false,
2408
+ "type": "option"
2409
+ }
2410
+ },
2411
+ "hasDynamicHelp": false,
2412
+ "hiddenAliases": [],
2413
+ "id": "face:get",
2414
+ "pluginAlias": "faces-cli",
2415
+ "pluginName": "faces-cli",
2416
+ "pluginType": "core",
2417
+ "strict": true,
2418
+ "enableJsonFlag": true,
2419
+ "isESM": true,
2420
+ "relativePath": [
2421
+ "dist",
2422
+ "commands",
2423
+ "face",
2424
+ "get.js"
2425
+ ]
2426
+ },
2427
+ "face:list": {
2428
+ "aliases": [],
2429
+ "args": {},
2430
+ "description": "List all owned faces",
2431
+ "flags": {
2432
+ "json": {
2433
+ "description": "Format output as json.",
2434
+ "helpGroup": "GLOBAL",
2435
+ "name": "json",
2436
+ "allowNo": false,
2437
+ "type": "boolean"
2438
+ },
2439
+ "base-url": {
2440
+ "description": "API base URL",
2441
+ "env": "FACES_BASE_URL",
2442
+ "name": "base-url",
2443
+ "hasDynamicHelp": false,
2444
+ "multiple": false,
2445
+ "type": "option"
2446
+ },
2447
+ "token": {
2448
+ "description": "JWT bearer token",
2449
+ "env": "FACES_TOKEN",
2450
+ "name": "token",
2451
+ "hasDynamicHelp": false,
2452
+ "multiple": false,
2453
+ "type": "option"
2454
+ },
2455
+ "api-key": {
2456
+ "description": "API key",
2457
+ "env": "FACES_API_KEY",
2458
+ "name": "api-key",
2459
+ "hasDynamicHelp": false,
2460
+ "multiple": false,
2461
+ "type": "option"
2462
+ }
2463
+ },
2464
+ "hasDynamicHelp": false,
2465
+ "hiddenAliases": [],
2466
+ "id": "face:list",
2467
+ "pluginAlias": "faces-cli",
2468
+ "pluginName": "faces-cli",
2469
+ "pluginType": "core",
2470
+ "strict": true,
2471
+ "enableJsonFlag": true,
2472
+ "isESM": true,
2473
+ "relativePath": [
2474
+ "dist",
2475
+ "commands",
2476
+ "face",
2477
+ "list.js"
2478
+ ]
2479
+ },
2480
+ "face:neighbors": {
2481
+ "aliases": [],
2482
+ "args": {
2483
+ "face_id": {
2484
+ "description": "Face alias",
2485
+ "name": "face_id",
2486
+ "required": true
2487
+ }
2488
+ },
2489
+ "description": "Find the most similar or dissimilar owned faces to a given face",
2490
+ "flags": {
2491
+ "json": {
2492
+ "description": "Format output as json.",
2493
+ "helpGroup": "GLOBAL",
2494
+ "name": "json",
2495
+ "allowNo": false,
2496
+ "type": "boolean"
2497
+ },
2498
+ "base-url": {
2499
+ "description": "API base URL",
2500
+ "env": "FACES_BASE_URL",
2501
+ "name": "base-url",
2502
+ "hasDynamicHelp": false,
2503
+ "multiple": false,
2504
+ "type": "option"
2505
+ },
2506
+ "token": {
2507
+ "description": "JWT bearer token",
2508
+ "env": "FACES_TOKEN",
2509
+ "name": "token",
2510
+ "hasDynamicHelp": false,
2511
+ "multiple": false,
2512
+ "type": "option"
2513
+ },
2514
+ "api-key": {
2515
+ "description": "API key",
2516
+ "env": "FACES_API_KEY",
2517
+ "name": "api-key",
2518
+ "hasDynamicHelp": false,
2519
+ "multiple": false,
2520
+ "type": "option"
2521
+ },
2522
+ "k": {
2523
+ "description": "Number of results (1–20)",
2524
+ "name": "k",
2525
+ "default": 5,
2526
+ "hasDynamicHelp": false,
2527
+ "multiple": false,
2528
+ "type": "option"
2529
+ },
2530
+ "component": {
2531
+ "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2532
+ "name": "component",
2533
+ "default": "face",
2534
+ "hasDynamicHelp": false,
2535
+ "multiple": false,
2536
+ "options": [
2537
+ "face",
2538
+ "beta",
2539
+ "delta",
2540
+ "epsilon"
2541
+ ],
2542
+ "type": "option"
2543
+ },
2544
+ "direction": {
2545
+ "description": "nearest (most similar) or furthest (most dissimilar)",
2546
+ "name": "direction",
2547
+ "default": "nearest",
2548
+ "hasDynamicHelp": false,
2549
+ "multiple": false,
2550
+ "options": [
2551
+ "nearest",
2552
+ "furthest"
2553
+ ],
2554
+ "type": "option"
2555
+ }
2556
+ },
2557
+ "hasDynamicHelp": false,
2558
+ "hiddenAliases": [],
2559
+ "id": "face:neighbors",
2560
+ "pluginAlias": "faces-cli",
2561
+ "pluginName": "faces-cli",
2562
+ "pluginType": "core",
2563
+ "strict": true,
2564
+ "enableJsonFlag": true,
2565
+ "isESM": true,
2566
+ "relativePath": [
2567
+ "dist",
2568
+ "commands",
2569
+ "face",
2570
+ "neighbors.js"
2571
+ ]
2572
+ },
2573
+ "face:stats": {
2574
+ "aliases": [],
2575
+ "args": {},
2576
+ "description": "Compile and chat stats for all owned faces",
2279
2577
  "flags": {
2280
2578
  "json": {
2281
2579
  "description": "Format output as json.",
@@ -2524,10 +2822,16 @@
2524
2822
  "upload.js"
2525
2823
  ]
2526
2824
  },
2527
- "keys:create": {
2825
+ "compile:thread:create": {
2528
2826
  "aliases": [],
2529
- "args": {},
2530
- "description": "Create a new API key (JWT required)",
2827
+ "args": {
2828
+ "face_id": {
2829
+ "description": "Face alias",
2830
+ "name": "face_id",
2831
+ "required": true
2832
+ }
2833
+ },
2834
+ "description": "Start a new thread for a face",
2531
2835
  "flags": {
2532
2836
  "json": {
2533
2837
  "description": "Format output as json.",
@@ -2560,46 +2864,83 @@
2560
2864
  "multiple": false,
2561
2865
  "type": "option"
2562
2866
  },
2563
- "name": {
2564
- "description": "Key name/label",
2565
- "name": "name",
2566
- "required": true,
2867
+ "label": {
2868
+ "description": "Thread label",
2869
+ "name": "label",
2567
2870
  "hasDynamicHelp": false,
2568
2871
  "multiple": false,
2569
2872
  "type": "option"
2873
+ }
2874
+ },
2875
+ "hasDynamicHelp": false,
2876
+ "hiddenAliases": [],
2877
+ "id": "compile:thread:create",
2878
+ "pluginAlias": "faces-cli",
2879
+ "pluginName": "faces-cli",
2880
+ "pluginType": "core",
2881
+ "strict": true,
2882
+ "enableJsonFlag": true,
2883
+ "isESM": true,
2884
+ "relativePath": [
2885
+ "dist",
2886
+ "commands",
2887
+ "compile",
2888
+ "thread",
2889
+ "create.js"
2890
+ ]
2891
+ },
2892
+ "compile:thread:delete": {
2893
+ "aliases": [],
2894
+ "args": {
2895
+ "thread_id": {
2896
+ "description": "Thread ID",
2897
+ "name": "thread_id",
2898
+ "required": true
2899
+ }
2900
+ },
2901
+ "description": "Delete a thread",
2902
+ "flags": {
2903
+ "json": {
2904
+ "description": "Format output as json.",
2905
+ "helpGroup": "GLOBAL",
2906
+ "name": "json",
2907
+ "allowNo": false,
2908
+ "type": "boolean"
2570
2909
  },
2571
- "expires-days": {
2572
- "description": "Expiry in days (omit for no expiry)",
2573
- "name": "expires-days",
2910
+ "base-url": {
2911
+ "description": "API base URL",
2912
+ "env": "FACES_BASE_URL",
2913
+ "name": "base-url",
2574
2914
  "hasDynamicHelp": false,
2575
2915
  "multiple": false,
2576
2916
  "type": "option"
2577
2917
  },
2578
- "budget": {
2579
- "description": "Spend budget in USD",
2580
- "name": "budget",
2918
+ "token": {
2919
+ "description": "JWT bearer token",
2920
+ "env": "FACES_TOKEN",
2921
+ "name": "token",
2581
2922
  "hasDynamicHelp": false,
2582
2923
  "multiple": false,
2583
2924
  "type": "option"
2584
2925
  },
2585
- "face": {
2586
- "description": "Allowed face alias (repeatable)",
2587
- "name": "face",
2926
+ "api-key": {
2927
+ "description": "API key",
2928
+ "env": "FACES_API_KEY",
2929
+ "name": "api-key",
2588
2930
  "hasDynamicHelp": false,
2589
- "multiple": true,
2931
+ "multiple": false,
2590
2932
  "type": "option"
2591
2933
  },
2592
- "model": {
2593
- "description": "Allowed model name (repeatable)",
2594
- "name": "model",
2595
- "hasDynamicHelp": false,
2596
- "multiple": true,
2597
- "type": "option"
2934
+ "yes": {
2935
+ "description": "Skip confirmation",
2936
+ "name": "yes",
2937
+ "allowNo": false,
2938
+ "type": "boolean"
2598
2939
  }
2599
2940
  },
2600
2941
  "hasDynamicHelp": false,
2601
2942
  "hiddenAliases": [],
2602
- "id": "keys:create",
2943
+ "id": "compile:thread:delete",
2603
2944
  "pluginAlias": "faces-cli",
2604
2945
  "pluginName": "faces-cli",
2605
2946
  "pluginType": "core",
@@ -2609,14 +2950,21 @@
2609
2950
  "relativePath": [
2610
2951
  "dist",
2611
2952
  "commands",
2612
- "keys",
2613
- "create.js"
2953
+ "compile",
2954
+ "thread",
2955
+ "delete.js"
2614
2956
  ]
2615
2957
  },
2616
- "keys:list": {
2958
+ "compile:thread:edit": {
2617
2959
  "aliases": [],
2618
- "args": {},
2619
- "description": "List all API keys (JWT required)",
2960
+ "args": {
2961
+ "thread_id": {
2962
+ "description": "Thread ID",
2963
+ "name": "thread_id",
2964
+ "required": true
2965
+ }
2966
+ },
2967
+ "description": "Edit a thread (label and/or reassign face speaker)",
2620
2968
  "flags": {
2621
2969
  "json": {
2622
2970
  "description": "Format output as json.",
@@ -2648,11 +2996,25 @@
2648
2996
  "hasDynamicHelp": false,
2649
2997
  "multiple": false,
2650
2998
  "type": "option"
2999
+ },
3000
+ "label": {
3001
+ "description": "New thread label",
3002
+ "name": "label",
3003
+ "hasDynamicHelp": false,
3004
+ "multiple": false,
3005
+ "type": "option"
3006
+ },
3007
+ "face-speaker": {
3008
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3009
+ "name": "face-speaker",
3010
+ "hasDynamicHelp": false,
3011
+ "multiple": false,
3012
+ "type": "option"
2651
3013
  }
2652
3014
  },
2653
3015
  "hasDynamicHelp": false,
2654
3016
  "hiddenAliases": [],
2655
- "id": "keys:list",
3017
+ "id": "compile:thread:edit",
2656
3018
  "pluginAlias": "faces-cli",
2657
3019
  "pluginName": "faces-cli",
2658
3020
  "pluginType": "core",
@@ -2662,20 +3024,21 @@
2662
3024
  "relativePath": [
2663
3025
  "dist",
2664
3026
  "commands",
2665
- "keys",
2666
- "list.js"
3027
+ "compile",
3028
+ "thread",
3029
+ "edit.js"
2667
3030
  ]
2668
3031
  },
2669
- "keys:revoke": {
3032
+ "compile:thread:get": {
2670
3033
  "aliases": [],
2671
3034
  "args": {
2672
- "key_id": {
2673
- "description": "Key ID",
2674
- "name": "key_id",
3035
+ "thread_id": {
3036
+ "description": "Thread ID",
3037
+ "name": "thread_id",
2675
3038
  "required": true
2676
3039
  }
2677
3040
  },
2678
- "description": "Revoke an API key (JWT required)",
3041
+ "description": "Get a thread by ID",
2679
3042
  "flags": {
2680
3043
  "json": {
2681
3044
  "description": "Format output as json.",
@@ -2707,17 +3070,71 @@
2707
3070
  "hasDynamicHelp": false,
2708
3071
  "multiple": false,
2709
3072
  "type": "option"
2710
- },
2711
- "yes": {
2712
- "description": "Skip confirmation",
2713
- "name": "yes",
3073
+ }
3074
+ },
3075
+ "hasDynamicHelp": false,
3076
+ "hiddenAliases": [],
3077
+ "id": "compile:thread:get",
3078
+ "pluginAlias": "faces-cli",
3079
+ "pluginName": "faces-cli",
3080
+ "pluginType": "core",
3081
+ "strict": true,
3082
+ "enableJsonFlag": true,
3083
+ "isESM": true,
3084
+ "relativePath": [
3085
+ "dist",
3086
+ "commands",
3087
+ "compile",
3088
+ "thread",
3089
+ "get.js"
3090
+ ]
3091
+ },
3092
+ "compile:thread:list": {
3093
+ "aliases": [],
3094
+ "args": {
3095
+ "face_id": {
3096
+ "description": "Face alias",
3097
+ "name": "face_id",
3098
+ "required": true
3099
+ }
3100
+ },
3101
+ "description": "List threads for a face",
3102
+ "flags": {
3103
+ "json": {
3104
+ "description": "Format output as json.",
3105
+ "helpGroup": "GLOBAL",
3106
+ "name": "json",
2714
3107
  "allowNo": false,
2715
3108
  "type": "boolean"
3109
+ },
3110
+ "base-url": {
3111
+ "description": "API base URL",
3112
+ "env": "FACES_BASE_URL",
3113
+ "name": "base-url",
3114
+ "hasDynamicHelp": false,
3115
+ "multiple": false,
3116
+ "type": "option"
3117
+ },
3118
+ "token": {
3119
+ "description": "JWT bearer token",
3120
+ "env": "FACES_TOKEN",
3121
+ "name": "token",
3122
+ "hasDynamicHelp": false,
3123
+ "multiple": false,
3124
+ "type": "option"
3125
+ },
3126
+ "api-key": {
3127
+ "description": "API key",
3128
+ "env": "FACES_API_KEY",
3129
+ "name": "api-key",
3130
+ "hasDynamicHelp": false,
3131
+ "multiple": false,
3132
+ "type": "option"
2716
3133
  }
2717
3134
  },
2718
3135
  "hasDynamicHelp": false,
2719
3136
  "hiddenAliases": [],
2720
- "id": "keys:revoke",
3137
+ "id": "compile:thread:list",
2721
3138
  "pluginAlias": "faces-cli",
2722
3139
  "pluginName": "faces-cli",
2723
3140
  "pluginType": "core",
@@ -2727,20 +3144,21 @@
2727
3144
  "relativePath": [
2728
3145
  "dist",
2729
3146
  "commands",
2730
- "keys",
2731
- "revoke.js"
3147
+ "compile",
3148
+ "thread",
3149
+ "list.js"
2732
3150
  ]
2733
3151
  },
2734
- "keys:update": {
3152
+ "compile:thread:make": {
2735
3153
  "aliases": [],
2736
3154
  "args": {
2737
- "key_id": {
2738
- "description": "Key ID",
2739
- "name": "key_id",
3155
+ "thread_id": {
3156
+ "description": "Thread ID",
3157
+ "name": "thread_id",
2740
3158
  "required": true
2741
3159
  }
2742
3160
  },
2743
- "description": "Update API key metadata (JWT required)",
3161
+ "description": "Compile an existing thread (prepare + sync in one step)",
2744
3162
  "flags": {
2745
3163
  "json": {
2746
3164
  "description": "Format output as json.",
@@ -2773,30 +3191,24 @@
2773
3191
  "multiple": false,
2774
3192
  "type": "option"
2775
3193
  },
2776
- "name": {
2777
- "description": "New key name",
2778
- "name": "name",
2779
- "hasDynamicHelp": false,
2780
- "multiple": false,
2781
- "type": "option"
2782
- },
2783
- "budget": {
2784
- "description": "New spend budget in USD",
2785
- "name": "budget",
3194
+ "timeout": {
3195
+ "description": "Compile timeout in seconds (default: 600)",
3196
+ "name": "timeout",
3197
+ "default": 600,
2786
3198
  "hasDynamicHelp": false,
2787
3199
  "multiple": false,
2788
3200
  "type": "option"
2789
3201
  },
2790
- "reset-spent": {
2791
- "description": "Reset spent amount to zero",
2792
- "name": "reset-spent",
3202
+ "no-wait": {
3203
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3204
+ "name": "no-wait",
2793
3205
  "allowNo": false,
2794
3206
  "type": "boolean"
2795
3207
  }
2796
3208
  },
2797
3209
  "hasDynamicHelp": false,
2798
3210
  "hiddenAliases": [],
2799
- "id": "keys:update",
3211
+ "id": "compile:thread:make",
2800
3212
  "pluginAlias": "faces-cli",
2801
3213
  "pluginName": "faces-cli",
2802
3214
  "pluginType": "core",
@@ -2806,20 +3218,21 @@
2806
3218
  "relativePath": [
2807
3219
  "dist",
2808
3220
  "commands",
2809
- "keys",
2810
- "update.js"
3221
+ "compile",
3222
+ "thread",
3223
+ "make.js"
2811
3224
  ]
2812
3225
  },
2813
- "compile:doc:create": {
3226
+ "compile:thread:message": {
2814
3227
  "aliases": [],
2815
3228
  "args": {
2816
- "face_id": {
2817
- "description": "Face alias",
2818
- "name": "face_id",
3229
+ "thread_id": {
3230
+ "description": "Thread ID",
3231
+ "name": "thread_id",
2819
3232
  "required": true
2820
3233
  }
2821
3234
  },
2822
- "description": "Submit a document to a face",
3235
+ "description": "Send a user message to a thread",
2823
3236
  "flags": {
2824
3237
  "json": {
2825
3238
  "description": "Format output as json.",
@@ -2852,43 +3265,19 @@
2852
3265
  "multiple": false,
2853
3266
  "type": "option"
2854
3267
  },
2855
- "label": {
2856
- "description": "Document label/title",
2857
- "name": "label",
2858
- "hasDynamicHelp": false,
2859
- "multiple": false,
2860
- "type": "option"
2861
- },
2862
- "content": {
2863
- "description": "Inline text content",
2864
- "name": "content",
2865
- "hasDynamicHelp": false,
2866
- "multiple": false,
2867
- "type": "option"
2868
- },
2869
- "file": {
2870
- "description": "Read content from file",
2871
- "name": "file",
2872
- "hasDynamicHelp": false,
2873
- "multiple": false,
2874
- "type": "option"
2875
- },
2876
- "perspective": {
2877
- "description": "Perspective (first-person or third-person)",
2878
- "name": "perspective",
2879
- "default": "first-person",
3268
+ "message": {
3269
+ "char": "m",
3270
+ "description": "User message to append",
3271
+ "name": "message",
3272
+ "required": true,
2880
3273
  "hasDynamicHelp": false,
2881
3274
  "multiple": false,
2882
- "options": [
2883
- "first-person",
2884
- "third-person"
2885
- ],
2886
3275
  "type": "option"
2887
3276
  }
2888
3277
  },
2889
3278
  "hasDynamicHelp": false,
2890
3279
  "hiddenAliases": [],
2891
- "id": "compile:doc:create",
3280
+ "id": "compile:thread:message",
2892
3281
  "pluginAlias": "faces-cli",
2893
3282
  "pluginName": "faces-cli",
2894
3283
  "pluginType": "core",
@@ -2899,20 +3288,20 @@
2899
3288
  "dist",
2900
3289
  "commands",
2901
3290
  "compile",
2902
- "doc",
2903
- "create.js"
3291
+ "thread",
3292
+ "message.js"
2904
3293
  ]
2905
3294
  },
2906
- "compile:doc:delete": {
3295
+ "compile:thread:pause": {
2907
3296
  "aliases": [],
2908
3297
  "args": {
2909
- "doc_id": {
2910
- "description": "Document ID",
2911
- "name": "doc_id",
3298
+ "thread_id": {
3299
+ "description": "Thread ID",
3300
+ "name": "thread_id",
2912
3301
  "required": true
2913
3302
  }
2914
3303
  },
2915
- "description": "Delete a document",
3304
+ "description": "Pause a running thread compilation (preserves progress, resume with make)",
2916
3305
  "flags": {
2917
3306
  "json": {
2918
3307
  "description": "Format output as json.",
@@ -2948,7 +3337,7 @@
2948
3337
  },
2949
3338
  "hasDynamicHelp": false,
2950
3339
  "hiddenAliases": [],
2951
- "id": "compile:doc:delete",
3340
+ "id": "compile:thread:pause",
2952
3341
  "pluginAlias": "faces-cli",
2953
3342
  "pluginName": "faces-cli",
2954
3343
  "pluginType": "core",
@@ -2959,20 +3348,20 @@
2959
3348
  "dist",
2960
3349
  "commands",
2961
3350
  "compile",
2962
- "doc",
2963
- "delete.js"
3351
+ "thread",
3352
+ "pause.js"
2964
3353
  ]
2965
3354
  },
2966
- "compile:doc:edit": {
3355
+ "compile:thread:reset": {
2967
3356
  "aliases": [],
2968
3357
  "args": {
2969
- "doc_id": {
2970
- "description": "Document ID",
2971
- "name": "doc_id",
3358
+ "thread_id": {
3359
+ "description": "Thread ID",
3360
+ "name": "thread_id",
2972
3361
  "required": true
2973
3362
  }
2974
3363
  },
2975
- "description": "Edit a document (label, content, or perspective)",
3364
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
2976
3365
  "flags": {
2977
3366
  "json": {
2978
3367
  "description": "Format output as json.",
@@ -3005,42 +3394,16 @@
3005
3394
  "multiple": false,
3006
3395
  "type": "option"
3007
3396
  },
3008
- "label": {
3009
- "description": "New label/title",
3010
- "name": "label",
3011
- "hasDynamicHelp": false,
3012
- "multiple": false,
3013
- "type": "option"
3014
- },
3015
- "content": {
3016
- "description": "New inline text content",
3017
- "name": "content",
3018
- "hasDynamicHelp": false,
3019
- "multiple": false,
3020
- "type": "option"
3021
- },
3022
- "file": {
3023
- "description": "Read new content from file",
3024
- "name": "file",
3025
- "hasDynamicHelp": false,
3026
- "multiple": false,
3027
- "type": "option"
3028
- },
3029
- "perspective": {
3030
- "description": "Perspective (first-person or third-person)",
3031
- "name": "perspective",
3032
- "hasDynamicHelp": false,
3033
- "multiple": false,
3034
- "options": [
3035
- "first-person",
3036
- "third-person"
3037
- ],
3038
- "type": "option"
3397
+ "yes": {
3398
+ "description": "Skip confirmation",
3399
+ "name": "yes",
3400
+ "allowNo": false,
3401
+ "type": "boolean"
3039
3402
  }
3040
3403
  },
3041
3404
  "hasDynamicHelp": false,
3042
3405
  "hiddenAliases": [],
3043
- "id": "compile:doc:edit",
3406
+ "id": "compile:thread:reset",
3044
3407
  "pluginAlias": "faces-cli",
3045
3408
  "pluginName": "faces-cli",
3046
3409
  "pluginType": "core",
@@ -3051,20 +3414,20 @@
3051
3414
  "dist",
3052
3415
  "commands",
3053
3416
  "compile",
3054
- "doc",
3055
- "edit.js"
3417
+ "thread",
3418
+ "reset.js"
3056
3419
  ]
3057
3420
  },
3058
- "compile:doc:get": {
3421
+ "compile:thread:sync": {
3059
3422
  "aliases": [],
3060
3423
  "args": {
3061
- "doc_id": {
3062
- "description": "Document ID",
3063
- "name": "doc_id",
3424
+ "thread_id": {
3425
+ "description": "Thread ID",
3426
+ "name": "thread_id",
3064
3427
  "required": true
3065
3428
  }
3066
3429
  },
3067
- "description": "Get a document by ID",
3430
+ "description": "Archive and sync a thread into a face",
3068
3431
  "flags": {
3069
3432
  "json": {
3070
3433
  "description": "Format output as json.",
@@ -3100,7 +3463,7 @@
3100
3463
  },
3101
3464
  "hasDynamicHelp": false,
3102
3465
  "hiddenAliases": [],
3103
- "id": "compile:doc:get",
3466
+ "id": "compile:thread:sync",
3104
3467
  "pluginAlias": "faces-cli",
3105
3468
  "pluginName": "faces-cli",
3106
3469
  "pluginType": "core",
@@ -3111,11 +3474,11 @@
3111
3474
  "dist",
3112
3475
  "commands",
3113
3476
  "compile",
3114
- "doc",
3115
- "get.js"
3477
+ "thread",
3478
+ "sync.js"
3116
3479
  ]
3117
3480
  },
3118
- "compile:doc": {
3481
+ "compile:doc:create": {
3119
3482
  "aliases": [],
3120
3483
  "args": {
3121
3484
  "face_id": {
@@ -3124,7 +3487,7 @@
3124
3487
  "required": true
3125
3488
  }
3126
3489
  },
3127
- "description": "Compile a document into a face (create → make in one step)",
3490
+ "description": "Submit a document to a face",
3128
3491
  "flags": {
3129
3492
  "json": {
3130
3493
  "description": "Format output as json.",
@@ -3177,97 +3540,23 @@
3177
3540
  "hasDynamicHelp": false,
3178
3541
  "multiple": false,
3179
3542
  "type": "option"
3180
- },
3181
- "perspective": {
3182
- "description": "Perspective",
3183
- "name": "perspective",
3184
- "default": "first-person",
3185
- "hasDynamicHelp": false,
3186
- "multiple": false,
3187
- "options": [
3188
- "first-person",
3189
- "third-person"
3190
- ],
3191
- "type": "option"
3192
- },
3193
- "timeout": {
3194
- "description": "Compile timeout in seconds (default: 600)",
3195
- "name": "timeout",
3196
- "default": 600,
3197
- "hasDynamicHelp": false,
3198
- "multiple": false,
3199
- "type": "option"
3200
- },
3201
- "no-wait": {
3202
- "description": "Create and trigger compilation, then return immediately without polling.",
3203
- "name": "no-wait",
3204
- "allowNo": false,
3205
- "type": "boolean"
3206
- }
3207
- },
3208
- "hasDynamicHelp": false,
3209
- "hiddenAliases": [],
3210
- "id": "compile:doc",
3211
- "pluginAlias": "faces-cli",
3212
- "pluginName": "faces-cli",
3213
- "pluginType": "core",
3214
- "strict": true,
3215
- "enableJsonFlag": true,
3216
- "isESM": true,
3217
- "relativePath": [
3218
- "dist",
3219
- "commands",
3220
- "compile",
3221
- "doc",
3222
- "index.js"
3223
- ]
3224
- },
3225
- "compile:doc:list": {
3226
- "aliases": [],
3227
- "args": {
3228
- "face_id": {
3229
- "description": "Face alias",
3230
- "name": "face_id",
3231
- "required": true
3232
- }
3233
- },
3234
- "description": "List documents for a face",
3235
- "flags": {
3236
- "json": {
3237
- "description": "Format output as json.",
3238
- "helpGroup": "GLOBAL",
3239
- "name": "json",
3240
- "allowNo": false,
3241
- "type": "boolean"
3242
- },
3243
- "base-url": {
3244
- "description": "API base URL",
3245
- "env": "FACES_BASE_URL",
3246
- "name": "base-url",
3247
- "hasDynamicHelp": false,
3248
- "multiple": false,
3249
- "type": "option"
3250
- },
3251
- "token": {
3252
- "description": "JWT bearer token",
3253
- "env": "FACES_TOKEN",
3254
- "name": "token",
3255
- "hasDynamicHelp": false,
3256
- "multiple": false,
3257
- "type": "option"
3258
- },
3259
- "api-key": {
3260
- "description": "API key",
3261
- "env": "FACES_API_KEY",
3262
- "name": "api-key",
3543
+ },
3544
+ "perspective": {
3545
+ "description": "Perspective (first-person or third-person)",
3546
+ "name": "perspective",
3547
+ "default": "first-person",
3263
3548
  "hasDynamicHelp": false,
3264
3549
  "multiple": false,
3550
+ "options": [
3551
+ "first-person",
3552
+ "third-person"
3553
+ ],
3265
3554
  "type": "option"
3266
3555
  }
3267
3556
  },
3268
3557
  "hasDynamicHelp": false,
3269
3558
  "hiddenAliases": [],
3270
- "id": "compile:doc:list",
3559
+ "id": "compile:doc:create",
3271
3560
  "pluginAlias": "faces-cli",
3272
3561
  "pluginName": "faces-cli",
3273
3562
  "pluginType": "core",
@@ -3279,10 +3568,10 @@
3279
3568
  "commands",
3280
3569
  "compile",
3281
3570
  "doc",
3282
- "list.js"
3571
+ "create.js"
3283
3572
  ]
3284
3573
  },
3285
- "compile:doc:make": {
3574
+ "compile:doc:delete": {
3286
3575
  "aliases": [],
3287
3576
  "args": {
3288
3577
  "doc_id": {
@@ -3291,7 +3580,7 @@
3291
3580
  "required": true
3292
3581
  }
3293
3582
  },
3294
- "description": "Compile an existing document (prepare + sync in one step)",
3583
+ "description": "Delete a document",
3295
3584
  "flags": {
3296
3585
  "json": {
3297
3586
  "description": "Format output as json.",
@@ -3323,25 +3612,11 @@
3323
3612
  "hasDynamicHelp": false,
3324
3613
  "multiple": false,
3325
3614
  "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 document ID for manual polling.",
3337
- "name": "no-wait",
3338
- "allowNo": false,
3339
- "type": "boolean"
3340
3615
  }
3341
3616
  },
3342
3617
  "hasDynamicHelp": false,
3343
3618
  "hiddenAliases": [],
3344
- "id": "compile:doc:make",
3619
+ "id": "compile:doc:delete",
3345
3620
  "pluginAlias": "faces-cli",
3346
3621
  "pluginName": "faces-cli",
3347
3622
  "pluginType": "core",
@@ -3353,19 +3628,19 @@
3353
3628
  "commands",
3354
3629
  "compile",
3355
3630
  "doc",
3356
- "make.js"
3631
+ "delete.js"
3357
3632
  ]
3358
3633
  },
3359
- "compile:thread:create": {
3634
+ "compile:doc:edit": {
3360
3635
  "aliases": [],
3361
3636
  "args": {
3362
- "face_id": {
3363
- "description": "Face alias",
3364
- "name": "face_id",
3637
+ "doc_id": {
3638
+ "description": "Document ID",
3639
+ "name": "doc_id",
3365
3640
  "required": true
3366
3641
  }
3367
3642
  },
3368
- "description": "Start a new thread for a face",
3643
+ "description": "Edit a document (label, content, or perspective)",
3369
3644
  "flags": {
3370
3645
  "json": {
3371
3646
  "description": "Format output as json.",
@@ -3399,16 +3674,41 @@
3399
3674
  "type": "option"
3400
3675
  },
3401
3676
  "label": {
3402
- "description": "Thread label",
3677
+ "description": "New label/title",
3403
3678
  "name": "label",
3404
3679
  "hasDynamicHelp": false,
3405
3680
  "multiple": false,
3406
3681
  "type": "option"
3682
+ },
3683
+ "content": {
3684
+ "description": "New inline text content",
3685
+ "name": "content",
3686
+ "hasDynamicHelp": false,
3687
+ "multiple": false,
3688
+ "type": "option"
3689
+ },
3690
+ "file": {
3691
+ "description": "Read new content from file",
3692
+ "name": "file",
3693
+ "hasDynamicHelp": false,
3694
+ "multiple": false,
3695
+ "type": "option"
3696
+ },
3697
+ "perspective": {
3698
+ "description": "Perspective (first-person or third-person)",
3699
+ "name": "perspective",
3700
+ "hasDynamicHelp": false,
3701
+ "multiple": false,
3702
+ "options": [
3703
+ "first-person",
3704
+ "third-person"
3705
+ ],
3706
+ "type": "option"
3407
3707
  }
3408
3708
  },
3409
3709
  "hasDynamicHelp": false,
3410
3710
  "hiddenAliases": [],
3411
- "id": "compile:thread:create",
3711
+ "id": "compile:doc:edit",
3412
3712
  "pluginAlias": "faces-cli",
3413
3713
  "pluginName": "faces-cli",
3414
3714
  "pluginType": "core",
@@ -3419,20 +3719,20 @@
3419
3719
  "dist",
3420
3720
  "commands",
3421
3721
  "compile",
3422
- "thread",
3423
- "create.js"
3722
+ "doc",
3723
+ "edit.js"
3424
3724
  ]
3425
3725
  },
3426
- "compile:thread:delete": {
3726
+ "compile:doc:get": {
3427
3727
  "aliases": [],
3428
3728
  "args": {
3429
- "thread_id": {
3430
- "description": "Thread ID",
3431
- "name": "thread_id",
3729
+ "doc_id": {
3730
+ "description": "Document ID",
3731
+ "name": "doc_id",
3432
3732
  "required": true
3433
3733
  }
3434
3734
  },
3435
- "description": "Delete a thread",
3735
+ "description": "Get a document by ID",
3436
3736
  "flags": {
3437
3737
  "json": {
3438
3738
  "description": "Format output as json.",
@@ -3464,17 +3764,11 @@
3464
3764
  "hasDynamicHelp": false,
3465
3765
  "multiple": false,
3466
3766
  "type": "option"
3467
- },
3468
- "yes": {
3469
- "description": "Skip confirmation",
3470
- "name": "yes",
3471
- "allowNo": false,
3472
- "type": "boolean"
3473
3767
  }
3474
3768
  },
3475
3769
  "hasDynamicHelp": false,
3476
3770
  "hiddenAliases": [],
3477
- "id": "compile:thread:delete",
3771
+ "id": "compile:doc:get",
3478
3772
  "pluginAlias": "faces-cli",
3479
3773
  "pluginName": "faces-cli",
3480
3774
  "pluginType": "core",
@@ -3485,20 +3779,20 @@
3485
3779
  "dist",
3486
3780
  "commands",
3487
3781
  "compile",
3488
- "thread",
3489
- "delete.js"
3782
+ "doc",
3783
+ "get.js"
3490
3784
  ]
3491
3785
  },
3492
- "compile:thread:edit": {
3786
+ "compile:doc": {
3493
3787
  "aliases": [],
3494
3788
  "args": {
3495
- "thread_id": {
3496
- "description": "Thread ID",
3497
- "name": "thread_id",
3789
+ "face_id": {
3790
+ "description": "Face alias",
3791
+ "name": "face_id",
3498
3792
  "required": true
3499
3793
  }
3500
3794
  },
3501
- "description": "Edit a thread (label and/or reassign face speaker)",
3795
+ "description": "Compile a document into a face (create make in one step)",
3502
3796
  "flags": {
3503
3797
  "json": {
3504
3798
  "description": "Format output as json.",
@@ -3532,83 +3826,56 @@
3532
3826
  "type": "option"
3533
3827
  },
3534
3828
  "label": {
3535
- "description": "New thread label",
3829
+ "description": "Document label/title",
3536
3830
  "name": "label",
3537
3831
  "hasDynamicHelp": false,
3538
3832
  "multiple": false,
3539
3833
  "type": "option"
3540
3834
  },
3541
- "face-speaker": {
3542
- "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3543
- "name": "face-speaker",
3835
+ "content": {
3836
+ "description": "Inline text content",
3837
+ "name": "content",
3544
3838
  "hasDynamicHelp": false,
3545
3839
  "multiple": false,
3546
3840
  "type": "option"
3547
- }
3548
- },
3549
- "hasDynamicHelp": false,
3550
- "hiddenAliases": [],
3551
- "id": "compile:thread:edit",
3552
- "pluginAlias": "faces-cli",
3553
- "pluginName": "faces-cli",
3554
- "pluginType": "core",
3555
- "strict": true,
3556
- "enableJsonFlag": true,
3557
- "isESM": true,
3558
- "relativePath": [
3559
- "dist",
3560
- "commands",
3561
- "compile",
3562
- "thread",
3563
- "edit.js"
3564
- ]
3565
- },
3566
- "compile:thread:get": {
3567
- "aliases": [],
3568
- "args": {
3569
- "thread_id": {
3570
- "description": "Thread ID",
3571
- "name": "thread_id",
3572
- "required": true
3573
- }
3574
- },
3575
- "description": "Get a thread by ID",
3576
- "flags": {
3577
- "json": {
3578
- "description": "Format output as json.",
3579
- "helpGroup": "GLOBAL",
3580
- "name": "json",
3581
- "allowNo": false,
3582
- "type": "boolean"
3583
3841
  },
3584
- "base-url": {
3585
- "description": "API base URL",
3586
- "env": "FACES_BASE_URL",
3587
- "name": "base-url",
3842
+ "file": {
3843
+ "description": "Read content from file",
3844
+ "name": "file",
3588
3845
  "hasDynamicHelp": false,
3589
3846
  "multiple": false,
3590
3847
  "type": "option"
3591
3848
  },
3592
- "token": {
3593
- "description": "JWT bearer token",
3594
- "env": "FACES_TOKEN",
3595
- "name": "token",
3849
+ "perspective": {
3850
+ "description": "Perspective",
3851
+ "name": "perspective",
3852
+ "default": "first-person",
3596
3853
  "hasDynamicHelp": false,
3597
3854
  "multiple": false,
3855
+ "options": [
3856
+ "first-person",
3857
+ "third-person"
3858
+ ],
3598
3859
  "type": "option"
3599
3860
  },
3600
- "api-key": {
3601
- "description": "API key",
3602
- "env": "FACES_API_KEY",
3603
- "name": "api-key",
3861
+ "timeout": {
3862
+ "description": "Compile timeout in seconds (default: 600)",
3863
+ "name": "timeout",
3864
+ "default": 600,
3604
3865
  "hasDynamicHelp": false,
3605
3866
  "multiple": false,
3606
3867
  "type": "option"
3868
+ },
3869
+ "no-wait": {
3870
+ "description": "Create and trigger compilation, then return immediately without polling.",
3871
+ "name": "no-wait",
3872
+ "allowNo": false,
3873
+ "type": "boolean"
3607
3874
  }
3608
3875
  },
3609
3876
  "hasDynamicHelp": false,
3610
3877
  "hiddenAliases": [],
3611
- "id": "compile:thread:get",
3878
+ "id": "compile:doc",
3612
3879
  "pluginAlias": "faces-cli",
3613
3880
  "pluginName": "faces-cli",
3614
3881
  "pluginType": "core",
@@ -3619,11 +3886,11 @@
3619
3886
  "dist",
3620
3887
  "commands",
3621
3888
  "compile",
3622
- "thread",
3623
- "get.js"
3889
+ "doc",
3890
+ "index.js"
3624
3891
  ]
3625
3892
  },
3626
- "compile:thread:list": {
3893
+ "compile:doc:list": {
3627
3894
  "aliases": [],
3628
3895
  "args": {
3629
3896
  "face_id": {
@@ -3632,7 +3899,7 @@
3632
3899
  "required": true
3633
3900
  }
3634
3901
  },
3635
- "description": "List threads for a face",
3902
+ "description": "List documents for a face",
3636
3903
  "flags": {
3637
3904
  "json": {
3638
3905
  "description": "Format output as json.",
@@ -3668,7 +3935,7 @@
3668
3935
  },
3669
3936
  "hasDynamicHelp": false,
3670
3937
  "hiddenAliases": [],
3671
- "id": "compile:thread:list",
3938
+ "id": "compile:doc:list",
3672
3939
  "pluginAlias": "faces-cli",
3673
3940
  "pluginName": "faces-cli",
3674
3941
  "pluginType": "core",
@@ -3679,20 +3946,20 @@
3679
3946
  "dist",
3680
3947
  "commands",
3681
3948
  "compile",
3682
- "thread",
3949
+ "doc",
3683
3950
  "list.js"
3684
3951
  ]
3685
3952
  },
3686
- "compile:thread:make": {
3953
+ "compile:doc:make": {
3687
3954
  "aliases": [],
3688
3955
  "args": {
3689
- "thread_id": {
3690
- "description": "Thread ID",
3691
- "name": "thread_id",
3956
+ "doc_id": {
3957
+ "description": "Document ID",
3958
+ "name": "doc_id",
3692
3959
  "required": true
3693
3960
  }
3694
3961
  },
3695
- "description": "Compile an existing thread (prepare + sync in one step)",
3962
+ "description": "Compile an existing document (prepare + sync in one step)",
3696
3963
  "flags": {
3697
3964
  "json": {
3698
3965
  "description": "Format output as json.",
@@ -3734,7 +4001,7 @@
3734
4001
  "type": "option"
3735
4002
  },
3736
4003
  "no-wait": {
3737
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
4004
+ "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
3738
4005
  "name": "no-wait",
3739
4006
  "allowNo": false,
3740
4007
  "type": "boolean"
@@ -3742,7 +4009,7 @@
3742
4009
  },
3743
4010
  "hasDynamicHelp": false,
3744
4011
  "hiddenAliases": [],
3745
- "id": "compile:thread:make",
4012
+ "id": "compile:doc:make",
3746
4013
  "pluginAlias": "faces-cli",
3747
4014
  "pluginName": "faces-cli",
3748
4015
  "pluginType": "core",
@@ -3753,20 +4020,20 @@
3753
4020
  "dist",
3754
4021
  "commands",
3755
4022
  "compile",
3756
- "thread",
4023
+ "doc",
3757
4024
  "make.js"
3758
4025
  ]
3759
4026
  },
3760
- "compile:thread:message": {
4027
+ "compile:doc:pause": {
3761
4028
  "aliases": [],
3762
4029
  "args": {
3763
- "thread_id": {
3764
- "description": "Thread ID",
3765
- "name": "thread_id",
4030
+ "doc_id": {
4031
+ "description": "Document ID",
4032
+ "name": "doc_id",
3766
4033
  "required": true
3767
4034
  }
3768
4035
  },
3769
- "description": "Send a user message to a thread",
4036
+ "description": "Pause a running document compilation (preserves progress, resume with make)",
3770
4037
  "flags": {
3771
4038
  "json": {
3772
4039
  "description": "Format output as json.",
@@ -3798,20 +4065,11 @@
3798
4065
  "hasDynamicHelp": false,
3799
4066
  "multiple": false,
3800
4067
  "type": "option"
3801
- },
3802
- "message": {
3803
- "char": "m",
3804
- "description": "User message to append",
3805
- "name": "message",
3806
- "required": true,
3807
- "hasDynamicHelp": false,
3808
- "multiple": false,
3809
- "type": "option"
3810
4068
  }
3811
4069
  },
3812
4070
  "hasDynamicHelp": false,
3813
4071
  "hiddenAliases": [],
3814
- "id": "compile:thread:message",
4072
+ "id": "compile:doc:pause",
3815
4073
  "pluginAlias": "faces-cli",
3816
4074
  "pluginName": "faces-cli",
3817
4075
  "pluginType": "core",
@@ -3822,20 +4080,20 @@
3822
4080
  "dist",
3823
4081
  "commands",
3824
4082
  "compile",
3825
- "thread",
3826
- "message.js"
4083
+ "doc",
4084
+ "pause.js"
3827
4085
  ]
3828
4086
  },
3829
- "compile:thread:sync": {
4087
+ "compile:doc:reset": {
3830
4088
  "aliases": [],
3831
4089
  "args": {
3832
- "thread_id": {
3833
- "description": "Thread ID",
3834
- "name": "thread_id",
4090
+ "doc_id": {
4091
+ "description": "Document ID",
4092
+ "name": "doc_id",
3835
4093
  "required": true
3836
4094
  }
3837
4095
  },
3838
- "description": "Archive and sync a thread into a face",
4096
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
3839
4097
  "flags": {
3840
4098
  "json": {
3841
4099
  "description": "Format output as json.",
@@ -3867,11 +4125,17 @@
3867
4125
  "hasDynamicHelp": false,
3868
4126
  "multiple": false,
3869
4127
  "type": "option"
4128
+ },
4129
+ "yes": {
4130
+ "description": "Skip confirmation",
4131
+ "name": "yes",
4132
+ "allowNo": false,
4133
+ "type": "boolean"
3870
4134
  }
3871
4135
  },
3872
4136
  "hasDynamicHelp": false,
3873
4137
  "hiddenAliases": [],
3874
- "id": "compile:thread:sync",
4138
+ "id": "compile:doc:reset",
3875
4139
  "pluginAlias": "faces-cli",
3876
4140
  "pluginName": "faces-cli",
3877
4141
  "pluginType": "core",
@@ -3882,10 +4146,10 @@
3882
4146
  "dist",
3883
4147
  "commands",
3884
4148
  "compile",
3885
- "thread",
3886
- "sync.js"
4149
+ "doc",
4150
+ "reset.js"
3887
4151
  ]
3888
4152
  }
3889
4153
  },
3890
- "version": "1.5.4"
4154
+ "version": "1.5.6"
3891
4155
  }