aios-core 2.1.6 → 2.2.1
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/.aios-core/core/README.md +229 -229
- package/.aios-core/core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/core/data/aios-kb.md +923 -923
- package/.aios-core/core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/core/docs/component-creation-guide.md +457 -457
- package/.aios-core/core/docs/session-update-pattern.md +307 -307
- package/.aios-core/core/docs/template-syntax.md +266 -266
- package/.aios-core/core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/core/elicitation/elicitation-engine.js +1 -1
- package/.aios-core/core/index.esm.js +42 -42
- package/.aios-core/core/index.js +1 -1
- package/.aios-core/core/migration/migration-config.yaml +83 -83
- package/.aios-core/core/migration/module-mapping.yaml +89 -89
- package/.aios-core/core/quality-gates/layer2-pr-automation.js +1 -1
- package/.aios-core/core/quality-gates/quality-gate-config.yaml +86 -86
- package/.aios-core/core/registry/README.md +179 -179
- package/.aios-core/core/utils/security-utils.js +1 -1
- package/.aios-core/core-config.yaml +391 -382
- package/.aios-core/data/agent-config-requirements.yaml +368 -368
- package/.aios-core/data/aios-kb.md +923 -923
- package/.aios-core/data/technical-preferences.md +3 -3
- package/.aios-core/data/workflow-patterns.yaml +267 -267
- package/.aios-core/development/README.md +142 -142
- package/.aios-core/development/agent-teams/team-all.yaml +15 -15
- package/.aios-core/development/agent-teams/team-fullstack.yaml +18 -18
- package/.aios-core/development/agent-teams/team-ide-minimal.yaml +10 -10
- package/.aios-core/development/agent-teams/team-no-ui.yaml +13 -13
- package/.aios-core/development/agent-teams/team-qa-focused.yaml +155 -155
- package/.aios-core/development/agents/aios-master.md +339 -339
- package/.aios-core/development/agents/analyst.md +195 -195
- package/.aios-core/development/agents/architect.md +359 -359
- package/.aios-core/development/agents/data-engineer.md +468 -468
- package/.aios-core/development/agents/dev.md +390 -390
- package/.aios-core/development/agents/devops.md +398 -398
- package/.aios-core/development/agents/pm.md +198 -198
- package/.aios-core/development/agents/po.md +256 -256
- package/.aios-core/development/agents/qa.md +312 -312
- package/.aios-core/development/agents/sm.md +220 -220
- package/.aios-core/development/agents/ux-design-expert.md +451 -451
- package/.aios-core/development/scripts/greeting-config-cli.js +85 -85
- package/.aios-core/development/tasks/add-mcp.md +319 -319
- package/.aios-core/development/tasks/advanced-elicitation.md +318 -318
- package/.aios-core/development/tasks/analyst-facilitate-brainstorming.md +341 -341
- package/.aios-core/development/tasks/analyze-framework.md +696 -696
- package/.aios-core/development/tasks/analyze-performance.md +637 -637
- package/.aios-core/development/tasks/apply-qa-fixes.md +340 -340
- package/.aios-core/development/tasks/architect-analyze-impact.md +826 -826
- package/.aios-core/development/tasks/audit-codebase.md +429 -429
- package/.aios-core/development/tasks/audit-tailwind-config.md +270 -270
- package/.aios-core/development/tasks/audit-utilities.md +358 -358
- package/.aios-core/development/tasks/bootstrap-shadcn-library.md +286 -286
- package/.aios-core/development/tasks/brownfield-create-epic.md +485 -485
- package/.aios-core/development/tasks/brownfield-create-story.md +356 -356
- package/.aios-core/development/tasks/build-component.md +478 -478
- package/.aios-core/development/tasks/calculate-roi.md +455 -455
- package/.aios-core/development/tasks/ci-cd-configuration.md +764 -764
- package/.aios-core/development/tasks/cleanup-utilities.md +670 -670
- package/.aios-core/development/tasks/collaborative-edit.md +1108 -1108
- package/.aios-core/development/tasks/compose-molecule.md +284 -284
- package/.aios-core/development/tasks/consolidate-patterns.md +414 -414
- package/.aios-core/development/tasks/correct-course.md +279 -279
- package/.aios-core/development/tasks/create-agent.md +321 -321
- package/.aios-core/development/tasks/create-brownfield-story.md +726 -726
- package/.aios-core/development/tasks/create-deep-research-prompt.md +498 -498
- package/.aios-core/development/tasks/create-doc.md +316 -316
- package/.aios-core/development/tasks/create-next-story.md +774 -774
- package/.aios-core/development/tasks/create-suite.md +283 -283
- package/.aios-core/development/tasks/create-task.md +371 -371
- package/.aios-core/development/tasks/create-workflow.md +370 -370
- package/.aios-core/development/tasks/db-analyze-hotpaths.md +572 -572
- package/.aios-core/development/tasks/db-apply-migration.md +381 -381
- package/.aios-core/development/tasks/db-bootstrap.md +642 -642
- package/.aios-core/development/tasks/db-domain-modeling.md +693 -693
- package/.aios-core/development/tasks/db-dry-run.md +293 -293
- package/.aios-core/development/tasks/db-env-check.md +260 -260
- package/.aios-core/development/tasks/db-expansion-pack-integration.md +663 -663
- package/.aios-core/development/tasks/db-explain.md +631 -631
- package/.aios-core/development/tasks/db-impersonate.md +495 -495
- package/.aios-core/development/tasks/db-load-csv.md +593 -593
- package/.aios-core/development/tasks/db-policy-apply.md +653 -653
- package/.aios-core/development/tasks/db-rls-audit.md +411 -411
- package/.aios-core/development/tasks/db-rollback.md +739 -739
- package/.aios-core/development/tasks/db-run-sql.md +613 -613
- package/.aios-core/development/tasks/db-schema-audit.md +1011 -1011
- package/.aios-core/development/tasks/db-seed.md +390 -390
- package/.aios-core/development/tasks/db-smoke-test.md +351 -351
- package/.aios-core/development/tasks/db-snapshot.md +569 -569
- package/.aios-core/development/tasks/db-supabase-setup.md +712 -712
- package/.aios-core/development/tasks/db-verify-order.md +515 -515
- package/.aios-core/development/tasks/deprecate-component.md +956 -956
- package/.aios-core/development/tasks/dev-apply-qa-fixes.md +318 -318
- package/.aios-core/development/tasks/dev-backlog-debt.md +469 -469
- package/.aios-core/development/tasks/dev-develop-story.md +846 -846
- package/.aios-core/development/tasks/dev-improve-code-quality.md +872 -872
- package/.aios-core/development/tasks/dev-optimize-performance.md +1033 -1033
- package/.aios-core/development/tasks/dev-suggest-refactoring.md +870 -870
- package/.aios-core/development/tasks/dev-validate-next-story.md +348 -348
- package/.aios-core/development/tasks/document-project.md +552 -552
- package/.aios-core/development/tasks/environment-bootstrap.md +1311 -1311
- package/.aios-core/development/tasks/execute-checklist.md +301 -301
- package/.aios-core/development/tasks/export-design-tokens-dtcg.md +274 -274
- package/.aios-core/development/tasks/extend-pattern.md +269 -269
- package/.aios-core/development/tasks/extract-tokens.md +467 -467
- package/.aios-core/development/tasks/facilitate-brainstorming-session.md +518 -518
- package/.aios-core/development/tasks/generate-ai-frontend-prompt.md +260 -260
- package/.aios-core/development/tasks/generate-documentation.md +284 -284
- package/.aios-core/development/tasks/generate-migration-strategy.md +522 -522
- package/.aios-core/development/tasks/generate-shock-report.md +501 -501
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +427 -427
- package/.aios-core/development/tasks/github-devops-pre-push-quality-gate.md +733 -733
- package/.aios-core/development/tasks/github-devops-repository-cleanup.md +374 -374
- package/.aios-core/development/tasks/github-devops-version-management.md +483 -483
- package/.aios-core/development/tasks/improve-self.md +822 -822
- package/.aios-core/development/tasks/index-docs.md +387 -387
- package/.aios-core/development/tasks/init-project-status.md +506 -506
- package/.aios-core/development/tasks/integrate-expansion-pack.md +314 -314
- package/.aios-core/development/tasks/kb-mode-interaction.md +283 -283
- package/.aios-core/development/tasks/learn-patterns.md +900 -900
- package/.aios-core/development/tasks/mcp-workflow.md +437 -437
- package/.aios-core/development/tasks/modify-agent.md +381 -381
- package/.aios-core/development/tasks/modify-task.md +424 -424
- package/.aios-core/development/tasks/modify-workflow.md +465 -465
- package/.aios-core/development/tasks/po-backlog-add.md +370 -370
- package/.aios-core/development/tasks/po-manage-story-backlog.md +523 -523
- package/.aios-core/development/tasks/po-pull-story-from-clickup.md +540 -540
- package/.aios-core/development/tasks/po-pull-story.md +316 -316
- package/.aios-core/development/tasks/po-stories-index.md +351 -351
- package/.aios-core/development/tasks/po-sync-story-to-clickup.md +457 -457
- package/.aios-core/development/tasks/po-sync-story.md +303 -303
- package/.aios-core/development/tasks/pr-automation.md +701 -701
- package/.aios-core/development/tasks/propose-modification.md +842 -842
- package/.aios-core/development/tasks/qa-backlog-add-followup.md +425 -425
- package/.aios-core/development/tasks/qa-gate.md +373 -373
- package/.aios-core/development/tasks/qa-generate-tests.md +1174 -1174
- package/.aios-core/development/tasks/qa-nfr-assess.md +557 -557
- package/.aios-core/development/tasks/qa-review-proposal.md +1157 -1157
- package/.aios-core/development/tasks/qa-review-story.md +682 -682
- package/.aios-core/development/tasks/qa-risk-profile.md +566 -566
- package/.aios-core/development/tasks/qa-run-tests.md +277 -277
- package/.aios-core/development/tasks/qa-test-design.md +387 -387
- package/.aios-core/development/tasks/qa-trace-requirements.md +476 -476
- package/.aios-core/development/tasks/release-management.md +723 -723
- package/.aios-core/development/tasks/security-audit.md +554 -554
- package/.aios-core/development/tasks/security-scan.md +790 -790
- package/.aios-core/development/tasks/setup-database.md +741 -741
- package/.aios-core/development/tasks/setup-design-system.md +462 -462
- package/.aios-core/development/tasks/setup-github.md +874 -874
- package/.aios-core/development/tasks/setup-llm-routing.md +1 -1
- package/.aios-core/development/tasks/setup-mcp-docker.md +584 -584
- package/.aios-core/development/tasks/setup-project-docs.md +1 -1
- package/.aios-core/development/tasks/shard-doc.md +537 -537
- package/.aios-core/development/tasks/sm-create-next-story.md +480 -480
- package/.aios-core/development/tasks/sync-documentation.md +864 -864
- package/.aios-core/development/tasks/tailwind-upgrade.md +294 -294
- package/.aios-core/development/tasks/test-as-user.md +621 -621
- package/.aios-core/development/tasks/test-validation-task.md +171 -171
- package/.aios-core/development/tasks/undo-last.md +346 -346
- package/.aios-core/development/tasks/update-manifest.md +409 -409
- package/.aios-core/development/tasks/ux-create-wireframe.md +617 -617
- package/.aios-core/development/tasks/ux-ds-scan-artifact.md +672 -672
- package/.aios-core/development/tasks/ux-user-research.md +559 -559
- package/.aios-core/development/tasks/validate-next-story.md +422 -422
- package/.aios-core/development/workflows/README.md +83 -83
- package/.aios-core/development/workflows/brownfield-fullstack.yaml +297 -297
- package/.aios-core/development/workflows/brownfield-service.yaml +187 -187
- package/.aios-core/development/workflows/brownfield-ui.yaml +197 -197
- package/.aios-core/development/workflows/greenfield-fullstack.yaml +333 -333
- package/.aios-core/development/workflows/greenfield-service.yaml +206 -206
- package/.aios-core/development/workflows/greenfield-ui.yaml +235 -235
- package/.aios-core/docs/SHARD-TRANSLATION-GUIDE.md +335 -335
- package/.aios-core/docs/component-creation-guide.md +457 -457
- package/.aios-core/docs/session-update-pattern.md +307 -307
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +572 -572
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-QUICK-REFERENCE.md +185 -185
- package/.aios-core/docs/standards/AIOS-COLOR-PALETTE-V2.1.md +354 -354
- package/.aios-core/docs/standards/AIOS-FRAMEWORK-MASTER.md +1963 -1963
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-COMPLETE.md +821 -821
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1-SUMMARY.md +1190 -1190
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.1.md +439 -439
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO-V2.2-SUMMARY.md +1339 -1339
- package/.aios-core/docs/standards/AIOS-LIVRO-DE-OURO.md +5398 -5398
- package/.aios-core/docs/standards/EXECUTOR-DECISION-TREE.md +697 -697
- package/.aios-core/docs/standards/OPEN-SOURCE-VS-SERVICE-DIFFERENCES.md +511 -511
- package/.aios-core/docs/standards/QUALITY-GATES-SPECIFICATION.md +556 -556
- package/.aios-core/docs/standards/STANDARDS-INDEX.md +210 -210
- package/.aios-core/docs/standards/STORY-TEMPLATE-V2-SPECIFICATION.md +550 -550
- package/.aios-core/docs/standards/TASK-FORMAT-SPECIFICATION-V1.md +1414 -1414
- package/.aios-core/docs/standards/V3-ARCHITECTURAL-DECISIONS.md +523 -523
- package/.aios-core/docs/template-syntax.md +266 -266
- package/.aios-core/docs/troubleshooting-guide.md +624 -624
- package/.aios-core/index.esm.js +15 -15
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/README.md +126 -126
- package/.aios-core/infrastructure/integrations/pm-adapters/README.md +59 -59
- package/.aios-core/infrastructure/scripts/approval-workflow.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +3 -3
- package/.aios-core/infrastructure/scripts/component-metadata.js +1 -1
- package/.aios-core/infrastructure/scripts/component-search.js +1 -1
- package/.aios-core/infrastructure/scripts/coverage-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/dependency-impact-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/framework-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/improvement-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/llm-routing/install-llm-routing.js +26 -13
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.cmd +127 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/claude-free-tracked.sh +108 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.cmd +71 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-proxy.sh +65 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.cmd +51 -0
- package/.aios-core/infrastructure/scripts/llm-routing/templates/deepseek-usage.sh +16 -0
- package/.aios-core/infrastructure/scripts/llm-routing/usage-tracker/index.js +549 -0
- package/.aios-core/infrastructure/scripts/modification-risk-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/performance-analyzer.js +1 -1
- package/.aios-core/infrastructure/scripts/pm-adapter.js +134 -134
- package/.aios-core/infrastructure/scripts/repository-detector.js +3 -3
- package/.aios-core/infrastructure/scripts/template-engine.js +1 -1
- package/.aios-core/infrastructure/scripts/template-validator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-generator.js +1 -1
- package/.aios-core/infrastructure/scripts/test-quality-assessment.js +1 -1
- package/.aios-core/infrastructure/scripts/transaction-manager.js +1 -1
- package/.aios-core/infrastructure/scripts/usage-analytics.js +1 -1
- package/.aios-core/infrastructure/scripts/visual-impact-generator.js +2 -2
- package/.aios-core/infrastructure/templates/github-workflows/README.md +109 -109
- package/.aios-core/infrastructure/tests/regression-suite-v2.md +621 -621
- package/.aios-core/infrastructure/tools/README.md +222 -222
- package/.aios-core/infrastructure/tools/cli/github-cli.yaml +200 -200
- package/.aios-core/infrastructure/tools/cli/railway-cli.yaml +260 -260
- package/.aios-core/infrastructure/tools/cli/supabase-cli.yaml +224 -224
- package/.aios-core/infrastructure/tools/local/ffmpeg.yaml +261 -261
- package/.aios-core/infrastructure/tools/mcp/21st-dev-magic.yaml +127 -127
- package/.aios-core/infrastructure/tools/mcp/browser.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/clickup.yaml +534 -534
- package/.aios-core/infrastructure/tools/mcp/context7.yaml +78 -78
- package/.aios-core/infrastructure/tools/mcp/desktop-commander.yaml +180 -180
- package/.aios-core/infrastructure/tools/mcp/exa.yaml +103 -103
- package/.aios-core/infrastructure/tools/mcp/google-workspace.yaml +930 -930
- package/.aios-core/infrastructure/tools/mcp/n8n.yaml +551 -551
- package/.aios-core/infrastructure/tools/mcp/supabase.yaml +808 -808
- package/.aios-core/install-manifest.yaml +347 -347
- package/.aios-core/product/README.md +56 -56
- package/.aios-core/product/checklists/accessibility-wcag-checklist.md +80 -0
- package/.aios-core/product/checklists/architect-checklist.md +443 -443
- package/.aios-core/product/checklists/change-checklist.md +182 -182
- package/.aios-core/product/checklists/component-quality-checklist.md +74 -0
- package/.aios-core/product/checklists/database-design-checklist.md +119 -119
- package/.aios-core/product/checklists/dba-predeploy-checklist.md +97 -97
- package/.aios-core/product/checklists/dba-rollback-checklist.md +99 -99
- package/.aios-core/product/checklists/migration-readiness-checklist.md +75 -0
- package/.aios-core/product/checklists/pattern-audit-checklist.md +88 -0
- package/.aios-core/product/checklists/pm-checklist.md +375 -375
- package/.aios-core/product/checklists/po-master-checklist.md +441 -441
- package/.aios-core/product/checklists/pre-push-checklist.md +108 -108
- package/.aios-core/product/checklists/release-checklist.md +122 -122
- package/.aios-core/product/checklists/story-dod-checklist.md +101 -101
- package/.aios-core/product/checklists/story-draft-checklist.md +215 -215
- package/.aios-core/product/data/atomic-design-principles.md +108 -0
- package/.aios-core/product/data/brainstorming-techniques.md +36 -36
- package/.aios-core/product/data/consolidation-algorithms.md +142 -0
- package/.aios-core/product/data/database-best-practices.md +182 -0
- package/.aios-core/product/data/design-token-best-practices.md +107 -0
- package/.aios-core/product/data/elicitation-methods.md +134 -134
- package/.aios-core/product/data/integration-patterns.md +207 -0
- package/.aios-core/product/data/migration-safety-guide.md +329 -0
- package/.aios-core/product/data/mode-selection-best-practices.md +471 -471
- package/.aios-core/product/data/postgres-tuning-guide.md +300 -0
- package/.aios-core/product/data/rls-security-patterns.md +333 -0
- package/.aios-core/product/data/roi-calculation-guide.md +142 -0
- package/.aios-core/product/data/supabase-patterns.md +330 -0
- package/.aios-core/product/data/test-levels-framework.md +148 -148
- package/.aios-core/product/data/test-priorities-matrix.md +174 -174
- package/.aios-core/product/data/wcag-compliance-guide.md +267 -0
- package/.aios-core/product/templates/1mcp-config.yaml +225 -225
- package/.aios-core/product/templates/activation-instructions-inline-greeting.yaml +63 -63
- package/.aios-core/product/templates/activation-instructions-template.md +258 -258
- package/.aios-core/product/templates/agent-template.yaml +120 -120
- package/.aios-core/product/templates/architecture-tmpl.yaml +650 -650
- package/.aios-core/product/templates/brainstorming-output-tmpl.yaml +155 -155
- package/.aios-core/product/templates/brownfield-architecture-tmpl.yaml +475 -475
- package/.aios-core/product/templates/brownfield-prd-tmpl.yaml +279 -279
- package/.aios-core/product/templates/changelog-template.md +134 -134
- package/.aios-core/product/templates/command-rationalization-matrix.md +152 -152
- package/.aios-core/product/templates/competitor-analysis-tmpl.yaml +292 -292
- package/.aios-core/product/templates/design-story-tmpl.yaml +587 -587
- package/.aios-core/product/templates/ds-artifact-analysis.md +70 -70
- package/.aios-core/product/templates/front-end-architecture-tmpl.yaml +205 -205
- package/.aios-core/product/templates/front-end-spec-tmpl.yaml +348 -348
- package/.aios-core/product/templates/fullstack-architecture-tmpl.yaml +804 -804
- package/.aios-core/product/templates/github-pr-template.md +67 -67
- package/.aios-core/product/templates/gordon-mcp.yaml +140 -140
- package/.aios-core/product/templates/ide-rules/antigravity-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/claude-rules.md +221 -221
- package/.aios-core/product/templates/ide-rules/cline-rules.md +84 -84
- package/.aios-core/product/templates/ide-rules/copilot-rules.md +92 -92
- package/.aios-core/product/templates/ide-rules/cursor-rules.md +115 -115
- package/.aios-core/product/templates/ide-rules/gemini-rules.md +85 -85
- package/.aios-core/product/templates/ide-rules/roo-rules.md +86 -86
- package/.aios-core/product/templates/ide-rules/trae-rules.md +104 -104
- package/.aios-core/product/templates/ide-rules/windsurf-rules.md +80 -80
- package/.aios-core/product/templates/index-strategy-tmpl.yaml +53 -53
- package/.aios-core/product/templates/market-research-tmpl.yaml +251 -251
- package/.aios-core/product/templates/mcp-workflow.js +271 -271
- package/.aios-core/product/templates/migration-plan-tmpl.yaml +1022 -1022
- package/.aios-core/product/templates/migration-strategy-tmpl.md +524 -524
- package/.aios-core/product/templates/personalized-agent-template.md +258 -258
- package/.aios-core/product/templates/personalized-checklist-template.md +340 -340
- package/.aios-core/product/templates/personalized-task-template-v2.md +905 -905
- package/.aios-core/product/templates/personalized-task-template.md +344 -344
- package/.aios-core/product/templates/personalized-template-file.yaml +322 -322
- package/.aios-core/product/templates/personalized-workflow-template.yaml +460 -460
- package/.aios-core/product/templates/prd-tmpl.yaml +201 -201
- package/.aios-core/product/templates/project-brief-tmpl.yaml +220 -220
- package/.aios-core/product/templates/qa-gate-tmpl.yaml +240 -240
- package/.aios-core/product/templates/rls-policies-tmpl.yaml +1203 -1203
- package/.aios-core/product/templates/schema-design-tmpl.yaml +428 -428
- package/.aios-core/product/templates/state-persistence-tmpl.yaml +219 -219
- package/.aios-core/product/templates/story-tmpl.yaml +331 -331
- package/.aios-core/product/templates/task-execution-report.md +495 -495
- package/.aios-core/product/templates/task-template.md +122 -122
- package/.aios-core/product/templates/token-exports-tailwind-tmpl.js +395 -395
- package/.aios-core/product/templates/tokens-schema-tmpl.yaml +305 -305
- package/.aios-core/product/templates/workflow-template.yaml +133 -133
- package/.aios-core/scripts/README.md +354 -354
- package/.aios-core/scripts/aios-doc-template.md +325 -325
- package/.aios-core/scripts/elicitation-engine.js +1 -1
- package/.aios-core/scripts/test-template-system.js +1 -1
- package/.aios-core/scripts/workflow-management.md +69 -69
- package/.aios-core/user-guide.md +1413 -1413
- package/.aios-core/working-in-the-brownfield.md +361 -361
- package/LICENSE +1 -1
- package/README.md +704 -703
- package/bin/aios-init-old.js +3 -3
- package/bin/aios-init-v4.js +1 -1
- package/bin/aios-init.backup-v1.1.4.js +1 -1
- package/bin/aios-init.js +3 -3
- package/bin/aios.js +279 -279
- package/bin/utils/install-errors.js +339 -339
- package/bin/utils/install-transaction.js +445 -445
- package/index.d.ts +18 -18
- package/index.esm.js +20 -20
- package/index.js +6 -6
- package/package.json +8 -11
- package/packages/installer/src/config/templates/env-template.js +27 -4
- package/packages/installer/src/detection/detect-project-type.js +81 -81
- package/packages/installer/tests/integration/wizard-detection.test.js +8 -6
- package/packages/installer/tests/unit/env-template.test.js +8 -8
- package/src/config/ide-configs.js +1 -1
- package/src/wizard/feedback.js +2 -2
- package/src/wizard/index.js +1 -1
- package/src/wizard/validation/report-generator.js +1 -1
- package/src/wizard/validation/troubleshooting-system.js +13 -13
- package/tools/diagnose-installation.js +266 -0
- package/tools/diagnose-npx-issue.ps1 +96 -0
- package/tools/quick-diagnose.cmd +85 -0
- package/tools/quick-diagnose.ps1 +117 -0
- package/.aios-core/infrastructure/scripts/_archived/final-todo-count.js +0 -122
- package/.aios-core/infrastructure/scripts/_archived/fix-yaml-formatting.js +0 -89
- package/.aios-core/infrastructure/scripts/_archived/migration-generator.js +0 -780
- package/.aios-core/infrastructure/scripts/_archived/migration-path-generator.js +0 -950
- package/.aios-core/infrastructure/scripts/_archived/phase2-entrada-saida-errors.js +0 -425
- package/.aios-core/infrastructure/scripts/_archived/phase2-spot-check.js +0 -132
- package/.aios-core/infrastructure/scripts/_archived/phase3-tools-scripts-validation.js +0 -381
- package/.aios-core/infrastructure/scripts/_archived/phase4-metadata-performance.js +0 -203
- package/.aios-core/infrastructure/scripts/_archived/test-yaml-parsing.js +0 -24
- package/.aios-core/infrastructure/scripts/_archived/verify-yaml-fix.js +0 -51
- package/.aios-core/tasks/find-component.md.legacy +0 -391
- package/.aios-core/tasks/generate-commit-message.md.legacy +0 -426
- package/.aios-core/tasks/generate-migration.md.legacy +0 -382
- package/.aios-core/tasks/rollback-modification.md.legacy +0 -307
- package/.aios-core/tasks/update-tests.md.legacy +0 -283
|
@@ -1,271 +1,271 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Workflow Template
|
|
3
|
-
* AIOS
|
|
4
|
-
* Version: 1.0.0
|
|
5
|
-
*
|
|
6
|
-
* This template demonstrates how to create Code Mode workflows
|
|
7
|
-
* that execute in the Docker MCP sandbox for maximum token efficiency.
|
|
8
|
-
*
|
|
9
|
-
* Benefits of Code Mode:
|
|
10
|
-
* - ~98.7% token reduction (processing happens in sandbox)
|
|
11
|
-
* - Multi-MCP orchestration in single workflow
|
|
12
|
-
* - Only final results return to LLM context
|
|
13
|
-
* - Full JavaScript runtime available
|
|
14
|
-
*
|
|
15
|
-
* Usage:
|
|
16
|
-
* 1. Copy this template to scripts/mcp-workflows/
|
|
17
|
-
* 2. Customize the workflow function
|
|
18
|
-
* 3. Run via: docker mcp exec ./workflow.js
|
|
19
|
-
* 4. Or use *mcp-workflow task to generate
|
|
20
|
-
*
|
|
21
|
-
* Template Variables:
|
|
22
|
-
* {{WORKFLOW_NAME}} - Name of the workflow
|
|
23
|
-
* {{WORKFLOW_DESCRIPTION}} - Description
|
|
24
|
-
* {{INPUT_PARAMS}} - Input parameters
|
|
25
|
-
* {{OUTPUT_FORMAT}} - Output format specification
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
'use strict';
|
|
29
|
-
|
|
30
|
-
// ============================================
|
|
31
|
-
// WORKFLOW METADATA
|
|
32
|
-
// ============================================
|
|
33
|
-
|
|
34
|
-
const WORKFLOW_META = {
|
|
35
|
-
name: '{{WORKFLOW_NAME:-example-workflow}}',
|
|
36
|
-
version: '1.0.0',
|
|
37
|
-
description: '{{WORKFLOW_DESCRIPTION:-Example MCP workflow template}}',
|
|
38
|
-
author: 'AIOS Framework',
|
|
39
|
-
mcps_required: ['fs', 'fetch'], // MCPs used by this workflow
|
|
40
|
-
estimated_duration: '10-30 seconds',
|
|
41
|
-
token_savings: '~98.7%',
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// ============================================
|
|
45
|
-
// MCP CLIENT INTERFACE
|
|
46
|
-
// ============================================
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* MCP client interface (provided by Docker MCP runtime)
|
|
50
|
-
* Available when running via: docker mcp exec
|
|
51
|
-
*/
|
|
52
|
-
const mcp = globalThis.mcp || {
|
|
53
|
-
// Filesystem operations
|
|
54
|
-
fs: {
|
|
55
|
-
readFile: async (path) => { /* implementation provided by runtime */ },
|
|
56
|
-
writeFile: async (path, content) => { /* implementation provided by runtime */ },
|
|
57
|
-
listDirectory: async (path) => { /* implementation provided by runtime */ },
|
|
58
|
-
exists: async (path) => { /* implementation provided by runtime */ },
|
|
59
|
-
},
|
|
60
|
-
// HTTP fetch operations
|
|
61
|
-
fetch: {
|
|
62
|
-
get: async (url, options) => { /* implementation provided by runtime */ },
|
|
63
|
-
post: async (url, body, options) => { /* implementation provided by runtime */ },
|
|
64
|
-
},
|
|
65
|
-
// GitHub operations (if enabled)
|
|
66
|
-
github: {
|
|
67
|
-
getRepo: async (owner, repo) => { /* implementation provided by runtime */ },
|
|
68
|
-
createIssue: async (owner, repo, title, body) => { /* implementation provided by runtime */ },
|
|
69
|
-
listPRs: async (owner, repo, state) => { /* implementation provided by runtime */ },
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
// ============================================
|
|
74
|
-
// HELPER FUNCTIONS
|
|
75
|
-
// ============================================
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Extract main content from HTML
|
|
79
|
-
* Runs locally in sandbox (no tokens used)
|
|
80
|
-
*/
|
|
81
|
-
function extractMainContent(html) {
|
|
82
|
-
// Simple extraction - customize for your needs
|
|
83
|
-
const bodyMatch = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
|
|
84
|
-
if (!bodyMatch) return html;
|
|
85
|
-
|
|
86
|
-
let content = bodyMatch[1];
|
|
87
|
-
|
|
88
|
-
// Remove scripts and styles
|
|
89
|
-
content = content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
|
|
90
|
-
content = content.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
|
|
91
|
-
content = content.replace(/<[^>]+>/g, ' ');
|
|
92
|
-
content = content.replace(/\s+/g, ' ').trim();
|
|
93
|
-
|
|
94
|
-
return content;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Summarize text to max words
|
|
99
|
-
* Runs locally in sandbox (no tokens used)
|
|
100
|
-
*/
|
|
101
|
-
function summarize(text, maxWords = 500) {
|
|
102
|
-
const words = text.split(/\s+/);
|
|
103
|
-
if (words.length <= maxWords) return text;
|
|
104
|
-
return words.slice(0, maxWords).join(' ') + '...';
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Simple keyword-based classification
|
|
109
|
-
* For more advanced classification, use an LLM MCP
|
|
110
|
-
*/
|
|
111
|
-
function classifyContent(text, categories) {
|
|
112
|
-
const lowerText = text.toLowerCase();
|
|
113
|
-
const scores = {};
|
|
114
|
-
|
|
115
|
-
// Simple keyword matching (customize for your use case)
|
|
116
|
-
const keywords = {
|
|
117
|
-
Technology: ['software', 'code', 'api', 'developer', 'programming', 'tech'],
|
|
118
|
-
Business: ['revenue', 'market', 'customer', 'growth', 'sales', 'business'],
|
|
119
|
-
Research: ['study', 'research', 'analysis', 'data', 'findings', 'report'],
|
|
120
|
-
Other: [],
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
for (const category of categories) {
|
|
124
|
-
scores[category] = 0;
|
|
125
|
-
const categoryKeywords = keywords[category] || [];
|
|
126
|
-
for (const keyword of categoryKeywords) {
|
|
127
|
-
if (lowerText.includes(keyword)) {
|
|
128
|
-
scores[category]++;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// Return category with highest score
|
|
134
|
-
let maxScore = 0;
|
|
135
|
-
let result = categories[categories.length - 1]; // Default to last (usually 'Other')
|
|
136
|
-
|
|
137
|
-
for (const [category, score] of Object.entries(scores)) {
|
|
138
|
-
if (score > maxScore) {
|
|
139
|
-
maxScore = score;
|
|
140
|
-
result = category;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return result;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// ============================================
|
|
148
|
-
// MAIN WORKFLOW FUNCTION
|
|
149
|
-
// ============================================
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Main workflow: Scrape → Process → Classify → Output
|
|
153
|
-
*
|
|
154
|
-
* This workflow demonstrates:
|
|
155
|
-
* 1. Using fetch MCP to get web content
|
|
156
|
-
* 2. Processing content locally (no tokens)
|
|
157
|
-
* 3. Classifying content with simple logic
|
|
158
|
-
* 4. Using fs MCP to save results
|
|
159
|
-
*
|
|
160
|
-
* @param {Object} params - Workflow parameters
|
|
161
|
-
* @param {string} params.url - URL to scrape
|
|
162
|
-
* @param {string} params.outputPath - Path to save results
|
|
163
|
-
* @param {string[]} params.categories - Classification categories
|
|
164
|
-
* @returns {Object} Workflow result (only this returns to LLM context)
|
|
165
|
-
*/
|
|
166
|
-
async function runWorkflow(params) {
|
|
167
|
-
const {
|
|
168
|
-
url = 'https://example.com',
|
|
169
|
-
outputPath = '/workspace/output.json',
|
|
170
|
-
categories = ['Technology', 'Business', 'Research', 'Other'],
|
|
171
|
-
} = params;
|
|
172
|
-
|
|
173
|
-
const startTime = Date.now();
|
|
174
|
-
|
|
175
|
-
try {
|
|
176
|
-
// Step 1: Fetch content (uses fetch MCP)
|
|
177
|
-
console.log(`[1/4] Fetching content from: ${url}`);
|
|
178
|
-
const response = await mcp.fetch.get(url);
|
|
179
|
-
const html = response.body || response.text || '';
|
|
180
|
-
|
|
181
|
-
// Step 2: Extract and process (local, no tokens)
|
|
182
|
-
console.log('[2/4] Extracting main content...');
|
|
183
|
-
const content = extractMainContent(html);
|
|
184
|
-
const summary = summarize(content, 500);
|
|
185
|
-
|
|
186
|
-
// Step 3: Classify (local, no tokens)
|
|
187
|
-
console.log('[3/4] Classifying content...');
|
|
188
|
-
const category = classifyContent(summary, categories);
|
|
189
|
-
|
|
190
|
-
// Step 4: Save results (uses fs MCP)
|
|
191
|
-
console.log(`[4/4] Saving results to: ${outputPath}`);
|
|
192
|
-
const result = {
|
|
193
|
-
url,
|
|
194
|
-
title: extractTitle(html),
|
|
195
|
-
category,
|
|
196
|
-
summary,
|
|
197
|
-
wordCount: summary.split(/\s+/).length,
|
|
198
|
-
timestamp: new Date().toISOString(),
|
|
199
|
-
processingTime: `${Date.now() - startTime}ms`,
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
await mcp.fs.writeFile(outputPath, JSON.stringify(result, null, 2));
|
|
203
|
-
|
|
204
|
-
// Return ONLY final result to LLM context
|
|
205
|
-
// All processing happened in sandbox = ~98.7% token savings
|
|
206
|
-
return {
|
|
207
|
-
success: true,
|
|
208
|
-
result: {
|
|
209
|
-
url,
|
|
210
|
-
category,
|
|
211
|
-
wordCount: result.wordCount,
|
|
212
|
-
outputPath,
|
|
213
|
-
processingTime: result.processingTime,
|
|
214
|
-
},
|
|
215
|
-
tokensUsed: 0, // Processing was in sandbox
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
} catch (error) {
|
|
219
|
-
return {
|
|
220
|
-
success: false,
|
|
221
|
-
error: error.message,
|
|
222
|
-
url,
|
|
223
|
-
processingTime: `${Date.now() - startTime}ms`,
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Extract title from HTML
|
|
230
|
-
*/
|
|
231
|
-
function extractTitle(html) {
|
|
232
|
-
const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
|
|
233
|
-
return titleMatch ? titleMatch[1].trim() : 'Untitled';
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// ============================================
|
|
237
|
-
// WORKFLOW EXECUTION
|
|
238
|
-
// ============================================
|
|
239
|
-
|
|
240
|
-
// Entry point when run via: docker mcp exec
|
|
241
|
-
if (typeof module !== 'undefined' && !module.parent) {
|
|
242
|
-
// Parse command line arguments or use defaults
|
|
243
|
-
const args = process.argv.slice(2);
|
|
244
|
-
const params = {};
|
|
245
|
-
|
|
246
|
-
for (let i = 0; i < args.length; i += 2) {
|
|
247
|
-
const key = args[i].replace(/^--/, '');
|
|
248
|
-
const value = args[i + 1];
|
|
249
|
-
params[key] = value;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
runWorkflow(params)
|
|
253
|
-
.then((result) => {
|
|
254
|
-
console.log('\n=== Workflow Complete ===');
|
|
255
|
-
console.log(JSON.stringify(result, null, 2));
|
|
256
|
-
process.exit(result.success ? 0 : 1);
|
|
257
|
-
})
|
|
258
|
-
.catch((error) => {
|
|
259
|
-
console.error('Workflow failed:', error);
|
|
260
|
-
process.exit(1);
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// Export for testing and module use
|
|
265
|
-
module.exports = {
|
|
266
|
-
runWorkflow,
|
|
267
|
-
extractMainContent,
|
|
268
|
-
summarize,
|
|
269
|
-
classifyContent,
|
|
270
|
-
WORKFLOW_META,
|
|
271
|
-
};
|
|
1
|
+
/**
|
|
2
|
+
* MCP Workflow Template
|
|
3
|
+
* Synkra AIOS Framework
|
|
4
|
+
* Version: 1.0.0
|
|
5
|
+
*
|
|
6
|
+
* This template demonstrates how to create Code Mode workflows
|
|
7
|
+
* that execute in the Docker MCP sandbox for maximum token efficiency.
|
|
8
|
+
*
|
|
9
|
+
* Benefits of Code Mode:
|
|
10
|
+
* - ~98.7% token reduction (processing happens in sandbox)
|
|
11
|
+
* - Multi-MCP orchestration in single workflow
|
|
12
|
+
* - Only final results return to LLM context
|
|
13
|
+
* - Full JavaScript runtime available
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* 1. Copy this template to scripts/mcp-workflows/
|
|
17
|
+
* 2. Customize the workflow function
|
|
18
|
+
* 3. Run via: docker mcp exec ./workflow.js
|
|
19
|
+
* 4. Or use *mcp-workflow task to generate
|
|
20
|
+
*
|
|
21
|
+
* Template Variables:
|
|
22
|
+
* {{WORKFLOW_NAME}} - Name of the workflow
|
|
23
|
+
* {{WORKFLOW_DESCRIPTION}} - Description
|
|
24
|
+
* {{INPUT_PARAMS}} - Input parameters
|
|
25
|
+
* {{OUTPUT_FORMAT}} - Output format specification
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
'use strict';
|
|
29
|
+
|
|
30
|
+
// ============================================
|
|
31
|
+
// WORKFLOW METADATA
|
|
32
|
+
// ============================================
|
|
33
|
+
|
|
34
|
+
const WORKFLOW_META = {
|
|
35
|
+
name: '{{WORKFLOW_NAME:-example-workflow}}',
|
|
36
|
+
version: '1.0.0',
|
|
37
|
+
description: '{{WORKFLOW_DESCRIPTION:-Example MCP workflow template}}',
|
|
38
|
+
author: 'AIOS Framework',
|
|
39
|
+
mcps_required: ['fs', 'fetch'], // MCPs used by this workflow
|
|
40
|
+
estimated_duration: '10-30 seconds',
|
|
41
|
+
token_savings: '~98.7%',
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// ============================================
|
|
45
|
+
// MCP CLIENT INTERFACE
|
|
46
|
+
// ============================================
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* MCP client interface (provided by Docker MCP runtime)
|
|
50
|
+
* Available when running via: docker mcp exec
|
|
51
|
+
*/
|
|
52
|
+
const mcp = globalThis.mcp || {
|
|
53
|
+
// Filesystem operations
|
|
54
|
+
fs: {
|
|
55
|
+
readFile: async (path) => { /* implementation provided by runtime */ },
|
|
56
|
+
writeFile: async (path, content) => { /* implementation provided by runtime */ },
|
|
57
|
+
listDirectory: async (path) => { /* implementation provided by runtime */ },
|
|
58
|
+
exists: async (path) => { /* implementation provided by runtime */ },
|
|
59
|
+
},
|
|
60
|
+
// HTTP fetch operations
|
|
61
|
+
fetch: {
|
|
62
|
+
get: async (url, options) => { /* implementation provided by runtime */ },
|
|
63
|
+
post: async (url, body, options) => { /* implementation provided by runtime */ },
|
|
64
|
+
},
|
|
65
|
+
// GitHub operations (if enabled)
|
|
66
|
+
github: {
|
|
67
|
+
getRepo: async (owner, repo) => { /* implementation provided by runtime */ },
|
|
68
|
+
createIssue: async (owner, repo, title, body) => { /* implementation provided by runtime */ },
|
|
69
|
+
listPRs: async (owner, repo, state) => { /* implementation provided by runtime */ },
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// ============================================
|
|
74
|
+
// HELPER FUNCTIONS
|
|
75
|
+
// ============================================
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Extract main content from HTML
|
|
79
|
+
* Runs locally in sandbox (no tokens used)
|
|
80
|
+
*/
|
|
81
|
+
function extractMainContent(html) {
|
|
82
|
+
// Simple extraction - customize for your needs
|
|
83
|
+
const bodyMatch = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
|
|
84
|
+
if (!bodyMatch) return html;
|
|
85
|
+
|
|
86
|
+
let content = bodyMatch[1];
|
|
87
|
+
|
|
88
|
+
// Remove scripts and styles
|
|
89
|
+
content = content.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '');
|
|
90
|
+
content = content.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '');
|
|
91
|
+
content = content.replace(/<[^>]+>/g, ' ');
|
|
92
|
+
content = content.replace(/\s+/g, ' ').trim();
|
|
93
|
+
|
|
94
|
+
return content;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Summarize text to max words
|
|
99
|
+
* Runs locally in sandbox (no tokens used)
|
|
100
|
+
*/
|
|
101
|
+
function summarize(text, maxWords = 500) {
|
|
102
|
+
const words = text.split(/\s+/);
|
|
103
|
+
if (words.length <= maxWords) return text;
|
|
104
|
+
return words.slice(0, maxWords).join(' ') + '...';
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Simple keyword-based classification
|
|
109
|
+
* For more advanced classification, use an LLM MCP
|
|
110
|
+
*/
|
|
111
|
+
function classifyContent(text, categories) {
|
|
112
|
+
const lowerText = text.toLowerCase();
|
|
113
|
+
const scores = {};
|
|
114
|
+
|
|
115
|
+
// Simple keyword matching (customize for your use case)
|
|
116
|
+
const keywords = {
|
|
117
|
+
Technology: ['software', 'code', 'api', 'developer', 'programming', 'tech'],
|
|
118
|
+
Business: ['revenue', 'market', 'customer', 'growth', 'sales', 'business'],
|
|
119
|
+
Research: ['study', 'research', 'analysis', 'data', 'findings', 'report'],
|
|
120
|
+
Other: [],
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
for (const category of categories) {
|
|
124
|
+
scores[category] = 0;
|
|
125
|
+
const categoryKeywords = keywords[category] || [];
|
|
126
|
+
for (const keyword of categoryKeywords) {
|
|
127
|
+
if (lowerText.includes(keyword)) {
|
|
128
|
+
scores[category]++;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Return category with highest score
|
|
134
|
+
let maxScore = 0;
|
|
135
|
+
let result = categories[categories.length - 1]; // Default to last (usually 'Other')
|
|
136
|
+
|
|
137
|
+
for (const [category, score] of Object.entries(scores)) {
|
|
138
|
+
if (score > maxScore) {
|
|
139
|
+
maxScore = score;
|
|
140
|
+
result = category;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// ============================================
|
|
148
|
+
// MAIN WORKFLOW FUNCTION
|
|
149
|
+
// ============================================
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Main workflow: Scrape → Process → Classify → Output
|
|
153
|
+
*
|
|
154
|
+
* This workflow demonstrates:
|
|
155
|
+
* 1. Using fetch MCP to get web content
|
|
156
|
+
* 2. Processing content locally (no tokens)
|
|
157
|
+
* 3. Classifying content with simple logic
|
|
158
|
+
* 4. Using fs MCP to save results
|
|
159
|
+
*
|
|
160
|
+
* @param {Object} params - Workflow parameters
|
|
161
|
+
* @param {string} params.url - URL to scrape
|
|
162
|
+
* @param {string} params.outputPath - Path to save results
|
|
163
|
+
* @param {string[]} params.categories - Classification categories
|
|
164
|
+
* @returns {Object} Workflow result (only this returns to LLM context)
|
|
165
|
+
*/
|
|
166
|
+
async function runWorkflow(params) {
|
|
167
|
+
const {
|
|
168
|
+
url = 'https://example.com',
|
|
169
|
+
outputPath = '/workspace/output.json',
|
|
170
|
+
categories = ['Technology', 'Business', 'Research', 'Other'],
|
|
171
|
+
} = params;
|
|
172
|
+
|
|
173
|
+
const startTime = Date.now();
|
|
174
|
+
|
|
175
|
+
try {
|
|
176
|
+
// Step 1: Fetch content (uses fetch MCP)
|
|
177
|
+
console.log(`[1/4] Fetching content from: ${url}`);
|
|
178
|
+
const response = await mcp.fetch.get(url);
|
|
179
|
+
const html = response.body || response.text || '';
|
|
180
|
+
|
|
181
|
+
// Step 2: Extract and process (local, no tokens)
|
|
182
|
+
console.log('[2/4] Extracting main content...');
|
|
183
|
+
const content = extractMainContent(html);
|
|
184
|
+
const summary = summarize(content, 500);
|
|
185
|
+
|
|
186
|
+
// Step 3: Classify (local, no tokens)
|
|
187
|
+
console.log('[3/4] Classifying content...');
|
|
188
|
+
const category = classifyContent(summary, categories);
|
|
189
|
+
|
|
190
|
+
// Step 4: Save results (uses fs MCP)
|
|
191
|
+
console.log(`[4/4] Saving results to: ${outputPath}`);
|
|
192
|
+
const result = {
|
|
193
|
+
url,
|
|
194
|
+
title: extractTitle(html),
|
|
195
|
+
category,
|
|
196
|
+
summary,
|
|
197
|
+
wordCount: summary.split(/\s+/).length,
|
|
198
|
+
timestamp: new Date().toISOString(),
|
|
199
|
+
processingTime: `${Date.now() - startTime}ms`,
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
await mcp.fs.writeFile(outputPath, JSON.stringify(result, null, 2));
|
|
203
|
+
|
|
204
|
+
// Return ONLY final result to LLM context
|
|
205
|
+
// All processing happened in sandbox = ~98.7% token savings
|
|
206
|
+
return {
|
|
207
|
+
success: true,
|
|
208
|
+
result: {
|
|
209
|
+
url,
|
|
210
|
+
category,
|
|
211
|
+
wordCount: result.wordCount,
|
|
212
|
+
outputPath,
|
|
213
|
+
processingTime: result.processingTime,
|
|
214
|
+
},
|
|
215
|
+
tokensUsed: 0, // Processing was in sandbox
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
} catch (error) {
|
|
219
|
+
return {
|
|
220
|
+
success: false,
|
|
221
|
+
error: error.message,
|
|
222
|
+
url,
|
|
223
|
+
processingTime: `${Date.now() - startTime}ms`,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Extract title from HTML
|
|
230
|
+
*/
|
|
231
|
+
function extractTitle(html) {
|
|
232
|
+
const titleMatch = html.match(/<title[^>]*>([^<]*)<\/title>/i);
|
|
233
|
+
return titleMatch ? titleMatch[1].trim() : 'Untitled';
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// ============================================
|
|
237
|
+
// WORKFLOW EXECUTION
|
|
238
|
+
// ============================================
|
|
239
|
+
|
|
240
|
+
// Entry point when run via: docker mcp exec
|
|
241
|
+
if (typeof module !== 'undefined' && !module.parent) {
|
|
242
|
+
// Parse command line arguments or use defaults
|
|
243
|
+
const args = process.argv.slice(2);
|
|
244
|
+
const params = {};
|
|
245
|
+
|
|
246
|
+
for (let i = 0; i < args.length; i += 2) {
|
|
247
|
+
const key = args[i].replace(/^--/, '');
|
|
248
|
+
const value = args[i + 1];
|
|
249
|
+
params[key] = value;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
runWorkflow(params)
|
|
253
|
+
.then((result) => {
|
|
254
|
+
console.log('\n=== Workflow Complete ===');
|
|
255
|
+
console.log(JSON.stringify(result, null, 2));
|
|
256
|
+
process.exit(result.success ? 0 : 1);
|
|
257
|
+
})
|
|
258
|
+
.catch((error) => {
|
|
259
|
+
console.error('Workflow failed:', error);
|
|
260
|
+
process.exit(1);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Export for testing and module use
|
|
265
|
+
module.exports = {
|
|
266
|
+
runWorkflow,
|
|
267
|
+
extractMainContent,
|
|
268
|
+
summarize,
|
|
269
|
+
classifyContent,
|
|
270
|
+
WORKFLOW_META,
|
|
271
|
+
};
|