38 Commits

Author SHA1 Message Date
a117d2ffd7 fix: define msg_id and agent_reply before async block to prevent UnboundLocalError 2026-08-02 23:31:46 +08:00
73935ae652 fix: start_agent query by org_id, auto-execute tasks, link creation+execution 2026-08-02 23:17:49 +08:00
28820a0b29 fix: bypass pipeline_submit, create tasks directly in cockpit 2026-08-02 17:56:06 +08:00
40afce18e7 fix: remove duplicate stats_row, keep only quick_cards 2026-08-02 17:01:20 +08:00
8e0a45abca fix: remove org_id from sd_iterations query (column doesnt exist) 2026-08-02 16:15:44 +08:00
ccc0755a82 feat: 4 dynamic cards with popups on cockpit dashboard 2026-08-02 16:07:48 +08:00
fd3f59a9f6 fix: use inline task query instead of run_agent_loop in start_agent handler 2026-08-02 16:06:45 +08:00
4ba5d84cf7 feat: add start_agent + agent_status intent handlers 2026-08-02 16:00:16 +08:00
0d0c8299e8 fix: LIMIT $ → direct interpolation to avoid MySQL variable error 2026-08-02 15:46:37 +08:00
ee8005644f feat: Phase 3 — cockpit_agent.dspy (start/status/deliverables/review) 2026-08-02 14:59:33 +08:00
bb09bd36a0 refactor: use pipeline_conversations + pipeline_agent_settings (shared tables) 2026-08-02 00:00:21 +08:00
97e2c6b2f4 feat: Phase 1 — intent recognition, guided conversation, context bar 2026-08-01 23:36:29 +08:00
84df91d9eb fix: model_id form reading fallback to select element 2026-08-01 21:57:04 +08:00
a45b4503eb debug: add _call_llm logging for api_key/base/model tracing 2026-08-01 17:32:23 +08:00
ac2ff432ed fix: remove RC4 decrypt from cockpit_chat, use plaintext api_key 2026-08-01 16:57:16 +08:00
328798f5a7 fix: tolerate plaintext api_keys on decrypt failure 2026-08-01 16:42:32 +08:00
13c466069f fix: decrypt api_key before calling LLM in cockpit_chat 2026-08-01 16:32:46 +08:00
0d6266b088 fix: add model selector to root cockpit index.ui (was only in sd_cockpit) 2026-08-01 16:16:21 +08:00
74a70da8b6 feat: add model selector dropdown to cockpit, pass model_id in chat requests 2026-08-01 15:26:05 +08:00
c310754d57 fix: limit model config popup size (36x26 grid) 2026-08-01 11:33:07 +08:00
c0a31d60df fix: change cockpit refresh button to model config popup in index.ui 2026-08-01 11:18:34 +08:00
5c80ad3948 feat: model config popup button in cockpit, my_bugs API, task_tree_popup 2026-08-01 10:43:43 +08:00
72cd262cdb feat(cockpit): product-grade LLM integration with context + model mgmt
Backend:
- cockpit_chat.dspy: real LLM calls via llm table config, Hermes-style
  context (system prompt + project/iteration + history), auto model
  selection (multimodal if files, text otherwise)
- cockpit_model_options.dspy: returns active models with capabilities
- llm table: added capabilities column (text/vision/multimodal)

Frontend:
- inputed script: no page reload, updates agent bubble with LLM reply
- stats_row refreshed on success, error shown in bubble

DB:
- sd_agent_settings table for per-user agent preferences
2026-07-31 18:06:27 +08:00
d7bace21db fix: setText -> set_text (bricks API is snake_case) 2026-07-31 17:14:33 +08:00
ef37e492c9 fix(cockpit): AgentIO-style UX — show user+agent bubbles immediately before POST
Follow bricks/agent.js AgentIO pattern:
- On inputed: instant user bubble + '正在分析需求...' agent placeholder in chat_scroll
- POST to cockpit_chat.dspy
- On success: reload to show complete conversation
- On error: show error text in the placeholder bubble

Previously crashed on VScrollPanel.render() — VScrollPanel has no render method.
Now uses add_widget() to append message bubbles dynamically, matching AgentIO.
2026-07-31 16:59:38 +08:00
b2314fd3b2 fix: add bricks.app as second arg to getWidgetById calls in cockpit scripts
The new bricks.js getWidgetById (line 2680) no longer has a default from_widget fallback.
When called without a second argument, from_widget is undefined and get_by_id crashes at
line 2691: Cannot read properties of undefined (reading 'dom_element').

Fixed both in refresh button click handler and TextFiles inputed handler.
2026-07-31 16:14:19 +08:00
163824870b fix: wrap getWidgetById in try-catch for missing current_iteration_id widget 2026-07-31 15:47:51 +08:00
890861465a fix: e.params→params in TextFiles inputed event (e undefined in script context) 2026-07-31 15:20:08 +08:00
a4ac438c49 fix: sor.I→sor.C for insert (I is inspect, C is create) 2026-07-31 15:01:03 +08:00
614c883863 fix: use TextFiles widget (UiText+file+send) instead of broken render event 2026-07-31 14:09:56 +08:00
87f0fa6045 fix: replace broken render event with Form textarea for cockpit input 2026-07-31 13:45:22 +08:00
757cfe510b fix(cockpit): remove entire_url from script to fix Jinja2 500, cockpit now default for pipeline-sdlc 2026-07-31 12:23:49 +08:00
eb6674f884 refactor(cockpit): replace Form with UiText widget, file chip UI 2026-07-31 12:00:23 +08:00
6831697edc refactor(cockpit): single-page chat layout, compact stats cards (cheight:4), file attachment UI 2026-07-31 11:49:30 +08:00
bd0890a394 feat(sdlc): cockpit driving mode — conversation timeline + agent chat 2026-07-30 15:53:18 +08:00
4a4bd313e7 refactor: match pipeline_core card layout style 2026-07-09 07:50:41 +08:00
b012f97154 fix: CRUD endpoint return format - remove json.dumps, use widgettype format 2026-07-03 14:50:43 +08:00
Hermes Agent
f69870e96a feat: add 40 dspy APIs, 7 UI pages, CSS, pipeline definition SQL 2026-06-16 13:16:24 +08:00