Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
af75511
feat: local Docker sandbox infrastructure (1/3)
mdear Apr 13, 2026
6f53e8b
feat: A2A agent inner loop framework (2/3)
mdear Apr 13, 2026
aa2a841
feat: chat A2A inner loop, council routing, compaction authority (3/3)
mdear Apr 13, 2026
b775efc
feat(a2a): validate model steering and harden Copilot flows
mdear Apr 15, 2026
85db640
feat(a2a): image retention across turns, sandbox lifecycle hardening,…
mdear Apr 17, 2026
9e1379c
feat(a2a): chat sidecar architecture, Opus 4.7 model, sandbox hardening
mdear Apr 19, 2026
52f2682
feat(a2a): long-horizon adapter timeouts, Opus 4.7 adaptive thinking,…
mdear Apr 19, 2026
5cd707e
fix: route agent sessions to per-sandbox adapter, not shared sidecar
mdear Apr 19, 2026
468cb7a
refactor(a2a): separate sidecar from per-sandbox adapter; gate on inn…
mdear Apr 19, 2026
8a360bb
sandbox: prewarm pool, host monitor, lifecycle hardening, platform he…
mdear Apr 24, 2026
432d520
feat(sandbox): MCP handoff, noVNC URL decoration, pool health endpoin…
mdear Apr 25, 2026
590988f
sandbox: stop escalating to root for skill deployment under /workspace
mdear Apr 26, 2026
94fb301
sessions: add three-phase purge driver + storage reaper (flag-gated)
mdear Apr 27, 2026
f16328f
sessions: harden purge subsystem (SAR, invariants, mutation gating)
mdear Apr 29, 2026
9ba1240
sessions/purge: harden invariant subsystem with three-tier enforcement
mdear Apr 29, 2026
ef22b43
cron: host-aware misfire tuning so VM suspends don't drop scheduled jobs
mdear Apr 30, 2026
fa26339
local-dev usability + two silent-failure agent fixes
mdear May 11, 2026
b1867dc
a2a/copilot: split per-turn timeout into absolute + activity (idle) t…
mdear May 12, 2026
d68d01a
attachments: preserve original filename through download path
mdear May 20, 2026
04489e5
mcp settings: call repo.save() instead of nonexistent repo.create()
mdear May 22, 2026
3f80996
agent: make native LLM streaming cancellable & visible
mdear May 27, 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
  •  
  •  
  •  
8 changes: 7 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
# NOTE: keep _path_in_target_image() in scripts/stack_control.sh in sync
# with these patterns. The script mirrors them in a global exclusion block
# so `verify` doesn't hash files that don't actually ship in any image.
frontend/node_modules
workspace/
.env
.venv
*.db
*.json
*.xml
*.xml
# Allow build manifests to be COPY'd into images (written by stack_control.sh
# before each build; per-target name avoids races during parallel builds).
!build-manifest-*.json
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@ VITE_API_URL=http://localhost:8000
# API type values (in params.api_type): vertex_ai | azure | bedrock | null

# ─── Sandbox (optional — needed for code execution) ──────────────
# Provider: e2b (cloud) | docker (local containers) | local (bare metal)
# For Docker sandbox or A2A inner loop, use the Docker stack instead:
# cp docker/.stack.env.local.example docker/.stack.env.local
# ./scripts/stack_control.sh start
# SANDBOX_PROVIDER=e2b
# SANDBOX_E2B_API_KEY=

Expand Down
45 changes: 45 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Do not use base docker compose commands to do any kind of stack operations.
# Instructions on restarting and rebuilding the stack:
# Use the following tool preferentially :
scripts/stack_control.sh

# Use the following tool to determine which containers (if any) require a rebuild and why:
/scripts/stack_control.sh verify

# Other scripts are also available to you under:
scripts/local/*

# Credentials are available in
docker/.stack.env.local

# Python venv is located in
~/workspaces/venvs/ii-agent

# When creating new design docs, place then in docs/design-docs rather than creating them within agentic memory storage.

# When creating new test docs, place then in docs/test-docs rather than creating them within agentic memory storage.

# When creating new implementation docs, place then in docs/impl-docs rather than creating them within agentic memory storage.

# Logging — loguru vs stdlib (READ THIS BEFORE WRITING OR REVIEWING ANY logger.* CALL)
#
# `ii_agent.core.logger` and `loguru.logger` use BRACE-STYLE formatting `{}`.
# `ii_agent_tools.logger` and `ii_server.logger` use STDLIB %-STYLE `%s`.
#
# In a loguru file, `logger.info("foo %s bar", x)` does NOT interpolate. The
# message renders literally as `foo %s bar` and the extra positional arg is
# silently dropped. This has caused production debugging failures multiple
# times (sandbox claim logs showing `row=%s slot=%s session=%s`).
#
# Rules:
# - In files that import `from ii_agent.core.logger import logger` or
# `from loguru import logger`: use f-strings or `{var}` placeholders with
# `.format()`/keyword args. NEVER `%s`, `%d`, `%r` with positional args.
# OK: logger.info(f"Claimed slot {slot} for session {sid}")
# OK: logger.info("Claimed slot {} for session {}", slot, sid)
# BAD: logger.info("Claimed slot %s for session %s", slot, sid)
# - In files that import `from ii_agent_tools.logger import get_logger` or
# `from ii_server.logger import get_logger`: use stdlib `%s`/`%d` style.
# OK: logger.info("Claimed slot %s for session %s", slot, sid)
# - When migrating a file from stdlib to loguru (or vice versa), audit
# EVERY `logger.*` call in that file at the same time.
Loading