Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
70d2f2b
Harden launcher preflight follow-up
namabeeru Jul 3, 2026
a7dcb2f
fix: root pytest failures
namabeeru Jul 3, 2026
d4f58d6
fix: detect source checkout updates
namabeeru Jul 3, 2026
6c7a7de
Merge pull request #362 from namabeeru/fix/source-update-check
zfoong Jul 4, 2026
fcb781c
fix agent status not update correctly issue
Jul 5, 2026
3e8d0b1
fix task sorting after completion
Jul 5, 2026
a147b19
Fix LivingUI disappear on UI issue
Jul 5, 2026
da0be4a
Fix find_files slowness with SQLite FindIndex (#354).
false200 Jul 4, 2026
62771f6
Address PR review feedback for find_files index.
false200 Jul 6, 2026
f71d591
Fix: Lazy index building on startup and file search parameter fixes
makiroll1125 Jul 7, 2026
bc74f26
fix: harden macos shortcut health checks
namabeeru Jul 7, 2026
fbf732c
fix/rendering issues for text based files on chat preview and mode to…
AlanAAG Jul 7, 2026
ef2df1e
Merge pull request #361 from namabeeru/codex/fix-root-pytest-failures
zfoong Jul 8, 2026
8476a78
Fix: Targeted edge cases
makiroll1125 Jul 8, 2026
e04942f
Move .craftbot index db to CraftBot directory, fixes for macOS
makiroll1125 Jul 8, 2026
e80d21e
Merge pull request #366 from false200/fix/find-files-index-354
makiroll1125 Jul 8, 2026
0912f3a
refactor: remove startup marker module
namabeeru Jul 8, 2026
bcfef5c
fix: surface living ui persistence failures
BharadwajKanneveti Jul 9, 2026
b51698f
Merge pull request #373 from CraftOS-dev/fix/chat-preview-text-based-…
CraftOS-dev Jul 10, 2026
22fdaaf
fix: handle profile bundle save failures
BharadwajKanneveti Jul 11, 2026
77c6ce2
Optimize actions to save token usage
Jul 12, 2026
6b94dea
Fix chatgpt subscription client issue when invoking describe image ac…
Jul 13, 2026
3bfb5a9
Merge pull request #378 from BharadwajKanneveti/fix/living-ui-save-pr…
CraftOS-dev Jul 13, 2026
3627f52
Merge pull request #357 from namabeeru/codex/launcher-preflight-followup
CraftOS-dev Jul 13, 2026
d6c59f5
Fix Grok API error incorrect issue
Jul 16, 2026
c2224db
fix saved model not displayed correctly issue and updated the default…
Jul 17, 2026
9fcab95
Update README with LivingUI section still pending
Jul 19, 2026
c2750bc
Session native redesign (#404)
ahmad-ajmal Aug 5, 2026
fa720c4
Improvement: Add all 8 original panels plus a new Mascot widget, in a…
makiroll1125 Jul 29, 2026
2a844b0
Improvement: Fix UI issues with existing widgets and added new Living…
makiroll1125 Jul 29, 2026
0738395
Fix: Normalized dashboard widget minimum length and height dimensions…
makiroll1125 Aug 5, 2026
e274a08
Fix: Re-apply V1.4.1 token accounting fix to the Token Usage widget
makiroll1125 Aug 5, 2026
13ce341
Fix Living UI verification blind spots + chat-path parity
ahmad-ajmal Aug 5, 2026
6ab1508
Update api key redaction and model switching hanlding
Aug 5, 2026
7f80949
Merge pull request #406 from CraftOS-dev/fix/v141-port-380-redaction
zfoong Aug 5, 2026
f8cb000
shrink menu button in mobile mode
Aug 6, 2026
c2e168f
fix mobile mode chat input coverred by browser tab issue
Aug 6, 2026
e3d911c
tooltips for main chat
Aug 6, 2026
a512cdb
Update AGENT.md
Aug 6, 2026
0f56f0e
update logo with craftbot live link
Aug 6, 2026
c2ff563
Improvement: Set fixed minimum and maximum widget size (minimum allow…
makiroll1125 Aug 6, 2026
ca3216e
another attempt to improve agent behaviour
Aug 6, 2026
2785ee2
Set fixed minimum and maximum sizes for each widget + UI fixes
makiroll1125 Aug 6, 2026
11ddfbc
Token Usage UI fix
makiroll1125 Aug 6, 2026
5b3b50b
Remove Agent Status widget, minor UI fixes
makiroll1125 Aug 6, 2026
cd6c8bc
Add Living UI trigger plane — apps fire the agent
ahmad-ajmal Aug 6, 2026
6f872eb
mkdocs update
Aug 7, 2026
4de1b63
remove older reference from planner skill
Aug 7, 2026
c9d7a58
Merge branch 'V1.4.1' of https://github.com/craftos-dev/craftbot into…
Aug 7, 2026
1058916
dashboard update, size, UI, layout
Aug 7, 2026
1e6168a
dashboard UI update and minor improvement
Aug 7, 2026
7f4fb22
fix dependencies not installed after the first installation
Aug 7, 2026
ff0e6bf
Merge pull request #405 from CraftOS-dev/improvement/dashboard-revamp…
zfoong Aug 7, 2026
7c55e5f
Trigger issue stop button fix (#410)
RooberSmoth Aug 7, 2026
e45ad37
rename living UI to v2
ahmad-ajmal Aug 7, 2026
8900492
delete files
ahmad-ajmal Aug 7, 2026
ae08b1a
Ruff Checks
ahmad-ajmal Aug 7, 2026
e8fbb5e
update manager sve
ahmad-ajmal Aug 7, 2026
cac01a9
Merge remote-tracking branch 'origin/dev' into V1.4.1
ahmad-ajmal Aug 7, 2026
7fd2df5
workflow living UI rename fix
ahmad-ajmal Aug 7, 2026
336b1c7
Merge pull request #411 from CraftOS-dev/V1.4.1
ahmad-ajmal Aug 7, 2026
70edf58
Ruff skill fix
ahmad-ajmal Aug 7, 2026
c3d08f2
Merge pull request #412 from CraftOS-dev/dev
ahmad-ajmal Aug 7, 2026
d947d52
update mkdocs, including living UI page
Aug 8, 2026
e39cbdd
Merge branch 'dev' of https://github.com/craftos-dev/craftbot into dev
Aug 8, 2026
0d2bef0
ruff format: reformat python code blocks in docs examples
Aug 8, 2026
382b67a
Merge pull request #413 from CraftOS-dev/dev
zfoong Aug 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
61 changes: 61 additions & 0 deletions .github/workflows/living-ui.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: living-ui

# Self-test for the Living UI TEMPLATE code (kit/blueprint/tools) in this repo.
# Scaffolds a throwaway project and runs the local validation gate on it.
# User-made Living UIs never touch this workflow — they validate locally.

on:
push:
paths:
- 'living-ui/**'
- '.github/workflows/living-ui.yml'
pull_request:
paths:
- 'living-ui/**'
- '.github/workflows/living-ui.yml'

defaults:
run:
working-directory: living-ui

jobs:
gate:
name: gate (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24

- name: Cache PocketBase binary
uses: actions/cache@v4
with:
path: |
~/Library/Caches/craftos-living-ui/pb
~/.cache/craftos-living-ui/pb
~\AppData\Local\craftos-living-ui\pb
key: pb-${{ runner.os }}-${{ hashFiles('living-ui/spec/pocketbase.version') }}

- name: Install workspace
run: npm install

- name: Typecheck (kit + tools)
run: npm run typecheck

- name: Lint
run: npx eslint .

- name: Scaffold demo project
run: node tools/src/cli.ts create "CI Demo" --description "CI validation project" --port 8090

- name: Link demo workspace
run: npm install

- name: Validation gate
run: node tools/src/cli.ts validate examples/ci-demo
5 changes: 4 additions & 1 deletion .github/workflows/staging-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ jobs:
python-version: "3.10"

- name: Install ruff
run: pip install ruff
# Pinned: unpinned latest broke CI when ruff 0.16 started formatting
# markdown code blocks and expanded its default lint rules. Bump
# deliberately (upgrade, run `ruff format .`, commit both together).
run: pip install ruff==0.16.1

- name: Check formatting
run: ruff format --check .
Expand Down
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,7 @@ agent_file_system/TASK_HISTORY.md
!build_template.py
docs/LIVING_UI_DEVELOPER_GUIDE.md
agent_file_system/ACTIONS.md
agent_bundle/
agent_bundle/
**/.craftbot/
app/data/.file_index/
.playwright-mcp
9 changes: 8 additions & 1 deletion .ruff.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ extend-exclude = [
"app/data/living_ui_template",
]

# Pin the rule set explicitly. The repo was linted against ruff's classic
# defaults (E4/E7/E9/F); ruff 0.16 expanded its default selection (UP, BLE,
# S, I, …), which turned a clean tree into 9,618 errors overnight because CI
# installs unpinned latest. Selecting explicitly makes `ruff check .` mean
# the same thing on every ruff version.
[lint]
select = ["E4", "E7", "E9", "F"]

# E402 (module-level imports not at top) is triggered in files that deliberately
# run setup code before imports — logging suppression, sys.path manipulation,
# asyncio compatibility shims, or state-registry initialization that other
Expand All @@ -12,6 +20,5 @@ extend-exclude = [
"agents/dog_agent/data/action/dog_behaviour.py" = ["E402"]
"app/action/action_framework/run_actions_tests.py" = ["E402"]
"app/config.py" = ["E402"]
"app/llm_interface.py" = ["E402"]
"app/main.py" = ["E402"]
"craftos_integrations/__init__.py" = ["E402"]
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ Beyond that, CraftBot has all the core capabilities of a general-purpose agent h
<a href="https://discord.gg/ZN9YHc37HG">
<img src="https://img.shields.io/badge/Discord-Join%20the%20community-5865F2?logo=discord&logoColor=white" alt="Discord">
</a>

<a href="https://deepwiki.com/CraftOS-dev/CraftBot">
<img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki">
</a>
</p>

<div align="center">
Expand Down
84 changes: 21 additions & 63 deletions agent_core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
get_state_or_none,
AgentProperties,
ReasoningResult,
TaskSummary,
MainState,
DEFAULT_MAX_ACTIONS_PER_TASK,
DEFAULT_MAX_TOKEN_PER_TASK,
Expand All @@ -34,7 +33,13 @@
from agent_core.core.image_gen_interface import ImageGenInterface
from agent_core.core.database_interface import DatabaseInterface
from agent_core.core.trigger import Trigger
from agent_core.core.task import Task, TodoItem, TodoStatus
from agent_core.core.session import (
Session,
SessionType,
TodoItem,
TodoStatus,
MAIN_SESSION_ID,
)
from agent_core.core.action_framework import (
ActionRegistry,
ActionMetadata,
Expand Down Expand Up @@ -113,10 +118,10 @@
get_event_stream_or_none,
get_event_stream_manager,
get_event_stream_manager_or_none,
# Task manager
TaskManagerRegistry,
get_task_manager,
get_task_manager_or_none,
# Session manager
SessionManagerRegistry,
get_session_manager,
get_session_manager_or_none,
# State manager
StateManagerRegistry,
get_state_manager,
Expand All @@ -125,15 +130,8 @@
ContextEngineRegistry,
get_context_engine,
get_context_engine_or_none,
# Trigger queue
TriggerQueueRegistry,
get_trigger_queue,
get_trigger_queue_or_none,
)
from agent_core.core.hooks import (
OnTaskCreatedHook,
OnTaskEndedHook,
OnTodoTransitionHook,
OnActionStartHook,
OnActionEndHook,
OnEventLoggedHook,
Expand All @@ -152,18 +150,15 @@
ActionLibrary,
ActionRouter,
ActionManager,
set_gui_execute_hook,
)
from agent_core.core.impl.memory import (
MemoryManager,
MemoryFileWatcher,
MemoryPointer,
MemoryChunk,
create_memory_processing_task,
)
from agent_core.core.impl.llm import LLMCallType
from agent_core.core.impl.trigger import TriggerQueue
from agent_core.core.impl.workflow_lock import WorkflowLockManager
from agent_core.core.impl.trigger import SessionTriggerQueue, QueueClosed
from agent_core.core.impl.event_stream import (
EventStream,
EventStreamManager,
Expand All @@ -180,28 +175,13 @@
EVENT_STREAM_SUMMARIZATION_PROMPT,
# Action prompts
SELECT_ACTION_PROMPT,
SELECT_ACTION_IN_TASK_PROMPT,
SELECT_ACTION_IN_GUI_PROMPT,
SELECT_ACTION_IN_SIMPLE_TASK_PROMPT,
GUI_ACTION_SPACE_PROMPT,
# Context prompts
AGENT_ROLE_PROMPT,
AGENT_INFO_PROMPT,
POLICY_PROMPT,
USER_PROFILE_PROMPT,
ENVIRONMENTAL_CONTEXT_PROMPT,
AGENT_FILE_SYSTEM_CONTEXT_PROMPT,
# Routing prompts
ROUTE_TO_SESSION_PROMPT,
# GUI prompts
GUI_REASONING_PROMPT,
GUI_REASONING_PROMPT_OMNIPARSER,
GUI_QUERY_FOCUSED_PROMPT,
GUI_PIXEL_POSITION_PROMPT,
# Skill selection prompts
SKILLS_AND_ACTION_SETS_SELECTION_PROMPT,
SKILL_SELECTION_PROMPT,
ACTION_SET_SELECTION_PROMPT,
)

# MCP
Expand Down Expand Up @@ -259,7 +239,6 @@
"get_state_or_none",
"AgentProperties",
"ReasoningResult",
"TaskSummary",
"MainState",
"DEFAULT_MAX_ACTIONS_PER_TASK",
"DEFAULT_MAX_TOKEN_PER_TASK",
Expand Down Expand Up @@ -300,10 +279,12 @@
"PLATFORM_LINUX",
"PLATFORM_WINDOWS",
"PLATFORM_DARWIN",
# Task management
"Task",
# Session management
"Session",
"SessionType",
"TodoItem",
"TodoStatus",
"MAIN_SESSION_ID",
# Event stream
"Event",
"EventRecord",
Expand Down Expand Up @@ -354,32 +335,27 @@
"get_event_stream_or_none",
"get_event_stream_manager",
"get_event_stream_manager_or_none",
"TaskManagerRegistry",
"get_task_manager",
"get_task_manager_or_none",
"SessionManagerRegistry",
"get_session_manager",
"get_session_manager_or_none",
"StateManagerRegistry",
"get_state_manager",
"get_state_manager_or_none",
"ContextEngineRegistry",
"get_context_engine",
"get_context_engine_or_none",
"TriggerQueueRegistry",
"get_trigger_queue",
"get_trigger_queue_or_none",
# Implementations
"ActionExecutor",
"ActionLibrary",
"ActionRouter",
"ActionManager",
"set_gui_execute_hook",
"MemoryManager",
"MemoryFileWatcher",
"MemoryPointer",
"MemoryChunk",
"create_memory_processing_task",
"LLMCallType",
"TriggerQueue",
"WorkflowLockManager",
"SessionTriggerQueue",
"QueueClosed",
"EventStream",
"EventStreamManager",
# Prompts - Registry
Expand All @@ -391,32 +367,14 @@
"EVENT_STREAM_SUMMARIZATION_PROMPT",
# Prompts - Action
"SELECT_ACTION_PROMPT",
"SELECT_ACTION_IN_TASK_PROMPT",
"SELECT_ACTION_IN_GUI_PROMPT",
"SELECT_ACTION_IN_SIMPLE_TASK_PROMPT",
"GUI_ACTION_SPACE_PROMPT",
# Prompts - Context
"AGENT_ROLE_PROMPT",
"AGENT_INFO_PROMPT",
"POLICY_PROMPT",
"USER_PROFILE_PROMPT",
"ENVIRONMENTAL_CONTEXT_PROMPT",
"AGENT_FILE_SYSTEM_CONTEXT_PROMPT",
# Prompts - Routing
"ROUTE_TO_SESSION_PROMPT",
# Prompts - GUI
"GUI_REASONING_PROMPT",
"GUI_REASONING_PROMPT_OMNIPARSER",
"GUI_QUERY_FOCUSED_PROMPT",
"GUI_PIXEL_POSITION_PROMPT",
# Prompts - Skill selection
"SKILLS_AND_ACTION_SETS_SELECTION_PROMPT",
"SKILL_SELECTION_PROMPT",
"ACTION_SET_SELECTION_PROMPT",
# Hooks
"OnTaskCreatedHook",
"OnTaskEndedHook",
"OnTodoTransitionHook",
"OnActionStartHook",
"OnActionEndHook",
"OnEventLoggedHook",
Expand Down
14 changes: 11 additions & 3 deletions agent_core/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,13 @@
from agent_core.core.vlm_interface import VLMInterface
from agent_core.core.database_interface import DatabaseInterface
from agent_core.core.trigger import Trigger
from agent_core.core.task import Task, TodoItem, TodoStatus
from agent_core.core.session import (
Session,
SessionType,
TodoItem,
TodoStatus,
MAIN_SESSION_ID,
)
from agent_core.core.action_framework import (
ActionRegistry,
ActionMetadata,
Expand Down Expand Up @@ -55,10 +61,12 @@
"get_cache_metrics",
# Trigger
"Trigger",
# Task
"Task",
# Session
"Session",
"SessionType",
"TodoItem",
"TodoStatus",
"MAIN_SESSION_ID",
# Action framework
"ActionRegistry",
"ActionMetadata",
Expand Down
Loading
Loading