Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
5347a33
Added ACP support...
prem315 Sep 24, 2026
cf39091
fix(acp): replay conversation history on session/load
prem315 Sep 25, 2026
7c5aec1
chore: merge dev into feature/acp-support
claude Sep 26, 2026
9e6fc40
docs: add ACP integration review report
claude Sep 26, 2026
6972716
refactor: map Effect errors to ACP request errors and clean up module…
prem315 Sep 26, 2026
fce0eb8
Merge branch 'dev' into feature/acp-support
sanchitrk Sep 29, 2026
1988fe7
feat(harness): expose tool call input and plugin load failures as events
sanchitrk Sep 29, 2026
0546993
feat(acp): serve ACP v1 on a vendored Effect-native protocol
sanchitrk Sep 29, 2026
7c7c66c
feat(harness): title sessions from their first prompt
sanchitrk Sep 29, 2026
565a158
feat(acp): announce session titles to the editor
sanchitrk Sep 29, 2026
822db8f
feat(aikit): export getEnvApiKey
sanchitrk Sep 29, 2026
df6f84f
feat(harness): list models by credential with ModelCatalog.available
sanchitrk Sep 29, 2026
2d11b1a
fix(acp): offer models from the harness credential file
sanchitrk Sep 29, 2026
ac82cc6
feat(settings): read custom catalog entries from settings.models
sanchitrk Sep 29, 2026
d986339
feat(acp): offer settings-defined models
sanchitrk Sep 29, 2026
581ac92
feat(harness): persist session model and thinking level
sanchitrk Sep 29, 2026
296a0a0
refactor(acp): read session configuration from the harness
sanchitrk Sep 29, 2026
a5cd11d
fix(aikit): replace images with placeholders for non-vision models
sanchitrk Sep 29, 2026
94e99ce
docs: add @codeworksh/aikit@0.9.3 release notes
sanchitrk Sep 29, 2026
a5fdf9d
release: @codeworksh/aikit@0.9.3
sanchitrk Sep 29, 2026
4006c2a
rm
sanchitrk Sep 29, 2026
9b9a34c
chore
sanchitrk Sep 30, 2026
2607ca6
feat(harness): accept image parts in prompts
sanchitrk Sep 30, 2026
eadbc08
feat(acp): accept image prompts
sanchitrk Sep 30, 2026
2b4deec
test(acp): run live cases against six providers
sanchitrk Sep 30, 2026
c6234e9
test(harness): run live cases against six providers
sanchitrk Sep 30, 2026
2b9d1a3
test(aikit): run OpenRouter suites on three models and Codex from the…
sanchitrk Sep 30, 2026
a661cf4
chore: update AGENTS.md and CLAUDE.md
sanchitrk Sep 30, 2026
2db10a3
refactor(acp): serve over the official ACP SDK
sanchitrk Sep 30, 2026
6d3c55f
test(cli): load .env.local for the ACP live suites
sanchitrk Sep 30, 2026
c1aa54d
test(cli): move the test env loader to test/utils like aikit
sanchitrk Sep 30, 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
Prev Previous commit
Next Next commit
feat(harness): expose tool call input and plugin load failures as events
- ToolStarted carries the call's arguments and the tool's optional label,
  so clients can show what a tool is doing as soon as it starts (COD-85).
- A configured plugin that is not installed now also publishes
  plugin.updated (status "failed") with the message, declaring file and
  session, so clients can show the advice to the user (COD-90).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
  • Loading branch information
sanchitrk and claude committed Sep 29, 2026
commit 1988fe73370be691e7b97dfd75ed284a63ceed08
9 changes: 8 additions & 1 deletion packages/harness/src/event/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,14 @@ export type LLMFailed = typeof LLMFailed.Type;

export const ToolStarted = EventSchema.define({
type: "session.tool.started",
schema: { ...LLMFields, callID: Schema.String, name: Schema.String },
schema: {
...LLMFields,
callID: Schema.String,
name: Schema.String,
/** The tool's display label, when its definition declares one. */
label: optional(Schema.String),
arguments: Schema.Record(Schema.String, Schema.Json),
},
});
export type ToolStarted = typeof ToolStarted.Type;

Expand Down
2 changes: 2 additions & 0 deletions packages/harness/src/runner/loop.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,8 @@ export const layer = (options: Options = {}) =>
messageId,
callID: call.callID,
name: call.name,
label: snapshot.tools.defs.find((def) => def.name === call.name)?.label,
arguments: call.arguments,
});
const handled = yield* snapshot.tools
.handle(call, {
Expand Down
17 changes: 12 additions & 5 deletions packages/harness/src/state/state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -397,11 +397,18 @@ export const layer = (
? one.entry === reference
: "package" in one.entry && one.entry.package === reference,
);
yield* Effect.logWarning(
`plugin ${reference} is configured but not loaded — run \`codework plugin install\`${
where === undefined ? "" : ` (declared in ${where.file})`
}`,
);
const error = `plugin ${reference} is configured but not loaded — run \`codework plugin install\`${
where === undefined ? "" : ` (declared in ${where.file})`
}`;
yield* Effect.logWarning(error);
// The advice is for the user, who may not be reading this process's logs.
yield* eventService.publish(EventList.PluginUpdated, {
status: "failed",
reference,
error,
...(where === undefined ? {} : { file: where.file }),
sessionId,
});
}

const contributions = yield* setup(chosen.selection, {
Expand Down