Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
575 commits
Select commit Hold shift + click to select a range
f7dcbe6
docs: add draft copilot boundary design
yuzzjj Apr 27, 2026
14e4b91
docs: add draft copilot implementation plan
yuzzjj Apr 27, 2026
bf385dd
feat: route copilot requests through draft contract
yuzzjj Apr 27, 2026
a9490ee
test: tighten copilot draft contract coverage
yuzzjj Apr 27, 2026
e66df62
feat: dispatch copilot runs against draft versions
yuzzjj Apr 27, 2026
19377a4
test: harden draft copilot orchestrator path
yuzzjj Apr 27, 2026
a9546b6
fix: align build copilot to draft semantics
yuzzjj Apr 27, 2026
5afcddb
docs: add zh draft terminology design
yuzzjj Apr 27, 2026
b0ad646
fix: rename zh draft UI copy to initial version
yuzzjj Apr 27, 2026
ee5182c
feat: add canonical backend error contract
yuzzjj Apr 27, 2026
f0f82b1
feat: convert http errors to canonical envelope
yuzzjj Apr 27, 2026
4be8918
fix: preserve canonical http error headers
yuzzjj Apr 27, 2026
f799a15
fix: remove legacy http error fallback
yuzzjj Apr 27, 2026
1292070
feat: structure execution completion errors
yuzzjj Apr 27, 2026
578f82d
feat: establish canonical app error model
yuzzjj Apr 27, 2026
c5620a6
refactor: implement unified error contract architecture and remove re…
yuzzjj Apr 27, 2026
cc4e89c
fix: enhance error handling by adding specific error codes and data t…
yuzzjj Apr 27, 2026
aa5ed93
Remove obsolete test files for platform token, skill collaborator, sk…
yuzzjj Apr 27, 2026
fa78a0b
Delete the agent model restructure design document to streamline proj…
yuzzjj Apr 27, 2026
d8ae3a5
Refactor Copilot and OAuth error handling
yuzzjj Apr 27, 2026
786d492
refactor: enhance WebSocket error handling with specific error codes …
yuzzjj Apr 27, 2026
3444e25
Refactor error handling and improve code readability across multiple …
yuzzjj Apr 27, 2026
4611a9c
refactor: standardize error handling across frontend and backend with…
yuzzjj Apr 27, 2026
abf572a
Enhance error handling and payload structure across various components
yuzzjj Apr 28, 2026
06baa95
refactor: replace generic runtime exceptions with structured applicat…
yuzzjj Apr 28, 2026
e0bbc38
docs: add observation tracing design spec
yuzzjj Apr 28, 2026
b77571a
docs: address spec review feedback for observation tracing design
yuzzjj Apr 28, 2026
11a8095
docs: add observation tracing implementation plan
yuzzjj Apr 28, 2026
c9cfcc0
feat(observation): add ObservationType, ObservationLevel, SpanHandle …
yuzzjj Apr 28, 2026
58e7f80
feat(observation): add Trace and Observation SQLAlchemy models
yuzzjj Apr 28, 2026
5025ca5
feat(observation): add ObservationWriter with batch flush strategy
yuzzjj Apr 28, 2026
5064f6b
feat(observation): add ObservationBroadcaster with monotonic seq
yuzzjj Apr 28, 2026
8b28602
feat(observation): add ObservationCollector with span lifecycle and c…
yuzzjj Apr 28, 2026
fc3378b
feat(observation): export complete observation module
yuzzjj Apr 28, 2026
571b315
feat(observation): add debug and collector fields to ExecutionContext
yuzzjj Apr 28, 2026
df753f9
migration: add traces and observations tables
yuzzjj Apr 28, 2026
9dfd4e5
feat(observation): add CopilotObservationExtractor and FileOperationT…
yuzzjj Apr 28, 2026
07777a9
feat(observation): add CLIObservationExtractor for CLI engine
yuzzjj Apr 28, 2026
5468758
feat(observation): add LangChain ObservationCallbackHandler
yuzzjj Apr 28, 2026
10c77f0
feat(observation): add dispatch_debug and collector injection in orch…
yuzzjj Apr 28, 2026
d1effc3
feat(observation): wire all four engines to ObservationCollector
yuzzjj Apr 28, 2026
fa4c23b
refactor(observation): remove langfuse_callback.py, deprecate trace_c…
yuzzjj Apr 28, 2026
56a40d8
feat(observation): add traces API routes (debug, list, detail, observ…
yuzzjj Apr 28, 2026
1118e5e
refactor(observation): simplify review fixes
yuzzjj Apr 28, 2026
31609fc
fix(observation): wire ObservationBroadcaster to real WebSocket trans…
yuzzjj Apr 28, 2026
221c8c5
docs: add frontend observation trace viewer design spec
yuzzjj Apr 28, 2026
00b8897
feat(observation): add core type definitions, helpers, and constants
yuzzjj Apr 28, 2026
fafe47f
feat(observation): add Langfuse-aligned trace viewer with full-chain …
yuzzjj Apr 28, 2026
52c3caa
fix(observation): remove duplicate /v1 prefix from apiGet/apiPost paths
yuzzjj Apr 28, 2026
81a417f
fix(observation): handle serialized=None in LangChain callback handler
yuzzjj Apr 28, 2026
53e0e40
docs: add observation callback handler refactor design spec
yuzzjj Apr 29, 2026
f995872
docs: address spec review issues (15 fixes)
yuzzjj Apr 29, 2026
53a74c3
docs: address spec review round 2 (12 fixes)
yuzzjj Apr 29, 2026
d24a2dd
refactor(agents): redesign release lifecycle with 5-state model
yuzzjj Apr 29, 2026
61463f9
docs: add observation callback handler refactor implementation plan
yuzzjj Apr 29, 2026
2c0db61
chore(observation): add OpenTelemetry api/sdk deps
yuzzjj Apr 29, 2026
a2da798
feat(observation): add ObservationSpan — typed OTel Span wrapper
yuzzjj Apr 29, 2026
61bb90a
feat(observation): add LiveSpanProcessor base for streaming events
yuzzjj Apr 29, 2026
c25e941
fix(observation): move processor_base test to correct test directory
yuzzjj Apr 29, 2026
2c13b86
feat(observation): add BroadcastProcessor — instant WS relay via Live…
yuzzjj Apr 29, 2026
6a0f50b
feat(observation): add PersistenceProcessor — deferred-INSERT OTel sp…
yuzzjj Apr 29, 2026
e596d2d
fix(observation): address code review findings for processors
yuzzjj Apr 29, 2026
267ffdb
feat(observation): add ObservationTracerProvider — per-execution OTel…
yuzzjj Apr 29, 2026
e7d3877
feat(observation): add langchain_utils — message serialization, usage…
yuzzjj Apr 29, 2026
322d440
feat(observation): rewrite ObservationCallbackHandler with all 18 Lan…
yuzzjj Apr 29, 2026
58b9a9a
fix(observation): address code review findings for callback handler
yuzzjj Apr 29, 2026
c48eae7
feat(observation): rewrite ObservationCollector as OTel-backed API
yuzzjj Apr 29, 2026
4f70f26
refactor(observation): remove SpanHandle, writer, broadcaster — repla…
yuzzjj Apr 29, 2026
048488c
refactor(observation): adapt extractors to OTel-backed collector API
yuzzjj Apr 29, 2026
995d86d
refactor(observation): update engine call sites to OTel-backed collector
yuzzjj Apr 29, 2026
830e738
fix(observation): remove stale await on sync collector.start_agent in…
yuzzjj Apr 29, 2026
145dc36
docs: add follow-up for frontend WS observation protocol migration
yuzzjj Apr 29, 2026
c4ec9a5
fix(agents): auto-fork draft version on publish and frozen-version save
yuzzjj Apr 29, 2026
0050bff
fix(observation): address final code review findings (IM1, IM2)
yuzzjj Apr 29, 2026
153b54f
chore: remove stale empty tests/core/ directory
yuzzjj Apr 29, 2026
e2baa66
refactor(observation): simplify processors and reuse existing utils
yuzzjj Apr 29, 2026
4adff66
fix(observation): remove context.attach/detach to fix async Task mism…
yuzzjj Apr 29, 2026
31cabd9
feat(observation): align WS streaming contract end-to-end and clean d…
yuzzjj Apr 29, 2026
686881d
feat(observation): add LLM streaming text pipeline with throttled WS …
yuzzjj Apr 29, 2026
f30f22a
feat(observation): reinforce detail panel with Langfuse-aligned struc…
yuzzjj Apr 29, 2026
1c2ebd7
fix(observation): align LLM input format with Langfuse and render mar…
yuzzjj Apr 30, 2026
89ae4a1
docs: add architecture hardening design
yuzzjj Apr 30, 2026
a881452
docs: add architecture hardening plan
yuzzjj Apr 30, 2026
c5d8693
refactor: centralize architecture contract values
yuzzjj Apr 30, 2026
421ed42
refactor: move execution orchestrator to service layer
yuzzjj Apr 30, 2026
78f8c1d
feat: expose execution engine capabilities
yuzzjj Apr 30, 2026
6126692
test: cover unsupported execution message injection
yuzzjj Apr 30, 2026
88fa041
test: use valid trigger source in orchestrator boundary test
yuzzjj Apr 30, 2026
93dc2a5
docs: document execution event sequencing constraint
yuzzjj Apr 30, 2026
b2ae3aa
docs: clarify event sequence cache writer constraint
yuzzjj Apr 30, 2026
546ec76
refactor: align frontend architecture contracts
yuzzjj Apr 30, 2026
d9d1f32
refactor: derive frontend architecture types from constants
yuzzjj Apr 30, 2026
efe13b5
refactor: introduce visual definition adapter
yuzzjj Apr 30, 2026
f01f9b0
fix: preserve visual definition payload fields
yuzzjj Apr 30, 2026
71a29eb
fix: preserve beacon visual definition payload
yuzzjj Apr 30, 2026
36fdb46
test: enforce builder surface mapping
yuzzjj Apr 30, 2026
c8d8388
docs: refresh architecture for agent execution model
yuzzjj Apr 30, 2026
19860c9
docs: align architecture docs execution events
yuzzjj Apr 30, 2026
53e29c2
docs: update architecture source references
yuzzjj Apr 30, 2026
34bfce3
docs: remove stale graph service reference
yuzzjj Apr 30, 2026
d0439c3
fix: preserve forked visual payload cache
yuzzjj Apr 30, 2026
7df1895
docs: remove frontend WebSocket protocol migration follow-up document
yuzzjj Apr 30, 2026
6337e93
refactor: unify error handling architecture and remove legacy documen…
yuzzjj Apr 30, 2026
160944b
docs: document architecture hardening, unified error contract, state …
yuzzjj Apr 30, 2026
2508828
refactor: update execution error schema and standardize WebSocket end…
yuzzjj Apr 30, 2026
c997e32
refactor: decouple internal copilot engine from user-facing runtimes …
yuzzjj Apr 30, 2026
06326ac
refactor: cleanup unused services and legacy utilities while updating…
yuzzjj Apr 30, 2026
7e8355a
docs: agent kind refactor design spec (EngineKind + RuntimeKind)
yuzzjj Apr 30, 2026
34d73d0
docs: agent kind refactor implementation plan
yuzzjj Apr 30, 2026
ab373ac
refactor: replace DefinitionKindLiteral/RuntimeKindLiteral with Engin…
yuzzjj Apr 30, 2026
c0f91c1
refactor: rename engine classes and update registry to use engine_kind
yuzzjj Apr 30, 2026
006bb3a
refactor: promote CLI providers to first-class engines, delete CLIEngine
yuzzjj Apr 30, 2026
ea3915f
refactor: rename definition_kind→engine_kind and executor_kind→engine…
yuzzjj Apr 30, 2026
1ee299b
refactor: update schemas to use EngineKind/RuntimeKind
yuzzjj Apr 30, 2026
9d0ebd8
refactor: update services to route by engine_kind directly
yuzzjj Apr 30, 2026
4152b07
feat: add migration to rename agent kind columns and remap values
yuzzjj Apr 30, 2026
3a20f73
refactor: update frontend types to EngineKind/RuntimeKind
yuzzjj Apr 30, 2026
6f8dbbc
refactor: update all frontend components to use EngineKind/RuntimeKind
yuzzjj Apr 30, 2026
d8d8ddc
refactor: fix remaining definition_kind/executor_kind references and …
yuzzjj Apr 30, 2026
4c57a1e
refactor: split trigger_source into trigger_medium and run_purpose
yuzzjj Apr 30, 2026
fd1ffc4
feat: add alembic migrations for trigger_medium/run_purpose and engin…
yuzzjj Apr 30, 2026
67901e8
chore: remove legacy task assignee fields and update lock files
yuzzjj Apr 30, 2026
a4d8882
refactor: fix remaining trigger_source references across backend and …
yuzzjj Apr 30, 2026
6743c49
refactor: consolidate CLI-based engines into generic CLIEngine and op…
yuzzjj Apr 30, 2026
c02cb9c
refactor: unify agent metadata schemas, update execution backends, an…
yuzzjj May 6, 2026
b11c318
refactor: improve type safety, fix execution logic, and optimize fron…
yuzzjj May 6, 2026
104e466
refactor: clean up execution dispatch typing, consolidate execution c…
yuzzjj May 6, 2026
60e46a5
feat(thread-as-session): P0 — wire thread_id through dispatch + sessi…
yuzzjj May 8, 2026
d263647
feat(thread-as-session): P1-P3 — thread-keyed container pool + uncond…
yuzzjj May 8, 2026
4d8c8c2
feat(thread-as-session): P4 — Task owns its Thread (NOT NULL, synchro…
yuzzjj May 8, 2026
98bac03
feat(thread-as-session): P5 — CLI session recovery with raw-history r…
yuzzjj May 8, 2026
b9323eb
feat(thread-as-session): P6 — Turn Timeline for cross-turn observatio…
yuzzjj May 9, 2026
0bc5121
fix: update database schema migration to handle foreign key dependenc…
yuzzjj May 9, 2026
cbb6b35
refactor(thread-as-session): address code review findings
yuzzjj May 9, 2026
922e952
refactor(thread-as-session): follow-up review cleanup
yuzzjj May 9, 2026
8ec2a42
perf(thread-as-session): debounce ContainerPool last_active_at writes
yuzzjj May 9, 2026
e048fc7
refactor(otel): unify trace context to global OTel TracerProvider
yuzzjj May 19, 2026
0977b1f
refactor(otel): follow-up improvements from code review
yuzzjj May 19, 2026
eddc0d0
fix(otel): simplify review — BucketRegistry API cleanup and safety fixes
yuzzjj May 19, 2026
23f9445
feat(otel): configurable OTLP exporter + unified HTTP/WebSocket tracing
yuzzjj May 19, 2026
0a18ba5
fix(otel): close session in _update_trace_row to prevent connection leak
yuzzjj May 19, 2026
6e1471f
fix(otel): final systemic review fixes
yuzzjj May 19, 2026
c70b051
feat(otel): align execution OTel trace_id with business execution.id
yuzzjj May 19, 2026
1f50af7
chore: remove all Langfuse residuals
yuzzjj May 19, 2026
3212f87
refactor(orchestrator): unify _create_and_fire / _create_and_fire_dra…
yuzzjj May 19, 2026
402c539
fix(orchestrator): restore override validation + remove dead import
yuzzjj May 19, 2026
bdd5bb7
refactor(ports): dependency inversion for core/engine → services
yuzzjj May 19, 2026
5422a76
refactor(ports): batch 2 — coordinator_tools + memory manager depende…
yuzzjj May 19, 2026
b2a7b8a
refactor(ports): batch 3 — sandbox, skill, MCP dependency inversion
yuzzjj May 19, 2026
650809e
fix(ports): simplify review — preload_skills bookkeeping bug + cleanup
yuzzjj May 19, 2026
1dad441
refactor(lifecycle): extract ExecutionLauncher from orchestrator
yuzzjj May 19, 2026
725008e
fix(lifecycle): ctx safety + extract _publish_launch_failure
yuzzjj May 19, 2026
7953782
refactor(lifecycle): replace 3 untyped callback fields with ContextEv…
yuzzjj May 19, 2026
15f7f2c
fix(spawn): add Trace/Collector to child executions + data integrity …
yuzzjj May 19, 2026
56b9bc3
refactor: replace stringly-typed trigger_medium/run_purpose with StrEnum
yuzzjj May 19, 2026
8eedeb1
chore: remove unused CopilotPort + add ContextEventBridge to ports ex…
yuzzjj May 19, 2026
787ee33
fix: simplify review — eliminate redundant queries + cleanup
yuzzjj May 19, 2026
1db0d4b
fix(launcher): use fresh session for error recovery — closed db bug
yuzzjj May 19, 2026
68c0bd1
fix: edge case hardening — shutdown flush, retry locking, trace reaper
yuzzjj May 19, 2026
95ead1a
docs: add architecture documentation for execution lifecycle, OTel, a…
yuzzjj May 19, 2026
119d277
fix: unify contract terminology across backend and frontend
yuzzjj May 19, 2026
175e8c9
refactor: P2/P3 cleanup — remove dead code, fix naming, relocate misp…
yuzzjj May 19, 2026
8baed03
refactor(base_agent): remove get_default_model and legacy model params
yuzzjj May 19, 2026
cd56632
chore: deep cleanup — unused imports, dead code, stale aliases, lint …
yuzzjj May 19, 2026
d7bb511
fix(ports): align Protocol signatures with implementations — mypy 0 e…
yuzzjj May 19, 2026
3223fcc
docs: rewrite ARCHITECTURE.md to match actual codebase
yuzzjj May 19, 2026
aa848a1
docs: sync remaining stale docs with codebase
yuzzjj May 19, 2026
3289e06
fix(frontend): align AgentRun type with backend schema
yuzzjj May 19, 2026
f578c73
feat(conductor): add models, schemas, migrations, and plan for 1:1 pa…
May 20, 2026
21cef71
feat(conductor): batch 2 – service layer parity with Rust
May 20, 2026
9fbaf48
feat(conductor): batch 3 – API routes, gRPC, sandbox providers, confi…
May 20, 2026
ad95aca
feat(conductor): batch 4 – VaultCipher enc: prefix and SSE payload fl…
May 20, 2026
88b403b
add multi cli claudecode/codex
May 26, 2026
ff2ad23
add cc/codex
May 29, 2026
eff150f
feat(orchestrator): add unified OrchestratorError hierarchy (Rust par…
Jun 11, 2026
2b64013
feat(orchestrator): batch 1 – error hierarchy, VaultCipher, EventEnve…
Jun 11, 2026
7f77f92
feat(orchestrator): batch 2 – config, HarnessInput, provider types, E…
Jun 11, 2026
62671d1
feat(orchestrator): batch 3 – command listener, redis coordinator, qu…
Jun 11, 2026
d03addc
feat(orchestrator): batch 4 – builder, memory sync, orphan sweep, gRP…
Jun 11, 2026
e352b58
feat(orchestrator): batch 5 – gRPC fixes: grace period, reconnect, cl…
Jun 11, 2026
1f85b60
fix(migration): fix indentation in initial schema migration (8→4 spaces)
Jun 11, 2026
0f38fb4
fix(migration): suppress Pyright false positive for alembic.op import
Jun 11, 2026
c04ea26
fix(orchestrator): CRITICAL fixes – cancel status, reconnect NameErro…
Jun 11, 2026
212e64d
fix(orchestrator): IMPORTANT fixes I1-I5 – gRPC server behavior parity
Jun 11, 2026
c5fab77
fix(orchestrator): IMPORTANT fixes I10-I15 – controller/resolver/buil…
Jun 11, 2026
6ee32fe
fix(orchestrator-rs): fix Rust-side bugs C4, C6, I9, I12, I16
Jun 11, 2026
1649c5e
fix(orchestrator): fix typo in InternalError docstring
Jun 11, 2026
755049e
fix(frontend): default redirect after login to /managed/quickstart in…
Jun 11, 2026
ff615be
feat(frontend): add rich text copy button to agent message detail panel
Jun 11, 2026
4f55f15
fix(deadlock): prevent PostgreSQL deadlock in session event writes
Jun 11, 2026
23d4c3e
chore: clean up mock code in production paths
Jun 11, 2026
0a35379
security: add centralized SSRF protection across all outbound HTTP re…
Jun 11, 2026
f69df05
fix(ssrf): allow HTTP by default, block dangerous IPs ary defense
Jun 11, 2026
21ca879
fix(ssrf): allow private IPs by default, only block cloud metadata
Jun 11, 2026
00d799a
feat: add URL scheme validation (http/https) to all MCP and model URL…
Jun 11, 2026
264fd41
feat: complete URL scheme validation for all user-controlled URL inputs
Jun 11, 2026
fdadfe7
fix(ssrf): critical bug — SSRFError swallowed by except ValueError
Jun 11, 2026
f85482a
fix(frontend): reduce redundant HTTP polling when SSE is connected
Jun 11, 2026
c0c48ec
fix(frontend): stop session polling when SSE is connected, update sta…
Jun 11, 2026
f632e21
fix(sse): fix 4 SSE architecture issues for service-split deployment
Jun 11, 2026
be2b5e2
fix(frontend): move useSessionStream before useQuery to fix TDZ error
Jun 11, 2026
936c07f
perf(sse): run persist and broadcast concurrently in EventBus
Jun 11, 2026
934f8b5
fix(grpc): Python stability fixes from gRPC audit
Jun 11, 2026
9b9cf54
fix(grpc): MEDIUM stability fixes — keepalive, double-registration, R…
Jun 11, 2026
815e26d
chore: sync service split updates
Jun 12, 2026
840e213
feat: add native engine, SSO auto-login, agent model display, and sec…
GLei16 Jun 17, 2026
3606c6d
chore: ignore backend/data/ directory (runtime user uploads)
GLei16 Jun 17, 2026
80ed938
chore: ignore scripts/, logs/, backend/{tests,scripts,logs,docs}/
GLei16 Jun 17, 2026
801cf9c
chore: update deployment image configuration
GLei16 Jun 17, 2026
1c5de01
feat: managed-agents parity — repo mount, skill versions, tool authz,…
GLei16 Jun 22, 2026
0fb2766
refactor: v1 cleanup + joysafeter_ naming + skill LLM scan
GLei16 Jun 26, 2026
484a9e8
add agent diff
GLei16 Jun 30, 2026
3d962c9
feat: AI skill authoring — LLM-powered skill creation, code editor, v…
GLei16 Jul 2, 2026
dbe2f0c
feat(docs): add unified event model architecture diagram
yuzzjj Jul 2, 2026
ec11a5b
feat: Add tutorial for building and running an Agent; remove outdated…
yuzzjj Jul 2, 2026
431252b
feat(resilience): task submission idempotency (Foundation 2 / P0-1)
yuzzjj Jul 2, 2026
561c28b
Update README and architecture documentation for JoySafeter
yuzzjj Jul 2, 2026
855b5af
docs: embed managed-agent architecture infographic in READMEs
yuzzjj Jul 2, 2026
3dd5778
Refactor imports and clean up unused code across multiple modules
yuzzjj Jul 2, 2026
feaceb4
fix(resilience): idempotent session-event insert (Foundation 2 / P0-2)
yuzzjj Jul 2, 2026
29d3777
feat(resilience): dead-letter cap on event-stream poison messages (Fo…
yuzzjj Jul 2, 2026
9d3a876
feat(resilience): backpressure to DB fallback on event-stream overflo…
yuzzjj Jul 2, 2026
3dd4234
Refactor code for improved readability and maintainability
yuzzjj Jul 2, 2026
4253555
feat(resilience): running-task lease + fast reclaim (Foundation 1 / P…
yuzzjj Jul 2, 2026
8a1e702
fix(doc): remove unnecessary blank lines for improved readability
yuzzjj Jul 2, 2026
ea05486
Refactor code for improved readability and consistency across multipl…
yuzzjj Jul 2, 2026
a5c3c88
feat(resilience): task owner_epoch fencing token (Foundation 1 / fenc…
yuzzjj Jul 2, 2026
a493dc1
fix(resilience): deliver remote HITL input on the channel the runner …
yuzzjj Jul 3, 2026
4b2fe6a
refactor(resilience): single lock-guarded writer for the runner gRPC …
yuzzjj Jul 3, 2026
c831778
feat(tenancy): per-project concurrent-task admission control (Foundat…
yuzzjj Jul 3, 2026
cfcc4f7
docs: align documentation with v2 codebase
yuzzjj Jul 3, 2026
861589e
Merge branch 'worktree-20260703' into joysafeter-v2
yuzzjj Jul 3, 2026
9eec29f
feat(tenancy): enforce per-sandbox CPU/memory limits (Foundation 3)
yuzzjj Jul 3, 2026
fe03503
feat(resilience): event-persistence durability + health snapshots (Fo…
yuzzjj Jul 6, 2026
e282058
feat(integrity): guard resources against mutation while active tasks …
yuzzjj Jul 6, 2026
5479d88
feat(tenancy): denormalize submitter identity (user_id/org_id) onto t…
yuzzjj Jul 6, 2026
ec2d859
feat(resilience): task-scoped session status + epoch fencing everywhe…
yuzzjj Jul 6, 2026
f74e2d0
feat(resilience): acknowledge remote HITL commands from the command l…
yuzzjj Jul 6, 2026
8a4fb1c
feat(api): user.message idempotency, per-user admission, confirmed HI…
yuzzjj Jul 6, 2026
2d4d9b9
feat(frontend): send Idempotency-Key on user.message send
yuzzjj Jul 6, 2026
409fcf8
fix(tenancy): scope per-user admission to human principals, not servi…
yuzzjj Jul 6, 2026
c29f47b
fix(resilience): route provisioning-timeout recovery through failover
yuzzjj Jul 6, 2026
a242e6c
fix(integrity): archive agent and its sessions atomically
yuzzjj Jul 6, 2026
45cc3a4
refactor(resilience): single path for backfilling a missing agent.mes…
yuzzjj Jul 6, 2026
43da985
refactor(grpc): extract shared task-scoped status-event emitter
yuzzjj Jul 6, 2026
d237552
refactor(grpc): drop redundant coordinator param from status emitter
yuzzjj Jul 6, 2026
98b242d
refactor(events): single source of truth for bus status-routing event…
yuzzjj Jul 6, 2026
ae09181
refactor(events): single source for the session advisory-lock key
yuzzjj Jul 6, 2026
a670d84
fix(frontend): use generateUUID() for idempotency key to satisfy no-r…
yuzzjj Jul 6, 2026
c37d45c
feat(errors): propagate structured errors with trace IDs end-to-end
yuzzjj Jul 6, 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
  •  
  •  
  •  
36 changes: 36 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Root build context is only used by claudecode/codex runtime images.
# Keep it small so Docker does not send frontend node_modules, backend venv,
# local Rust targets, logs, or other large development artifacts.
*
!sandbox-runner/
!sandbox-runner/**
!proto/
!proto/**
!backend/
!backend/app/
!backend/app/joysafeter_orchestrator_rs/
!backend/app/joysafeter_orchestrator_rs/**
!deploy/
!deploy/docker/
!deploy/docker/**

**/target/
**/.git/
**/.venv/
**/node_modules/
**/__pycache__/
**/.pytest_cache/
**/logs/
**/*.log

# Runtime images copy the prebuilt runner binary from repo-root target/.
!target/
!target/x86_64-unknown-linux-gnu/
!target/x86_64-unknown-linux-gnu/release/
!target/x86_64-unknown-linux-gnu/release/joysafeter-runner
!target/aarch64-unknown-linux-gnu/
!target/aarch64-unknown-linux-gnu/release/
!target/aarch64-unknown-linux-gnu/release/joysafeter-runner
!target/aarch64-unknown-linux-musl/
!target/aarch64-unknown-linux-musl/release/
!target/aarch64-unknown-linux-musl/release/joysafeter-runner
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ If applicable, add screenshots to help explain your problem.
- Browser: [e.g., Chrome 120, Safari 17]
- Python version: [e.g., 3.12.1]
- Node.js version: [e.g., 20.10.0]
- Project version: [e.g., 0.1.0]
- Project version: [e.g., 0.3.2]

## Additional context
Add any other context about the problem here.
Expand Down
6 changes: 1 addition & 5 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ on:

jobs:
# =============================================================================
# Main application images (backend, frontend, openclaw)
# Main application images (backend, frontend)
# Build only (no push) — release.yml handles publishing versioned images
# =============================================================================
build:
Expand All @@ -29,10 +29,6 @@ jobs:
- name: joysafeter-frontend
context: ./frontend
dockerfile: ./deploy/docker/frontend.Dockerfile
- name: joysafeter-openclaw
context: ./deploy/openclaw
dockerfile: ./deploy/openclaw/Dockerfile

steps:
- name: Checkout code
uses: actions/checkout@v4
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,6 @@ jobs:
context: ./frontend
dockerfile: ./deploy/docker/frontend.Dockerfile
push_dockerhub: true
- name: joysafeter-openclaw
context: ./deploy/openclaw
dockerfile: ./deploy/openclaw/Dockerfile
push_dockerhub: false
- name: joysafeter-sandbox
context: ./deploy/docker
dockerfile: ./deploy/docker/sandbox.Dockerfile
Expand Down
106 changes: 37 additions & 69 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ share/python-wheels/
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

Expand All @@ -62,23 +60,10 @@ cover/
*.mo
*.pot

# Crew stuff:
demo_stands/

# Django stuff:
# Logs
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal
db/*sqlite3
*_stand/
backend/logs/*
# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy
backend/app/logs

# Sphinx documentation
docs/_build/
Expand All @@ -87,6 +72,10 @@ docs/_build/
.pybuilder/
target/

# Rust / Cargo build + vendored caches (sandbox-runner)
.cargo-home*/
**/.cargo-home*/

# Jupyter Notebook
.ipynb_checkpoints

Expand All @@ -95,60 +84,33 @@ profile_default/
ipython_config.py

# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
# PEP 582
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
*.env
.env
# .env backups / variants (.env.bak, .env.local, .env.prod, ...). The bare
# `.env`/`*.env` rules above do NOT match `.env.<suffix>`, so list it
# explicitly — these files routinely hold real secrets.
.env.*
**/.env.*
.venv
# env.* 会误伤 backend/alembic/env.py,故只忽略根目录下的 env.*
/env.*
!frontend/lib/core/config/env.ts # 允许前端配置文件
src/ENV/
venv/
ENV/
env/
env.bak/
venv.bak/
.django_venv
.crew_venv
*venv
venvs/
run_program/manager.env
!src/.env
!src/debug.env

Expand All @@ -158,6 +120,24 @@ run_program/manager.env
!env.example
!**/env.example

# Deploy sensitive files (contain real secrets / site-specific config)
deploy/.env.remote.example
deploy/docker-compose.remote.yml

# Docker image archives
/deploy/*.tar
/deploy/docker/claude-code-best-*.tgz

# Runtime data (user uploads, logs)
backend/data/

# Scripts, logs, docs (not for git)
scripts/
logs/
backend/scripts/
backend/logs/
backend/docs/

# Spyder project settings
.spyderproject
.spyproject
Expand All @@ -183,10 +163,6 @@ dmypy.json
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
.idea/

# VSCode
Expand All @@ -195,8 +171,6 @@ cython_debug/
# Logging files
log.txt
.telemetry_log/

backend/langgraph_app.*
backend/app/logs
*.jsonl

Expand All @@ -221,17 +195,11 @@ api_keys.json
.secrets.baseline.scan.json
.secrets.baseline.tmp

# Additional tool
additional_tools/
make_scripts/backups

# Savefiles
**/savefiles

# FRONTEND GIT ignore



# Compiled output
frontend/dist
frontend/tmp
Expand Down Expand Up @@ -281,19 +249,19 @@ frontend/typings
frontend/.DS_Store
Thumbs.db

executions
openai-realtime-console
src/django_app/staticfiles/*


#knowledge data
knowledge/graph_data/
/executions

# IDE/Editor folders
.claude/
.cursor/
.specify/

# File storage
backend/data/files/

# Local Rust orchestrator experiment (do not publish)
backend/app/joysafeter_orchestrator_rs/

deploy/docker/mcp/mcp_servers/jebmcp/jeb
deploy/docker/mcp/mcp_servers/jebmcp/core
deploy/docker/mcp/mcp_servers/jebmcp/logs
43 changes: 24 additions & 19 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@ repos:
- id: ruff-format
files: ^backend/

# Backend - Ruff check (强制检查,不允许错误)
# 注意:此 hook 会检查整个 backend 目录,确保没有 lint 错误
# Backend - Ruff strict check
- repo: local
hooks:
- id: backend-ruff-check
Expand All @@ -39,22 +38,10 @@ repos:
language: system
files: ^backend/.*\.py$
pass_filenames: false
always_run: false # 只在有 Python 文件更改时运行
stages: [commit]
always_run: false
stages: [pre-commit]

# Python - Type checking (mypy runs in Backend CI job only; skipped in pre-commit)
# - repo: https://github.com/pre-commit/mirrors-mypy
# rev: v1.13.0
# hooks:
# - id: mypy
# files: ^backend/app/
# args: [--ignore-missing-imports]
# additional_dependencies:
# - types-requests
# - types-PyYAML

# Frontend - ESLint (强制检查,不允许错误)
# 注意:此 hook 会检查整个 frontend 目录,确保没有 lint 错误
# Frontend - ESLint + TypeScript type-check + Prettier format check
- repo: local
hooks:
- id: frontend-lint
Expand All @@ -63,8 +50,26 @@ repos:
language: system
files: ^frontend/.*\.(ts|tsx|js|jsx)$
pass_filenames: false
always_run: false # 只在有前端文件更改时运行
stages: [commit]
always_run: false
stages: [pre-commit]

- id: frontend-type-check
name: Frontend TypeScript Check
entry: bash -c 'cd frontend && bun run type-check || exit 1'
language: system
files: ^frontend/.*\.(ts|tsx)$
pass_filenames: false
always_run: false
stages: [pre-commit]

- id: frontend-format-check
name: Frontend Prettier Check
entry: bash -c 'cd frontend && bun run format:check || exit 1'
language: system
files: ^frontend/.*\.(ts|tsx|js|jsx|json|css|md)$
pass_filenames: false
always_run: false
stages: [pre-commit]

# CI configuration
ci:
Expand Down
8 changes: 6 additions & 2 deletions .pre-commit-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

### 前端检查
1. **ESLint** - JavaScript/TypeScript 代码检查
2. **TypeScript Check** - `tsc --noEmit`
3. **Prettier Format Check** - 检查前端 TS/JS/JSON/CSS/Markdown 格式

### 通用检查
- 行尾空白检查
Expand Down Expand Up @@ -108,7 +110,7 @@ backend/.venv/bin/python -m pre_commit run frontend-lint --all-files
backend/.venv/bin/python -m pre_commit run --all-files
```

### 问题:`uv run ruff check` 找不到命令
### 问题:`backend/.venv/bin/ruff check` 找不到命令

**解决方案:**
1. 确保已安装 uv:`curl -LsSf https://astral.sh/uv/install.sh | sh`
Expand Down Expand Up @@ -150,8 +152,10 @@ backend/.venv/bin/python -m pre_commit install --install-hooks
配置文件:`.pre-commit-config.yaml`

主要配置:
- **后端 Ruff Check**: 使用 `uv run ruff check .` 检查整个 backend 目录
- **后端 Ruff Check**: 使用 `backend/.venv/bin/ruff check .` 检查整个 backend 目录
- **前端 ESLint**: 使用 `bun run lint` 检查整个 frontend 目录
- **前端 TypeScript Check**: 使用 `bun run type-check`
- **前端 Prettier Check**: 使用 `bun run format:check`
- 两个检查都设置为 `always_run: false`,只在相关文件更改时运行

## 最佳实践
Expand Down
1 change: 1 addition & 0 deletions .tmp/api.pid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
74225
1 change: 1 addition & 0 deletions .tmp/orchestrator.pid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
74226
1 change: 1 addition & 0 deletions .tmp/worker.pid
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
74227
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this

- Docker 构建流程优化:限制为仅构建,仅在 release 时推送镜像
- 新增 Docker Hub 双推送支持(ghcr.io + docker.io)
- 移除 MCP 镜像并跳过 openclaw 的 DockerHub 推送
- 移除 MCP 镜像并跳过 DockerHub 推送

### 其他

Expand Down Expand Up @@ -243,7 +243,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this
### System Architecture

- **Multi-Tenant Sandbox Engine**
- Strict per-user isolation for code execution environments (OpenClaw)
- Strict per-user isolation for code execution environments
- Guarantees data sovereignty and prevents state leakage between concurrent sessions

- **Glass-Box Observability**
Expand Down
Loading
Loading