mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-21 04:00:10 +00:00
Use CompactionResult type for hook compaction return value
- Import CompactionResult in hooks/types.ts - Replace inline type with CompactionResult for SessionEventResult.compaction - Add labels feature to changelog
This commit is contained in:
parent
9e68a59fed
commit
e841942377
3 changed files with 28 additions and 7 deletions
|
|
@ -30,7 +30,8 @@
|
||||||
|
|
||||||
- **Entry IDs**: Session entries now use short 8-character hex IDs instead of full UUIDs
|
- **Entry IDs**: Session entries now use short 8-character hex IDs instead of full UUIDs
|
||||||
- **API key priority**: `ANTHROPIC_OAUTH_TOKEN` now takes precedence over `ANTHROPIC_API_KEY`
|
- **API key priority**: `ANTHROPIC_OAUTH_TOKEN` now takes precedence over `ANTHROPIC_API_KEY`
|
||||||
- **New entry types**: `BranchSummaryEntry` for branch context, `CustomEntry` for hook data
|
- **New entry types**: `BranchSummaryEntry` for branch context, `CustomEntry` for hook data, `LabelEntry` for user-defined bookmarks
|
||||||
|
- **Entry labels**: New `getLabel(id)` and `appendLabelChange(targetId, label)` methods for labeling entries. Labels are included in `SessionTreeNode` for UI/export.
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,30 @@ Questions to resolve:
|
||||||
- [ ] Display labels in UI (tree view, path view) - deferred to UI phase
|
- [ ] Display labels in UI (tree view, path view) - deferred to UI phase
|
||||||
- [ ] `/label` command - deferred to UI phase
|
- [ ] `/label` command - deferred to UI phase
|
||||||
|
|
||||||
|
### CustomMessageEntry<T>
|
||||||
|
|
||||||
|
Hooks can define their own custom message entry types and inject them into the session.
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
export interface CustomMessageEntry<T = unknown> extends SessionEntryBase {
|
||||||
|
type: "custom_message";
|
||||||
|
customType: string; // Hook identifier
|
||||||
|
content: (string | Attachment)[]; // Message content
|
||||||
|
details?: T; // Hook-specific data (like tool result details)
|
||||||
|
display: boolean; // Whether to display in TUI
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Behavior:
|
||||||
|
- [ ] Participates in context and compaction as user messages (after messageTransformer)
|
||||||
|
- [ ] Not displayed as user messages in TUI
|
||||||
|
- [ ] Display options:
|
||||||
|
- `display: false` - hidden entirely
|
||||||
|
- `display: true` - baseline renderer (content with different bg/fg color)
|
||||||
|
- Custom renderer defined by the hook that contributes it
|
||||||
|
- [ ] Define injection mechanism for hooks to add CustomMessageEntry
|
||||||
|
- [ ] Hook registration for custom renderers
|
||||||
|
|
||||||
### HTML Export
|
### HTML Export
|
||||||
|
|
||||||
- [ ] Add collapsible sidebar showing full tree structure
|
- [ ] Add collapsible sidebar showing full tree structure
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
import type { AppMessage, Attachment } from "@mariozechner/pi-agent-core";
|
import type { AppMessage, Attachment } from "@mariozechner/pi-agent-core";
|
||||||
import type { ImageContent, Model, TextContent, ToolResultMessage } from "@mariozechner/pi-ai";
|
import type { ImageContent, Model, TextContent, ToolResultMessage } from "@mariozechner/pi-ai";
|
||||||
import type { CutPointResult } from "../compaction.js";
|
import type { CompactionResult, CutPointResult } from "../compaction.js";
|
||||||
import type { CompactionEntry, SessionEntry } from "../session-manager.js";
|
import type { CompactionEntry, SessionEntry } from "../session-manager.js";
|
||||||
import type {
|
import type {
|
||||||
BashToolDetails,
|
BashToolDetails,
|
||||||
|
|
@ -354,11 +354,7 @@ export interface SessionEventResult {
|
||||||
/** If true (for before_branch only), skip restoring conversation to branch point while still creating the branched session file */
|
/** If true (for before_branch only), skip restoring conversation to branch point while still creating the branched session file */
|
||||||
skipConversationRestore?: boolean;
|
skipConversationRestore?: boolean;
|
||||||
/** Custom compaction result (for before_compact event) - SessionManager adds id/parentId */
|
/** Custom compaction result (for before_compact event) - SessionManager adds id/parentId */
|
||||||
compaction?: {
|
compaction?: CompactionResult;
|
||||||
summary: string;
|
|
||||||
firstKeptEntryId: string;
|
|
||||||
tokensBefore: number;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue