import json
import time
import os
from utils import (
cargo_run,
goto_root,
mk_and_cd_tmp_dir,
write_string,
)
def ls_queries():
goto_root()
mk_and_cd_tmp_dir()
os.mkdir("base1")
os.chdir("base1")
cargo_run(["init"])
cargo_run(["config", "--set", "model", "dummy"])
cargo_run(["config", "--set", "sleep_after_llm_call", "500"])
write_string("sample.md", "Hello, World!")
cargo_run(["add", "sample.md"])
cargo_run(["build"])
kb_uid1 = cargo_run(["uid"], stdout=True).strip()
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 0
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 0
cargo_run(["query", "Hello, World?"])
kb_uid2 = cargo_run(["uid"], stdout=True).strip()
assert kb_uid1 == kb_uid2
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 1
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 1
query_contents = json.loads(cargo_run(["ls-queries", "--content-only", "--json"], stdout=True))
assert len(query_contents) == 1
query1_content = query_contents[0]
assert query1_content[0]["content"] == "Hello, World?"
assert len(query1_content) == 2
query_uid1 = json.loads(cargo_run(["ls-queries", "--uid-only", "--json"], stdout=True))[0]
cargo_run(["query", "--agent", "Hi there! You are a dummy agent"])
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 2
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 2
query_uid2 = json.loads(cargo_run(["ls-queries", "--uid-only", "--json"], stdout=True))[0]
assert query_uid1 != query_uid2
cargo_run(["query", "--continue", query_uid1, "Let's continue the conversation!"])
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 2
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 2
query1_content = json.loads(cargo_run(["ls-queries", query_uid1, "--content-only", "--json"], stdout=True))[0]
assert len(query1_content) == 4
cargo_run(["query", "--continue", query_uid1, "TODO: run this in agent mode after implementing multiturn agent mode"])
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 2
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 2
query1_content = json.loads(cargo_run(["ls-queries", query_uid1, "--content-only", "--json"], stdout=True))[0]
assert len(query1_content) == 6
cargo_run(["archive", "-o", "../with-queries.ar", "--queries"])
cargo_run(["archive", "-o", "../without-queries.ar", "--no-queries"])
os.chdir("..")
cargo_run(["extract", "with-queries.ar", "-o", "with-queries"])
cargo_run(["extract", "without-queries.ar", "-o", "without-queries"])
os.chdir("with-queries")
cargo_run(["check"])
assert cargo_run(["uid"], stdout=True).strip() == kb_uid1
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 2
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 2
query1_content = json.loads(cargo_run(["ls-queries", query_uid1, "--content-only", "--json"], stdout=True))[0]
assert len(query1_content) == 6
os.chdir("../without-queries")
cargo_run(["check"])
assert cargo_run(["uid"], stdout=True).strip() == kb_uid1
assert len(json.loads(cargo_run(["ls-queries", "--json"], stdout=True))) == 0
assert json.loads(cargo_run(["ls-queries", "--stat-only", "--json"], stdout=True))["queries"] == 0
os.chdir("../with-queries")
cargo_run(["config", "--set", "model", "dummy"])
for _ in range(10):
cargo_run(["query", "What makes ragit so special??"])
time.sleep(1)
queries = json.loads(cargo_run(["ls-queries", "--json"], stdout=True))
assert len(queries) == 12
timestamps = [q[0]["timestamp"] for q in queries]
timestamps_sorted = eval(str(timestamps)) timestamps_sorted.sort()
timestamps_sorted = timestamps_sorted[::-1]
assert timestamps == timestamps_sorted
uids = [q[0]["uid"] for q in queries]
uids2 = json.loads(cargo_run(["ls-queries", "--json", "--uid-only", "--abbrev=64"], stdout=True))
assert uids == uids2
for uid in uids:
assert len(uid) == 64
assert uid in cargo_run(["ls-queries", uid[:9], "--uid-only", "--abbrev=64"], stdout=True)