Skip to content

feat: compact and other improvements#1

Merged
adamdotdevin merged 8 commits intodevfrom
compact
May 2, 2025
Merged

feat: compact and other improvements#1
adamdotdevin merged 8 commits intodevfrom
compact

Conversation

@adamdotdevin
Copy link
Copy Markdown
Member

No description provided.

@adamdotdevin adamdotdevin merged commit 0095832 into dev May 2, 2025
@adamdotdevin adamdotdevin deleted the compact branch May 2, 2025 20:24
aryasaatvik added a commit to aryasaatvik/opencode that referenced this pull request Jun 27, 2025
## Summary
This PR implements dual model support (main + turbo) for cost-optimized
operations and adds model sorting functionality.

### Key Changes

#### Dual Model Support
- Added `turbo_model` and `turbo_cost_threshold` config options
- New dual-pane model selector (Tab to switch panes)
- Visual indicators: ⚡ (turbo), 🧠 (reasoning), 🔧 (tools)
- Smart turbo model selection with fallback logic
- Fixed Anthropic auth showing incorrect turbo status

#### Model Sorting
- Added `release_date` and `last_updated` fields to model schema
- Press 'S' to cycle through sort modes: Name, Last Updated, Release
Date
- Stable multi-level sorting with consistent ordering
- Helps discover newest models and track updates

### Impact
Enables cost optimization for PRs anomalyco#269 (status verbs) and anomalyco#275 (window
titles) to use configured turbo models instead of hardcoded ones.

### Demo



https://github.com/user-attachments/assets/d076e840-d790-4e23-8cf7-a179282d1f0b
rekram1-node pushed a commit to drevantonder/opencode that referenced this pull request Aug 31, 2025
@ghost ghost mentioned this pull request Oct 29, 2025
charles-cooper pushed a commit to charles-cooper/opencode that referenced this pull request Dec 14, 2025
…ompaction

