7d7fe6df42
Task link MCP tools + anti-loop agent prompts
...
Tools: create_task_link, list_task_links, delete_task_link (23 total)
TrackerClient.request() made public for generic API calls
Agent prompts: anti-loop rules for agent-to-agent communication
2026-02-27 23:32:32 +01:00
007beaad92
Fix infinite loop: agents ignore messages from other agents
...
Unless explicitly @mentioned, agent skips messages where author_type=agent.
Prevents two agents replying to each other forever.
2026-02-27 23:07:31 +01:00
a3365848af
Hot config update + systemd template
...
- Router handles config.updated WS event (model, provider, prompt)
- picogent@.service template: systemctl start picogent@coder
2026-02-27 16:32:32 +01:00
6871fdb443
Config split: agent.json (connection) + config.json (LLM)
...
- loadAgentConfig() reads both files with priority: env > config.json > agent.json
- Remote config merge from auth.ok (model, provider, prompt)
- Local config.json overrides remote values
- Transport default changed to 'ws'
2026-02-27 16:30:37 +01:00
1c7fdf8d77
Session compaction + project_id from WS events
...
Memory:
- compactSession(): LLM summarization via Haiku (cheap)
- needsCompaction(): checks if session file > 50K chars
- runCompaction(): summarize → append recent → truncate session
Router:
- Uses project_id from WS event data (injected by Tracker)
- Falls back to chat_id→project mapping
- Background compaction check after each message (non-blocking)
2026-02-27 14:21:43 +01:00
b2ef840c8e
Phase 2: Agent memory — bootstrap context + memory persistence
...
New memory.ts module:
- loadBootstrapContext(): AGENT.md + agent.md + per-project context.md + recent.md
- appendRecent(): rolling window (20 entries) of agent activity
- summarizeToolLog(): extracts tool names from log
Router:
- Resolves projectId from chat_id via auth.ok mappings
- Passes projectId to agent for project-specific context loading
- Flushes memory after each message (appends to recent.md)
Agent:
- Accepts projectId option, passes to bootstrap loader
- Bootstrap now loads project-specific memory when available
2026-02-27 14:11:48 +01:00
4c7a41494a
Collect and send tool_log with final message
...
Router collects tool calls (name + truncated result) during agent run.
Sends tool_log array with final chat.send via WS.
2026-02-27 11:55:19 +01:00
1322a0b480
UUID everywhere: MCP tools use project_id instead of project_slug
...
All tools (tasks, files, projects) now accept project_id (UUID).
TrackerClient methods renamed accordingly.
2026-02-27 09:37:21 +01:00
fc86592a73
Refine: system messages pass only if agent @mentioned (not blanket ignore)
2026-02-27 08:00:00 +01:00
f8d9a6a41d
Fix: ignore system messages and own messages in router
...
System messages (task lifecycle) were being forwarded to agent as
new prompts, causing duplicate task creation. Agent also received
its own chat.send broadcasts back and processed them.
2026-02-27 07:31:14 +01:00
6dcae9a320
Phase 1: streaming via WS + thinking support
...
- Router streams text deltas via WS (agent.stream.delta)
- Router streams tool calls (agent.stream.tool)
- Auto-reply via WS chat.send (not REST)
- Thinking blocks collected and sent with final message
- WsClientTransport: sendStreamEvent + sendChatMessage with thinking
- Router receives WS transport reference via setWsTransport()
2026-02-27 06:56:44 +01:00
fe613a4bf2
feat: auto-reply — send agent text response if no send_message tool used
2026-02-25 13:31:32 +01:00
ccdf1f21de
fix: remove author_slug from sendMessage, clean client
2026-02-25 11:10:49 +01:00
e4e604b049
feat: project files MCP tools — list, get, download, upload, update description, delete
2026-02-25 10:40:40 +01:00
5e60e34c3f
refactor: обновление типов под UUID member refs
...
- tasks.ts: assignee_slug -> assignee_id в параметрах
- Обновлены описания и фильтры для использования UUID идентификаторов
- TrackerClient методы остались без изменений (пока)
2026-02-25 00:13:41 +01:00
195c2eb691
refactor: убрана защита от loop (Tracker фильтрует own messages)
2026-02-24 23:41:34 +01:00
c151a69de5
refactor: убрана фильтрация system messages (перенесена в Tracker)
2026-02-24 23:40:17 +01:00
e76e84ffc0
refactor: убрана ручная project.subscribe (Tracker auto-subscribes)
2026-02-24 23:24:55 +01:00
db90b64f54
feat: bootstrap context из AGENT.md и memory/ файлов
...
- loadBootstrapContext() загружает AGENT.md, memory/notes.md, memory/projects/*.md
- Лимит 15K символов, автотрункейт
- agentHome передаётся из router в agent options
- System prompt из agent.json сохранён как fallback
2026-02-24 22:04:29 +01:00
dea2bcaef6
feat: agent sandboxed to agentHome by default (allowedPaths)
2026-02-24 13:37:14 +01:00
4b3e4d6195
refactor: remove slug params from API calls — Tracker resolves actor from auth
2026-02-24 13:32:31 +01:00
fa9f280bdd
feat: pass agent slug as actor in update_task
2026-02-24 13:26:41 +01:00
4b592f367a
fix: agent receives system messages only when mentioned (@slug)
2026-02-24 12:30:31 +01:00
9d757709b2
fix: ignore system messages — agent only responds to humans/agents
2026-02-24 12:29:34 +01:00
cbe3f86890
refactor: router is pure relay — no replies, no side effects
...
Agent sees system messages from Tracker and acts via tools.
Router only forwards message.new events to agent session.
2026-02-24 12:11:49 +01:00
64eca81f5a
refactor: router has zero side effects — agent controls everything via tools
...
Removed: auto in_progress, auto in_review, selfAssignedTasks tracking.
Router only forwards events to agent session and posts replies.
Agent decides status changes, task flow, etc. through MCP tools.
2026-02-24 11:57:19 +01:00
e58c39dc0c
fix: skip auto-processing for self-assigned tasks (taken via tool call)
...
When agent takes a task via take_task tool in conversation, the
task.assigned event is now skipped (no duplicate in_progress→in_review).
2026-02-24 11:45:11 +01:00
9d897621a7
fix: session_id generated at agent load (not lazy)
2026-02-24 11:19:24 +01:00
a9b2d43f84
fix: lazy session_id — generated on first agent invocation, not at startup
2026-02-24 11:18:00 +01:00
cb618a195e
feat: persistent session UUID in agent.json
...
- session_id auto-generated on first run, saved to agent.json
- Survives agent renames (slug changes don't break session history)
- Directory mode: agent works inside its folder (agentHome = workspace)
2026-02-24 10:45:48 +01:00
a89e9a1bb9
feat: offset param in list_messages tool (pagination)
2026-02-24 10:30:49 +01:00
a8f205609b
fix: single session per agent instance
...
One agent = one session. Chat, tasks, tools — all share the same
context. Session ID: 'agent-{slug}' (stable across restarts).
2026-02-23 22:28:57 +01:00
b2a620185f
fix: stable session IDs for chat/task context persistence
...
- Chat messages use 'chat-{chat_id}' session → conversation history preserved
- Task messages use 'task-{task_id}' session → task context preserved
- Previously every message created a new random session (no memory)
2026-02-23 22:25:57 +01:00
7dd39f65f6
feat: MCP-compatible tracker tools (Function Calling hybrid)
...
- 14 tools: tasks (7), steps (2), messages (2), projects (2), members (1)
- TypeBox schemas for parameter validation
- Injected via customTools into Pi Agent Core session
- Tools wrap TrackerClient REST methods
2026-02-23 21:51:02 +01:00
58f5ebca68
fix: restore file attachment stubs with proper TODO
2026-02-23 14:12:39 +01:00
f97aa64142
fix: align with AGENT-PROTOCOL v1.0 — correct WS types, heartbeat, REST auth
2026-02-23 13:57:32 +01:00
Eugene
368b9abf69
update
2026-02-23 15:48:14 +03:00
Eugene
0525cea647
init
2026-02-21 02:41:39 +03:00