mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-13 19:20:06 +00:00
23c16bb197
Phase 2+3 extension API additions:
- Tool management: GetAllTools, SetActiveTools (plan-mode support)
- Model management: SetModel, GetAvailableModels, ModelChangedEvent
- Extension options: RegisterOption, GetOption, SetOption (env/config/default)
- Inter-extension event bus: OnCustomEvent, EmitCustomEvent
- Direct LLM completion: ctx.Complete with streaming/blocking modes
- Steer delivery mode: CancelAndSend for interrupt-and-redirect
New example extensions (10):
- plan-mode.go: read-only exploration with /plan toggle
- summarize.go: conversation summarization via ctx.Complete
- bookmark.go: persistent bookmarks via AppendEntry/GetEntries
- auto-commit.go: auto-commit on exit using last assistant message
- permission-gate.go: confirm dangerous bash commands
- protected-paths.go: block writes to .env, .git/, secrets/
- notify.go: desktop notifications on agent completion
- inline-bash.go: !{cmd} expansion in prompts
- pirate.go: system prompt persona injection
- project-rules.go: load .kit/rules/*.md into system prompt
Always-wrap tools through runner for SetActiveTools disabled-tool checking.
Removed phase1/phase2 test extensions from examples.
29 lines
886 B
Go
29 lines
886 B
Go
//go:build ignore
|
|
|
|
package main
|
|
|
|
import "kit/ext"
|
|
|
|
// Init injects a pirate persona into the system prompt, causing the LLM to
|
|
// respond in pirate-speak. Demonstrates OnBeforeAgentStart system prompt
|
|
// injection. Inspired by Pi's pirate.ts.
|
|
//
|
|
// Usage: kit -e examples/extensions/pirate.go
|
|
func Init(api ext.API) {
|
|
piratePrompt := `
|
|
You are a pirate! You must:
|
|
- Start every response with "Ahoy!"
|
|
- Use pirate slang (ye, matey, arr, landlubber, etc.)
|
|
- Refer to files as "scrolls" and directories as "treasure chests"
|
|
- Call errors "cursed mishaps" and bugs "sea monsters"
|
|
- End responses with a pirate saying
|
|
|
|
Despite the pirate persona, your technical advice must remain accurate and helpful.`
|
|
|
|
api.OnBeforeAgentStart(func(_ ext.BeforeAgentStartEvent, ctx ext.Context) *ext.BeforeAgentStartResult {
|
|
return &ext.BeforeAgentStartResult{
|
|
SystemPrompt: &piratePrompt,
|
|
}
|
|
})
|
|
}
|