faces-cli 1.5.6 → 1.5.7

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.
@@ -696,6 +696,86 @@
696
696
  "list.js"
697
697
  ]
698
698
  },
699
+ "catalog:manyfaced": {
700
+ "aliases": [],
701
+ "args": {},
702
+ "description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
703
+ "flags": {
704
+ "json": {
705
+ "description": "Format output as json.",
706
+ "helpGroup": "GLOBAL",
707
+ "name": "json",
708
+ "allowNo": false,
709
+ "type": "boolean"
710
+ },
711
+ "base-url": {
712
+ "description": "API base URL",
713
+ "env": "FACES_BASE_URL",
714
+ "name": "base-url",
715
+ "hasDynamicHelp": false,
716
+ "multiple": false,
717
+ "type": "option"
718
+ },
719
+ "token": {
720
+ "description": "JWT bearer token",
721
+ "env": "FACES_TOKEN",
722
+ "name": "token",
723
+ "hasDynamicHelp": false,
724
+ "multiple": false,
725
+ "type": "option"
726
+ },
727
+ "api-key": {
728
+ "description": "API key",
729
+ "env": "FACES_API_KEY",
730
+ "name": "api-key",
731
+ "hasDynamicHelp": false,
732
+ "multiple": false,
733
+ "type": "option"
734
+ },
735
+ "skill": {
736
+ "description": "Show details for a specific skill",
737
+ "name": "skill",
738
+ "hasDynamicHelp": false,
739
+ "multiple": false,
740
+ "type": "option"
741
+ },
742
+ "install": {
743
+ "description": "Install a skill by name",
744
+ "name": "install",
745
+ "hasDynamicHelp": false,
746
+ "multiple": false,
747
+ "type": "option"
748
+ },
749
+ "skills-dir": {
750
+ "description": "Directory to install skills into (required for --install)",
751
+ "name": "skills-dir",
752
+ "hasDynamicHelp": false,
753
+ "multiple": false,
754
+ "type": "option"
755
+ },
756
+ "refresh": {
757
+ "description": "Force refresh the skill index (ignore cache)",
758
+ "name": "refresh",
759
+ "allowNo": false,
760
+ "type": "boolean"
761
+ }
762
+ },
763
+ "hasDynamicHelp": false,
764
+ "hiddenAliases": [],
765
+ "id": "catalog:manyfaced",
766
+ "pluginAlias": "faces-cli",
767
+ "pluginName": "faces-cli",
768
+ "pluginType": "core",
769
+ "strict": true,
770
+ "enableJsonFlag": true,
771
+ "isESM": true,
772
+ "relativePath": [
773
+ "dist",
774
+ "commands",
775
+ "catalog",
776
+ "manyfaced.js"
777
+ ]
778
+ },
699
779
  "billing:balance": {
700
780
  "aliases": [],
701
781
  "args": {},
@@ -1849,10 +1929,10 @@
1849
1929
  "show.js"
1850
1930
  ]
1851
1931
  },
