1
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Agent API Reference
2
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
::: video_processor.agent.agent_loop
4
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
5
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
::: video_processor.agent.skills.base
6
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
7
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
::: video_processor.agent.kb_context
8
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
9
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
10
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
11
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Overview
12
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
13
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The agent module implements a planning agent that synthesizes knowledge from processed video content into actionable artifacts such as project plans, PRDs, task breakdowns, and roadmaps. The agent operates on knowledge graphs loaded via `KBContext` and uses a skill-based architecture for extensibility.
14
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
15
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Key components:**
16
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
17
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **`PlanningAgent`** -- orchestrates skill selection and execution based on user requests
18
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **`AgentContext`** -- shared state passed between skills during execution
19
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **`Skill`** (ABC) -- base class for pluggable agent capabilities
20
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **`Artifact`** -- output produced by skill execution
21
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- **`KBContext`** -- loads and merges multiple knowledge graph sources
22
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
23
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
24
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
25
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## PlanningAgent
26
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
27
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
28
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.agent_loop import PlanningAgent
29
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
30
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
31
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
AI agent that synthesizes knowledge into planning artifacts. Uses an LLM to select which skills to execute for a given request, or falls back to keyword matching when no LLM is available.
32
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
33
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Constructor
34
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
35
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
36
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def __init__(self, context: AgentContext)
37
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
38
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
39
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Description |
40
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
41
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `context` | `AgentContext` | Shared context containing knowledge graph, query engine, and provider |
42
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
43
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### from_kb_paths()
44
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
45
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
46
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
@classmethod
47
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def from_kb_paths(
48
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cls,
49
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb_paths: List[Path],
50
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider_manager=None,
51
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
) -> PlanningAgent
52
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
53
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
54
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Factory method that creates an agent from one or more knowledge base file paths. Handles loading and merging knowledge graphs automatically.
55
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
56
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Parameters:**
57
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
58
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Default | Description |
59
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|---|
60
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `kb_paths` | `List[Path]` | *required* | Paths to `.db` or `.json` knowledge graph files, or directories to search |
61
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `provider_manager` | `ProviderManager` | `None` | LLM provider for agent operations |
62
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
63
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `PlanningAgent` -- configured agent with loaded knowledge base.
64
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
65
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
66
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from pathlib import Path
67
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.agent_loop import PlanningAgent
68
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.providers.manager import ProviderManager
69
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
70
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
agent = PlanningAgent.from_kb_paths(
71
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb_paths=[Path("results/knowledge_graph.db")],
72
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider_manager=ProviderManager(),
73
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
)
74
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
75
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
76
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### execute()
77
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
78
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
79
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def execute(self, request: str) -> List[Artifact]
80
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
81
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
82
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Execute a user request by selecting and running appropriate skills.
83
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
84
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Process:**
85
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
86
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
1. Build a context summary from the knowledge base statistics
87
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
2. Format available skills with their descriptions
88
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
3. Ask the LLM to select skills and parameters (or use keyword matching as fallback)
89
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
4. Execute selected skills in order, accumulating artifacts
90
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
91
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Parameters:**
92
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
93
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Description |
94
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
95
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `request` | `str` | Natural language request (e.g., "Generate a project plan") |
96
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
97
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `List[Artifact]` -- generated artifacts from skill execution.
98
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
99
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**LLM mode:** The LLM receives the knowledge base summary, available skills, and user request, then returns a JSON array of `{"skill": "name", "params": {}}` objects to execute.
100
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
101
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Keyword fallback:** Without an LLM, skills are matched by splitting the skill name into words and checking if any appear in the request text.
102
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
103
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
104
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
artifacts = agent.execute("Create a PRD and task breakdown")
105
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
for artifact in artifacts:
106
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(f"--- {artifact.name} ({artifact.artifact_type}) ---")
107
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(artifact.content[:500])
108
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
109
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
110
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### chat()
111
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
112
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
113
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def chat(self, message: str) -> str
114
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
115
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
116
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Interactive chat mode. Maintains conversation history and provides contextual responses about the loaded knowledge base.
117
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
118
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Parameters:**
119
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
120
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Description |
121
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
122
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `message` | `str` | User message |
123
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
124
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `str` -- assistant response.
125
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
126
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
The chat mode provides the LLM with:
127
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
128
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Knowledge base statistics (entity counts, relationship counts)
129
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- List of previously generated artifacts
130
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Full conversation history
131
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
- Available REPL commands (e.g., `/entities`, `/search`, `/plan`, `/export`)
132
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
133
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Requires** a configured `provider_manager`. Returns a static error message if no LLM is available.
134
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
135
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
136
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
response = agent.chat("What technologies were discussed in the meetings?")
137
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(response)
138
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
139
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
response = agent.chat("Which of those have the most dependencies?")
140
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(response)
141
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
142
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
143
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
144
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
145
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## AgentContext
146
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
147
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
148
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import AgentContext
149
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
150
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
151
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Shared state dataclass passed to all skills during execution. Accumulates artifacts and conversation history across the agent session.
152
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
153
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
154
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|---|
155
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `knowledge_graph` | `Any` | `None` | `KnowledgeGraph` instance |
156
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `query_engine` | `Any` | `None` | `GraphQueryEngine` instance for querying the KG |
157
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `provider_manager` | `Any` | `None` | `ProviderManager` instance for LLM calls |
158
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `planning_entities` | `List[Any]` | `[]` | Extracted `PlanningEntity` instances |
159
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `user_requirements` | `Dict[str, Any]` | `{}` | User-specified requirements and constraints |
160
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `conversation_history` | `List[Dict[str, str]]` | `[]` | Chat message history (`role`, `content` dicts) |
161
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `artifacts` | `List[Artifact]` | `[]` | Previously generated artifacts |
162
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `config` | `Dict[str, Any]` | `{}` | Additional configuration |
163
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
164
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
165
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import AgentContext
166
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
167
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
context = AgentContext(
168
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
knowledge_graph=kg,
169
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
query_engine=engine,
170
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider_manager=pm,
171
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
config={"output_format": "markdown"},
172
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
)
173
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
174
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
175
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
176
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
177
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Skill (ABC)
178
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
179
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
180
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import Skill
181
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
182
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
183
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Base class for agent skills. Each skill represents a discrete capability that produces an artifact from the agent context.
184
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
185
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Class attributes:**
186
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
187
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Attribute | Type | Description |
188
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
189
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `name` | `str` | Skill identifier (e.g., `"project_plan"`, `"prd"`) |
190
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `description` | `str` | Human-readable description shown to the LLM for skill selection |
191
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
192
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### execute()
193
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
194
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
195
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
@abstractmethod
196
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def execute(self, context: AgentContext, **kwargs) -> Artifact
197
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
198
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
199
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Execute this skill and return an artifact. Receives the shared agent context and any parameters selected by the LLM planner.
200
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
201
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### can_execute()
202
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
203
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
204
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def can_execute(self, context: AgentContext) -> bool
205
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
206
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
207
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Check if this skill can execute given the current context. The default implementation requires both `knowledge_graph` and `provider_manager` to be set. Override for skills with different requirements.
208
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
209
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `bool`
210
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
211
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Implementing a custom skill
212
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
213
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
214
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import Skill, Artifact, AgentContext, register_skill
215
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
216
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
class SummarySkill(Skill):
217
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
name = "summary"
218
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
description = "Generate a concise summary of the knowledge base"
219
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
220
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def execute(self, context: AgentContext, **kwargs) -> Artifact:
221
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
stats = context.query_engine.stats()
222
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
prompt = f"Summarize this knowledge base:\n{stats.to_text()}"
223
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
content = context.provider_manager.chat(
224
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
[{"role": "user", "content": prompt}]
225
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
)
226
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return Artifact(
227
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
name="Knowledge Base Summary",
228
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
content=content,
229
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
artifact_type="document",
230
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
format="markdown",
231
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
)
232
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
233
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def can_execute(self, context: AgentContext) -> bool:
234
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
return context.query_engine is not None and context.provider_manager is not None
235
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
236
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Register the skill so the agent can discover it
237
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
register_skill(SummarySkill())
238
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
239
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
240
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
241
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
242
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Artifact
243
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
244
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
245
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import Artifact
246
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
247
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
248
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Dataclass representing the output of a skill execution.
249
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
250
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Field | Type | Default | Description |
251
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|---|
252
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `name` | `str` | *required* | Human-readable artifact name |
253
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `content` | `str` | *required* | Generated content (Markdown, JSON, Mermaid, etc.) |
254
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `artifact_type` | `str` | *required* | Type: `"project_plan"`, `"prd"`, `"roadmap"`, `"task_list"`, `"document"`, `"issues"` |
255
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `format` | `str` | `"markdown"` | Content format: `"markdown"`, `"json"`, `"mermaid"` |
256
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `metadata` | `Dict[str, Any]` | `{}` | Additional metadata |
257
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
258
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
259
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
260
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## Skill Registry Functions
261
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
262
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### register_skill()
263
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
264
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
265
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def register_skill(skill: Skill) -> None
266
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
267
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
268
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Register a skill instance in the global registry. Skills must be registered before the agent can discover and execute them.
269
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
270
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### get_skill()
271
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
272
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
273
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def get_skill(name: str) -> Optional[Skill]
274
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
275
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
276
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Look up a registered skill by name.
277
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
278
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `Optional[Skill]` -- the skill instance, or `None` if not found.
279
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
280
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### list_skills()
281
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
282
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
283
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def list_skills() -> List[Skill]
284
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
285
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
286
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Return all registered skill instances.
287
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
288
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
---
289
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
290
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
## KBContext
291
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
292
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
293
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.kb_context import KBContext
294
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
295
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
296
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Loads and merges multiple knowledge graph sources into a unified context for agent consumption. Supports both FalkorDB (`.db`) and JSON (`.json`) formats, and can auto-discover graphs in a directory tree.
297
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
298
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Constructor
299
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
300
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
301
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def __init__(self)
302
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
303
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
304
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Creates an empty context. Use `add_source()` to add knowledge graph paths, then `load()` to initialize.
305
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
306
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### add_source()
307
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
308
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
309
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def add_source(self, path) -> None
310
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
311
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
312
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Add a knowledge graph source.
313
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
314
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Parameters:**
315
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
316
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Description |
317
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
318
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `path` | `str \| Path` | Path to a `.db` file, `.json` file, or directory to search for knowledge graphs |
319
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
320
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
If `path` is a directory, it is searched recursively for knowledge graph files using `find_knowledge_graphs()`.
321
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
322
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Raises:** `FileNotFoundError` if the path does not exist.
323
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
324
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### load()
325
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
326
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
327
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def load(self, provider_manager=None) -> KBContext
328
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
329
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
330
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Load and merge all added sources into a single knowledge graph and query engine.
331
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
332
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Parameters:**
333
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
334
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Parameter | Type | Default | Description |
335
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|---|
336
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `provider_manager` | `ProviderManager` | `None` | LLM provider for the knowledge graph and query engine |
337
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
338
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `KBContext` -- self, for method chaining.
339
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
340
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Properties
341
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
342
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| Property | Type | Description |
343
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
|---|---|---|
344
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `knowledge_graph` | `KnowledgeGraph` | The merged knowledge graph (raises `RuntimeError` if not loaded) |
345
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `query_engine` | `GraphQueryEngine` | Query engine for the merged graph (raises `RuntimeError` if not loaded) |
346
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
| `sources` | `List[Path]` | List of resolved source paths |
347
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
348
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### summary()
349
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
350
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
351
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def summary(self) -> str
352
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
353
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
354
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Generate a brief text summary of the loaded knowledge base, including entity counts by type and relationship counts.
355
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
356
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `str` -- multi-line summary text.
357
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
358
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### auto_discover()
359
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
360
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
361
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
@classmethod
362
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
def auto_discover(
363
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
cls,
364
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
start_dir: Optional[Path] = None,
365
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider_manager=None,
366
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
) -> KBContext
367
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
368
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
369
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
Factory method that creates a `KBContext` by auto-discovering knowledge graphs near `start_dir` (defaults to current directory).
370
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
371
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
**Returns:** `KBContext` -- loaded context (may have zero sources if none found).
372
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
373
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
### Usage examples
374
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
375
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```python
376
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from pathlib import Path
377
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.kb_context import KBContext
378
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
379
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Manual source management
380
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb = KBContext()
381
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb.add_source(Path("project_a/knowledge_graph.db"))
382
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb.add_source(Path("project_b/results/")) # searches directory
383
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb.load(provider_manager=pm)
384
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
385
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
print(kb.summary())
386
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Knowledge base: 3 source(s)
387
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Entities: 142
388
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Relationships: 89
389
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Entity types:
390
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# technology: 45
391
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# person: 23
392
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# concept: 74
393
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
394
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Auto-discover from current directory
395
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
kb = KBContext.auto_discover()
396
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
397
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
# Use with the agent
398
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.agent_loop import PlanningAgent
399
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
from video_processor.agent.skills.base import AgentContext
400
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
401
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
context = AgentContext(
402
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
knowledge_graph=kb.knowledge_graph,
403
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
query_engine=kb.query_engine,
404
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
provider_manager=pm,
405
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
)
406
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
agent = PlanningAgent(context)
407
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!
```
408
{ copied = false; pop = false }, 1000)" :class="copied && 'copied'">
Copy link Copied!