Fix compile of command line parser
This is such an antiattren, amazing.
This commit is contained in:
parent
fd922fe747
commit
3f1410a095
|
|
@ -7,6 +7,7 @@ Qt6::Core
|
||||||
Qt6::Sql
|
Qt6::Sql
|
||||||
KF6::ConfigCore
|
KF6::ConfigCore
|
||||||
kom_dal
|
kom_dal
|
||||||
|
kompanion_mw
|
||||||
kom_ki
|
kom_ki
|
||||||
kom_mcp
|
kom_mcp
|
||||||
Qt6::McpServer
|
Qt6::McpServer
|
||||||
|
|
|
||||||
|
|
@ -841,64 +841,58 @@ int main(int argc, char** argv) {
|
||||||
parser.addOption(mcpAddrOption);
|
parser.addOption(mcpAddrOption);
|
||||||
|
|
||||||
// DB navigation helpers
|
// DB navigation helpers
|
||||||
QCommandLineOption dbNsOption(QStringList() << "--db-namespaces",
|
QCommandLineOption dbNsOption(QStringList() << "db-namespaces",
|
||||||
"List namespaces in the database and exit.");
|
"List namespaces in the database and exit.");
|
||||||
parser.addOption(dbNsOption);
|
parser.addOption(dbNsOption);
|
||||||
QCommandLineOption dbItemsOption(QStringList() << "--db-items",
|
QCommandLineOption dbItemsOption(QStringList() << "db-items",
|
||||||
"List recent items in a namespace (requires --ns). Optional --limit.");
|
"List recent items in a namespace (requires --ns). Optional --limit.");
|
||||||
parser.addOption(dbItemsOption);
|
parser.addOption(dbItemsOption);
|
||||||
QCommandLineOption nsNameOption(QStringList() << "--ns",
|
QCommandLineOption nsNameOption(QStringList() << "ns",
|
||||||
"Namespace name for DB operations.",
|
"Namespace name for DB operations.",
|
||||||
"name");
|
"name");
|
||||||
parser.addOption(nsNameOption);
|
parser.addOption(nsNameOption);
|
||||||
QCommandLineOption limitOption(QStringList() << "--limit",
|
QCommandLineOption limitOption(QStringList() << "limit",
|
||||||
"Limit for DB operations (default 10).",
|
"Limit for DB operations (default 10).",
|
||||||
"n", "10");
|
"n", "10");
|
||||||
parser.addOption(limitOption);
|
parser.addOption(limitOption);
|
||||||
QCommandLineOption dbSearchOption(QStringList() << "--db-search",
|
QCommandLineOption queryOption(QStringList() << "db-search",
|
||||||
"Hybrid search in a namespace. Use --text and/or --embedding-file. Requires --ns.");
|
"Hybrid search in a namespace. Use --text and/or --embedding-file. Requires --ns.");
|
||||||
parser.addOption(dbSearchOption);
|
parser.addOption(queryOption);
|
||||||
QCommandLineOption textOption(QStringList() << "--text",
|
QCommandLineOption embFileOption(QStringList() << "embedding-file",
|
||||||
"Text query for DB search.",
|
|
||||||
"q");
|
|
||||||
parser.addOption(textOption);
|
|
||||||
QCommandLineOption embFileOption(QStringList() << "--embedding-file",
|
|
||||||
"Path to JSON array containing embedding vector for hybrid search.",
|
"Path to JSON array containing embedding vector for hybrid search.",
|
||||||
"path");
|
"path");
|
||||||
parser.addOption(embFileOption);
|
parser.addOption(embFileOption);
|
||||||
|
|
||||||
// Snapshot helpers
|
// Snapshot helpers
|
||||||
QCommandLineOption snapshotSaveOption(QStringList() << "--snapshot-save",
|
QCommandLineOption snapshotSaveOption(QStringList() << "snapshot-save",
|
||||||
"Save a JSON snapshot (content) under a key in --ns. Provide content via -r/--stdin/[payload].");
|
"Save a JSON snapshot (content) under a key in --ns. Provide content via -r/--stdin/[payload].");
|
||||||
parser.addOption(snapshotSaveOption);
|
parser.addOption(snapshotSaveOption);
|
||||||
QCommandLineOption snapshotLoadOption(QStringList() << "--snapshot-load",
|
QCommandLineOption snapshotLoadOption(QStringList() << "snapshot-load",
|
||||||
"Load a JSON snapshot for --ns and --key and print it.");
|
"Load a JSON snapshot for --ns and --key and print it.");
|
||||||
parser.addOption(snapshotLoadOption);
|
parser.addOption(snapshotLoadOption);
|
||||||
QCommandLineOption keyOption(QStringList() << "--key",
|
QCommandLineOption keyOption(QStringList() << "key",
|
||||||
"Key for snapshot operations (default 'session:last').",
|
"Key for snapshot operations (default 'session:last').",
|
||||||
"key", "session:last");
|
"key", "session:last");
|
||||||
parser.addOption(keyOption);
|
parser.addOption(keyOption);
|
||||||
|
|
||||||
// Warm cache + rehydrate helpers
|
// Warm cache + rehydrate helpers
|
||||||
QCommandLineOption warmCacheOption(QStringList() << "--warm-cache",
|
QCommandLineOption warmCacheOption(QStringList() << "warm-cache",
|
||||||
"Warm precomputed embeddings (policy or ad-hoc). Use with --policy or --id.");
|
"Warm precomputed embeddings (policy or ad-hoc). Use with --policy or --id.");
|
||||||
parser.addOption(warmCacheOption);
|
parser.addOption(warmCacheOption);
|
||||||
QCommandLineOption policyOption(QStringList() << "--policy",
|
QCommandLineOption policyOption(QStringList() << "policy",
|
||||||
"Policy file (YAML/JSON) describing namespaces, model, limit, window_days.",
|
"Policy file (YAML/JSON) describing namespaces, model, limit, window_days.",
|
||||||
"path");
|
"path");
|
||||||
parser.addOption(policyOption);
|
parser.addOption(policyOption);
|
||||||
QCommandLineOption idOption(QStringList() << "--id",
|
QCommandLineOption idOption(QStringList() << "id",
|
||||||
"Explicit item id for ad-hoc warm cache (use with --stdin or -r).",
|
"Explicit item id for ad-hoc warm cache (use with --stdin or -r).",
|
||||||
"id");
|
"id");
|
||||||
parser.addOption(idOption);
|
parser.addOption(idOption);
|
||||||
|
|
||||||
|
parser.addOption(idOption);
|
||||||
QCommandLineOption rehydrateOption(QStringList() << "--rehydrate",
|
QCommandLineOption rehydrateOption(QStringList() << "--rehydrate",
|
||||||
"Compose a rehydration frame: snapshot + top-K search for --text.");
|
"Compose a rehydration frame: snapshot + top-K search for --text.");
|
||||||
parser.addOption(rehydrateOption);
|
parser.addOption(rehydrateOption);
|
||||||
QCommandLineOption textQOption(QStringList() << "--text",
|
QCommandLineOption kOption(QStringList() << "k",
|
||||||
"Text query for rehydrate/search.",
|
|
||||||
"q");
|
|
||||||
parser.addOption(textQOption);
|
|
||||||
QCommandLineOption kOption(QStringList() << "-k",
|
|
||||||
"Top-K for rehydrate/search.",
|
"Top-K for rehydrate/search.",
|
||||||
"k", "8");
|
"k", "8");
|
||||||
parser.addOption(kOption);
|
parser.addOption(kOption);
|
||||||
|
|
@ -975,8 +969,8 @@ int main(int argc, char** argv) {
|
||||||
// Snapshot helpers (exclusive)
|
// Snapshot helpers (exclusive)
|
||||||
if (snapSave || snapLoad) {
|
if (snapSave || snapLoad) {
|
||||||
const QString ns = parser.value(nsNameOption);
|
const QString ns = parser.value(nsNameOption);
|
||||||
|
const QString nsQuery = parser.value(nsQuery);
|
||||||
if (ns.isEmpty()) { qerr << "--snapshot-save/load requires --ns <name>\n"; return 1; }
|
if (ns.isEmpty()) { qerr << "--snapshot-save/load requires --ns <name>\n"; return 1; }
|
||||||
const QString key = parser.value(keyOption);
|
|
||||||
if (snapSave) {
|
if (snapSave) {
|
||||||
// Resolve content from CLI
|
// Resolve content from CLI
|
||||||
std::string raw;
|
std::string raw;
|
||||||
|
|
@ -987,13 +981,13 @@ int main(int argc, char** argv) {
|
||||||
}
|
}
|
||||||
// Wrap into save_context call
|
// Wrap into save_context call
|
||||||
std::ostringstream req;
|
std::ostringstream req;
|
||||||
req << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << key.toStdString() << "\",\"content\":" << raw << ",\"tags\":[\"snapshot\"]}";
|
req << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << nsQuery.toStdString() << "\",\"content\":" << raw << ",\"tags\":[\"snapshot\"]}";
|
||||||
const std::string out = server.dispatch("kom.memory.v1.save_context", req.str());
|
const std::string out = server.dispatch("kom.memory.v1.save_context", req.str());
|
||||||
std::cout << out << std::endl;
|
std::cout << out << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
std::ostringstream req;
|
std::ostringstream req;
|
||||||
req << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << key.toStdString() << "\"}";
|
req << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << nsQuery.toStdString() << "\"}";
|
||||||
const std::string out = server.dispatch("kom.memory.v1.recall_context", req.str());
|
const std::string out = server.dispatch("kom.memory.v1.recall_context", req.str());
|
||||||
std::cout << out << std::endl;
|
std::cout << out << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -1070,13 +1064,13 @@ int main(int argc, char** argv) {
|
||||||
if (rehydrate) {
|
if (rehydrate) {
|
||||||
const QString ns = parser.value(nsNameOption);
|
const QString ns = parser.value(nsNameOption);
|
||||||
const QString key = parser.value(keyOption);
|
const QString key = parser.value(keyOption);
|
||||||
const QString text = parser.value(textQOption);
|
const QString text = parser.value(queryOption);
|
||||||
bool ok=false; int k = parser.value(kOption).toInt(&ok); if (!ok || k<=0) k=8;
|
bool ok=false; int k = parser.value(kOption).toInt(&ok); if (!ok || k<=0) k=8;
|
||||||
// Recall snapshot
|
// Recall snapshot
|
||||||
std::ostringstream r1; r1 << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << key.toStdString() << "\"}";
|
std::ostringstream r1; r1 << "{\"namespace\":\"" << ns.toStdString() << "\",\"key\":\"" << key.toStdString() << "\"}";
|
||||||
const std::string snapshot = server.dispatch("kom.memory.v1.recall_context", r1.str());
|
const std::string snapshot = server.dispatch("kom.memory.v1.recall_context", r1.str());
|
||||||
// Search
|
// Search
|
||||||
std::ostringstream r2; r2 << "{\"namespace\":\"" << ns.toStdString() << "\",\"query\":{\"text\":\"" << detail::json_escape(text.toStdString()) << "\",\"k\":" << k << "}}";
|
std::ostringstream r2; r2 << "{\"namespace\":\"" << ns.toStdString() << "\",\"query\":{\"text\":\"" << jsonEscape(text) << "\",\"k\":" << k << "}}";
|
||||||
const std::string matches = server.dispatch("kom.memory.v1.search_memory", r2.str());
|
const std::string matches = server.dispatch("kom.memory.v1.search_memory", r2.str());
|
||||||
// Compose
|
// Compose
|
||||||
std::cout << "{\"snapshot\":" << snapshot << ",\"search\":" << matches << "}" << std::endl;
|
std::cout << "{\"snapshot\":" << snapshot << ",\"search\":" << matches << "}" << std::endl;
|
||||||
|
|
@ -1093,11 +1087,11 @@ int main(int argc, char** argv) {
|
||||||
bool ok=false; int lim = parser.value(limitOption).toInt(&ok); if (!ok || lim<=0) lim=10;
|
bool ok=false; int lim = parser.value(limitOption).toInt(&ok); if (!ok || lim<=0) lim=10;
|
||||||
return dbListItems(ns, lim, qout) ? 0 : 1;
|
return dbListItems(ns, lim, qout) ? 0 : 1;
|
||||||
}
|
}
|
||||||
if (parser.isSet(dbSearchOption)) {
|
if (parser.isSet(queryOption)) {
|
||||||
const QString ns = parser.value(nsNameOption);
|
const QString ns = parser.value(queryOption);
|
||||||
if (ns.isEmpty()) { qerr << "--db-search requires --ns <name>\n"; return 1; }
|
if (ns.isEmpty()) { qerr << "--db-search requires --ns <name>\n"; return 1; }
|
||||||
bool ok=false; int k = parser.value(limitOption).toInt(&ok); if (!ok || k<=0) k=5;
|
bool ok=false; int k = parser.value(limitOption).toInt(&ok); if (!ok || k<=0) k=5;
|
||||||
const QString text = parser.value(textOption);
|
const QString text = parser.value(queryOption);
|
||||||
const QString embPath = parser.value(embFileOption);
|
const QString embPath = parser.value(embFileOption);
|
||||||
return dbSearch(ns, text, embPath, k, qout) ? 0 : 1;
|
return dbSearch(ns, text, embPath, k, qout) ? 0 : 1;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue