Skip to content

Commit c74b517

Browse files
authored
Merge pull request #1030 from MODSetter/dev
feat: desktop quick-ask, parallel indexing, UI/UX fixes & agent rework
2 parents dfe3e7b + cae4262 commit c74b517

178 files changed

Lines changed: 18457 additions & 9102 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cursor/skills/python-patterns/SKILL.md

Lines changed: 441 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"name": "python-patterns",
3+
"description": "Python development principles and decision-making. Framework selection, async patterns, type hints, project structure. Teaches thinking, not copying.",
4+
"category": "development",
5+
"canonical_category": "development",
6+
"repository": "majiayu000/claude-skill-registry-data",
7+
"repository_url": "https://github.com/majiayu000/claude-skill-registry-data",
8+
"author": "majiayu000",
9+
"author_avatar": "https://github.com/majiayu000.png",
10+
"file_path": "data/antigravity-python-patterns/SKILL.md",
11+
"source": "github_curated_repos",
12+
"stars": 2,
13+
"quality_score": 64,
14+
"best_practices_score": 60,
15+
"skill_level": 3,
16+
"skill_level_label": "resources",
17+
"has_scripts": true,
18+
"has_extra_files": false,
19+
"downloads": 0,
20+
"content_hash": "4dd862e5d25189c938320851ba3a0fcc6155f88b67f3822aaa4d0fac7e2d4659",
21+
"indexed_at": "2026-03-01T03:09:48.327Z",
22+
"synced_at": "2026-03-01T06:21:10.361Z",
23+
"omni_registry_url": "https://omni-skill-registry.omniroute.online/#/skill/1d2fb797167c0af9a8694048782c1c3aab4b64b5b33cd055e1e7b702ede3eeb5",
24+
"install_command": "mkdir -p .claude/skills/python-patterns && curl -sL \"https://raw.githubusercontent.com/majiayu000/claude-skill-registry-data/main/data/antigravity-python-patterns/SKILL.md\" > .claude/skills/python-patterns/SKILL.md",
25+
"raw_url": "https://raw.githubusercontent.com/majiayu000/claude-skill-registry-data/main/data/antigravity-python-patterns/SKILL.md"
26+
}

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ node_modules/
55
.ruff_cache/
66
.venv
77
.pnpm-store
8-
.DS_Store
8+
.DS_Store
9+
deepagents/

surfsense_backend/.env.example

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,3 @@ LANGSMITH_TRACING=true
169169
LANGSMITH_ENDPOINT=https://api.smith.langchain.com
170170
LANGSMITH_API_KEY=lsv2_pt_.....
171171
LANGSMITH_PROJECT=surfsense
172-
173-
# Agent Specific Configuration
174-
# Daytona Sandbox (secure cloud code execution for deep agent)
175-
# Set DAYTONA_SANDBOX_ENABLED=TRUE to give the agent an isolated execute tool
176-
DAYTONA_SANDBOX_ENABLED=TRUE
177-
DAYTONA_API_KEY=dtn_asdasfasfafas
178-
DAYTONA_API_URL=https://app.daytona.io/api
179-
DAYTONA_TARGET=us
180-
# Directory for locally-persisted sandbox files (after sandbox deletion)
181-
SANDBOX_FILES_DIR=sandbox_files

surfsense_backend/alembic/versions/107_add_video_presentations_table.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ def upgrade() -> None:
3737

