refactor(publish): parallel platform jobs with fresh OIDC tokens per job
- Split monolithic publish into build + parallel publish-platform + publish-main + release jobs - Each platform package gets its own OIDC token (fixes token expiration during large binary uploads) - Add --prepare-only flag to publish.ts for build step version sync - Matrix strategy: 7 parallel platform jobs - publish-main waits for all platforms before publishing main package
This commit is contained in:
105
script/generate-sisyphus-prompt.ts
Normal file
105
script/generate-sisyphus-prompt.ts
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bun
|
||||
/**
|
||||
* Generate the full Sisyphus system prompt and output to sisyphus-prompt.md
|
||||
*
|
||||
* Usage:
|
||||
* bun run script/generate-sisyphus-prompt.ts
|
||||
*/
|
||||
|
||||
import { createSisyphusAgent } from "../src/agents/sisyphus"
|
||||
import { ORACLE_PROMPT_METADATA } from "../src/agents/oracle"
|
||||
import { LIBRARIAN_PROMPT_METADATA } from "../src/agents/librarian"
|
||||
import { EXPLORE_PROMPT_METADATA } from "../src/agents/explore"
|
||||
import { MULTIMODAL_LOOKER_PROMPT_METADATA } from "../src/agents/multimodal-looker"
|
||||
import { createBuiltinSkills } from "../src/features/builtin-skills"
|
||||
import { DEFAULT_CATEGORIES, CATEGORY_DESCRIPTIONS } from "../src/tools/delegate-task/constants"
|
||||
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "../src/agents/dynamic-agent-prompt-builder"
|
||||
import type { BuiltinAgentName, AgentPromptMetadata } from "../src/agents/types"
|
||||
import { writeFileSync } from "node:fs"
|
||||
import { join } from "node:path"
|
||||
|
||||
// Build available agents (same logic as utils.ts)
|
||||
const agentMetadata: Record<string, AgentPromptMetadata> = {
|
||||
oracle: ORACLE_PROMPT_METADATA,
|
||||
librarian: LIBRARIAN_PROMPT_METADATA,
|
||||
explore: EXPLORE_PROMPT_METADATA,
|
||||
"multimodal-looker": MULTIMODAL_LOOKER_PROMPT_METADATA,
|
||||
}
|
||||
|
||||
const agentDescriptions: Record<string, string> = {
|
||||
oracle: "Read-only consultation agent. High-IQ reasoning specialist for debugging hard problems and high-difficulty architecture design.",
|
||||
librarian: "Specialized codebase understanding agent for multi-repository analysis, searching remote codebases, retrieving official documentation, and finding implementation examples using GitHub CLI, Context7, and Web Search. MUST BE USED when users ask to look up code in remote repositories, explain library internals, or find usage examples in open source.",
|
||||
explore: 'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis.',
|
||||
"multimodal-looker": "Analyze media files (PDFs, images, diagrams) that require interpretation beyond raw text. Extracts specific information or summaries from documents, describes visual content. Use when you need analyzed/extracted data rather than literal file contents.",
|
||||
}
|
||||
|
||||
const availableAgents: AvailableAgent[] = Object.entries(agentMetadata).map(([name, metadata]) => ({
|
||||
name: name as BuiltinAgentName,
|
||||
description: agentDescriptions[name] ?? "",
|
||||
metadata,
|
||||
}))
|
||||
|
||||
// Build available categories
|
||||
const availableCategories: AvailableCategory[] = Object.entries(DEFAULT_CATEGORIES).map(([name]) => ({
|
||||
name,
|
||||
description: CATEGORY_DESCRIPTIONS[name] ?? "General tasks",
|
||||
}))
|
||||
|
||||
// Build available skills
|
||||
const builtinSkills = createBuiltinSkills()
|
||||
const availableSkills: AvailableSkill[] = builtinSkills.map((skill) => ({
|
||||
name: skill.name,
|
||||
description: skill.description,
|
||||
location: "plugin" as const,
|
||||
}))
|
||||
|
||||
// Generate the agent config
|
||||
const model = "anthropic/claude-opus-4-5"
|
||||
const sisyphusConfig = createSisyphusAgent(
|
||||
model,
|
||||
availableAgents,
|
||||
undefined, // no tool names
|
||||
availableSkills,
|
||||
availableCategories
|
||||
)
|
||||
|
||||
// Output to file
|
||||
const outputPath = join(import.meta.dirname, "..", "sisyphus-prompt.md")
|
||||
const content = `# Sisyphus System Prompt
|
||||
|
||||
> Auto-generated by \`script/generate-sisyphus-prompt.ts\`
|
||||
> Generated at: ${new Date().toISOString()}
|
||||
|
||||
## Configuration
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| Model | \`${model}\` |
|
||||
| Max Tokens | \`${sisyphusConfig.maxTokens}\` |
|
||||
| Mode | \`${sisyphusConfig.mode}\` |
|
||||
| Thinking | ${sisyphusConfig.thinking ? `Budget: ${sisyphusConfig.thinking.budgetTokens}` : "N/A"} |
|
||||
|
||||
## Available Agents
|
||||
|
||||
${availableAgents.map((a) => `- **${a.name}**: ${a.description.split(".")[0]}`).join("\n")}
|
||||
|
||||
## Available Categories
|
||||
|
||||
${availableCategories.map((c) => `- **${c.name}**: ${c.description}`).join("\n")}
|
||||
|
||||
## Available Skills
|
||||
|
||||
${availableSkills.map((s) => `- **${s.name}**: ${s.description.split(".")[0]}`).join("\n")}
|
||||
|
||||
---
|
||||
|
||||
## Full System Prompt
|
||||
|
||||
\`\`\`markdown
|
||||
${sisyphusConfig.prompt}
|
||||
\`\`\`
|
||||
`
|
||||
|
||||
writeFileSync(outputPath, content)
|
||||
console.log(`Generated: ${outputPath}`)
|
||||
console.log(`Prompt length: ${sisyphusConfig.prompt?.length ?? 0} characters`)
|
||||
@@ -8,6 +8,7 @@ const PACKAGE_NAME = "oh-my-opencode"
|
||||
const bump = process.env.BUMP as "major" | "minor" | "patch" | undefined
|
||||
const versionOverride = process.env.VERSION
|
||||
const republishMode = process.env.REPUBLISH === "true"
|
||||
const prepareOnly = process.argv.includes("--prepare-only")
|
||||
|
||||
const PLATFORM_PACKAGES = [
|
||||
"darwin-arm64",
|
||||
@@ -390,6 +391,13 @@ async function main() {
|
||||
const newVersion = versionOverride || (bump ? bumpVersion(previous, bump) : bumpVersion(previous, "patch"))
|
||||
console.log(`New version: ${newVersion}\n`)
|
||||
|
||||
if (prepareOnly) {
|
||||
console.log("=== Prepare-only mode: updating versions ===")
|
||||
await updateAllPackageVersions(newVersion)
|
||||
console.log(`\n=== Versions updated to ${newVersion} ===`)
|
||||
return
|
||||
}
|
||||
|
||||
if (await checkVersionExists(newVersion)) {
|
||||
if (republishMode) {
|
||||
console.log(`Version ${newVersion} exists on npm. REPUBLISH mode: checking for missing platform packages...`)
|
||||
|
||||
Reference in New Issue
Block a user