v0.3.0
Assistant Improvements
Assistant's in luca can already use other features as tools providers:
const assistant = container.feature('assistant', { folder: 'assistants/researcher' })
await assistant.use( container.feature('fileTools') ).start()
await assistant.ask('Do a risk analysis on the npm dependencies in this project from the perspective of - how much can we trust the opsec of the authors to not expose us to supply chain risks?')To make it easier on an assistant you create
luca scaffold assistant my-assistantThe tools.ts file has always allowed you to export functions / schemas which will be used as tools, now you can also export features to use and it wil automatically wire them up for you
import { z } from 'zod'
import type { Assistant, AGIContainer } from '@soederpop/luca/agi'
declare global {
var assistant: Assistant
var container: AGIContainer
}
export const use = [
container.feature('contentDb', { rootPath: container.paths.resolve('docs') }),
container.feature('browserUse'),
// only certain tools from features
container.feature('fileTools', { only: ['listDirectory', 'readFile'] })
]
export const schemas = {
README: z.object({}).describe('CALL THIS TOOL FIRST')
}
export async function README() {
return 'some guidance'
}Assistants can fork copies of themselves to do research in paralell
const assistantsManager = await container.feature('assistantsManager').discover()
const assistant = assistantsManager.create('researcher')
const result = assistant.research('shared prompt', ['question 1', 'question 2'], { model: "gpt-5.4" })
They won't fork bomb, and they can use all their tools and system prompt to tackle the task at hand.