Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
1661511
feat: port 7 Claude harness patterns into Qwen Code fork
Mar 31, 2026
00ac46f
Merge feat/claude-harness-patterns: 7 Claude harness patterns
Mar 31, 2026
126a873
fix: update subagent-manager tests for verify builtin agent
Mar 31, 2026
2816753
fix: update compiled JS subagent-manager test for verify builtin agent
Mar 31, 2026
83cea96
fix: test suite reliability — pid isolation, wasm vendor, eslint globals
Mar 31, 2026
06b6ac6
fix: exclude compiled .test.js duplicates from vitest, add core .giti…
Mar 31, 2026
2956103
fix: exclude compiled .test.js from CLI vitest, update HistoryReplaye…
Mar 31, 2026
c656996
fix: prod build — vscode-ide-companion local eslint config for subdir…
Mar 31, 2026
d60cfbd
feat: observability — Langfuse tracing, OTel pipeline spans, build hy…
Mar 31, 2026
6576b71
feat: load .claude files as context alongside .qwen
Mar 31, 2026
797c147
feat: bundle superpowers skills and bootstrap at session start
Mar 31, 2026
605bc9e
chore: rename binary from qwen to quad
Mar 31, 2026
db127d7
fix: flatten superpowers skills into bundled dir so skill loader find…
Mar 31, 2026
7312392
feat: replace QWEN ASCII logo with QUAD, update header title
Apr 1, 2026
566d425
feat: auto-discover Claude Code plugin commands from ~/.claude/plugins
Apr 1, 2026
013e660
feat: rebrand to proto with larry3d ASCII, beads_rust tasks, and MCP …
Apr 1, 2026
9623ed4
fix: spinner stuck after model finishes when tools complete during st…
Apr 1, 2026
c5cbde4
feat: rename config dir from .qwen to .proto, update AGENTS.md, fix l…
Apr 1, 2026
b89622f
feat: remove Java SDK, add quickstart guide for OpenAI-compatible end…
mabry1985 Apr 1, 2026
bece991
feat: file-per-memory system with YAML frontmatter and MEMORY.md index
Apr 1, 2026
25277b6
feat: background memory extraction agent and staleness tracking
Apr 1, 2026
9e6c4c2
feat: /memory list and /memory forget commands, drop migration
Apr 1, 2026
875252c
docs: add memory system to README and AGENTS.md
Apr 1, 2026
d057f09
feat: QueryGuard concurrency + queue-aware cancel for mid-stream mess…
Apr 1, 2026
59d968a
feat: inject queued messages mid-turn between tool calls
Apr 1, 2026
abc0897
refactor: replace useRef bridge with useSyncExternalStore queue
Apr 1, 2026
b7e0d36
feat: pre-flight baseline check at session start
Apr 1, 2026
30cfe0a
feat: post-edit verification — separate evaluator pattern
Apr 1, 2026
a6dce52
feat: harness engineering patterns — prompts, compression, extraction…
Apr 1, 2026
1d2f9c6
feat: add proto files
Apr 1, 2026
80f434a
feat: agentOnly skill flag + skill loading feedback
Apr 1, 2026
223736a
feat: rewire memory consolidation for file-per-memory system
Apr 1, 2026
64c23df
feat: session notes — structured checkpoint for work continuity
Apr 1, 2026
1941e64
fix: update VS Code settings schema for memory consolidation rename
Apr 1, 2026
e7111c2
feat: background agent spawning (Phase 3a)
Apr 1, 2026
157f4dd
feat: shared task list with claim/unclaimed support (Phase 3b)
Apr 1, 2026
99e7fcb
feat: inter-agent mailbox for team messaging (Phase 3c)
Apr 1, 2026
e0d9d6c
feat: coordinator agent + coding standards skill (Phase 3d)
Apr 1, 2026
56ddfff
feat: team lifecycle hooks — TeammateIdle, TaskCreated, TaskCompleted…
Apr 1, 2026
c15181f
feat: team config + lifecycle + /team command (Phase 3f)
Apr 1, 2026
989f9ac
feat: tool summary labels for UI display (Phase 4)
Apr 1, 2026
24b30f6
feat: hooks and subagents parity with Claude Code
Apr 1, 2026
95555af
docs: update hooks, sub-agents, changelog for v0.0.15 features
Apr 1, 2026
9d333d5
docs: rewrite hooks and sub-agents docs following Diataxis principles
Apr 1, 2026
79076cd
feat: merge in-session cron scheduling from upstream
Apr 1, 2026
a2e2783
feat(sdk): expose CLI pass-through options in QueryOptions
Apr 1, 2026
bd25863
feat(sdk): wire hook callbacks and task/memory event types
Apr 1, 2026
db1f88e
docs(sdk): add hook callbacks, task/memory events, CLI pass-through o…
Apr 1, 2026
219af2a
docs(sdk): complete Phase 6 — tools examples, hooks/agents SDK sectio…
Apr 1, 2026
222b13c
fix(skills): parse agentOnly from frontmatter in SkillManager
Apr 1, 2026
ce5bdab
feat(core): enforce read-before-edit for Edit and WriteFile tools
Apr 1, 2026
93374c6
feat(core): per-tool truncation limits for shell, grep, and MCP tools
Apr 1, 2026
159eb81
feat(core): add max_context_tokens to RunConfig for bounded agent con…
Apr 1, 2026
051b4a8
feat(sdk): expose LSP code intelligence via lsp option
Apr 1, 2026
c6899f8
chore: clean up README — remove hero, fix protolabs.studio link
Apr 1, 2026
beb5247
chore: ignore .beads/ task management directory
Apr 1, 2026
e0e7bd9
chore: ignore .proto/ and .worktrees/ local state directories
Apr 1, 2026
466062f
chore: rebrand 'Qwen Code' → 'proto' in user-facing strings
Apr 1, 2026
65fe0f1
fix: update vscode test assertion for proto rebrand
Apr 1, 2026
c97ac70
test(sdk): add E2E integration tests against real proto CLI
Apr 1, 2026
058ff0f
chore: rename package to @protolabs/proto
Apr 1, 2026
16cf448
fix(cli): reduce startup flicker with terminal synchronization
Apr 1, 2026
f27cec0
fix: sync QWEN_DIR in utils/paths.ts to '.proto'
Apr 1, 2026
91128b4
fix: upgrade @lydell/node-pty to 1.2.0-beta.10 to fix PTY FD leak
Apr 2, 2026
d67a166
fix(core): tree-sitter WASM fallback + vendor path probing
Apr 2, 2026
1769601
fix: prevent subagent telemetry from overwriting main agent footer
Apr 2, 2026
fbae84f
fix: allow web fetch approvals in plan mode
Apr 2, 2026
42adb28
fix(cli): enhance KeypressProvider with kitty sequence timeout manage…
Apr 2, 2026
9de56d1
fix(anthropic): omit empty tools array from API requests
Apr 2, 2026
ece9e4b
fix(cli): eliminate startup flicker from model polling + unguarded wr…
Apr 2, 2026
cd4a0d1
docs: migrate to Cloudflare Pages at docs.protolabs.sh
Apr 2, 2026
4df1ab6
chore: rebrand settings schema description to proto
Apr 2, 2026
2d50d7c
Merge feat/sdk-cli-passthrough: SDK parity, ForgeCode improvements, u…
Apr 2, 2026
32b3706
chore(release): bump version to 0.14.0 (SDK 0.2.0)
Apr 2, 2026
e05e87f
chore: replace ✦ prefix with ⟡ across UI and tests
Apr 2, 2026
e20a8a0
feat(cli): promote LSP from experimental to GA
Apr 2, 2026
6430a40
docs: update LSP references from experimental to GA
Apr 2, 2026
467892c
chore: rename package to @protolabsai/proto for npm publish
Apr 2, 2026
471f558
fix: make prepare script tolerant of missing husky
Apr 2, 2026
a1b1dc3
chore: regenerate settings schema with LSP option
Apr 2, 2026
c45eb86
feat: add Harbor Terminal-Bench agent adapter for proto
Apr 2, 2026
afc212e
fix: add ANTHROPIC_BASE_URL default + update README install quickstart
Apr 2, 2026
7c2af4a
fix(harbor): pass --model flag explicitly to proto CLI
Apr 2, 2026
576197e
fix(harbor): read ANTHROPIC_API_KEY from os.environ fallback
Apr 2, 2026
6a61a19
feat(telemetry): comprehensive Langfuse tracing across all providers …
mabry1985 Apr 2, 2026
fb0793e
chore: add CodeRabbit config (#2)
mabry1985 Apr 2, 2026
a6cd875
chore: ignore .infisical.json
mabry1985 Apr 2, 2026
c349475
fix(tasks): native br --parent edges, fix cancelled/output round-trip…
mabry1985 Apr 2, 2026
6ab2e17
docs(prompts): add system prompt guidance for underdocumented tools
mabry1985 Apr 2, 2026
236595b
fix(tests): sync test files to proto rename and API changes (#5)
mabry1985 Apr 2, 2026
c584a1c
chore(ci): remove dead qwen/gemini workflows, rename CI (#6)
mabry1985 Apr 2, 2026
73b5596
feat(core): AgentInteractive multi-turn persistent execution loop (#7)
mabry1985 Apr 2, 2026
89cd1d2
feat(voice): push-to-talk voice input with OpenAI-compatible STT endp…
mabry1985 Apr 2, 2026
ebeaf00
docs: add benchmark competitiveness PRD for terminal-bench-2 gap anal…
mabry1985 Apr 2, 2026
28ff254
feat(core): compaction preserves todo state + workspace stats in syst…
mabry1985 Apr 3, 2026
829e423
test(core): update prompts snapshots for todo preservation + workspac…
mabry1985 Apr 3, 2026
d45f42d
feat(core): external file change detection — notify agent when files …
mabry1985 Apr 3, 2026
56ebb50
test(core): mock execSync in prompts tests for deterministic workspac…
mabry1985 Apr 3, 2026
6ad0f43
feat(core): enforce max_context_tokens with automatic context compaction
mabry1985 Apr 2, 2026
f4c8418
feat(core): persist background agent state to .proto/agents/backgroun…
mabry1985 Apr 2, 2026
d50efdd
chore: add pre-push hook for schema staleness and snapshot warnings
mabry1985 Apr 3, 2026
0e0c2dd
feat(core): web search graceful degradation — timeout + ripgrep fallb…
mabry1985 Apr 3, 2026
8a207eb
feat(core): doom loop warning injection + tool error reflection in Ag…
mabry1985 Apr 3, 2026
d723c5f
feat(ci): auto-release on CI pass — conventional commits drive semver…
mabry1985 Apr 3, 2026
1b5beed
feat(cli): image drag-and-drop with Sharp resize for 4K screenshots (…
mabry1985 Apr 3, 2026
901ecd3
feat(ui): up-arrow dequeues queued messages + image drag-drop (#17)
mabry1985 Apr 3, 2026
63cef9d
fix(ui): copy dropped screenshot to stable dir before agent reads it …
mabry1985 Apr 3, 2026
80a240e
fix: improve /compress split point selection for tool-heavy conversat…
LaZzyMan Mar 25, 2026
e509f28
fix: handle orphaned funcCall and improve compression logic for tool-…
LaZzyMan Mar 30, 2026
2c3beb8
fix: upgrade @lydell/node-pty to 1.2.0-beta.10 to fix PTY FD leak
tanzhenxin Mar 31, 2026
df4fb23
fix(cli): add kitty sequence timeout management and buffer handling i…
qqqys Mar 24, 2026
1915faf
remove hooks experimental and refactor hook Config
DennisYu07 Apr 1, 2026
993aa88
fix(hooks): clean up abort listener in error handler
chinesepowered Apr 2, 2026
6daf6fb
feat(extension): add npm registry support for extension installation
tanzhenxin Mar 27, 2026
d3c0d41
feat(mcp): add reconnect command and implement auto-reconnect logic
mabry1985 Apr 3, 2026
4e34d56
refactor(mcp): enhance reconnect logic and error handling
qqqys Mar 17, 2026
d56ef11
test(mcp): update tests to include verification of reconnect command …
qqqys Mar 18, 2026
39a2f84
feat(cli): add follow-up suggestions feature
mabry1985 Apr 3, 2026
db370e3
fix: post-backport build fixes
mabry1985 Apr 3, 2026
08d0453
fix(tests): update tests for upstream backport changes
mabry1985 Apr 3, 2026
893c61d
fix(tests): harden test assertions per code review
mabry1985 Apr 3, 2026
8657b4d
fix(tests,core): resolve CI failures on upstream backport PR
mabry1985 Apr 3, 2026
c4b9250
fix(extension): harden npm download stream and fix slash encoding
mabry1985 Apr 3, 2026
d6ec21f
feat: upstream backports — MCP reconnect, compress fixes, hooks clean…
mabry1985 Apr 3, 2026
f2df988
chore: release v0.15.0
github-actions[bot] Apr 3, 2026
6161a37
docs: remove IDE integration section, add voice integration setup
mabry1985 Apr 3, 2026
e4052b3
docs: remove hosted STT endpoint reference
mabry1985 Apr 3, 2026
12ac90d
feat(core): cascade context file loading — first match per location wins
mabry1985 Apr 3, 2026
4aac40f
chore: merge main into feat/upstream-backports
Apr 3, 2026
8dadf8f
fix(tests): pin jitter to 0 in cronScheduler no-match test for determ…
Apr 4, 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
  •  
  •  
  •  
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "target": { "kind": "relative", "path": "issues.jsonl" } }
1 change: 1 addition & 0 deletions .beads/.br_history/issues.20260401_030308_900379599.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id":"qwen-code-c43","title":"Test beads task creation","description":"Creating a test task to verify beads_rust backend integration works correctly","status":"open","priority":2,"issue_type":"task","created_at":"2026-04-01T03:03:04.031173943Z","created_by":"josh","updated_at":"2026-04-01T03:03:04.031173943Z","source_repo":".","compaction_level":0,"original_size":0}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "target": { "kind": "relative", "path": "issues.jsonl" } }
1 change: 1 addition & 0 deletions .beads/.br_history/issues.20260401_030322_896696841.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id":"qwen-code-c43","title":"Test beads task creation (IN PROGRESS)","description":"Creating a test task to verify beads_rust backend integration works correctly","status":"in_progress","priority":2,"issue_type":"task","created_at":"2026-04-01T03:03:04.031173943Z","created_by":"josh","updated_at":"2026-04-01T03:03:08.881812144Z","source_repo":".","compaction_level":0,"original_size":0}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "target": { "kind": "relative", "path": "issues.jsonl" } }
1 change: 1 addition & 0 deletions .beads/.br_history/issues.20260401_030325_426242902.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"id":"qwen-code-c43","title":"Test beads task creation (IN PROGRESS)","description":"Creating a test task to verify beads_rust backend integration works correctly","status":"in_progress","priority":2,"issue_type":"task","created_at":"2026-04-01T03:03:04.031173943Z","created_by":"josh","updated_at":"2026-04-01T03:03:22.880996318Z","source_repo":".","compaction_level":0,"original_size":0,"comments":[{"id":1,"issue_id":"qwen-code-c43","author":"GitHub CI","text":"Beads task manager testing completed successfully. All operations verified:\n- task_create: Creates tasks with ID, title, description, priority, statuses\n- task_get: Retrieves task details including subtaskCount\n- task_list: Filters tasks by status correctly\n- task_update: Updates title, status, and other fields\n- task_output: Records output/results to tasks\n- Persistence: Tasks backed by beads_rust (SQLite) persist correctly in .beads/ directory","created_at":"2026-04-01T03:03:22Z"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "target": { "kind": "relative", "path": "issues.jsonl" } }
2 changes: 2 additions & 0 deletions .beads/.br_history/issues.20260401_030325_487915704.jsonl
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"id":"qwen-code-1xg","title":"Test subtask creation","description":"Verify that subtasks work with beads backend","status":"open","priority":3,"issue_type":"task","created_at":"2026-04-01T03:03:25.407525155Z","created_by":"josh","updated_at":"2026-04-01T03:03:25.407525155Z","source_repo":".","compaction_level":0,"original_size":0}
{"id":"qwen-code-c43","title":"Test beads task creation (IN PROGRESS)","description":"Creating a test task to verify beads_rust backend integration works correctly","status":"in_progress","priority":2,"issue_type":"task","created_at":"2026-04-01T03:03:04.031173943Z","created_by":"josh","updated_at":"2026-04-01T03:03:22.880996318Z","source_repo":".","compaction_level":0,"original_size":0,"comments":[{"id":1,"issue_id":"qwen-code-c43","author":"GitHub CI","text":"Beads task manager testing completed successfully. All operations verified:\n- task_create: Creates tasks with ID, title, description, priority, statuses\n- task_get: Retrieves task details including subtaskCount\n- task_list: Filters tasks by status correctly\n- task_update: Updates title, status, and other fields\n- task_output: Records output/results to tasks\n- Persistence: Tasks backed by beads_rust (SQLite) persist correctly in .beads/ directory","created_at":"2026-04-01T03:03:22Z"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ "target": { "kind": "relative", "path": "issues.jsonl" } }
11 changes: 11 additions & 0 deletions .beads/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Database
*.db
*.db-shm
*.db-wal

# Lock files
*.lock

# Temporary
last-touched
*.tmp
4 changes: 4 additions & 0 deletions .beads/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Beads Project Configuration
# issue_prefix: qwen-code
# default_priority: 2
# default_type: task
4 changes: 4 additions & 0 deletions .beads/metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"database": "beads.db",
"jsonl_export": "issues.jsonl"
}
24 changes: 24 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
language: en-US
early_access: false

reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: false
auto_review:
enabled: true
drafts: false
base_branches:
- main

chat:
auto_reply: true

knowledge_base:
learnings:
scope: auto
issues:
scope: auto
103 changes: 103 additions & 0 deletions .github/workflows/auto-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: 'Auto Release'

# Triggers after CI passes on main. Reads conventional commits since the last
# tag, determines the bump type (major/minor/patch), bumps all workspace
# versions, commits, and pushes — which triggers release.yml to publish.
#
# Skips automatically if:
# - All commits since last tag are release commits ("chore: release v*")
# - No commits since last tag
# - The triggering commit is itself a release commit (prevents loops)

on:
workflow_run:
workflows:
- 'CI'
types:
- completed
branches:
- main

permissions: read-all

jobs:
auto-release:
runs-on: ubuntu-latest
if: >-
github.repository == 'protoLabsAI/protoCLI' &&
github.event.workflow_run.conclusion == 'success' &&
github.event.workflow_run.head_branch == 'main'
timeout-minutes: 10
permissions:
contents: write

steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
token: ${{ secrets.GH_PAT || secrets.GITHUB_TOKEN }}

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: npm

- name: Install dependencies
run: npm ci

- name: Determine bump type
id: bump
run: |
BUMP=$(node scripts/determine-bump.js)
echo "type=${BUMP}" >> "$GITHUB_OUTPUT"
echo "Bump type: ${BUMP}"

- name: Skip if nothing to release
if: steps.bump.outputs.type == 'skip'
run: |
echo "No publishable commits since last tag — skipping release."

- name: Skip if triggered by a release commit
if: steps.bump.outputs.type != 'skip'
id: guard
run: |
LAST_MSG=$(git log -1 --pretty=format:%s)
if echo "$LAST_MSG" | grep -qE '^chore: release v'; then
echo "Last commit is a release commit — skipping to avoid loop."
echo "skip=true" >> "$GITHUB_OUTPUT"
else
echo "skip=false" >> "$GITHUB_OUTPUT"
fi

- name: Configure git
if: >-
steps.bump.outputs.type != 'skip' &&
steps.guard.outputs.skip != 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

- name: Bump version
if: >-
steps.bump.outputs.type != 'skip' &&
steps.guard.outputs.skip != 'true'
run: node scripts/version.js ${{ steps.bump.outputs.type }}

- name: Get new version
if: >-
steps.bump.outputs.type != 'skip' &&
steps.guard.outputs.skip != 'true'
id: version
run: echo "version=$(node -p "require('./package.json').version")" >> "$GITHUB_OUTPUT"

- name: Commit and push
if: >-
steps.bump.outputs.type != 'skip' &&
steps.guard.outputs.skip != 'true'
run: |
git add package.json package-lock.json packages/*/package.json
git commit -m "chore: release v${{ steps.version.outputs.version }}"
git push origin main
201 changes: 0 additions & 201 deletions .github/workflows/check-issue-completeness.yml

This file was deleted.

Loading