aidevops 2.52.1 → 2.53.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/README.md +1 -1
- package/VERSION +1 -1
- package/aidevops.sh +15 -9
- package/package.json +4 -4
- package/scripts/npm-postinstall.js +6 -7
- package/setup.sh +1 -1
- package/templates/deploy-templates.sh +144 -0
- package/templates/home/.agent/README.md +33 -0
- package/templates/home/AGENTS.md +96 -0
- package/templates/home/git/.agent/README.md +48 -0
- package/templates/home/git/AGENTS.md +97 -0
- package/templates/standard-functions.sh +179 -0
- package/templates/wordpress-performance-workflow.md +217 -0
- package/.agent/AGENTS.md +0 -614
- package/.agent/accounts.md +0 -65
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +0 -456
- package/.agent/aidevops/api-integrations.md +0 -335
- package/.agent/aidevops/architecture.md +0 -510
- package/.agent/aidevops/configs.md +0 -274
- package/.agent/aidevops/docs.md +0 -244
- package/.agent/aidevops/extension.md +0 -311
- package/.agent/aidevops/mcp-integrations.md +0 -340
- package/.agent/aidevops/mcp-troubleshooting.md +0 -162
- package/.agent/aidevops/memory-patterns.md +0 -172
- package/.agent/aidevops/providers.md +0 -217
- package/.agent/aidevops/recommendations.md +0 -321
- package/.agent/aidevops/requirements.md +0 -301
- package/.agent/aidevops/resources.md +0 -214
- package/.agent/aidevops/security-requirements.md +0 -174
- package/.agent/aidevops/security.md +0 -350
- package/.agent/aidevops/service-links.md +0 -400
- package/.agent/aidevops/services.md +0 -357
- package/.agent/aidevops/setup.md +0 -153
- package/.agent/aidevops/troubleshooting.md +0 -389
- package/.agent/aidevops.md +0 -124
- package/.agent/build-plus.md +0 -244
- package/.agent/content/guidelines.md +0 -109
- package/.agent/content.md +0 -87
- package/.agent/health.md +0 -59
- package/.agent/legal.md +0 -59
- package/.agent/loop-state/full-loop.local.md +0 -16
- package/.agent/loop-state/ralph-loop.local.md +0 -10
- package/.agent/marketing.md +0 -440
- package/.agent/memory/README.md +0 -260
- package/.agent/onboarding.md +0 -796
- package/.agent/plan-plus.md +0 -245
- package/.agent/research.md +0 -100
- package/.agent/sales.md +0 -333
- package/.agent/scripts/101domains-helper.sh +0 -701
- package/.agent/scripts/add-missing-returns.sh +0 -140
- package/.agent/scripts/agent-browser-helper.sh +0 -311
- package/.agent/scripts/agno-setup.sh +0 -712
- package/.agent/scripts/ahrefs-mcp-wrapper.js +0 -168
- package/.agent/scripts/aidevops-update-check.sh +0 -71
- package/.agent/scripts/ampcode-cli.sh +0 -522
- package/.agent/scripts/auto-version-bump.sh +0 -156
- package/.agent/scripts/autogen-helper.sh +0 -512
- package/.agent/scripts/beads-sync-helper.sh +0 -596
- package/.agent/scripts/closte-helper.sh +0 -5
- package/.agent/scripts/cloudron-helper.sh +0 -321
- package/.agent/scripts/codacy-cli-chunked.sh +0 -581
- package/.agent/scripts/codacy-cli.sh +0 -442
- package/.agent/scripts/code-audit-helper.sh +0 -5
- package/.agent/scripts/coderabbit-cli.sh +0 -417
- package/.agent/scripts/coderabbit-pro-analysis.sh +0 -238
- package/.agent/scripts/commands/code-simplifier.md +0 -86
- package/.agent/scripts/commands/full-loop.md +0 -246
- package/.agent/scripts/commands/postflight-loop.md +0 -103
- package/.agent/scripts/commands/recall.md +0 -182
- package/.agent/scripts/commands/remember.md +0 -132
- package/.agent/scripts/commands/save-todo.md +0 -175
- package/.agent/scripts/commands/session-review.md +0 -154
- package/.agent/scripts/comprehensive-quality-fix.sh +0 -106
- package/.agent/scripts/context-builder-helper.sh +0 -522
- package/.agent/scripts/coolify-cli-helper.sh +0 -674
- package/.agent/scripts/coolify-helper.sh +0 -380
- package/.agent/scripts/crawl4ai-examples.sh +0 -401
- package/.agent/scripts/crawl4ai-helper.sh +0 -1078
- package/.agent/scripts/crewai-helper.sh +0 -681
- package/.agent/scripts/dev-browser-helper.sh +0 -513
- package/.agent/scripts/dns-helper.sh +0 -396
- package/.agent/scripts/domain-research-helper.sh +0 -917
- package/.agent/scripts/dspy-helper.sh +0 -285
- package/.agent/scripts/dspyground-helper.sh +0 -291
- package/.agent/scripts/eeat-score-helper.sh +0 -1242
- package/.agent/scripts/efficient-return-fix.sh +0 -92
- package/.agent/scripts/extract-opencode-prompts.sh +0 -128
- package/.agent/scripts/find-missing-returns.sh +0 -113
- package/.agent/scripts/fix-auth-headers.sh +0 -104
- package/.agent/scripts/fix-common-strings.sh +0 -254
- package/.agent/scripts/fix-content-type.sh +0 -100
- package/.agent/scripts/fix-error-messages.sh +0 -130
- package/.agent/scripts/fix-misplaced-returns.sh +0 -74
- package/.agent/scripts/fix-remaining-literals.sh +0 -152
- package/.agent/scripts/fix-return-statements.sh +0 -41
- package/.agent/scripts/fix-s131-default-cases.sh +0 -249
- package/.agent/scripts/fix-sc2155-simple.sh +0 -102
- package/.agent/scripts/fix-shellcheck-critical.sh +0 -187
- package/.agent/scripts/fix-string-literals.sh +0 -273
- package/.agent/scripts/full-loop-helper.sh +0 -773
- package/.agent/scripts/generate-opencode-agents.sh +0 -497
- package/.agent/scripts/generate-opencode-commands.sh +0 -1629
- package/.agent/scripts/generate-skills.sh +0 -366
- package/.agent/scripts/git-platforms-helper.sh +0 -640
- package/.agent/scripts/gitea-cli-helper.sh +0 -743
- package/.agent/scripts/github-cli-helper.sh +0 -702
- package/.agent/scripts/gitlab-cli-helper.sh +0 -682
- package/.agent/scripts/gsc-add-user-helper.sh +0 -325
- package/.agent/scripts/gsc-sitemap-helper.sh +0 -678
- package/.agent/scripts/hetzner-helper.sh +0 -485
- package/.agent/scripts/hostinger-helper.sh +0 -229
- package/.agent/scripts/keyword-research-helper.sh +0 -1815
- package/.agent/scripts/langflow-helper.sh +0 -544
- package/.agent/scripts/linkedin-automation.py +0 -241
- package/.agent/scripts/linter-manager.sh +0 -599
- package/.agent/scripts/linters-local.sh +0 -434
- package/.agent/scripts/list-keys-helper.sh +0 -488
- package/.agent/scripts/local-browser-automation.py +0 -339
- package/.agent/scripts/localhost-helper.sh +0 -744
- package/.agent/scripts/loop-common.sh +0 -806
- package/.agent/scripts/mainwp-helper.sh +0 -728
- package/.agent/scripts/markdown-formatter.sh +0 -338
- package/.agent/scripts/markdown-lint-fix.sh +0 -311
- package/.agent/scripts/mass-fix-returns.sh +0 -58
- package/.agent/scripts/mcp-diagnose.sh +0 -167
- package/.agent/scripts/mcp-inspector-helper.sh +0 -449
- package/.agent/scripts/memory-helper.sh +0 -650
- package/.agent/scripts/monitor-code-review.sh +0 -255
- package/.agent/scripts/onboarding-helper.sh +0 -706
- package/.agent/scripts/opencode-github-setup-helper.sh +0 -797
- package/.agent/scripts/opencode-test-helper.sh +0 -213
- package/.agent/scripts/pagespeed-helper.sh +0 -464
- package/.agent/scripts/pandoc-helper.sh +0 -362
- package/.agent/scripts/postflight-check.sh +0 -555
- package/.agent/scripts/pre-commit-hook.sh +0 -259
- package/.agent/scripts/pre-edit-check.sh +0 -169
- package/.agent/scripts/qlty-cli.sh +0 -356
- package/.agent/scripts/quality-cli-manager.sh +0 -525
- package/.agent/scripts/quality-feedback-helper.sh +0 -462
- package/.agent/scripts/quality-fix.sh +0 -263
- package/.agent/scripts/quality-loop-helper.sh +0 -1108
- package/.agent/scripts/ralph-loop-helper.sh +0 -836
- package/.agent/scripts/ralph-upstream-check.sh +0 -341
- package/.agent/scripts/secretlint-helper.sh +0 -847
- package/.agent/scripts/servers-helper.sh +0 -241
- package/.agent/scripts/ses-helper.sh +0 -619
- package/.agent/scripts/session-review-helper.sh +0 -404
- package/.agent/scripts/setup-linters-wizard.sh +0 -379
- package/.agent/scripts/setup-local-api-keys.sh +0 -330
- package/.agent/scripts/setup-mcp-integrations.sh +0 -472
- package/.agent/scripts/shared-constants.sh +0 -246
- package/.agent/scripts/site-crawler-helper.sh +0 -1487
- package/.agent/scripts/snyk-helper.sh +0 -940
- package/.agent/scripts/sonarcloud-autofix.sh +0 -193
- package/.agent/scripts/sonarcloud-cli.sh +0 -191
- package/.agent/scripts/sonarscanner-cli.sh +0 -455
- package/.agent/scripts/spaceship-helper.sh +0 -747
- package/.agent/scripts/stagehand-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-helper.sh +0 -321
- package/.agent/scripts/stagehand-python-setup.sh +0 -441
- package/.agent/scripts/stagehand-setup.sh +0 -439
- package/.agent/scripts/system-cleanup.sh +0 -340
- package/.agent/scripts/terminal-title-helper.sh +0 -388
- package/.agent/scripts/terminal-title-setup.sh +0 -549
- package/.agent/scripts/test-stagehand-both-integration.sh +0 -317
- package/.agent/scripts/test-stagehand-integration.sh +0 -309
- package/.agent/scripts/test-stagehand-python-integration.sh +0 -341
- package/.agent/scripts/todo-ready.sh +0 -263
- package/.agent/scripts/tool-version-check.sh +0 -362
- package/.agent/scripts/toon-helper.sh +0 -469
- package/.agent/scripts/twilio-helper.sh +0 -917
- package/.agent/scripts/updown-helper.sh +0 -279
- package/.agent/scripts/validate-mcp-integrations.sh +0 -250
- package/.agent/scripts/validate-version-consistency.sh +0 -131
- package/.agent/scripts/vaultwarden-helper.sh +0 -597
- package/.agent/scripts/vercel-cli-helper.sh +0 -816
- package/.agent/scripts/verify-mirrors.sh +0 -169
- package/.agent/scripts/version-manager.sh +0 -831
- package/.agent/scripts/webhosting-helper.sh +0 -471
- package/.agent/scripts/webhosting-verify.sh +0 -238
- package/.agent/scripts/wordpress-mcp-helper.sh +0 -508
- package/.agent/scripts/worktree-helper.sh +0 -595
- package/.agent/scripts/worktree-sessions.sh +0 -577
- package/.agent/seo/dataforseo.md +0 -215
- package/.agent/seo/domain-research.md +0 -532
- package/.agent/seo/eeat-score.md +0 -659
- package/.agent/seo/google-search-console.md +0 -366
- package/.agent/seo/gsc-sitemaps.md +0 -282
- package/.agent/seo/keyword-research.md +0 -521
- package/.agent/seo/serper.md +0 -278
- package/.agent/seo/site-crawler.md +0 -387
- package/.agent/seo.md +0 -236
- package/.agent/services/accounting/quickfile.md +0 -159
- package/.agent/services/communications/telfon.md +0 -470
- package/.agent/services/communications/twilio.md +0 -569
- package/.agent/services/crm/fluentcrm.md +0 -449
- package/.agent/services/email/ses.md +0 -399
- package/.agent/services/hosting/101domains.md +0 -378
- package/.agent/services/hosting/closte.md +0 -177
- package/.agent/services/hosting/cloudflare.md +0 -251
- package/.agent/services/hosting/cloudron.md +0 -478
- package/.agent/services/hosting/dns-providers.md +0 -335
- package/.agent/services/hosting/domain-purchasing.md +0 -344
- package/.agent/services/hosting/hetzner.md +0 -327
- package/.agent/services/hosting/hostinger.md +0 -287
- package/.agent/services/hosting/localhost.md +0 -419
- package/.agent/services/hosting/spaceship.md +0 -353
- package/.agent/services/hosting/webhosting.md +0 -330
- package/.agent/social-media.md +0 -69
- package/.agent/templates/plans-template.md +0 -114
- package/.agent/templates/prd-template.md +0 -129
- package/.agent/templates/tasks-template.md +0 -108
- package/.agent/templates/todo-template.md +0 -89
- package/.agent/tools/ai-assistants/agno.md +0 -471
- package/.agent/tools/ai-assistants/capsolver.md +0 -326
- package/.agent/tools/ai-assistants/configuration.md +0 -221
- package/.agent/tools/ai-assistants/overview.md +0 -209
- package/.agent/tools/ai-assistants/status.md +0 -171
- package/.agent/tools/ai-assistants/windsurf.md +0 -193
- package/.agent/tools/ai-orchestration/autogen.md +0 -406
- package/.agent/tools/ai-orchestration/crewai.md +0 -445
- package/.agent/tools/ai-orchestration/langflow.md +0 -405
- package/.agent/tools/ai-orchestration/openprose.md +0 -487
- package/.agent/tools/ai-orchestration/overview.md +0 -362
- package/.agent/tools/ai-orchestration/packaging.md +0 -647
- package/.agent/tools/browser/agent-browser.md +0 -464
- package/.agent/tools/browser/browser-automation.md +0 -400
- package/.agent/tools/browser/chrome-devtools.md +0 -282
- package/.agent/tools/browser/crawl4ai-integration.md +0 -422
- package/.agent/tools/browser/crawl4ai-resources.md +0 -277
- package/.agent/tools/browser/crawl4ai-usage.md +0 -416
- package/.agent/tools/browser/crawl4ai.md +0 -585
- package/.agent/tools/browser/dev-browser.md +0 -341
- package/.agent/tools/browser/pagespeed.md +0 -260
- package/.agent/tools/browser/playwright.md +0 -266
- package/.agent/tools/browser/playwriter.md +0 -310
- package/.agent/tools/browser/stagehand-examples.md +0 -456
- package/.agent/tools/browser/stagehand-python.md +0 -483
- package/.agent/tools/browser/stagehand.md +0 -421
- package/.agent/tools/build-agent/agent-review.md +0 -224
- package/.agent/tools/build-agent/build-agent.md +0 -784
- package/.agent/tools/build-mcp/aidevops-plugin.md +0 -476
- package/.agent/tools/build-mcp/api-wrapper.md +0 -445
- package/.agent/tools/build-mcp/build-mcp.md +0 -240
- package/.agent/tools/build-mcp/deployment.md +0 -401
- package/.agent/tools/build-mcp/server-patterns.md +0 -632
- package/.agent/tools/build-mcp/transports.md +0 -366
- package/.agent/tools/code-review/auditing.md +0 -383
- package/.agent/tools/code-review/automation.md +0 -219
- package/.agent/tools/code-review/best-practices.md +0 -203
- package/.agent/tools/code-review/codacy.md +0 -151
- package/.agent/tools/code-review/code-simplifier.md +0 -174
- package/.agent/tools/code-review/code-standards.md +0 -309
- package/.agent/tools/code-review/coderabbit.md +0 -101
- package/.agent/tools/code-review/management.md +0 -155
- package/.agent/tools/code-review/qlty.md +0 -248
- package/.agent/tools/code-review/secretlint.md +0 -565
- package/.agent/tools/code-review/setup.md +0 -250
- package/.agent/tools/code-review/snyk.md +0 -563
- package/.agent/tools/code-review/tools.md +0 -230
- package/.agent/tools/content/summarize.md +0 -353
- package/.agent/tools/context/augment-context-engine.md +0 -468
- package/.agent/tools/context/context-builder-agent.md +0 -76
- package/.agent/tools/context/context-builder.md +0 -375
- package/.agent/tools/context/context7.md +0 -371
- package/.agent/tools/context/dspy.md +0 -302
- package/.agent/tools/context/dspyground.md +0 -374
- package/.agent/tools/context/llm-tldr.md +0 -219
- package/.agent/tools/context/osgrep.md +0 -488
- package/.agent/tools/context/prompt-optimization.md +0 -338
- package/.agent/tools/context/toon.md +0 -292
- package/.agent/tools/conversion/pandoc.md +0 -304
- package/.agent/tools/credentials/api-key-management.md +0 -154
- package/.agent/tools/credentials/api-key-setup.md +0 -224
- package/.agent/tools/credentials/environment-variables.md +0 -180
- package/.agent/tools/credentials/vaultwarden.md +0 -382
- package/.agent/tools/data-extraction/outscraper.md +0 -974
- package/.agent/tools/deployment/coolify-cli.md +0 -388
- package/.agent/tools/deployment/coolify-setup.md +0 -353
- package/.agent/tools/deployment/coolify.md +0 -345
- package/.agent/tools/deployment/vercel.md +0 -390
- package/.agent/tools/git/authentication.md +0 -132
- package/.agent/tools/git/gitea-cli.md +0 -193
- package/.agent/tools/git/github-actions.md +0 -207
- package/.agent/tools/git/github-cli.md +0 -223
- package/.agent/tools/git/gitlab-cli.md +0 -190
- package/.agent/tools/git/opencode-github-security.md +0 -350
- package/.agent/tools/git/opencode-github.md +0 -328
- package/.agent/tools/git/opencode-gitlab.md +0 -252
- package/.agent/tools/git/security.md +0 -196
- package/.agent/tools/git.md +0 -207
- package/.agent/tools/opencode/oh-my-opencode.md +0 -375
- package/.agent/tools/opencode/opencode-anthropic-auth.md +0 -446
- package/.agent/tools/opencode/opencode.md +0 -651
- package/.agent/tools/social-media/bird.md +0 -437
- package/.agent/tools/task-management/beads.md +0 -336
- package/.agent/tools/terminal/terminal-title.md +0 -251
- package/.agent/tools/ui/shadcn.md +0 -196
- package/.agent/tools/ui/ui-skills.md +0 -115
- package/.agent/tools/wordpress/localwp.md +0 -311
- package/.agent/tools/wordpress/mainwp.md +0 -391
- package/.agent/tools/wordpress/scf.md +0 -527
- package/.agent/tools/wordpress/wp-admin.md +0 -729
- package/.agent/tools/wordpress/wp-dev.md +0 -940
- package/.agent/tools/wordpress/wp-preferred.md +0 -398
- package/.agent/tools/wordpress.md +0 -95
- package/.agent/workflows/branch/bugfix.md +0 -63
- package/.agent/workflows/branch/chore.md +0 -95
- package/.agent/workflows/branch/experiment.md +0 -115
- package/.agent/workflows/branch/feature.md +0 -59
- package/.agent/workflows/branch/hotfix.md +0 -98
- package/.agent/workflows/branch/refactor.md +0 -92
- package/.agent/workflows/branch/release.md +0 -96
- package/.agent/workflows/branch.md +0 -347
- package/.agent/workflows/bug-fixing.md +0 -267
- package/.agent/workflows/changelog.md +0 -129
- package/.agent/workflows/code-audit-remote.md +0 -279
- package/.agent/workflows/conversation-starter.md +0 -69
- package/.agent/workflows/error-feedback.md +0 -578
- package/.agent/workflows/feature-development.md +0 -355
- package/.agent/workflows/git-workflow.md +0 -702
- package/.agent/workflows/multi-repo-workspace.md +0 -268
- package/.agent/workflows/plans.md +0 -709
- package/.agent/workflows/postflight.md +0 -604
- package/.agent/workflows/pr.md +0 -571
- package/.agent/workflows/preflight.md +0 -278
- package/.agent/workflows/ralph-loop.md +0 -773
- package/.agent/workflows/release.md +0 -498
- package/.agent/workflows/session-manager.md +0 -254
- package/.agent/workflows/session-review.md +0 -311
- package/.agent/workflows/sql-migrations.md +0 -631
- package/.agent/workflows/version-bump.md +0 -283
- package/.agent/workflows/wiki-update.md +0 -333
- package/.agent/workflows/worktree.md +0 -477
|
@@ -1,341 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
|
|
3
|
-
|
|
4
|
-
# Test Stagehand Python Integration with AI DevOps Framework
|
|
5
|
-
# Comprehensive testing script for Stagehand Python setup and functionality
|
|
6
|
-
|
|
7
|
-
# Source shared constants
|
|
8
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || exit
|
|
9
|
-
source "${SCRIPT_DIR}/../../.agent/scripts/shared-constants.sh"
|
|
10
|
-
|
|
11
|
-
# Colors for output
|
|
12
|
-
readonly BLUE='\033[0;34m'
|
|
13
|
-
readonly GREEN='\033[0;32m'
|
|
14
|
-
readonly YELLOW='\033[1;33m'
|
|
15
|
-
readonly RED='\033[0;31m'
|
|
16
|
-
readonly NC='\033[0m'
|
|
17
|
-
|
|
18
|
-
# Print functions
|
|
19
|
-
print_info() {
|
|
20
|
-
local msg="$1"
|
|
21
|
-
echo -e "${BLUE}[INFO]${NC} $msg"
|
|
22
|
-
return 0
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
print_success() {
|
|
26
|
-
local msg="$1"
|
|
27
|
-
echo -e "${GREEN}[SUCCESS]${NC} $msg"
|
|
28
|
-
return 0
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
print_warning() {
|
|
32
|
-
local msg="$1"
|
|
33
|
-
echo -e "${YELLOW}[WARNING]${NC} $msg"
|
|
34
|
-
return 0
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
print_error() {
|
|
38
|
-
local msg="$1"
|
|
39
|
-
echo -e "${RED}[ERROR]${NC} $msg" >&2
|
|
40
|
-
return 0
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
# Test configuration
|
|
44
|
-
readonly TEST_RESULTS_DIR="${HOME}/.agent/tmp/stagehand-python-tests"
|
|
45
|
-
readonly TEST_LOG="${TEST_RESULTS_DIR}/test-results.log"
|
|
46
|
-
|
|
47
|
-
# Create test directory
|
|
48
|
-
setup_test_environment() {
|
|
49
|
-
mkdir -p "$TEST_RESULTS_DIR"
|
|
50
|
-
echo "=== Stagehand Python Integration Test Started: $(date) ===" > "$TEST_LOG"
|
|
51
|
-
print_info "Test environment created at: $TEST_RESULTS_DIR"
|
|
52
|
-
return 0
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
# Test 1: Check if Stagehand Python helper exists and is executable
|
|
56
|
-
test_python_helper_script() {
|
|
57
|
-
print_info "Testing Stagehand Python helper script..."
|
|
58
|
-
|
|
59
|
-
local helper_script="${SCRIPT_DIR}/../../.agent/scripts/stagehand-python-helper.sh"
|
|
60
|
-
|
|
61
|
-
if [[ -f "$helper_script" ]]; then
|
|
62
|
-
print_success "✅ Stagehand Python helper script exists"
|
|
63
|
-
echo "PASS: Python helper script exists" >> "$TEST_LOG"
|
|
64
|
-
else
|
|
65
|
-
print_error "❌ Stagehand Python helper script not found"
|
|
66
|
-
echo "FAIL: Python helper script missing" >> "$TEST_LOG"
|
|
67
|
-
return 1
|
|
68
|
-
fi
|
|
69
|
-
|
|
70
|
-
if [[ -x "$helper_script" ]]; then
|
|
71
|
-
print_success "✅ Stagehand Python helper script is executable"
|
|
72
|
-
echo "PASS: Python helper script executable" >> "$TEST_LOG"
|
|
73
|
-
else
|
|
74
|
-
print_error "❌ Stagehand Python helper script is not executable"
|
|
75
|
-
echo "FAIL: Python helper script not executable" >> "$TEST_LOG"
|
|
76
|
-
return 1
|
|
77
|
-
fi
|
|
78
|
-
|
|
79
|
-
return 0
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
# Test 2: Check if Python documentation exists
|
|
83
|
-
test_python_documentation() {
|
|
84
|
-
print_info "Testing Stagehand Python documentation..."
|
|
85
|
-
|
|
86
|
-
local docs=(
|
|
87
|
-
"${SCRIPT_DIR}/../../.agent/STAGEHAND-PYTHON.md"
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
for doc in "${docs[@]}"; do
|
|
91
|
-
if [[ -f "$doc" ]]; then
|
|
92
|
-
print_success "✅ Documentation exists: $(basename "$doc")"
|
|
93
|
-
echo "PASS: Documentation $(basename "$doc") exists" >> "$TEST_LOG"
|
|
94
|
-
else
|
|
95
|
-
print_error "❌ Documentation missing: $(basename "$doc")"
|
|
96
|
-
echo "FAIL: Documentation $(basename "$doc") missing" >> "$TEST_LOG"
|
|
97
|
-
return 1
|
|
98
|
-
fi
|
|
99
|
-
done
|
|
100
|
-
|
|
101
|
-
return 0
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
# Test 3: Check Python requirements
|
|
105
|
-
test_python_requirements() {
|
|
106
|
-
print_info "Testing Python requirements..."
|
|
107
|
-
|
|
108
|
-
# Check Python 3.8+
|
|
109
|
-
if command -v python3 &> /dev/null; then
|
|
110
|
-
local python_version
|
|
111
|
-
python_version=$(python3 --version | cut -d' ' -f2)
|
|
112
|
-
local major minor
|
|
113
|
-
major=$(echo "$python_version" | cut -d'.' -f1)
|
|
114
|
-
minor=$(echo "$python_version" | cut -d'.' -f2)
|
|
115
|
-
|
|
116
|
-
if [[ "$major" -ge 3 ]] && [[ "$minor" -ge 8 ]]; then
|
|
117
|
-
print_success "✅ Python version compatible: $python_version"
|
|
118
|
-
echo "PASS: Python $python_version compatible" >> "$TEST_LOG"
|
|
119
|
-
else
|
|
120
|
-
print_error "❌ Python version incompatible: $python_version (need 3.8+)"
|
|
121
|
-
echo "FAIL: Python version incompatible" >> "$TEST_LOG"
|
|
122
|
-
return 1
|
|
123
|
-
fi
|
|
124
|
-
else
|
|
125
|
-
print_error "❌ Python 3 not found"
|
|
126
|
-
echo "FAIL: Python 3 missing" >> "$TEST_LOG"
|
|
127
|
-
return 1
|
|
128
|
-
fi
|
|
129
|
-
|
|
130
|
-
# Check pip3
|
|
131
|
-
if command -v pip3 &> /dev/null; then
|
|
132
|
-
local pip_version
|
|
133
|
-
pip_version=$(pip3 --version | cut -d' ' -f2)
|
|
134
|
-
print_success "✅ pip3 available: $pip_version"
|
|
135
|
-
echo "PASS: pip3 $pip_version available" >> "$TEST_LOG"
|
|
136
|
-
else
|
|
137
|
-
print_error "❌ pip3 not found"
|
|
138
|
-
echo "FAIL: pip3 missing" >> "$TEST_LOG"
|
|
139
|
-
return 1
|
|
140
|
-
fi
|
|
141
|
-
|
|
142
|
-
# Check for uv (optional but recommended)
|
|
143
|
-
if command -v uv &> /dev/null; then
|
|
144
|
-
local uv_version
|
|
145
|
-
uv_version=$(uv --version | cut -d' ' -f2)
|
|
146
|
-
print_success "✅ uv available: $uv_version (recommended)"
|
|
147
|
-
echo "PASS: uv $uv_version available" >> "$TEST_LOG"
|
|
148
|
-
else
|
|
149
|
-
print_info "ℹ️ uv not found (optional but recommended for faster installs)"
|
|
150
|
-
echo "INFO: uv not available (optional)" >> "$TEST_LOG"
|
|
151
|
-
fi
|
|
152
|
-
|
|
153
|
-
return 0
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
# Test 4: Check MCP integration setup
|
|
157
|
-
test_python_mcp_integration() {
|
|
158
|
-
print_info "Testing Python MCP integration setup..."
|
|
159
|
-
|
|
160
|
-
local mcp_script="${SCRIPT_DIR}/setup-mcp-integrations.sh"
|
|
161
|
-
|
|
162
|
-
if [[ -f "$mcp_script" ]]; then
|
|
163
|
-
# Check if stagehand-python is in the MCP list
|
|
164
|
-
if grep -q "stagehand-python" "$mcp_script"; then
|
|
165
|
-
print_success "✅ Stagehand Python found in MCP integrations script"
|
|
166
|
-
echo "PASS: Stagehand Python in MCP script" >> "$TEST_LOG"
|
|
167
|
-
else
|
|
168
|
-
print_error "❌ Stagehand Python not found in MCP integrations script"
|
|
169
|
-
echo "FAIL: Stagehand Python not in MCP script" >> "$TEST_LOG"
|
|
170
|
-
return 1
|
|
171
|
-
fi
|
|
172
|
-
|
|
173
|
-
# Check if stagehand-both is in the MCP list
|
|
174
|
-
if grep -q "stagehand-both" "$mcp_script"; then
|
|
175
|
-
print_success "✅ Stagehand Both found in MCP integrations script"
|
|
176
|
-
echo "PASS: Stagehand Both in MCP script" >> "$TEST_LOG"
|
|
177
|
-
else
|
|
178
|
-
print_error "❌ Stagehand Both not found in MCP integrations script"
|
|
179
|
-
echo "FAIL: Stagehand Both not in MCP script" >> "$TEST_LOG"
|
|
180
|
-
return 1
|
|
181
|
-
fi
|
|
182
|
-
else
|
|
183
|
-
print_error "❌ MCP integrations script not found"
|
|
184
|
-
echo "FAIL: MCP script missing" >> "$TEST_LOG"
|
|
185
|
-
return 1
|
|
186
|
-
fi
|
|
187
|
-
|
|
188
|
-
return 0
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
# Test 5: Test Python helper script commands
|
|
192
|
-
test_python_helper_commands() {
|
|
193
|
-
print_info "Testing Stagehand Python helper commands..."
|
|
194
|
-
|
|
195
|
-
local helper_script="${SCRIPT_DIR}/../../.agent/scripts/stagehand-python-helper.sh"
|
|
196
|
-
|
|
197
|
-
# Test help command
|
|
198
|
-
if bash "$helper_script" help > /dev/null 2>&1; then
|
|
199
|
-
print_success "✅ Python help command works"
|
|
200
|
-
echo "PASS: Python help command" >> "$TEST_LOG"
|
|
201
|
-
else
|
|
202
|
-
print_error "❌ Python help command failed"
|
|
203
|
-
echo "FAIL: Python help command" >> "$TEST_LOG"
|
|
204
|
-
return 1
|
|
205
|
-
fi
|
|
206
|
-
|
|
207
|
-
# Test status command (should work even without installation)
|
|
208
|
-
if bash "$helper_script" status > /dev/null 2>&1; then
|
|
209
|
-
print_success "✅ Python status command works"
|
|
210
|
-
echo "PASS: Python status command" >> "$TEST_LOG"
|
|
211
|
-
else
|
|
212
|
-
print_info "ℹ️ Python status command indicates Stagehand Python not installed (expected)"
|
|
213
|
-
echo "INFO: Python status command - not installed" >> "$TEST_LOG"
|
|
214
|
-
fi
|
|
215
|
-
|
|
216
|
-
return 0
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
# Test 6: Validate Python setup scripts
|
|
220
|
-
test_python_setup_scripts() {
|
|
221
|
-
print_info "Testing Python setup script templates..."
|
|
222
|
-
|
|
223
|
-
local setup_script="${SCRIPT_DIR}/stagehand-python-setup.sh"
|
|
224
|
-
|
|
225
|
-
if [[ -f "$setup_script" ]]; then
|
|
226
|
-
print_success "✅ Stagehand Python setup script exists"
|
|
227
|
-
echo "PASS: Python setup script exists" >> "$TEST_LOG"
|
|
228
|
-
|
|
229
|
-
if [[ -x "$setup_script" ]]; then
|
|
230
|
-
print_success "✅ Python setup script is executable"
|
|
231
|
-
echo "PASS: Python setup script executable" >> "$TEST_LOG"
|
|
232
|
-
else
|
|
233
|
-
print_error "❌ Python setup script is not executable"
|
|
234
|
-
echo "FAIL: Python setup script not executable" >> "$TEST_LOG"
|
|
235
|
-
return 1
|
|
236
|
-
fi
|
|
237
|
-
else
|
|
238
|
-
print_error "❌ Stagehand Python setup script not found"
|
|
239
|
-
echo "FAIL: Python setup script missing" >> "$TEST_LOG"
|
|
240
|
-
return 1
|
|
241
|
-
fi
|
|
242
|
-
|
|
243
|
-
return 0
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
# Generate test report
|
|
247
|
-
generate_python_report() {
|
|
248
|
-
print_info "Generating Python test report..."
|
|
249
|
-
|
|
250
|
-
local report_file="${TEST_RESULTS_DIR}/python-integration-test-report.md"
|
|
251
|
-
|
|
252
|
-
cat > "$report_file" << EOF
|
|
253
|
-
# Stagehand Python Integration Test Report
|
|
254
|
-
|
|
255
|
-
**Test Date**: $(date)
|
|
256
|
-
**Framework Version**: $(bash "${SCRIPT_DIR}/version-manager.sh" get 2>/dev/null || echo "Unknown")
|
|
257
|
-
|
|
258
|
-
## Test Results
|
|
259
|
-
|
|
260
|
-
$(cat "$TEST_LOG")
|
|
261
|
-
|
|
262
|
-
## Summary
|
|
263
|
-
|
|
264
|
-
- **Python Helper Script**: $(grep -c "PASS.*Python.*helper" "$TEST_LOG" || echo 0) tests passed
|
|
265
|
-
- **Documentation**: $(grep -c "PASS.*Documentation" "$TEST_LOG" || echo 0) tests passed
|
|
266
|
-
- **Python Requirements**: $(grep -c "PASS.*Python\|PASS.*pip" "$TEST_LOG" || echo 0) tests passed
|
|
267
|
-
- **MCP Integration**: $(grep -c "PASS.*MCP" "$TEST_LOG" || echo 0) tests passed
|
|
268
|
-
- **Commands**: $(grep -c "PASS.*command" "$TEST_LOG" || echo 0) tests passed
|
|
269
|
-
|
|
270
|
-
## Next Steps
|
|
271
|
-
|
|
272
|
-
1. Run full installation: \`bash .agent/scripts/stagehand-python-helper.sh setup\`
|
|
273
|
-
2. Test MCP integration: \`bash .agent/scripts/setup-mcp-integrations.sh stagehand-python\`
|
|
274
|
-
3. Try examples: \`source ~/.aidevops/stagehand-python/.venv/bin/activate && python examples/basic_example.py\`
|
|
275
|
-
|
|
276
|
-
## Files Created
|
|
277
|
-
|
|
278
|
-
- Test results: $TEST_LOG
|
|
279
|
-
- This report: $report_file
|
|
280
|
-
EOF
|
|
281
|
-
|
|
282
|
-
print_success "Python test report generated: $report_file"
|
|
283
|
-
return 0
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
# Main test function
|
|
287
|
-
main() {
|
|
288
|
-
local command="${1:-all}"
|
|
289
|
-
|
|
290
|
-
case "$command" in
|
|
291
|
-
"all")
|
|
292
|
-
setup_test_environment
|
|
293
|
-
test_python_helper_script
|
|
294
|
-
test_python_documentation
|
|
295
|
-
test_python_requirements
|
|
296
|
-
test_python_mcp_integration
|
|
297
|
-
test_python_helper_commands
|
|
298
|
-
test_python_setup_scripts
|
|
299
|
-
generate_python_report
|
|
300
|
-
print_success "All Python integration tests completed!"
|
|
301
|
-
;;
|
|
302
|
-
"helper")
|
|
303
|
-
setup_test_environment && test_python_helper_script
|
|
304
|
-
;;
|
|
305
|
-
"docs")
|
|
306
|
-
setup_test_environment && test_python_documentation
|
|
307
|
-
;;
|
|
308
|
-
"requirements")
|
|
309
|
-
setup_test_environment && test_python_requirements
|
|
310
|
-
;;
|
|
311
|
-
"mcp")
|
|
312
|
-
setup_test_environment && test_python_mcp_integration
|
|
313
|
-
;;
|
|
314
|
-
"help")
|
|
315
|
-
cat << EOF
|
|
316
|
-
Stagehand Python Integration Test Script
|
|
317
|
-
|
|
318
|
-
USAGE:
|
|
319
|
-
$0 [COMMAND]
|
|
320
|
-
|
|
321
|
-
COMMANDS:
|
|
322
|
-
all Run all tests (default)
|
|
323
|
-
helper Test helper script only
|
|
324
|
-
docs Test documentation only
|
|
325
|
-
requirements Test Python requirements only
|
|
326
|
-
mcp Test MCP integration only
|
|
327
|
-
help Show this help
|
|
328
|
-
|
|
329
|
-
EOF
|
|
330
|
-
;;
|
|
331
|
-
*)
|
|
332
|
-
print_error "$ERROR_UNKNOWN_COMMAND $command"
|
|
333
|
-
return 1
|
|
334
|
-
;;
|
|
335
|
-
esac
|
|
336
|
-
|
|
337
|
-
return 0
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
# Execute main function
|
|
341
|
-
main "$@"
|
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# todo-ready.sh - Show tasks with no open blockers (ready to work on)
|
|
3
|
-
# Part of aidevops framework: https://aidevops.sh
|
|
4
|
-
#
|
|
5
|
-
# Usage:
|
|
6
|
-
# todo-ready.sh [options]
|
|
7
|
-
#
|
|
8
|
-
# Options:
|
|
9
|
-
# --json Output as JSON for programmatic use
|
|
10
|
-
# --count Only show count of ready tasks
|
|
11
|
-
# --verbose Show all task details
|
|
12
|
-
|
|
13
|
-
set -euo pipefail
|
|
14
|
-
|
|
15
|
-
# Colors
|
|
16
|
-
GREEN='\033[0;32m'
|
|
17
|
-
YELLOW='\033[1;33m'
|
|
18
|
-
BLUE='\033[0;34m'
|
|
19
|
-
NC='\033[0m'
|
|
20
|
-
|
|
21
|
-
# Find project root
|
|
22
|
-
find_project_root() {
|
|
23
|
-
local dir="$PWD"
|
|
24
|
-
while [[ "$dir" != "/" ]]; do
|
|
25
|
-
if [[ -f "$dir/TODO.md" ]]; then
|
|
26
|
-
echo "$dir"
|
|
27
|
-
return 0
|
|
28
|
-
fi
|
|
29
|
-
dir="$(dirname "$dir")"
|
|
30
|
-
done
|
|
31
|
-
return 1
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
# Parse tasks from TODO.md
|
|
35
|
-
parse_tasks() {
|
|
36
|
-
local todo_file="$1"
|
|
37
|
-
local task_id=""
|
|
38
|
-
local task_desc=""
|
|
39
|
-
local task_est=""
|
|
40
|
-
local task_blocker=""
|
|
41
|
-
|
|
42
|
-
while IFS= read -r line; do
|
|
43
|
-
# Skip non-task lines
|
|
44
|
-
[[ ! "$line" =~ ^[[:space:]]*-\ \[ ]] && continue
|
|
45
|
-
|
|
46
|
-
# Get task ID (tNNN or tNNN.N or tNNN.N.N)
|
|
47
|
-
task_id=$(echo "$line" | grep -oE 't[0-9]+(\.[0-9]+)*' | head -1 || echo "")
|
|
48
|
-
|
|
49
|
-
# Get description (text after ID, before first # or ~)
|
|
50
|
-
task_desc=$(echo "$line" | sed 's/^[[:space:]]*- \[[^]]*\] //' | sed 's/t[0-9.]*[[:space:]]*//' | cut -d'#' -f1 | cut -d'~' -f1 | xargs)
|
|
51
|
-
|
|
52
|
-
# Get estimate
|
|
53
|
-
task_est=$(echo "$line" | grep -oE '~[0-9]+[hmd]' | head -1 || echo "")
|
|
54
|
-
|
|
55
|
-
# Check status and output
|
|
56
|
-
if [[ "$line" =~ \[x\] ]]; then
|
|
57
|
-
# Done - skip
|
|
58
|
-
continue
|
|
59
|
-
elif [[ "$line" =~ \[-\] ]]; then
|
|
60
|
-
# Declined - skip
|
|
61
|
-
continue
|
|
62
|
-
elif [[ "$line" =~ \[\>\] ]]; then
|
|
63
|
-
# In progress
|
|
64
|
-
echo "IN_PROGRESS|$task_id|$task_desc|$task_est|"
|
|
65
|
-
elif [[ "$line" =~ blocked-by: ]]; then
|
|
66
|
-
# Blocked
|
|
67
|
-
task_blocker=$(echo "$line" | grep -oE 'blocked-by:[^ ]+' | cut -d: -f2 || echo "")
|
|
68
|
-
echo "BLOCKED|$task_id|$task_desc|$task_est|$task_blocker"
|
|
69
|
-
else
|
|
70
|
-
# Ready (open, no blockers)
|
|
71
|
-
echo "READY|$task_id|$task_desc|$task_est|"
|
|
72
|
-
fi
|
|
73
|
-
done < "$todo_file"
|
|
74
|
-
return 0
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
# Output as text
|
|
78
|
-
output_text() {
|
|
79
|
-
local ready_count=0
|
|
80
|
-
local blocked_count=0
|
|
81
|
-
local in_progress_count=0
|
|
82
|
-
|
|
83
|
-
echo "=== Ready Tasks (No Blockers) ==="
|
|
84
|
-
echo ""
|
|
85
|
-
|
|
86
|
-
while IFS='|' read -r status id desc est blocker; do
|
|
87
|
-
case "$status" in
|
|
88
|
-
READY)
|
|
89
|
-
((ready_count++))
|
|
90
|
-
echo " $ready_count. $id: $desc ${est:+($est)}"
|
|
91
|
-
;;
|
|
92
|
-
BLOCKED)
|
|
93
|
-
((blocked_count++))
|
|
94
|
-
;;
|
|
95
|
-
IN_PROGRESS)
|
|
96
|
-
((in_progress_count++))
|
|
97
|
-
;;
|
|
98
|
-
*)
|
|
99
|
-
# Ignore unknown status
|
|
100
|
-
;;
|
|
101
|
-
esac
|
|
102
|
-
done
|
|
103
|
-
|
|
104
|
-
if [[ $ready_count -eq 0 ]]; then
|
|
105
|
-
echo " No ready tasks found"
|
|
106
|
-
fi
|
|
107
|
-
|
|
108
|
-
echo ""
|
|
109
|
-
echo "Blocked: $blocked_count | In Progress: $in_progress_count"
|
|
110
|
-
echo ""
|
|
111
|
-
echo "Start work with: \"Let's work on [task-id]\""
|
|
112
|
-
return 0
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
# Output as verbose
|
|
116
|
-
output_verbose() {
|
|
117
|
-
echo -e "${BLUE}=== Ready Tasks (No Blockers) ===${NC}"
|
|
118
|
-
echo ""
|
|
119
|
-
|
|
120
|
-
while IFS='|' read -r status id desc est blocker; do
|
|
121
|
-
case "$status" in
|
|
122
|
-
READY)
|
|
123
|
-
echo -e "${GREEN}READY${NC} $id: $desc ${est:+($est)}"
|
|
124
|
-
;;
|
|
125
|
-
*)
|
|
126
|
-
# Only processing READY in this loop
|
|
127
|
-
;;
|
|
128
|
-
esac
|
|
129
|
-
done
|
|
130
|
-
|
|
131
|
-
echo ""
|
|
132
|
-
echo -e "${YELLOW}=== Blocked Tasks ===${NC}"
|
|
133
|
-
echo ""
|
|
134
|
-
|
|
135
|
-
# Re-read for blocked
|
|
136
|
-
while IFS='|' read -r status id desc est blocker; do
|
|
137
|
-
case "$status" in
|
|
138
|
-
BLOCKED)
|
|
139
|
-
echo -e "${YELLOW}BLOCKED${NC} $id: $desc (waiting on: $blocker)"
|
|
140
|
-
;;
|
|
141
|
-
*)
|
|
142
|
-
# Only processing BLOCKED in this loop
|
|
143
|
-
;;
|
|
144
|
-
esac
|
|
145
|
-
done
|
|
146
|
-
|
|
147
|
-
echo ""
|
|
148
|
-
echo -e "${BLUE}=== In Progress ===${NC}"
|
|
149
|
-
echo ""
|
|
150
|
-
|
|
151
|
-
# Re-read for in progress
|
|
152
|
-
while IFS='|' read -r status id desc est blocker; do
|
|
153
|
-
case "$status" in
|
|
154
|
-
IN_PROGRESS)
|
|
155
|
-
echo -e "${BLUE}IN PROGRESS${NC} $id: $desc ${est:+($est)}"
|
|
156
|
-
;;
|
|
157
|
-
*)
|
|
158
|
-
# Only processing IN_PROGRESS in this loop
|
|
159
|
-
;;
|
|
160
|
-
esac
|
|
161
|
-
done
|
|
162
|
-
return 0
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
# Output as JSON
|
|
166
|
-
output_json() {
|
|
167
|
-
local ready_json=""
|
|
168
|
-
local blocked_json=""
|
|
169
|
-
local in_progress_json=""
|
|
170
|
-
local ready_count=0
|
|
171
|
-
local blocked_count=0
|
|
172
|
-
local in_progress_count=0
|
|
173
|
-
|
|
174
|
-
while IFS='|' read -r status id desc est blocker; do
|
|
175
|
-
case "$status" in
|
|
176
|
-
READY)
|
|
177
|
-
[[ $ready_count -gt 0 ]] && ready_json+=","
|
|
178
|
-
ready_json+="{\"id\":\"$id\",\"desc\":\"$desc\",\"est\":\"$est\"}"
|
|
179
|
-
((ready_count++))
|
|
180
|
-
;;
|
|
181
|
-
BLOCKED)
|
|
182
|
-
[[ $blocked_count -gt 0 ]] && blocked_json+=","
|
|
183
|
-
blocked_json+="{\"id\":\"$id\",\"desc\":\"$desc\",\"est\":\"$est\",\"blocked_by\":\"$blocker\"}"
|
|
184
|
-
((blocked_count++))
|
|
185
|
-
;;
|
|
186
|
-
IN_PROGRESS)
|
|
187
|
-
[[ $in_progress_count -gt 0 ]] && in_progress_json+=","
|
|
188
|
-
in_progress_json+="{\"id\":\"$id\",\"desc\":\"$desc\",\"est\":\"$est\"}"
|
|
189
|
-
((in_progress_count++))
|
|
190
|
-
;;
|
|
191
|
-
*)
|
|
192
|
-
# Ignore unknown status
|
|
193
|
-
;;
|
|
194
|
-
esac
|
|
195
|
-
done
|
|
196
|
-
|
|
197
|
-
cat <<EOF
|
|
198
|
-
{
|
|
199
|
-
"ready": [$ready_json],
|
|
200
|
-
"blocked": [$blocked_json],
|
|
201
|
-
"in_progress": [$in_progress_json],
|
|
202
|
-
"summary": {
|
|
203
|
-
"ready": $ready_count,
|
|
204
|
-
"blocked": $blocked_count,
|
|
205
|
-
"in_progress": $in_progress_count
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
EOF
|
|
209
|
-
return 0
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
# Main
|
|
213
|
-
main() {
|
|
214
|
-
local output_format="text"
|
|
215
|
-
|
|
216
|
-
# Parse command line
|
|
217
|
-
while [[ $# -gt 0 ]]; do
|
|
218
|
-
case "$1" in
|
|
219
|
-
--json) output_format="json" ;;
|
|
220
|
-
--count) output_format="count" ;;
|
|
221
|
-
--verbose) output_format="verbose" ;;
|
|
222
|
-
--help|-h)
|
|
223
|
-
echo "Usage: todo-ready.sh [--json|--count|--verbose]"
|
|
224
|
-
exit 0
|
|
225
|
-
;;
|
|
226
|
-
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
|
227
|
-
esac
|
|
228
|
-
shift
|
|
229
|
-
done
|
|
230
|
-
|
|
231
|
-
# Find project
|
|
232
|
-
local project_root
|
|
233
|
-
project_root=$(find_project_root) || {
|
|
234
|
-
echo "ERROR: Not in a project directory (no TODO.md found)" >&2
|
|
235
|
-
exit 1
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
local todo_file="$project_root/TODO.md"
|
|
239
|
-
|
|
240
|
-
# Parse and output
|
|
241
|
-
case "$output_format" in
|
|
242
|
-
count)
|
|
243
|
-
parse_tasks "$todo_file" | grep -c "^READY|" || echo "0"
|
|
244
|
-
;;
|
|
245
|
-
json)
|
|
246
|
-
parse_tasks "$todo_file" | output_json
|
|
247
|
-
;;
|
|
248
|
-
verbose)
|
|
249
|
-
# Need to parse multiple times for verbose output
|
|
250
|
-
parse_tasks "$todo_file" > /tmp/todo-ready-$$
|
|
251
|
-
output_verbose < /tmp/todo-ready-$$
|
|
252
|
-
rm -f /tmp/todo-ready-$$
|
|
253
|
-
;;
|
|
254
|
-
*)
|
|
255
|
-
parse_tasks "$todo_file" | output_text
|
|
256
|
-
;;
|
|
257
|
-
esac
|
|
258
|
-
|
|
259
|
-
return 0
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
main "$@"
|
|
263
|
-
exit $?
|