88
99from omen .analysis .actor .insight import generate_persona_insight
1010from omen .analysis .actor .query import build_events_snapshot
11- from omen .ingest .synthesizer .services .actor import generate_actor_and_events_from_document
12- from omen .ingest .synthesizer .services .strategy import generate_strategy_ontology_from_document
11+ from omen .ingest .synthesizer .services .actor_pipeline import ensure_actor_artifacts
1312from omen .ingest .synthesizer .prompts .registry import ensure_analyze_prompt_available
14- from omen .ingest .synthesizer .assembler import attach_actor_ref , attach_timeline_events
15- from omen .scenario .case_replay_loader import save_strategy_ontology
1613from omen .scenario .ontology_validator import (
1714 validate_actor_ontology_payload ,
1815 validate_actor_strategy_link_payload ,
2421 ensure_actor_output_dir ,
2522)
2623from omen .ui .case_catalog import case_display_title , normalize_case_id , suggest_known_outcome
27- from omen .cli .situation import (
28- handle_situation_analyze_command ,
29- register_situation_analyze_commands ,
30- )
3124
3225
3326ACTOR_DEFAULT_OUTPUT_ROOT = "output/actors"
@@ -57,12 +50,10 @@ def _add_actor_common_args(parser: Any) -> None:
5750 )
5851
5952
60- def register_analyze_commands (subparsers : Any ) -> None :
53+ def register_analyze_commands (subparsers : Any ) -> Any :
6154 analyze = subparsers .add_parser ("analyze" , help = "top-level analysis commands" )
6255 analyze_sub = analyze .add_subparsers (dest = "analyze_object" , required = True )
6356
64- register_situation_analyze_commands (analyze_sub )
65-
6657 actor = analyze_sub .add_parser ("actor" , help = "strategic actor analysis flow" )
6758 _add_actor_common_args (actor )
6859
@@ -84,6 +75,7 @@ def register_analyze_commands(subparsers: Any) -> None:
8475 founder .add_argument ("--date" , required = False )
8576 founder .add_argument ("--config" , required = False , default = "config/llm.toml" )
8677 founder .add_argument ("--output-dir" , required = False , default = "output/founder" )
78+ return analyze_sub
8779
8880
8981def register_validate_commands (subparsers : Any ) -> None :
@@ -100,21 +92,6 @@ def register_validate_commands(subparsers: Any) -> None:
10092 actor .add_argument ("--output-dir" , required = False , default = ACTOR_DEFAULT_OUTPUT_ROOT )
10193
10294
103- def _resolve_doc_path (doc : str ) -> Path :
104- raw = str (doc ).strip ()
105- if "/" in raw :
106- candidate = Path (raw )
107- if not candidate .suffix :
108- candidate = candidate .with_suffix (".md" )
109- return candidate
110-
111- stem = raw [:- 3 ] if raw .endswith (".md" ) else raw
112- actor_candidate = Path ("cases/actors" ) / f"{ stem } .md"
113- if actor_candidate .exists ():
114- return actor_candidate
115- return Path ("cases" ) / f"{ stem } .md"
116-
117-
11895def _load_analysis_artifacts (case_id : str , output_dir : str ) -> tuple [Path , dict [str , Any ] | None , dict [str , Any ]]:
11996 case_dir = ensure_actor_output_dir (case_id , output_root = output_dir )
12097 strategy_path = case_dir / STRATEGY_ONTOLOGY_FILENAME
@@ -130,65 +107,6 @@ def _load_analysis_artifacts(case_id: str, output_dir: str) -> tuple[Path, dict[
130107 return case_dir , strategy_payload , actor_payload
131108
132109
133- def _ensure_actor_artifacts (args : Any ) -> tuple [str , Path ]:
134- case_id = normalize_case_id (args .doc )
135- doc_path = _resolve_doc_path (args .doc )
136- if not doc_path .exists ():
137- raise FileNotFoundError (f"document not found: { doc_path } " )
138-
139- case_dir = ensure_actor_output_dir (case_id , output_root = args .output_dir )
140- strategy_path = case_dir / STRATEGY_ONTOLOGY_FILENAME
141- actor_path = case_dir / ACTOR_ONTOLOGY_FILENAME
142-
143- if strategy_path .exists () and actor_path .exists ():
144- return case_id , case_dir
145-
146- title = args .title or case_display_title (case_id )
147- known_outcome = args .known_outcome or suggest_known_outcome (case_id )
148-
149- generation = generate_strategy_ontology_from_document (
150- document_path = str (doc_path ),
151- case_id = case_id ,
152- title = title ,
153- strategy = None ,
154- known_outcome = known_outcome ,
155- config_path = args .config ,
156- )
157- known_outcome_effective = generation .inferred_known_outcome or known_outcome
158-
159- actor_payload , timeline_events = generate_actor_and_events_from_document (
160- document_path = str (doc_path ),
161- case_id = case_id ,
162- title = title ,
163- known_outcome = known_outcome_effective ,
164- config_path = args .config ,
165- )
166-
167- strategy_payload = attach_timeline_events (generation .strategy_ontology , timeline_events )
168- strategy_payload = attach_actor_ref (
169- strategy_payload ,
170- actor_payload ,
171- actor_filename = actor_path .name ,
172- )
173-
174- save_strategy_ontology (strategy_payload , strategy_path )
175- actor_path .write_text (json .dumps (actor_payload , ensure_ascii = False , indent = 2 ), encoding = "utf-8" )
176-
177- report = {
178- "case_id" : case_id ,
179- "strategy_ontology_path" : str (strategy_path ),
180- "actor_ontology_path" : str (actor_path ),
181- "validation_passed" : generation .validation_passed ,
182- "validation_issues" : generation .validation_issues ,
183- "reused_existing" : False ,
184- }
185- (case_dir / "generation.json" ).write_text (
186- json .dumps (report , ensure_ascii = False , indent = 2 ),
187- encoding = "utf-8" ,
188- )
189- return case_id , case_dir
190-
191-
192110def _run_status (
193111 case_dir : Path ,
194112 strategy_payload : dict [str , Any ] | None ,
@@ -231,9 +149,6 @@ def _run_persona(
231149
232150
233151def handle_analyze_command (args : Any ) -> int :
234- if args .analyze_object == "situation" :
235- return handle_situation_analyze_command (args )
236-
237152 if args .analyze_object != "actor" :
238153 print (f"Analyze object `{ args .analyze_object } ` is not supported" )
239154 return 3
@@ -245,7 +160,13 @@ def handle_analyze_command(args: Any) -> int:
245160 return 2
246161
247162 try :
248- case_id , _ = _ensure_actor_artifacts (args )
163+ case_id , _ = ensure_actor_artifacts (
164+ doc = str (args .doc ),
165+ title = str (args .title ) if args .title else None ,
166+ known_outcome = str (args .known_outcome ) if args .known_outcome else None ,
167+ config_path = str (args .config ),
168+ output_dir = str (args .output_dir ),
169+ )
249170 case_dir , strategy_payload , actor_payload = _load_analysis_artifacts (case_id , args .output_dir )
250171 except Exception as exc :
251172 print (f"Analyze actor setup failed: { exc } " )
0 commit comments