3838
conn = op.get_bind()
3939
result = conn.execute(
40-
sa.text("SELECT 1 FROM information_schema.tables WHERE table_name = 'video_presentations'")
40+
sa.text(
41+
"SELECT 1 FROM information_schema.tables WHERE table_name = 'video_presentations'"
42+
)
4143
)
4244
if not result.fetchone():
4345
op.create_table(
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
"""Add folders table and folder_id to documents
2+
3+
Revision ID: 109
4+
Revises: 108
5+
6+
Creates the folders table for nested folder organization (max 8 levels),
7+
adds folder_id FK to documents, and creates an expression-based unique
8+
index to correctly handle NULL parent_id at root level.
9+
"""
10+
11+
from collections.abc import Sequence
12+
13+
import sqlalchemy as sa
14+
15+
from alembic import op
16+
17+
revision: str = "109"
18+
down_revision: str | None = "108"
19+
branch_labels: str | Sequence[str] | None = None
20+
depends_on: str | Sequence[str] | None = None
21+
22+
23+
def upgrade() -> None:
24+
op.create_table(
25+
"folders",
26+
sa.Column("id", sa.Integer(), primary_key=True, index=True),
27+
sa.Column("name", sa.String(255), nullable=False, index=True),
28+
sa.Column("position", sa.String(50), nullable=False, index=True),
29+
sa.Column(
30+
"parent_id",
31+
sa.Integer(),
32+
sa.ForeignKey("folders.id", ondelete="CASCADE"),
33+
nullable=True,
34+
index=True,
35+
),
36+
sa.Column(
37+
"search_space_id",
38+
sa.Integer(),
39+
sa.ForeignKey("searchspaces.id", ondelete="CASCADE"),
40+
nullable=False,
41+
index=True,
42+
),
43+
sa.Column(
44+
"created_by_id",
45+
sa.Uuid(),
46+
sa.ForeignKey("user.id", ondelete="SET NULL"),
47+
nullable=True,
48+
index=True,
49+
),
50+
sa.Column(
51+
"created_at",
52+
sa.TIMESTAMP(timezone=True),
53+
nullable=False,
54+
server_default=sa.func.now(),
55+
),
56+
sa.Column(
57+
"updated_at",
58+
sa.TIMESTAMP(timezone=True),
59+
nullable=False,
60+
server_default=sa.func.now(),
61+
),
62+
)
63+
64+
# Expression-based unique index: COALESCE(parent_id, 0) handles NULL correctly.
65+
# PostgreSQL treats NULL != NULL in regular unique constraints, so a standard
66+
# UniqueConstraint(search_space_id, parent_id, name) would allow duplicate
67+
# folder names at the root level.
68+
op.execute(
69+
"""
70+
CREATE UNIQUE INDEX uq_folder_space_parent_name
71+
ON folders (search_space_id, COALESCE(parent_id, 0), name);
72+
"""
73+
)
74+
75+
op.add_column(
76+
"documents",
77+
sa.Column(
78+
"folder_id",
79+
sa.Integer(),
80+
sa.ForeignKey("folders.id", ondelete="SET NULL"),
81+
nullable=True,
82+
index=True,
83+
),
84+
)
85+
86+
87+
def downgrade() -> None:
88+
op.drop_column("documents", "folder_id")
89+
op.execute("DROP INDEX IF EXISTS uq_folder_space_parent_name;")
90+
op.drop_table("folders")

surfsense_backend/app/agents/new_chat/__init__.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
"""
22
SurfSense New Chat Agent Module.
33
4-
This module provides the SurfSense deep agent with configurable tools
5-
for knowledge base search, podcast generation, and more.
4+
This module provides the SurfSense deep agent with configurable tools,
5+
middleware, and preloaded knowledge-base filesystem behavior.
66
77
Directory Structure:
8-
- tools/: All agent tools (knowledge_base, podcast, generate_image, etc.)
8+
- tools/: All agent tools (podcast, generate_image, web, memory, etc.)
9+
- middleware/: Custom middleware (knowledge search, filesystem, dedup, etc.)
910
- chat_deepagent.py: Main agent factory
1011
- system_prompt.py: System prompts and instructions
1112
- context.py: Context schema for the agent
@@ -23,6 +24,13 @@
2324
# LLM config
2425
from .llm_config import create_chat_litellm_from_config, load_llm_config_from_yaml
2526

27+
# Middleware
28+
from .middleware import (
29+
DedupHITLToolCallsMiddleware,
30+
KnowledgeBaseSearchMiddleware,
31+
SurfSenseFilesystemMiddleware,
32+
)
33+
2634
# System prompt
2735
from .system_prompt import (
2836
SURFSENSE_CITATION_INSTRUCTIONS,
@@ -39,7 +47,6 @@
3947
build_tools,
4048
create_generate_podcast_tool,
4149
create_scrape_webpage_tool,
42-
create_search_knowledge_base_tool,
4350
format_documents_for_context,
4451
get_all_tool_names,
4552
get_default_enabled_tools,
@@ -53,8 +60,12 @@
5360
# System prompt
5461
"SURFSENSE_CITATION_INSTRUCTIONS",
5562
"SURFSENSE_SYSTEM_PROMPT",
63+
# Middleware
64+
"DedupHITLToolCallsMiddleware",
65+
"KnowledgeBaseSearchMiddleware",
5666
# Context
5767
"SurfSenseContextSchema",
68+
"SurfSenseFilesystemMiddleware",
5869
"ToolDefinition",
5970
"build_surfsense_system_prompt",
6071
"build_tools",
@@ -63,7 +74,6 @@
6374
# Tool factories
6475
"create_generate_podcast_tool",
6576
"create_scrape_webpage_tool",
66-
"create_search_knowledge_base_tool",
6777
# Agent factory
6878
"create_surfsense_deep_agent",
6979
# Knowledge base utilities

0 commit comments

Comments
 (0)