@openlife/cli 1.8.2 → 1.9.3
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/.catalog/agents/ad-midas/AGENT.md +182 -0
- package/.catalog/agents/ads-analyst/AGENT.md +168 -0
- package/.catalog/agents/agency-agents/AGENT.md +208 -0
- package/.catalog/agents/aha-moment-identifier/AGENT.md +184 -0
- package/.catalog/agents/ai-builder-analyst/AGENT.md +214 -0
- package/.catalog/agents/ai-builder-builder/AGENT.md +241 -0
- package/.catalog/agents/ai-builder-design-director/AGENT.md +216 -0
- package/.catalog/agents/ai-builder-infra-data/AGENT.md +228 -0
- package/.catalog/agents/ai-builder-orchestrator/AGENT.md +207 -0
- package/.catalog/agents/ai-builder-qa-reviewer/AGENT.md +252 -0
- package/.catalog/agents/ai-builder-release-manager/AGENT.md +248 -0
- package/.catalog/agents/ai-scientist-council/AGENT.md +57 -0
- package/.catalog/agents/al-ries/AGENT.md +208 -0
- package/.catalog/agents/alert-classifier/AGENT.md +184 -0
- package/.catalog/agents/alina-wheeler/AGENT.md +217 -0
- package/.catalog/agents/ambient-listener/AGENT.md +153 -0
- package/.catalog/agents/analista-de-impacto/AGENT.md +383 -0
- package/.catalog/agents/analyst-brief-generator/AGENT.md +189 -0
- package/.catalog/agents/andre-chaperon/AGENT.md +239 -0
- package/.catalog/agents/anomaly-detector/AGENT.md +172 -0
- package/.catalog/agents/arbiter/AGENT.md +43 -0
- package/.catalog/agents/archetype-consultant/AGENT.md +248 -0
- package/.catalog/agents/architecture-checker/AGENT.md +178 -0
- package/.catalog/agents/arquivista/AGENT.md +59 -0
- package/.catalog/agents/art-director/AGENT.md +142 -0
- package/.catalog/agents/assayer/AGENT.md +49 -0
- package/.catalog/agents/atlas/AGENT.md +97 -0
- package/.catalog/agents/avaliadora/AGENT.md +66 -0
- package/.catalog/agents/avinash-kaushik/AGENT.md +301 -0
- package/.catalog/agents/bazaar/AGENT.md +43 -0
- package/.catalog/agents/beatriz-monteiro/AGENT.md +76 -0
- package/.catalog/agents/ben-settle/AGENT.md +227 -0
- package/.catalog/agents/bias-auditor/AGENT.md +177 -0
- package/.catalog/agents/blake-snyder/AGENT.md +258 -0
- package/.catalog/agents/board-chair/AGENT.md +194 -0
- package/.catalog/agents/brad-frost/AGENT.md +218 -0
- package/.catalog/agents/brand-chief/AGENT.md +191 -0
- package/.catalog/agents/brene-brown/AGENT.md +329 -0
- package/.catalog/agents/bridge/AGENT.md +43 -0
- package/.catalog/agents/brief-synthesizer/AGENT.md +120 -0
- package/.catalog/agents/bruno-cezar/AGENT.md +70 -0
- package/.catalog/agents/builder/AGENT.md +115 -0
- package/.catalog/agents/busterer/AGENT.md +141 -0
- package/.catalog/agents/byron-sharp/AGENT.md +202 -0
- package/.catalog/agents/caio-architect/AGENT.md +268 -0
- package/.catalog/agents/candidate-summary-agent/AGENT.md +171 -0
- package/.catalog/agents/capital-strategist/AGENT.md +55 -0
- package/.catalog/agents/cartographer/AGENT.md +147 -0
- package/.catalog/agents/catalyst/AGENT.md +43 -0
- package/.catalog/agents/chain/AGENT.md +51 -0
- package/.catalog/agents/chancellor/AGENT.md +101 -0
- package/.catalog/agents/charlie-munger/AGENT.md +623 -0
- package/.catalog/agents/checklist-builder/AGENT.md +182 -0
- package/.catalog/agents/chris-sanders/AGENT.md +238 -0
- package/.catalog/agents/chronicler/AGENT.md +49 -0
- package/.catalog/agents/cio-engineer/AGENT.md +242 -0
- package/.catalog/agents/claude-hopkins/AGENT.md +215 -0
- package/.catalog/agents/clause-extractor/AGENT.md +193 -0
- package/.catalog/agents/clayton-makepeace/AGENT.md +258 -0
- package/.catalog/agents/clinical-note-drafter/AGENT.md +174 -0
- package/.catalog/agents/closer/AGENT.md +71 -0
- package/.catalog/agents/cloudflare-archon/AGENT.md +70 -0
- package/.catalog/agents/cmo-architect/AGENT.md +241 -0
- package/.catalog/agents/command-generator/AGENT.md +154 -0
- package/.catalog/agents/community-growth/AGENT.md +180 -0
- package/.catalog/agents/conduit/AGENT.md +43 -0
- package/.catalog/agents/consul/AGENT.md +43 -0
- package/.catalog/agents/context-composer/AGENT.md +149 -0
- package/.catalog/agents/context-enricher/AGENT.md +173 -0
- package/.catalog/agents/contrarian/AGENT.md +43 -0
- package/.catalog/agents/coo-orchestrator/AGENT.md +226 -0
- package/.catalog/agents/copy-chief/AGENT.md +199 -0
- package/.catalog/agents/creative-analyst/AGENT.md +175 -0
- package/.catalog/agents/critias/AGENT.md +43 -0
- package/.catalog/agents/crm-manager/AGENT.md +73 -0
- package/.catalog/agents/crypto-orchestrator/AGENT.md +205 -0
- package/.catalog/agents/cto-architect/AGENT.md +227 -0
- package/.catalog/agents/curadora/AGENT.md +65 -0
- package/.catalog/agents/curriculum-mapper/AGENT.md +183 -0
- package/.catalog/agents/cyber-chief/AGENT.md +153 -0
- package/.catalog/agents/dan-harmon/AGENT.md +200 -0
- package/.catalog/agents/dan-kennedy/AGENT.md +235 -0
- package/.catalog/agents/dan-koe/AGENT.md +256 -0
- package/.catalog/agents/dan-mall/AGENT.md +211 -0
- package/.catalog/agents/data-chief/AGENT.md +200 -0
- package/.catalog/agents/data-profiler/AGENT.md +180 -0
- package/.catalog/agents/data-quality-reporter/AGENT.md +209 -0
- package/.catalog/agents/dave-malouf/AGENT.md +231 -0
- package/.catalog/agents/david-aaker/AGENT.md +199 -0
- package/.catalog/agents/david-deutsch/AGENT.md +230 -0
- package/.catalog/agents/david-ogilvy/AGENT.md +231 -0
- package/.catalog/agents/david-spinks/AGENT.md +310 -0
- package/.catalog/agents/defi-launcher/AGENT.md +158 -0
- package/.catalog/agents/delivery-tracker/AGENT.md +69 -0
- package/.catalog/agents/denise-yohn/AGENT.md +205 -0
- package/.catalog/agents/depesh-mandalia/AGENT.md +207 -0
- package/.catalog/agents/derek-sivers/AGENT.md +301 -0
- package/.catalog/agents/design-chief/AGENT.md +142 -0
- package/.catalog/agents/design-system-architect/AGENT.md +142 -0
- package/.catalog/agents/destiladora/AGENT.md +71 -0
- package/.catalog/agents/diagnostic-assessor/AGENT.md +176 -0
- package/.catalog/agents/dirber/AGENT.md +144 -0
- package/.catalog/agents/domain-scout/AGENT.md +168 -0
- package/.catalog/agents/domain-seer/AGENT.md +46 -0
- package/.catalog/agents/donald-miller/AGENT.md +212 -0
- package/.catalog/agents/emily-heyward/AGENT.md +180 -0
- package/.catalog/agents/engine/AGENT.md +43 -0
- package/.catalog/agents/estrategista-de-ciclo/AGENT.md +334 -0
- package/.catalog/agents/eugene-schwartz/AGENT.md +271 -0
- package/.catalog/agents/extratora/AGENT.md +65 -0
- package/.catalog/agents/false-positive-filter/AGENT.md +169 -0
- package/.catalog/agents/fenomenologo/AGENT.md +202 -0
- package/.catalog/agents/fiscal/AGENT.md +177 -0
- package/.catalog/agents/followup-agent/AGENT.md +69 -0
- package/.catalog/agents/format-adapter/AGENT.md +87 -0
- package/.catalog/agents/frank-kern/AGENT.md +228 -0
- package/.catalog/agents/frontend-engineer/AGENT.md +82 -0
- package/.catalog/agents/frontier-power-mapper/AGENT.md +56 -0
- package/.catalog/agents/fuzzer/AGENT.md +154 -0
- package/.catalog/agents/gary-bencivenga/AGENT.md +230 -0
- package/.catalog/agents/gary-halbert/AGENT.md +252 -0
- package/.catalog/agents/genome/AGENT.md +50 -0
- package/.catalog/agents/georgia-weidman/AGENT.md +211 -0
- package/.catalog/agents/guide/AGENT.md +43 -0
- package/.catalog/agents/hammer/AGENT.md +50 -0
- package/.catalog/agents/helena-voss/AGENT.md +79 -0
- package/.catalog/agents/helena-voss-v2/AGENT.md +196 -0
- package/.catalog/agents/herald/AGENT.md +98 -0
- package/.catalog/agents/hermes/AGENT.md +75 -0
- package/.catalog/agents/hormozi-ads/AGENT.md +192 -0
- package/.catalog/agents/hormozi-advisor/AGENT.md +211 -0
- package/.catalog/agents/hormozi-audit/AGENT.md +211 -0
- package/.catalog/agents/hormozi-chief/AGENT.md +144 -0
- package/.catalog/agents/hormozi-closer/AGENT.md +212 -0
- package/.catalog/agents/hormozi-content/AGENT.md +199 -0
- package/.catalog/agents/hormozi-copy/AGENT.md +185 -0
- package/.catalog/agents/hormozi-hooks/AGENT.md +210 -0
- package/.catalog/agents/hormozi-launch/AGENT.md +193 -0
- package/.catalog/agents/hormozi-leads/AGENT.md +231 -0
- package/.catalog/agents/hormozi-models/AGENT.md +224 -0
- package/.catalog/agents/hormozi-offers/AGENT.md +230 -0
- package/.catalog/agents/hormozi-pricing/AGENT.md +184 -0
- package/.catalog/agents/hormozi-retention/AGENT.md +199 -0
- package/.catalog/agents/hormozi-scale/AGENT.md +208 -0
- package/.catalog/agents/hormozi-workshop/AGENT.md +193 -0
- package/.catalog/agents/hostinger-warden/AGENT.md +46 -0
- package/.catalog/agents/html5-builder/AGENT.md +106 -0
- package/.catalog/agents/hype-detector/AGENT.md +52 -0
- package/.catalog/agents/identitario/AGENT.md +298 -0
- package/.catalog/agents/indexadora/AGENT.md +49 -0
- package/.catalog/agents/instagram-scout/AGENT.md +94 -0
- package/.catalog/agents/interaction-architect/AGENT.md +81 -0
- package/.catalog/agents/jean-noel-kapferer/AGENT.md +222 -0
- package/.catalog/agents/jim-manico/AGENT.md +215 -0
- package/.catalog/agents/jim-rutz/AGENT.md +226 -0
- package/.catalog/agents/joe-sugarman/AGENT.md +267 -0
- package/.catalog/agents/john-carlton/AGENT.md +236 -0
- package/.catalog/agents/jon-benson/AGENT.md +229 -0
- package/.catalog/agents/joseph-campbell/AGENT.md +217 -0
- package/.catalog/agents/kasim-aslam/AGENT.md +191 -0
- package/.catalog/agents/keith-johnstone/AGENT.md +190 -0
- package/.catalog/agents/kevin-keller/AGENT.md +232 -0
- package/.catalog/agents/kindra-hall/AGENT.md +195 -0
- package/.catalog/agents/lara-coordinator/AGENT.md +147 -0
- package/.catalog/agents/lead-qualifier/AGENT.md +73 -0
- package/.catalog/agents/leitora-critica/AGENT.md +70 -0
- package/.catalog/agents/lens/AGENT.md +50 -0
- package/.catalog/agents/log-analyzer/AGENT.md +176 -0
- package/.catalog/agents/logic-reviewer/AGENT.md +177 -0
- package/.catalog/agents/lp-backend-dev/AGENT.md +198 -0
- package/.catalog/agents/lp-copywriter/AGENT.md +162 -0
- package/.catalog/agents/lp-design-architect/AGENT.md +209 -0
- package/.catalog/agents/lp-frontend-dev/AGENT.md +194 -0
- package/.catalog/agents/lp-image-creator/AGENT.md +156 -0
- package/.catalog/agents/lp-integrator/AGENT.md +182 -0
- package/.catalog/agents/lp-researcher/AGENT.md +169 -0
- package/.catalog/agents/lp-reviewer/AGENT.md +218 -0
- package/.catalog/agents/lp-strategist/AGENT.md +159 -0
- package/.catalog/agents/magistrate/AGENT.md +43 -0
- package/.catalog/agents/manifestador/AGENT.md +312 -0
- package/.catalog/agents/marcus-carey/AGENT.md +233 -0
- package/.catalog/agents/marcus-leal/AGENT.md +70 -0
- package/.catalog/agents/market-economist/AGENT.md +60 -0
- package/.catalog/agents/marshall-ganz/AGENT.md +200 -0
- package/.catalog/agents/marty-neumeier/AGENT.md +203 -0
- package/.catalog/agents/matthew-dicks/AGENT.md +185 -0
- package/.catalog/agents/media-buyer/AGENT.md +192 -0
- package/.catalog/agents/medical-coder/AGENT.md +175 -0
- package/.catalog/agents/merchant/AGENT.md +43 -0
- package/.catalog/agents/mercury/AGENT.md +50 -0
- package/.catalog/agents/metadata-artist/AGENT.md +208 -0
- package/.catalog/agents/miller-sticky-brand/AGENT.md +213 -0
- package/.catalog/agents/mirror/AGENT.md +49 -0
- package/.catalog/agents/molly-pittman/AGENT.md +218 -0
- package/.catalog/agents/motion-designer/AGENT.md +88 -0
- package/.catalog/agents/movement-architect/AGENT.md +243 -0
- package/.catalog/agents/movement-chief/AGENT.md +168 -0
- package/.catalog/agents/naming-strategist/AGENT.md +204 -0
- package/.catalog/agents/nancy-duarte/AGENT.md +187 -0
- package/.catalog/agents/naval-ravikant/AGENT.md +284 -0
- package/.catalog/agents/nicholas-kusmich/AGENT.md +190 -0
- package/.catalog/agents/nick-mehta/AGENT.md +327 -0
- package/.catalog/agents/node-scorer/AGENT.md +137 -0
- package/.catalog/agents/objection-handler/AGENT.md +73 -0
- package/.catalog/agents/omar-santos/AGENT.md +239 -0
- package/.catalog/agents/operator-brain/AGENT.md +54 -0
- package/.catalog/agents/opportunity-strategist/AGENT.md +61 -0
- package/.catalog/agents/ops-coordinator/AGENT.md +75 -0
- package/.catalog/agents/oracle/AGENT.md +43 -0
- package/.catalog/agents/oren-klaff/AGENT.md +199 -0
- package/.catalog/agents/parent-report-agent/AGENT.md +186 -0
- package/.catalog/agents/park-howell/AGENT.md +185 -0
- package/.catalog/agents/parris-lampropoulos/AGENT.md +221 -0
- package/.catalog/agents/pathfinder/AGENT.md +60 -0
- package/.catalog/agents/patrick-lencioni/AGENT.md +427 -0
- package/.catalog/agents/pattern-analyst/AGENT.md +93 -0
- package/.catalog/agents/pedro-sobral/AGENT.md +191 -0
- package/.catalog/agents/perfectionist/AGENT.md +136 -0
- package/.catalog/agents/performance-analyst/AGENT.md +168 -0
- package/.catalog/agents/peter-fader/AGENT.md +279 -0
- package/.catalog/agents/peter-kim/AGENT.md +212 -0
- package/.catalog/agents/peter-thiel/AGENT.md +302 -0
- package/.catalog/agents/pixel-specialist/AGENT.md +177 -0
- package/.catalog/agents/playbook-enforcer/AGENT.md +194 -0
- package/.catalog/agents/postmortem-writer/AGENT.md +193 -0
- package/.catalog/agents/press-kit-hunter/AGENT.md +101 -0
- package/.catalog/agents/priority-engine/AGENT.md +71 -0
- package/.catalog/agents/proactive-outreach/AGENT.md +211 -0
- package/.catalog/agents/progress-tracker/AGENT.md +192 -0
- package/.catalog/agents/project-architect/AGENT.md +70 -0
- package/.catalog/agents/proposal-writer/AGENT.md +74 -0
- package/.catalog/agents/quality-reviewer/AGENT.md +184 -0
- package/.catalog/agents/rafa-ads/AGENT.md +236 -0
- package/.catalog/agents/rafa-content/AGENT.md +126 -0
- package/.catalog/agents/rafa-copy-master/AGENT.md +150 -0
- package/.catalog/agents/rafa-growth-router/AGENT.md +168 -0
- package/.catalog/agents/rafa-hooks/AGENT.md +106 -0
- package/.catalog/agents/rafa-leads/AGENT.md +113 -0
- package/.catalog/agents/rafa-lens/AGENT.md +62 -0
- package/.catalog/agents/railway-conductor/AGENT.md +70 -0
- package/.catalog/agents/ralph-burns/AGENT.md +196 -0
- package/.catalog/agents/ray-dalio/AGENT.md +619 -0
- package/.catalog/agents/redline-drafter/AGENT.md +198 -0
- package/.catalog/agents/reference-hunter/AGENT.md +192 -0
- package/.catalog/agents/reid-hoffman/AGENT.md +311 -0
- package/.catalog/agents/remediation-suggester/AGENT.md +173 -0
- package/.catalog/agents/resume-parser/AGENT.md +171 -0
- package/.catalog/agents/retrospective-agent/AGENT.md +70 -0
- package/.catalog/agents/review-summary-writer/AGENT.md +177 -0
- package/.catalog/agents/ripper/AGENT.md +154 -0
- package/.catalog/agents/risk-flagger/AGENT.md +196 -0
- package/.catalog/agents/robert-collier/AGENT.md +216 -0
- package/.catalog/agents/rogue/AGENT.md +149 -0
- package/.catalog/agents/root-cause-correlator/AGENT.md +187 -0
- package/.catalog/agents/runbook-executor/AGENT.md +180 -0
- package/.catalog/agents/russell-brunson/AGENT.md +262 -0
- package/.catalog/agents/ry-schwartz/AGENT.md +218 -0
- package/.catalog/agents/sales-strategist/AGENT.md +74 -0
- package/.catalog/agents/scale-optimizer/AGENT.md +177 -0
- package/.catalog/agents/schema-validator/AGENT.md +173 -0
- package/.catalog/agents/scribe/AGENT.md +101 -0
- package/.catalog/agents/sculptor/AGENT.md +110 -0
- package/.catalog/agents/sean-ellis/AGENT.md +336 -0
- package/.catalog/agents/security-auditor/AGENT.md +195 -0
- package/.catalog/agents/security-reviewer/AGENT.md +178 -0
- package/.catalog/agents/security-sentinel/AGENT.md +47 -0
- package/.catalog/agents/sentinel/AGENT.md +54 -0
- package/.catalog/agents/shannon-runner/AGENT.md +141 -0
- package/.catalog/agents/shawn-coyne/AGENT.md +241 -0
- package/.catalog/agents/shield/AGENT.md +43 -0
- package/.catalog/agents/shortlist-ranker/AGENT.md +168 -0
- package/.catalog/agents/simon-sinek/AGENT.md +324 -0
- package/.catalog/agents/skills-matcher/AGENT.md +181 -0
- package/.catalog/agents/smelter/AGENT.md +50 -0
- package/.catalog/agents/solana-dev/AGENT.md +187 -0
- package/.catalog/agents/status-page-updater/AGENT.md +204 -0
- package/.catalog/agents/stefan-georgi/AGENT.md +221 -0
- package/.catalog/agents/story-chief/AGENT.md +188 -0
- package/.catalog/agents/strategist/AGENT.md +113 -0
- package/.catalog/agents/style-enforcer/AGENT.md +180 -0
- package/.catalog/agents/summary-reporter/AGENT.md +236 -0
- package/.catalog/agents/task-decomposer/AGENT.md +138 -0
- package/.catalog/agents/task-manager/AGENT.md +75 -0
- package/.catalog/agents/terminal/AGENT.md +43 -0
- package/.catalog/agents/test-agent/AGENT.md +8 -0
- package/.catalog/agents/threat-prioritizer/AGENT.md +183 -0
- package/.catalog/agents/todd-brown/AGENT.md +204 -0
- package/.catalog/agents/token-architect/AGENT.md +180 -0
- package/.catalog/agents/tokenomics-strategist/AGENT.md +172 -0
- package/.catalog/agents/tom-breeze/AGENT.md +208 -0
- package/.catalog/agents/tooltip-generator/AGENT.md +181 -0
- package/.catalog/agents/traffic-chief/AGENT.md +130 -0
- package/.catalog/agents/tree-integrator/AGENT.md +151 -0
- package/.catalog/agents/tree-orchestrator/AGENT.md +151 -0
- package/.catalog/agents/tree-validator/AGENT.md +154 -0
- package/.catalog/agents/trend-historian/AGENT.md +82 -0
- package/.catalog/agents/tunnel-master/AGENT.md +53 -0
- package/.catalog/agents/tutor-agent/AGENT.md +204 -0
- package/.catalog/agents/ui-engineer/AGENT.md +135 -0
- package/.catalog/agents/user-behavior-tracker/AGENT.md +183 -0
- package/.catalog/agents/ux-critic/AGENT.md +82 -0
- package/.catalog/agents/ux-designer/AGENT.md +138 -0
- package/.catalog/agents/vercel-pilot/AGENT.md +51 -0
- package/.catalog/agents/vision-chief/AGENT.md +234 -0
- package/.catalog/agents/visual-ads/AGENT.md +115 -0
- package/.catalog/agents/visual-director/AGENT.md +79 -0
- package/.catalog/agents/visual-generator/AGENT.md +141 -0
- package/.catalog/agents/visual-researcher/AGENT.md +100 -0
- package/.catalog/agents/voice/AGENT.md +43 -0
- package/.catalog/agents/vulcan/AGENT.md +107 -0
- package/.catalog/agents/wave-dispatcher/AGENT.md +172 -0
- package/.catalog/agents/weaver/AGENT.md +49 -0
- package/.catalog/agents/wes-kao/AGENT.md +301 -0
- package/.catalog/agents/wire/AGENT.md +43 -0
- package/.catalog/agents/yvon-chouinard/AGENT.md +308 -0
- package/.catalog/capabilities/deep-research/INDEX.md +26 -0
- package/.catalog/capabilities/deep-research/capability.yaml +30 -0
- package/.catalog/capabilities/deep-research/skills/advanced-query-planning.md +24 -0
- package/.catalog/capabilities/deep-research/skills/contradiction-analysis.md +24 -0
- package/.catalog/capabilities/deep-research/skills/evidence-synthesis.md +24 -0
- package/.catalog/capabilities/deep-research/skills/executive-briefing.md +24 -0
- package/.catalog/capabilities/deep-research/skills/source-credibility-scoring.md +24 -0
- package/.catalog/capabilities/deep-research/squads/research-squad/SQUAD.md +18 -0
- package/.catalog/capabilities/deep-research/workflows/deep-research-flow.yaml +15 -0
- package/.catalog/mcps/my-mcp/REFERENCE.md +7 -0
- package/.catalog/mcps/test-mcp/mcp.json +7 -0
- package/.catalog/skill-networks.json +29 -0
- package/.catalog/skills/1password/SKILL.md +34 -0
- package/.catalog/skills/apple-notes/SKILL.md +34 -0
- package/.catalog/skills/apple-reminders/SKILL.md +34 -0
- package/.catalog/skills/bear-notes/SKILL.md +34 -0
- package/.catalog/skills/blogwatcher/SKILL.md +34 -0
- package/.catalog/skills/blucli/SKILL.md +34 -0
- package/.catalog/skills/bluebubbles/SKILL.md +34 -0
- package/.catalog/skills/browser-use/SKILL.md +132 -0
- package/.catalog/skills/camsnap/SKILL.md +34 -0
- package/.catalog/skills/canvas/SKILL.md +34 -0
- package/.catalog/skills/clawhub/SKILL.md +34 -0
- package/.catalog/skills/coding-agent/SKILL.md +34 -0
- package/.catalog/skills/design-extractor/OPENLIFE_INSTALL.md +24 -0
- package/.catalog/skills/design-extractor/SKILL.md +413 -0
- package/.catalog/skills/design-extractor/references/css-patterns.md +97 -0
- package/.catalog/skills/discord/SKILL.md +34 -0
- package/.catalog/skills/eightctl/SKILL.md +34 -0
- package/.catalog/skills/gemini/SKILL.md +34 -0
- package/.catalog/skills/gh-issues/SKILL.md +34 -0
- package/.catalog/skills/gifgrep/SKILL.md +34 -0
- package/.catalog/skills/github/SKILL.md +34 -0
- package/.catalog/skills/gog/SKILL.md +34 -0
- package/.catalog/skills/goplaces/SKILL.md +34 -0
- package/.catalog/skills/healthcheck/SKILL.md +34 -0
- package/.catalog/skills/himalaya/SKILL.md +34 -0
- package/.catalog/skills/imsg/SKILL.md +34 -0
- package/.catalog/skills/mcporter/SKILL.md +34 -0
- package/.catalog/skills/model-usage/SKILL.md +34 -0
- package/.catalog/skills/nano-banana-pro/SKILL.md +34 -0
- package/.catalog/skills/nano-pdf/SKILL.md +34 -0
- package/.catalog/skills/node-connect/SKILL.md +34 -0
- package/.catalog/skills/notion/SKILL.md +34 -0
- package/.catalog/skills/obsidian/SKILL.md +34 -0
- package/.catalog/skills/openai-image-gen/SKILL.md +34 -0
- package/.catalog/skills/openai-whisper/SKILL.md +34 -0
- package/.catalog/skills/openai-whisper-api/SKILL.md +34 -0
- package/.catalog/skills/openhue/SKILL.md +34 -0
- package/.catalog/skills/oracle/SKILL.md +34 -0
- package/.catalog/skills/ordercli/SKILL.md +34 -0
- package/.catalog/skills/peekaboo/SKILL.md +34 -0
- package/.catalog/skills/sag/SKILL.md +34 -0
- package/.catalog/skills/sample-from-url/IMPORTED_REFERENCE.md +13 -0
- package/.catalog/skills/session-logs/SKILL.md +34 -0
- package/.catalog/skills/sherpa-onnx-tts/SKILL.md +34 -0
- package/.catalog/skills/skill-creator/SKILL.md +34 -0
- package/.catalog/skills/slack/SKILL.md +34 -0
- package/.catalog/skills/songsee/SKILL.md +34 -0
- package/.catalog/skills/sonoscli/SKILL.md +34 -0
- package/.catalog/skills/spotify-player/SKILL.md +34 -0
- package/.catalog/skills/summarize/SKILL.md +34 -0
- package/.catalog/skills/test-skill/REFERENCE.md +7 -0
- package/.catalog/skills/test-skill-autogen/SKILL.md +9 -0
- package/.catalog/skills/things-mac/SKILL.md +34 -0
- package/.catalog/skills/tmux/SKILL.md +34 -0
- package/.catalog/skills/trello/SKILL.md +34 -0
- package/.catalog/skills/video-frames/SKILL.md +34 -0
- package/.catalog/skills/voice-call/SKILL.md +34 -0
- package/.catalog/skills/wacli/SKILL.md +34 -0
- package/.catalog/skills/weather/SKILL.md +34 -0
- package/.catalog/skills/xurl/SKILL.md +34 -0
- package/.catalog/squads/00-governance-advisory-board/SQUAD.md +103 -0
- package/.catalog/squads/00-governance-advisory-board/workflows/wf-board-meeting.yaml +25 -0
- package/.catalog/squads/00-governance-advisory-board/workflows/wf-decision-framework.yaml +25 -0
- package/.catalog/squads/00-governance-c-level-squad/SQUAD.md +93 -0
- package/.catalog/squads/00-governance-c-level-squad/workflows/wf-board-presentation.yaml +25 -0
- package/.catalog/squads/00-governance-c-level-squad/workflows/wf-strategic-planning.yaml +25 -0
- package/.catalog/squads/00-governance-capital-ai/SQUAD.md +147 -0
- package/.catalog/squads/00-governance-capital-ai-canon-v1-livros-e-grandes-mentes/SQUAD.md +140 -0
- package/.catalog/squads/00-governance-capital-ai-definicao-canonica/SQUAD.md +49 -0
- package/.catalog/squads/00-governance-conselho/SQUAD.md +116 -0
- package/.catalog/squads/00-governance-host-quest/SQUAD.md +132 -0
- package/.catalog/squads/00-governance-project-ops-squad/SQUAD.md +97 -0
- package/.catalog/squads/00-governance-project-ops-squad/workflows/mission-to-project.yaml +25 -0
- package/.catalog/squads/00-governance-project-ops-squad/workflows/sprint-planning.yaml +25 -0
- package/.catalog/squads/00-governance-project-ops-squad/workflows/weekly-review.yaml +25 -0
- package/.catalog/squads/00-governance-scrap-master/SQUAD.md +124 -0
- package/.catalog/squads/01-meta-framework-ai-builder/SQUAD.md +167 -0
- package/.catalog/squads/01-meta-framework-aiobuilder-funcionalidades-inspiradas-em-claude-code/SQUAD.md +119 -0
- package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/SQUAD.md +130 -0
- package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/workflows/tree-analysis-flow.yaml +25 -0
- package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/workflows/tree-execution-flow.yaml +25 -0
- package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/workflows/tree-planning-flow.yaml +25 -0
- package/.catalog/squads/01-meta-framework-swarm-tree-orchestration/workflows/tree-resume-flow.yaml +25 -0
- package/.catalog/squads/02-product-growth-ads-xpower/SQUAD.md +129 -0
- package/.catalog/squads/02-product-growth-awards/SQUAD.md +123 -0
- package/.catalog/squads/02-product-growth-brand-squad/SQUAD.md +136 -0
- package/.catalog/squads/02-product-growth-brand-squad/workflows/wf-brand-creation.yaml +25 -0
- package/.catalog/squads/02-product-growth-brand-squad/workflows/wf-rebrand.yaml +25 -0
- package/.catalog/squads/02-product-growth-copy-squad/SQUAD.md +148 -0
- package/.catalog/squads/02-product-growth-copy-squad/workflows/wf-copy-review-cycle.yaml +25 -0
- package/.catalog/squads/02-product-growth-copy-squad/workflows/wf-full-copy-project.yaml +25 -0
- package/.catalog/squads/02-product-growth-design-squad/SQUAD.md +98 -0
- package/.catalog/squads/02-product-growth-design-squad/workflows/wf-design-system-creation.yaml +25 -0
- package/.catalog/squads/02-product-growth-design-squad/workflows/wf-feature-design.yaml +25 -0
- package/.catalog/squads/02-product-growth-fabrica-ads/SQUAD.md +157 -0
- package/.catalog/squads/02-product-growth-fabrica-imortais-backup/SQUAD.md +148 -0
- package/.catalog/squads/02-product-growth-hormozi-squad/SQUAD.md +118 -0
- package/.catalog/squads/02-product-growth-hormozi-squad/workflows/wf-business-turnaround.yaml +25 -0
- package/.catalog/squads/02-product-growth-hormozi-squad/workflows/wf-offer-creation.yaml +25 -0
- package/.catalog/squads/02-product-growth-movement/SQUAD.md +94 -0
- package/.catalog/squads/02-product-growth-movement/workflows/wf-movement-launch.yaml +25 -0
- package/.catalog/squads/02-product-growth-saas-onboarding-activator/SQUAD.md +103 -0
- package/.catalog/squads/02-product-growth-saas-onboarding-activator/workflows/full-onboarding-activation-workflow.yaml +25 -0
- package/.catalog/squads/02-product-growth-saas-onboarding-activator/workflows/quick-engagement-boost-workflow.yaml +25 -0
- package/.catalog/squads/02-product-growth-sales-squad/SQUAD.md +112 -0
- package/.catalog/squads/02-product-growth-sales-squad/workflows/followup-sequence.yaml +25 -0
- package/.catalog/squads/02-product-growth-sales-squad/workflows/full-sales-cycle.yaml +25 -0
- package/.catalog/squads/02-product-growth-sales-squad/workflows/proposal-flow.yaml +25 -0
- package/.catalog/squads/02-product-growth-storytelling/SQUAD.md +106 -0
- package/.catalog/squads/02-product-growth-storytelling/workflows/wf-brand-narrative.yaml +25 -0
- package/.catalog/squads/02-product-growth-storytelling/workflows/wf-story-development.yaml +25 -0
- package/.catalog/squads/02-product-growth-traffic-masters/SQUAD.md +117 -0
- package/.catalog/squads/02-product-growth-traffic-masters/workflows/wf-account-audit.yaml +25 -0
- package/.catalog/squads/02-product-growth-traffic-masters/workflows/wf-campaign-launch.yaml +25 -0
- package/.catalog/squads/02-product-growth-ultimate-landingpage/SQUAD.md +114 -0
- package/.catalog/squads/03-engineering-quality-automated-code-review-squad/SQUAD.md +102 -0
- package/.catalog/squads/03-engineering-quality-automated-code-review-squad/workflows/full-code-review-workflow.yaml +25 -0
- package/.catalog/squads/03-engineering-quality-automated-code-review-squad/workflows/quick-security-check-workflow.yaml +25 -0
- package/.catalog/squads/03-engineering-quality-cloudflare-mini/SQUAD.md +65 -0
- package/.catalog/squads/03-engineering-quality-seguranca/SQUAD.md +24 -0
- package/.catalog/squads/04-data-security-cybersecurity/SQUAD.md +113 -0
- package/.catalog/squads/04-data-security-cybersecurity/workflows/wf-incident-response.yaml +25 -0
- package/.catalog/squads/04-data-security-cybersecurity/workflows/wf-pentest-engagement.yaml +25 -0
- package/.catalog/squads/04-data-security-data-quality-guardian/SQUAD.md +102 -0
- package/.catalog/squads/04-data-security-data-quality-guardian/workflows/full-data-quality-audit-workflow.yaml +25 -0
- package/.catalog/squads/04-data-security-data-quality-guardian/workflows/quick-data-check-workflow.yaml +25 -0
- package/.catalog/squads/04-data-security-data-squad/SQUAD.md +95 -0
- package/.catalog/squads/04-data-security-data-squad/workflows/wf-analytics-setup.yaml +25 -0
- package/.catalog/squads/04-data-security-data-squad/workflows/wf-growth-sprint.yaml +25 -0
- package/.catalog/squads/04-data-security-incident-response-squad/SQUAD.md +103 -0
- package/.catalog/squads/04-data-security-incident-response-squad/workflows/full-incident-response-workflow.yaml +25 -0
- package/.catalog/squads/04-data-security-incident-response-squad/workflows/rapid-triage-workflow.yaml +25 -0
- package/.catalog/squads/04-data-security-soc-alert-triage/SQUAD.md +103 -0
- package/.catalog/squads/04-data-security-soc-alert-triage/workflows/full-alert-triage-workflow.yaml +25 -0
- package/.catalog/squads/04-data-security-soc-alert-triage/workflows/rapid-classification-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-adaptive-tutor-k12/SQUAD.md +102 -0
- package/.catalog/squads/05-domain-specialists-adaptive-tutor-k12/workflows/full-tutoring-cycle-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-adaptive-tutor-k12/workflows/quick-practice-session-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-ambient-clinical-scribe/SQUAD.md +102 -0
- package/.catalog/squads/05-domain-specialists-ambient-clinical-scribe/workflows/full-documentation-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-ambient-clinical-scribe/workflows/quick-note-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-bibliotecaria/SQUAD.md +121 -0
- package/.catalog/squads/05-domain-specialists-contract-review-squad/SQUAD.md +104 -0
- package/.catalog/squads/05-domain-specialists-contract-review-squad/workflows/full-contract-review-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-contract-review-squad/workflows/quick-risk-assessment-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-crypto-token-forge/SQUAD.md +143 -0
- package/.catalog/squads/05-domain-specialists-crypto-token-forge/workflows/full-token-launch-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-crypto-token-forge/workflows/memecoin-express-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-crypto-token-forge/workflows/utility-token-launch-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-legaltech/SQUAD.md +28 -0
- package/.catalog/squads/05-domain-specialists-resume-screener-squad/SQUAD.md +102 -0
- package/.catalog/squads/05-domain-specialists-resume-screener-squad/workflows/full-resume-screening-workflow.yaml +25 -0
- package/.catalog/squads/05-domain-specialists-resume-screener-squad/workflows/quick-skills-match-workflow.yaml +25 -0
- package/.catalog/squads/mirofish-intel-mirofish-intel/SQUAD.md +70 -0
- package/.catalog/squads/mirofish-mirofish-squad/SQUAD.md +177 -0
- package/.catalog/squads/openlife-auto-criar-pipeline-de-revis-o-jur-dica-para-contratos-1777092830690/SQUAD.md +16 -0
- package/.catalog/squads/operator-cli/SQUAD.md +33 -0
- package/.catalog/squads/telegram-autonomy/SQUAD.md +34 -0
- package/.catalog/squads/test-squad/SQUAD.md +8 -0
- package/.catalog/teams.json +16 -0
- package/.openlife/method/agents/atlas.md +102 -0
- package/.openlife/method/agents/builder.md +92 -0
- package/.openlife/method/agents/conductor.md +93 -0
- package/.openlife/method/agents/forge.md +96 -0
- package/.openlife/method/agents/genesis.md +115 -0
- package/.openlife/method/agents/lyra.md +85 -0
- package/.openlife/method/agents/maestro.md +92 -0
- package/.openlife/method/agents/mesh.md +101 -0
- package/.openlife/method/agents/prism.md +85 -0
- package/.openlife/method/agents/sentinel.md +115 -0
- package/.openlife/method/agents/steward.md +93 -0
- package/.openlife/method/agents/vortex.md +94 -0
- package/dist/cli/CommandFlowRunner.js +167 -0
- package/dist/cli/install/Phases.js +43 -0
- package/dist/index.js +118 -0
- package/dist/orchestrator/AgentRegistry.js +45 -1
- package/dist/orchestrator/ProjectMetadata.js +183 -0
- package/dist/orchestrator/SkillRegistryV2.js +48 -3
- package/dist/orchestrator/SquadRegistry.js +47 -1
- package/dist/test_flow_run_cli.js +183 -0
- package/dist/test_host_uninstaller.js +12 -2
- package/dist/test_openlife_method_inventory.js +183 -0
- package/dist/test_workflow_e2e.js +10 -3
- package/dist-templates/claude-code/agents/openlife-atlas.md +12 -44
- package/dist-templates/claude-code/agents/openlife-builder.md +20 -0
- package/dist-templates/claude-code/agents/openlife-conductor.md +20 -0
- package/dist-templates/claude-code/agents/openlife-forge.md +12 -34
- package/dist-templates/claude-code/agents/openlife-genesis.md +12 -51
- package/dist-templates/claude-code/agents/openlife-lyra.md +12 -32
- package/dist-templates/claude-code/agents/openlife-maestro.md +27 -41
- package/dist-templates/claude-code/agents/openlife-mesh.md +20 -0
- package/dist-templates/claude-code/agents/openlife-prism.md +20 -0
- package/dist-templates/claude-code/agents/openlife-sentinel.md +20 -0
- package/dist-templates/claude-code/agents/openlife-steward.md +20 -0
- package/dist-templates/claude-code/agents/openlife-vortex.md +20 -0
- package/dist-templates/claude-code/commands/openlife/agents/atlas.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/builder.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/conductor.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/forge.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/genesis.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/lyra.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/maestro.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/mesh.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/prism.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/sentinel.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/steward.md +24 -0
- package/dist-templates/claude-code/commands/openlife/agents/vortex.md +24 -0
- package/dist-templates/claude-code/commands/openlife/ask.md +13 -7
- package/dist-templates/claude-code/commands/openlife/audit.md +14 -0
- package/dist-templates/claude-code/commands/openlife/doctor.md +11 -14
- package/dist-templates/claude-code/commands/openlife/dream.md +10 -16
- package/dist-templates/claude-code/commands/openlife/explore.md +14 -0
- package/dist-templates/claude-code/commands/openlife/flow/brownfield-discovery.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/brownfield-fullstack.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/brownfield-service.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/brownfield-ui.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/epic.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/greenfield-fullstack.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/greenfield-service.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/greenfield-ui.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/qa-loop.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/release.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/spec-pipeline.md +20 -0
- package/dist-templates/claude-code/commands/openlife/flow/story-cycle.md +20 -0
- package/dist-templates/claude-code/commands/openlife/health.md +14 -0
- package/dist-templates/claude-code/commands/openlife/plan.md +14 -0
- package/dist-templates/claude-code/commands/openlife/review.md +14 -0
- package/dist-templates/claude-code/commands/openlife/ship.md +14 -0
- package/dist-templates/claude-code/commands/openlife/start.md +25 -0
- package/dist-templates/claude-code/commands/openlife/status.md +10 -10
- package/dist-templates/claude-code/commands/openlife/story.md +18 -0
- package/dist-templates/codex/agents/openlife-atlas.md +12 -44
- package/dist-templates/codex/agents/openlife-builder.md +20 -0
- package/dist-templates/codex/agents/openlife-conductor.md +20 -0
- package/dist-templates/codex/agents/openlife-forge.md +12 -34
- package/dist-templates/codex/agents/openlife-genesis.md +12 -51
- package/dist-templates/codex/agents/openlife-lyra.md +12 -32
- package/dist-templates/codex/agents/openlife-maestro.md +27 -41
- package/dist-templates/codex/agents/openlife-mesh.md +20 -0
- package/dist-templates/codex/agents/openlife-prism.md +20 -0
- package/dist-templates/codex/agents/openlife-sentinel.md +20 -0
- package/dist-templates/codex/agents/openlife-steward.md +20 -0
- package/dist-templates/codex/agents/openlife-vortex.md +20 -0
- package/dist-templates/codex/commands/openlife/agents/atlas.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/builder.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/conductor.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/forge.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/genesis.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/lyra.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/maestro.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/mesh.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/prism.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/sentinel.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/steward.md +24 -0
- package/dist-templates/codex/commands/openlife/agents/vortex.md +24 -0
- package/dist-templates/codex/commands/openlife/ask.md +13 -7
- package/dist-templates/codex/commands/openlife/audit.md +14 -0
- package/dist-templates/codex/commands/openlife/doctor.md +11 -14
- package/dist-templates/codex/commands/openlife/dream.md +10 -16
- package/dist-templates/codex/commands/openlife/explore.md +14 -0
- package/dist-templates/codex/commands/openlife/flow/brownfield-discovery.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/brownfield-fullstack.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/brownfield-service.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/brownfield-ui.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/epic.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/greenfield-fullstack.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/greenfield-service.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/greenfield-ui.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/qa-loop.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/release.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/spec-pipeline.md +20 -0
- package/dist-templates/codex/commands/openlife/flow/story-cycle.md +20 -0
- package/dist-templates/codex/commands/openlife/health.md +14 -0
- package/dist-templates/codex/commands/openlife/plan.md +14 -0
- package/dist-templates/codex/commands/openlife/review.md +14 -0
- package/dist-templates/codex/commands/openlife/ship.md +14 -0
- package/dist-templates/codex/commands/openlife/start.md +25 -0
- package/dist-templates/codex/commands/openlife/status.md +10 -10
- package/dist-templates/codex/commands/openlife/story.md +18 -0
- package/dist-templates/gemini-cli/agents/openlife-atlas.md +12 -44
- package/dist-templates/gemini-cli/agents/openlife-builder.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-conductor.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-forge.md +12 -34
- package/dist-templates/gemini-cli/agents/openlife-genesis.md +12 -51
- package/dist-templates/gemini-cli/agents/openlife-lyra.md +12 -32
- package/dist-templates/gemini-cli/agents/openlife-maestro.md +27 -41
- package/dist-templates/gemini-cli/agents/openlife-mesh.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-prism.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-sentinel.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-steward.md +20 -0
- package/dist-templates/gemini-cli/agents/openlife-vortex.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/atlas.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/builder.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/conductor.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/forge.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/genesis.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/lyra.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/maestro.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/mesh.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/prism.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/sentinel.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/steward.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/agents/vortex.md +24 -0
- package/dist-templates/gemini-cli/commands/openlife/ask.md +13 -7
- package/dist-templates/gemini-cli/commands/openlife/audit.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/doctor.md +11 -14
- package/dist-templates/gemini-cli/commands/openlife/dream.md +10 -16
- package/dist-templates/gemini-cli/commands/openlife/explore.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/brownfield-discovery.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/brownfield-fullstack.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/brownfield-service.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/brownfield-ui.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/epic.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/greenfield-fullstack.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/greenfield-service.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/greenfield-ui.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/qa-loop.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/release.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/spec-pipeline.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/flow/story-cycle.md +20 -0
- package/dist-templates/gemini-cli/commands/openlife/health.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/plan.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/review.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/ship.md +14 -0
- package/dist-templates/gemini-cli/commands/openlife/start.md +25 -0
- package/dist-templates/gemini-cli/commands/openlife/status.md +10 -10
- package/dist-templates/gemini-cli/commands/openlife/story.md +18 -0
- package/dist-templates/workflows/brownfield-fullstack.yaml +131 -0
- package/dist-templates/workflows/brownfield-service.yaml +111 -0
- package/dist-templates/workflows/brownfield-ui.yaml +115 -0
- package/dist-templates/workflows/continuous-deployment.yaml +139 -0
- package/dist-templates/workflows/epic-orchestration.yaml +101 -0
- package/dist-templates/workflows/greenfield-service.yaml +154 -0
- package/dist-templates/workflows/greenfield-ui.yaml +140 -0
- package/dist-templates/workflows/spec-pipeline.yaml +135 -0
- package/package.json +6 -2
- package/scripts/generate-slash-commands.js +220 -0
- package/scripts/generate-squad-workflow-stubs.js +144 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/orchestrator/ProjectMetadata.ts
|
|
3
|
+
// Read/write `.openlife/project.json` — records the project's mode
|
|
4
|
+
// (greenfield / brownfield / not-applicable), detected stack, and
|
|
5
|
+
// recommended entry workflow. Consumed by `/openlife:start` and the
|
|
6
|
+
// install wizard's project-mode phase.
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.projectMetadataPath = projectMetadataPath;
|
|
42
|
+
exports.readProjectMetadata = readProjectMetadata;
|
|
43
|
+
exports.writeProjectMetadata = writeProjectMetadata;
|
|
44
|
+
exports.detectStack = detectStack;
|
|
45
|
+
exports.detectMode = detectMode;
|
|
46
|
+
exports.recommendWorkflow = recommendWorkflow;
|
|
47
|
+
exports.buildMetadata = buildMetadata;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const FILE_REL = path.join('.openlife', 'project.json');
|
|
51
|
+
/** Resolve the metadata file path relative to a root (default: process.cwd()). */
|
|
52
|
+
function projectMetadataPath(root = process.cwd()) {
|
|
53
|
+
return path.join(root, FILE_REL);
|
|
54
|
+
}
|
|
55
|
+
/** Read existing metadata, returning null if file is missing or unparseable. */
|
|
56
|
+
function readProjectMetadata(root = process.cwd()) {
|
|
57
|
+
const fp = projectMetadataPath(root);
|
|
58
|
+
if (!fs.existsSync(fp))
|
|
59
|
+
return null;
|
|
60
|
+
try {
|
|
61
|
+
const parsed = JSON.parse(fs.readFileSync(fp, 'utf-8'));
|
|
62
|
+
if (!parsed.mode || !parsed.createdAt)
|
|
63
|
+
return null;
|
|
64
|
+
return {
|
|
65
|
+
mode: parsed.mode,
|
|
66
|
+
createdAt: parsed.createdAt,
|
|
67
|
+
updatedAt: parsed.updatedAt || parsed.createdAt,
|
|
68
|
+
detectedStack: parsed.detectedStack || [],
|
|
69
|
+
recommendedWorkflow: parsed.recommendedWorkflow || recommendWorkflow(parsed.mode, parsed.detectedStack || []),
|
|
70
|
+
notes: parsed.notes,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Write metadata, creating .openlife/ if necessary. */
|
|
78
|
+
function writeProjectMetadata(meta, root = process.cwd()) {
|
|
79
|
+
const fp = projectMetadataPath(root);
|
|
80
|
+
fs.mkdirSync(path.dirname(fp), { recursive: true });
|
|
81
|
+
fs.writeFileSync(fp, JSON.stringify(meta, null, 2) + '\n');
|
|
82
|
+
return fp;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Detect the project's stack from cwd. Cheap heuristic — file presence only,
|
|
86
|
+
* does not parse contents. Used to suggest a default mode and a recommended
|
|
87
|
+
* workflow in the install wizard.
|
|
88
|
+
*/
|
|
89
|
+
function detectStack(root = process.cwd()) {
|
|
90
|
+
const stack = [];
|
|
91
|
+
if (fs.existsSync(path.join(root, 'package.json'))) {
|
|
92
|
+
stack.push('node');
|
|
93
|
+
try {
|
|
94
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf-8'));
|
|
95
|
+
if (pkg.devDependencies?.typescript || pkg.dependencies?.typescript)
|
|
96
|
+
stack.push('typescript');
|
|
97
|
+
if (pkg.dependencies?.react || pkg.dependencies?.next)
|
|
98
|
+
stack.push('react');
|
|
99
|
+
if (pkg.dependencies?.vue || pkg.dependencies?.nuxt)
|
|
100
|
+
stack.push('vue');
|
|
101
|
+
if (pkg.dependencies?.svelte)
|
|
102
|
+
stack.push('svelte');
|
|
103
|
+
if (pkg.dependencies?.express || pkg.dependencies?.fastify || pkg.dependencies?.hono)
|
|
104
|
+
stack.push('node-server');
|
|
105
|
+
}
|
|
106
|
+
catch { /* ignore */ }
|
|
107
|
+
}
|
|
108
|
+
if (fs.existsSync(path.join(root, 'go.mod')))
|
|
109
|
+
stack.push('go');
|
|
110
|
+
if (fs.existsSync(path.join(root, 'Cargo.toml')))
|
|
111
|
+
stack.push('rust');
|
|
112
|
+
if (fs.existsSync(path.join(root, 'pyproject.toml')) || fs.existsSync(path.join(root, 'requirements.txt')))
|
|
113
|
+
stack.push('python');
|
|
114
|
+
if (fs.existsSync(path.join(root, 'Gemfile')))
|
|
115
|
+
stack.push('ruby');
|
|
116
|
+
if (fs.existsSync(path.join(root, 'composer.json')))
|
|
117
|
+
stack.push('php');
|
|
118
|
+
if (fs.existsSync(path.join(root, 'pubspec.yaml')))
|
|
119
|
+
stack.push('flutter');
|
|
120
|
+
if (fs.existsSync(path.join(root, 'docker-compose.yml')) || fs.existsSync(path.join(root, 'Dockerfile')))
|
|
121
|
+
stack.push('docker');
|
|
122
|
+
if (fs.existsSync(path.join(root, 'supabase')))
|
|
123
|
+
stack.push('supabase');
|
|
124
|
+
if (fs.existsSync(path.join(root, 'prisma')))
|
|
125
|
+
stack.push('prisma');
|
|
126
|
+
return stack;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Detect mode hint from cwd. Returns `brownfield` if cwd appears to be an
|
|
130
|
+
* established project (presence of stack files AND > 10 git commits OR a
|
|
131
|
+
* non-trivial src/ folder); `greenfield` otherwise.
|
|
132
|
+
*/
|
|
133
|
+
function detectMode(root = process.cwd()) {
|
|
134
|
+
const stack = detectStack(root);
|
|
135
|
+
if (stack.length === 0)
|
|
136
|
+
return 'greenfield';
|
|
137
|
+
const gitDir = path.join(root, '.git');
|
|
138
|
+
if (fs.existsSync(gitDir)) {
|
|
139
|
+
try {
|
|
140
|
+
const { execFileSync } = require('child_process');
|
|
141
|
+
const count = execFileSync('git', ['rev-list', '--count', 'HEAD'], {
|
|
142
|
+
cwd: root, encoding: 'utf-8', timeout: 5000,
|
|
143
|
+
}).trim();
|
|
144
|
+
if (parseInt(count, 10) > 10)
|
|
145
|
+
return 'brownfield';
|
|
146
|
+
}
|
|
147
|
+
catch { /* ignore */ }
|
|
148
|
+
}
|
|
149
|
+
// Has stack but no git history → likely greenfield setup-in-progress
|
|
150
|
+
return 'greenfield';
|
|
151
|
+
}
|
|
152
|
+
/** Map (mode, stack) to a recommended workflow id from dist-templates/workflows/. */
|
|
153
|
+
function recommendWorkflow(mode, stack) {
|
|
154
|
+
if (mode === 'not-applicable')
|
|
155
|
+
return 'spec-pipeline';
|
|
156
|
+
const hasUI = stack.some((s) => ['react', 'vue', 'svelte', 'flutter'].includes(s));
|
|
157
|
+
const hasServer = stack.some((s) => ['node-server', 'go', 'rust', 'python', 'ruby', 'php'].includes(s));
|
|
158
|
+
if (mode === 'brownfield') {
|
|
159
|
+
// Brownfield always starts with discovery the first time.
|
|
160
|
+
return 'brownfield-discovery';
|
|
161
|
+
}
|
|
162
|
+
// Greenfield
|
|
163
|
+
if (hasUI && hasServer)
|
|
164
|
+
return 'greenfield-fullstack';
|
|
165
|
+
if (hasUI)
|
|
166
|
+
return 'greenfield-ui';
|
|
167
|
+
if (hasServer)
|
|
168
|
+
return 'greenfield-service';
|
|
169
|
+
return 'greenfield-fullstack';
|
|
170
|
+
}
|
|
171
|
+
/** Convenience: build a fresh ProjectMetadata for a chosen mode. */
|
|
172
|
+
function buildMetadata(mode, root = process.cwd(), notes) {
|
|
173
|
+
const now = new Date().toISOString();
|
|
174
|
+
const stack = detectStack(root);
|
|
175
|
+
return {
|
|
176
|
+
mode,
|
|
177
|
+
createdAt: now,
|
|
178
|
+
updatedAt: now,
|
|
179
|
+
detectedStack: stack,
|
|
180
|
+
recommendedWorkflow: recommendWorkflow(mode, stack),
|
|
181
|
+
notes,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
@@ -1,15 +1,60 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.SkillRegistryV2 = void 0;
|
|
37
|
+
const path = __importStar(require("path"));
|
|
4
38
|
const FileSkillProvider_1 = require("./providers/FileSkillProvider");
|
|
5
39
|
const CloudSkillProvider_1 = require("./providers/CloudSkillProvider");
|
|
6
40
|
const CompositeSkillProvider_1 = require("./providers/CompositeSkillProvider");
|
|
41
|
+
// v1.8.3+: when no explicit OPENLIFE_SKILL_ROOT(S) is set, expose BOTH the
|
|
42
|
+
// user's project .catalog/skills (override) and the npm-package-bundled
|
|
43
|
+
// .catalog/skills (defaults). FileSkillProvider skips non-existent dirs.
|
|
44
|
+
function defaultSkillRoots() {
|
|
45
|
+
if (process.env.OPENLIFE_SKILL_ROOTS) {
|
|
46
|
+
return process.env.OPENLIFE_SKILL_ROOTS.split(':').filter(Boolean);
|
|
47
|
+
}
|
|
48
|
+
if (process.env.OPENLIFE_SKILL_ROOT)
|
|
49
|
+
return [process.env.OPENLIFE_SKILL_ROOT];
|
|
50
|
+
const cwdRoot = path.join(process.cwd(), '.catalog', 'skills');
|
|
51
|
+
const packageRoot = path.join(__dirname, '..', '..', '.catalog', 'skills');
|
|
52
|
+
return cwdRoot === packageRoot ? [cwdRoot] : [cwdRoot, packageRoot];
|
|
53
|
+
}
|
|
7
54
|
class SkillRegistryV2 {
|
|
8
55
|
provider;
|
|
9
56
|
skills = [];
|
|
10
|
-
constructor(provider = new CompositeSkillProvider_1.CompositeSkillProvider(new CloudSkillProvider_1.CloudSkillProvider(process.env.OPENLIFE_CLOUD_SKILLS_FILE || ''), new FileSkillProvider_1.FileSkillProvider(
|
|
11
|
-
? process.env.OPENLIFE_SKILL_ROOTS.split(':').filter(Boolean)
|
|
12
|
-
: [process.env.OPENLIFE_SKILL_ROOT || `${process.cwd()}/.catalog/skills`]))) {
|
|
57
|
+
constructor(provider = new CompositeSkillProvider_1.CompositeSkillProvider(new CloudSkillProvider_1.CloudSkillProvider(process.env.OPENLIFE_CLOUD_SKILLS_FILE || ''), new FileSkillProvider_1.FileSkillProvider(defaultSkillRoots()))) {
|
|
13
58
|
this.provider = provider;
|
|
14
59
|
this.load();
|
|
15
60
|
}
|
|
@@ -1,10 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.SquadRegistry = void 0;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
4
39
|
const FileSquadProvider_1 = require("./providers/FileSquadProvider");
|
|
5
40
|
const CloudSquadProvider_1 = require("./providers/CloudSquadProvider");
|
|
6
41
|
const CompositeSquadProvider_1 = require("./providers/CompositeSquadProvider");
|
|
7
|
-
|
|
42
|
+
// v1.8.3+: prefer the user's project-local .catalog/squads (override) and
|
|
43
|
+
// fall back to the bundled package .catalog/squads when running from a
|
|
44
|
+
// globally-installed @openlife/cli. FileSquadProvider takes a single string,
|
|
45
|
+
// so we pick the right one upfront rather than refactoring the provider.
|
|
46
|
+
const defaultSquadRoot = () => {
|
|
47
|
+
if (process.env.OPENLIFE_SQUAD_ROOT)
|
|
48
|
+
return process.env.OPENLIFE_SQUAD_ROOT;
|
|
49
|
+
const cwdRoot = path.join(process.cwd(), '.catalog', 'squads');
|
|
50
|
+
if (fs.existsSync(cwdRoot))
|
|
51
|
+
return cwdRoot;
|
|
52
|
+
return path.join(__dirname, '..', '..', '.catalog', 'squads');
|
|
53
|
+
};
|
|
8
54
|
class SquadRegistry {
|
|
9
55
|
provider;
|
|
10
56
|
squads = [];
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/test_flow_run_cli.ts
|
|
3
|
+
// Smoke test for the v1.9.0 `openlife flow` CLI surface and
|
|
4
|
+
// `openlife project-mode` commands. Exercises the runtime path without
|
|
5
|
+
// requiring an LLM or external CI.
|
|
6
|
+
//
|
|
7
|
+
// Covers:
|
|
8
|
+
// 1. listFlows() returns all 12 expected workflows from bundled source
|
|
9
|
+
// 2. findFlow(id) resolves a known workflow
|
|
10
|
+
// 3. dryRunFlow(id) produces a phase plan with > 0 steps
|
|
11
|
+
// 4. ProjectMetadata read/write roundtrip
|
|
12
|
+
// 5. detectMode + recommendWorkflow produce sane defaults
|
|
13
|
+
// 6. project mode persistence file shape is valid JSON
|
|
14
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
17
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
18
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(o, k2, desc);
|
|
21
|
+
}) : (function(o, m, k, k2) {
|
|
22
|
+
if (k2 === undefined) k2 = k;
|
|
23
|
+
o[k2] = m[k];
|
|
24
|
+
}));
|
|
25
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
+
}) : function(o, v) {
|
|
28
|
+
o["default"] = v;
|
|
29
|
+
});
|
|
30
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
+
var ownKeys = function(o) {
|
|
32
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
+
var ar = [];
|
|
34
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
+
return ar;
|
|
36
|
+
};
|
|
37
|
+
return ownKeys(o);
|
|
38
|
+
};
|
|
39
|
+
return function (mod) {
|
|
40
|
+
if (mod && mod.__esModule) return mod;
|
|
41
|
+
var result = {};
|
|
42
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
+
__setModuleDefault(result, mod);
|
|
44
|
+
return result;
|
|
45
|
+
};
|
|
46
|
+
})();
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const CommandFlowRunner_1 = require("./cli/CommandFlowRunner");
|
|
52
|
+
const ProjectMetadata_1 = require("./orchestrator/ProjectMetadata");
|
|
53
|
+
let passed = 0;
|
|
54
|
+
let failed = 0;
|
|
55
|
+
function check(name, cond, detail) {
|
|
56
|
+
if (cond) {
|
|
57
|
+
passed++;
|
|
58
|
+
console.log(` ✓ ${name}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
failed++;
|
|
62
|
+
console.error(` ✗ ${name}${detail ? ` — ${detail}` : ''}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const REPO_ROOT = path.resolve(__dirname, '..');
|
|
66
|
+
// ── 1. listFlows ───────────────────────────────────────────────────────
|
|
67
|
+
console.log('\n[1] CommandFlowRunner.listFlows()');
|
|
68
|
+
const flows = (0, CommandFlowRunner_1.listFlows)(REPO_ROOT);
|
|
69
|
+
check('at least 12 workflows surfaced', flows.length >= 12, `got ${flows.length}`);
|
|
70
|
+
const flowIds = new Set(flows.map(f => f.id));
|
|
71
|
+
for (const expected of ['greenfield-fullstack', 'greenfield-service', 'greenfield-ui',
|
|
72
|
+
'brownfield-discovery', 'brownfield-fullstack', 'brownfield-service',
|
|
73
|
+
'brownfield-ui', 'story-development-cycle', 'qa-loop',
|
|
74
|
+
'spec-pipeline', 'epic-orchestration', 'continuous-deployment']) {
|
|
75
|
+
check(`flow "${expected}" listed`, flowIds.has(expected));
|
|
76
|
+
}
|
|
77
|
+
// Every entry has the right shape
|
|
78
|
+
for (const f of flows.slice(0, 3)) {
|
|
79
|
+
check(`flow "${f.id}" has type`, !!f.type);
|
|
80
|
+
check(`flow "${f.id}" has steps > 0`, f.steps > 0, `steps=${f.steps}`);
|
|
81
|
+
}
|
|
82
|
+
// ── 2. findFlow ────────────────────────────────────────────────────────
|
|
83
|
+
console.log('\n[2] CommandFlowRunner.findFlow()');
|
|
84
|
+
const greenfieldFs = (0, CommandFlowRunner_1.findFlow)('greenfield-fullstack', REPO_ROOT);
|
|
85
|
+
check('findFlow("greenfield-fullstack") returns a workflow', greenfieldFs !== null);
|
|
86
|
+
check('found workflow has correct id', greenfieldFs?.workflow.id === 'greenfield-fullstack');
|
|
87
|
+
check('source is bundled when running from repo', greenfieldFs?.source === 'bundled' || greenfieldFs?.source === 'local');
|
|
88
|
+
const notFound = (0, CommandFlowRunner_1.findFlow)('definitely-does-not-exist', REPO_ROOT);
|
|
89
|
+
check('findFlow returns null for unknown id', notFound === null);
|
|
90
|
+
// ── 3. dryRunFlow ──────────────────────────────────────────────────────
|
|
91
|
+
console.log('\n[3] CommandFlowRunner.dryRunFlow()');
|
|
92
|
+
const summary = (0, CommandFlowRunner_1.dryRunFlow)('greenfield-service', REPO_ROOT);
|
|
93
|
+
check('dryRunFlow("greenfield-service") returns summary', summary !== null);
|
|
94
|
+
if (summary) {
|
|
95
|
+
check('summary has id', summary.id === 'greenfield-service');
|
|
96
|
+
check('summary has > 5 steps', summary.steps.length > 5, `got ${summary.steps.length}`);
|
|
97
|
+
check('summary has at least one phase marker', summary.steps.some(s => s.phase !== undefined));
|
|
98
|
+
check('summary has at least one executable step', summary.steps.some(s => s.id !== undefined));
|
|
99
|
+
const rendered = (0, CommandFlowRunner_1.renderDryRun)(summary);
|
|
100
|
+
check('renderDryRun produces > 5 lines', rendered.length > 5);
|
|
101
|
+
}
|
|
102
|
+
// ── 4. ProjectMetadata roundtrip ───────────────────────────────────────
|
|
103
|
+
console.log('\n[4] ProjectMetadata read/write roundtrip');
|
|
104
|
+
const tmpRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'openlife-method-test-'));
|
|
105
|
+
try {
|
|
106
|
+
const meta = (0, ProjectMetadata_1.buildMetadata)('greenfield', tmpRoot, 'test-run-note');
|
|
107
|
+
const fp = (0, ProjectMetadata_1.writeProjectMetadata)(meta, tmpRoot);
|
|
108
|
+
check('writeProjectMetadata returns path', fp.endsWith('project.json'));
|
|
109
|
+
check('file was actually written', fs.existsSync(fp));
|
|
110
|
+
const readBack = (0, ProjectMetadata_1.readProjectMetadata)(tmpRoot);
|
|
111
|
+
check('readProjectMetadata returns metadata', readBack !== null);
|
|
112
|
+
check('read mode matches written mode', readBack?.mode === 'greenfield');
|
|
113
|
+
check('read createdAt is ISO string', /\d{4}-\d{2}-\d{2}T/.test(readBack?.createdAt || ''));
|
|
114
|
+
check('read recommendedWorkflow is non-empty', !!readBack?.recommendedWorkflow);
|
|
115
|
+
check('read notes preserved', readBack?.notes === 'test-run-note');
|
|
116
|
+
// Round-trip with brownfield
|
|
117
|
+
const meta2 = (0, ProjectMetadata_1.buildMetadata)('brownfield', tmpRoot);
|
|
118
|
+
(0, ProjectMetadata_1.writeProjectMetadata)(meta2, tmpRoot);
|
|
119
|
+
const readBack2 = (0, ProjectMetadata_1.readProjectMetadata)(tmpRoot);
|
|
120
|
+
check('brownfield mode roundtrips', readBack2?.mode === 'brownfield');
|
|
121
|
+
check('brownfield recommends discovery', readBack2?.recommendedWorkflow === 'brownfield-discovery');
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
fs.rmSync(tmpRoot, { recursive: true, force: true });
|
|
125
|
+
}
|
|
126
|
+
// ── 5. detectMode + recommendWorkflow ──────────────────────────────────
|
|
127
|
+
console.log('\n[5] Heuristic detection');
|
|
128
|
+
// Empty tmpdir → greenfield
|
|
129
|
+
const emptyDir = fs.mkdtempSync(path.join(os.tmpdir(), 'openlife-empty-'));
|
|
130
|
+
try {
|
|
131
|
+
const mode = (0, ProjectMetadata_1.detectMode)(emptyDir);
|
|
132
|
+
check('empty dir → greenfield', mode === 'greenfield');
|
|
133
|
+
const rec = (0, ProjectMetadata_1.recommendWorkflow)(mode, []);
|
|
134
|
+
check('greenfield + no stack → greenfield-fullstack', rec === 'greenfield-fullstack');
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
fs.rmSync(emptyDir, { recursive: true, force: true });
|
|
138
|
+
}
|
|
139
|
+
// Tmp with package.json but no git → still greenfield
|
|
140
|
+
const pkgDir = fs.mkdtempSync(path.join(os.tmpdir(), 'openlife-pkg-'));
|
|
141
|
+
try {
|
|
142
|
+
fs.writeFileSync(path.join(pkgDir, 'package.json'), JSON.stringify({ name: 'x', dependencies: { react: '*' } }));
|
|
143
|
+
const stack = (0, ProjectMetadata_1.detectStack)(pkgDir);
|
|
144
|
+
check('detectStack finds node', stack.includes('node'));
|
|
145
|
+
check('detectStack finds react', stack.includes('react'));
|
|
146
|
+
const rec = (0, ProjectMetadata_1.recommendWorkflow)('greenfield', stack);
|
|
147
|
+
check('greenfield + react → greenfield-ui (no server)', rec === 'greenfield-ui');
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
fs.rmSync(pkgDir, { recursive: true, force: true });
|
|
151
|
+
}
|
|
152
|
+
// Brownfield always recommends discovery
|
|
153
|
+
const rec3 = (0, ProjectMetadata_1.recommendWorkflow)('brownfield', ['node', 'typescript', 'react']);
|
|
154
|
+
check('brownfield → discovery regardless of stack', rec3 === 'brownfield-discovery');
|
|
155
|
+
// ── 6. JSON file shape ─────────────────────────────────────────────────
|
|
156
|
+
console.log('\n[6] project.json shape');
|
|
157
|
+
const tmpRoot2 = fs.mkdtempSync(path.join(os.tmpdir(), 'openlife-shape-'));
|
|
158
|
+
try {
|
|
159
|
+
const meta = (0, ProjectMetadata_1.buildMetadata)('greenfield', tmpRoot2);
|
|
160
|
+
(0, ProjectMetadata_1.writeProjectMetadata)(meta, tmpRoot2);
|
|
161
|
+
const raw = fs.readFileSync((0, ProjectMetadata_1.projectMetadataPath)(tmpRoot2), 'utf-8');
|
|
162
|
+
let parsed = {};
|
|
163
|
+
try {
|
|
164
|
+
parsed = JSON.parse(raw);
|
|
165
|
+
}
|
|
166
|
+
catch { /* shape check below catches it */ }
|
|
167
|
+
check('file is valid JSON', !!parsed.mode);
|
|
168
|
+
check('has createdAt', typeof parsed.createdAt === 'string');
|
|
169
|
+
check('has updatedAt', typeof parsed.updatedAt === 'string');
|
|
170
|
+
check('has detectedStack array', Array.isArray(parsed.detectedStack));
|
|
171
|
+
check('has recommendedWorkflow string', typeof parsed.recommendedWorkflow === 'string');
|
|
172
|
+
}
|
|
173
|
+
finally {
|
|
174
|
+
fs.rmSync(tmpRoot2, { recursive: true, force: true });
|
|
175
|
+
}
|
|
176
|
+
// ── Done ───────────────────────────────────────────────────────────────
|
|
177
|
+
console.log('');
|
|
178
|
+
console.log(`Results: ${passed} passed, ${failed} failed`);
|
|
179
|
+
if (failed > 0) {
|
|
180
|
+
console.error('TEST_FLOW_RUN_CLI_FAIL');
|
|
181
|
+
process.exit(1);
|
|
182
|
+
}
|
|
183
|
+
console.log('TEST_FLOW_RUN_CLI_OK');
|
|
@@ -99,9 +99,19 @@ function testUninstallRemovesAllInstalledArtifacts() {
|
|
|
99
99
|
// The openlife/ commands namespace directory should be removed (it was all ours and is now empty).
|
|
100
100
|
const cmdsNs = path.join(tempRoot, '.claude', 'commands', 'openlife');
|
|
101
101
|
assert(!fs.existsSync(cmdsNs), `empty openlife/ commands namespace should be removed: ${cmdsNs}`);
|
|
102
|
-
//
|
|
102
|
+
// Count dynamically from dist-templates/claude-code/. The uninstaller
|
|
103
|
+
// removes top-level files (agents + top-level commands + MCP snippet),
|
|
104
|
+
// not files inside nested commands/openlife/{agents,flow}/ subdirs.
|
|
105
|
+
const distTemplateRoot = path.join(__dirname, '..', 'dist-templates', 'claude-code');
|
|
106
|
+
const agentCount = fs.existsSync(path.join(distTemplateRoot, 'agents'))
|
|
107
|
+
? fs.readdirSync(path.join(distTemplateRoot, 'agents')).filter((f) => f.endsWith('.md')).length
|
|
108
|
+
: 0;
|
|
109
|
+
const commandCount = fs.existsSync(path.join(distTemplateRoot, 'commands', 'openlife'))
|
|
110
|
+
? fs.readdirSync(path.join(distTemplateRoot, 'commands', 'openlife')).filter((f) => f.endsWith('.md')).length
|
|
111
|
+
: 0;
|
|
112
|
+
const expectedRemoved = agentCount + commandCount + 1; // +1 for MCP snippet
|
|
103
113
|
const removed = result.files.filter((f) => f.action === 'removed').length;
|
|
104
|
-
assert(removed ===
|
|
114
|
+
assert(removed === expectedRemoved, `expected ${expectedRemoved} 'removed' actions (${agentCount} agents + ${commandCount} top-level commands + 1 mcp); got ${removed}: ` +
|
|
105
115
|
JSON.stringify(result.files.map((f) => `${path.basename(f.destination)}:${f.action}`)));
|
|
106
116
|
}
|
|
107
117
|
finally {
|