v0.2.64 - Skip ppq.ai balance check (not supported); fix ppq.ai base URL to /v1 for model discovery

This commit is contained in:
Didactyl User
2026-08-07 12:28:18 -04:00
parent a48c08f7c4
commit d0515933f4
3 changed files with 12 additions and 10 deletions
+2 -2
View File
@@ -54,11 +54,11 @@ Skills compose by adoption-list order (`10123`) and trigger tags carry runtime e
Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers. Didactyl will support local inference, which is very privacy preserving. Remote inference does however have it's advantages, and in those cases Didactyl supports using Bitcoin Lightning and eCash inference providers.
## Current Status — v0.2.63 ## Current Status — v0.2.64
**Active build — this project is barely working. Experiment at your own risk.** **Active build — this project is barely working. Experiment at your own risk.**
> Last release update: v0.2.63 — Fix Dockerfile: add missing tool_signer_crypto.c to static build source list > Last release update: v0.2.64 — Skip ppq.ai balance check (not supported); fix ppq.ai base URL to /v1 for model discovery
- Connects to configured relays with auto-reconnect and relay state transition logging - Connects to configured relays with auto-reconnect and relay state transition logging
- Publishes configured startup events per relay as each relay becomes connected - Publishes configured startup events per relay as each relay becomes connected
+2 -2
View File
@@ -12,8 +12,8 @@
// Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros // Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros
#define DIDACTYL_VERSION_MAJOR 0 #define DIDACTYL_VERSION_MAJOR 0
#define DIDACTYL_VERSION_MINOR 2 #define DIDACTYL_VERSION_MINOR 2
#define DIDACTYL_VERSION_PATCH 63 #define DIDACTYL_VERSION_PATCH 64
#define DIDACTYL_VERSION "v0.2.63" #define DIDACTYL_VERSION "v0.2.64"
// Agent metadata // Agent metadata
#define DIDACTYL_NAME "Didactyl" #define DIDACTYL_NAME "Didactyl"
+8 -6
View File
@@ -1740,15 +1740,17 @@ static int extract_balance_value(const cJSON* root, double* out_balance) {
static void wizard_check_provider_balance(const llm_config_t* llm_cfg) { static void wizard_check_provider_balance(const llm_config_t* llm_cfg) {
if (!llm_cfg || llm_cfg->base_url[0] == '\0') return; if (!llm_cfg || llm_cfg->base_url[0] == '\0') return;
const char* paths_ppq[] = {"/credits", "/credit", "/balance", "/v1/credits"}; /* ppq.ai does not expose a balance/credits endpoint via API key alone. */
if (strcmp(llm_cfg->provider, "ppq") == 0) {
fprintf(stderr, " Balance check: skipped for ppq.ai\n");
return;
}
const char* paths_routstr[] = {"/balance", "/credits", "/v1/balance"}; const char* paths_routstr[] = {"/balance", "/credits", "/v1/balance"};
const char** paths = NULL; const char** paths = NULL;
size_t path_count = 0; size_t path_count = 0;
if (strcmp(llm_cfg->provider, "ppq") == 0) { if (strcmp(llm_cfg->provider, "routstr") == 0) {
paths = paths_ppq;
path_count = sizeof(paths_ppq) / sizeof(paths_ppq[0]);
} else if (strcmp(llm_cfg->provider, "routstr") == 0) {
paths = paths_routstr; paths = paths_routstr;
path_count = sizeof(paths_routstr) / sizeof(paths_routstr[0]); path_count = sizeof(paths_routstr) / sizeof(paths_routstr[0]);
} else { } else {
@@ -1923,7 +1925,7 @@ static int prompt_llm_config_with_header(didactyl_config_t* cfg,
char base_url[OW_MAX_URL_LEN] = {0}; char base_url[OW_MAX_URL_LEN] = {0};
if (provider_choice == '1') { if (provider_choice == '1') {
snprintf(provider, sizeof(provider), "%s", "ppq"); snprintf(provider, sizeof(provider), "%s", "ppq");
snprintf(base_url, sizeof(base_url), "%s", "https://api.ppq.ai"); snprintf(base_url, sizeof(base_url), "%s", "https://api.ppq.ai/v1");
} else if (provider_choice == '2') { } else if (provider_choice == '2') {
snprintf(provider, sizeof(provider), "%s", "routstr"); snprintf(provider, sizeof(provider), "%s", "routstr");
snprintf(base_url, sizeof(base_url), "%s", "https://api.routstr.com"); snprintf(base_url, sizeof(base_url), "%s", "https://api.routstr.com");