Spaces:
Running
Running
Deploy Aureon OS (deploy/selfhost stack: nginx edge + fusion API x2 + console + HNC organ + redis + postgres; paper mode) (part 19)
da0ce7b verified Download scripts/python/ingest_queen_knowledge.py from GaryLeckey/aureon-os: direct link, hf CLI and curl.
- Browser
- Download file 44.3 kB
-
https://huggingface.co/spaces/GaryLeckey/aureon-os/resolve/main/scripts/python/ingest_queen_knowledge.py
- Command line
-
hf download hf://spaces/GaryLeckey/aureon-os/scripts/python/ingest_queen_knowledge.py
-
curl -L -o ingest_queen_knowledge.py https://huggingface.co/spaces/GaryLeckey/aureon-os/resolve/main/scripts/python/ingest_queen_knowledge.py
44.3 kB
| #!/usr/bin/env python3 | |
| """ | |
| Ingest ALL Queen systems into Aureon's unified global history SQLite database. | |
| The Queen is a massive AI consciousness / trading system with 99+ modules. | |
| This script is the bridge that wires every accumulated piece of knowledge, | |
| memory, insight, thought, tactic, and trading signal into the single-file | |
| global history DB so the rest of the Aureon ecosystem can query it. | |
| Sources ingested (10 total): | |
| 1. Consciousness state file (memories + wisdom) | |
| 2. Trading knowledge (concepts) | |
| 3. Warfare tactics (loss-learning tactics) | |
| 4. Battle results (simulation outcomes) | |
| 5. Consciousness decisions (realm votes, consensus) | |
| 6. Thought-bus JSONL files (queen_thoughts, portfolio_thoughts, queen_trades) | |
| 7. Live queen modules (deep intel, market awareness, neuron, consciousness, | |
| open-source data, loss learning, eternal machine) | |
| 8. Neuron weights (neural network weight matrices) | |
| 9. Capital knowledge (capital markets learned knowledge) | |
| 10. All remaining queen state (glob queen_*.json catch-all) | |
| Usage: | |
| python scripts/python/ingest_queen_knowledge.py | |
| python scripts/python/ingest_queen_knowledge.py --sources state,knowledge,live | |
| python scripts/python/ingest_queen_knowledge.py --db path/to/custom.sqlite | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import glob as globmod | |
| import hashlib | |
| import json | |
| import os | |
| import sys | |
| import time | |
| import traceback | |
| from datetime import datetime, timezone | |
| from pathlib import Path | |
| from typing import Any, Dict, List, Optional | |
| # --------------------------------------------------------------------------- | |
| # Repo-root / sys.path setup (same pattern as other scripts/python/ scripts) | |
| # --------------------------------------------------------------------------- | |
| _REPO_ROOT = Path(__file__).resolve().parents[2] | |
| if str(_REPO_ROOT) not in sys.path: | |
| sys.path.insert(0, str(_REPO_ROOT)) | |
| # Also add aureon/queen so that queen modules can be imported directly. | |
| _QUEEN_DIR = _REPO_ROOT / "aureon" / "queen" | |
| if str(_QUEEN_DIR) not in sys.path: | |
| sys.path.insert(0, str(_QUEEN_DIR)) | |
| try: | |
| from dotenv import load_dotenv | |
| load_dotenv(_REPO_ROOT / ".env") | |
| except Exception: | |
| pass | |
| from aureon.core.aureon_global_history_db import ( | |
| connect, | |
| insert_forecast, | |
| insert_queen_insight, | |
| insert_queen_knowledge, | |
| insert_queen_memory, | |
| insert_queen_thought, | |
| insert_sentiment, | |
| ) | |
| # --------------------------------------------------------------------------- | |
| # Helpers | |
| # --------------------------------------------------------------------------- | |
| BATCH_SIZE = 500 | |
| ALL_SOURCES = [ | |
| "state", "knowledge", "tactics", "battles", "decisions", | |
| "thoughts", "live", "weights", "capital", "all_state", | |
| ] | |
| def _json_safe(obj: Any) -> str: | |
| """Serialize obj to compact JSON, handling non-serializable types.""" | |
| try: | |
| return json.dumps(obj, ensure_ascii=True, separators=(",", ":"), default=str) | |
| except Exception: | |
| try: | |
| return json.dumps({"_unserializable": True, "repr": repr(obj)}, | |
| ensure_ascii=True, separators=(",", ":")) | |
| except Exception: | |
| return "{}" | |
| def _to_ms(ts: Any) -> Optional[int]: | |
| """Convert a timestamp to epoch milliseconds. | |
| Handles: | |
| - epoch seconds (float/int < 10^12) | |
| - epoch ms (int >= 10^12) | |
| - ISO datetime strings | |
| - None / missing | |
| """ | |
| if ts is None: | |
| return None | |
| if isinstance(ts, str): | |
| ts = ts.strip() | |
| if not ts: | |
| return None | |
| # Try parsing ISO format | |
| for fmt in ("%Y-%m-%dT%H:%M:%S.%fZ", "%Y-%m-%dT%H:%M:%SZ", | |
| "%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%dT%H:%M:%S", | |
| "%Y-%m-%d %H:%M:%S.%f", "%Y-%m-%d %H:%M:%S", | |
| "%Y-%m-%d"): | |
| try: | |
| dt = datetime.strptime(ts, fmt).replace(tzinfo=timezone.utc) | |
| return int(dt.timestamp() * 1000) | |
| except ValueError: | |
| continue | |
| # Maybe it is a numeric string | |
| try: | |
| ts = float(ts) | |
| except ValueError: | |
| return None | |
| try: | |
| ts = float(ts) | |
| except (TypeError, ValueError): | |
| return None | |
| if ts > 1e15: | |
| # Microseconds? Convert to ms. | |
| return int(ts / 1000) | |
| if ts > 1e12: | |
| # Already milliseconds. | |
| return int(ts) | |
| # Seconds. | |
| return int(ts * 1000) | |
| def _now_ms() -> int: | |
| return int(time.time() * 1000) | |
| def _det_id(*parts: Any) -> str: | |
| """Build a deterministic dedup ID from parts.""" | |
| raw = ":".join(str(p) for p in parts) | |
| return hashlib.sha256(raw.encode("utf-8", errors="replace")).hexdigest()[:24] | |
| def _load_json(path: Path) -> Optional[Any]: | |
| """Load a JSON file, returning None on missing/corrupt.""" | |
| if not path.is_file(): | |
| print(f" [skip] File not found: {path}") | |
| return None | |
| try: | |
| with open(path, "r", encoding="utf-8") as f: | |
| return json.load(f) | |
| except Exception as exc: | |
| print(f" [warn] Could not parse {path}: {exc}") | |
| return None | |
| class _Counter: | |
| """Simple inserted/skipped counter for a source.""" | |
| def __init__(self, name: str): | |
| self.name = name | |
| self.inserted = 0 | |
| self.skipped = 0 | |
| self.errors = 0 | |
| def record(self, ok: bool) -> None: | |
| if ok: | |
| self.inserted += 1 | |
| else: | |
| self.skipped += 1 | |
| def summary(self) -> str: | |
| parts = [f"inserted={self.inserted}", f"skipped={self.skipped}"] | |
| if self.errors: | |
| parts.append(f"errors={self.errors}") | |
| return f" [{self.name}] {', '.join(parts)}" | |
| def _batch_commit(conn, counter: _Counter) -> None: | |
| """Commit every BATCH_SIZE inserts.""" | |
| total = counter.inserted + counter.skipped | |
| if total > 0 and total % BATCH_SIZE == 0: | |
| conn.commit() | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 1: Consciousness State File | |
| # --------------------------------------------------------------------------- | |
| def ingest_consciousness_state(conn, repo: Path) -> _Counter: | |
| c = _Counter("consciousness_state") | |
| path = repo / "state" / "queen" / "queen_consciousness_state.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| # Memories | |
| memories = data.get("memories") or {} | |
| for mem_id, mem in memories.items(): | |
| ok = insert_queen_memory(conn, { | |
| "memory_id": f"consciousness:{mem_id}", | |
| "memory_type": "memory", | |
| "category": mem.get("category"), | |
| "title": mem.get("title"), | |
| "description": mem.get("description"), | |
| "symbol": mem.get("context", {}).get("symbol") if isinstance(mem.get("context"), dict) else None, | |
| "outcome": mem.get("outcome"), | |
| "outcome_value": mem.get("outcome_value"), | |
| "importance": mem.get("importance"), | |
| "confidence": None, | |
| "lesson": mem.get("lesson_learned"), | |
| "ts_ms": _to_ms(mem.get("created")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(mem), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| # Wisdom | |
| wisdom = data.get("wisdom") or {} | |
| for wis_id, wis in wisdom.items(): | |
| ok = insert_queen_memory(conn, { | |
| "memory_id": f"wisdom:{wis_id}", | |
| "memory_type": "wisdom", | |
| "category": wis.get("applies_to"), | |
| "title": wis.get("truth", "")[:120] if wis.get("truth") else None, | |
| "description": wis.get("truth"), | |
| "symbol": None, | |
| "outcome": None, | |
| "outcome_value": None, | |
| "importance": wis.get("times_validated"), | |
| "confidence": wis.get("certainty"), | |
| "lesson": wis.get("truth"), | |
| "ts_ms": _to_ms(wis.get("created")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(wis), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 2: Trading Knowledge | |
| # --------------------------------------------------------------------------- | |
| def ingest_trading_knowledge(conn, repo: Path) -> _Counter: | |
| c = _Counter("trading_knowledge") | |
| path = repo / "state" / "queen" / "queen_trading_knowledge.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| concepts = data.get("concepts") or data # fallback: top-level is the map | |
| if not isinstance(concepts, dict): | |
| print(" [warn] Unexpected trading_knowledge structure") | |
| return c | |
| for slug, item in concepts.items(): | |
| if not isinstance(item, dict): | |
| continue | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"concept:{slug}", | |
| "knowledge_type": "concept", | |
| "topic": item.get("topic") or slug, | |
| "summary": item.get("summary"), | |
| "source": item.get("source"), | |
| "confidence": item.get("confidence"), | |
| "success_rate": item.get("success_rate"), | |
| "times_applied": item.get("times_applied"), | |
| "ts_ms": _to_ms(item.get("learned_at")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(item), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 3: Warfare Tactics | |
| # --------------------------------------------------------------------------- | |
| def ingest_warfare_tactics(conn, repo: Path) -> _Counter: | |
| c = _Counter("warfare_tactics") | |
| path = repo / "state" / "queen" / "queen_warfare_tactics.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| # The file may be a dict of tactics or a list; handle both. | |
| items: Dict[str, Any] = {} | |
| if isinstance(data, dict): | |
| # If wrapped in a key like "tactics", unwrap; otherwise treat top-level as map. | |
| for key in ("tactics", "strategies", "lessons"): | |
| if key in data and isinstance(data[key], (dict, list)): | |
| data = data[key] | |
| break | |
| if isinstance(data, dict): | |
| items = data | |
| elif isinstance(data, list): | |
| items = {str(i): v for i, v in enumerate(data) if isinstance(v, dict)} | |
| elif isinstance(data, list): | |
| items = {str(i): v for i, v in enumerate(data) if isinstance(v, dict)} | |
| for tactic_id, tactic in items.items(): | |
| if not isinstance(tactic, dict): | |
| continue | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"tactic:{tactic_id}", | |
| "knowledge_type": "tactic", | |
| "topic": tactic.get("name") or tactic.get("topic") or tactic.get("tactic") or tactic_id, | |
| "summary": tactic.get("summary") or tactic.get("description") or _json_safe(tactic)[:500], | |
| "source": tactic.get("source", "warfare_tactics"), | |
| "confidence": tactic.get("confidence"), | |
| "success_rate": tactic.get("success_rate") or tactic.get("win_rate"), | |
| "times_applied": tactic.get("times_applied") or tactic.get("times_used"), | |
| "ts_ms": _to_ms(tactic.get("created") or tactic.get("learned_at") or tactic.get("timestamp")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(tactic), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 4: Battle Results | |
| # --------------------------------------------------------------------------- | |
| def ingest_battle_results(conn, repo: Path) -> _Counter: | |
| c = _Counter("battle_results") | |
| path = repo / "state" / "queen" / "queen_battle_results.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| # May be a list or dict of battle results. | |
| battles: list = [] | |
| if isinstance(data, list): | |
| battles = data | |
| elif isinstance(data, dict): | |
| for key in ("results", "battles", "simulations"): | |
| if key in data and isinstance(data[key], list): | |
| battles = data[key] | |
| break | |
| if not battles: | |
| # Treat each top-level key as a battle. | |
| battles = [{"_key": k, **v} for k, v in data.items() if isinstance(v, dict)] | |
| for i, battle in enumerate(battles): | |
| if not isinstance(battle, dict): | |
| continue | |
| bid = battle.get("id") or battle.get("battle_id") or battle.get("_key") or str(i) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"battle:{bid}", | |
| "source": "battle_simulator", | |
| "insight_type": "battle_result", | |
| "symbol": battle.get("symbol"), | |
| "title": battle.get("title") or battle.get("name") or f"Battle #{bid}", | |
| "conclusion": battle.get("result") or battle.get("outcome") or battle.get("summary"), | |
| "confidence": battle.get("confidence"), | |
| "severity": battle.get("severity") or battle.get("impact"), | |
| "ts_ms": _to_ms(battle.get("timestamp") or battle.get("created") or battle.get("ts")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(battle), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 5: Consciousness Decisions | |
| # --------------------------------------------------------------------------- | |
| def ingest_consciousness_decisions(conn, repo: Path) -> _Counter: | |
| c = _Counter("consciousness_decisions") | |
| path = repo / "state" / "queen" / "queen_consciousness_decisions.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| decisions: list = [] | |
| if isinstance(data, list): | |
| decisions = data | |
| elif isinstance(data, dict): | |
| for key in ("decisions", "history"): | |
| if key in data and isinstance(data[key], list): | |
| decisions = data[key] | |
| break | |
| if not decisions: | |
| decisions = [{"_key": k, **v} for k, v in data.items() if isinstance(v, dict)] | |
| for i, dec in enumerate(decisions): | |
| if not isinstance(dec, dict): | |
| continue | |
| did = dec.get("id") or dec.get("decision_id") or dec.get("_key") or str(i) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"decision:{did}", | |
| "source": "consciousness", | |
| "insight_type": "decision", | |
| "symbol": dec.get("symbol"), | |
| "title": dec.get("title") or dec.get("action") or f"Decision #{did}", | |
| "conclusion": dec.get("consensus") or dec.get("result") or dec.get("summary"), | |
| "confidence": dec.get("confidence"), | |
| "severity": dec.get("severity"), | |
| "ts_ms": _to_ms(dec.get("timestamp") or dec.get("created") or dec.get("ts")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(dec), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 6: Thought Bus JSONL Files | |
| # --------------------------------------------------------------------------- | |
| def _ingest_jsonl(conn, filepath: Path, source_name: str, limit: int, | |
| also_insight: bool = False) -> _Counter: | |
| """Read a JSONL file line-by-line, storing as queen_thoughts (and optionally insights).""" | |
| c = _Counter(f"thoughts:{filepath.name}") | |
| if not filepath.is_file(): | |
| print(f" [skip] File not found: {filepath}") | |
| return c | |
| now = _now_ms() | |
| count = 0 | |
| with open(filepath, "r", encoding="utf-8", errors="replace") as f: | |
| for lineno, line in enumerate(f, 1): | |
| if count >= limit: | |
| print(f" [info] Reached thoughts-limit ({limit}) for {filepath.name}") | |
| break | |
| line = line.strip() | |
| if not line: | |
| continue | |
| try: | |
| obj = json.loads(line) | |
| except json.JSONDecodeError: | |
| c.errors += 1 | |
| continue | |
| if not isinstance(obj, dict): | |
| c.errors += 1 | |
| continue | |
| tid = obj.get("id") or _det_id(source_name, lineno, obj.get("ts", "")) | |
| payload = obj.get("payload") or {} | |
| if isinstance(payload, str): | |
| try: | |
| payload = json.loads(payload) | |
| except Exception: | |
| payload = {"text": payload} | |
| symbol = (payload.get("symbol") or obj.get("symbol") | |
| or obj.get("meta", {}).get("symbol") if isinstance(obj.get("meta"), dict) else None) | |
| topic = obj.get("topic") or payload.get("topic") | |
| thought_text = (payload.get("text") or payload.get("message") | |
| or payload.get("thought") or _json_safe(payload)[:1000]) | |
| confidence = payload.get("confidence") or obj.get("confidence") | |
| ok = insert_queen_thought(conn, { | |
| "thought_id": f"{source_name}:{tid}", | |
| "source": obj.get("source") or source_name, | |
| "topic": topic, | |
| "symbol": symbol, | |
| "thought_text": thought_text, | |
| "confidence": confidence, | |
| "ts_ms": _to_ms(obj.get("ts")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(obj), | |
| }) | |
| c.record(ok) | |
| count += 1 | |
| # For trade JSONL, also store as insight | |
| if also_insight: | |
| insert_queen_insight(conn, { | |
| "insight_id": f"trade_signal:{tid}", | |
| "source": source_name, | |
| "insight_type": "trade_signal", | |
| "symbol": symbol, | |
| "title": topic or "trade_signal", | |
| "conclusion": thought_text, | |
| "confidence": confidence, | |
| "severity": None, | |
| "ts_ms": _to_ms(obj.get("ts")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(obj), | |
| }) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| def ingest_thoughts(conn, repo: Path, limit: int) -> List[_Counter]: | |
| counters = [] | |
| thought_files = [ | |
| (repo / "data" / "queen_thoughts.jsonl", "queen_thoughts", False), | |
| (repo / "data" / "portfolio_thoughts.jsonl", "portfolio_thoughts", False), | |
| (repo / "data" / "queen_trades.jsonl", "queen_trades", True), | |
| ] | |
| for path, src, also_insight in thought_files: | |
| counters.append(_ingest_jsonl(conn, path, src, limit, also_insight=also_insight)) | |
| return counters | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 7: Live Queen Modules | |
| # --------------------------------------------------------------------------- | |
| def ingest_live_modules(conn, repo: Path) -> List[_Counter]: | |
| """Try to import and query each live queen module. Each is try/except guarded.""" | |
| counters = [] | |
| now = _now_ms() | |
| # 7a: QueenDeepIntelligence | |
| c = _Counter("live:deep_intelligence") | |
| try: | |
| from aureon.queen.queen_deep_intelligence import QueenDeepIntelligence | |
| engine = QueenDeepIntelligence() | |
| insights = engine.generate_insights() | |
| if insights: | |
| for ins in insights: | |
| raw = ins if isinstance(ins, dict) else (ins.__dict__ if hasattr(ins, "__dict__") else {"value": str(ins)}) | |
| iid = raw.get("id") or _det_id("deep_intel", raw.get("title", ""), raw.get("insight_type", "")) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"deep_intel:{iid}", | |
| "source": "deep_intelligence", | |
| "insight_type": raw.get("insight_type", "deep_insight"), | |
| "symbol": raw.get("symbol"), | |
| "title": raw.get("title"), | |
| "conclusion": raw.get("conclusion") or raw.get("reasoning"), | |
| "confidence": raw.get("confidence"), | |
| "severity": raw.get("severity"), | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(raw), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] QueenDeepIntelligence: {c.inserted} insights") | |
| except Exception as exc: | |
| print(f" [skip] QueenDeepIntelligence: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7b: QueenMarketAwareness | |
| c = _Counter("live:market_awareness") | |
| try: | |
| from aureon.queen.queen_market_awareness import QueenMarketAwareness | |
| awareness = QueenMarketAwareness() | |
| # Try common method names to get a snapshot | |
| snapshot = None | |
| for method in ("get_market_condition", "get_snapshot", "get_state", "assess"): | |
| fn = getattr(awareness, method, None) | |
| if callable(fn): | |
| snapshot = fn() | |
| break | |
| if snapshot is None and hasattr(awareness, "__dict__"): | |
| snapshot = awareness.__dict__ | |
| if snapshot: | |
| raw = snapshot if isinstance(snapshot, dict) else (snapshot.__dict__ if hasattr(snapshot, "__dict__") else {"value": str(snapshot)}) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"market_condition:{_det_id('market_awareness', now)}", | |
| "source": "market_awareness", | |
| "insight_type": "market_condition", | |
| "symbol": raw.get("symbol", "BTC"), | |
| "title": f"Market: {raw.get('market_state', 'unknown')}", | |
| "conclusion": _json_safe({k: raw.get(k) for k in | |
| ("btc_price", "market_state", "market_severity", "should_hold", "recovery_outlook") | |
| if k in raw}), | |
| "confidence": raw.get("confidence"), | |
| "severity": raw.get("market_severity"), | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(raw), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] QueenMarketAwareness: {c.inserted} insights") | |
| except Exception as exc: | |
| print(f" [skip] QueenMarketAwareness: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7c: QueenNeuron / QueenNeuronV2 | |
| c = _Counter("live:neuron") | |
| for mod_name in ("aureon.queen.queen_neuron_v2", "aureon.queen.queen_neuron"): | |
| try: | |
| mod = __import__(mod_name, fromlist=["_"]) | |
| # Look for a class with "Neuron" in the name | |
| cls = None | |
| for attr_name in dir(mod): | |
| obj = getattr(mod, attr_name, None) | |
| if isinstance(obj, type) and "neuron" in attr_name.lower(): | |
| cls = obj | |
| break | |
| if cls: | |
| instance = cls() | |
| state = None | |
| for method in ("get_weights", "get_state", "export_state", "state_dict"): | |
| fn = getattr(instance, method, None) | |
| if callable(fn): | |
| state = fn() | |
| break | |
| if state is None and hasattr(instance, "__dict__"): | |
| state = instance.__dict__ | |
| if state: | |
| raw = state if isinstance(state, dict) else {"state": str(state)[:2000]} | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"neural_weights:{mod_name}:{_det_id(mod_name, now)}", | |
| "knowledge_type": "neural_weights", | |
| "topic": mod_name.split(".")[-1], | |
| "summary": f"Live neural weights from {mod_name}", | |
| "source": mod_name, | |
| "confidence": None, | |
| "success_rate": None, | |
| "times_applied": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(raw), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] {mod_name}: stored weights") | |
| break # Only need one neuron version | |
| except Exception as exc: | |
| print(f" [skip] {mod_name}: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7d: QueenConsciousness | |
| c = _Counter("live:consciousness") | |
| try: | |
| from aureon.queen.queen_consciousness_model import QueenConsciousness | |
| consciousness = QueenConsciousness() | |
| summary = None | |
| for method in ("get_state_summary", "get_state", "state_summary", "summarize"): | |
| fn = getattr(consciousness, method, None) | |
| if callable(fn): | |
| summary = fn() | |
| break | |
| if summary is None and hasattr(consciousness, "__dict__"): | |
| summary = consciousness.__dict__ | |
| if summary: | |
| raw = summary if isinstance(summary, dict) else (summary.__dict__ if hasattr(summary, "__dict__") else {"value": str(summary)}) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"consciousness_state:{_det_id('consciousness', now)}", | |
| "source": "consciousness_model", | |
| "insight_type": "consciousness_state", | |
| "symbol": None, | |
| "title": f"Consciousness: mood={raw.get('mood', '?')}, regime={raw.get('reality_regime', '?')}", | |
| "conclusion": _json_safe({k: raw.get(k) for k in | |
| ("identity", "mood", "reality_regime", "dream_progress", "happiness_quotient") | |
| if k in raw}), | |
| "confidence": raw.get("happiness_quotient"), | |
| "severity": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(raw), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] QueenConsciousness: {c.inserted} insights") | |
| except Exception as exc: | |
| print(f" [skip] QueenConsciousness: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7e: OpenSourceDataEngine | |
| c = _Counter("live:open_source_data") | |
| try: | |
| from aureon.queen.queen_open_source_data_engine import OpenSourceDataEngine | |
| engine = OpenSourceDataEngine() | |
| data = None | |
| for method in ("get_sentiment", "get_market_data", "get_whale_alerts", "fetch_all", "get_data"): | |
| fn = getattr(engine, method, None) | |
| if callable(fn): | |
| data = fn() | |
| break | |
| if data: | |
| items = data if isinstance(data, list) else ([data] if isinstance(data, dict) else []) | |
| for i, item in enumerate(items): | |
| if not isinstance(item, dict): | |
| continue | |
| sid = item.get("id") or _det_id("osde", i, now) | |
| ok = insert_sentiment(conn, { | |
| "source": "open_source_data_engine", | |
| "sentiment_id": f"osde:{sid}", | |
| "sentiment_type": item.get("type") or item.get("sentiment_type") or "market", | |
| "symbol": item.get("symbol") or item.get("asset"), | |
| "value": item.get("value") or item.get("score"), | |
| "label": item.get("label") or item.get("sentiment"), | |
| "ts_ms": _to_ms(item.get("timestamp") or item.get("ts")) or now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(item), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] OpenSourceDataEngine: {c.inserted} sentiment rows") | |
| except Exception as exc: | |
| print(f" [skip] OpenSourceDataEngine: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7f: QueenLossLearning | |
| c = _Counter("live:loss_learning") | |
| try: | |
| from aureon.queen.queen_loss_learning import QueenLossLearning | |
| learner = QueenLossLearning() | |
| lessons = None | |
| for method in ("get_lessons", "get_loss_patterns", "get_knowledge", "export"): | |
| fn = getattr(learner, method, None) | |
| if callable(fn): | |
| lessons = fn() | |
| break | |
| if lessons: | |
| items = lessons if isinstance(lessons, list) else ([lessons] if isinstance(lessons, dict) else []) | |
| for i, lesson in enumerate(items): | |
| if not isinstance(lesson, dict): | |
| continue | |
| lid = lesson.get("id") or _det_id("loss_lesson", i, lesson.get("topic", "")) | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"loss_lesson:{lid}", | |
| "knowledge_type": "loss_lesson", | |
| "topic": lesson.get("topic") or lesson.get("pattern") or f"loss_lesson_{i}", | |
| "summary": lesson.get("summary") or lesson.get("lesson") or lesson.get("description"), | |
| "source": "loss_learning", | |
| "confidence": lesson.get("confidence"), | |
| "success_rate": lesson.get("success_rate"), | |
| "times_applied": lesson.get("times_applied"), | |
| "ts_ms": _to_ms(lesson.get("timestamp") or lesson.get("created")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(lesson), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] QueenLossLearning: {c.inserted} knowledge rows") | |
| except Exception as exc: | |
| print(f" [skip] QueenLossLearning: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| # 7g: QueenEternalMachine | |
| c = _Counter("live:eternal_machine") | |
| try: | |
| from aureon.queen.queen_eternal_machine import QueenEternalMachine | |
| machine = QueenEternalMachine() | |
| status = None | |
| for method in ("get_breadcrumb_status", "get_positions", "get_status", "breadcrumb_status"): | |
| fn = getattr(machine, method, None) | |
| if callable(fn): | |
| status = fn() | |
| break | |
| if status: | |
| raw = status if isinstance(status, dict) else (status.__dict__ if hasattr(status, "__dict__") else {"value": str(status)}) | |
| positions = raw.get("positions") or raw.get("breadcrumbs") or [] | |
| if isinstance(positions, dict): | |
| positions = list(positions.values()) | |
| if not positions and isinstance(raw, dict): | |
| # The whole thing might be the position data | |
| positions = [raw] | |
| for i, pos in enumerate(positions): | |
| if not isinstance(pos, dict): | |
| continue | |
| pid = pos.get("id") or _det_id("position", pos.get("symbol", ""), i) | |
| ok = insert_queen_insight(conn, { | |
| "insight_id": f"position_snapshot:{pid}:{_det_id(now, i)}", | |
| "source": "eternal_machine", | |
| "insight_type": "position_snapshot", | |
| "symbol": pos.get("symbol"), | |
| "title": f"Position: {pos.get('symbol', '?')} qty={pos.get('qty', '?')}", | |
| "conclusion": _json_safe({k: pos.get(k) for k in | |
| ("symbol", "qty", "cost", "value", "pnl") if k in pos}), | |
| "confidence": None, | |
| "severity": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(pos), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| print(f" [ok] QueenEternalMachine: {c.inserted} position snapshots") | |
| except Exception as exc: | |
| print(f" [skip] QueenEternalMachine: {exc}") | |
| c.errors += 1 | |
| counters.append(c) | |
| return counters | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 8: Neuron Weights | |
| # --------------------------------------------------------------------------- | |
| def ingest_neuron_weights(conn, repo: Path) -> _Counter: | |
| c = _Counter("neuron_weights") | |
| path = repo / "state" / "queen" / "queen_neuron_v2_weights.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| # Weights file may have multiple layers/sections or be a flat blob. | |
| if isinstance(data, dict): | |
| for layer_name, weights in data.items(): | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"neural_weights:v2:{layer_name}", | |
| "knowledge_type": "neural_weights", | |
| "topic": f"neuron_v2:{layer_name}", | |
| "summary": f"Neural weight matrix for layer '{layer_name}', shape/size: {_describe_shape(weights)}", | |
| "source": "queen_neuron_v2_weights.json", | |
| "confidence": None, | |
| "success_rate": None, | |
| "times_applied": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(weights), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| else: | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": "neural_weights:v2:full", | |
| "knowledge_type": "neural_weights", | |
| "topic": "neuron_v2:full_weights", | |
| "summary": f"Full neural weight dump, type={type(data).__name__}", | |
| "source": "queen_neuron_v2_weights.json", | |
| "confidence": None, | |
| "success_rate": None, | |
| "times_applied": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(data), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| return c | |
| def _describe_shape(obj: Any) -> str: | |
| """Describe shape of a weight matrix for the summary field.""" | |
| if isinstance(obj, list): | |
| if obj and isinstance(obj[0], list): | |
| return f"{len(obj)}x{len(obj[0])}" | |
| return f"[{len(obj)}]" | |
| if isinstance(obj, dict): | |
| return f"dict({len(obj)} keys)" | |
| return type(obj).__name__ | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 9: Capital Knowledge | |
| # --------------------------------------------------------------------------- | |
| def ingest_capital_knowledge(conn, repo: Path) -> _Counter: | |
| c = _Counter("capital_knowledge") | |
| path = repo / "state" / "queen" / "queen_capital_knowledge.json" | |
| data = _load_json(path) | |
| if data is None: | |
| return c | |
| now = _now_ms() | |
| items: Dict[str, Any] = {} | |
| if isinstance(data, dict): | |
| # May have a wrapping key | |
| for key in ("knowledge", "concepts", "capital"): | |
| if key in data and isinstance(data[key], dict): | |
| items = data[key] | |
| break | |
| if not items: | |
| items = data | |
| elif isinstance(data, list): | |
| items = {str(i): v for i, v in enumerate(data) if isinstance(v, dict)} | |
| for kid, item in items.items(): | |
| if not isinstance(item, dict): | |
| continue | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"capital_knowledge:{kid}", | |
| "knowledge_type": "capital_knowledge", | |
| "topic": item.get("topic") or item.get("name") or kid, | |
| "summary": item.get("summary") or item.get("description") or _json_safe(item)[:500], | |
| "source": item.get("source", "capital_knowledge"), | |
| "confidence": item.get("confidence"), | |
| "success_rate": item.get("success_rate"), | |
| "times_applied": item.get("times_applied"), | |
| "ts_ms": _to_ms(item.get("learned_at") or item.get("timestamp") or item.get("created")), | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(item), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| conn.commit() | |
| return c | |
| # --------------------------------------------------------------------------- | |
| # SOURCE 10: All Other Queen State Files (catch-all) | |
| # --------------------------------------------------------------------------- | |
| # Files already handled by specific sources — skip in the catch-all. | |
| _HANDLED_FILES = { | |
| "queen_consciousness_state.json", | |
| "queen_trading_knowledge.json", | |
| "queen_warfare_tactics.json", | |
| "queen_battle_results.json", | |
| "queen_consciousness_decisions.json", | |
| "queen_neuron_v2_weights.json", | |
| "queen_capital_knowledge.json", | |
| } | |
| def ingest_all_state(conn, repo: Path) -> List[_Counter]: | |
| """Glob state/queen/queen_*.json and ingest any not covered by specific sources.""" | |
| counters = [] | |
| state_dir = repo / "state" / "queen" | |
| if not state_dir.is_dir(): | |
| print(f" [skip] Directory not found: {state_dir}") | |
| return counters | |
| pattern = str(state_dir / "queen_*.json") | |
| for filepath in sorted(globmod.glob(pattern)): | |
| fpath = Path(filepath) | |
| fname = fpath.name | |
| if fname in _HANDLED_FILES: | |
| continue | |
| c = _Counter(f"state:{fname}") | |
| data = _load_json(fpath) | |
| if data is None: | |
| counters.append(c) | |
| continue | |
| now = _now_ms() | |
| # Store the entire file as a state snapshot knowledge entry. | |
| # If it is a dict with many keys, store each top-level key separately. | |
| if isinstance(data, dict) and len(data) > 1: | |
| for key, val in data.items(): | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"state_snapshot:{fname}:{key}", | |
| "knowledge_type": "state_snapshot", | |
| "topic": f"{fname}:{key}", | |
| "summary": _json_safe(val)[:500] if not isinstance(val, str) else val[:500], | |
| "source": fname, | |
| "confidence": None, | |
| "success_rate": None, | |
| "times_applied": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(val), | |
| }) | |
| c.record(ok) | |
| _batch_commit(conn, c) | |
| else: | |
| ok = insert_queen_knowledge(conn, { | |
| "knowledge_id": f"state_snapshot:{fname}", | |
| "knowledge_type": "state_snapshot", | |
| "topic": fname, | |
| "summary": _json_safe(data)[:500], | |
| "source": fname, | |
| "confidence": None, | |
| "success_rate": None, | |
| "times_applied": None, | |
| "ts_ms": now, | |
| "ingested_at_ms": now, | |
| "raw_json": _json_safe(data), | |
| }) | |
| c.record(ok) | |
| conn.commit() | |
| counters.append(c) | |
| return counters | |
| # --------------------------------------------------------------------------- | |
| # Main | |
| # --------------------------------------------------------------------------- | |
| def main() -> None: | |
| parser = argparse.ArgumentParser( | |
| description="Ingest ALL Queen knowledge into Aureon's global history SQLite database.", | |
| ) | |
| parser.add_argument("--db", default=None, help="SQLite database path override") | |
| parser.add_argument( | |
| "--sources", | |
| default="all", | |
| help="Comma-separated sources to ingest: " | |
| "state,knowledge,tactics,battles,decisions,thoughts,live,weights,capital,all_state,all " | |
| "(default: all)", | |
| ) | |
| parser.add_argument( | |
| "--thoughts-limit", | |
| type=int, | |
| default=50000, | |
| help="Max thought lines to ingest per JSONL file (default: 50000)", | |
| ) | |
| args = parser.parse_args() | |
| requested = {s.strip().lower() for s in args.sources.split(",")} | |
| run_all = "all" in requested | |
| print("=" * 72) | |
| print(" Aureon Queen Knowledge Ingestion") | |
| print("=" * 72) | |
| print(f" Repo root : {_REPO_ROOT}") | |
| print(f" Sources : {'all' if run_all else ', '.join(sorted(requested))}") | |
| print(f" Thoughts limit: {args.thoughts_limit}") | |
| print() | |
| conn = connect(args.db) | |
| print(f" Database : {conn.execute('PRAGMA database_list').fetchone()[2]}") | |
| print() | |
| all_counters: List[_Counter] = [] | |
| # 1. Consciousness state | |
| if run_all or "state" in requested: | |
| print("[1/10] Consciousness state ...") | |
| all_counters.append(ingest_consciousness_state(conn, _REPO_ROOT)) | |
| # 2. Trading knowledge | |
| if run_all or "knowledge" in requested: | |
| print("[2/10] Trading knowledge ...") | |
| all_counters.append(ingest_trading_knowledge(conn, _REPO_ROOT)) | |
| # 3. Warfare tactics | |
| if run_all or "tactics" in requested: | |
| print("[3/10] Warfare tactics ...") | |
| all_counters.append(ingest_warfare_tactics(conn, _REPO_ROOT)) | |
| # 4. Battle results | |
| if run_all or "battles" in requested: | |
| print("[4/10] Battle results ...") | |
| all_counters.append(ingest_battle_results(conn, _REPO_ROOT)) | |
| # 5. Consciousness decisions | |
| if run_all or "decisions" in requested: | |
| print("[5/10] Consciousness decisions ...") | |
| all_counters.append(ingest_consciousness_decisions(conn, _REPO_ROOT)) | |
| # 6. Thought bus JSONL | |
| if run_all or "thoughts" in requested: | |
| print("[6/10] Thought bus JSONL files ...") | |
| all_counters.extend(ingest_thoughts(conn, _REPO_ROOT, args.thoughts_limit)) | |
| # 7. Live queen modules | |
| if run_all or "live" in requested: | |
| print("[7/10] Live queen modules ...") | |
| all_counters.extend(ingest_live_modules(conn, _REPO_ROOT)) | |
| # 8. Neuron weights | |
| if run_all or "weights" in requested: | |
| print("[8/10] Neuron weights ...") | |
| all_counters.append(ingest_neuron_weights(conn, _REPO_ROOT)) | |
| # 9. Capital knowledge | |
| if run_all or "capital" in requested: | |
| print("[9/10] Capital knowledge ...") | |
| all_counters.append(ingest_capital_knowledge(conn, _REPO_ROOT)) | |
| # 10. All remaining state files | |
| if run_all or "all_state" in requested: | |
| print("[10/10] All remaining queen state files ...") | |
| all_counters.extend(ingest_all_state(conn, _REPO_ROOT)) | |
| # Final commit | |
| conn.commit() | |
| conn.close() | |
| # Summary | |
| print() | |
| print("-" * 72) | |
| print(" INGESTION SUMMARY") | |
| print("-" * 72) | |
| total_inserted = 0 | |
| total_skipped = 0 | |
| total_errors = 0 | |
| for counter in all_counters: | |
| print(counter.summary()) | |
| total_inserted += counter.inserted | |
| total_skipped += counter.skipped | |
| total_errors += counter.errors | |
| print("-" * 72) | |
| print(f" TOTAL: inserted={total_inserted}, skipped={total_skipped}, errors={total_errors}") | |
| print("=" * 72) | |
| print(" Queen knowledge ingestion complete.") | |
| print("=" * 72) | |
| if __name__ == "__main__": | |
| main() | |