Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
7d25060
Merge pull request #16 from CacinieP/test/add-comprehensive-test-suite
ZouR-Ma Jun 11, 2026
a473ad8
Merge main into command policy hardening
luochen211 Jun 11, 2026
adf0a33
Merge pull request #2 from luochen211/codex/test-command-policy
ZouR-Ma Jun 11, 2026
e1a0407
Add Windows voice install support
luochen211 Jun 10, 2026
b4b6a69
Tighten Windows CI and launcher docs
luochen211 Jun 10, 2026
1b54ef1
Run Windows workflow on branch pushes
luochen211 Jun 10, 2026
0392d4c
Fix package builds on Windows
luochen211 Jun 10, 2026
624b422
Fix Windows tsx import URLs
luochen211 Jun 10, 2026
1245c61
Fix Windows pnpm command invocation
luochen211 Jun 10, 2026
100c5ba
Align Windows tests with shared CI
luochen211 Jun 11, 2026
20a6848
Fix workspace config path test on Windows
luochen211 Jun 11, 2026
7b72b4a
Harden destructive command policy matching
luochen211 Jun 11, 2026
8ab3fdc
Merge pull request #12 from luochen211/codex/windows-voice-install-su…
ZouR-Ma Jun 11, 2026
0cf7fe9
chore: add PR review decision guide and freeze README/.gitignore edits
ZouR-Ma Jun 12, 2026
504a3bb
Fix smart compaction abort handling (#18)
xy200303 Jun 12, 2026
60537fc
feat: expand test coverage with 33 new test files and refine vitest c…
knqiufan Jun 12, 2026
cb15503
feat: add swarm plugin and AgentSwarm tool
Daiyimo Jun 12, 2026
67f49e6
feat: support per-swarm subagent model override
Daiyimo Jun 12, 2026
0658356
docs: update swarm reminder with status tools
Daiyimo Jun 12, 2026
9557a47
test: fix swarm test dedup and add getSwarmMode coverage
Daiyimo Jun 12, 2026
a456773
docs: fix pr-review-decision formatting
Daiyimo Jun 12, 2026
5e1f0c2
feat: always enable OpenTUI in current build
Daiyimo Jun 12, 2026
6c9ec34
chore: ignore docs/compose local plan docs
Daiyimo Jun 12, 2026
67fb0ad
review(pr-30): fix race conditions, add logger, expand AgentSwarm par…
Daiyimo Jun 13, 2026
b5a3890
fix: wire up swarm mode — register plugin, add /swarm command, auto-exit
Daiyimo Jun 18, 2026
8456a22
merge: sync upstream main to resolve CI conflicts
Daiyimo Jun 18, 2026
0fbd1aa
fix: remove STEP_CLI_ENABLE_OPENTUI build gate completely
Daiyimo Jun 18, 2026
ce22d41
fix(tui): 修复 TUI 闪退、/swarm 失效、滚动失效三个问题
Daiyimo Jun 24, 2026
4795b47
fix(ci): knip 忽略误报的 agent-sdk 依赖和 rg 外部二进制
Daiyimo Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions knip.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,16 @@ const config: KnipConfig = {
// (see realtime-vad-silero/silero-adapter.ts); knip can't see the indirect
// specifier.
"avr-vad",
// @step-cli/agent-sdk is consumed by extensions/realtime-voice (not matched by
// the root workspace's src/**/*.ts project glob), so knip flags it as unused
// from the root perspective even though it is a valid workspace dependency.
"@step-cli/agent-sdk",
],
ignoreIssues: {
// rg (ripgrep) is an external system binary spawned by shell-tools.ts;
// not a Node.js package binary declared in package.json.
"packages/core/src/tools/native-impls/shell-tools.ts": ["binaries"],
},
ignoreExportsUsedInFile: true,
treatConfigHintsAsErrors: false,
};
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
"dependencies": {
"@opentui/core": "^0.1.90",
"@opentui/react": "^0.1.90",
"@step-cli/agent-sdk": "workspace:*",
"@step-cli/core": "workspace:*",
"@step-cli/llm": "workspace:*",
"@step-cli/mcp": "workspace:*",
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/agent/harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ export interface AgentHarnessOptions {
allowedTools?: string[];
hooks?: AgentLoopOptions["hooks"];
signal?: AbortSignal;
model?: string;
}

export interface AgentHarnessState {
Expand Down Expand Up @@ -450,7 +451,7 @@ export class AgentHarnessFactory {
}

const agent = new AgentLoop({
model: this.model,
model: options.model ?? this.model,
client: this.client,
memory,
tools,
Expand Down
20 changes: 20 additions & 0 deletions packages/protocol/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1065,6 +1065,22 @@ export interface StepCliSessionClarificationSubmissionResult {
response: UserClarificationResponse;
}

/**
* Result of executing a slash command through the gateway.
*
* - `handled`: Whether the gateway recognized and handled the command.
* - `message`: Human-readable summary of the command result (may be null when
* the gateway already displayed output via the interactive UI).
* - `taskText`: When non-null, the caller should submit this text as a regular
* prompt (e.g. `/swarm <task>` enters swarm mode and returns the task text
* for the caller to run through the normal turn queue).
*/
export interface StepCliSlashCommandResult {
handled: boolean;
message: string | null;
taskText: string | null;
}

export interface StepGateway {
listSessions(): Promise<StepCliSessionDescriptor[]>;
getSession(sessionId: string): Promise<StepCliSessionDescriptor | null>;
Expand Down Expand Up @@ -1122,6 +1138,10 @@ export interface StepGateway {
prompt: string | UserTurnInput,
signal?: AbortSignal,
): Promise<StepCliSessionRunResult>;
executeSlashCommand(
sessionId: string,
commandLine: string,
): Promise<StepCliSlashCommandResult>;
getPendingClarification(
sessionId: string,
): Promise<StepCliSessionClarificationResult | null>;
Expand Down
8 changes: 8 additions & 0 deletions packages/sdk/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type {
StepCliSessionDescriptor,
StepCliSessionRunResult,
StepCliSessionSnapshotResult,
StepCliSlashCommandResult,
StepCliSessionWakeReceipt,
StepCliSessionWakeRequest,
StepCliStartGoalRequest,
Expand Down Expand Up @@ -117,6 +118,13 @@ export class StepCliSdk {
return await this.gateway.runPrompt(sessionId, prompt, signal);
}

async executeSlashCommand(
sessionId: string,
commandLine: string,
): Promise<StepCliSlashCommandResult> {
return await this.gateway.executeSlashCommand(sessionId, commandLine);
}

async getPendingClarification(
sessionId: string,
): Promise<StepCliSessionClarificationResult | null> {
Expand Down
Loading
Loading