import { Plugin } from "../plugin"import { Format } from "../format"import { LSP } from "../lsp"import { FileWatcher } from "../file/watcher"import { File } from "../file"import { Skill } from "../skill/skill"import { Project } from "./project"import { Bus } from "../bus"import { Command } from "../command"import { Instance } from "./instance"import { Vcs } from "./vcs"import { Log } from "@/util/log"import { Snapshot } from "../snapshot"import { Truncate } from "../tool/truncation"import { RSILifecycle } from "../session/rsi/lifecycle"import { RLMArtifacts } from "../session/rlm/artifacts" export async function InstanceBootstrap() { Log.Default.info("bootstrapping", { directory: Instance.directory }) await Plugin.init() Format.init() await LSP.init() FileWatcher.init() File.init() Vcs.init() Snapshot.init() Truncate.init() // RSI lifecycle: archive unused learned skills, log high performers RSILifecycle.startupCheck().catch(() => {}) // RLM artifacts: remove 7-day old artifacts RLMArtifacts.cleanup().catch(() => {}) Bus.subscribe(Command.Event.Executed, async (payload) => { if (payload.properties.name === Command.Default.INIT) { await Project.setInitialized(Instance.project.id) } }) // Hot-reload the skill registry when a SKILL.md changes on disk (external // edits surface via the watcher when OPENSCIENCE_EXPERIMENTAL_FILEWATCHER=1; // in-app authoring self-invalidates through Skill.writeUser). Bus.subscribe(FileWatcher.Event.Updated, async (payload) => { if (payload.properties.file.endsWith("SKILL.md")) { await Skill.invalidate().catch(() => {}) } })}
import { Plugin } from "../plugin"
import { Format } from "../format"
import { LSP } from "../lsp"
import { FileWatcher } from "../file/watcher"
import { File } from "../file"
import { Skill } from "../skill/skill"
import { Project } from "./project"
import { Bus } from "../bus"
import { Command } from "../command"
import { Instance } from "./instance"
import { Vcs } from "./vcs"
import { Log } from "@/util/log"
import { Snapshot } from "../snapshot"
import { Truncate } from "../tool/truncation"
import { RSILifecycle } from "../session/rsi/lifecycle"
import { RLMArtifacts } from "../session/rlm/artifacts"
export async function InstanceBootstrap() {
Log.Default.info("bootstrapping", { directory: Instance.directory })
await Plugin.init()
Format.init()
await LSP.init()
FileWatcher.init()
File.init()
Vcs.init()
Snapshot.init()
Truncate.init()
// RSI lifecycle: archive unused learned skills, log high performers
RSILifecycle.startupCheck().catch(() => {})
// RLM artifacts: remove 7-day old artifacts
RLMArtifacts.cleanup().catch(() => {})
Bus.subscribe(Command.Event.Executed, async (payload) => {
if (payload.properties.name === Command.Default.INIT) {
await Project.setInitialized(Instance.project.id)
}
})
// Hot-reload the skill registry when a SKILL.md changes on disk (external
// edits surface via the watcher when OPENSCIENCE_EXPERIMENTAL_FILEWATCHER=1;
// in-app authoring self-invalidates through Skill.writeUser).
Bus.subscribe(FileWatcher.Event.Updated, async (payload) => {
if (payload.properties.file.endsWith("SKILL.md")) {
await Skill.invalidate().catch(() => {})
}
})
}