@jaimevalasek/aioson 1.4.0 → 1.6.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/CHANGELOG.md +31 -1
- package/LICENSE +661 -21
- package/README.md +9 -1
- package/docs/design-previews/aurora-command-ui-website.html +884 -0
- package/docs/design-previews/aurora-command-ui.html +682 -0
- package/docs/design-previews/bold-editorial-ui-website.html +658 -0
- package/docs/design-previews/bold-editorial-ui.html +717 -0
- package/docs/design-previews/clean-saas-ui-website.html +1202 -0
- package/docs/design-previews/clean-saas-ui.html +549 -0
- package/docs/design-previews/cognitive-core-ui-website.html +1009 -0
- package/docs/design-previews/cognitive-core-ui.html +463 -0
- package/docs/design-previews/glassmorphism-ui-website.html +572 -0
- package/docs/design-previews/glassmorphism-ui.html +886 -0
- package/docs/design-previews/index.html +699 -0
- package/docs/design-previews/interface-design-website.html +1187 -0
- package/docs/design-previews/interface-design.html +513 -0
- package/docs/design-previews/neo-brutalist-ui-website.html +621 -0
- package/docs/design-previews/neo-brutalist-ui.html +797 -0
- package/docs/design-previews/premium-command-center-ui-website.html +1217 -0
- package/docs/design-previews/premium-command-center-ui.html +552 -0
- package/docs/design-previews/warm-craft-ui-website.html +684 -0
- package/docs/design-previews/warm-craft-ui.html +739 -0
- package/docs/en/cli-reference.md +20 -9
- package/docs/en/squad-dashboard.md +372 -0
- package/docs/openclaw-bridge.md +308 -0
- package/docs/pt/README.md +7 -0
- package/docs/pt/agent-sharding.md +132 -0
- package/docs/pt/agentes.md +131 -11
- package/docs/pt/busca-de-contexto.md +129 -0
- package/docs/pt/cache-de-contexto.md +156 -0
- package/docs/pt/cenarios.md +46 -2
- package/docs/pt/comandos-cli.md +88 -1
- package/docs/pt/design-hybrid-forge.md +107 -0
- package/docs/pt/inicio-rapido.md +72 -5
- package/docs/pt/inteligencia-adaptativa.md +324 -0
- package/docs/pt/monitor-de-contexto.md +104 -0
- package/docs/pt/recuperacao-de-sessao.md +125 -0
- package/docs/pt/sandbox.md +125 -0
- package/docs/pt/skills.md +98 -6
- package/docs/pt/squad-dashboard.md +373 -0
- package/docs/testing/genome-2.0-matrix.md +5 -5
- package/docs/testing/genome-2.0-rollout.md +9 -9
- package/package.json +2 -2
- package/src/agent-loader.js +280 -0
- package/src/backup-local.js +74 -0
- package/src/cli.js +192 -0
- package/src/commands/agent-loader.js +85 -0
- package/src/commands/backup-local-cmd.js +25 -0
- package/src/commands/context-cache.js +90 -0
- package/src/commands/context-monitor.js +92 -0
- package/src/commands/context-search.js +66 -0
- package/src/commands/design-hybrid-options.js +385 -0
- package/src/commands/health.js +214 -0
- package/src/commands/init.js +54 -13
- package/src/commands/install.js +52 -13
- package/src/commands/learning-evolve.js +355 -0
- package/src/commands/live.js +34 -0
- package/src/commands/recovery.js +43 -0
- package/src/commands/runtime.js +242 -0
- package/src/commands/sandbox.js +37 -0
- package/src/commands/setup-context.js +29 -4
- package/src/commands/setup.js +178 -0
- package/src/commands/skill.js +79 -32
- package/src/commands/squad-daemon.js +209 -0
- package/src/commands/squad-dashboard.js +39 -0
- package/src/commands/squad-deploy.js +64 -0
- package/src/commands/squad-doctor.js +52 -0
- package/src/commands/squad-mcp.js +270 -0
- package/src/commands/squad-processes.js +56 -0
- package/src/commands/squad-recovery.js +42 -0
- package/src/commands/squad-roi.js +291 -0
- package/src/commands/squad-score.js +250 -0
- package/src/commands/squad-status.js +37 -1
- package/src/commands/squad-validate.js +62 -1
- package/src/commands/squad-webhook.js +160 -0
- package/src/commands/squad-worker.js +191 -0
- package/src/commands/squad-worktrees.js +75 -0
- package/src/commands/tool-registry-cmd.js +232 -0
- package/src/commands/update.js +7 -0
- package/src/commands/web-map.js +70 -0
- package/src/commands/web-scrape.js +71 -0
- package/src/constants.js +17 -0
- package/src/context-cache.js +159 -0
- package/src/context-search.js +326 -0
- package/src/context-writer.js +45 -1
- package/src/design-variation-catalog.js +503 -0
- package/src/i18n/messages/en.js +159 -3
- package/src/i18n/messages/es.js +147 -2
- package/src/i18n/messages/fr.js +147 -2
- package/src/i18n/messages/pt-BR.js +158 -3
- package/src/install-animation.js +260 -0
- package/src/install-profile.js +143 -0
- package/src/install-wizard.js +474 -0
- package/src/installer.js +38 -10
- package/src/lib/webhook-server.js +328 -0
- package/src/mcp-connectors/registry.js +602 -0
- package/src/parser.js +7 -1
- package/src/recovery-context-session.js +154 -0
- package/src/runtime-store.js +355 -2
- package/src/sandbox.js +177 -0
- package/src/squad/external-session.js +180 -0
- package/src/squad/inter-squad.js +74 -0
- package/src/squad/recovery-context.js +201 -0
- package/src/squad/worktree-manager.js +114 -0
- package/src/squad-daemon.js +490 -0
- package/src/squad-dashboard/api.js +223 -0
- package/src/squad-dashboard/attachment-handler.js +93 -0
- package/src/squad-dashboard/context-monitor.js +157 -0
- package/src/squad-dashboard/execution-logs.js +115 -0
- package/src/squad-dashboard/hunk-review.js +209 -0
- package/src/squad-dashboard/metrics.js +133 -0
- package/src/squad-dashboard/process-monitor.js +125 -0
- package/src/squad-dashboard/renderer.js +858 -0
- package/src/squad-dashboard/server.js +232 -0
- package/src/squad-dashboard/styles.js +525 -0
- package/src/squad-dashboard/token-tracker.js +99 -0
- package/src/tool-executor.js +94 -0
- package/src/updater.js +11 -3
- package/src/web.js +284 -0
- package/src/worker-runner.js +339 -0
- package/template/.aioson/agents/analyst.md +62 -3
- package/template/.aioson/agents/architect.md +42 -0
- package/template/.aioson/agents/design-hybrid-forge.md +127 -0
- package/template/.aioson/agents/dev.md +223 -11
- package/template/.aioson/agents/deyvin.md +65 -0
- package/template/.aioson/agents/neo.md +152 -0
- package/template/.aioson/agents/orache.md +17 -0
- package/template/.aioson/agents/orchestrator.md +26 -0
- package/template/.aioson/agents/pm.md +58 -0
- package/template/.aioson/agents/product.md +88 -12
- package/template/.aioson/agents/qa.md +80 -0
- package/template/.aioson/agents/setup.md +128 -22
- package/template/.aioson/agents/sheldon.md +704 -0
- package/template/.aioson/agents/squad.md +191 -0
- package/template/.aioson/agents/tester.md +410 -0
- package/template/.aioson/agents/ux-ui.md +12 -0
- package/template/.aioson/config.md +21 -0
- package/template/.aioson/context/forensics/.gitkeep +0 -0
- package/template/.aioson/context/seeds/seed-example.md +27 -0
- package/template/.aioson/context/user-profile.md +42 -0
- package/template/.aioson/locales/en/agents/analyst.md +8 -0
- package/template/.aioson/locales/en/agents/architect.md +8 -0
- package/template/.aioson/locales/en/agents/dev.md +66 -7
- package/template/.aioson/locales/en/agents/deyvin.md +8 -0
- package/template/.aioson/locales/en/agents/neo.md +8 -0
- package/template/.aioson/locales/en/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/en/agents/qa.md +49 -0
- package/template/.aioson/locales/en/agents/setup.md +35 -2
- package/template/.aioson/locales/en/agents/sheldon.md +340 -0
- package/template/.aioson/locales/en/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/es/agents/analyst.md +8 -0
- package/template/.aioson/locales/es/agents/architect.md +8 -0
- package/template/.aioson/locales/es/agents/dev.md +66 -7
- package/template/.aioson/locales/es/agents/deyvin.md +8 -0
- package/template/.aioson/locales/es/agents/neo.md +48 -0
- package/template/.aioson/locales/es/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/es/agents/qa.md +26 -0
- package/template/.aioson/locales/es/agents/setup.md +35 -2
- package/template/.aioson/locales/es/agents/sheldon.md +192 -0
- package/template/.aioson/locales/es/agents/squad.md +63 -0
- package/template/.aioson/locales/es/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/fr/agents/analyst.md +8 -0
- package/template/.aioson/locales/fr/agents/architect.md +8 -0
- package/template/.aioson/locales/fr/agents/dev.md +66 -7
- package/template/.aioson/locales/fr/agents/deyvin.md +8 -0
- package/template/.aioson/locales/fr/agents/neo.md +48 -0
- package/template/.aioson/locales/fr/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/fr/agents/qa.md +26 -0
- package/template/.aioson/locales/fr/agents/setup.md +35 -2
- package/template/.aioson/locales/fr/agents/sheldon.md +192 -0
- package/template/.aioson/locales/fr/agents/squad.md +63 -0
- package/template/.aioson/locales/fr/agents/ux-ui.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/analyst.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/architect.md +19 -0
- package/template/.aioson/locales/pt-BR/agents/dev.md +75 -12
- package/template/.aioson/locales/pt-BR/agents/deyvin.md +8 -0
- package/template/.aioson/locales/pt-BR/agents/neo.md +147 -0
- package/template/.aioson/locales/pt-BR/agents/orchestrator.md +26 -0
- package/template/.aioson/locales/pt-BR/agents/product.md +8 -3
- package/template/.aioson/locales/pt-BR/agents/qa.md +60 -0
- package/template/.aioson/locales/pt-BR/agents/setup.md +35 -2
- package/template/.aioson/locales/pt-BR/agents/sheldon.md +192 -0
- package/template/.aioson/locales/pt-BR/agents/squad.md +105 -0
- package/template/.aioson/locales/pt-BR/agents/ux-ui.md +8 -0
- package/template/.aioson/schemas/squad-blueprint.schema.json +21 -0
- package/template/.aioson/schemas/squad-manifest.schema.json +178 -1
- package/template/.aioson/skills/design/aurora-command-ui/SKILL.md +243 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/art-direction.md +293 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/components.md +827 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/dashboards.md +250 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/design-tokens.md +585 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/motion.md +365 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/patterns.md +482 -0
- package/template/.aioson/skills/design/aurora-command-ui/references/websites.md +387 -0
- package/template/.aioson/skills/design/bold-editorial-ui/SKILL.md +205 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/art-direction.md +338 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/components.md +977 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/dashboards.md +218 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/design-tokens.md +326 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/motion.md +461 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/patterns.md +293 -0
- package/template/.aioson/skills/design/bold-editorial-ui/references/websites.md +352 -0
- package/template/.aioson/skills/design/clean-saas-ui/SKILL.md +210 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/art-direction.md +319 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/components.md +365 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/dashboards.md +196 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/design-tokens.md +244 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/motion.md +235 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/patterns.md +215 -0
- package/template/.aioson/skills/design/clean-saas-ui/references/websites.md +295 -0
- package/template/.aioson/skills/design/cognitive-core-ui/SKILL.md +55 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/art-direction.md +339 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/components.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/dashboards.md +100 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/design-tokens.md +43 -9
- package/template/.aioson/skills/design/cognitive-core-ui/references/motion.md +40 -0
- package/template/.aioson/skills/design/cognitive-core-ui/references/patterns.md +1 -1
- package/template/.aioson/skills/design/cognitive-core-ui/references/websites.md +99 -12
- package/template/.aioson/skills/design/glassmorphism-ui/SKILL.md +222 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/art-direction.md +159 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/components.md +498 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/dashboards.md +236 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/design-tokens.md +274 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/motion.md +355 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/patterns.md +198 -0
- package/template/.aioson/skills/design/glassmorphism-ui/references/websites.md +307 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/SKILL.md +213 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/art-direction.md +228 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/components.md +855 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/dashboards.md +334 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/design-tokens.md +342 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/motion.md +286 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/patterns.md +458 -0
- package/template/.aioson/skills/design/neo-brutalist-ui/references/websites.md +723 -0
- package/template/.aioson/skills/design/warm-craft-ui/SKILL.md +209 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/art-direction.md +324 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/components.md +508 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/dashboards.md +223 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/design-tokens.md +374 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/motion.md +356 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/patterns.md +288 -0
- package/template/.aioson/skills/design/warm-craft-ui/references/websites.md +289 -0
- package/template/.aioson/skills/premium-visual-design/SKILL.md +83 -0
- package/template/.aioson/skills/premium-visual-design/components/agent-badge.md +92 -0
- package/template/.aioson/skills/premium-visual-design/components/dependency-node.md +102 -0
- package/template/.aioson/skills/premium-visual-design/components/mention-autocomplete.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/notification-center.md +136 -0
- package/template/.aioson/skills/premium-visual-design/components/review-action-bar.md +188 -0
- package/template/.aioson/skills/premium-visual-design/components/team-switcher.md +131 -0
- package/template/.aioson/skills/premium-visual-design/patterns/agent-message-thread.md +198 -0
- package/template/.aioson/skills/premium-visual-design/patterns/notification-panel.md +275 -0
- package/template/.aioson/skills/premium-visual-design/patterns/review-workflow-ui.md +234 -0
- package/template/.aioson/skills/premium-visual-design/patterns/task-dependency-graph.md +147 -0
- package/template/.aioson/skills/premium-visual-design/tokens/status-extended.md +142 -0
- package/template/.aioson/skills/process/aioson-spec-driven/SKILL.md +45 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/approval-gates.md +109 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/artifact-map.md +44 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/classification-map.md +37 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/hardening-lane.md +49 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/maintenance-and-state.md +66 -0
- package/template/.aioson/skills/process/aioson-spec-driven/references/ui-language.md +75 -0
- package/template/.aioson/skills/process/design-hybrid-forge/SKILL.md +144 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/crossover-protocol.md +221 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/naming-registry.md +88 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/output-contract.md +291 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/pair-compatibility.md +117 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/quality-gates.md +188 -0
- package/template/.aioson/skills/process/design-hybrid-forge/references/variation-library.md +125 -0
- package/template/.aioson/skills/squad/formats/catalog.json +15 -0
- package/template/.aioson/skills/squad/formats/content/blog-post.md +47 -0
- package/template/.aioson/skills/squad/formats/content/newsletter.md +47 -0
- package/template/.aioson/skills/squad/formats/creative/podcast-script.md +43 -0
- package/template/.aioson/skills/squad/formats/creative/video-script.md +41 -0
- package/template/.aioson/skills/squad/formats/social/instagram-feed.md +42 -0
- package/template/.aioson/skills/squad/formats/social/linkedin-post.md +42 -0
- package/template/.aioson/skills/squad/formats/social/tiktok.md +39 -0
- package/template/.aioson/skills/squad/formats/social/twitter-thread.md +39 -0
- package/template/.aioson/skills/squad/formats/social/youtube-long.md +47 -0
- package/template/.aioson/skills/squad/formats/social/youtube-shorts.md +39 -0
- package/template/.aioson/skills/squad/patterns/multi-platform-pattern.md +108 -0
- package/template/.aioson/skills/squad/patterns/persona-based-pattern.md +98 -0
- package/template/.aioson/skills/squad/patterns/pipeline-pattern.md +106 -0
- package/template/.aioson/skills/squad/patterns/review-loop-pattern.md +81 -0
- package/template/.aioson/skills/squad/references/checklist-templates.md +122 -0
- package/template/.aioson/skills/squad/references/executor-archetypes.md +123 -0
- package/template/.aioson/skills/squad/references/workflow-templates.md +169 -0
- package/template/.aioson/skills/static/debugging-protocol.md +42 -0
- package/template/.aioson/skills/static/git-worktrees.md +36 -0
- package/template/.aioson/tasks/implementation-plan.md +19 -0
- package/template/.aioson/tasks/squad-design.md +28 -0
- package/template/.aioson/tasks/squad-profile.md +48 -0
- package/template/.aioson/tasks/squad-review.md +61 -0
- package/template/.aioson/tasks/squad-task-decompose.md +66 -0
- package/template/.claude/commands/aioson/agent/neo.md +5 -0
- package/template/.claude/commands/aioson/agent/tester.md +5 -0
- package/template/.gemini/GEMINI.md +1 -0
- package/template/.gemini/commands/aios-neo.toml +4 -0
- package/template/.gemini/commands/aios-tester.toml +6 -0
- package/template/AGENTS.md +26 -1
- package/template/CLAUDE.md +6 -2
- package/template/OPENCODE.md +2 -0
|
@@ -10,6 +10,8 @@ module.exports = {
|
|
|
10
10
|
'aioson init <project-name> [--force] [--dry-run] [--lang=en|pt-BR|es|fr] [--tool=codex|claude|gemini|opencode] [--locale=pt-BR]',
|
|
11
11
|
help_install:
|
|
12
12
|
'aioson install [path] [--force] [--dry-run] [--lang=en|pt-BR|es|fr] [--tool=codex|claude|gemini|opencode] [--locale=pt-BR]',
|
|
13
|
+
help_setup:
|
|
14
|
+
'aioson setup [path] [--defaults] [--framework=<nome>] [--lang=en|pt-BR|es|fr] [--project-name=<nome>] [--force] [--dry-run] [--tool=codex|claude|gemini|opencode] [--locale=pt-BR]',
|
|
13
15
|
help_update:
|
|
14
16
|
'aioson update [path] [--dry-run] [--lang=en|pt-BR|es|fr] [--locale=pt-BR]',
|
|
15
17
|
help_info: 'aioson info [path] [--json] [--locale=pt-BR]',
|
|
@@ -59,6 +61,10 @@ module.exports = {
|
|
|
59
61
|
'aioson qa:scan [path] [--url=<app-url>] [--depth=3] [--max-pages=50] [--headed] [--html] [--json] [--locale=pt-BR]',
|
|
60
62
|
help_qa_report:
|
|
61
63
|
'aioson qa:report [path] [--html] [--json] [--locale=pt-BR]',
|
|
64
|
+
help_web_map:
|
|
65
|
+
'aioson web:map [path] --url=<url> [--depth=<N>] [--max-pages=<N>] [--include-external] [--json] [--locale=pt-BR]',
|
|
66
|
+
help_web_scrape:
|
|
67
|
+
'aioson web:scrape [path] --url=<url> [--format=markdown|text|html|links] [--json] [--locale=pt-BR]',
|
|
62
68
|
help_scan_project:
|
|
63
69
|
'aioson scan:project [path] --folder=<pasta[,pasta2]> [--summary-mode=titles|summaries|raw] [--context-mode=merge|rewrite] [--with-llm] [--provider=<name>] [--llm-model=<name>] [--dry-run] [--json] [--locale=pt-BR]',
|
|
64
70
|
help_config:
|
|
@@ -85,6 +91,18 @@ module.exports = {
|
|
|
85
91
|
'aioson squad:investigate [path] [--sub=list|show|score|link|register] [--investigation=<slug>] [--squad=<slug>] [--locale=pt-BR]',
|
|
86
92
|
help_squad_learning:
|
|
87
93
|
'aioson squad:learning [path] [--sub=list|stats|archive|promote|export] [--squad=<slug>] [--status=<status>] [--locale=pt-BR]',
|
|
94
|
+
help_squad_dashboard:
|
|
95
|
+
'aioson squad:dashboard [path] [--port=4180] [--squad=<slug>] [--locale=pt-BR]',
|
|
96
|
+
help_squad_worker:
|
|
97
|
+
'aioson squad:worker [path] [--sub=list|run|test|logs|scaffold] [--squad=<slug>] [--worker=<slug>] [--input=<json>] [--locale=pt-BR]',
|
|
98
|
+
help_squad_daemon:
|
|
99
|
+
'aioson squad:daemon [path] [--sub=start|status|stop|logs] [--squad=<slug>] [--port=<N>] [--locale=pt-BR]',
|
|
100
|
+
help_squad_mcp:
|
|
101
|
+
'aioson squad:mcp [path] [--sub=status|connectors|configure|test] [--squad=<slug>] [--mcp=<slug>] [--connector=<id>]',
|
|
102
|
+
help_squad_roi:
|
|
103
|
+
'aioson squad:roi [path] [--sub=config|metric|report|export] [--squad=<slug>] [--key=<metrica>] [--value=<N>]',
|
|
104
|
+
help_squad_score:
|
|
105
|
+
'aioson squad:score [path] --squad=<slug> [--locale=pt-BR]',
|
|
88
106
|
help_learning:
|
|
89
107
|
'aioson learning [path] [--sub=list|stats|promote] [--status=<status>] [--id=<learning-id>] [--locale=pt-BR]',
|
|
90
108
|
help_runtime_init:
|
|
@@ -139,6 +157,8 @@ module.exports = {
|
|
|
139
157
|
'aioson skill:list [caminho] [--json] [--locale=pt-BR]',
|
|
140
158
|
help_skill_remove:
|
|
141
159
|
'aioson skill:remove [caminho] --slug=<nome> [--json] [--locale=pt-BR]',
|
|
160
|
+
help_design_hybrid_options:
|
|
161
|
+
'aioson design-hybrid:options [caminho] [--advanced] [--json] [--locale=pt-BR]',
|
|
142
162
|
help_cloud_import_squad:
|
|
143
163
|
'aioson cloud:import:squad [path] --url=<snapshot-url> [--force] [--snapshots-only] [--dry-run] [--json] [--locale=pt-BR]',
|
|
144
164
|
help_cloud_import_genome:
|
|
@@ -168,7 +188,7 @@ module.exports = {
|
|
|
168
188
|
},
|
|
169
189
|
init: {
|
|
170
190
|
usage_error:
|
|
171
|
-
'Uso: aioson init <project-name> [--force] [--dry-run] [--lang=en|pt-BR|es|fr] [--tool=codex|claude|gemini|opencode] [--locale=pt-BR]',
|
|
191
|
+
'Uso: aioson init <project-name> [--force] [--dry-run] [--all] [--lang=en|pt-BR|es|fr] [--tool=codex|claude|gemini|opencode] [--locale=pt-BR]',
|
|
172
192
|
non_empty_dir: 'Diretorio nao esta vazio: {targetDir}. Use --force para continuar.',
|
|
173
193
|
created_at: 'Projeto criado em: {targetDir}',
|
|
174
194
|
files_copied: 'Arquivos copiados: {count}',
|
|
@@ -180,6 +200,9 @@ module.exports = {
|
|
|
180
200
|
step_agent_prompt:
|
|
181
201
|
'4. Gere o prompt de setup para sua ferramenta: aioson agent:prompt setup --tool={tool}'
|
|
182
202
|
},
|
|
203
|
+
init_all: {
|
|
204
|
+
installing_full: 'Instalacao completa (todas as ferramentas + squads) — wizard ignorado via --all'
|
|
205
|
+
},
|
|
183
206
|
install: {
|
|
184
207
|
framework_detected: 'Framework detectado: {framework} ({evidence})',
|
|
185
208
|
framework_not_detected: 'Nenhum framework detectado. Instalando em modo generico.',
|
|
@@ -196,11 +219,18 @@ module.exports = {
|
|
|
196
219
|
existing_project_scan_hint:
|
|
197
220
|
' aioson scan:project . --folder=src --with-llm --provider=<provider> (gera discovery.md + skeleton-system.md; sem --with-llm gera apenas os mapas locais)'
|
|
198
221
|
},
|
|
222
|
+
install_wizard: {
|
|
223
|
+
ready_to_install: 'Pronto para instalar:',
|
|
224
|
+
press_enter_to_install: 'Pressione enter para instalar ou q para cancelar.',
|
|
225
|
+
deselected_warning: '⚠ Itens desmarcados NAO serao removidos automaticamente.',
|
|
226
|
+
deselected_hint: ' Remova manualmente se necessario.'
|
|
227
|
+
},
|
|
199
228
|
update: {
|
|
200
229
|
not_installed: 'Nenhuma instalacao do AIOSON encontrada em {targetDir}.',
|
|
201
230
|
done_at: 'Atualizacao concluida em: {targetDir}',
|
|
202
231
|
files_updated: 'Arquivos atualizados: {count}',
|
|
203
|
-
backups_created: 'Backups criados: {count}'
|
|
232
|
+
backups_created: 'Backups criados: {count}',
|
|
233
|
+
reconfigure_hint: 'Novas opcoes podem estar disponiveis. Execute: aioson install --reconfigure'
|
|
204
234
|
},
|
|
205
235
|
info: {
|
|
206
236
|
cli_version: 'AIOSON CLI: v{version}',
|
|
@@ -330,6 +360,22 @@ module.exports = {
|
|
|
330
360
|
selected_line: ' {index}. {path} — {reason}',
|
|
331
361
|
hint_use: 'Use {path} como contexto minimo inicial na sua sessao de IA.'
|
|
332
362
|
},
|
|
363
|
+
setup: {
|
|
364
|
+
installing: 'Instalando template AIOSON...',
|
|
365
|
+
installed: 'Template instalado ({count} arquivos).',
|
|
366
|
+
no_framework_detected: 'Nenhum framework detectado neste diretorio (projeto novo).',
|
|
367
|
+
framework_detected: 'Framework detectado: {framework} (instalado={installed})',
|
|
368
|
+
writing_context: 'Escrevendo contexto do projeto...',
|
|
369
|
+
done: 'Setup concluido.',
|
|
370
|
+
step_agents: ' Proximo: abra seu cliente de IA e ative @setup para confirmar ou ajustar o contexto.',
|
|
371
|
+
step_agent_prompt: ' Ou execute: aioson agent:prompt setup . --tool={tool}',
|
|
372
|
+
q_project_name: 'Nome do projeto',
|
|
373
|
+
q_framework: 'Framework / stack principal (ex: Python, Node, Laravel, Django)',
|
|
374
|
+
q_lang: 'Idioma para respostas dos agentes (ex: en, pt-BR, es, fr)',
|
|
375
|
+
q_confirm_framework: 'Usar framework detectado? (true/false)',
|
|
376
|
+
q_override_framework: 'Framework',
|
|
377
|
+
q_framework_installed: 'Framework instalado? (true/false)'
|
|
378
|
+
},
|
|
333
379
|
setup_context: {
|
|
334
380
|
detected: 'Framework detectado: {framework} (installed={installed})',
|
|
335
381
|
q_project_name: 'Nome do projeto',
|
|
@@ -758,6 +804,23 @@ module.exports = {
|
|
|
758
804
|
not_found: 'Nenhum relatorio QA encontrado. Execute: aioson qa:run ou aioson qa:scan',
|
|
759
805
|
html_report_written: 'Relatorio HTML escrito: {path}'
|
|
760
806
|
},
|
|
807
|
+
web_map: {
|
|
808
|
+
url_missing: 'Opcao obrigatoria ausente: --url=<url>.',
|
|
809
|
+
starting: 'Mapeando site: {url}',
|
|
810
|
+
pages_found: 'Paginas descobertas: {count}',
|
|
811
|
+
page_line: '- {url} | profundidade={depth} | status={status} | links={links}',
|
|
812
|
+
done: 'Mapa web concluido.',
|
|
813
|
+
failed: 'Falha no mapa web: {error}'
|
|
814
|
+
},
|
|
815
|
+
web_scrape: {
|
|
816
|
+
url_missing: 'Opcao obrigatoria ausente: --url=<url>.',
|
|
817
|
+
invalid_format: 'Valor invalido para --format: {format}. Use markdown, text, html ou links.',
|
|
818
|
+
fetching: 'Buscando pagina: {url}',
|
|
819
|
+
title_line: 'Titulo: {title}',
|
|
820
|
+
status_line: 'Status: {status} | Content-Type: {type}',
|
|
821
|
+
done: 'Web scrape concluido ({format}).',
|
|
822
|
+
failed: 'Falha no web scrape: {error}'
|
|
823
|
+
},
|
|
761
824
|
config: {
|
|
762
825
|
usage_error:
|
|
763
826
|
'Uso: aioson config <set KEY=value|show|get KEY> [--json] [--locale=pt-BR]',
|
|
@@ -841,7 +904,9 @@ module.exports = {
|
|
|
841
904
|
sessions: ' Sessoes : {count} ({path})',
|
|
842
905
|
latest_html: ' Latest HTML : {value}',
|
|
843
906
|
logs: ' Logs : {count} ({path})',
|
|
844
|
-
genomes: ' Genomes : {count} no squad / {agent_count} vinculos por agente'
|
|
907
|
+
genomes: ' Genomes : {count} no squad / {agent_count} vinculos por agente',
|
|
908
|
+
model_tiers: ' Model Tiers : {value}',
|
|
909
|
+
estimated_cost: ' Custo Est. : ~${value}/run'
|
|
845
910
|
},
|
|
846
911
|
squad_agent_create: {
|
|
847
912
|
no_name: 'Uso: aioson squad:agent-create [path] --name=<nome-agente> [--type=agent|assistant|clone|worker] [--scope=my-agents|squad] [--squad=<slug>]',
|
|
@@ -965,6 +1030,96 @@ module.exports = {
|
|
|
965
1030
|
registered: 'Investigacao registrada: {slug} ({path})',
|
|
966
1031
|
unknown_sub: 'Subcomando desconhecido: {sub}. Use: list, show, score, link, register.'
|
|
967
1032
|
},
|
|
1033
|
+
squad_daemon: {
|
|
1034
|
+
squad_required: 'Slug do squad e obrigatorio. Use --squad=<slug>.',
|
|
1035
|
+
started: 'Daemon iniciado para squad "{squad}" na porta {port} ({workers} workers, {cron} cron jobs)',
|
|
1036
|
+
webhook_hint: 'Endpoint webhook: POST http://127.0.0.1:{port}/webhook/<worker-slug>',
|
|
1037
|
+
stop_hint: 'Pressione Ctrl+C para parar.',
|
|
1038
|
+
stopping: 'Parando daemon...',
|
|
1039
|
+
start_failed: 'Falha ao iniciar daemon: {error}',
|
|
1040
|
+
no_runtime: 'Runtime store nao encontrado. Execute aioson runtime:init primeiro.',
|
|
1041
|
+
no_daemons: 'Nenhum registro de daemon encontrado.',
|
|
1042
|
+
not_found: 'Nenhum registro de daemon para o squad: {squad}',
|
|
1043
|
+
not_running: 'O daemon do squad "{squad}" nao esta rodando.',
|
|
1044
|
+
signal_sent: 'SIGTERM enviado ao daemon de "{squad}" (pid {pid}).',
|
|
1045
|
+
process_gone: 'O processo do daemon de "{squad}" nao esta mais rodando.',
|
|
1046
|
+
no_logs: 'Nenhum log de atividade do daemon encontrado.',
|
|
1047
|
+
unknown_sub: 'Subcomando desconhecido: {sub}. Use: start, status, stop, logs.'
|
|
1048
|
+
},
|
|
1049
|
+
|
|
1050
|
+
squad_mcp: {
|
|
1051
|
+
squad_required: 'Slug do squad e obrigatorio. Use --squad=<slug>.',
|
|
1052
|
+
connectors_title: 'Conectores MCP Integrados:',
|
|
1053
|
+
actions: 'Acoes',
|
|
1054
|
+
required_config: 'Obrigatorio',
|
|
1055
|
+
no_integrations: 'Nenhuma integracao configurada para o squad "{squad}".',
|
|
1056
|
+
missing_config: 'Config ausente',
|
|
1057
|
+
calls: 'Chamadas',
|
|
1058
|
+
mcp_required: 'Slug do MCP e obrigatorio. Use --mcp=<slug>.',
|
|
1059
|
+
connector_required: 'ID do conector e obrigatorio. Use --connector=<id>.',
|
|
1060
|
+
unknown_connector: 'Conector desconhecido: {connector}. Use --sub=connectors para listar.',
|
|
1061
|
+
configured: 'Integracao "{mcp}" configurada com conector "{connector}" (status: {status}).',
|
|
1062
|
+
still_missing: 'Ainda faltam env/config: {keys}',
|
|
1063
|
+
not_configured: 'Integracao "{mcp}" nao esta configurada.',
|
|
1064
|
+
test_missing: 'Integracao "{mcp}" tem config ausente: {keys}',
|
|
1065
|
+
test_ok: 'Integracao "{mcp}" ({connector}) — config OK.',
|
|
1066
|
+
health_url: 'URL de health check: {url}',
|
|
1067
|
+
testing_connection: 'Testando conexao...',
|
|
1068
|
+
health_ok: 'Conexao OK (HTTP {statusCode})',
|
|
1069
|
+
health_error: 'Erro na conexao: {error}',
|
|
1070
|
+
health_skipped: 'Verificacao de saude nao disponivel para este connector',
|
|
1071
|
+
action_required: 'Slug da acao e obrigatorio. Use --action=<slug>.',
|
|
1072
|
+
invalid_input: 'JSON invalido. Forneca JSON valido com --input.',
|
|
1073
|
+
unknown_sub: 'Subcomando desconhecido: {sub}. Use: status, connectors, configure, test, call.'
|
|
1074
|
+
},
|
|
1075
|
+
|
|
1076
|
+
squad_roi: {
|
|
1077
|
+
squad_required: 'Slug do squad e obrigatorio. Use --squad=<slug>.',
|
|
1078
|
+
config_saved: 'Config de ROI salva para o squad "{squad}".',
|
|
1079
|
+
pricing_model: 'Modelo de precificacao',
|
|
1080
|
+
setup_fee: 'Taxa de implantacao',
|
|
1081
|
+
monthly_fee: 'Mensalidade',
|
|
1082
|
+
percentage: 'Percentual',
|
|
1083
|
+
contract: 'Contrato',
|
|
1084
|
+
metric_required: 'Chave e valor da metrica sao obrigatorios. Use --key=<nome> --value=<N>.',
|
|
1085
|
+
metric_saved: 'Metrica "{key}" = {value} salva para o squad "{squad}".',
|
|
1086
|
+
no_metrics: 'Nenhuma metrica encontrada para o squad "{squad}".',
|
|
1087
|
+
report_title: 'Relatorio de ROI — {squad}',
|
|
1088
|
+
baseline: 'Baseline',
|
|
1089
|
+
actual: 'Atual',
|
|
1090
|
+
target: 'Meta',
|
|
1091
|
+
period: 'Periodo',
|
|
1092
|
+
cost_section: 'Resumo de Custos:',
|
|
1093
|
+
monthly_cost: 'Custo mensal efetivo',
|
|
1094
|
+
exported: 'Relatorio exportado para {file} ({format}).',
|
|
1095
|
+
unknown_sub: 'Subcomando desconhecido: {sub}. Use: config, metric, report, export.'
|
|
1096
|
+
},
|
|
1097
|
+
|
|
1098
|
+
squad_worker: {
|
|
1099
|
+
squad_required: 'Slug do squad e obrigatorio. Use --squad=<slug>.',
|
|
1100
|
+
no_workers: 'Nenhum worker encontrado para este squad.',
|
|
1101
|
+
run_usage: 'Uso: aioson squad:worker --sub=run --squad=<slug> --worker=<slug> [--input=<json>]',
|
|
1102
|
+
test_usage: 'Uso: aioson squad:worker --sub=test --squad=<slug> --worker=<slug>',
|
|
1103
|
+
scaffold_usage: 'Uso: aioson squad:worker --sub=scaffold --squad=<slug> --worker=<slug> [--trigger=manual|event|scheduled]',
|
|
1104
|
+
not_found: 'Worker nao encontrado: {worker}',
|
|
1105
|
+
invalid_input: 'JSON invalido. Forneca JSON valido com --input.',
|
|
1106
|
+
run_success: 'Worker "{worker}" concluido com sucesso.',
|
|
1107
|
+
run_failed: 'Worker "{worker}" falhou: {error}',
|
|
1108
|
+
test_passed: 'Worker "{worker}" teste aprovado.',
|
|
1109
|
+
test_failed: 'Worker "{worker}" teste falhou: {error}',
|
|
1110
|
+
scaffold_created: 'Worker "{worker}" criado em {path}',
|
|
1111
|
+
no_runtime: 'Runtime store nao encontrado. Execute aioson runtime:init primeiro.',
|
|
1112
|
+
no_logs: 'Nenhuma execucao de worker encontrada.',
|
|
1113
|
+
unknown_sub: 'Subcomando desconhecido: {sub}. Use: list, run, test, logs, scaffold.'
|
|
1114
|
+
},
|
|
1115
|
+
|
|
1116
|
+
squad_dashboard: {
|
|
1117
|
+
started: 'Squad Dashboard rodando em {url} (porta {port})',
|
|
1118
|
+
filtered: 'Filtrando para squad: {squad}',
|
|
1119
|
+
stop_hint: 'Pressione Ctrl+C para parar.',
|
|
1120
|
+
stopping: 'Parando Squad Dashboard...',
|
|
1121
|
+
port_in_use: 'Porta {port} ja esta em uso. Tente --port=<outra>'
|
|
1122
|
+
},
|
|
968
1123
|
implementation_plan: {
|
|
969
1124
|
not_found: 'Plano de implementacao nao encontrado: {file}',
|
|
970
1125
|
no_runtime: 'Runtime store nao encontrado. Execute aioson runtime:init primeiro.',
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const AIOSON_LETTERS = [
|
|
4
|
+
// A
|
|
5
|
+
[' █████╗ ', ' ██╔══██╗', ' ███████║', ' ██╔══██║', ' ██║ ██║', ' ╚═╝ ╚═╝'],
|
|
6
|
+
// I
|
|
7
|
+
['██╗', '██║', '██║', '██║', '██║', '╚═╝'],
|
|
8
|
+
// O
|
|
9
|
+
[' ██████╗ ', '██╔═══██╗', '██║ ██║', '██║ ██║', '╚██████╔╝', ' ╚═════╝ '],
|
|
10
|
+
// S
|
|
11
|
+
['███████╗', '██╔════╝', '███████╗', '╚════██║', '███████║', '╚══════╝'],
|
|
12
|
+
// O
|
|
13
|
+
[' ██████╗ ', '██╔═══██╗', '██║ ██║', '██║ ██║', '╚██████╔╝', ' ╚═════╝ '],
|
|
14
|
+
// N
|
|
15
|
+
['███╗ ██╗', '████╗ ██║', '██╔██╗ ██║', '██║╚██╗██║', '██║ ╚████║', '╚═╝ ╚═══╝']
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const LETTER_DELAY_MS = 130;
|
|
19
|
+
const TAGLINE_CHAR_DELAY_MS = 25;
|
|
20
|
+
const PULSE_DELAY_MS = 150;
|
|
21
|
+
const HEIGHT = 6;
|
|
22
|
+
|
|
23
|
+
function sleep(ms) {
|
|
24
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function renderProgress({ copied, total, file }, stdout = process.stdout) {
|
|
28
|
+
if (!stdout.isTTY) return;
|
|
29
|
+
const pct = Math.round((copied / total) * 20);
|
|
30
|
+
const bar = '█'.repeat(pct) + '░'.repeat(20 - pct);
|
|
31
|
+
const shortFile = file.length > 35 ? '...' + file.slice(-32) : file;
|
|
32
|
+
const line = ` \x1b[36m●\x1b[0m Installing \x1b[90m[${bar}]\x1b[0m ${copied}/${total} \x1b[90m${shortFile}\x1b[0m`;
|
|
33
|
+
stdout.write(`\r\x1b[K${line}`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function renderRevealAnimation(version, stdout = process.stdout) {
|
|
37
|
+
if (!stdout.isTTY) return;
|
|
38
|
+
|
|
39
|
+
const noColor = process.env.NO_COLOR !== undefined;
|
|
40
|
+
const dumb = process.env.TERM === 'dumb';
|
|
41
|
+
const cols = stdout.columns || 80;
|
|
42
|
+
|
|
43
|
+
if (dumb || cols < 50) return;
|
|
44
|
+
|
|
45
|
+
const cyan = noColor ? '' : '\x1b[1;36m';
|
|
46
|
+
const dim = noColor ? '' : '\x1b[90m';
|
|
47
|
+
const reset = noColor ? '' : '\x1b[0m';
|
|
48
|
+
const bold = noColor ? '' : '\x1b[1m';
|
|
49
|
+
|
|
50
|
+
// Clear progress line
|
|
51
|
+
stdout.write('\r\x1b[K\n');
|
|
52
|
+
|
|
53
|
+
// Phase 1: Reveal letter by letter
|
|
54
|
+
for (let letterIdx = 0; letterIdx <= AIOSON_LETTERS.length; letterIdx++) {
|
|
55
|
+
if (letterIdx > 0) stdout.write(`\x1b[${HEIGHT}A`);
|
|
56
|
+
|
|
57
|
+
for (let row = 0; row < HEIGHT; row++) {
|
|
58
|
+
stdout.write('\x1b[K ');
|
|
59
|
+
for (let l = 0; l < letterIdx; l++) {
|
|
60
|
+
stdout.write(`${cyan}${AIOSON_LETTERS[l][row]}${reset} `);
|
|
61
|
+
}
|
|
62
|
+
stdout.write('\n');
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (letterIdx < AIOSON_LETTERS.length) {
|
|
66
|
+
await sleep(LETTER_DELAY_MS);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Phase 2: Tagline slide-in
|
|
71
|
+
const tagline = `AI Operating Framework v${version}`;
|
|
72
|
+
stdout.write('\n ');
|
|
73
|
+
for (const ch of tagline) {
|
|
74
|
+
stdout.write(`${dim}${ch}${reset}`);
|
|
75
|
+
await sleep(TAGLINE_CHAR_DELAY_MS);
|
|
76
|
+
}
|
|
77
|
+
stdout.write('\n');
|
|
78
|
+
|
|
79
|
+
// Phase 3: Breathing pulse (1 cycle)
|
|
80
|
+
await sleep(PULSE_DELAY_MS);
|
|
81
|
+
stdout.write(`\x1b[${HEIGHT + 2}A`);
|
|
82
|
+
for (let row = 0; row < HEIGHT; row++) {
|
|
83
|
+
stdout.write('\x1b[K ');
|
|
84
|
+
for (const letter of AIOSON_LETTERS) {
|
|
85
|
+
stdout.write(`${bold}${cyan}${letter[row]}${reset} `);
|
|
86
|
+
}
|
|
87
|
+
stdout.write('\n');
|
|
88
|
+
}
|
|
89
|
+
stdout.write('\n'); // skip tagline line
|
|
90
|
+
stdout.write('\n'); // space before summary
|
|
91
|
+
|
|
92
|
+
await sleep(PULSE_DELAY_MS);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function renderInstallSummary({ result, installProfile, stdout = process.stdout }) {
|
|
96
|
+
const isTTY = Boolean(stdout.isTTY);
|
|
97
|
+
const noColor = process.env.NO_COLOR !== undefined;
|
|
98
|
+
|
|
99
|
+
const green = (isTTY && !noColor) ? '\x1b[32m' : '';
|
|
100
|
+
const dim = (isTTY && !noColor) ? '\x1b[90m' : '';
|
|
101
|
+
const cyan = (isTTY && !noColor) ? '\x1b[36m' : '';
|
|
102
|
+
const yellow = (isTTY && !noColor) ? '\x1b[33m' : '';
|
|
103
|
+
const reset = (isTTY && !noColor) ? '\x1b[0m' : '';
|
|
104
|
+
|
|
105
|
+
const TOOL_NAMES = {
|
|
106
|
+
claude: 'Claude Code',
|
|
107
|
+
codex: 'Codex',
|
|
108
|
+
gemini: 'Gemini CLI',
|
|
109
|
+
opencode: 'OpenCode'
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const DESIGN_NAMES = {
|
|
113
|
+
'none': 'None',
|
|
114
|
+
'all': 'All design skills',
|
|
115
|
+
'clean-saas-ui': 'Clean SaaS UI',
|
|
116
|
+
'aurora-command-ui': 'Aurora Command UI',
|
|
117
|
+
'cognitive-core-ui': 'Cognitive Core UI',
|
|
118
|
+
'bold-editorial-ui': 'Bold Editorial UI',
|
|
119
|
+
'warm-craft-ui': 'Warm Craft UI',
|
|
120
|
+
'glassmorphism-ui': 'Glassmorphism UI',
|
|
121
|
+
'neo-brutalist-ui': 'Neo-Brutalist UI',
|
|
122
|
+
'premium-command-center-ui': 'Premium Command Center UI',
|
|
123
|
+
'interface-design': 'Interface Design'
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
const LOCALE_NAMES = {
|
|
127
|
+
'en': 'English',
|
|
128
|
+
'pt-BR': 'Português (Brasil)',
|
|
129
|
+
'es': 'Español',
|
|
130
|
+
'fr': 'Français'
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
const toolNames = installProfile
|
|
134
|
+
? installProfile.tools.map(t => TOOL_NAMES[t] || t).join(', ')
|
|
135
|
+
: 'All';
|
|
136
|
+
|
|
137
|
+
const modeLabel = !installProfile
|
|
138
|
+
? 'All'
|
|
139
|
+
: installProfile.uses.includes('squads')
|
|
140
|
+
? 'Development + Squads'
|
|
141
|
+
: 'Development';
|
|
142
|
+
|
|
143
|
+
const designValue = installProfile ? (installProfile.design || 'none') : null;
|
|
144
|
+
let designLabel = null;
|
|
145
|
+
if (designValue) {
|
|
146
|
+
if (designValue === 'all') {
|
|
147
|
+
designLabel = DESIGN_NAMES['all'];
|
|
148
|
+
} else if (Array.isArray(designValue)) {
|
|
149
|
+
designLabel = designValue.map(id => DESIGN_NAMES[id] || id).join(', ');
|
|
150
|
+
} else {
|
|
151
|
+
designLabel = DESIGN_NAMES[designValue] || designValue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const localeLabel = installProfile
|
|
156
|
+
? (LOCALE_NAMES[installProfile.locale || 'en'] || installProfile.locale || 'English')
|
|
157
|
+
: null;
|
|
158
|
+
|
|
159
|
+
const copiedCount = result.copied.length;
|
|
160
|
+
const profileSkipped = result.skipped.filter(s => s.reason === 'not-in-profile').length;
|
|
161
|
+
const existingSkipped = result.skipped.filter(s => s.reason === 'already-exists').length;
|
|
162
|
+
const otherSkipped = result.skipped.length - profileSkipped - existingSkipped;
|
|
163
|
+
|
|
164
|
+
if (!isTTY) {
|
|
165
|
+
stdout.write(`aioson: installed ${copiedCount} files`);
|
|
166
|
+
if (existingSkipped) stdout.write(`, ${existingSkipped} already exist`);
|
|
167
|
+
if (profileSkipped) stdout.write(`, ${profileSkipped} not in profile`);
|
|
168
|
+
stdout.write('\n');
|
|
169
|
+
const toolsStr = installProfile ? installProfile.tools.join(',') : 'all';
|
|
170
|
+
const modeStr = installProfile ? installProfile.uses.join(',') : 'all';
|
|
171
|
+
const designVal = installProfile ? (installProfile.design || 'none') : 'all';
|
|
172
|
+
const designStr = Array.isArray(designVal) ? designVal.join(',') : designVal;
|
|
173
|
+
const localeStr = installProfile ? (installProfile.locale || 'en') : 'all';
|
|
174
|
+
stdout.write(`aioson: tools=${toolsStr} mode=${modeStr} design=${designStr} locale=${localeStr}\n`);
|
|
175
|
+
stdout.write('aioson: run /setup to continue\n');
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Strip ANSI codes to measure visible length
|
|
180
|
+
function visLen(s) {
|
|
181
|
+
return s.replace(/\x1b\[[0-9;]*m/g, '').length;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function truncate(s, maxLen) {
|
|
185
|
+
if (!s) return s;
|
|
186
|
+
const v = visLen(s);
|
|
187
|
+
if (v <= maxLen) return s;
|
|
188
|
+
// Strip the trailing reset code, truncate, then re-add reset
|
|
189
|
+
const ANSI_RESET = '\x1b[0m';
|
|
190
|
+
const hasReset = s.endsWith(ANSI_RESET);
|
|
191
|
+
const plain = hasReset ? s.slice(0, -ANSI_RESET.length) : s;
|
|
192
|
+
const visiblePlain = visLen(plain);
|
|
193
|
+
if (visiblePlain <= maxLen) return plain + (hasReset ? ANSI_RESET : '');
|
|
194
|
+
// Count visible chars while slicing
|
|
195
|
+
let kept = 0;
|
|
196
|
+
let cutPoint = 0;
|
|
197
|
+
for (; cutPoint < plain.length && kept < maxLen; cutPoint++) {
|
|
198
|
+
if (plain[cutPoint] === '\x1b') {
|
|
199
|
+
// Skip ANSI sequence
|
|
200
|
+
const end = plain.indexOf('m', cutPoint);
|
|
201
|
+
cutPoint = end >= 0 ? end : plain.length - 1;
|
|
202
|
+
} else {
|
|
203
|
+
kept++;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return plain.slice(0, cutPoint) + '…' + (hasReset ? ANSI_RESET : '');
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Internal width (between │ borders), including 1 space padding each side
|
|
210
|
+
const W = 41;
|
|
211
|
+
|
|
212
|
+
function row(content) {
|
|
213
|
+
const padding = ' '.repeat(Math.max(0, W - visLen(content)));
|
|
214
|
+
return ` │ ${content}${padding} │`;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Build skip detail lines
|
|
218
|
+
const skipLines = [];
|
|
219
|
+
if (existingSkipped > 0) {
|
|
220
|
+
skipLines.push(row(`${dim}─ ${existingSkipped} files already up to date${reset}`));
|
|
221
|
+
}
|
|
222
|
+
if (profileSkipped > 0) {
|
|
223
|
+
skipLines.push(row(`${dim}─ ${profileSkipped} files skipped (not in profile)${reset}`));
|
|
224
|
+
}
|
|
225
|
+
if (otherSkipped > 0) {
|
|
226
|
+
skipLines.push(row(`${dim}─ ${otherSkipped} files skipped (protected)${reset}`));
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
const profileLines = [
|
|
230
|
+
row(`${cyan}Tools${reset} → ${cyan}${truncate(toolNames, W - 16)}${reset}`),
|
|
231
|
+
row(`${cyan}Mode${reset} → ${cyan}${truncate(modeLabel, W - 16)}${reset}`)
|
|
232
|
+
];
|
|
233
|
+
if (designLabel) profileLines.push(row(`${cyan}Design${reset} → ${cyan}${truncate(designLabel, W - 16)}${reset}`));
|
|
234
|
+
if (localeLabel) profileLines.push(row(`${cyan}Locale${reset} → ${cyan}${truncate(localeLabel, W - 16)}${reset}`));
|
|
235
|
+
|
|
236
|
+
const lines = [
|
|
237
|
+
` ╭${'─'.repeat(W + 2)}╮`,
|
|
238
|
+
` │${' '.repeat(W + 2)}│`,
|
|
239
|
+
row(`${green}✓${reset} ${copiedCount} files installed`),
|
|
240
|
+
...skipLines,
|
|
241
|
+
` │${' '.repeat(W + 2)}│`,
|
|
242
|
+
...profileLines,
|
|
243
|
+
` │${' '.repeat(W + 2)}│`,
|
|
244
|
+
row(`${yellow}Next: run /setup in your AI tool${reset}`),
|
|
245
|
+
` │${' '.repeat(W + 2)}│`,
|
|
246
|
+
` ╰${'─'.repeat(W + 2)}╯`,
|
|
247
|
+
];
|
|
248
|
+
|
|
249
|
+
stdout.write(lines.join('\n') + '\n');
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
module.exports = {
|
|
253
|
+
renderProgress,
|
|
254
|
+
renderRevealAnimation,
|
|
255
|
+
renderInstallSummary,
|
|
256
|
+
__test__: {
|
|
257
|
+
AIOSON_LETTERS,
|
|
258
|
+
sleep
|
|
259
|
+
}
|
|
260
|
+
};
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// Arquivos que pertencem a cada tool
|
|
4
|
+
const TOOL_FILES = {
|
|
5
|
+
claude: [
|
|
6
|
+
'CLAUDE.md',
|
|
7
|
+
/^\.claude\//
|
|
8
|
+
],
|
|
9
|
+
codex: [
|
|
10
|
+
'AGENTS.md'
|
|
11
|
+
],
|
|
12
|
+
gemini: [
|
|
13
|
+
'.gemini/GEMINI.md',
|
|
14
|
+
/^\.gemini\/commands\//
|
|
15
|
+
],
|
|
16
|
+
opencode: [
|
|
17
|
+
'OPENCODE.md'
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// Squad agent/task/skill paths (non-locale)
|
|
22
|
+
const SQUAD_PATHS = [
|
|
23
|
+
/^\.aioson\/agents\/(squad|orache|genome|profiler-researcher|profiler-enricher|profiler-forge|design-hybrid-forge)\.md$/,
|
|
24
|
+
/^\.aioson\/tasks\/squad-/,
|
|
25
|
+
/^\.aioson\/skills\/squad\//,
|
|
26
|
+
/^\.aioson\/templates\/squads\//,
|
|
27
|
+
/^\.aioson\/squads\//
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
// Squad agents inside locale dirs — filtered by BOTH locale AND squad
|
|
31
|
+
const SQUAD_LOCALE_AGENT_RE = /^\.aioson\/locales\/([^/]+)\/agents\/(squad|orache|genome|profiler-researcher|profiler-enricher|profiler-forge|design-hybrid-forge)\.md$/;
|
|
32
|
+
|
|
33
|
+
// Design skill IDs disponíveis
|
|
34
|
+
const DESIGN_IDS = [
|
|
35
|
+
'aurora-command-ui',
|
|
36
|
+
'bold-editorial-ui',
|
|
37
|
+
'clean-saas-ui',
|
|
38
|
+
'cognitive-core-ui',
|
|
39
|
+
'glassmorphism-ui',
|
|
40
|
+
'interface-design',
|
|
41
|
+
'neo-brutalist-ui',
|
|
42
|
+
'premium-command-center-ui',
|
|
43
|
+
'warm-craft-ui'
|
|
44
|
+
];
|
|
45
|
+
|
|
46
|
+
// Special value meaning "install all design skills"
|
|
47
|
+
const DESIGN_ALL = 'all';
|
|
48
|
+
|
|
49
|
+
// Caminhos de locale por código
|
|
50
|
+
const LOCALE_IDS = ['en', 'es', 'fr', 'pt-BR'];
|
|
51
|
+
|
|
52
|
+
// Arquivos sempre instalados (core invariante)
|
|
53
|
+
const ALWAYS_INSTALL = [
|
|
54
|
+
/^\.aioson\/config\.md$/,
|
|
55
|
+
/^\.aioson\/schemas\//,
|
|
56
|
+
/^\.aioson\/mcp\//,
|
|
57
|
+
/^\.aioson\/context\//,
|
|
58
|
+
/^\.aioson\/installed-skills\//,
|
|
59
|
+
/^\.aioson\/my-agents\//,
|
|
60
|
+
/^aioson-models\.json$/
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const DEFAULT_PROFILE = {
|
|
64
|
+
tools: ['claude'],
|
|
65
|
+
uses: ['development'],
|
|
66
|
+
design: 'none',
|
|
67
|
+
locale: 'en'
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
function matchesAny(rel, patterns) {
|
|
71
|
+
for (const p of patterns) {
|
|
72
|
+
if (typeof p === 'string') {
|
|
73
|
+
if (rel === p) return true;
|
|
74
|
+
} else if (p.test(rel)) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function isFileForAnyTool(rel) {
|
|
82
|
+
for (const patterns of Object.values(TOOL_FILES)) {
|
|
83
|
+
if (matchesAny(rel, patterns)) return true;
|
|
84
|
+
}
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Returns true if the file should be installed given the profile.
|
|
90
|
+
* null profile = install everything (current behavior / fallback).
|
|
91
|
+
*/
|
|
92
|
+
function shouldIncludeForProfile(rel, profile) {
|
|
93
|
+
if (!profile) return true;
|
|
94
|
+
|
|
95
|
+
// Always install core
|
|
96
|
+
if (matchesAny(rel, ALWAYS_INSTALL)) return true;
|
|
97
|
+
|
|
98
|
+
// Tool-specific files
|
|
99
|
+
if (isFileForAnyTool(rel)) {
|
|
100
|
+
return (profile.tools || []).some(tool => matchesAny(rel, TOOL_FILES[tool] || []));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Squad-specific files (non-locale)
|
|
104
|
+
if (matchesAny(rel, SQUAD_PATHS)) {
|
|
105
|
+
return (profile.uses || []).includes('squads');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Design skills: .aioson/skills/design/<id>/
|
|
109
|
+
const designMatch = rel.match(/^\.aioson\/skills\/design\/([^/]+)\//);
|
|
110
|
+
if (designMatch) {
|
|
111
|
+
const skillId = designMatch[1];
|
|
112
|
+
const chosen = profile.design || 'none';
|
|
113
|
+
if (chosen === DESIGN_ALL) return true;
|
|
114
|
+
if (Array.isArray(chosen)) return chosen.includes(skillId);
|
|
115
|
+
return chosen !== 'none' && skillId === chosen;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Locale files: .aioson/locales/<locale>/...
|
|
119
|
+
const localeMatch = rel.match(/^\.aioson\/locales\/([^/]+)\//);
|
|
120
|
+
if (localeMatch) {
|
|
121
|
+
const fileLocale = localeMatch[1];
|
|
122
|
+
const chosen = profile.locale || 'en';
|
|
123
|
+
if (fileLocale !== chosen) return false;
|
|
124
|
+
// Squad locale agents also require squads to be enabled
|
|
125
|
+
if (SQUAD_LOCALE_AGENT_RE.test(rel)) {
|
|
126
|
+
return (profile.uses || []).includes('squads');
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Everything else (core agents, dev skills, process, etc.) → always install
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
module.exports = {
|
|
136
|
+
shouldIncludeForProfile,
|
|
137
|
+
TOOL_FILES,
|
|
138
|
+
SQUAD_PATHS,
|
|
139
|
+
DESIGN_IDS,
|
|
140
|
+
LOCALE_IDS,
|
|
141
|
+
ALWAYS_INSTALL,
|
|
142
|
+
DEFAULT_PROFILE
|
|
143
|
+
};
|