1852
- "keys:create": {
1932
+ "face:create": {
1853
1933
  "aliases": [],
1854
1934
  "args": {},
1855
- "description": "Create a new API key (JWT required)",
1935
+ "description": "Create a new face",
1856
1936
  "flags": {
1857
1937
  "json": {
1858
1938
  "description": "Format output as json.",
@@ -1886,37 +1966,52 @@
1886
1966
  "type": "option"
1887
1967
  },
1888
1968
  "name": {
1889
- "description": "Key name/label",
1969
+ "description": "Display name",
1890
1970
  "name": "name",
1891
1971
  "required": true,
1892
1972
  "hasDynamicHelp": false,
1893
1973
  "multiple": false,
1894
1974
  "type": "option"
1895
1975
  },
1896
- "expires-days": {
1897
- "description": "Expiry in days (omit for no expiry)",
1898
- "name": "expires-days",
1976
+ "alias": {
1977
+ "description": "Unique alias slug",
1978
+ "name": "alias",
1979
+ "required": true,
1899
1980
  "hasDynamicHelp": false,
1900
1981
  "multiple": false,
1901
1982
  "type": "option"
1902
1983
  },
1903
- "budget": {
1904
- "description": "Spend budget in USD",
1905
- "name": "budget",
1984
+ "description": {
1985
+ "description": "Description for local catalog",
1986
+ "name": "description",
1906
1987
  "hasDynamicHelp": false,
1907
1988
  "multiple": false,
1908
1989
  "type": "option"
1909
1990
  },
1910
- "face": {
1911
- "description": "Allowed face alias (repeatable)",
1912
- "name": "face",
1991
+ "default-model": {
1992
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
1993
+ "name": "default-model",
1994
+ "hasDynamicHelp": false,
1995
+ "multiple": false,
1996
+ "type": "option"
1997
+ },
1998
+ "formula": {
1999
+ "description": "Boolean formula over owned concrete face aliases (e.g. \"a | b\", \"(a | b) - c\"). Creates a composite face.",
2000
+ "name": "formula",
2001
+ "hasDynamicHelp": false,
2002
+ "multiple": false,
2003
+ "type": "option"
2004
+ },
2005
+ "attr": {
2006
+ "description": "Attribute KEY=VALUE (repeatable)",
2007
+ "name": "attr",
1913
2008
  "hasDynamicHelp": false,
1914
2009
  "multiple": true,
1915
2010
  "type": "option"
1916
2011
  },
1917
- "model": {
1918
- "description": "Allowed model name (repeatable)",
1919
- "name": "model",
2012
+ "tool": {
2013
+ "description": "Tool name to enable (repeatable)",
2014
+ "name": "tool",
1920
2015
  "hasDynamicHelp": false,
1921
2016
  "multiple": true,
1922
2017
  "type": "option"
@@ -1924,7 +2019,7 @@
1924
2019
  },
1925
2020
  "hasDynamicHelp": false,
1926
2021
  "hiddenAliases": [],
1927
- "id": "keys:create",
2022
+ "id": "face:create",
1928
2023
  "pluginAlias": "faces-cli",
1929
2024
  "pluginName": "faces-cli",
1930
2025
  "pluginType": "core",
@@ -1934,14 +2029,20 @@
1934
2029
  "relativePath": [
1935
2030
  "dist",
1936
2031
  "commands",
1937
- "keys",
2032
+ "face",
1938
2033
  "create.js"
1939
2034
  ]
1940
2035
  },
1941
- "keys:list": {
2036
+ "face:delete": {
1942
2037
  "aliases": [],
1943
- "args": {},
1944
- "description": "List all API keys (JWT required)",
2038
+ "args": {
2039
+ "face_id": {
2040
+ "description": "Face alias",
2041
+ "name": "face_id",
2042
+ "required": true
2043
+ }
2044
+ },
2045
+ "description": "Delete a face permanently",
1945
2046
  "flags": {
1946
2047
  "json": {
1947
2048
  "description": "Format output as json.",
@@ -1973,11 +2074,17 @@
1973
2074
  "hasDynamicHelp": false,
1974
2075
  "multiple": false,
1975
2076
  "type": "option"
2077
+ },
2078
+ "yes": {
2079
+ "description": "Skip confirmation",
2080
+ "name": "yes",
2081
+ "allowNo": false,
2082
+ "type": "boolean"
1976
2083
  }
1977
2084
  },
1978
2085
  "hasDynamicHelp": false,
1979
2086
  "hiddenAliases": [],
1980
- "id": "keys:list",
2087
+ "id": "face:delete",
1981
2088
  "pluginAlias": "faces-cli",
1982
2089
  "pluginName": "faces-cli",
1983
2090
  "pluginType": "core",
@@ -1987,20 +2094,14 @@
1987
2094
  "relativePath": [
1988
2095
  "dist",
1989
2096
  "commands",
1990
- "keys",
1991
- "list.js"
2097
+ "face",
2098
+ "delete.js"
1992
2099
  ]
1993
2100
  },
1994
- "keys:revoke": {
2101
+ "face:diff": {
1995
2102
  "aliases": [],
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)",
2103
+ "args": {},
2104
+ "description": "Compare owned faces pairwise across all centroid components",
2004
2105
  "flags": {
2005
2106
  "json": {
2006
2107
  "description": "Format output as json.",
@@ -2033,16 +2134,18 @@
2033
2134
  "multiple": false,
2034
2135
  "type": "option"
2035
2136
  },
2036
- "yes": {
2037
- "description": "Skip confirmation",
2038
- "name": "yes",
2039
- "allowNo": false,
2040
- "type": "boolean"
2137
+ "face": {
2138
+ "description": "Face alias to include (repeatable, min 2)",
2139
+ "name": "face",
2140
+ "required": true,
2141
+ "hasDynamicHelp": false,
2142
+ "multiple": true,
2143
+ "type": "option"
2041
2144
  }
2042
2145
  },
2043
2146
  "hasDynamicHelp": false,
2044
2147
  "hiddenAliases": [],
2045
- "id": "keys:revoke",
2148
+ "id": "face:diff",
2046
2149
  "pluginAlias": "faces-cli",
2047
2150
  "pluginName": "faces-cli",
2048
2151
  "pluginType": "core",
@@ -2052,20 +2155,20 @@
2052
2155
  "relativePath": [
2053
2156
  "dist",
2054
2157
  "commands",
2055
- "keys",
2056
- "revoke.js"
2158
+ "face",
2159
+ "diff.js"
2057
2160
  ]
2058
2161
  },
2059
- "keys:update": {
2162
+ "face:get": {
2060
2163
  "aliases": [],
2061
2164
  "args": {
2062
- "key_id": {
2063
- "description": "Key ID",
2064
- "name": "key_id",
2165
+ "face_id": {
2166
+ "description": "Face alias",
2167
+ "name": "face_id",
2065
2168
  "required": true
2066
2169
  }
2067
2170
  },
2068
- "description": "Update API key metadata (JWT required)",
2171
+ "description": "Get details for a face by alias",
2069
2172
  "flags": {
2070
2173
  "json": {
2071
2174
  "description": "Format output as json.",
@@ -2097,31 +2200,64 @@
2097
2200
  "hasDynamicHelp": false,
2098
2201
  "multiple": false,
2099
2202
  "type": "option"
2203
+ }
2204
+ },
2205
+ "hasDynamicHelp": false,
2206
+ "hiddenAliases": [],
2207
+ "id": "face:get",
2208
+ "pluginAlias": "faces-cli",
2209
+ "pluginName": "faces-cli",
2210
+ "pluginType": "core",
2211
+ "strict": true,
2212
+ "enableJsonFlag": true,
2213
+ "isESM": true,
2214
+ "relativePath": [
2215
+ "dist",
2216
+ "commands",
2217
+ "face",
2218
+ "get.js"
2219
+ ]
2220
+ },
2221
+ "face:list": {
2222
+ "aliases": [],
2223
+ "args": {},
2224
+ "description": "List all owned faces",
2225
+ "flags": {
2226
+ "json": {
2227
+ "description": "Format output as json.",
2228
+ "helpGroup": "GLOBAL",
2229
+ "name": "json",
2230
+ "allowNo": false,
2231
+ "type": "boolean"
2100
2232
  },
2101
- "name": {
2102
- "description": "New key name",
2103
- "name": "name",
2233
+ "base-url": {
2234
+ "description": "API base URL",
2235
+ "env": "FACES_BASE_URL",
2236
+ "name": "base-url",
2104
2237
  "hasDynamicHelp": false,
2105
2238
  "multiple": false,
2106
2239
  "type": "option"
2107
2240
  },
2108
- "budget": {
2109
- "description": "New spend budget in USD",
2110
- "name": "budget",
2241
+ "token": {
2242
+ "description": "JWT bearer token",
2243
+ "env": "FACES_TOKEN",
2244
+ "name": "token",
2111
2245
  "hasDynamicHelp": false,
2112
2246
  "multiple": false,
2113
2247
  "type": "option"
2114
2248
  },
2115
- "reset-spent": {
2116
- "description": "Reset spent amount to zero",
2117
- "name": "reset-spent",
2118
- "allowNo": false,
2119
- "type": "boolean"
2249
+ "api-key": {
2250
+ "description": "API key",
2251
+ "env": "FACES_API_KEY",
2252
+ "name": "api-key",
2253
+ "hasDynamicHelp": false,
2254
+ "multiple": false,
2255
+ "type": "option"
2120
2256
  }
2121
2257
  },
2122
2258
  "hasDynamicHelp": false,
2123
2259
  "hiddenAliases": [],
2124
- "id": "keys:update",
2260
+ "id": "face:list",
2125
2261
  "pluginAlias": "faces-cli",
2126
2262
  "pluginName": "faces-cli",
2127
2263
  "pluginType": "core",
@@ -2131,14 +2267,20 @@
2131
2267
  "relativePath": [
2132
2268
  "dist",
2133
2269
  "commands",
2134
- "keys",
2135
- "update.js"
2270
+ "face",
2271
+ "list.js"
2136
2272
  ]
2137
2273
  },
2138
- "face:create": {
2274
+ "face:neighbors": {
2139
2275
  "aliases": [],
2140
- "args": {},
2141
- "description": "Create a new face",
2276
+ "args": {
2277
+ "face_id": {
2278
+ "description": "Face alias",
2279
+ "name": "face_id",
2280
+ "required": true
2281
+ }
2282
+ },
2283
+ "description": "Find the most similar or dissimilar owned faces to a given face",
2142
2284
  "flags": {
2143
2285
  "json": {
2144
2286
  "description": "Format output as json.",
@@ -2171,61 +2313,44 @@
2171
2313
  "multiple": false,
2172
2314
  "type": "option"
2173
2315
  },
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",
2316
+ "k": {
2317
+ "description": "Number of results (1–20)",
2318
+ "name": "k",
2319
+ "default": 5,
2193
2320
  "hasDynamicHelp": false,
2194
2321
  "multiple": false,
2195
2322
  "type": "option"
2196
2323
  },
2197
- "default-model": {
2198
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2199
- "name": "default-model",
2324
+ "component": {
2325
+ "description": "Centroid component to rank on (beta, delta, epsilon are the principal components of a face; face is their composite)",
2326
+ "name": "component",
2327
+ "default": "face",
2200
2328
  "hasDynamicHelp": false,
2201
2329
  "multiple": false,
2330
+ "options": [
2331
+ "face",
2332
+ "beta",
2333
+ "delta",
2334
+ "epsilon"
2335
+ ],
2202
2336
  "type": "option"
2203
2337
  },
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",
2338
+ "direction": {
2339
+ "description": "nearest (most similar) or furthest (most dissimilar)",
2340
+ "name": "direction",
2341
+ "default": "nearest",
2207
2342
  "hasDynamicHelp": false,
2208
2343
  "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,
2344
+ "options": [
2345
+ "nearest",
2346
+ "furthest"
2347
+ ],
2223
2348
  "type": "option"
2224
2349
  }
2225
2350
  },
2226
2351
  "hasDynamicHelp": false,
2227
2352
  "hiddenAliases": [],
2228
- "id": "face:create",
2353
+ "id": "face:neighbors",
2229
2354
  "pluginAlias": "faces-cli",
2230
2355
  "pluginName": "faces-cli",
2231
2356
  "pluginType": "core",
@@ -2236,19 +2361,13 @@
2236
2361
  "dist",
2237
2362
  "commands",
2238
2363
  "face",
2239
- "create.js"
2364
+ "neighbors.js"
2240
2365
  ]
2241
2366
  },
2242
- "face:delete": {
2367
+ "face:stats": {
2243
2368
  "aliases": [],
2244
- "args": {
2245
- "face_id": {
2246
- "description": "Face alias",
2247
- "name": "face_id",
2248
- "required": true
2249
- }
2250
- },
2251
- "description": "Delete a face permanently",
2369
+ "args": {},
2370
+ "description": "Compile and chat stats for all owned faces",
2252
2371
  "flags": {
2253
2372
  "json": {
2254
2373
  "description": "Format output as json.",
@@ -2280,17 +2399,11 @@
2280
2399
  "hasDynamicHelp": false,
2281
2400
  "multiple": false,
2282
2401
  "type": "option"
2283
- },
2284
- "yes": {
2285
- "description": "Skip confirmation",
2286
- "name": "yes",
2287
- "allowNo": false,
2288
- "type": "boolean"
2289
2402
  }
2290
2403
  },
2291
2404
  "hasDynamicHelp": false,
2292
2405
  "hiddenAliases": [],
2293
- "id": "face:delete",
2406
+ "id": "face:stats",
2294
2407
  "pluginAlias": "faces-cli",
2295
2408
  "pluginName": "faces-cli",
2296
2409
  "pluginType": "core",
@@ -2301,13 +2414,19 @@
2301
2414
  "dist",
2302
2415
  "commands",
2303
2416
  "face",
2304
- "delete.js"
2417
+ "stats.js"
2305
2418
  ]
2306
2419
  },
2307
- "face:diff": {
2420
+ "face:update": {
2308
2421
  "aliases": [],
2309
- "args": {},
2310
- "description": "Compare owned faces pairwise across all centroid components",
2422
+ "args": {
2423
+ "face_id": {
2424
+ "description": "Face alias",
2425
+ "name": "face_id",
2426
+ "required": true
2427
+ }
2428
+ },
2429
+ "description": "Update a face's metadata",
2311
2430
  "flags": {
2312
2431
  "json": {
2313
2432
  "description": "Format output as json.",
@@ -2340,10 +2459,44 @@
2340
2459
  "multiple": false,
2341
2460
  "type": "option"
2342
2461
  },
2343
- "face": {
2344
- "description": "Face alias to include (repeatable, min 2)",
2345
- "name": "face",
2346
- "required": true,
2462
+ "name": {
2463
+ "description": "New display name",
2464
+ "name": "name",
2465
+ "hasDynamicHelp": false,
2466
+ "multiple": false,
2467
+ "type": "option"
2468
+ },
2469
+ "description": {
2470
+ "description": "Description for local catalog",
2471
+ "name": "description",
2472
+ "hasDynamicHelp": false,
2473
+ "multiple": false,
2474
+ "type": "option"
2475
+ },
2476
+ "default-model": {
2477
+ "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2478
+ "name": "default-model",
2479
+ "hasDynamicHelp": false,
2480
+ "multiple": false,
2481
+ "type": "option"
2482
+ },
2483
+ "formula": {
2484
+ "description": "New boolean formula (synthetic faces only)",
2485
+ "name": "formula",
2486
+ "hasDynamicHelp": false,
2487
+ "multiple": false,
2488
+ "type": "option"
2489
+ },
2490
+ "attr": {
2491
+ "description": "Update attribute KEY=VALUE (repeatable)",
2492
+ "name": "attr",
2493
+ "hasDynamicHelp": false,
2494
+ "multiple": true,
2495
+ "type": "option"
2496
+ },
2497
+ "tool": {
2498
+ "description": "Tool names to set (replaces list, repeatable)",
2499
+ "name": "tool",
2347
2500
  "hasDynamicHelp": false,
2348
2501
  "multiple": true,
2349
2502
  "type": "option"
@@ -2351,7 +2504,7 @@
2351
2504
  },
2352
2505
  "hasDynamicHelp": false,
2353
2506
  "hiddenAliases": [],
2354
- "id": "face:diff",
2507
+ "id": "face:update",
2355
2508
  "pluginAlias": "faces-cli",
2356
2509
  "pluginName": "faces-cli",
2357
2510
  "pluginType": "core",
@@ -2362,10 +2515,10 @@
2362
2515
  "dist",
2363
2516
  "commands",
2364
2517
  "face",
2365
- "diff.js"
2518
+ "update.js"
2366
2519
  ]
2367
2520
  },
2368
- "face:get": {
2521
+ "face:upload": {
2369
2522
  "aliases": [],
2370
2523
  "args": {
2371
2524
  "face_id": {
@@ -2374,7 +2527,7 @@
2374
2527
  "required": true
2375
2528
  }
2376
2529
  },
2377
- "description": "Get details for a face by alias",
2530
+ "description": "Upload a file (text/PDF/audio/video) to a face",
2378
2531
  "flags": {
2379
2532
  "json": {
2380
2533
  "description": "Format output as json.",
@@ -2406,56 +2559,42 @@
2406
2559
  "hasDynamicHelp": false,
2407
2560
  "multiple": false,
2408
2561
  "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
2562
  },
2439
- "base-url": {
2440
- "description": "API base URL",
2441
- "env": "FACES_BASE_URL",
2442
- "name": "base-url",
2563
+ "file": {
2564
+ "description": "File to upload",
2565
+ "name": "file",
2566
+ "required": true,
2443
2567
  "hasDynamicHelp": false,
2444
2568
  "multiple": false,
2445
2569
  "type": "option"
2446
2570
  },
2447
- "token": {
2448
- "description": "JWT bearer token",
2449
- "env": "FACES_TOKEN",
2450
- "name": "token",
2571
+ "kind": {
2572
+ "description": "Upload kind: document or thread",
2573
+ "name": "kind",
2574
+ "default": "document",
2451
2575
  "hasDynamicHelp": false,
2452
2576
  "multiple": false,
2577
+ "options": [
2578
+ "document",
2579
+ "thread"
2580
+ ],
2453
2581
  "type": "option"
2454
2582
  },
2455
- "api-key": {
2456
- "description": "API key",
2457
- "env": "FACES_API_KEY",
2458
- "name": "api-key",
2583
+ "perspective": {
2584
+ "description": "Perspective (document only)",
2585
+ "name": "perspective",
2586
+ "default": "third-person",
2587
+ "hasDynamicHelp": false,
2588
+ "multiple": false,
2589
+ "options": [
2590
+ "first-person",
2591
+ "third-person"
2592
+ ],
2593
+ "type": "option"
2594
+ },
2595
+ "face-speaker": {
2596
+ "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
2597
+ "name": "face-speaker",
2459
2598
  "hasDynamicHelp": false,
2460
2599
  "multiple": false,
2461
2600
  "type": "option"
@@ -2463,7 +2602,7 @@
2463
2602
  },
2464
2603
  "hasDynamicHelp": false,
2465
2604
  "hiddenAliases": [],
2466
- "id": "face:list",
2605
+ "id": "face:upload",
2467
2606
  "pluginAlias": "faces-cli",
2468
2607
  "pluginName": "faces-cli",
2469
2608
  "pluginType": "core",
@@ -2474,19 +2613,13 @@
2474
2613
  "dist",
2475
2614
  "commands",
2476
2615
  "face",
2477
- "list.js"
2616
+ "upload.js"
2478
2617
  ]
2479
2618
  },
2480
- "face:neighbors": {
2619
+ "keys:create": {
2481
2620
  "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",
2621
+ "args": {},
2622
+ "description": "Create a new API key (JWT required)",
2490
2623
  "flags": {
2491
2624
  "json": {
2492
2625
  "description": "Format output as json.",
@@ -2519,44 +2652,46 @@
2519
2652
  "multiple": false,
2520
2653
  "type": "option"
2521
2654
  },
2522
- "k": {
2523
- "description": "Number of results (1–20)",
2524
- "name": "k",
2525
- "default": 5,
2655
+ "name": {
2656
+ "description": "Key name/label",
2657
+ "name": "name",
2658
+ "required": true,
2526
2659
  "hasDynamicHelp": false,
2527
2660
  "multiple": false,
2528
2661
  "type": "option"
2529
2662
  },
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",
2663
+ "expires-days": {
2664
+ "description": "Expiry in days (omit for no expiry)",
2665
+ "name": "expires-days",
2534
2666
  "hasDynamicHelp": false,
2535
2667
  "multiple": false,
2536
- "options": [
2537
- "face",
2538
- "beta",
2539
- "delta",
2540
- "epsilon"
2541
- ],
2542
2668
  "type": "option"
2543
2669
  },
2544
- "direction": {
2545
- "description": "nearest (most similar) or furthest (most dissimilar)",
2546
- "name": "direction",
2547
- "default": "nearest",
2670
+ "budget": {
2671
+ "description": "Spend budget in USD",
2672
+ "name": "budget",
2673
+ "hasDynamicHelp": false,
2674
+ "multiple": false,
2675
+ "type": "option"
2676
+ },
2677
+ "face": {
2678
+ "description": "Allowed face alias (repeatable)",
2679
+ "name": "face",
2680
+ "hasDynamicHelp": false,
2681
+ "multiple": true,
2682
+ "type": "option"
2683
+ },
2684
+ "model": {
2685
+ "description": "Allowed model name (repeatable)",
2686
+ "name": "model",
2548
2687
  "hasDynamicHelp": false,
2549
- "multiple": false,
2550
- "options": [
2551
- "nearest",
2552
- "furthest"
2553
- ],
2688
+ "multiple": true,
2554
2689
  "type": "option"
2555
2690
  }
2556
2691
  },
2557
2692
  "hasDynamicHelp": false,
2558
2693
  "hiddenAliases": [],
2559
- "id": "face:neighbors",
2694
+ "id": "keys:create",
2560
2695
  "pluginAlias": "faces-cli",
2561
2696
  "pluginName": "faces-cli",
2562
2697
  "pluginType": "core",
@@ -2566,14 +2701,14 @@
2566
2701
  "relativePath": [
2567
2702
  "dist",
2568
2703
  "commands",
2569
- "face",
2570
- "neighbors.js"
2704
+ "keys",
2705
+ "create.js"
2571
2706
  ]
2572
2707
  },
2573
- "face:stats": {
2708
+ "keys:list": {
2574
2709
  "aliases": [],
2575
2710
  "args": {},
2576
- "description": "Compile and chat stats for all owned faces",
2711
+ "description": "List all API keys (JWT required)",
2577
2712
  "flags": {
2578
2713
  "json": {
2579
2714
  "description": "Format output as json.",
@@ -2609,7 +2744,7 @@
2609
2744
  },
2610
2745
  "hasDynamicHelp": false,
2611
2746
  "hiddenAliases": [],
2612
- "id": "face:stats",
2747
+ "id": "keys:list",
2613
2748
  "pluginAlias": "faces-cli",
2614
2749
  "pluginName": "faces-cli",
2615
2750
  "pluginType": "core",
@@ -2619,20 +2754,20 @@
2619
2754
  "relativePath": [
2620
2755
  "dist",
2621
2756
  "commands",
2622
- "face",
2623
- "stats.js"
2757
+ "keys",
2758
+ "list.js"
2624
2759
  ]
2625
2760
  },
2626
- "face:update": {
2761
+ "keys:revoke": {
2627
2762
  "aliases": [],
2628
2763
  "args": {
2629
- "face_id": {
2630
- "description": "Face alias",
2631
- "name": "face_id",
2764
+ "key_id": {
2765
+ "description": "Key ID",
2766
+ "name": "key_id",
2632
2767
  "required": true
2633
2768
  }
2634
2769
  },
2635
- "description": "Update a face's metadata",
2770
+ "description": "Revoke an API key (JWT required)",
2636
2771
  "flags": {
2637
2772
  "json": {
2638
2773
  "description": "Format output as json.",
@@ -2665,52 +2800,16 @@
2665
2800
  "multiple": false,
2666
2801
  "type": "option"
2667
2802
  },
2668
- "name": {
2669
- "description": "New display name",
2670
- "name": "name",
2671
- "hasDynamicHelp": false,
2672
- "multiple": false,
2673
- "type": "option"
2674
- },
2675
- "description": {
2676
- "description": "Description for local catalog",
2677
- "name": "description",
2678
- "hasDynamicHelp": false,
2679
- "multiple": false,
2680
- "type": "option"
2681
- },
2682
- "default-model": {
2683
- "description": "Default LLM for chat (e.g. gpt-4o-mini, claude-sonnet-4-6)",
2684
- "name": "default-model",
2685
- "hasDynamicHelp": false,
2686
- "multiple": false,
2687
- "type": "option"
2688
- },
2689
- "formula": {
2690
- "description": "New boolean formula (synthetic faces only)",
2691
- "name": "formula",
2692
- "hasDynamicHelp": false,
2693
- "multiple": false,
2694
- "type": "option"
2695
- },
2696
- "attr": {
2697
- "description": "Update attribute KEY=VALUE (repeatable)",
2698
- "name": "attr",
2699
- "hasDynamicHelp": false,
2700
- "multiple": true,
2701
- "type": "option"
2702
- },
2703
- "tool": {
2704
- "description": "Tool names to set (replaces list, repeatable)",
2705
- "name": "tool",
2706
- "hasDynamicHelp": false,
2707
- "multiple": true,
2708
- "type": "option"
2803
+ "yes": {
2804
+ "description": "Skip confirmation",
2805
+ "name": "yes",
2806
+ "allowNo": false,
2807
+ "type": "boolean"
2709
2808
  }
2710
2809
  },
2711
2810
  "hasDynamicHelp": false,
2712
2811
  "hiddenAliases": [],
2713
- "id": "face:update",
2812
+ "id": "keys:revoke",
2714
2813
  "pluginAlias": "faces-cli",
2715
2814
  "pluginName": "faces-cli",
2716
2815
  "pluginType": "core",
@@ -2720,20 +2819,20 @@
2720
2819
  "relativePath": [
2721
2820
  "dist",
2722
2821
  "commands",
2723
- "face",
2724
- "update.js"
2822
+ "keys",
2823
+ "revoke.js"
2725
2824
  ]
2726
2825
  },
2727
- "face:upload": {
2826
+ "keys:update": {
2728
2827
  "aliases": [],
2729
2828
  "args": {
2730
- "face_id": {
2731
- "description": "Face alias",
2732
- "name": "face_id",
2829
+ "key_id": {
2830
+ "description": "Key ID",
2831
+ "name": "key_id",
2733
2832
  "required": true
2734
2833
  }
2735
2834
  },
2736
- "description": "Upload a file (text/PDF/audio/video) to a face",
2835
+ "description": "Update API key metadata (JWT required)",
2737
2836
  "flags": {
2738
2837
  "json": {
2739
2838
  "description": "Format output as json.",
@@ -2766,49 +2865,30 @@
2766
2865
  "multiple": false,
2767
2866
  "type": "option"
2768
2867
  },
2769
- "file": {
2770
- "description": "File to upload",
2771
- "name": "file",
2772
- "required": true,
2773
- "hasDynamicHelp": false,
2774
- "multiple": false,
2775
- "type": "option"
2776
- },
2777
- "kind": {
2778
- "description": "Upload kind: document or thread",
2779
- "name": "kind",
2780
- "default": "document",
2868
+ "name": {
2869
+ "description": "New key name",
2870
+ "name": "name",
2781
2871
  "hasDynamicHelp": false,
2782
2872
  "multiple": false,
2783
- "options": [
2784
- "document",
2785
- "thread"
2786
- ],
2787
2873
  "type": "option"
2788
2874
  },
2789
- "perspective": {
2790
- "description": "Perspective (document only)",
2791
- "name": "perspective",
2792
- "default": "third-person",
2875
+ "budget": {
2876
+ "description": "New spend budget in USD",
2877
+ "name": "budget",
2793
2878
  "hasDynamicHelp": false,
2794
2879
  "multiple": false,
2795
- "options": [
2796
- "first-person",
2797
- "third-person"
2798
- ],
2799
2880
  "type": "option"
2800
2881
  },
2801
- "face-speaker": {
2802
- "description": "Speaker name to map to the face (thread only). If omitted, first speaker is used.",
2803
- "name": "face-speaker",
2804
- "hasDynamicHelp": false,
2805
- "multiple": false,
2806
- "type": "option"
2882
+ "reset-spent": {
2883
+ "description": "Reset spent amount to zero",
2884
+ "name": "reset-spent",
2885
+ "allowNo": false,
2886
+ "type": "boolean"
2807
2887
  }
2808
2888
  },
2809
2889
  "hasDynamicHelp": false,
2810
2890
  "hiddenAliases": [],
2811
- "id": "face:upload",
2891
+ "id": "keys:update",
2812
2892
  "pluginAlias": "faces-cli",
2813
2893
  "pluginName": "faces-cli",
2814
2894
  "pluginType": "core",
@@ -2818,11 +2898,11 @@
2818
2898
  "relativePath": [
2819
2899
  "dist",
2820
2900
  "commands",
2821
- "face",
2822
- "upload.js"
2901
+ "keys",
2902
+ "update.js"
2823
2903
  ]
2824
2904
  },
2825
- "compile:thread:create": {
2905
+ "compile:doc:create": {
2826
2906
  "aliases": [],
2827
2907
  "args": {
2828
2908
  "face_id": {
@@ -2831,7 +2911,7 @@
2831
2911
  "required": true
2832
2912
  }
2833
2913
  },
2834
- "description": "Start a new thread for a face",
2914
+ "description": "Submit a document to a face",
2835
2915
  "flags": {
2836
2916
  "json": {
2837
2917
  "description": "Format output as json.",
@@ -2865,82 +2945,42 @@
2865
2945
  "type": "option"
2866
2946
  },
2867
2947
  "label": {
2868
- "description": "Thread label",
2948
+ "description": "Document label/title",
2869
2949
  "name": "label",
2870
2950
  "hasDynamicHelp": false,
2871
2951
  "multiple": false,
2872
2952
  "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"
2909
2953
  },
2910
- "base-url": {
2911
- "description": "API base URL",
2912
- "env": "FACES_BASE_URL",
2913
- "name": "base-url",
2954
+ "content": {
2955
+ "description": "Inline text content",
2956
+ "name": "content",
2914
2957
  "hasDynamicHelp": false,
2915
2958
  "multiple": false,
2916
2959
  "type": "option"
2917
2960
  },
2918
- "token": {
2919
- "description": "JWT bearer token",
2920
- "env": "FACES_TOKEN",
2921
- "name": "token",
2961
+ "file": {
2962
+ "description": "Read content from file",
2963
+ "name": "file",
2922
2964
  "hasDynamicHelp": false,
2923
2965
  "multiple": false,
2924
2966
  "type": "option"
2925
2967
  },
2926
- "api-key": {
2927
- "description": "API key",
2928
- "env": "FACES_API_KEY",
2929
- "name": "api-key",
2968
+ "perspective": {
2969
+ "description": "Perspective (first-person or third-person)",
2970
+ "name": "perspective",
2971
+ "default": "first-person",
2930
2972
  "hasDynamicHelp": false,
2931
2973
  "multiple": false,
2974
+ "options": [
2975
+ "first-person",
2976
+ "third-person"
2977
+ ],
2932
2978
  "type": "option"
2933
- },
2934
- "yes": {
2935
- "description": "Skip confirmation",
2936
- "name": "yes",
2937
- "allowNo": false,
2938
- "type": "boolean"
2939
2979
  }
2940
2980
  },
2941
2981
  "hasDynamicHelp": false,
2942
2982
  "hiddenAliases": [],
2943
- "id": "compile:thread:delete",
2983
+ "id": "compile:doc:create",
2944
2984
  "pluginAlias": "faces-cli",
2945
2985
  "pluginName": "faces-cli",
2946
2986
  "pluginType": "core",
@@ -2951,20 +2991,20 @@
2951
2991
  "dist",
2952
2992
  "commands",
2953
2993
  "compile",
2954
- "thread",
2955
- "delete.js"
2994
+ "doc",
2995
+ "create.js"
2956
2996
  ]
2957
2997
  },
2958
- "compile:thread:edit": {
2998
+ "compile:doc:delete": {
2959
2999
  "aliases": [],
2960
3000
  "args": {
2961
- "thread_id": {
2962
- "description": "Thread ID",
2963
- "name": "thread_id",
3001
+ "doc_id": {
3002
+ "description": "Document ID",
3003
+ "name": "doc_id",
2964
3004
  "required": true
2965
3005
  }
2966
3006
  },
2967
- "description": "Edit a thread (label and/or reassign face speaker)",
3007
+ "description": "Delete a document",
2968
3008
  "flags": {
2969
3009
  "json": {
2970
3010
  "description": "Format output as json.",
@@ -2991,22 +3031,8 @@
2991
3031
  },
2992
3032
  "api-key": {
2993
3033
  "description": "API key",
2994
- "env": "FACES_API_KEY",
2995
- "name": "api-key",
2996
- "hasDynamicHelp": false,
2997
- "multiple": false,
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",
3034
+ "env": "FACES_API_KEY",
3035
+ "name": "api-key",
3010
3036
  "hasDynamicHelp": false,
3011
3037
  "multiple": false,
3012
3038
  "type": "option"
@@ -3014,7 +3040,7 @@
3014
3040
  },
3015
3041
  "hasDynamicHelp": false,
3016
3042
  "hiddenAliases": [],
3017
- "id": "compile:thread:edit",
3043
+ "id": "compile:doc:delete",
3018
3044
  "pluginAlias": "faces-cli",
3019
3045
  "pluginName": "faces-cli",
3020
3046
  "pluginType": "core",
@@ -3025,20 +3051,20 @@
3025
3051
  "dist",
3026
3052
  "commands",
3027
3053
  "compile",
3028
- "thread",
3029
- "edit.js"
3054
+ "doc",
3055
+ "delete.js"
3030
3056
  ]
3031
3057
  },
3032
- "compile:thread:get": {
3058
+ "compile:doc:edit": {
3033
3059
  "aliases": [],
3034
3060
  "args": {
3035
- "thread_id": {
3036
- "description": "Thread ID",
3037
- "name": "thread_id",
3061
+ "doc_id": {
3062
+ "description": "Document ID",
3063
+ "name": "doc_id",
3038
3064
  "required": true
3039
3065
  }
3040
3066
  },
3041
- "description": "Get a thread by ID",
3067
+ "description": "Edit a document (label, content, or perspective)",
3042
3068
  "flags": {
3043
3069
  "json": {
3044
3070
  "description": "Format output as json.",
@@ -3070,11 +3096,43 @@
3070
3096
  "hasDynamicHelp": false,
3071
3097
  "multiple": false,
3072
3098
  "type": "option"
3099
+ },
3100
+ "label": {
3101
+ "description": "New label/title",
3102
+ "name": "label",
3103
+ "hasDynamicHelp": false,
3104
+ "multiple": false,
3105
+ "type": "option"
3106
+ },
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",
3124
+ "hasDynamicHelp": false,
3125
+ "multiple": false,
3126
+ "options": [
3127
+ "first-person",
3128
+ "third-person"
3129
+ ],
3130
+ "type": "option"
3073
3131
  }
3074
3132
  },
3075
3133
  "hasDynamicHelp": false,
3076
3134
  "hiddenAliases": [],
3077
- "id": "compile:thread:get",
3135
+ "id": "compile:doc:edit",
3078
3136
  "pluginAlias": "faces-cli",
3079
3137
  "pluginName": "faces-cli",
3080
3138
  "pluginType": "core",
@@ -3085,20 +3143,20 @@
3085
3143
  "dist",
3086
3144
  "commands",
3087
3145
  "compile",
3088
- "thread",
3089
- "get.js"
3146
+ "doc",
3147
+ "edit.js"
3090
3148
  ]
3091
3149
  },
3092
- "compile:thread:list": {
3150
+ "compile:doc:get": {
3093
3151
  "aliases": [],
3094
3152
  "args": {
3095
- "face_id": {
3096
- "description": "Face alias",
3097
- "name": "face_id",
3153
+ "doc_id": {
3154
+ "description": "Document ID",
3155
+ "name": "doc_id",
3098
3156
  "required": true
3099
3157
  }
3100
3158
  },
3101
- "description": "List threads for a face",
3159
+ "description": "Get a document by ID",
3102
3160
  "flags": {
3103
3161
  "json": {
3104
3162
  "description": "Format output as json.",
@@ -3134,7 +3192,7 @@
3134
3192
  },
3135
3193
  "hasDynamicHelp": false,
3136
3194
  "hiddenAliases": [],
3137
- "id": "compile:thread:list",
3195
+ "id": "compile:doc:get",
3138
3196
  "pluginAlias": "faces-cli",
3139
3197
  "pluginName": "faces-cli",
3140
3198
  "pluginType": "core",
@@ -3145,20 +3203,20 @@
3145
3203
  "dist",
3146
3204
  "commands",
3147
3205
  "compile",
3148
- "thread",
3149
- "list.js"
3206
+ "doc",
3207
+ "get.js"
3150
3208
  ]
3151
3209
  },
3152
- "compile:thread:make": {
3210
+ "compile:doc": {
3153
3211
  "aliases": [],
3154
3212
  "args": {
3155
- "thread_id": {
3156
- "description": "Thread ID",
3157
- "name": "thread_id",
3213
+ "face_id": {
3214
+ "description": "Face alias",
3215
+ "name": "face_id",
3158
3216
  "required": true
3159
3217
  }
3160
3218
  },
3161
- "description": "Compile an existing thread (prepare + sync in one step)",
3219
+ "description": "Compile a document into a face (create make in one step)",
3162
3220
  "flags": {
3163
3221
  "json": {
3164
3222
  "description": "Format output as json.",
@@ -3191,6 +3249,39 @@
3191
3249
  "multiple": false,
3192
3250
  "type": "option"
3193
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
+ },
3194
3285
  "timeout": {
3195
3286
  "description": "Compile timeout in seconds (default: 600)",
3196
3287
  "name": "timeout",
@@ -3200,7 +3291,7 @@
3200
3291
  "type": "option"
3201
3292
  },
3202
3293
  "no-wait": {
3203
- "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3294
+ "description": "Create and trigger compilation, then return immediately without polling.",
3204
3295
  "name": "no-wait",
3205
3296
  "allowNo": false,
3206
3297
  "type": "boolean"
@@ -3208,7 +3299,7 @@
3208
3299
  },
3209
3300
  "hasDynamicHelp": false,
3210
3301
  "hiddenAliases": [],
3211
- "id": "compile:thread:make",
3302
+ "id": "compile:doc",
3212
3303
  "pluginAlias": "faces-cli",
3213
3304
  "pluginName": "faces-cli",
3214
3305
  "pluginType": "core",
@@ -3219,20 +3310,20 @@
3219
3310
  "dist",
3220
3311
  "commands",
3221
3312
  "compile",
3222
- "thread",
3223
- "make.js"
3313
+ "doc",
3314
+ "index.js"
3224
3315
  ]
3225
3316
  },
3226
- "compile:thread:message": {
3317
+ "compile:doc:list": {
3227
3318
  "aliases": [],
3228
3319
  "args": {
3229
- "thread_id": {
3230
- "description": "Thread ID",
3231
- "name": "thread_id",
3320
+ "face_id": {
3321
+ "description": "Face alias",
3322
+ "name": "face_id",
3232
3323
  "required": true
3233
3324
  }
3234
3325
  },
3235
- "description": "Send a user message to a thread",
3326
+ "description": "List documents for a face",
3236
3327
  "flags": {
3237
3328
  "json": {
3238
3329
  "description": "Format output as json.",
@@ -3264,20 +3355,11 @@
3264
3355
  "hasDynamicHelp": false,
3265
3356
  "multiple": false,
3266
3357
  "type": "option"
3267
- },
3268
- "message": {
3269
- "char": "m",
3270
- "description": "User message to append",
3271
- "name": "message",
3272
- "required": true,
3273
- "hasDynamicHelp": false,
3274
- "multiple": false,
3275
- "type": "option"
3276
3358
  }
3277
3359
  },
3278
3360
  "hasDynamicHelp": false,
3279
3361
  "hiddenAliases": [],
3280
- "id": "compile:thread:message",
3362
+ "id": "compile:doc:list",
3281
3363
  "pluginAlias": "faces-cli",
3282
3364
  "pluginName": "faces-cli",
3283
3365
  "pluginType": "core",
@@ -3288,20 +3370,20 @@
3288
3370
  "dist",
3289
3371
  "commands",
3290
3372
  "compile",
3291
- "thread",
3292
- "message.js"
3373
+ "doc",
3374
+ "list.js"
3293
3375
  ]
3294
3376
  },
3295
- "compile:thread:pause": {
3377
+ "compile:doc:make": {
3296
3378
  "aliases": [],
3297
3379
  "args": {
3298
- "thread_id": {
3299
- "description": "Thread ID",
3300
- "name": "thread_id",
3380
+ "doc_id": {
3381
+ "description": "Document ID",
3382
+ "name": "doc_id",
3301
3383
  "required": true
3302
3384
  }
3303
3385
  },
3304
- "description": "Pause a running thread compilation (preserves progress, resume with make)",
3386
+ "description": "Compile an existing document (prepare + sync in one step)",
3305
3387
  "flags": {
3306
3388
  "json": {
3307
3389
  "description": "Format output as json.",
@@ -3333,11 +3415,25 @@
3333
3415
  "hasDynamicHelp": false,
3334
3416
  "multiple": false,
3335
3417
  "type": "option"
3418
+ },
3419
+ "timeout": {
3420
+ "description": "Compile timeout in seconds (default: 600)",
3421
+ "name": "timeout",
3422
+ "default": 600,
3423
+ "hasDynamicHelp": false,
3424
+ "multiple": false,
3425
+ "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"
3336
3432
  }
3337
3433
  },
3338
3434
  "hasDynamicHelp": false,
3339
3435
  "hiddenAliases": [],
3340
- "id": "compile:thread:pause",
3436
+ "id": "compile:doc:make",
3341
3437
  "pluginAlias": "faces-cli",
3342
3438
  "pluginName": "faces-cli",
3343
3439
  "pluginType": "core",
@@ -3348,20 +3444,20 @@
3348
3444
  "dist",
3349
3445
  "commands",
3350
3446
  "compile",
3351
- "thread",
3352
- "pause.js"
3447
+ "doc",
3448
+ "make.js"
3353
3449
  ]
3354
3450
  },
3355
- "compile:thread:reset": {
3451
+ "compile:doc:pause": {
3356
3452
  "aliases": [],
3357
3453
  "args": {
3358
- "thread_id": {
3359
- "description": "Thread ID",
3360
- "name": "thread_id",
3454
+ "doc_id": {
3455
+ "description": "Document ID",
3456
+ "name": "doc_id",
3361
3457
  "required": true
3362
3458
  }
3363
3459
  },
3364
- "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
3460
+ "description": "Pause a running document compilation (preserves progress, resume with make)",
3365
3461
  "flags": {
3366
3462
  "json": {
3367
3463
  "description": "Format output as json.",
@@ -3393,17 +3489,11 @@
3393
3489
  "hasDynamicHelp": false,
3394
3490
  "multiple": false,
3395
3491
  "type": "option"
3396
- },
3397
- "yes": {
3398
- "description": "Skip confirmation",
3399
- "name": "yes",
3400
- "allowNo": false,
3401
- "type": "boolean"
3402
3492
  }
3403
3493
  },
3404
3494
  "hasDynamicHelp": false,
3405
3495
  "hiddenAliases": [],
3406
- "id": "compile:thread:reset",
3496
+ "id": "compile:doc:pause",
3407
3497
  "pluginAlias": "faces-cli",
3408
3498
  "pluginName": "faces-cli",
3409
3499
  "pluginType": "core",
@@ -3414,20 +3504,20 @@
3414
3504
  "dist",
3415
3505
  "commands",
3416
3506
  "compile",
3417
- "thread",
3418
- "reset.js"
3507
+ "doc",
3508
+ "pause.js"
3419
3509
  ]
3420
3510
  },
3421
- "compile:thread:sync": {
3511
+ "compile:doc:reset": {
3422
3512
  "aliases": [],
3423
3513
  "args": {
3424
- "thread_id": {
3425
- "description": "Thread ID",
3426
- "name": "thread_id",
3514
+ "doc_id": {
3515
+ "description": "Document ID",
3516
+ "name": "doc_id",
3427
3517
  "required": true
3428
3518
  }
3429
3519
  },
3430
- "description": "Archive and sync a thread into a face",
3520
+ "description": "Reset document compilation progress (wipe extraction, keep content)",
3431
3521
  "flags": {
3432
3522
  "json": {
3433
3523
  "description": "Format output as json.",
@@ -3459,11 +3549,17 @@
3459
3549
  "hasDynamicHelp": false,
3460
3550
  "multiple": false,
3461
3551
  "type": "option"
3552
+ },
3553
+ "yes": {
3554
+ "description": "Skip confirmation",
3555
+ "name": "yes",
3556
+ "allowNo": false,
3557
+ "type": "boolean"
3462
3558
  }
3463
3559
  },
3464
3560
  "hasDynamicHelp": false,
3465
3561
  "hiddenAliases": [],
3466
- "id": "compile:thread:sync",
3562
+ "id": "compile:doc:reset",
3467
3563
  "pluginAlias": "faces-cli",
3468
3564
  "pluginName": "faces-cli",
3469
3565
  "pluginType": "core",
@@ -3474,11 +3570,11 @@
3474
3570
  "dist",
3475
3571
  "commands",
3476
3572
  "compile",
3477
- "thread",
3478
- "sync.js"
3573
+ "doc",
3574
+ "reset.js"
3479
3575
  ]
3480
3576
  },
3481
- "compile:doc:create": {
3577
+ "compile:thread:create": {
3482
3578
  "aliases": [],
3483
3579
  "args": {
3484
3580
  "face_id": {
@@ -3487,7 +3583,7 @@
3487
3583
  "required": true
3488
3584
  }
3489
3585
  },
3490
- "description": "Submit a document to a face",
3586
+ "description": "Start a new thread for a face",
3491
3587
  "flags": {
3492
3588
  "json": {
3493
3589
  "description": "Format output as json.",
@@ -3521,42 +3617,16 @@
3521
3617
  "type": "option"
3522
3618
  },
3523
3619
  "label": {
3524
- "description": "Document label/title",
3620
+ "description": "Thread label",
3525
3621
  "name": "label",
3526
3622
  "hasDynamicHelp": false,
3527
3623
  "multiple": false,
3528
3624
  "type": "option"
3529
- },
3530
- "content": {
3531
- "description": "Inline text content",
3532
- "name": "content",
3533
- "hasDynamicHelp": false,
3534
- "multiple": false,
3535
- "type": "option"
3536
- },
3537
- "file": {
3538
- "description": "Read content from file",
3539
- "name": "file",
3540
- "hasDynamicHelp": false,
3541
- "multiple": false,
3542
- "type": "option"
3543
- },
3544
- "perspective": {
3545
- "description": "Perspective (first-person or third-person)",
3546
- "name": "perspective",
3547
- "default": "first-person",
3548
- "hasDynamicHelp": false,
3549
- "multiple": false,
3550
- "options": [
3551
- "first-person",
3552
- "third-person"
3553
- ],
3554
- "type": "option"
3555
3625
  }
3556
3626
  },
3557
3627
  "hasDynamicHelp": false,
3558
3628
  "hiddenAliases": [],
3559
- "id": "compile:doc:create",
3629
+ "id": "compile:thread:create",
3560
3630
  "pluginAlias": "faces-cli",
3561
3631
  "pluginName": "faces-cli",
3562
3632
  "pluginType": "core",
@@ -3567,20 +3637,20 @@
3567
3637
  "dist",
3568
3638
  "commands",
3569
3639
  "compile",
3570
- "doc",
3640
+ "thread",
3571
3641
  "create.js"
3572
3642
  ]
3573
3643
  },
3574
- "compile:doc:delete": {
3644
+ "compile:thread:delete": {
3575
3645
  "aliases": [],
3576
3646
  "args": {
3577
- "doc_id": {
3578
- "description": "Document ID",
3579
- "name": "doc_id",
3647
+ "thread_id": {
3648
+ "description": "Thread ID",
3649
+ "name": "thread_id",
3580
3650
  "required": true
3581
3651
  }
3582
3652
  },
3583
- "description": "Delete a document",
3653
+ "description": "Delete a thread",
3584
3654
  "flags": {
3585
3655
  "json": {
3586
3656
  "description": "Format output as json.",
@@ -3612,11 +3682,17 @@
3612
3682
  "hasDynamicHelp": false,
3613
3683
  "multiple": false,
3614
3684
  "type": "option"
3685
+ },
3686
+ "yes": {
3687
+ "description": "Skip confirmation",
3688
+ "name": "yes",
3689
+ "allowNo": false,
3690
+ "type": "boolean"
3615
3691
  }
3616
3692
  },
3617
3693
  "hasDynamicHelp": false,
3618
3694
  "hiddenAliases": [],
3619
- "id": "compile:doc:delete",
3695
+ "id": "compile:thread:delete",
3620
3696
  "pluginAlias": "faces-cli",
3621
3697
  "pluginName": "faces-cli",
3622
3698
  "pluginType": "core",
@@ -3627,20 +3703,20 @@
3627
3703
  "dist",
3628
3704
  "commands",
3629
3705
  "compile",
3630
- "doc",
3706
+ "thread",
3631
3707
  "delete.js"
3632
3708
  ]
3633
3709
  },
3634
- "compile:doc:edit": {
3710
+ "compile:thread:edit": {
3635
3711
  "aliases": [],
3636
3712
  "args": {
3637
- "doc_id": {
3638
- "description": "Document ID",
3639
- "name": "doc_id",
3713
+ "thread_id": {
3714
+ "description": "Thread ID",
3715
+ "name": "thread_id",
3640
3716
  "required": true
3641
3717
  }
3642
3718
  },
3643
- "description": "Edit a document (label, content, or perspective)",
3719
+ "description": "Edit a thread (label and/or reassign face speaker)",
3644
3720
  "flags": {
3645
3721
  "json": {
3646
3722
  "description": "Format output as json.",
@@ -3674,41 +3750,23 @@
3674
3750
  "type": "option"
3675
3751
  },
3676
3752
  "label": {
3677
- "description": "New label/title",
3753
+ "description": "New thread label",
3678
3754
  "name": "label",
3679
3755
  "hasDynamicHelp": false,
3680
3756
  "multiple": false,
3681
3757
  "type": "option"
3682
3758
  },
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",
3759
+ "face-speaker": {
3760
+ "description": "Reassign face speaker: set this speaker to role=user, all others to role=assistant",
3761
+ "name": "face-speaker",
3700
3762
  "hasDynamicHelp": false,
3701
3763
  "multiple": false,
3702
- "options": [
3703
- "first-person",
3704
- "third-person"
3705
- ],
3706
3764
  "type": "option"
3707
3765
  }
3708
3766
  },
3709
3767
  "hasDynamicHelp": false,
3710
3768
  "hiddenAliases": [],
3711
- "id": "compile:doc:edit",
3769
+ "id": "compile:thread:edit",
3712
3770
  "pluginAlias": "faces-cli",
3713
3771
  "pluginName": "faces-cli",
3714
3772
  "pluginType": "core",
@@ -3719,20 +3777,20 @@
3719
3777
  "dist",
3720
3778
  "commands",
3721
3779
  "compile",
3722
- "doc",
3780
+ "thread",
3723
3781
  "edit.js"
3724
3782
  ]
3725
3783
  },
3726
- "compile:doc:get": {
3784
+ "compile:thread:get": {
3727
3785
  "aliases": [],
3728
3786
  "args": {
3729
- "doc_id": {
3730
- "description": "Document ID",
3731
- "name": "doc_id",
3787
+ "thread_id": {
3788
+ "description": "Thread ID",
3789
+ "name": "thread_id",
3732
3790
  "required": true
3733
3791
  }
3734
3792
  },
3735
- "description": "Get a document by ID",
3793
+ "description": "Get a thread by ID",
3736
3794
  "flags": {
3737
3795
  "json": {
3738
3796
  "description": "Format output as json.",
@@ -3768,7 +3826,7 @@
3768
3826
  },
3769
3827
  "hasDynamicHelp": false,
3770
3828
  "hiddenAliases": [],
3771
- "id": "compile:doc:get",
3829
+ "id": "compile:thread:get",
3772
3830
  "pluginAlias": "faces-cli",
3773
3831
  "pluginName": "faces-cli",
3774
3832
  "pluginType": "core",
@@ -3779,11 +3837,11 @@
3779
3837
  "dist",
3780
3838
  "commands",
3781
3839
  "compile",
3782
- "doc",
3840
+ "thread",
3783
3841
  "get.js"
3784
3842
  ]
3785
3843
  },
3786
- "compile:doc": {
3844
+ "compile:thread:list": {
3787
3845
  "aliases": [],
3788
3846
  "args": {
3789
3847
  "face_id": {
@@ -3792,7 +3850,7 @@
3792
3850
  "required": true
3793
3851
  }
3794
3852
  },
3795
- "description": "Compile a document into a face (create → make in one step)",
3853
+ "description": "List threads for a face",
3796
3854
  "flags": {
3797
3855
  "json": {
3798
3856
  "description": "Format output as json.",
@@ -3824,38 +3882,65 @@
3824
3882
  "hasDynamicHelp": false,
3825
3883
  "multiple": false,
3826
3884
  "type": "option"
3885
+ }
3886
+ },
3887
+ "hasDynamicHelp": false,
3888
+ "hiddenAliases": [],
3889
+ "id": "compile:thread:list",
3890
+ "pluginAlias": "faces-cli",
3891
+ "pluginName": "faces-cli",
3892
+ "pluginType": "core",
3893
+ "strict": true,
3894
+ "enableJsonFlag": true,
3895
+ "isESM": true,
3896
+ "relativePath": [
3897
+ "dist",
3898
+ "commands",
3899
+ "compile",
3900
+ "thread",
3901
+ "list.js"
3902
+ ]
3903
+ },
3904
+ "compile:thread:make": {
3905
+ "aliases": [],
3906
+ "args": {
3907
+ "thread_id": {
3908
+ "description": "Thread ID",
3909
+ "name": "thread_id",
3910
+ "required": true
3911
+ }
3912
+ },
3913
+ "description": "Compile an existing thread (prepare + sync in one step)",
3914
+ "flags": {
3915
+ "json": {
3916
+ "description": "Format output as json.",
3917
+ "helpGroup": "GLOBAL",
3918
+ "name": "json",
3919
+ "allowNo": false,
3920
+ "type": "boolean"
3827
3921
  },
3828
- "label": {
3829
- "description": "Document label/title",
3830
- "name": "label",
3831
- "hasDynamicHelp": false,
3832
- "multiple": false,
3833
- "type": "option"
3834
- },
3835
- "content": {
3836
- "description": "Inline text content",
3837
- "name": "content",
3922
+ "base-url": {
3923
+ "description": "API base URL",
3924
+ "env": "FACES_BASE_URL",
3925
+ "name": "base-url",
3838
3926
  "hasDynamicHelp": false,
3839
3927
  "multiple": false,
3840
3928
  "type": "option"
3841
3929
  },
3842
- "file": {
3843
- "description": "Read content from file",
3844
- "name": "file",
3930
+ "token": {
3931
+ "description": "JWT bearer token",
3932
+ "env": "FACES_TOKEN",
3933
+ "name": "token",
3845
3934
  "hasDynamicHelp": false,
3846
3935
  "multiple": false,
3847
3936
  "type": "option"
3848
3937
  },
3849
- "perspective": {
3850
- "description": "Perspective",
3851
- "name": "perspective",
3852
- "default": "first-person",
3938
+ "api-key": {
3939
+ "description": "API key",
3940
+ "env": "FACES_API_KEY",
3941
+ "name": "api-key",
3853
3942
  "hasDynamicHelp": false,
3854
3943
  "multiple": false,
3855
- "options": [
3856
- "first-person",
3857
- "third-person"
3858
- ],
3859
3944
  "type": "option"
3860
3945
  },
3861
3946
  "timeout": {
@@ -3867,7 +3952,7 @@
3867
3952
  "type": "option"
3868
3953
  },
3869
3954
  "no-wait": {
3870
- "description": "Create and trigger compilation, then return immediately without polling.",
3955
+ "description": "Return immediately after triggering compilation. Prints the thread ID for manual polling.",
3871
3956
  "name": "no-wait",
3872
3957
  "allowNo": false,
3873
3958
  "type": "boolean"
@@ -3875,7 +3960,7 @@
3875
3960
  },
3876
3961
  "hasDynamicHelp": false,
3877
3962
  "hiddenAliases": [],
3878
- "id": "compile:doc",
3963
+ "id": "compile:thread:make",
3879
3964
  "pluginAlias": "faces-cli",
3880
3965
  "pluginName": "faces-cli",
3881
3966
  "pluginType": "core",
@@ -3886,20 +3971,20 @@
3886
3971
  "dist",
3887
3972
  "commands",
3888
3973
  "compile",
3889
- "doc",
3890
- "index.js"
3974
+ "thread",
3975
+ "make.js"
3891
3976
  ]
3892
3977
  },
3893
- "compile:doc:list": {
3978
+ "compile:thread:message": {
3894
3979
  "aliases": [],
3895
3980
  "args": {
3896
- "face_id": {
3897
- "description": "Face alias",
3898
- "name": "face_id",
3981
+ "thread_id": {
3982
+ "description": "Thread ID",
3983
+ "name": "thread_id",
3899
3984
  "required": true
3900
3985
  }
3901
3986
  },
3902
- "description": "List documents for a face",
3987
+ "description": "Send a user message to a thread",
3903
3988
  "flags": {
3904
3989
  "json": {
3905
3990
  "description": "Format output as json.",
@@ -3931,11 +4016,20 @@
3931
4016
  "hasDynamicHelp": false,
3932
4017
  "multiple": false,
3933
4018
  "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"
3934
4028
  }
3935
4029
  },
3936
4030
  "hasDynamicHelp": false,
3937
4031
  "hiddenAliases": [],
3938
- "id": "compile:doc:list",
4032
+ "id": "compile:thread:message",
3939
4033
  "pluginAlias": "faces-cli",
3940
4034
  "pluginName": "faces-cli",
3941
4035
  "pluginType": "core",
@@ -3946,20 +4040,20 @@
3946
4040
  "dist",
3947
4041
  "commands",
3948
4042
  "compile",
3949
- "doc",
3950
- "list.js"
4043
+ "thread",
4044
+ "message.js"
3951
4045
  ]
3952
4046
  },
3953
- "compile:doc:make": {
4047
+ "compile:thread:pause": {
3954
4048
  "aliases": [],
3955
4049
  "args": {
3956
- "doc_id": {
3957
- "description": "Document ID",
3958
- "name": "doc_id",
4050
+ "thread_id": {
4051
+ "description": "Thread ID",
4052
+ "name": "thread_id",
3959
4053
  "required": true
3960
4054
  }
3961
4055
  },
3962
- "description": "Compile an existing document (prepare + sync in one step)",
4056
+ "description": "Pause a running thread compilation (preserves progress, resume with make)",
3963
4057
  "flags": {
3964
4058
  "json": {
3965
4059
  "description": "Format output as json.",
@@ -3991,25 +4085,11 @@
3991
4085
  "hasDynamicHelp": false,
3992
4086
  "multiple": false,
3993
4087
  "type": "option"
3994
- },
3995
- "timeout": {
3996
- "description": "Compile timeout in seconds (default: 600)",
3997
- "name": "timeout",
3998
- "default": 600,
3999
- "hasDynamicHelp": false,
4000
- "multiple": false,
4001
- "type": "option"
4002
- },
4003
- "no-wait": {
4004
- "description": "Return immediately after triggering compilation. Prints the document ID for manual polling.",
4005
- "name": "no-wait",
4006
- "allowNo": false,
4007
- "type": "boolean"
4008
4088
  }
4009
4089
  },
4010
4090
  "hasDynamicHelp": false,
4011
4091
  "hiddenAliases": [],
4012
- "id": "compile:doc:make",
4092
+ "id": "compile:thread:pause",
4013
4093
  "pluginAlias": "faces-cli",
4014
4094
  "pluginName": "faces-cli",
4015
4095
  "pluginType": "core",
@@ -4020,20 +4100,20 @@
4020
4100
  "dist",
4021
4101
  "commands",
4022
4102
  "compile",
4023
- "doc",
4024
- "make.js"
4103
+ "thread",
4104
+ "pause.js"
4025
4105
  ]
4026
4106
  },
4027
- "compile:doc:pause": {
4107
+ "compile:thread:reset": {
4028
4108
  "aliases": [],
4029
4109
  "args": {
4030
- "doc_id": {
4031
- "description": "Document ID",
4032
- "name": "doc_id",
4110
+ "thread_id": {
4111
+ "description": "Thread ID",
4112
+ "name": "thread_id",
4033
4113
  "required": true
4034
4114
  }
4035
4115
  },
4036
- "description": "Pause a running document compilation (preserves progress, resume with make)",
4116
+ "description": "Reset thread compilation progress (wipe extraction, keep source messages)",
4037
4117
  "flags": {
4038
4118
  "json": {
4039
4119
  "description": "Format output as json.",
@@ -4065,11 +4145,17 @@
4065
4145
  "hasDynamicHelp": false,
4066
4146
  "multiple": false,
4067
4147
  "type": "option"
4148
+ },
4149
+ "yes": {
4150
+ "description": "Skip confirmation",
4151
+ "name": "yes",
4152
+ "allowNo": false,
4153
+ "type": "boolean"
4068
4154
  }
4069
4155
  },
4070
4156
  "hasDynamicHelp": false,
4071
4157
  "hiddenAliases": [],
4072
- "id": "compile:doc:pause",
4158
+ "id": "compile:thread:reset",
4073
4159
  "pluginAlias": "faces-cli",
4074
4160
  "pluginName": "faces-cli",
4075
4161
  "pluginType": "core",
@@ -4080,20 +4166,20 @@
4080
4166
  "dist",
4081
4167
  "commands",
4082
4168
  "compile",
4083
- "doc",
4084
- "pause.js"
4169
+ "thread",
4170
+ "reset.js"
4085
4171
  ]
4086
4172
  },
4087
- "compile:doc:reset": {
4173
+ "compile:thread:sync": {
4088
4174
  "aliases": [],
4089
4175
  "args": {
4090
- "doc_id": {
4091
- "description": "Document ID",
4092
- "name": "doc_id",
4176
+ "thread_id": {
4177
+ "description": "Thread ID",
4178
+ "name": "thread_id",
4093
4179
  "required": true
4094
4180
  }
4095
4181
  },
4096
- "description": "Reset document compilation progress (wipe extraction, keep content)",
4182
+ "description": "Archive and sync a thread into a face",
4097
4183
  "flags": {
4098
4184
  "json": {
4099
4185
  "description": "Format output as json.",
@@ -4125,17 +4211,11 @@
4125
4211
  "hasDynamicHelp": false,
4126
4212
  "multiple": false,
4127
4213
  "type": "option"
4128
- },
4129
- "yes": {
4130
- "description": "Skip confirmation",
4131
- "name": "yes",
4132
- "allowNo": false,
4133
- "type": "boolean"
4134
4214
  }
4135
4215
  },
4136
4216
  "hasDynamicHelp": false,
4137
4217
  "hiddenAliases": [],
4138
- "id": "compile:doc:reset",
4218
+ "id": "compile:thread:sync",
4139
4219
  "pluginAlias": "faces-cli",
4140
4220
  "pluginName": "faces-cli",
4141
4221
  "pluginType": "core",
@@ -4146,10 +4226,10 @@
4146
4226
  "dist",
4147
4227
  "commands",
4148
4228
  "compile",
4149
- "doc",
4150
- "reset.js"
4229
+ "thread",
4230
+ "sync.js"
4151
4231
  ]
4152
4232
  }
4153
4233
  },
4154
- "version": "1.5.6"
4234
+ "version": "1.5.7"
4155
4235
  }