Introducing our main agent: Sisyphus (#113)
* docs: rename OmO agent to Sisyphus, OmO-Plan to Planner-Sisyphus 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * refactor: rename OmO agent to Sisyphus with automatic config migration - Rename OmO agent to Sisyphus (uses mythological pushing-the-boulder concept) - Rename OmO-Plan to Planner-Sisyphus for consistency - Update config schema: omo_agent → sisyphus_agent - Add backward compatibility: automatically migrate user's oh-my-opencode.json files - Migration handles old keys (OmO, omo, OmO-Plan, omo-plan) and rewrites config when detected - Update agent name mappings, index files, and type definitions - Add Sisyphus PNG asset to brand identity 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * docs: add Sisyphus mythology introduction and teammates concept to all READMEs 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * feat(startup-toast): show Sisyphus steering message when enabled - Updated startup toast to show "Sisyphus on steroids is steering OpenCode" when Sisyphus agent is enabled - Refactored getToastMessage function to handle conditional message rendering - Pass isSisyphusEnabled flag from plugin configuration to auto-update-checker hook 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * docs(sisyphus): add philosophical context to Sisyphus agent identity - Add "Why Sisyphus?" explanation connecting the daily work cycle of humans and AI agents - Emphasize code quality expectations: indistinguishable from senior engineer's work - Concise identity statement: work, delegate, verify, ship without AI slop This clarifies the agent's purpose and reinforces the principle that quality code should not reveal whether it was written by human or AI. 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
@@ -7,7 +7,34 @@ import { getConfigLoadErrors, clearConfigLoadErrors } from "../../shared/config-
|
||||
import type { AutoUpdateCheckerOptions } from "./types"
|
||||
|
||||
export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdateCheckerOptions = {}) {
|
||||
const { showStartupToast = true } = options
|
||||
const { showStartupToast = true, isSisyphusEnabled = false } = options
|
||||
|
||||
const getToastMessage = (isUpdate: boolean, latestVersion?: string): string => {
|
||||
if (isSisyphusEnabled) {
|
||||
return isUpdate
|
||||
? `Sisyphus on steroids is steering OpenCode.\nv${latestVersion} available. Restart to apply.`
|
||||
: `Sisyphus on steroids is steering OpenCode.`
|
||||
}
|
||||
return isUpdate
|
||||
? `OpenCode is now on Steroids. oMoMoMoMo...\nv${latestVersion} available. Restart OpenCode to apply.`
|
||||
: `OpenCode is now on Steroids. oMoMoMoMo...`
|
||||
}
|
||||
|
||||
const showVersionToast = async (version: string | null): Promise<void> => {
|
||||
const displayVersion = version ?? "unknown"
|
||||
await ctx.client.tui
|
||||
.showToast({
|
||||
body: {
|
||||
title: `OhMyOpenCode ${displayVersion}`,
|
||||
message: getToastMessage(false),
|
||||
variant: "info" as const,
|
||||
duration: 5000,
|
||||
},
|
||||
})
|
||||
.catch(() => {})
|
||||
log(`[auto-update-checker] Startup toast shown: v${displayVersion}`)
|
||||
}
|
||||
|
||||
let hasChecked = false
|
||||
|
||||
return {
|
||||
@@ -27,7 +54,7 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat
|
||||
log("[auto-update-checker] Skipped: local development mode")
|
||||
if (showStartupToast) {
|
||||
const version = getLocalDevVersion(ctx.directory) ?? getCachedVersion()
|
||||
await showVersionToast(ctx, version)
|
||||
await showVersionToast(version)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -35,7 +62,7 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat
|
||||
if (result.isPinned) {
|
||||
log(`[auto-update-checker] Skipped: version pinned to ${result.currentVersion}`)
|
||||
if (showStartupToast) {
|
||||
await showVersionToast(ctx, result.currentVersion)
|
||||
await showVersionToast(result.currentVersion)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -43,7 +70,7 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat
|
||||
if (!result.needsUpdate) {
|
||||
log("[auto-update-checker] No update needed")
|
||||
if (showStartupToast) {
|
||||
await showVersionToast(ctx, result.currentVersion)
|
||||
await showVersionToast(result.currentVersion)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -54,7 +81,7 @@ export function createAutoUpdateCheckerHook(ctx: PluginInput, options: AutoUpdat
|
||||
.showToast({
|
||||
body: {
|
||||
title: `OhMyOpenCode ${result.latestVersion}`,
|
||||
message: `OpenCode is now on Steroids. oMoMoMoMo...\nv${result.latestVersion} available. Restart OpenCode to apply.`,
|
||||
message: getToastMessage(true, result.latestVersion ?? undefined),
|
||||
variant: "info" as const,
|
||||
duration: 8000,
|
||||
},
|
||||
@@ -91,21 +118,6 @@ async function showConfigErrorsIfAny(ctx: PluginInput): Promise<void> {
|
||||
clearConfigLoadErrors()
|
||||
}
|
||||
|
||||
async function showVersionToast(ctx: PluginInput, version: string | null): Promise<void> {
|
||||
const displayVersion = version ?? "unknown"
|
||||
await ctx.client.tui
|
||||
.showToast({
|
||||
body: {
|
||||
title: `OhMyOpenCode ${displayVersion}`,
|
||||
message: `OpenCode is now on Steroids. oMoMoMoMo...`,
|
||||
variant: "info" as const,
|
||||
duration: 5000,
|
||||
},
|
||||
})
|
||||
.catch(() => {})
|
||||
log(`[auto-update-checker] Startup toast shown: v${displayVersion}`)
|
||||
}
|
||||
|
||||
export type { UpdateCheckResult, AutoUpdateCheckerOptions } from "./types"
|
||||
export { checkForUpdate } from "./checker"
|
||||
export { invalidatePackage, invalidateCache } from "./cache"
|
||||
|
||||
@@ -24,4 +24,5 @@ export interface UpdateCheckResult {
|
||||
|
||||
export interface AutoUpdateCheckerOptions {
|
||||
showStartupToast?: boolean
|
||||
isSisyphusEnabled?: boolean
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user