Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af3de3066b | ||
|
|
cf33b3b2c9 |
@@ -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.
|
||||
|
||||
## Current Status — v0.2.17
|
||||
## Current Status — v0.2.19
|
||||
|
||||
**Active build — this project is barely working. Experiment at your own risk.**
|
||||
|
||||
> Last release update: v0.2.17 — Add Python test harness and improve increment_and_push diagnostics and git identity handling
|
||||
> Last release update: v0.2.19 — Default test harness execution to build_static debug binary and add skip-build override flag
|
||||
|
||||
- Connects to configured relays with auto-reconnect and relay state transition logging
|
||||
- Publishes configured startup events per relay as each relay becomes connected
|
||||
|
||||
@@ -142,6 +142,27 @@ ensure_git_identity() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Ensure origin remote uses SSH for git.laantungir.net to avoid HTTPS username prompts
|
||||
ensure_origin_ssh_remote() {
|
||||
local origin_url
|
||||
origin_url=$(git remote get-url origin 2>/dev/null || true)
|
||||
|
||||
if [[ -z "$origin_url" ]]; then
|
||||
print_warning "No 'origin' remote found; skipping remote URL normalization"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Convert only this host from HTTPS to SSH (uses ~/.ssh/config Host git.laantungir.net)
|
||||
if [[ "$origin_url" =~ ^https://git\.laantungir\.net/(.+)\.git$ ]]; then
|
||||
local repo_path
|
||||
local ssh_url
|
||||
repo_path="${BASH_REMATCH[1]}"
|
||||
ssh_url="git@git.laantungir.net:${repo_path}.git"
|
||||
git remote set-url origin "$ssh_url"
|
||||
print_status "Updated origin remote to SSH: $ssh_url"
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to get current version and increment appropriately
|
||||
increment_version() {
|
||||
local increment_type="$1" # "patch", "minor", or "major"
|
||||
@@ -543,6 +564,7 @@ main() {
|
||||
# Check prerequisites
|
||||
check_git_repo
|
||||
ensure_git_identity
|
||||
ensure_origin_ssh_remote
|
||||
|
||||
if [[ "$RELEASE_MODE" == true ]]; then
|
||||
print_status "=== RELEASE MODE ==="
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
// Using DIDACTYL_ prefix to avoid conflicts with nostr_core_lib VERSION macros
|
||||
#define DIDACTYL_VERSION_MAJOR 0
|
||||
#define DIDACTYL_VERSION_MINOR 2
|
||||
#define DIDACTYL_VERSION_PATCH 17
|
||||
#define DIDACTYL_VERSION "v0.2.17"
|
||||
#define DIDACTYL_VERSION_PATCH 19
|
||||
#define DIDACTYL_VERSION "v0.2.19"
|
||||
|
||||
// Agent metadata
|
||||
#define DIDACTYL_NAME "Didactyl"
|
||||
|
||||
Binary file not shown.
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import datetime as dt
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
@@ -20,7 +21,7 @@ from tests.harness.test_runner import TestRunner
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description="Didactyl automated test harness")
|
||||
parser.add_argument("--config", default="tests/configs/test_genesis.jsonc")
|
||||
parser.add_argument("--binary", default="./didactyl")
|
||||
parser.add_argument("--binary", default=None, help="Path to didactyl binary; if omitted, build_static --debug is used")
|
||||
parser.add_argument("--suite", action="append", help="Run only this suite (repeatable)")
|
||||
parser.add_argument("--test", action="append", help="Run only this test name (repeatable)")
|
||||
parser.add_argument("--api-port", type=int, default=8485)
|
||||
@@ -30,9 +31,33 @@ def parse_args() -> argparse.Namespace:
|
||||
parser.add_argument("--output-dir", default=None)
|
||||
parser.add_argument("--verbose", action="store_true")
|
||||
parser.add_argument("--no-restart", action="store_true")
|
||||
parser.add_argument(
|
||||
"--skip-build-static-debug",
|
||||
action="store_true",
|
||||
help="Do not invoke ./build_static.sh --debug before running",
|
||||
)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def build_static_debug_binary() -> None:
|
||||
cmd = ["./build_static.sh", "--debug"]
|
||||
print("Building debug static binary via ./build_static.sh --debug ...")
|
||||
subprocess.run(cmd, check=True)
|
||||
|
||||
|
||||
def resolve_default_debug_binary() -> Path:
|
||||
candidates = [
|
||||
Path("./didactyl_static_x86_64_debug"),
|
||||
Path("./didactyl_static_arm64_debug"),
|
||||
Path("./didactyl_static_armv7_debug"),
|
||||
Path("./didactyl_static_armv6_debug"),
|
||||
]
|
||||
existing = [p for p in candidates if p.exists() and p.is_file()]
|
||||
if existing:
|
||||
return existing[0]
|
||||
return Path("./didactyl_static_x86_64_debug")
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
|
||||
@@ -40,9 +65,17 @@ def main() -> int:
|
||||
output_dir = args.output_dir or f"tests/results/{run_ts}"
|
||||
Path(output_dir).mkdir(parents=True, exist_ok=True)
|
||||
|
||||
binary = Path(args.binary)
|
||||
if not args.skip_build_static_debug:
|
||||
try:
|
||||
build_static_debug_binary()
|
||||
except subprocess.CalledProcessError as exc:
|
||||
print(f"build_static debug build failed with exit code {exc.returncode}")
|
||||
return 2
|
||||
|
||||
binary = Path(args.binary) if args.binary else resolve_default_debug_binary()
|
||||
if not binary.exists():
|
||||
print(f"didactyl binary not found: {binary}")
|
||||
print("Pass --binary <path> or run ./build_static.sh --debug")
|
||||
return 2
|
||||
|
||||
config = Path(args.config)
|
||||
|
||||
Reference in New Issue
Block a user