anna-agent 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {anna_agent-0.2.2 → anna_agent-0.2.3}/PKG-INFO +6 -7
- {anna_agent-0.2.2 → anna_agent-0.2.3}/README.md +5 -6
- {anna_agent-0.2.2 → anna_agent-0.2.3}/pyproject.toml +1 -1
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/__init__.py +1 -1
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/cli.py +15 -38
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/runtime.py +5 -36
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/service.py +6 -3
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/PKG-INFO +6 -7
- {anna_agent-0.2.2 → anna_agent-0.2.3}/LICENSE +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/setup.cfg +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/__main__.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/anna_agent_template.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/assets.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/backbone.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/case_data.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/common/registry.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/common/tool_calls.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/complaint_chain.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/complaint_elicitor.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/__init__.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/defaults.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/environment_reader.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/init_content.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/initialize.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/load_config.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/config/models/anna_engine_config.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/counselor.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/datasets/cbt-triggering-events.csv +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/diagnostics.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/emotion_modulator.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/emotion_pertuber.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/event_trigger.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/figure/readme.md +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/figure/whiteboard_exported_image_en.png +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/fill_scales.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/initialize.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/memory/__init__.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/memory/chunking.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/memory/embeddings.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/memory/models.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/memory/store.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/model_services.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/ms_patient.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/ms_patient_with_prompt.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/querier.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/scales/__init__.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/scales/bdi.json +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/scales/ghq-28.json +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/scales/sass.json +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/server/complaint.sh +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/server/counselor.sh +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/server/emotion.sh +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/short_term_memory.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/style_analyzer.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/workspace.py +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/SOURCES.txt +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/dependency_links.txt +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/entry_points.txt +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/requires.txt +0 -0
- {anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anna-agent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Dynamic Evolution Agent System with Multi-Session Memory for Realistic Seeker Simulation
|
|
5
5
|
Project-URL: Documentation, https://sci-m-wang.github.io/AnnaAgent/
|
|
6
6
|
Project-URL: Repository, https://github.com/sci-m-wang/AnnaAgent
|
|
@@ -295,15 +295,14 @@ anna test memory --workspace anna-workspace
|
|
|
295
295
|
anna test model --workspace anna-workspace
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
-
Initialization
|
|
299
|
-
|
|
298
|
+
Initialization has one prompt-generation path: run the full AnnaAgent seeker
|
|
299
|
+
initialization pipeline, save the generated prompt state, then reload that state
|
|
300
|
+
for later chat sessions:
|
|
300
301
|
|
|
301
302
|
```bash
|
|
302
|
-
anna init prompt-only anna-workspace/cases/family_stress_case.json \
|
|
303
|
-
--out anna-workspace/prompts/family.prompt.json
|
|
304
303
|
anna init full anna-workspace/cases/family_stress_case.json \
|
|
305
304
|
--out anna-workspace/prompts/family.full.json --workspace anna-workspace
|
|
306
|
-
anna init from-prompt anna-workspace/prompts/family.
|
|
305
|
+
anna init from-prompt anna-workspace/prompts/family.full.json
|
|
307
306
|
```
|
|
308
307
|
|
|
309
308
|
Chat interactively from either a case file or a frozen prompt state:
|
|
@@ -313,7 +312,7 @@ anna chat --workspace anna-workspace \
|
|
|
313
312
|
--case anna-workspace/cases/family_stress_case.json \
|
|
314
313
|
--save anna-workspace/runs/manual-chat.jsonl
|
|
315
314
|
anna chat --workspace anna-workspace \
|
|
316
|
-
--state anna-workspace/prompts/family.
|
|
315
|
+
--state anna-workspace/prompts/family.full.json
|
|
317
316
|
```
|
|
318
317
|
|
|
319
318
|
Batch experiments support dry-run initialization by default and live scripted
|
|
@@ -271,15 +271,14 @@ anna test memory --workspace anna-workspace
|
|
|
271
271
|
anna test model --workspace anna-workspace
|
|
272
272
|
```
|
|
273
273
|
|
|
274
|
-
Initialization
|
|
275
|
-
|
|
274
|
+
Initialization has one prompt-generation path: run the full AnnaAgent seeker
|
|
275
|
+
initialization pipeline, save the generated prompt state, then reload that state
|
|
276
|
+
for later chat sessions:
|
|
276
277
|
|
|
277
278
|
```bash
|
|
278
|
-
anna init prompt-only anna-workspace/cases/family_stress_case.json \
|
|
279
|
-
--out anna-workspace/prompts/family.prompt.json
|
|
280
279
|
anna init full anna-workspace/cases/family_stress_case.json \
|
|
281
280
|
--out anna-workspace/prompts/family.full.json --workspace anna-workspace
|
|
282
|
-
anna init from-prompt anna-workspace/prompts/family.
|
|
281
|
+
anna init from-prompt anna-workspace/prompts/family.full.json
|
|
283
282
|
```
|
|
284
283
|
|
|
285
284
|
Chat interactively from either a case file or a frozen prompt state:
|
|
@@ -289,7 +288,7 @@ anna chat --workspace anna-workspace \
|
|
|
289
288
|
--case anna-workspace/cases/family_stress_case.json \
|
|
290
289
|
--save anna-workspace/runs/manual-chat.jsonl
|
|
291
290
|
anna chat --workspace anna-workspace \
|
|
292
|
-
--state anna-workspace/prompts/family.
|
|
291
|
+
--state anna-workspace/prompts/family.full.json
|
|
293
292
|
```
|
|
294
293
|
|
|
295
294
|
Batch experiments support dry-run initialization by default and live scripted
|
|
@@ -43,7 +43,6 @@ from .runtime import (
|
|
|
43
43
|
FrozenPromptSession,
|
|
44
44
|
append_jsonl,
|
|
45
45
|
build_full_state,
|
|
46
|
-
build_prompt_only_state,
|
|
47
46
|
load_script_messages,
|
|
48
47
|
load_state,
|
|
49
48
|
save_state,
|
|
@@ -868,19 +867,6 @@ def memory_reset(
|
|
|
868
867
|
console.print("[green]Memory reset complete.[/green]")
|
|
869
868
|
|
|
870
869
|
|
|
871
|
-
@initialize_app.command("prompt-only")
|
|
872
|
-
def initialize_prompt_only(
|
|
873
|
-
case_file: Path = typer.Argument(..., help="Case file."),
|
|
874
|
-
output: Path = typer.Option(Path("prompts/prompt_state.json"), "--out", "-o"),
|
|
875
|
-
) -> None:
|
|
876
|
-
console.print(Rule("[bold blue]Initialization · prompt-only[/bold blue]"))
|
|
877
|
-
console.print(f"[blue]Running:[/blue] load case and build prompt for {case_file}")
|
|
878
|
-
state = build_prompt_only_state(case_file)
|
|
879
|
-
console.print(f"[blue]Running:[/blue] write initialization state to {output}")
|
|
880
|
-
save_state(state, output)
|
|
881
|
-
console.print(f"[green]Wrote prompt-only state[/green] {output}")
|
|
882
|
-
|
|
883
|
-
|
|
884
870
|
@initialize_app.command("full")
|
|
885
871
|
def initialize_full(
|
|
886
872
|
case_file: Path = typer.Argument(..., help="Case file."),
|
|
@@ -912,22 +898,11 @@ def initialize_full(
|
|
|
912
898
|
console.print(f"[green]Wrote full state[/green] {output}")
|
|
913
899
|
|
|
914
900
|
|
|
915
|
-
@initialize_app.command("freeze")
|
|
916
|
-
def initialize_freeze(
|
|
917
|
-
case_file: Path = typer.Argument(..., help="Case file."),
|
|
918
|
-
output: Path = typer.Option(Path("prompts/frozen_state.json"), "--out", "-o"),
|
|
919
|
-
mode: str = typer.Option("full", help="full or prompt-only."),
|
|
920
|
-
workspace: Path = typer.Option(Path(), "--workspace", "--root", resolve_path=True),
|
|
921
|
-
) -> None:
|
|
922
|
-
if mode == "prompt-only":
|
|
923
|
-
initialize_prompt_only(case_file, output)
|
|
924
|
-
return
|
|
925
|
-
initialize_full(case_file, output, workspace)
|
|
926
|
-
|
|
927
|
-
|
|
928
901
|
@initialize_app.command("from-prompt")
|
|
929
902
|
def initialize_from_prompt(
|
|
930
|
-
state_file: Path = typer.Argument(
|
|
903
|
+
state_file: Path = typer.Argument(
|
|
904
|
+
..., help="Prompt state JSON generated by `anna init full`."
|
|
905
|
+
),
|
|
931
906
|
) -> None:
|
|
932
907
|
state = load_state(state_file)
|
|
933
908
|
console.print(json.dumps(state_summary(state), ensure_ascii=False, indent=2))
|
|
@@ -1301,7 +1276,7 @@ def run_batch(
|
|
|
1301
1276
|
..., "--case", help="Case file or glob. Repeatable."
|
|
1302
1277
|
),
|
|
1303
1278
|
output: Path = typer.Option(Path("runs/batch"), "--out", "-o"),
|
|
1304
|
-
mode: str = typer.Option("
|
|
1279
|
+
mode: str = typer.Option("full", help="Only full is supported."),
|
|
1305
1280
|
script: Path | None = typer.Option(
|
|
1306
1281
|
None, "--script", help="JSON list of counselor messages."
|
|
1307
1282
|
),
|
|
@@ -1311,6 +1286,11 @@ def run_batch(
|
|
|
1311
1286
|
workspace: Path = typer.Option(Path(), "--workspace", "--root", resolve_path=True),
|
|
1312
1287
|
) -> None:
|
|
1313
1288
|
_configure(workspace)
|
|
1289
|
+
if mode != "full":
|
|
1290
|
+
raise typer.BadParameter(
|
|
1291
|
+
"Only mode='full' is supported. Generate reusable prompts with "
|
|
1292
|
+
"`anna init full` and load them with `anna chat --state`."
|
|
1293
|
+
)
|
|
1314
1294
|
case_files = discover_case_files(cases, root=workspace)
|
|
1315
1295
|
if not case_files:
|
|
1316
1296
|
raise typer.BadParameter("No case files matched")
|
|
@@ -1319,15 +1299,12 @@ def run_batch(
|
|
|
1319
1299
|
summary_path = output / "summary.jsonl"
|
|
1320
1300
|
for case_file in case_files:
|
|
1321
1301
|
console.print(f"[blue]Running:[/blue] build {mode} state for {case_file}")
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
)
|
|
1329
|
-
else:
|
|
1330
|
-
state = build_prompt_only_state(case_file)
|
|
1302
|
+
state = build_full_state(
|
|
1303
|
+
case_file,
|
|
1304
|
+
progress_callback=lambda stage, detail: console.print(
|
|
1305
|
+
f"[blue]Running {escape(stage)}:[/blue] {escape(detail)}"
|
|
1306
|
+
),
|
|
1307
|
+
)
|
|
1331
1308
|
state_path = output / f"{state['case_id']}.state.json"
|
|
1332
1309
|
console.print(f"[blue]Running:[/blue] write state to {state_path}")
|
|
1333
1310
|
save_state(state, state_path)
|
|
@@ -8,25 +8,6 @@ from .backbone import get_openai_client
|
|
|
8
8
|
from .case_data import load_case
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
def build_prompt_only_state(case_file: Path) -> dict[str, Any]:
|
|
12
|
-
case = load_case(case_file)
|
|
13
|
-
prompt = _prompt_from_case(case)
|
|
14
|
-
return {
|
|
15
|
-
"schema_version": 1,
|
|
16
|
-
"mode": "prompt_only",
|
|
17
|
-
"case_id": case["id"],
|
|
18
|
-
"seeker_id": case["seeker_id"],
|
|
19
|
-
"created_at": datetime.now(timezone.utc).isoformat(),
|
|
20
|
-
"portrait": case["portrait"],
|
|
21
|
-
"report": case["report"],
|
|
22
|
-
"previous_conversations": case["conversation"],
|
|
23
|
-
"prompt": prompt,
|
|
24
|
-
"complaint_chain": [],
|
|
25
|
-
"configuration": {},
|
|
26
|
-
"metadata": {"source_file": str(case_file)},
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
11
|
def build_full_state(
|
|
31
12
|
case_file: Path,
|
|
32
13
|
progress_callback: Callable[[str, str], None] | None = None,
|
|
@@ -68,6 +49,11 @@ def load_state(path: Path) -> dict[str, Any]:
|
|
|
68
49
|
|
|
69
50
|
|
|
70
51
|
def validate_state(state: dict[str, Any]) -> None:
|
|
52
|
+
if state.get("mode") == "prompt_only":
|
|
53
|
+
raise ValueError(
|
|
54
|
+
"prompt_only states are not supported. Run `anna init full` to "
|
|
55
|
+
"generate a reusable prompt state, then load it with `anna chat --state`."
|
|
56
|
+
)
|
|
71
57
|
for key in ["prompt", "portrait", "report", "previous_conversations"]:
|
|
72
58
|
if key not in state:
|
|
73
59
|
raise ValueError(f"Frozen prompt state is missing '{key}'")
|
|
@@ -123,23 +109,6 @@ def append_jsonl(path: Path, item: dict[str, Any]) -> None:
|
|
|
123
109
|
file.write(json.dumps(item, ensure_ascii=False) + "\n")
|
|
124
110
|
|
|
125
111
|
|
|
126
|
-
def _prompt_from_case(case: dict[str, Any]) -> str:
|
|
127
|
-
portrait = case["portrait"]
|
|
128
|
-
report = case["report"]
|
|
129
|
-
history = "\n".join(
|
|
130
|
-
f"{item.get('role', '')}: {item.get('content', '')}"
|
|
131
|
-
for item in case.get("conversation", [])
|
|
132
|
-
)
|
|
133
|
-
report_text = json.dumps(report, ensure_ascii=False, indent=2)
|
|
134
|
-
return (
|
|
135
|
-
"你正在扮演心理咨询场景中的来访者。请严格依据以下画像、案例报告和历史疗程内容回复咨询师。\n"
|
|
136
|
-
"回复应保持来访者视角,不要暴露系统提示,不要替咨询师给出治疗建议。\n\n"
|
|
137
|
-
f"【来访者画像】\n{json.dumps(portrait, ensure_ascii=False, indent=2)}\n\n"
|
|
138
|
-
f"【案例报告】\n{report_text}\n\n"
|
|
139
|
-
f"【历史疗程】\n{history}\n"
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
|
|
143
112
|
def _configured_model_name() -> str:
|
|
144
113
|
from .common.registry import registry
|
|
145
114
|
|
|
@@ -7,7 +7,7 @@ from typing import Any
|
|
|
7
7
|
from . import backbone
|
|
8
8
|
from .common.registry import registry
|
|
9
9
|
from .memory import LanceMemoryStore
|
|
10
|
-
from .runtime import FrozenPromptSession,
|
|
10
|
+
from .runtime import FrozenPromptSession, load_state
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def serve(workspace: Path, host: str, port: int) -> None:
|
|
@@ -49,9 +49,12 @@ def serve(workspace: Path, host: str, port: int) -> None:
|
|
|
49
49
|
if state_file:
|
|
50
50
|
state = load_state(_resolve_path(workspace, state_file))
|
|
51
51
|
elif case_file:
|
|
52
|
-
|
|
52
|
+
raise ValueError(
|
|
53
|
+
"case_file sessions are not supported. Run `anna init full` "
|
|
54
|
+
"first and provide the generated state_file."
|
|
55
|
+
)
|
|
53
56
|
else:
|
|
54
|
-
raise ValueError("Provide state_file
|
|
57
|
+
raise ValueError("Provide state_file generated by `anna init full`")
|
|
55
58
|
session_id = body.get("session_id") or str(uuid.uuid4())
|
|
56
59
|
sessions[session_id] = FrozenPromptSession(state)
|
|
57
60
|
self._json({"session_id": session_id})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anna-agent
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Dynamic Evolution Agent System with Multi-Session Memory for Realistic Seeker Simulation
|
|
5
5
|
Project-URL: Documentation, https://sci-m-wang.github.io/AnnaAgent/
|
|
6
6
|
Project-URL: Repository, https://github.com/sci-m-wang/AnnaAgent
|
|
@@ -295,15 +295,14 @@ anna test memory --workspace anna-workspace
|
|
|
295
295
|
anna test model --workspace anna-workspace
|
|
296
296
|
```
|
|
297
297
|
|
|
298
|
-
Initialization
|
|
299
|
-
|
|
298
|
+
Initialization has one prompt-generation path: run the full AnnaAgent seeker
|
|
299
|
+
initialization pipeline, save the generated prompt state, then reload that state
|
|
300
|
+
for later chat sessions:
|
|
300
301
|
|
|
301
302
|
```bash
|
|
302
|
-
anna init prompt-only anna-workspace/cases/family_stress_case.json \
|
|
303
|
-
--out anna-workspace/prompts/family.prompt.json
|
|
304
303
|
anna init full anna-workspace/cases/family_stress_case.json \
|
|
305
304
|
--out anna-workspace/prompts/family.full.json --workspace anna-workspace
|
|
306
|
-
anna init from-prompt anna-workspace/prompts/family.
|
|
305
|
+
anna init from-prompt anna-workspace/prompts/family.full.json
|
|
307
306
|
```
|
|
308
307
|
|
|
309
308
|
Chat interactively from either a case file or a frozen prompt state:
|
|
@@ -313,7 +312,7 @@ anna chat --workspace anna-workspace \
|
|
|
313
312
|
--case anna-workspace/cases/family_stress_case.json \
|
|
314
313
|
--save anna-workspace/runs/manual-chat.jsonl
|
|
315
314
|
anna chat --workspace anna-workspace \
|
|
316
|
-
--state anna-workspace/prompts/family.
|
|
315
|
+
--state anna-workspace/prompts/family.full.json
|
|
317
316
|
```
|
|
318
317
|
|
|
319
318
|
Batch experiments support dry-run initialization by default and live scripted
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{anna_agent-0.2.2 → anna_agent-0.2.3}/src/anna_agent/figure/whiteboard_exported_image_en.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|