feat: intelligent compaction with model-initiated trigger, handoff prompts, and persistent memory
adolago referenced this pull request in adolago/zee Jan 11, 2026
- Add VoyageEmbeddingProvider for Voyage AI embeddings
- Add MemoryStore with high-level store/search/list API
- Configure Nebius cloud API for Qwen3-Embedding-8B (#1 on MTEB)
- Fix LocalEmbeddingProvider to support both /v1/embeddings and /embeddings
- Fix QdrantVectorStorage to set collection on existing collections

Model: Qwen3-Embedding-8B (70.58 MTEB score, 99% zero-shot, 4096 dims)
Provider: Nebius API (https://api.tokenfactory.nebius.com/v1)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
sjawhar referenced this pull request in sjawhar/opencode Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions
  before clear and calling result.session.sync() after successful bootstrap
- Finding anomalyco#2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and
  generation counter to cancel stale retries when newer disposal arrives
- Finding anomalyco#3: move Instance.provide() inside while loop so each event stream
  reconnect iteration gets fresh context
- Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC
  method; thread calls it only when not in external transport mode
- Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises
- Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
sjawhar referenced this pull request in sjawhar/opencode Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions
  before clear and calling result.session.sync() after successful bootstrap
- Finding anomalyco#2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and
  generation counter to cancel stale retries when newer disposal arrives
- Finding anomalyco#3: move Instance.provide() inside while loop so each event stream
  reconnect iteration gets fresh context
- Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC
  method; thread calls it only when not in external transport mode
- Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises
- Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
sjawhar referenced this pull request in sjawhar/opencode Mar 8, 2026
- Finding #1: re-sync active sessions after disposal by saving fullSyncedSessions
  before clear and calling result.session.sync() after successful bootstrap
- Finding anomalyco#2: cap retries at 5 with exponential backoff (2s/4s/8s/16s/30s) and
  generation counter to cancel stale retries when newer disposal arrives
- Finding anomalyco#3: move Instance.provide() inside while loop so each event stream
  reconnect iteration gets fresh context
- Finding anomalyco#4: remove unconditional startEventStream(process.cwd()); add events RPC
  method; thread calls it only when not in external transport mode
- Finding anomalyco#5: replace manual new Promise+setTimeout with sleep() from node:timers/promises
- Finding anomalyco#6: reload() aborts current event stream and conditionally restarts it
Donwulff added a commit to Donwulff/opencode that referenced this pull request Mar 17, 2026
…mmand-guard

Fill documentation gaps identified by security review:

- security.mdx: add Subprocess Isolation section (OPENCODE_SPAWN_SANDBOX,
  bwrap/unshare mechanism, what is and isn't sandboxed, how to enable);
  add Managed / Enterprise Config section (config precedence ladder,
  /etc/opencode/ as immutable security boundary, container usage,
  --dangerously-open bypass); add Read-Only Commands section (/review
  fully read-only, /learn AGENTS.md-only, blocklist details and
  limitations); add Instruction and Skill URLs note under Tool Execution
- FORK-CHANGES.md: expand Feature anomalyco#1 to cover subprocess sandbox and
  command-guard; add util/fetch.ts, bash.ts, process.ts, flag.ts to key
  files table
- SECURITY-ANALYSIS.md: add command-guard to Current Mitigations table
- tool/AGENTS.md: add Command Guard section documenting assertReadOnlyShell,
  assertLearnPath, assertLearnTask, and the blocklist limitation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jeffreyschultz
Copy link
Copy Markdown

Added --help support to guards command

@jeffreyschultz
Copy link
Copy Markdown

Successfully archived agent-ops-enhancement effort to .agents/planning/archive/agent-ops-enhancement/

Archive includes:

  • planning/ - Complete epic hierarchy with all features and user stories
  • work/ - Decision log and execution outputs

Index automatically updated with completion timestamp.

andreipromarketing-dev pushed a commit to andreipromarketing-dev/opencode that referenced this pull request Apr 7, 2026
feat: add cloud infrastructure security skill
andreipromarketing-dev pushed a commit to andreipromarketing-dev/opencode that referenced this pull request Apr 7, 2026
* feat(commands): add /context-budget optimizer command

Adds a command that audits context window token consumption across
agents, skills, rules, MCP servers, and CLAUDE.md files.

Detects bloated agent descriptions, redundant components, MCP
over-subscription, and CLAUDE.md bloat. Produces a prioritized
report with specific token savings per optimization.

Directly relevant to anomalyco#434 (agent descriptions too verbose, ~26k
tokens causing performance warnings).

* fix: address review feedback on context-budget command

- Add $ARGUMENTS to enable --verbose flag passthrough
- Fix MCP token estimate: 45 tools × ~500 tokens = ~22,500 (was ~2,200)
- Fix heavy agents example: all 3 now exceed 200-line threshold
- Fix description threshold: warning at >30 words, fail at >50 words
- Add Step 4 instructions (was empty)
- Fix audit cadence: "quarterly" → "regularly" + "monthly" consistently
- Fix Output Format heading level under Step 4
- Replace "Antigravity" with generic "harness versions"
- Recalculate total overhead to match corrected MCP numbers

* fix: correct MCP tool count and savings percentage in sample output

- Fix MCP tool count: table now shows 87 tools matching the issues
  section (was 45 in table vs 87 in issues)
- Fix savings percentage: 5,100 / 66,400 = 7.7% (was 20.6%)
- Recalculate total overhead and effective context to match

* fix: correct sample output arithmetic

- Fix total overhead: 66,400 → 66,100 to match component table sum
  (12,400 + 6,200 + 2,800 + 43,500 + 1,200 = 66,100)
- Fix MCP savings: ~1,500 → ~27,500 tokens (55 tools × 500 tokens/tool)
  to match the per-tool formula defined in Step 1
- Reorder optimizations by savings (MCP removal is now anomalyco#1)
- Fix total savings and percentage (31,100 / 66,100 = 47.0%)

* fix: distinguish always-on vs on-demand agent overhead

Agent descriptions are always loaded into Task tool routing context,
but the full agent body is only loaded when invoked. The audit now
measures both: description-only tokens as always-on overhead and
full-file tokens as worst-case overhead. This resolves the
contradiction between Step 1 (counting full files) and Tip 1 (saying
only descriptions are loaded per session).

* fix: simplify agent accounting and resolve inconsistencies

- Revert to single agent overhead metric (full file tokens) — simpler
  and matches what the report actually displays
- Add back 200-line threshold for heavy agents in Step 1
- Fix heavy agents action to match issue type (split/trim, not
  description-only)
- Remove .agents/skills/ scan path (doesn't exist in ECC repo)
- Consolidate description threshold to single 30-word check

* fix: add model assumption and verbose mode activation

- Step 4: assume 200K context window by default (Claude has no way to
  introspect its model at runtime)
- Step 4: add explicit instruction to check $ARGUMENTS for --verbose
  flag and include additional output when present

* fix: handle .agents/skills/ duplicates in skill scan

Skills scan now checks .agents/skills/ for Codex harness copies and
skips identical duplicates to avoid double-counting overhead.

* fix: add savings estimate to heavy agents action for consistency

* feat(skills): add context-budget backing skill, slim command to delegator

* fix: use structurally detectable classification criteria instead of session frequency

---------

Co-authored-by: vazidmansuri005 <vazidmansuri005@users.noreply.github.com>
andreipromarketing-dev pushed a commit to andreipromarketing-dev/opencode that referenced this pull request Apr 7, 2026
* feat: add pending instinct TTL pruning and /prune command

Pending instincts generated by the observer accumulate indefinitely
with no cleanup mechanism. This adds lifecycle management:

- `instinct-cli.py prune` — delete pending instincts older than 30 days
  (configurable via --max-age). Supports --dry-run and --quiet flags.
- Enhanced `status` command — shows pending count, warns at 5+,
  highlights instincts expiring within 7 days.
- `observer-loop.sh` — runs prune before each analysis cycle.
- `/prune` slash command — user-facing command for manual pruning.

Design rationale: council consensus (4/4) rejected auto-promote in
favor of TTL-based garbage collection. Frequency of observation does
not establish correctness. Unreviewed pending instincts auto-delete
after 30 days; if the pattern is real, the observer will regenerate it.

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* fix: remove duplicate functions, broaden extension filter, fix prune output

- Remove duplicate _collect_pending_dirs and _parse_created_date defs
- Use ALLOWED_INSTINCT_EXTENSIONS (.md/.yaml/.yml) instead of .md-only
- Track actually-deleted items separately from expired for accurate output
- Update README.md and AGENTS.md command counts: 59 → 60

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* fix: address Copilot and CodeRabbit review findings

- Use is_dir() instead of exists() for pending path checks
- Change > to >= for --max-age boundary (--max-age 0 now prunes all)
- Use CLV2_PYTHON_CMD env var in observer-loop.sh prune call
- Remove unused source_dupes variable
- Remove extraneous f-string prefix on static string

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>

* fix: update AGENTS.md project structure command count 59 → 60

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: address cubic and coderabbit review findings

- Fix status early return skipping pending instinct warnings (cubic anomalyco#1)
- Exclude already-expired items from expiring-soon filter (cubic anomalyco#2)
- Warn on unparseable pending instinct age instead of silent skip (cubic anomalyco#4)
- Log prune failures to observer.log instead of silencing (cubic anomalyco#5)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: YAML single-quote unescaping, f-string cleanup, add /prune to README

- Fix single-quoted YAML unescaping: use '' doubling (YAML spec) not
  backslash escaping which only applies to double-quoted strings (greptile P1)
- Remove extraneous f-string prefix on static string (coderabbit)
- Add /prune to README command catalog and file tree (cubic)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
flash1293 added a commit to flash1293/opencode that referenced this pull request Apr 9, 2026
chore: prepare elastic-ramen for open source release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants