Skip to content
Merged

Dev #320

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
101 commits
Select commit Hold shift + click to select a range
a84e2c5
new coding skill: find-skills
makiroll1125 May 19, 2026
3a20e6c
new coding skill: firecrawl (scrape the web)
makiroll1125 May 19, 2026
c8e0c89
new coding skill: excalidraw diagrams
makiroll1125 May 20, 2026
9037235
Update contributing md with SOPs
ahmad-ajmal May 20, 2026
03b2161
new coding skill: planetscale postgres
makiroll1125 May 20, 2026
b6fe613
new coding skill: planetscale mysql
makiroll1125 May 20, 2026
4628fd7
new coding skill: planetscale vitess
makiroll1125 May 20, 2026
5d92c45
new coding skill: planetscale neki
makiroll1125 May 20, 2026
169fb23
new coding skill: cloudflare workers best practices
makiroll1125 May 20, 2026
35a37d4
new coding skills: essential Trail of Bits skills + modified existing…
makiroll1125 May 20, 2026
cecef3c
new coding skill: awesome-copilot git-commit
makiroll1125 May 20, 2026
2cb6a75
new coding skill: shannon pentester
makiroll1125 May 20, 2026
3b2a84a
clear conversation and task data with clear command
May 20, 2026
b278f65
improvement:more github action
May 20, 2026
67bc3db
Added more google calendar actions
May 20, 2026
1607cde
action expansion for gmail, gdrive, and outlook
May 20, 2026
1922a15
action expansion for Notion, Discord, and Slack
May 21, 2026
4768518
action expansion for Lark
May 21, 2026
d4adc52
action expansion of Jira, Line business, and telegram bot
May 21, 2026
c0b5a55
action expansion for whatsapp
May 21, 2026
8b9cfab
action expansion google docs
May 21, 2026
2d25be3
action expansion lark calendar
May 21, 2026
08a436f
action expansion twitter
May 21, 2026
1bdcedb
Lint and Formating Fix
ahmad-ajmal May 21, 2026
7ab8c1d
integration connection in onboarding step
May 22, 2026
b32b96e
refactor: migrate browser frontend state to Redux Toolkit
ahmad-ajmal May 22, 2026
f28f967
selectEnabledSkills
ahmad-ajmal May 22, 2026
0ac4601
revamp: modal component
ahmad-ajmal May 22, 2026
5830b0b
current version fix
ahmad-ajmal May 22, 2026
30e8ad4
Check update fix
ahmad-ajmal May 22, 2026
2f6f6e9
Remove TUI support
May 22, 2026
9510585
fix: display user-invoked skills in Skills icon in Dashboard
makiroll1125 May 25, 2026
c51a785
Feat/slash command autocomplete (#268)
makiroll1125 May 25, 2026
1fc7014
fix: skill information (invocations, top skills) persist across sessions
makiroll1125 May 25, 2026
e2f3e39
fix: skill information (invocations, top skills) persist across sessi…
makiroll1125 May 25, 2026
9327d17
Reset setting config
May 25, 2026
6d0bc89
fix: add support for OpenAI Images 2.0 and Gemini Nano Banana 2 image…
makiroll1125 May 26, 2026
d326f70
fix: Gemini is default provider if both OpenAI and Gemini API keys ar…
makiroll1125 May 26, 2026
d8ea880
Merge branch 'V1.3.2' into feature/coding-skills
makiroll1125 May 26, 2026
73a43af
Merge pull request #283 from CraftOS-dev/feature/coding-skills
makiroll1125 May 26, 2026
76d6e70
Merge pull request #284 from CraftOS-dev/fix/skill-dashboard
zfoong May 26, 2026
bc67127
feature:added bedrock as provider and fixed gemini and openrouter cac…
May 26, 2026
7064917
Merge branch 'V1.3.2' of https://github.com/craftos-dev/craftbot into…
May 26, 2026
5d3a8ba
update requirement and setting of Bedrock
May 26, 2026
4729ced
merge to V1.3.2
May 26, 2026
99e56c9
Merge pull request #271 from CraftOS-dev/improvement/integration-acti…
zfoong May 26, 2026
b42925e
Upgrade create_pdf action with themes, visual layout, and unicode safety
AlanAAG May 26, 2026
eb91b76
Improvement/task interative update (#287)
zfoong May 27, 2026
160ca29
removed repeated validation check
ahmad-ajmal May 27, 2026
1a370e5
Upgrade read_pdf with pdfplumber primary engine, text/layout modes, a…
AlanAAG May 27, 2026
a249292
create dm channel struct check
ahmad-ajmal May 27, 2026
40d95df
Fix issue 238: reinitialize cache session mid task provider switch
May 27, 2026
fc0958c
Merge branch 'V1.3.2' of https://github.com/craftos-dev/craftbot into…
May 27, 2026
faca9ae
Add edit_pdf action and update requirements with PDF processing deps
AlanAAG May 27, 2026
ad5e886
bug:fix tui module not found issue
May 27, 2026
1628daf
Update create_pdf theme guidance and add theme_used to edit_pdf descr…
AlanAAG May 27, 2026
0cc7c07
UI:task list scrolling logic
May 27, 2026
cff524e
UI update: attachement preview
May 27, 2026
6752564
UI improve:Increase contrast and other improvement
May 27, 2026
03f0235
UI update:link color and marketplace icon
May 27, 2026
f8f888d
Merge pull request #285 from CraftOS-dev/fix-generate-image
zfoong May 28, 2026
37d3e66
V1.3.2 Lint Checks and fixes
ahmad-ajmal May 28, 2026
ae344ac
Merge pull request #286 from CraftOS-dev/pdf_actions
zfoong May 28, 2026
3c7b122
version update in setting config
May 28, 2026
b2bbb11
Merge pull request #290 from CraftOS-dev/V1.3.2
zfoong May 28, 2026
98c7166
lint fix (#292)
ahmad-ajmal May 28, 2026
28fbf47
remove cache pip
ahmad-ajmal May 28, 2026
c89b03e
Merge pull request #293 from CraftOS-dev/staging
zfoong May 28, 2026
a271ed3
fix: remove requirements.txt comments for proper install (#298)
makiroll1125 May 29, 2026
77182d4
Merge branch 'staging' into dev
ahmad-ajmal May 29, 2026
0081e9d
remove requirements.txt comments for proper install (#299)
ahmad-ajmal May 29, 2026
87a5311
Living UI Scaffold
ahmad-ajmal May 29, 2026
337f480
fix: When CraftBot continues - waiting for response tasks are continu…
ahmad-ajmal May 29, 2026
27d9a88
fix: don't end a task in the same step as a message awaiting a reply
ahmad-ajmal May 29, 2026
f90be29
Living UI: mirror agent questions as an on-screen form during creation
ahmad-ajmal Jun 4, 2026
ee7906a
Feat/dashboard integration icon (#305)
makiroll1125 Jun 4, 2026
7ce1aba
pdf actions new version (#306)
AlanAAG Jun 5, 2026
90835c3
improvement: User requirement/living UI name should be displayed in c…
ahmad-ajmal Jun 5, 2026
291cc16
feat(living-ui): spawn tab immediately, and give instant launch/stop …
ahmad-ajmal Jun 5, 2026
37ceefb
lint format
ahmad-ajmal Jun 5, 2026
2b00d03
improvement: new image interface modeled after VLM interface (#304)
makiroll1125 Jun 5, 2026
3ded214
fix: don't let CraftBot check 'google' as an integration (#278)
ahmad-ajmal Jun 5, 2026
77856bc
lint fix
ahmad-ajmal Jun 5, 2026
93dc3ff
fix: render default agent avatar in packaged macOS app (#254)
ahmad-ajmal Jun 5, 2026
a45a232
keep configuration modal open after connecting to apps
Jun 6, 2026
2988fcf
improvement:added Hubspot integration
Jun 6, 2026
879c6a8
improvement:added complete task button
Jun 7, 2026
f633db2
feature:resume ended task button
Jun 7, 2026
68a4845
fix: CraftBot can download multiple attachments from Gmail
makiroll1125 Jun 8, 2026
76251e0
fix #280: When CraftBot continues, each resumed task sends a separate…
ahmad-ajmal Jun 8, 2026
3d26ac0
fix #314: Switch connected account (integration) require agent runtim…
ahmad-ajmal Jun 8, 2026
501b894
fix #310: Discrepancy between 'All' and '1h/1d/1w/1m' token usag
ahmad-ajmal Jun 9, 2026
39f53a7
fix #303: date and time passed correctly into system environmental co…
makiroll1125 Jun 9, 2026
fc89727
fix #313: Scheduled tasks are delayed and duplicated after restart of…
ahmad-ajmal Jun 9, 2026
c041965
added video generation interface, and openai, gemini, and byteplus as…
zfoong Jun 9, 2026
1e8d0a9
Merge branch 'dev' into V1.3.3
ahmad-ajmal Jun 9, 2026
0bbb216
Merge pull request #319 from CraftOS-dev/V1.3.3
ahmad-ajmal Jun 9, 2026
57c1dcb
version, fix UI bug, fix task resume behavior
zfoong Jun 9, 2026
df8c37a
Merge branch 'staging' into dev
CraftOS-dev Jun 9, 2026
e351121
ruff check
zfoong Jun 9, 2026
7e32be6
Merge branch 'dev' of https://github.com/CraftOS-dev/CraftBot into dev
zfoong Jun 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions agent_core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
)
from agent_core.core.embedding_interface import EmbeddingInterface
from agent_core.core.vlm_interface import VLMInterface
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
Expand Down Expand Up @@ -272,6 +273,7 @@
# Interfaces
"EmbeddingInterface",
"VLMInterface",
"ImageGenInterface",
"DatabaseInterface",
"GeminiClient",
"GeminiAPIError",
Expand Down
10 changes: 10 additions & 0 deletions agent_core/core/credentials/embedded_credentials.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,16 @@
"api_id": ["MzQyNDc4MTc="],
"api_hash": ["N2Q5ZjkzN2ZkNzAzYTI0NTkyMDQzNGM2YjU5MDE4OGE="],
},
"hubspot": {
"client_id": [
"YmM5ZGM4MzctMGJjMC00Y2Y3L",
"WFmY2EtYWVjYTY4YWNiMjhm",
],
"client_secret": [
"MzI5MzM4ZDktNzVkYi00YTg4L",
"Tg2ZmQtMDZhNzI2N2FjNmRk",
],
},
}


Expand Down
12 changes: 12 additions & 0 deletions agent_core/core/image_gen_interface.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# -*- coding: utf-8 -*-
"""
Image generation interface.

Re-exports ImageGenInterface from the impl module for backward compatibility.
Use the runtime-specific wrapper (app/image_gen_interface.py) when running
inside CraftBot — it injects the appropriate state and usage hooks.
"""

from agent_core.core.impl.image_gen import ImageGenInterface

__all__ = ["ImageGenInterface"]
37 changes: 36 additions & 1 deletion agent_core/core/impl/action/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -1238,10 +1238,45 @@ def _validate_parallel_actions(
# Cap at 10 actions
actions = actions[:10]

dropped_actions = []

# A message that waits for a user reply keeps the task parked until the
# user responds — so ending the task in the same batch is contradictory.
# task_end tears down the session, which means the user's reply can never
# be routed back to the waiting task (it gets orphaned into a new session).
# Resolve the conflict in favour of waiting: drop task_end, keep the task
# alive. The agent should end the task only AFTER the user replies.
def _wants_reply(action_dict: Dict[str, Any]) -> bool:
v = (action_dict.get("parameters") or {}).get("wait_for_user_reply")
if isinstance(v, str):
return v.strip().lower() == "true"
return bool(v)

waits_for_reply = any(_wants_reply(a) for a in actions)
if waits_for_reply and any(a.get("action_name") == "task_end" for a in actions):
kept = []
for action_dict in actions:
if action_dict.get("action_name") == "task_end":
dropped_action = action_dict.copy()
dropped_action["_error"] = (
"Action dropped: cannot end the task in the same step as a "
"message with wait_for_user_reply=true. The task must stay "
"active to receive the user's reply — call task_end only "
"after the user has responded."
)
dropped_actions.append(dropped_action)
logger.warning(
"[PARALLEL] Dropping task_end paired with "
"wait_for_user_reply=true — keeping task parked so the "
"user's reply can be routed back to it."
)
else:
kept.append(action_dict)
actions = kept

# Check for non-parallelizable actions by looking up each action's parallelizable attribute
# If found, we need to keep the non-parallelizable action (not just the first action)
non_parallel_action = None
dropped_actions = []
for action_dict in actions:
action_name = action_dict.get("action_name", "")
if action_name:
Expand Down
4 changes: 4 additions & 0 deletions agent_core/core/impl/context/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,14 +184,18 @@ def create_system_policy(self) -> str:
def create_system_environmental_context(self) -> str:
"""Create a system message block with environmental context."""
import platform
from datetime import datetime

try:
from app.config import AGENT_WORKSPACE_ROOT
except ImportError:
AGENT_WORKSPACE_ROOT = "."

local_timezone = get_localzone()
now = datetime.now(local_timezone)
current_datetime = now.strftime("%Y-%m-%d %H:%M:%S") + f" ({local_timezone})"
return ENVIRONMENTAL_CONTEXT_PROMPT.format(
current_datetime=current_datetime,
user_location=local_timezone,
working_directory=AGENT_WORKSPACE_ROOT,
operating_system=platform.system(),
Expand Down
6 changes: 6 additions & 0 deletions agent_core/core/impl/image_gen/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# -*- coding: utf-8 -*-
"""Image generation interface package."""

from agent_core.core.impl.image_gen.interface import ImageGenInterface

__all__ = ["ImageGenInterface"]
Loading
Loading