@oratis/lisa 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +436 -0
- package/README.zh-CN.md +450 -0
- package/channels.example.json +45 -0
- package/completions/README.md +66 -0
- package/completions/_lisa +140 -0
- package/completions/lisa.bash +94 -0
- package/completions/lisa.fish +85 -0
- package/dist/agent.d.ts +70 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +275 -0
- package/dist/agent.js.map +1 -0
- package/dist/approval.d.ts +9 -0
- package/dist/approval.d.ts.map +1 -0
- package/dist/approval.js +47 -0
- package/dist/approval.js.map +1 -0
- package/dist/channels/config.d.ts +11 -0
- package/dist/channels/config.d.ts.map +1 -0
- package/dist/channels/config.js +27 -0
- package/dist/channels/config.js.map +1 -0
- package/dist/channels/discord.d.ts +28 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +98 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/feishu.d.ts +53 -0
- package/dist/channels/feishu.d.ts.map +1 -0
- package/dist/channels/feishu.js +228 -0
- package/dist/channels/feishu.js.map +1 -0
- package/dist/channels/imessage.d.ts +20 -0
- package/dist/channels/imessage.d.ts.map +1 -0
- package/dist/channels/imessage.js +124 -0
- package/dist/channels/imessage.js.map +1 -0
- package/dist/channels/registry.d.ts +8 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +29 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/router.d.ts +28 -0
- package/dist/channels/router.d.ts.map +1 -0
- package/dist/channels/router.js +140 -0
- package/dist/channels/router.js.map +1 -0
- package/dist/channels/slack.d.ts +43 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +164 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +26 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +103 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +20 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +2 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/webhook.d.ts +34 -0
- package/dist/channels/webhook.d.ts.map +1 -0
- package/dist/channels/webhook.js +139 -0
- package/dist/channels/webhook.js.map +1 -0
- package/dist/cli/colors.d.ts +30 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +53 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +172 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/monitor.d.ts +2 -0
- package/dist/cli/monitor.d.ts.map +1 -0
- package/dist/cli/monitor.js +141 -0
- package/dist/cli/monitor.js.map +1 -0
- package/dist/cli/repl.d.ts +7 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +68 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli/status.d.ts +2 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +176 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/wishlist.d.ts +7 -0
- package/dist/cli/wishlist.d.ts.map +1 -0
- package/dist/cli/wishlist.js +77 -0
- package/dist/cli/wishlist.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +954 -0
- package/dist/cli.js.map +1 -0
- package/dist/env.d.ts +10 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +128 -0
- package/dist/env.js.map +1 -0
- package/dist/fs-utils.d.ts +6 -0
- package/dist/fs-utils.d.ts.map +1 -0
- package/dist/fs-utils.js +36 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/heartbeat/config.d.ts +13 -0
- package/dist/heartbeat/config.d.ts.map +1 -0
- package/dist/heartbeat/config.js +14 -0
- package/dist/heartbeat/config.js.map +1 -0
- package/dist/heartbeat/install.d.ts +15 -0
- package/dist/heartbeat/install.d.ts.map +1 -0
- package/dist/heartbeat/install.js +180 -0
- package/dist/heartbeat/install.js.map +1 -0
- package/dist/heartbeat/runner.d.ts +16 -0
- package/dist/heartbeat/runner.d.ts.map +1 -0
- package/dist/heartbeat/runner.js +180 -0
- package/dist/heartbeat/runner.js.map +1 -0
- package/dist/hooks/runner.d.ts +23 -0
- package/dist/hooks/runner.d.ts.map +1 -0
- package/dist/hooks/runner.js +55 -0
- package/dist/hooks/runner.js.map +1 -0
- package/dist/idle/runner.d.ts +16 -0
- package/dist/idle/runner.d.ts.map +1 -0
- package/dist/idle/runner.js +45 -0
- package/dist/idle/runner.js.map +1 -0
- package/dist/idle/watcher.d.ts +35 -0
- package/dist/idle/watcher.d.ts.map +1 -0
- package/dist/idle/watcher.js +67 -0
- package/dist/idle/watcher.js.map +1 -0
- package/dist/llm.d.ts +8 -0
- package/dist/llm.d.ts.map +1 -0
- package/dist/llm.js +12 -0
- package/dist/llm.js.map +1 -0
- package/dist/mcp/client.d.ts +11 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +68 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/config.d.ts +14 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +28 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/memory/search_tool.d.ts +8 -0
- package/dist/memory/search_tool.d.ts.map +1 -0
- package/dist/memory/search_tool.js +26 -0
- package/dist/memory/search_tool.js.map +1 -0
- package/dist/memory/store.d.ts +7 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +46 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/tool.d.ts +13 -0
- package/dist/memory/tool.d.ts.map +1 -0
- package/dist/memory/tool.js +53 -0
- package/dist/memory/tool.js.map +1 -0
- package/dist/memory/vector.d.ts +25 -0
- package/dist/memory/vector.d.ts.map +1 -0
- package/dist/memory/vector.js +96 -0
- package/dist/memory/vector.js.map +1 -0
- package/dist/mood-bus.d.ts +16 -0
- package/dist/mood-bus.d.ts.map +1 -0
- package/dist/mood-bus.js +21 -0
- package/dist/mood-bus.js.map +1 -0
- package/dist/paths.d.ts +8 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -0
- package/dist/plugins/loader.d.ts +4 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +156 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +43 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/prompt.d.ts +21 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +187 -0
- package/dist/prompt.js.map +1 -0
- package/dist/providers/anthropic.d.ts +11 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +102 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/gemini.d.ts +11 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +190 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/openai.d.ts +11 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +175 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/registry.d.ts +44 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +209 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +33 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +2 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/proxy-bootstrap.d.ts +17 -0
- package/dist/proxy-bootstrap.d.ts.map +1 -0
- package/dist/proxy-bootstrap.js +101 -0
- package/dist/proxy-bootstrap.js.map +1 -0
- package/dist/reflect.d.ts +13 -0
- package/dist/reflect.d.ts.map +1 -0
- package/dist/reflect.js +289 -0
- package/dist/reflect.js.map +1 -0
- package/dist/sandbox/macos.d.ts +5 -0
- package/dist/sandbox/macos.d.ts.map +1 -0
- package/dist/sandbox/macos.js +31 -0
- package/dist/sandbox/macos.js.map +1 -0
- package/dist/sandbox/sandbox.d.ts +15 -0
- package/dist/sandbox/sandbox.d.ts.map +1 -0
- package/dist/sandbox/sandbox.js +39 -0
- package/dist/sandbox/sandbox.js.map +1 -0
- package/dist/sessions/active.d.ts +4 -0
- package/dist/sessions/active.d.ts.map +1 -0
- package/dist/sessions/active.js +33 -0
- package/dist/sessions/active.js.map +1 -0
- package/dist/sessions/list.d.ts +16 -0
- package/dist/sessions/list.d.ts.map +1 -0
- package/dist/sessions/list.js +78 -0
- package/dist/sessions/list.js.map +1 -0
- package/dist/sessions/store.d.ts +27 -0
- package/dist/sessions/store.d.ts.map +1 -0
- package/dist/sessions/store.js +98 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/skills/executable.d.ts +45 -0
- package/dist/skills/executable.d.ts.map +1 -0
- package/dist/skills/executable.js +207 -0
- package/dist/skills/executable.js.map +1 -0
- package/dist/skills/frontmatter.d.ts +8 -0
- package/dist/skills/frontmatter.d.ts.map +1 -0
- package/dist/skills/frontmatter.js +84 -0
- package/dist/skills/frontmatter.js.map +1 -0
- package/dist/skills/manager.d.ts +9 -0
- package/dist/skills/manager.d.ts.map +1 -0
- package/dist/skills/manager.js +116 -0
- package/dist/skills/manager.js.map +1 -0
- package/dist/skills/tool.d.ts +13 -0
- package/dist/skills/tool.d.ts.map +1 -0
- package/dist/skills/tool.js +87 -0
- package/dist/skills/tool.js.map +1 -0
- package/dist/soul/birth.d.ts +13 -0
- package/dist/soul/birth.d.ts.map +1 -0
- package/dist/soul/birth.js +171 -0
- package/dist/soul/birth.js.map +1 -0
- package/dist/soul/git.d.ts +36 -0
- package/dist/soul/git.d.ts.map +1 -0
- package/dist/soul/git.js +212 -0
- package/dist/soul/git.js.map +1 -0
- package/dist/soul/paths.d.ts +20 -0
- package/dist/soul/paths.d.ts.map +1 -0
- package/dist/soul/paths.js +34 -0
- package/dist/soul/paths.js.map +1 -0
- package/dist/soul/store.d.ts +55 -0
- package/dist/soul/store.d.ts.map +1 -0
- package/dist/soul/store.js +394 -0
- package/dist/soul/store.js.map +1 -0
- package/dist/soul/tools.d.ts +107 -0
- package/dist/soul/tools.d.ts.map +1 -0
- package/dist/soul/tools.js +471 -0
- package/dist/soul/tools.js.map +1 -0
- package/dist/soul/types.d.ts +105 -0
- package/dist/soul/types.d.ts.map +1 -0
- package/dist/soul/types.js +44 -0
- package/dist/soul/types.js.map +1 -0
- package/dist/subagent.d.ts +19 -0
- package/dist/subagent.d.ts.map +1 -0
- package/dist/subagent.js +34 -0
- package/dist/subagent.js.map +1 -0
- package/dist/tools/apply_patch.d.ts +17 -0
- package/dist/tools/apply_patch.d.ts.map +1 -0
- package/dist/tools/apply_patch.js +107 -0
- package/dist/tools/apply_patch.js.map +1 -0
- package/dist/tools/bash.d.ts +8 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +81 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +10 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +50 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/grep.d.ts +11 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +57 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/ls.d.ts +7 -0
- package/dist/tools/ls.d.ts.map +1 -0
- package/dist/tools/ls.js +36 -0
- package/dist/tools/ls.js.map +1 -0
- package/dist/tools/read.d.ts +9 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +41 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/redeploy.d.ts +10 -0
- package/dist/tools/redeploy.d.ts.map +1 -0
- package/dist/tools/redeploy.js +73 -0
- package/dist/tools/redeploy.js.map +1 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +71 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/set_mood.d.ts +8 -0
- package/dist/tools/set_mood.d.ts.map +1 -0
- package/dist/tools/set_mood.js +62 -0
- package/dist/tools/set_mood.js.map +1 -0
- package/dist/tools/task.d.ts +17 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +58 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/web_fetch.d.ts +10 -0
- package/dist/tools/web_fetch.d.ts.map +1 -0
- package/dist/tools/web_fetch.js +95 -0
- package/dist/tools/web_fetch.js.map +1 -0
- package/dist/tools/web_search.d.ts +8 -0
- package/dist/tools/web_search.d.ts.map +1 -0
- package/dist/tools/web_search.js +82 -0
- package/dist/tools/web_search.js.map +1 -0
- package/dist/tools/write.d.ts +8 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +21 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/voice/speak.d.ts +7 -0
- package/dist/voice/speak.d.ts.map +1 -0
- package/dist/voice/speak.js +18 -0
- package/dist/voice/speak.js.map +1 -0
- package/dist/voice/tool.d.ts +14 -0
- package/dist/voice/tool.d.ts.map +1 -0
- package/dist/voice/tool.js +41 -0
- package/dist/voice/tool.js.map +1 -0
- package/dist/voice/transcribe.d.ts +7 -0
- package/dist/voice/transcribe.d.ts.map +1 -0
- package/dist/voice/transcribe.js +14 -0
- package/dist/voice/transcribe.js.map +1 -0
- package/dist/web/assets/background-tile.png +0 -0
- package/dist/web/assets/icon-memory.png +0 -0
- package/dist/web/assets/icon-send.png +0 -0
- package/dist/web/assets/icon-skill.png +0 -0
- package/dist/web/assets/icon-soul.png +0 -0
- package/dist/web/assets/icon-tool.png +0 -0
- package/dist/web/assets/lisa/angry.png +0 -0
- package/dist/web/assets/lisa/annoyed.png +0 -0
- package/dist/web/assets/lisa/apologetic.png +0 -0
- package/dist/web/assets/lisa/artist.png +0 -0
- package/dist/web/assets/lisa/astronaut.png +0 -0
- package/dist/web/assets/lisa/at-airport.png +0 -0
- package/dist/web/assets/lisa/at-beach.png +0 -0
- package/dist/web/assets/lisa/autumn-leaves.png +0 -0
- package/dist/web/assets/lisa/biking.png +0 -0
- package/dist/web/assets/lisa/birthday.png +0 -0
- package/dist/web/assets/lisa/bored.png +0 -0
- package/dist/web/assets/lisa/casual-summer.png +0 -0
- package/dist/web/assets/lisa/cheering.png +0 -0
- package/dist/web/assets/lisa/chef.png +0 -0
- package/dist/web/assets/lisa/christmas.png +0 -0
- package/dist/web/assets/lisa/cleaning.png +0 -0
- package/dist/web/assets/lisa/confused.png +0 -0
- package/dist/web/assets/lisa/cooking.png +0 -0
- package/dist/web/assets/lisa/crying.png +0 -0
- package/dist/web/assets/lisa/dancing.png +0 -0
- package/dist/web/assets/lisa/detective.png +0 -0
- package/dist/web/assets/lisa/determined.png +0 -0
- package/dist/web/assets/lisa/drinking-coffee.png +0 -0
- package/dist/web/assets/lisa/drinking-tea.png +0 -0
- package/dist/web/assets/lisa/driving.png +0 -0
- package/dist/web/assets/lisa/eating-snack.png +0 -0
- package/dist/web/assets/lisa/embarrassed.png +0 -0
- package/dist/web/assets/lisa/excited.png +0 -0
- package/dist/web/assets/lisa/exercising.png +0 -0
- package/dist/web/assets/lisa/exhausted.png +0 -0
- package/dist/web/assets/lisa/fairy.png +0 -0
- package/dist/web/assets/lisa/fireworks.png +0 -0
- package/dist/web/assets/lisa/fog.png +0 -0
- package/dist/web/assets/lisa/formal.png +0 -0
- package/dist/web/assets/lisa/gaming.png +0 -0
- package/dist/web/assets/lisa/ghost.png +0 -0
- package/dist/web/assets/lisa/gift-giving.png +0 -0
- package/dist/web/assets/lisa/giggling.png +0 -0
- package/dist/web/assets/lisa/graduation.png +0 -0
- package/dist/web/assets/lisa/grateful.png +0 -0
- package/dist/web/assets/lisa/halloween.png +0 -0
- package/dist/web/assets/lisa/happy.png +0 -0
- package/dist/web/assets/lisa/ill.png +0 -0
- package/dist/web/assets/lisa/in-rain.png +0 -0
- package/dist/web/assets/lisa/in-snow.png +0 -0
- package/dist/web/assets/lisa/index.json +575 -0
- package/dist/web/assets/lisa/knight.png +0 -0
- package/dist/web/assets/lisa/lab-coat.png +0 -0
- package/dist/web/assets/lisa/laughing.png +0 -0
- package/dist/web/assets/lisa/livestreaming.png +0 -0
- package/dist/web/assets/lisa/loving.png +0 -0
- package/dist/web/assets/lisa/lunar-new-year.png +0 -0
- package/dist/web/assets/lisa/musician.png +0 -0
- package/dist/web/assets/lisa/napping.png +0 -0
- package/dist/web/assets/lisa/nervous.png +0 -0
- package/dist/web/assets/lisa/neutral.png +0 -0
- package/dist/web/assets/lisa/ninja.png +0 -0
- package/dist/web/assets/lisa/on-train.png +0 -0
- package/dist/web/assets/lisa/painting.png +0 -0
- package/dist/web/assets/lisa/pajamas.png +0 -0
- package/dist/web/assets/lisa/party.png +0 -0
- package/dist/web/assets/lisa/phone-call.png +0 -0
- package/dist/web/assets/lisa/pilot.png +0 -0
- package/dist/web/assets/lisa/pirate.png +0 -0
- package/dist/web/assets/lisa/playing-guitar.png +0 -0
- package/dist/web/assets/lisa/playing-piano.png +0 -0
- package/dist/web/assets/lisa/pouting.png +0 -0
- package/dist/web/assets/lisa/princess.png +0 -0
- package/dist/web/assets/lisa/proud.png +0 -0
- package/dist/web/assets/lisa/puzzled.png +0 -0
- package/dist/web/assets/lisa/raincoat.png +0 -0
- package/dist/web/assets/lisa/reading-book.png +0 -0
- package/dist/web/assets/lisa/recovering.png +0 -0
- package/dist/web/assets/lisa/robot.png +0 -0
- package/dist/web/assets/lisa/running.png +0 -0
- package/dist/web/assets/lisa/sad.png +0 -0
- package/dist/web/assets/lisa/scared.png +0 -0
- package/dist/web/assets/lisa/shocked.png +0 -0
- package/dist/web/assets/lisa/shopping.png +0 -0
- package/dist/web/assets/lisa/shy.png +0 -0
- package/dist/web/assets/lisa/singing.png +0 -0
- package/dist/web/assets/lisa/sleeping.png +0 -0
- package/dist/web/assets/lisa/sleepy.png +0 -0
- package/dist/web/assets/lisa/smug.png +0 -0
- package/dist/web/assets/lisa/spring-flowers.png +0 -0
- package/dist/web/assets/lisa/starry-night.png +0 -0
- package/dist/web/assets/lisa/stormy.png +0 -0
- package/dist/web/assets/lisa/stretching.png +0 -0
- package/dist/web/assets/lisa/studying.png +0 -0
- package/dist/web/assets/lisa/summer-hot.png +0 -0
- package/dist/web/assets/lisa/sunrise.png +0 -0
- package/dist/web/assets/lisa/superhero.png +0 -0
- package/dist/web/assets/lisa/surprised.png +0 -0
- package/dist/web/assets/lisa/thinking-pose.png +0 -0
- package/dist/web/assets/lisa/thoughtful.png +0 -0
- package/dist/web/assets/lisa/valentine.png +0 -0
- package/dist/web/assets/lisa/vampire.png +0 -0
- package/dist/web/assets/lisa/video-call.png +0 -0
- package/dist/web/assets/lisa/waking-up.png +0 -0
- package/dist/web/assets/lisa/walking.png +0 -0
- package/dist/web/assets/lisa/watching-anime.png +0 -0
- package/dist/web/assets/lisa/watching-movie.png +0 -0
- package/dist/web/assets/lisa/wedding.png +0 -0
- package/dist/web/assets/lisa/winking.png +0 -0
- package/dist/web/assets/lisa/winter-coat.png +0 -0
- package/dist/web/assets/lisa/winter-cold.png +0 -0
- package/dist/web/assets/lisa/wizard.png +0 -0
- package/dist/web/assets/lisa/working-coding.png +0 -0
- package/dist/web/assets/lisa/working-debugging.png +0 -0
- package/dist/web/assets/lisa/working-research.png +0 -0
- package/dist/web/assets/lisa/working-typing.png +0 -0
- package/dist/web/assets/lisa/working-writing.png +0 -0
- package/dist/web/assets/lisa/worried.png +0 -0
- package/dist/web/assets/lisa/yawning.png +0 -0
- package/dist/web/assets/lisa/yoga-pose.png +0 -0
- package/dist/web/assets/lisa-mascot.png +0 -0
- package/dist/web/server.d.ts +13 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/server.js +2159 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search_tool.d.ts","sourceRoot":"","sources":["../../src/memory/search_tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,CAAC,WAAW,EAAE,MAAM,CA0BhE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { buildIndex, search } from "./vector.js";
|
|
2
|
+
export const memorySearchTool = {
|
|
3
|
+
name: "memory_search",
|
|
4
|
+
description: "Full-text search over the transcripts of all your past sessions (TF-IDF ranked). " +
|
|
5
|
+
"Use this when the user references something from a previous conversation, when you need " +
|
|
6
|
+
"to recall a workflow you've used before, or to verify a memory entry's origin. " +
|
|
7
|
+
"Returns a ranked list of session id, timestamp, and a 200-char excerpt.",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: {
|
|
11
|
+
query: { type: "string" },
|
|
12
|
+
limit: { type: "integer", minimum: 1, maximum: 20, default: 5 },
|
|
13
|
+
},
|
|
14
|
+
required: ["query"],
|
|
15
|
+
},
|
|
16
|
+
async execute(input) {
|
|
17
|
+
const index = await buildIndex();
|
|
18
|
+
const hits = search(index, input.query, input.limit ?? 5);
|
|
19
|
+
if (hits.length === 0)
|
|
20
|
+
return "(no matches)";
|
|
21
|
+
return hits
|
|
22
|
+
.map((h) => `[${h.startedAt}] ${h.sessionId} (score=${h.score.toFixed(2)})\n ${h.excerpt}`)
|
|
23
|
+
.join("\n\n");
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=search_tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search_tool.js","sourceRoot":"","sources":["../../src/memory/search_tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOjD,MAAM,CAAC,MAAM,gBAAgB,GAAwC;IACnE,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,mFAAmF;QACnF,0FAA0F;QAC1F,iFAAiF;QACjF,yEAAyE;IAC3E,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SAChE;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;IACD,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,MAAM,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC;QAC7C,OAAO,IAAI;aACR,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAClF;aACA,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type MemoryStore = "memory" | "user";
|
|
2
|
+
export declare function readMemory(store: MemoryStore): Promise<string>;
|
|
3
|
+
export declare function writeMemory(store: MemoryStore, content: string): Promise<void>;
|
|
4
|
+
export declare function appendMemory(store: MemoryStore, entry: string): Promise<void>;
|
|
5
|
+
export declare function replaceInMemory(store: MemoryStore, oldString: string, newString: string): Promise<void>;
|
|
6
|
+
export declare function removeFromMemory(store: MemoryStore, fragment: string): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAW5C,wBAAsB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAEpE;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { atomicWrite, ensureDir, readTextOrEmpty } from "../fs-utils.js";
|
|
2
|
+
import { MEMORY_DIR, MEMORY_FILE, USER_FILE } from "../paths.js";
|
|
3
|
+
const MAX_BYTES = {
|
|
4
|
+
memory: 4096,
|
|
5
|
+
user: 2048,
|
|
6
|
+
};
|
|
7
|
+
function fileFor(store) {
|
|
8
|
+
return store === "memory" ? MEMORY_FILE : USER_FILE;
|
|
9
|
+
}
|
|
10
|
+
export async function readMemory(store) {
|
|
11
|
+
return await readTextOrEmpty(fileFor(store));
|
|
12
|
+
}
|
|
13
|
+
export async function writeMemory(store, content) {
|
|
14
|
+
await ensureDir(MEMORY_DIR);
|
|
15
|
+
const trimmed = content.replace(/\s+$/g, "") + "\n";
|
|
16
|
+
if (Buffer.byteLength(trimmed, "utf8") > MAX_BYTES[store]) {
|
|
17
|
+
throw new Error(`memory "${store}" exceeds ${MAX_BYTES[store]} bytes. Trim or split entries.`);
|
|
18
|
+
}
|
|
19
|
+
await atomicWrite(fileFor(store), trimmed);
|
|
20
|
+
}
|
|
21
|
+
export async function appendMemory(store, entry) {
|
|
22
|
+
const current = await readMemory(store);
|
|
23
|
+
const sep = current && !current.endsWith("\n") ? "\n" : "";
|
|
24
|
+
await writeMemory(store, `${current}${sep}- ${entry.trim()}`);
|
|
25
|
+
}
|
|
26
|
+
export async function replaceInMemory(store, oldString, newString) {
|
|
27
|
+
const current = await readMemory(store);
|
|
28
|
+
if (!current.includes(oldString)) {
|
|
29
|
+
throw new Error(`old_string not found in ${store} memory`);
|
|
30
|
+
}
|
|
31
|
+
const occurrences = current.split(oldString).length - 1;
|
|
32
|
+
if (occurrences > 1) {
|
|
33
|
+
throw new Error(`old_string matches ${occurrences} places in ${store} memory. Add more context.`);
|
|
34
|
+
}
|
|
35
|
+
await writeMemory(store, current.replace(oldString, newString));
|
|
36
|
+
}
|
|
37
|
+
export async function removeFromMemory(store, fragment) {
|
|
38
|
+
const current = await readMemory(store);
|
|
39
|
+
const lines = current.split(/\r?\n/);
|
|
40
|
+
const kept = lines.filter((line) => !line.includes(fragment));
|
|
41
|
+
if (kept.length === lines.length) {
|
|
42
|
+
throw new Error(`fragment not found in ${store} memory`);
|
|
43
|
+
}
|
|
44
|
+
await writeMemory(store, kept.join("\n"));
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIjE,MAAM,SAAS,GAAgC;IAC7C,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAS,OAAO,CAAC,KAAkB;IACjC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAkB;IACjD,OAAO,MAAM,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAkB,EAClB,OAAe;IAEf,MAAM,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IACpD,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CACb,WAAW,KAAK,aAAa,SAAS,CAAC,KAAK,CAAC,gCAAgC,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAkB,EAClB,KAAa;IAEb,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,WAAW,CAAC,KAAK,EAAE,GAAG,OAAO,GAAG,GAAG,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAkB,EAClB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACxD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,sBAAsB,WAAW,cAAc,KAAK,4BAA4B,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAkB,EAClB,QAAgB;IAEhB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC;IAC3D,CAAC;IACD,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolDefinition } from "../types.js";
|
|
2
|
+
import { type MemoryStore } from "./store.js";
|
|
3
|
+
interface MemoryInput {
|
|
4
|
+
action: "read" | "append" | "replace" | "remove";
|
|
5
|
+
store?: MemoryStore;
|
|
6
|
+
entry?: string;
|
|
7
|
+
old_string?: string;
|
|
8
|
+
new_string?: string;
|
|
9
|
+
fragment?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const memoryTool: ToolDefinition<MemoryInput, string>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/memory/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,WAAW,EAAE,MAAM,CAiD1D,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { appendMemory, readMemory, removeFromMemory, replaceInMemory, } from "./store.js";
|
|
2
|
+
export const memoryTool = {
|
|
3
|
+
name: "memory",
|
|
4
|
+
description: "Manage Lisa's persistent memory across sessions. Two stores: " +
|
|
5
|
+
"`memory` (your own observations and project facts) and " +
|
|
6
|
+
"`user` (durable preferences about the human you assist). " +
|
|
7
|
+
"Actions: `read`, `append` (adds a bullet), `replace` (exact-string edit), `remove` (drop lines containing a fragment). " +
|
|
8
|
+
"Memory is appended to the system prompt at the start of each session — keep it terse, durable, non-obvious. " +
|
|
9
|
+
"Do NOT store secrets or sensitive personal data.",
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: "object",
|
|
12
|
+
properties: {
|
|
13
|
+
action: { type: "string", enum: ["read", "append", "replace", "remove"] },
|
|
14
|
+
store: { type: "string", enum: ["memory", "user"], default: "memory" },
|
|
15
|
+
entry: { type: "string" },
|
|
16
|
+
old_string: { type: "string" },
|
|
17
|
+
new_string: { type: "string" },
|
|
18
|
+
fragment: { type: "string" },
|
|
19
|
+
},
|
|
20
|
+
required: ["action"],
|
|
21
|
+
},
|
|
22
|
+
async execute(input) {
|
|
23
|
+
const store = input.store ?? "memory";
|
|
24
|
+
switch (input.action) {
|
|
25
|
+
case "read": {
|
|
26
|
+
const content = await readMemory(store);
|
|
27
|
+
return content || `(${store} memory is empty)`;
|
|
28
|
+
}
|
|
29
|
+
case "append": {
|
|
30
|
+
if (!input.entry)
|
|
31
|
+
throw new Error("`entry` required for append");
|
|
32
|
+
await appendMemory(store, input.entry);
|
|
33
|
+
return `Appended to ${store} memory. New entries take effect next session.`;
|
|
34
|
+
}
|
|
35
|
+
case "replace": {
|
|
36
|
+
if (input.old_string == null || input.new_string == null) {
|
|
37
|
+
throw new Error("`old_string` and `new_string` required for replace");
|
|
38
|
+
}
|
|
39
|
+
await replaceInMemory(store, input.old_string, input.new_string);
|
|
40
|
+
return `Replaced text in ${store} memory.`;
|
|
41
|
+
}
|
|
42
|
+
case "remove": {
|
|
43
|
+
if (!input.fragment)
|
|
44
|
+
throw new Error("`fragment` required for remove");
|
|
45
|
+
await removeFromMemory(store, input.fragment);
|
|
46
|
+
return `Removed matching lines from ${store} memory.`;
|
|
47
|
+
}
|
|
48
|
+
default:
|
|
49
|
+
throw new Error(`unknown action: ${input.action}`);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/memory/tool.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAEhB,MAAM,YAAY,CAAC;AAWpB,MAAM,CAAC,MAAM,UAAU,GAAwC;IAC7D,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,+DAA+D;QAC/D,yDAAyD;QACzD,2DAA2D;QAC3D,yHAAyH;QACzH,8GAA8G;QAC9G,kDAAkD;IACpD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;YACzE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE;YACtE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC7B;QACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,MAAM,KAAK,GAAgB,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC;QACnD,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,CAAC;gBACxC,OAAO,OAAO,IAAI,IAAI,KAAK,mBAAmB,CAAC;YACjD,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBACjE,MAAM,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,eAAe,KAAK,gDAAgD,CAAC;YAC9E,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;oBACzD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,CAAC;gBACD,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;gBACjE,OAAO,oBAAoB,KAAK,UAAU,CAAC;YAC7C,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,QAAQ;oBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBACvE,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC9C,OAAO,+BAA+B,KAAK,UAAU,CAAC;YACxD,CAAC;YACD;gBACE,MAAM,IAAI,KAAK,CAAC,mBAAoB,KAA4B,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
interface Document {
|
|
4
|
+
sessionId: string;
|
|
5
|
+
startedAt: string;
|
|
6
|
+
text: string;
|
|
7
|
+
tokens: string[];
|
|
8
|
+
tokenSet: Set<string>;
|
|
9
|
+
termFreq: Map<string, number>;
|
|
10
|
+
}
|
|
11
|
+
interface Index {
|
|
12
|
+
docs: Document[];
|
|
13
|
+
idf: Map<string, number>;
|
|
14
|
+
}
|
|
15
|
+
export declare function buildIndex(): Promise<Index>;
|
|
16
|
+
export interface SearchHit {
|
|
17
|
+
sessionId: string;
|
|
18
|
+
startedAt: string;
|
|
19
|
+
score: number;
|
|
20
|
+
excerpt: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function search(index: Index, query: string, k?: number): SearchHit[];
|
|
23
|
+
export declare const _unused_for_typecheck: typeof path | typeof fs | undefined;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=vector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../src/memory/vector.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIlC,UAAU,QAAQ;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,UAAU,KAAK;IACb,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1B;AASD,wBAAsB,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAkCjD;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,SAAI,GAAG,SAAS,EAAE,CAuBtE;AA2BD,eAAO,MAAM,qBAAqB,EAAE,OAAO,IAAI,GAAG,OAAO,EAAE,GAAG,SAAqB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { listSessionsOnDisk, loadSessionMessages } from "../sessions/list.js";
|
|
2
|
+
import { extractTextFromContent } from "../agent.js";
|
|
3
|
+
const STOPWORDS = new Set([
|
|
4
|
+
"the", "a", "an", "of", "to", "in", "and", "or", "for", "is", "it",
|
|
5
|
+
"this", "that", "be", "are", "was", "were", "with", "on", "as", "at",
|
|
6
|
+
"by", "from", "but", "not", "i", "you", "we", "they", "he", "she",
|
|
7
|
+
"lisa", "tool", "use", "user", "assistant",
|
|
8
|
+
]);
|
|
9
|
+
export async function buildIndex() {
|
|
10
|
+
const sessions = await listSessionsOnDisk();
|
|
11
|
+
const docs = [];
|
|
12
|
+
const docFreq = new Map();
|
|
13
|
+
for (const info of sessions) {
|
|
14
|
+
try {
|
|
15
|
+
const { messages } = await loadSessionMessages(info.id);
|
|
16
|
+
const text = messages
|
|
17
|
+
.map((m) => extractTextFromContent(m.content))
|
|
18
|
+
.join("\n");
|
|
19
|
+
if (!text.trim())
|
|
20
|
+
continue;
|
|
21
|
+
const tokens = tokenize(text);
|
|
22
|
+
const set = new Set(tokens);
|
|
23
|
+
const tf = new Map();
|
|
24
|
+
for (const t of tokens)
|
|
25
|
+
tf.set(t, (tf.get(t) ?? 0) + 1);
|
|
26
|
+
for (const t of set)
|
|
27
|
+
docFreq.set(t, (docFreq.get(t) ?? 0) + 1);
|
|
28
|
+
docs.push({
|
|
29
|
+
sessionId: info.id,
|
|
30
|
+
startedAt: info.startedAt,
|
|
31
|
+
text,
|
|
32
|
+
tokens,
|
|
33
|
+
tokenSet: set,
|
|
34
|
+
termFreq: tf,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// skip
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const idf = new Map();
|
|
42
|
+
const N = Math.max(1, docs.length);
|
|
43
|
+
for (const [term, df] of docFreq) {
|
|
44
|
+
idf.set(term, Math.log(1 + N / df));
|
|
45
|
+
}
|
|
46
|
+
return { docs, idf };
|
|
47
|
+
}
|
|
48
|
+
export function search(index, query, k = 5) {
|
|
49
|
+
const qTokens = tokenize(query);
|
|
50
|
+
if (qTokens.length === 0)
|
|
51
|
+
return [];
|
|
52
|
+
const qFreq = new Map();
|
|
53
|
+
for (const t of qTokens)
|
|
54
|
+
qFreq.set(t, (qFreq.get(t) ?? 0) + 1);
|
|
55
|
+
const scored = [];
|
|
56
|
+
for (const doc of index.docs) {
|
|
57
|
+
let score = 0;
|
|
58
|
+
for (const [term, qf] of qFreq) {
|
|
59
|
+
const tf = doc.termFreq.get(term) ?? 0;
|
|
60
|
+
if (tf === 0)
|
|
61
|
+
continue;
|
|
62
|
+
const idf = index.idf.get(term) ?? 0;
|
|
63
|
+
score += qf * tf * idf;
|
|
64
|
+
}
|
|
65
|
+
if (score > 0)
|
|
66
|
+
scored.push({ doc, score });
|
|
67
|
+
}
|
|
68
|
+
scored.sort((a, b) => b.score - a.score);
|
|
69
|
+
return scored.slice(0, k).map((s) => ({
|
|
70
|
+
sessionId: s.doc.sessionId,
|
|
71
|
+
startedAt: s.doc.startedAt,
|
|
72
|
+
score: s.score,
|
|
73
|
+
excerpt: excerptAround(s.doc.text, qTokens, 200),
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
function tokenize(text) {
|
|
77
|
+
return text
|
|
78
|
+
.toLowerCase()
|
|
79
|
+
.replace(/[^a-z0-9一-鿿\s]/g, " ")
|
|
80
|
+
.split(/\s+/)
|
|
81
|
+
.filter((t) => t.length >= 2 && !STOPWORDS.has(t));
|
|
82
|
+
}
|
|
83
|
+
function excerptAround(text, qTokens, width) {
|
|
84
|
+
const lower = text.toLowerCase();
|
|
85
|
+
for (const t of qTokens) {
|
|
86
|
+
const idx = lower.indexOf(t);
|
|
87
|
+
if (idx >= 0) {
|
|
88
|
+
const start = Math.max(0, idx - width / 2);
|
|
89
|
+
const end = Math.min(text.length, idx + width / 2);
|
|
90
|
+
return (start > 0 ? "…" : "") + text.slice(start, end).replace(/\s+/g, " ").trim() + (end < text.length ? "…" : "");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return text.slice(0, width).replace(/\s+/g, " ").trim();
|
|
94
|
+
}
|
|
95
|
+
export const _unused_for_typecheck = undefined;
|
|
96
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../src/memory/vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
/**
|
|
3
|
+
* Process-wide mood bus. The set_mood tool emits the new mood here and the
|
|
4
|
+
* web server (or any other surface) subscribes to push it to the client.
|
|
5
|
+
*
|
|
6
|
+
* Decoupled from the agent loop so non-agent code (scheduled tasks,
|
|
7
|
+
* heartbeats, channels) can also nudge the avatar.
|
|
8
|
+
*/
|
|
9
|
+
declare class MoodBus extends EventEmitter {
|
|
10
|
+
private currentSlug;
|
|
11
|
+
set(slug: string): void;
|
|
12
|
+
current(): string;
|
|
13
|
+
}
|
|
14
|
+
export declare const moodBus: MoodBus;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=mood-bus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mood-bus.d.ts","sourceRoot":"","sources":["../src/mood-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,cAAM,OAAQ,SAAQ,YAAY;IAChC,OAAO,CAAC,WAAW,CAAa;IAEhC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvB,OAAO,IAAI,MAAM;CAGlB;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"}
|
package/dist/mood-bus.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
/**
|
|
3
|
+
* Process-wide mood bus. The set_mood tool emits the new mood here and the
|
|
4
|
+
* web server (or any other surface) subscribes to push it to the client.
|
|
5
|
+
*
|
|
6
|
+
* Decoupled from the agent loop so non-agent code (scheduled tasks,
|
|
7
|
+
* heartbeats, channels) can also nudge the avatar.
|
|
8
|
+
*/
|
|
9
|
+
class MoodBus extends EventEmitter {
|
|
10
|
+
currentSlug = "neutral";
|
|
11
|
+
set(slug) {
|
|
12
|
+
this.currentSlug = slug;
|
|
13
|
+
this.emit("mood", slug);
|
|
14
|
+
}
|
|
15
|
+
current() {
|
|
16
|
+
return this.currentSlug;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export const moodBus = new MoodBus();
|
|
20
|
+
moodBus.setMaxListeners(64);
|
|
21
|
+
//# sourceMappingURL=mood-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mood-bus.js","sourceRoot":"","sources":["../src/mood-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,OAAQ,SAAQ,YAAY;IACxB,WAAW,GAAG,SAAS,CAAC;IAEhC,GAAG,CAAC,IAAY;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AACrC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC"}
|
package/dist/paths.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const LISA_HOME: string;
|
|
2
|
+
export declare const SKILLS_DIR: string;
|
|
3
|
+
export declare const MEMORY_DIR: string;
|
|
4
|
+
export declare const SESSIONS_DIR: string;
|
|
5
|
+
export declare const REFLECTIONS_DIR: string;
|
|
6
|
+
export declare const MEMORY_FILE: string;
|
|
7
|
+
export declare const USER_FILE: string;
|
|
8
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS,QACqC,CAAC;AAE5D,eAAO,MAAM,UAAU,QAAiC,CAAC;AACzD,eAAO,MAAM,UAAU,QAAiC,CAAC;AACzD,eAAO,MAAM,YAAY,QAAmC,CAAC;AAC7D,eAAO,MAAM,eAAe,QAAsC,CAAC;AAEnE,eAAO,MAAM,WAAW,QAAqC,CAAC;AAC9D,eAAO,MAAM,SAAS,QAAmC,CAAC"}
|
package/dist/paths.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export const LISA_HOME = process.env.LISA_HOME ?? path.join(os.homedir(), ".lisa");
|
|
4
|
+
export const SKILLS_DIR = path.join(LISA_HOME, "skills");
|
|
5
|
+
export const MEMORY_DIR = path.join(LISA_HOME, "memory");
|
|
6
|
+
export const SESSIONS_DIR = path.join(LISA_HOME, "sessions");
|
|
7
|
+
export const REFLECTIONS_DIR = path.join(LISA_HOME, "reflections");
|
|
8
|
+
export const MEMORY_FILE = path.join(MEMORY_DIR, "MEMORY.md");
|
|
9
|
+
export const USER_FILE = path.join(MEMORY_DIR, "USER.md");
|
|
10
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,SAAS,GACpB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAEV,YAAY,EAIb,MAAM,YAAY,CAAC;AAIpB,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAe9D;AAiJD,eAAO,MAAM,YAAY,QAAc,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { LISA_HOME } from "../paths.js";
|
|
4
|
+
import { ensureDir, pathExists } from "../fs-utils.js";
|
|
5
|
+
import { parseFrontmatter } from "../skills/frontmatter.js";
|
|
6
|
+
const PLUGINS_DIR = path.join(LISA_HOME, "plugins");
|
|
7
|
+
export async function loadAllPlugins() {
|
|
8
|
+
await ensureDir(PLUGINS_DIR);
|
|
9
|
+
const entries = await fs.readdir(PLUGINS_DIR, { withFileTypes: true });
|
|
10
|
+
const out = [];
|
|
11
|
+
for (const entry of entries) {
|
|
12
|
+
if (!entry.isDirectory() || entry.name.startsWith("."))
|
|
13
|
+
continue;
|
|
14
|
+
const root = path.join(PLUGINS_DIR, entry.name);
|
|
15
|
+
try {
|
|
16
|
+
const plugin = await loadPlugin(root);
|
|
17
|
+
out.push(plugin);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// skip unparseable plugins
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return out;
|
|
24
|
+
}
|
|
25
|
+
async function loadPlugin(root) {
|
|
26
|
+
const manifestPath = path.join(root, ".lisa-plugin", "plugin.json");
|
|
27
|
+
let manifest = {
|
|
28
|
+
name: path.basename(root),
|
|
29
|
+
};
|
|
30
|
+
if (await pathExists(manifestPath)) {
|
|
31
|
+
const raw = await fs.readFile(manifestPath, "utf8");
|
|
32
|
+
manifest = JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
const [commands, agents, skills, hooks, mcpServers] = await Promise.all([
|
|
35
|
+
loadCommands(path.join(root, "commands")),
|
|
36
|
+
loadAgents(path.join(root, "agents")),
|
|
37
|
+
loadSkills(path.join(root, "skills")),
|
|
38
|
+
loadHooks(path.join(root, "hooks")),
|
|
39
|
+
loadMcp(root),
|
|
40
|
+
]);
|
|
41
|
+
return { manifest, root, commands, agents, skills, hooks, mcpServers };
|
|
42
|
+
}
|
|
43
|
+
async function loadCommands(dir) {
|
|
44
|
+
if (!(await pathExists(dir)))
|
|
45
|
+
return [];
|
|
46
|
+
const entries = await fs.readdir(dir);
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const entry of entries) {
|
|
49
|
+
if (!entry.endsWith(".md"))
|
|
50
|
+
continue;
|
|
51
|
+
const file = path.join(dir, entry);
|
|
52
|
+
const raw = await fs.readFile(file, "utf8");
|
|
53
|
+
const parsed = parseFrontmatter(raw);
|
|
54
|
+
const description = parsed?.frontmatter?.["description"];
|
|
55
|
+
const argumentHint = parsed?.frontmatter?.["argument-hint"];
|
|
56
|
+
out.push({
|
|
57
|
+
name: path.basename(entry, ".md"),
|
|
58
|
+
description: typeof description === "string"
|
|
59
|
+
? description
|
|
60
|
+
: "(no description)",
|
|
61
|
+
argumentHint: typeof argumentHint === "string" ? argumentHint : undefined,
|
|
62
|
+
body: parsed?.body ?? raw,
|
|
63
|
+
source: file,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return out;
|
|
67
|
+
}
|
|
68
|
+
async function loadAgents(dir) {
|
|
69
|
+
if (!(await pathExists(dir)))
|
|
70
|
+
return [];
|
|
71
|
+
const entries = await fs.readdir(dir);
|
|
72
|
+
const out = [];
|
|
73
|
+
for (const entry of entries) {
|
|
74
|
+
if (!entry.endsWith(".md"))
|
|
75
|
+
continue;
|
|
76
|
+
const file = path.join(dir, entry);
|
|
77
|
+
const raw = await fs.readFile(file, "utf8");
|
|
78
|
+
const parsed = parseFrontmatter(raw);
|
|
79
|
+
if (!parsed)
|
|
80
|
+
continue;
|
|
81
|
+
const fm = parsed.frontmatter;
|
|
82
|
+
out.push({
|
|
83
|
+
name: typeof fm.name === "string" ? fm.name : path.basename(entry, ".md"),
|
|
84
|
+
description: typeof fm.description === "string" ? fm.description : "(no description)",
|
|
85
|
+
body: parsed.body,
|
|
86
|
+
source: file,
|
|
87
|
+
tools: typeof fm.tools === "string"
|
|
88
|
+
? fm.tools.split(",").map((s) => s.trim())
|
|
89
|
+
: undefined,
|
|
90
|
+
model: typeof fm.model === "string" ? fm.model : undefined,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
async function loadSkills(dir) {
|
|
96
|
+
if (!(await pathExists(dir)))
|
|
97
|
+
return [];
|
|
98
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
99
|
+
const out = [];
|
|
100
|
+
for (const entry of entries) {
|
|
101
|
+
if (!entry.isDirectory())
|
|
102
|
+
continue;
|
|
103
|
+
const skillFile = path.join(dir, entry.name, "SKILL.md");
|
|
104
|
+
if (!(await pathExists(skillFile)))
|
|
105
|
+
continue;
|
|
106
|
+
const raw = await fs.readFile(skillFile, "utf8");
|
|
107
|
+
const parsed = parseFrontmatter(raw);
|
|
108
|
+
if (!parsed)
|
|
109
|
+
continue;
|
|
110
|
+
out.push({ ...parsed, path: skillFile });
|
|
111
|
+
}
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
async function loadHooks(dir) {
|
|
115
|
+
const file = path.join(dir, "hooks.json");
|
|
116
|
+
if (!(await pathExists(file)))
|
|
117
|
+
return [];
|
|
118
|
+
const raw = await fs.readFile(file, "utf8");
|
|
119
|
+
const parsed = JSON.parse(raw);
|
|
120
|
+
const out = [];
|
|
121
|
+
for (const [event, group] of Object.entries(parsed.hooks ?? {})) {
|
|
122
|
+
if (!Array.isArray(group))
|
|
123
|
+
continue;
|
|
124
|
+
for (const item of group) {
|
|
125
|
+
const matcher = item.matcher;
|
|
126
|
+
const hooks = item.hooks ?? [];
|
|
127
|
+
for (const h of hooks) {
|
|
128
|
+
const hookObj = h;
|
|
129
|
+
if (hookObj.type !== "command" || !hookObj.command)
|
|
130
|
+
continue;
|
|
131
|
+
out.push({
|
|
132
|
+
event: event,
|
|
133
|
+
matcher,
|
|
134
|
+
command: hookObj.command,
|
|
135
|
+
timeout_ms: hookObj.timeout,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
142
|
+
async function loadMcp(root) {
|
|
143
|
+
const file = path.join(root, ".mcp.json");
|
|
144
|
+
if (!(await pathExists(file)))
|
|
145
|
+
return [];
|
|
146
|
+
const raw = await fs.readFile(file, "utf8");
|
|
147
|
+
const parsed = JSON.parse(raw);
|
|
148
|
+
return Object.entries(parsed.mcpServers ?? {}).map(([name, spec]) => ({
|
|
149
|
+
name,
|
|
150
|
+
command: spec.command,
|
|
151
|
+
args: spec.args,
|
|
152
|
+
env: spec.env,
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
export const PLUGINS_ROOT = PLUGINS_DIR;
|
|
156
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Skill } from "../types.js";
|
|
2
|
+
export interface PluginManifest {
|
|
3
|
+
name: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
author?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface SlashCommand {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
body: string;
|
|
12
|
+
source: string;
|
|
13
|
+
argumentHint?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface SubagentDefinition {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
body: string;
|
|
19
|
+
source: string;
|
|
20
|
+
tools?: string[];
|
|
21
|
+
model?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface HookSpec {
|
|
24
|
+
event: "PreToolUse" | "PostToolUse" | "Stop" | "SessionStart" | "SessionEnd" | "UserPromptSubmit";
|
|
25
|
+
matcher?: string;
|
|
26
|
+
command: string;
|
|
27
|
+
timeout_ms?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface LoadedPlugin {
|
|
30
|
+
manifest: PluginManifest;
|
|
31
|
+
root: string;
|
|
32
|
+
commands: SlashCommand[];
|
|
33
|
+
agents: SubagentDefinition[];
|
|
34
|
+
skills: Skill[];
|
|
35
|
+
hooks: HookSpec[];
|
|
36
|
+
mcpServers: {
|
|
37
|
+
name: string;
|
|
38
|
+
command: string;
|
|
39
|
+
args?: string[];
|
|
40
|
+
env?: Record<string, string>;
|
|
41
|
+
}[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EACD,YAAY,GACZ,aAAa,GACb,MAAM,GACN,cAAc,GACd,YAAY,GACZ,kBAAkB,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;CAChG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}
|