@growthub/cli 0.14.4 → 0.14.6
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 +13 -16
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/QUICKSTART.md +5 -6
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/resolvers/[integrationId]/route.js +157 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/apps/route.js +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/env-status/route.js +5 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/api/workspace/resolvers/route.js +86 -4
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/ApiRegistryCreationCockpit.jsx +30 -5
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/ApiRegistryReviewModal.jsx +2 -2
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/DataModelShell.jsx +400 -188
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationGraphEmptyCanvas.jsx +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/OrchestrationRunTracePanel.jsx +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxOrchestrationEditorPanel.jsx +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/globals.css +3 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/api-registry-creation-flow.js +24 -19
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/orchestration-graph.js +7 -82
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/resolver-constructor.js +217 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/server-resolver-registry.js +99 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/unified-resolver-registry.js +545 -0
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-activation.js +2 -3
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/lib/workspace-resolver-proposal.js +30 -2
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/bundles/growthub-custom-workspace-starter-v1.json +0 -8
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/docs/starter-kit-overview.md +2 -2
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/docs/vercel-serverless-deployment.md +7 -11
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/kit.json +2 -11
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/runtime-assumptions.md +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/skills.md +1 -2
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/validation-checklist.md +1 -1
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/workers/custom-workspace-operator/CLAUDE.md +1 -1
- package/package.json +3 -4
- package/assets/shared-templates/ad-formats/INDEX.md +0 -94
- package/assets/shared-templates/ad-formats/bedroom-minimic-talk.md +0 -197
- package/assets/shared-templates/ad-formats/frame-analysis.md +0 -209
- package/assets/shared-templates/ad-formats/process-specialist-medical.md +0 -105
- package/assets/shared-templates/ad-formats/villain-animation.md +0 -183
- package/assets/shared-templates/manifest.json +0 -23
- package/assets/shared-templates/marketing-frameworks/competitor-positioning.md +0 -46
- package/assets/shared-templates/marketing-frameworks/cro-7-dimensions.md +0 -48
- package/assets/shared-templates/marketing-frameworks/email-sequence-architecture.md +0 -50
- package/assets/shared-templates/marketing-frameworks/launch-playbook.md +0 -62
- package/assets/shared-templates/marketing-frameworks/product-marketing-context.md +0 -62
- package/assets/shared-templates/marketing-frameworks/seo-audit-eeat.md +0 -44
- package/assets/shared-templates/scene-modules/INDEX.md +0 -151
- package/assets/shared-templates/scene-modules/body/before-after-flatlay.md +0 -143
- package/assets/shared-templates/scene-modules/body/minimic-problem.md +0 -109
- package/assets/shared-templates/scene-modules/body/product-demo-glow.md +0 -123
- package/assets/shared-templates/scene-modules/body/tiktok-skeptic-pivot.md +0 -119
- package/assets/shared-templates/scene-modules/body/villain-agitation.md +0 -156
- package/assets/shared-templates/scene-modules/cta/bogo-meme-bookend.md +0 -144
- package/assets/shared-templates/scene-modules/cta/guarantee-close.md +0 -143
- package/assets/shared-templates/scene-modules/hooks/dollar-amount.md +0 -105
- package/assets/shared-templates/scene-modules/hooks/meme-overlay.md +0 -104
- package/assets/shared-templates/scene-modules/hooks/pov-confession.md +0 -92
- package/assets/shared-templates/scene-modules/hooks/tiktok-comment.md +0 -116
- package/assets/shared-templates/scene-modules/hooks/villain-hook.md +0 -134
- package/assets/worker-kits/creative-strategist-v1/SKILL.md +0 -95
- package/assets/worker-kits/creative-strategist-v1/brands/_template/brand-kit.md +0 -123
- package/assets/worker-kits/creative-strategist-v1/brands/solawave/brand-kit.md +0 -139
- package/assets/worker-kits/creative-strategist-v1/bundles/creative-strategist-v1.json +0 -57
- package/assets/worker-kits/creative-strategist-v1/growthub-meta/README.md +0 -18
- package/assets/worker-kits/creative-strategist-v1/growthub-meta/kit-standard.md +0 -47
- package/assets/worker-kits/creative-strategist-v1/helpers/README.md +0 -29
- package/assets/worker-kits/creative-strategist-v1/helpers/extract-muse-frames.sh +0 -81
- package/assets/worker-kits/creative-strategist-v1/helpers/grep-hooks.sh +0 -62
- package/assets/worker-kits/creative-strategist-v1/kit.json +0 -106
- package/assets/worker-kits/creative-strategist-v1/skills/README.md +0 -23
- package/assets/worker-kits/creative-strategist-v1/skills/frame-analysis/SKILL.md +0 -88
- package/assets/worker-kits/creative-strategist-v1/skills.md +0 -343
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/INDEX.md +0 -94
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/bedroom-minimic-talk.md +0 -197
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/frame-analysis.md +0 -209
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/process-specialist-medical.md +0 -105
- package/assets/worker-kits/creative-strategist-v1/templates/ad-formats/villain-animation.md +0 -183
- package/assets/worker-kits/creative-strategist-v1/templates/brief-template.js +0 -470
- package/assets/worker-kits/creative-strategist-v1/templates/hooks-library/500-winning-hooks.csv +0 -539
- package/assets/worker-kits/creative-strategist-v1/templates/project.md +0 -48
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/INDEX.md +0 -151
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/before-after-flatlay.md +0 -143
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/minimic-problem.md +0 -109
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/product-demo-glow.md +0 -123
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/tiktok-skeptic-pivot.md +0 -119
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/body/villain-agitation.md +0 -156
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/bogo-meme-bookend.md +0 -144
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/cta/guarantee-close.md +0 -143
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/dollar-amount.md +0 -105
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/meme-overlay.md +0 -104
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/pov-confession.md +0 -92
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/tiktok-comment.md +0 -116
- package/assets/worker-kits/creative-strategist-v1/templates/scene-modules/hooks/villain-hook.md +0 -134
- package/assets/worker-kits/creative-strategist-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/creative-strategist-v1/workers/creative-strategist/CLAUDE.md +0 -463
- package/assets/worker-kits/growthub-agency-portal-starter-v1/.env.example +0 -53
- package/assets/worker-kits/growthub-agency-portal-starter-v1/QUICKSTART.md +0 -98
- package/assets/worker-kits/growthub-agency-portal-starter-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/.env.example +0 -41
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/README.md +0 -38
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/api/settings/integrations/route.js +0 -13
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/api/workspace/route.js +0 -31
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/globals.css +0 -369
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/layout.jsx +0 -14
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/page.jsx +0 -159
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/app/settings/integrations/page.jsx +0 -105
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/growthub.config.json +0 -112
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/jsconfig.json +0 -8
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/auth/index.js +0 -21
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/env.js +0 -28
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/integrations/growthub-connection-normalizer.js +0 -95
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/integrations/index.js +0 -198
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/payments/index.js +0 -13
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/index.js +0 -13
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/postgres.js +0 -16
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/provider-managed.js +0 -16
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/adapters/persistence/qstash-kv.js +0 -16
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/domain/integrations.js +0 -185
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/lib/domain/portal.js +0 -150
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/next.config.js +0 -10
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/package-lock.json +0 -912
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/package.json +0 -20
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/postcss.config.mjs +0 -3
- package/assets/worker-kits/growthub-agency-portal-starter-v1/apps/agency-portal/vercel.json +0 -5
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/NEW-CLIENT.md +0 -10
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/_template/brand-kit.md +0 -27
- package/assets/worker-kits/growthub-agency-portal-starter-v1/brands/growthub/brand-kit.md +0 -25
- package/assets/worker-kits/growthub-agency-portal-starter-v1/bundles/growthub-agency-portal-starter-v1.json +0 -66
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/adapter-contracts.md +0 -86
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/fork-sync-integration.md +0 -32
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/governed-workspace-primitives.md +0 -182
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/starter-kit-overview.md +0 -30
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/vercel-serverless-deployment.md +0 -46
- package/assets/worker-kits/growthub-agency-portal-starter-v1/docs/vite-ui-shell-guide.md +0 -24
- package/assets/worker-kits/growthub-agency-portal-starter-v1/examples/portal-brief-sample.md +0 -44
- package/assets/worker-kits/growthub-agency-portal-starter-v1/examples/workspace-sample.md +0 -10
- package/assets/worker-kits/growthub-agency-portal-starter-v1/growthub-meta/README.md +0 -11
- package/assets/worker-kits/growthub-agency-portal-starter-v1/growthub-meta/kit-standard.md +0 -16
- package/assets/worker-kits/growthub-agency-portal-starter-v1/helpers/README.md +0 -49
- package/assets/worker-kits/growthub-agency-portal-starter-v1/kit.json +0 -161
- package/assets/worker-kits/growthub-agency-portal-starter-v1/output/README.md +0 -13
- package/assets/worker-kits/growthub-agency-portal-starter-v1/output-standards.md +0 -25
- package/assets/worker-kits/growthub-agency-portal-starter-v1/runtime-assumptions.md +0 -15
- package/assets/worker-kits/growthub-agency-portal-starter-v1/setup/check-deps.sh +0 -20
- package/assets/worker-kits/growthub-agency-portal-starter-v1/setup/verify-env.mjs +0 -92
- package/assets/worker-kits/growthub-agency-portal-starter-v1/skills/README.md +0 -55
- package/assets/worker-kits/growthub-agency-portal-starter-v1/skills.md +0 -133
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/index.html +0 -12
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/package-lock.json +0 -1677
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/package.json +0 -20
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/serve.mjs +0 -42
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/App.jsx +0 -159
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/app.css +0 -139
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/src/main.jsx +0 -10
- package/assets/worker-kits/growthub-agency-portal-starter-v1/studio/vite.config.js +0 -8
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/agent-contract.md +0 -9
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/client-onboarding-plan.md +0 -56
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/deployment-handoff.md +0 -61
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/deployment-plan.md +0 -22
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/portal-brief.md +0 -65
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/project.md +0 -55
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/supabase-setup-plan.md +0 -26
- package/assets/worker-kits/growthub-agency-portal-starter-v1/templates/workspace-brief.md +0 -11
- package/assets/worker-kits/growthub-agency-portal-starter-v1/validation-checklist.md +0 -32
- package/assets/worker-kits/growthub-agency-portal-starter-v1/workers/agency-portal-operator/CLAUDE.md +0 -75
- package/assets/worker-kits/growthub-ai-website-cloner-v1/.env.example +0 -9
- package/assets/worker-kits/growthub-ai-website-cloner-v1/QUICKSTART.md +0 -116
- package/assets/worker-kits/growthub-ai-website-cloner-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/NEW-CLIENT.md +0 -22
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/_template/brand-kit.md +0 -27
- package/assets/worker-kits/growthub-ai-website-cloner-v1/brands/growthub/brand-kit.md +0 -26
- package/assets/worker-kits/growthub-ai-website-cloner-v1/bundles/growthub-ai-website-cloner-v1.json +0 -60
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/ai-website-cloner-fork-integration.md +0 -118
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/design-token-system.md +0 -135
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/multi-phase-pipeline.md +0 -129
- package/assets/worker-kits/growthub-ai-website-cloner-v1/docs/parallel-builder-dispatch.md +0 -103
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/clone-brief-sample.md +0 -54
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/component-spec-sample.md +0 -123
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/platform-handoff-sample.md +0 -102
- package/assets/worker-kits/growthub-ai-website-cloner-v1/examples/visual-qa-sample.md +0 -119
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/README.md +0 -71
- package/assets/worker-kits/growthub-ai-website-cloner-v1/growthub-meta/kit-standard.md +0 -47
- package/assets/worker-kits/growthub-ai-website-cloner-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-ai-website-cloner-v1/kit.json +0 -120
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output/README.md +0 -26
- package/assets/worker-kits/growthub-ai-website-cloner-v1/output-standards.md +0 -75
- package/assets/worker-kits/growthub-ai-website-cloner-v1/runtime-assumptions.md +0 -70
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/check-deps.sh +0 -50
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/clone-fork.sh +0 -66
- package/assets/worker-kits/growthub-ai-website-cloner-v1/setup/verify-env.mjs +0 -78
- package/assets/worker-kits/growthub-ai-website-cloner-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-ai-website-cloner-v1/skills.md +0 -186
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/asset-manifest.md +0 -57
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/builder-dispatch-plan.md +0 -92
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/clone-brief.md +0 -59
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/component-spec.md +0 -124
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/design-token-extraction.md +0 -89
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/platform-handoff.md +0 -114
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/reconnaissance-report.md +0 -77
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-ai-website-cloner-v1/templates/visual-qa-checklist.md +0 -107
- package/assets/worker-kits/growthub-ai-website-cloner-v1/validation-checklist.md +0 -76
- package/assets/worker-kits/growthub-ai-website-cloner-v1/workers/ai-website-cloner-operator/CLAUDE.md +0 -278
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/.env.example +0 -28
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/QUICKSTART.md +0 -118
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/SKILL.md +0 -124
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/.env.example +0 -20
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/README.md +0 -33
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/api/pipeline/route.js +0 -27
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/globals.css +0 -203
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/layout.jsx +0 -14
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/page.jsx +0 -131
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/app/settings/keys/page.jsx +0 -154
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/env.js +0 -14
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/adapters/generative/index.js +0 -31
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/lib/domain/pipeline.js +0 -30
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/next.config.js +0 -10
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package-lock.json +0 -912
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/package.json +0 -20
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/postcss.config.mjs +0 -3
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/apps/creative-video-pipeline/vercel.json +0 -5
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/NEW-CLIENT.md +0 -21
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/_template/brand-kit.md +0 -123
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/brands/growthub/brand-kit.md +0 -123
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/bundles/growthub-creative-video-pipeline-v1.json +0 -87
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/adapter-contracts.md +0 -73
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/governed-workspace-primitives.md +0 -50
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/pipeline-architecture.md +0 -61
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/starter-kit-overview.md +0 -33
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/docs/vercel-deployment.md +0 -42
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/examples/pipeline-brief-sample.md +0 -56
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/README.md +0 -9
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/growthub-meta/kit-standard.md +0 -24
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/README.md +0 -9
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-generative-adapter.sh +0 -41
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/check-pipeline-health.sh +0 -154
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/helpers/run-pipeline.sh +0 -30
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/kit.json +0 -157
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/output/README.md +0 -23
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/output-standards.md +0 -63
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/pipeline.manifest.json +0 -83
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/runtime-assumptions.md +0 -61
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/check-deps.sh +0 -63
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/clone-fork.sh +0 -18
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/install-skill.sh +0 -10
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/setup/verify-env.mjs +0 -50
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/README.md +0 -11
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/brief-generation/SKILL.md +0 -42
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/generative-execution/SKILL.md +0 -86
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills/video-edit/SKILL.md +0 -41
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/skills.md +0 -302
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/index.html +0 -12
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package-lock.json +0 -20
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/package.json +0 -20
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/serve.mjs +0 -41
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/App.jsx +0 -210
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/app.css +0 -194
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/src/main.jsx +0 -10
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/studio/vite.config.js +0 -8
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/edit-plan.md +0 -66
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/generative-plan.md +0 -83
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/pipeline-brief.md +0 -129
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/project.md +0 -68
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation/e2e-reference.md +0 -166
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/validation-checklist.md +0 -56
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/workers/creative-video-pipeline-operator/CLAUDE.md +0 -109
- package/assets/worker-kits/growthub-creative-video-pipeline-v1/workspace.dependencies.json +0 -26
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/ApiRegistryActionCard.jsx +0 -141
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxToolConfirmModal.jsx +0 -64
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/apps/workspace/app/data-model/components/SandboxToolDraftPanel.jsx +0 -376
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/docs/vite-ui-shell-guide.md +0 -24
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/index.html +0 -12
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/package.json +0 -20
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/serve.mjs +0 -42
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/src/App.jsx +0 -32
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/src/app.css +0 -20
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/src/main.jsx +0 -10
- package/assets/worker-kits/growthub-custom-workspace-starter-v1/studio/vite.config.js +0 -8
- package/assets/worker-kits/growthub-email-marketing-v1/SKILL.md +0 -90
- package/assets/worker-kits/growthub-email-marketing-v1/brands/_template/brand-kit.md +0 -172
- package/assets/worker-kits/growthub-email-marketing-v1/brands/growthub/VERSION.md +0 -32
- package/assets/worker-kits/growthub-email-marketing-v1/brands/growthub/brand-kit.md +0 -282
- package/assets/worker-kits/growthub-email-marketing-v1/broadcasts/_template/broadcast-vault.md +0 -188
- package/assets/worker-kits/growthub-email-marketing-v1/broadcasts/growthub/broadcast-vault.md +0 -324
- package/assets/worker-kits/growthub-email-marketing-v1/bundles/growthub-email-marketing-v1.json +0 -73
- package/assets/worker-kits/growthub-email-marketing-v1/examples/campaign-brief-sample.md +0 -110
- package/assets/worker-kits/growthub-email-marketing-v1/examples/nurture-sequence-sample.md +0 -265
- package/assets/worker-kits/growthub-email-marketing-v1/examples/subject-line-matrix-sample.md +0 -116
- package/assets/worker-kits/growthub-email-marketing-v1/growthub-meta/README.md +0 -108
- package/assets/worker-kits/growthub-email-marketing-v1/growthub-meta/kit-standard.md +0 -87
- package/assets/worker-kits/growthub-email-marketing-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-email-marketing-v1/kit.json +0 -119
- package/assets/worker-kits/growthub-email-marketing-v1/output/growthub/showcase-proof-ai-ugc-v1-20260410/Growthub_Broadcast_ShowcaseProof_v1_20260410.md +0 -139
- package/assets/worker-kits/growthub-email-marketing-v1/output/growthub/showcase-proof-ai-ugc-v1-20260410/Growthub_CampaignBrief_ClientResults_v1_20260410.md +0 -115
- package/assets/worker-kits/growthub-email-marketing-v1/output/growthub/showcase-proof-ai-ugc-v1-20260410/Growthub_SubjectLineMatrix_v1_20260410.md +0 -83
- package/assets/worker-kits/growthub-email-marketing-v1/output-standards.md +0 -174
- package/assets/worker-kits/growthub-email-marketing-v1/runtime-assumptions.md +0 -268
- package/assets/worker-kits/growthub-email-marketing-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-email-marketing-v1/skills.md +0 -490
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/INDEX.md +0 -75
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/activation-booking.md +0 -156
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/engagement-nudge.md +0 -175
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/lead-magnet-traffic.md +0 -149
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/showcase-proof.md +0 -153
- package/assets/worker-kits/growthub-email-marketing-v1/templates/broadcast-formats/value-delivery.md +0 -141
- package/assets/worker-kits/growthub-email-marketing-v1/templates/campaign-brief-template.md +0 -115
- package/assets/worker-kits/growthub-email-marketing-v1/templates/cta-matrix.md +0 -90
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-draft.md +0 -145
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/INDEX.md +0 -59
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/follow-up-sequence.md +0 -111
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/nurture-sequence.md +0 -143
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/outbound-cold-sequence.md +0 -134
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/promotional-broadcast.md +0 -117
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-formats/re-engagement.md +0 -108
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/INDEX.md +0 -97
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/body/education-block.md +0 -131
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/body/problem-agitate.md +0 -107
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/body/story-bridge.md +0 -112
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/body/value-reveal.md +0 -107
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/cta/primary-cta.md +0 -116
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/cta/reply-cta.md +0 -131
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/cta/soft-cta.md +0 -117
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/subject-lines/curiosity.md +0 -112
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/subject-lines/personal.md +0 -108
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/subject-lines/social-proof.md +0 -109
- package/assets/worker-kits/growthub-email-marketing-v1/templates/email-modules/subject-lines/urgency.md +0 -112
- package/assets/worker-kits/growthub-email-marketing-v1/templates/hooks-library/subject-line-patterns.csv +0 -73
- package/assets/worker-kits/growthub-email-marketing-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-email-marketing-v1/templates/qa-checklist.md +0 -106
- package/assets/worker-kits/growthub-email-marketing-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-email-marketing-v1/templates/sequence-planner.md +0 -94
- package/assets/worker-kits/growthub-email-marketing-v1/templates/subject-line-matrix.md +0 -136
- package/assets/worker-kits/growthub-email-marketing-v1/workers/email-marketing-strategist/CLAUDE.md +0 -316
- package/assets/worker-kits/growthub-geo-seo-v1/.env.example +0 -14
- package/assets/worker-kits/growthub-geo-seo-v1/QUICKSTART.md +0 -138
- package/assets/worker-kits/growthub-geo-seo-v1/SKILL.md +0 -90
- package/assets/worker-kits/growthub-geo-seo-v1/brands/NEW-CLIENT.md +0 -104
- package/assets/worker-kits/growthub-geo-seo-v1/brands/_template/brand-kit.md +0 -116
- package/assets/worker-kits/growthub-geo-seo-v1/brands/growthub/brand-kit.md +0 -117
- package/assets/worker-kits/growthub-geo-seo-v1/bundles/growthub-geo-seo-v1.json +0 -63
- package/assets/worker-kits/growthub-geo-seo-v1/docs/geo-seo-fork-integration.md +0 -244
- package/assets/worker-kits/growthub-geo-seo-v1/docs/pdf-report-layer.md +0 -139
- package/assets/worker-kits/growthub-geo-seo-v1/docs/scoring-methodology.md +0 -230
- package/assets/worker-kits/growthub-geo-seo-v1/docs/subagent-dispatch.md +0 -273
- package/assets/worker-kits/growthub-geo-seo-v1/examples/citability-sample.md +0 -155
- package/assets/worker-kits/growthub-geo-seo-v1/examples/geo-audit-sample.md +0 -126
- package/assets/worker-kits/growthub-geo-seo-v1/examples/pdf-report-sample.md +0 -207
- package/assets/worker-kits/growthub-geo-seo-v1/examples/prospect-proposal-sample.md +0 -184
- package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/README.md +0 -124
- package/assets/worker-kits/growthub-geo-seo-v1/growthub-meta/kit-standard.md +0 -116
- package/assets/worker-kits/growthub-geo-seo-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-geo-seo-v1/kit.json +0 -123
- package/assets/worker-kits/growthub-geo-seo-v1/output/README.md +0 -114
- package/assets/worker-kits/growthub-geo-seo-v1/output-standards.md +0 -143
- package/assets/worker-kits/growthub-geo-seo-v1/runtime-assumptions.md +0 -175
- package/assets/worker-kits/growthub-geo-seo-v1/setup/check-deps.sh +0 -80
- package/assets/worker-kits/growthub-geo-seo-v1/setup/clone-fork.sh +0 -56
- package/assets/worker-kits/growthub-geo-seo-v1/setup/verify-env.mjs +0 -152
- package/assets/worker-kits/growthub-geo-seo-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-geo-seo-v1/skills.md +0 -359
- package/assets/worker-kits/growthub-geo-seo-v1/templates/brand-visibility-report.md +0 -101
- package/assets/worker-kits/growthub-geo-seo-v1/templates/citability-analysis.md +0 -131
- package/assets/worker-kits/growthub-geo-seo-v1/templates/client-proposal.md +0 -172
- package/assets/worker-kits/growthub-geo-seo-v1/templates/content-analysis.md +0 -136
- package/assets/worker-kits/growthub-geo-seo-v1/templates/crawler-access-report.md +0 -115
- package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-audit-brief.md +0 -114
- package/assets/worker-kits/growthub-geo-seo-v1/templates/geo-score-summary.md +0 -113
- package/assets/worker-kits/growthub-geo-seo-v1/templates/llmstxt-plan.md +0 -173
- package/assets/worker-kits/growthub-geo-seo-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-geo-seo-v1/templates/remediation-roadmap.md +0 -150
- package/assets/worker-kits/growthub-geo-seo-v1/templates/schema-validation.md +0 -177
- package/assets/worker-kits/growthub-geo-seo-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-geo-seo-v1/templates/technical-foundations.md +0 -108
- package/assets/worker-kits/growthub-geo-seo-v1/validation-checklist.md +0 -139
- package/assets/worker-kits/growthub-geo-seo-v1/workers/geo-seo-operator/CLAUDE.md +0 -342
- package/assets/worker-kits/growthub-hyperframes-studio-v1/.env.example +0 -9
- package/assets/worker-kits/growthub-hyperframes-studio-v1/QUICKSTART.md +0 -21
- package/assets/worker-kits/growthub-hyperframes-studio-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-hyperframes-studio-v1/brands/NEW-CLIENT.md +0 -3
- package/assets/worker-kits/growthub-hyperframes-studio-v1/brands/_template/brand-kit.md +0 -7
- package/assets/worker-kits/growthub-hyperframes-studio-v1/brands/growthub/brand-kit.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/bundles/growthub-hyperframes-studio-v1.json +0 -52
- package/assets/worker-kits/growthub-hyperframes-studio-v1/docs/hyperframes-discovery-path.md +0 -12
- package/assets/worker-kits/growthub-hyperframes-studio-v1/docs/hyperframes-fork-integration.md +0 -11
- package/assets/worker-kits/growthub-hyperframes-studio-v1/docs/provider-adapter-layer.md +0 -9
- package/assets/worker-kits/growthub-hyperframes-studio-v1/examples/video-brief-sample.md +0 -15
- package/assets/worker-kits/growthub-hyperframes-studio-v1/growthub-meta/README.md +0 -3
- package/assets/worker-kits/growthub-hyperframes-studio-v1/growthub-meta/kit-standard.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-hyperframes-studio-v1/kit.json +0 -112
- package/assets/worker-kits/growthub-hyperframes-studio-v1/output/README.md +0 -5
- package/assets/worker-kits/growthub-hyperframes-studio-v1/output-standards.md +0 -12
- package/assets/worker-kits/growthub-hyperframes-studio-v1/runtime-assumptions.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/setup/check-deps.sh +0 -14
- package/assets/worker-kits/growthub-hyperframes-studio-v1/setup/clone-fork.sh +0 -13
- package/assets/worker-kits/growthub-hyperframes-studio-v1/setup/verify-env.mjs +0 -17
- package/assets/worker-kits/growthub-hyperframes-studio-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-hyperframes-studio-v1/skills.md +0 -12
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/composition-spec.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/qa-checklist.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/render-plan.md +0 -13
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-hyperframes-studio-v1/templates/video-brief.md +0 -7
- package/assets/worker-kits/growthub-hyperframes-studio-v1/validation-checklist.md +0 -6
- package/assets/worker-kits/growthub-hyperframes-studio-v1/workers/hyperframes-studio-operator/CLAUDE.md +0 -40
- package/assets/worker-kits/growthub-marketing-skills-v1/.env.example +0 -7
- package/assets/worker-kits/growthub-marketing-skills-v1/QUICKSTART.md +0 -111
- package/assets/worker-kits/growthub-marketing-skills-v1/SKILL.md +0 -90
- package/assets/worker-kits/growthub-marketing-skills-v1/brands/_template/product-marketing-context.md +0 -147
- package/assets/worker-kits/growthub-marketing-skills-v1/brands/growthub/product-marketing-context.md +0 -145
- package/assets/worker-kits/growthub-marketing-skills-v1/bundles/growthub-marketing-skills-v1.json +0 -52
- package/assets/worker-kits/growthub-marketing-skills-v1/docs/evaluation-frameworks.md +0 -53
- package/assets/worker-kits/growthub-marketing-skills-v1/docs/fork-integration.md +0 -43
- package/assets/worker-kits/growthub-marketing-skills-v1/docs/skill-dispatch-methodology.md +0 -50
- package/assets/worker-kits/growthub-marketing-skills-v1/examples/email-sequence-sample.md +0 -75
- package/assets/worker-kits/growthub-marketing-skills-v1/examples/landing-page-cro-sample.md +0 -128
- package/assets/worker-kits/growthub-marketing-skills-v1/examples/seo-audit-sample.md +0 -102
- package/assets/worker-kits/growthub-marketing-skills-v1/growthub-meta/README.md +0 -5
- package/assets/worker-kits/growthub-marketing-skills-v1/growthub-meta/kit-standard.md +0 -25
- package/assets/worker-kits/growthub-marketing-skills-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-marketing-skills-v1/kit.json +0 -108
- package/assets/worker-kits/growthub-marketing-skills-v1/output/README.md +0 -32
- package/assets/worker-kits/growthub-marketing-skills-v1/output-standards.md +0 -51
- package/assets/worker-kits/growthub-marketing-skills-v1/runtime-assumptions.md +0 -46
- package/assets/worker-kits/growthub-marketing-skills-v1/setup/verify-env.mjs +0 -81
- package/assets/worker-kits/growthub-marketing-skills-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-marketing-skills-v1/skills.md +0 -157
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/competitor-analysis.md +0 -81
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/content-strategy-plan.md +0 -75
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/cro-audit-brief.md +0 -138
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/email-sequence-plan.md +0 -80
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/launch-checklist.md +0 -83
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-marketing-skills-v1/templates/seo-audit-report.md +0 -119
- package/assets/worker-kits/growthub-marketing-skills-v1/workers/marketing-operator/CLAUDE.md +0 -220
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/.env.example +0 -14
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/QUICKSTART.md +0 -95
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/brands/NEW-CLIENT.md +0 -46
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/brands/_template/brand-kit.md +0 -89
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/brands/growthub/brand-kit.md +0 -96
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/bundles/growthub-open-higgsfield-studio-v1.json +0 -64
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/docs/open-higgsfield-fork-integration.md +0 -63
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/docs/provider-adapter-layer.md +0 -67
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/examples/platform-ready-handoff-sample.md +0 -24
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/examples/prompt-matrix-sample.md +0 -6
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/examples/shot-plan-sample.md +0 -7
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/examples/visual-campaign-brief-sample.md +0 -22
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/growthub-meta/README.md +0 -67
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/growthub-meta/kit-standard.md +0 -47
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/kit.json +0 -126
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/output/README.md +0 -34
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/output-standards.md +0 -133
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/runtime-assumptions.md +0 -145
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/setup/check-deps.sh +0 -37
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/setup/clone-fork.sh +0 -40
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/setup/patch-cors-proxy.sh +0 -139
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/setup/verify-env.mjs +0 -72
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/skills.md +0 -257
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/asset-tracking.md +0 -5
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/frame-analysis.md +0 -24
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/generation-batch-plan.md +0 -7
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/model-selection-recommendation.md +0 -23
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/platform-ready-execution-handoff.md +0 -17
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/prompt-matrix.md +0 -7
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/prompt-templates/cinema-generation.md +0 -16
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/prompt-templates/image-generation.md +0 -11
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/prompt-templates/lip-sync-generation.md +0 -14
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/prompt-templates/video-generation.md +0 -11
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/review-qa-checklist.md +0 -26
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/shot-plan.md +0 -11
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/studio-selection-brief.md +0 -18
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/templates/visual-campaign-brief.md +0 -24
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/validation-checklist.md +0 -49
- package/assets/worker-kits/growthub-open-higgsfield-studio-v1/workers/open-higgsfield-studio-operator/CLAUDE.md +0 -286
- package/assets/worker-kits/growthub-open-montage-studio-v1/.env.example +0 -42
- package/assets/worker-kits/growthub-open-montage-studio-v1/QUICKSTART.md +0 -114
- package/assets/worker-kits/growthub-open-montage-studio-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/NEW-CLIENT.md +0 -42
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/_template/brand-kit.md +0 -49
- package/assets/worker-kits/growthub-open-montage-studio-v1/brands/growthub/brand-kit.md +0 -50
- package/assets/worker-kits/growthub-open-montage-studio-v1/bundles/growthub-open-montage-studio-v1.json +0 -62
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/cms-node-bridge.md +0 -152
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/open-montage-fork-integration.md +0 -120
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/pipeline-reference.md +0 -147
- package/assets/worker-kits/growthub-open-montage-studio-v1/docs/provider-adapter-layer.md +0 -105
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/cms-node-video-gen-sample.md +0 -109
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/pipeline-selection-sample.md +0 -67
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/platform-ready-handoff-sample.md +0 -101
- package/assets/worker-kits/growthub-open-montage-studio-v1/examples/video-production-brief-sample.md +0 -68
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/README.md +0 -7
- package/assets/worker-kits/growthub-open-montage-studio-v1/growthub-meta/kit-standard.md +0 -45
- package/assets/worker-kits/growthub-open-montage-studio-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-open-montage-studio-v1/kit.json +0 -122
- package/assets/worker-kits/growthub-open-montage-studio-v1/output/README.md +0 -34
- package/assets/worker-kits/growthub-open-montage-studio-v1/output-standards.md +0 -79
- package/assets/worker-kits/growthub-open-montage-studio-v1/runtime-assumptions.md +0 -86
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/check-deps.sh +0 -43
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/clone-fork.sh +0 -54
- package/assets/worker-kits/growthub-open-montage-studio-v1/setup/verify-env.mjs +0 -105
- package/assets/worker-kits/growthub-open-montage-studio-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-open-montage-studio-v1/skills.md +0 -254
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/asset-tracking.md +0 -46
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/cms-node-pipeline-mapping.md +0 -64
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/generation-batch-plan.md +0 -70
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/pipeline-selection-brief.md +0 -67
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/platform-ready-execution-handoff.md +0 -103
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/prompt-matrix.md +0 -48
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/provider-selection-brief.md +0 -86
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/review-qa-checklist.md +0 -59
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/scene-plan.md +0 -65
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-open-montage-studio-v1/templates/video-production-brief.md +0 -58
- package/assets/worker-kits/growthub-open-montage-studio-v1/validation-checklist.md +0 -46
- package/assets/worker-kits/growthub-open-montage-studio-v1/workers/open-montage-studio-operator/CLAUDE.md +0 -326
- package/assets/worker-kits/growthub-postiz-social-v1/.env.example +0 -20
- package/assets/worker-kits/growthub-postiz-social-v1/QUICKSTART.md +0 -136
- package/assets/worker-kits/growthub-postiz-social-v1/SKILL.md +0 -90
- package/assets/worker-kits/growthub-postiz-social-v1/brands/NEW-CLIENT.md +0 -67
- package/assets/worker-kits/growthub-postiz-social-v1/brands/_template/brand-kit.md +0 -120
- package/assets/worker-kits/growthub-postiz-social-v1/brands/growthub/brand-kit.md +0 -117
- package/assets/worker-kits/growthub-postiz-social-v1/bundles/growthub-postiz-social-v1.json +0 -59
- package/assets/worker-kits/growthub-postiz-social-v1/docs/ai-caption-layer.md +0 -118
- package/assets/worker-kits/growthub-postiz-social-v1/docs/bullmq-queue-layer.md +0 -157
- package/assets/worker-kits/growthub-postiz-social-v1/docs/platform-coverage.md +0 -97
- package/assets/worker-kits/growthub-postiz-social-v1/docs/postiz-fork-integration.md +0 -143
- package/assets/worker-kits/growthub-postiz-social-v1/examples/analytics-brief-sample.md +0 -125
- package/assets/worker-kits/growthub-postiz-social-v1/examples/client-proposal-sample.md +0 -127
- package/assets/worker-kits/growthub-postiz-social-v1/examples/content-calendar-sample.md +0 -75
- package/assets/worker-kits/growthub-postiz-social-v1/examples/social-campaign-sample.md +0 -104
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/README.md +0 -128
- package/assets/worker-kits/growthub-postiz-social-v1/growthub-meta/kit-standard.md +0 -113
- package/assets/worker-kits/growthub-postiz-social-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-postiz-social-v1/kit.json +0 -119
- package/assets/worker-kits/growthub-postiz-social-v1/output/README.md +0 -56
- package/assets/worker-kits/growthub-postiz-social-v1/output-standards.md +0 -127
- package/assets/worker-kits/growthub-postiz-social-v1/runtime-assumptions.md +0 -159
- package/assets/worker-kits/growthub-postiz-social-v1/setup/check-deps.sh +0 -117
- package/assets/worker-kits/growthub-postiz-social-v1/setup/clone-fork.sh +0 -83
- package/assets/worker-kits/growthub-postiz-social-v1/setup/verify-env.mjs +0 -100
- package/assets/worker-kits/growthub-postiz-social-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-postiz-social-v1/skills.md +0 -277
- package/assets/worker-kits/growthub-postiz-social-v1/templates/analytics-brief.md +0 -123
- package/assets/worker-kits/growthub-postiz-social-v1/templates/caption-copy-deck.md +0 -127
- package/assets/worker-kits/growthub-postiz-social-v1/templates/client-proposal.md +0 -139
- package/assets/worker-kits/growthub-postiz-social-v1/templates/content-calendar.md +0 -65
- package/assets/worker-kits/growthub-postiz-social-v1/templates/platform-publishing-plan.md +0 -112
- package/assets/worker-kits/growthub-postiz-social-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-postiz-social-v1/templates/scheduling-manifest.md +0 -83
- package/assets/worker-kits/growthub-postiz-social-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-postiz-social-v1/templates/social-campaign-brief.md +0 -111
- package/assets/worker-kits/growthub-postiz-social-v1/validation-checklist.md +0 -79
- package/assets/worker-kits/growthub-postiz-social-v1/workers/postiz-social-operator/CLAUDE.md +0 -309
- package/assets/worker-kits/growthub-twenty-crm-v1/.env.example +0 -17
- package/assets/worker-kits/growthub-twenty-crm-v1/QUICKSTART.md +0 -90
- package/assets/worker-kits/growthub-twenty-crm-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/NEW-CLIENT.md +0 -57
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/_template/brand-kit.md +0 -88
- package/assets/worker-kits/growthub-twenty-crm-v1/brands/growthub/brand-kit.md +0 -92
- package/assets/worker-kits/growthub-twenty-crm-v1/bundles/growthub-twenty-crm-v1.json +0 -63
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/api-and-webhooks.md +0 -296
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/data-model-layer.md +0 -172
- package/assets/worker-kits/growthub-twenty-crm-v1/docs/twenty-fork-integration.md +0 -213
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-playbook-sample.md +0 -172
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/crm-setup-sample.md +0 -100
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/lead-enrichment-sample.md +0 -117
- package/assets/worker-kits/growthub-twenty-crm-v1/examples/pipeline-automation-sample.md +0 -132
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/README.md +0 -114
- package/assets/worker-kits/growthub-twenty-crm-v1/growthub-meta/kit-standard.md +0 -61
- package/assets/worker-kits/growthub-twenty-crm-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-twenty-crm-v1/kit.json +0 -123
- package/assets/worker-kits/growthub-twenty-crm-v1/output/README.md +0 -46
- package/assets/worker-kits/growthub-twenty-crm-v1/output-standards.md +0 -175
- package/assets/worker-kits/growthub-twenty-crm-v1/runtime-assumptions.md +0 -150
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/check-deps.sh +0 -56
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/clone-fork.sh +0 -77
- package/assets/worker-kits/growthub-twenty-crm-v1/setup/verify-env.mjs +0 -105
- package/assets/worker-kits/growthub-twenty-crm-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-twenty-crm-v1/skills.md +0 -401
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/api-query-plan.md +0 -179
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-playbook.md +0 -155
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/crm-setup-brief.md +0 -94
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/custom-object-design.md +0 -115
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/data-model-design.md +0 -112
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/enrichment-field-map.md +0 -100
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/import-mapping.md +0 -139
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/integration-handoff.md +0 -190
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/lead-enrichment-pipeline.md +0 -128
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/pipeline-automation-brief.md +0 -88
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/webhook-integration-spec.md +0 -129
- package/assets/worker-kits/growthub-twenty-crm-v1/templates/workspace-config-checklist.md +0 -129
- package/assets/worker-kits/growthub-twenty-crm-v1/validation-checklist.md +0 -115
- package/assets/worker-kits/growthub-twenty-crm-v1/workers/twenty-crm-operator/CLAUDE.md +0 -332
- package/assets/worker-kits/growthub-video-use-studio-v1/.env.example +0 -13
- package/assets/worker-kits/growthub-video-use-studio-v1/QUICKSTART.md +0 -47
- package/assets/worker-kits/growthub-video-use-studio-v1/SKILL.md +0 -89
- package/assets/worker-kits/growthub-video-use-studio-v1/brands/NEW-CLIENT.md +0 -3
- package/assets/worker-kits/growthub-video-use-studio-v1/brands/_template/brand-kit.md +0 -7
- package/assets/worker-kits/growthub-video-use-studio-v1/brands/growthub/brand-kit.md +0 -6
- package/assets/worker-kits/growthub-video-use-studio-v1/bundles/growthub-video-use-studio-v1.json +0 -54
- package/assets/worker-kits/growthub-video-use-studio-v1/docs/provider-adapter-layer.md +0 -15
- package/assets/worker-kits/growthub-video-use-studio-v1/docs/video-use-discovery-path.md +0 -13
- package/assets/worker-kits/growthub-video-use-studio-v1/docs/video-use-fork-integration.md +0 -35
- package/assets/worker-kits/growthub-video-use-studio-v1/examples/video-brief-sample.md +0 -11
- package/assets/worker-kits/growthub-video-use-studio-v1/growthub-meta/README.md +0 -3
- package/assets/worker-kits/growthub-video-use-studio-v1/growthub-meta/kit-standard.md +0 -6
- package/assets/worker-kits/growthub-video-use-studio-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-video-use-studio-v1/kit.json +0 -115
- package/assets/worker-kits/growthub-video-use-studio-v1/output/README.md +0 -9
- package/assets/worker-kits/growthub-video-use-studio-v1/output-standards.md +0 -19
- package/assets/worker-kits/growthub-video-use-studio-v1/runtime-assumptions.md +0 -9
- package/assets/worker-kits/growthub-video-use-studio-v1/setup/check-deps.sh +0 -21
- package/assets/worker-kits/growthub-video-use-studio-v1/setup/clone-fork.sh +0 -18
- package/assets/worker-kits/growthub-video-use-studio-v1/setup/install-skill.sh +0 -23
- package/assets/worker-kits/growthub-video-use-studio-v1/setup/verify-env.mjs +0 -23
- package/assets/worker-kits/growthub-video-use-studio-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-video-use-studio-v1/skills.md +0 -21
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/edit-decision-list.md +0 -17
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/edit-strategy.md +0 -11
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/qa-checklist.md +0 -21
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/render-plan.md +0 -40
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-video-use-studio-v1/templates/video-brief.md +0 -11
- package/assets/worker-kits/growthub-video-use-studio-v1/validation-checklist.md +0 -11
- package/assets/worker-kits/growthub-video-use-studio-v1/workers/video-use-studio-operator/CLAUDE.md +0 -93
- package/assets/worker-kits/growthub-zernio-social-v1/.env.example +0 -5
- package/assets/worker-kits/growthub-zernio-social-v1/QUICKSTART.md +0 -241
- package/assets/worker-kits/growthub-zernio-social-v1/SKILL.md +0 -90
- package/assets/worker-kits/growthub-zernio-social-v1/brands/NEW-CLIENT.md +0 -74
- package/assets/worker-kits/growthub-zernio-social-v1/brands/_template/brand-kit.md +0 -131
- package/assets/worker-kits/growthub-zernio-social-v1/brands/growthub/brand-kit.md +0 -141
- package/assets/worker-kits/growthub-zernio-social-v1/bundles/growthub-zernio-social-v1.json +0 -91
- package/assets/worker-kits/growthub-zernio-social-v1/docs/ai-caption-layer.md +0 -132
- package/assets/worker-kits/growthub-zernio-social-v1/docs/growthub-agentic-social-platform-ui-shell.md +0 -134
- package/assets/worker-kits/growthub-zernio-social-v1/docs/local-adapters.md +0 -123
- package/assets/worker-kits/growthub-zernio-social-v1/docs/platform-coverage.md +0 -112
- package/assets/worker-kits/growthub-zernio-social-v1/docs/posts-and-queues-layer.md +0 -208
- package/assets/worker-kits/growthub-zernio-social-v1/docs/zernio-api-integration.md +0 -265
- package/assets/worker-kits/growthub-zernio-social-v1/examples/analytics-brief-sample.md +0 -97
- package/assets/worker-kits/growthub-zernio-social-v1/examples/client-proposal-sample.md +0 -106
- package/assets/worker-kits/growthub-zernio-social-v1/examples/content-calendar-sample.md +0 -74
- package/assets/worker-kits/growthub-zernio-social-v1/examples/social-campaign-sample.md +0 -105
- package/assets/worker-kits/growthub-zernio-social-v1/growthub-meta/README.md +0 -143
- package/assets/worker-kits/growthub-zernio-social-v1/growthub-meta/kit-standard.md +0 -120
- package/assets/worker-kits/growthub-zernio-social-v1/helpers/README.md +0 -29
- package/assets/worker-kits/growthub-zernio-social-v1/kit.json +0 -151
- package/assets/worker-kits/growthub-zernio-social-v1/output/README.md +0 -63
- package/assets/worker-kits/growthub-zernio-social-v1/output-standards.md +0 -132
- package/assets/worker-kits/growthub-zernio-social-v1/runtime-assumptions.md +0 -170
- package/assets/worker-kits/growthub-zernio-social-v1/setup/check-deps.mjs +0 -117
- package/assets/worker-kits/growthub-zernio-social-v1/setup/check-deps.sh +0 -86
- package/assets/worker-kits/growthub-zernio-social-v1/setup/install-mcp.mjs +0 -177
- package/assets/worker-kits/growthub-zernio-social-v1/setup/setup.mjs +0 -247
- package/assets/worker-kits/growthub-zernio-social-v1/setup/verify-env.mjs +0 -138
- package/assets/worker-kits/growthub-zernio-social-v1/skills/README.md +0 -23
- package/assets/worker-kits/growthub-zernio-social-v1/skills.md +0 -332
- package/assets/worker-kits/growthub-zernio-social-v1/studio/.env.example +0 -3
- package/assets/worker-kits/growthub-zernio-social-v1/studio/dist/assets/index-DTmBMuXr.js +0 -78
- package/assets/worker-kits/growthub-zernio-social-v1/studio/dist/assets/index-gHr-nTMF.css +0 -1
- package/assets/worker-kits/growthub-zernio-social-v1/studio/dist/index.html +0 -14
- package/assets/worker-kits/growthub-zernio-social-v1/studio/index.html +0 -13
- package/assets/worker-kits/growthub-zernio-social-v1/studio/package-lock.json +0 -1677
- package/assets/worker-kits/growthub-zernio-social-v1/studio/package.json +0 -20
- package/assets/worker-kits/growthub-zernio-social-v1/studio/serve.mjs +0 -60
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/App.jsx +0 -130
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/api.js +0 -146
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/app.css +0 -558
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/lib/rules.js +0 -64
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/lib/templates.js +0 -207
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/main.jsx +0 -10
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Accounts.jsx +0 -57
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Agent.jsx +0 -167
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Analytics.jsx +0 -164
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/ApiKeys.jsx +0 -143
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Automations.jsx +0 -122
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/CommentRules.jsx +0 -592
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Compose.jsx +0 -185
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Dashboard.jsx +0 -87
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Inbox.jsx +0 -144
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Queues.jsx +0 -167
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Scheduled.jsx +0 -85
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Sequences.jsx +0 -160
- package/assets/worker-kits/growthub-zernio-social-v1/studio/src/views/Templates.jsx +0 -275
- package/assets/worker-kits/growthub-zernio-social-v1/studio/vite.config.js +0 -7
- package/assets/worker-kits/growthub-zernio-social-v1/templates/analytics-brief.md +0 -101
- package/assets/worker-kits/growthub-zernio-social-v1/templates/caption-copy-deck.md +0 -105
- package/assets/worker-kits/growthub-zernio-social-v1/templates/client-proposal.md +0 -98
- package/assets/worker-kits/growthub-zernio-social-v1/templates/content-calendar.md +0 -70
- package/assets/worker-kits/growthub-zernio-social-v1/templates/platform-publishing-plan.md +0 -86
- package/assets/worker-kits/growthub-zernio-social-v1/templates/project.md +0 -48
- package/assets/worker-kits/growthub-zernio-social-v1/templates/scheduling-manifest.md +0 -92
- package/assets/worker-kits/growthub-zernio-social-v1/templates/self-eval.md +0 -67
- package/assets/worker-kits/growthub-zernio-social-v1/templates/social-campaign-brief.md +0 -102
- package/assets/worker-kits/growthub-zernio-social-v1/validation-checklist.md +0 -85
- package/assets/worker-kits/growthub-zernio-social-v1/workers/zernio-social-operator/CLAUDE.md +0 -329
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from 'react';
|
|
2
|
-
import { api, PROFILE_ID } from '../api.js';
|
|
3
|
-
import { useApp } from '../App.jsx';
|
|
4
|
-
|
|
5
|
-
const PLT_ICON = { twitter:'𝕏', linkedin:'in', instagram:'📸', facebook:'f', tiktok:'🎵', youtube:'▶', bluesky:'🦋', threads:'@', reddit:'r/', pinterest:'P', telegram:'✈', whatsapp:'W' };
|
|
6
|
-
const CHAR_LIMIT = { twitter: 280, bluesky: 300, threads: 500, pinterest: 500, linkedin: 3000, instagram: 2200, tiktok: 2200, facebook: 63206, youtube: 5000, telegram: 4096, whatsapp: 1024 };
|
|
7
|
-
|
|
8
|
-
export default function Compose({ onNavigate }) {
|
|
9
|
-
const { accounts, showToast } = useApp();
|
|
10
|
-
const [content, setContent] = useState('');
|
|
11
|
-
const [selected, setSelected] = useState([]);
|
|
12
|
-
const [mode, setMode] = useState('time'); // 'time' | 'queue'
|
|
13
|
-
const [schedTime, setSchedTime] = useState('');
|
|
14
|
-
const [queues, setQueues] = useState([]);
|
|
15
|
-
const [queueId, setQueueId] = useState('');
|
|
16
|
-
const [mediaFile, setMediaFile] = useState(null);
|
|
17
|
-
const [mediaId, setMediaId] = useState('');
|
|
18
|
-
const [submitting, setSubmitting] = useState(false);
|
|
19
|
-
const [banner, setBanner] = useState(null);
|
|
20
|
-
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (!PROFILE_ID) return;
|
|
23
|
-
api.getQueues(PROFILE_ID)
|
|
24
|
-
.then(d => setQueues(d.queues || []))
|
|
25
|
-
.catch(() => {});
|
|
26
|
-
}, []);
|
|
27
|
-
|
|
28
|
-
const toggle = (a) => {
|
|
29
|
-
setSelected(s => s.find(x => x._id === a._id) ? s.filter(x => x._id !== a._id) : [...s, a]);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const charLimit = () => {
|
|
33
|
-
if (!selected.length) return null;
|
|
34
|
-
const mins = selected.map(a => CHAR_LIMIT[a.platform] || 9999);
|
|
35
|
-
return Math.min(...mins);
|
|
36
|
-
};
|
|
37
|
-
const limit = charLimit();
|
|
38
|
-
const over = limit && content.length > limit;
|
|
39
|
-
|
|
40
|
-
const uploadIfNeeded = async () => {
|
|
41
|
-
if (!mediaFile) return null;
|
|
42
|
-
const res = await api.uploadMedia(mediaFile);
|
|
43
|
-
return res.mediaId || res._id;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const submit = async () => {
|
|
47
|
-
if (!content.trim()) { showToast('Add a caption first', false); return; }
|
|
48
|
-
if (!selected.length) { showToast('Select at least one platform', false); return; }
|
|
49
|
-
if (mode === 'time' && !schedTime) { showToast('Pick a schedule time or switch to Queue mode', false); return; }
|
|
50
|
-
if (mode === 'queue' && !queueId) { showToast('Select a queue', false); return; }
|
|
51
|
-
|
|
52
|
-
setSubmitting(true);
|
|
53
|
-
setBanner(null);
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
let uploadedMediaId = mediaId;
|
|
57
|
-
if (mediaFile && !mediaId) {
|
|
58
|
-
uploadedMediaId = await uploadIfNeeded();
|
|
59
|
-
setMediaId(uploadedMediaId);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
const platforms = selected.map(a => ({ platform: a.platform, accountId: a._id || a.accountId }));
|
|
63
|
-
const ikey = `compose-${Date.now()}`;
|
|
64
|
-
const body = { profileId: PROFILE_ID, content, platforms };
|
|
65
|
-
|
|
66
|
-
if (mode === 'time') body.scheduledFor = new Date(schedTime).toISOString();
|
|
67
|
-
else body.queueId = queueId;
|
|
68
|
-
|
|
69
|
-
if (uploadedMediaId) body.media = [{ mediaId: uploadedMediaId }];
|
|
70
|
-
|
|
71
|
-
const res = await api.createPost(body, ikey);
|
|
72
|
-
setBanner({ ok: true, msg: `✓ Post scheduled! ID: ${res.id || res._id || 'created'}` });
|
|
73
|
-
showToast('Post scheduled ✓');
|
|
74
|
-
setContent('');
|
|
75
|
-
setSelected([]);
|
|
76
|
-
setSchedTime('');
|
|
77
|
-
setMediaFile(null);
|
|
78
|
-
setMediaId('');
|
|
79
|
-
} catch (e) {
|
|
80
|
-
setBanner({ ok: false, msg: `✗ ${e.message}` });
|
|
81
|
-
showToast(e.message, false);
|
|
82
|
-
} finally {
|
|
83
|
-
setSubmitting(false);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
return (
|
|
88
|
-
<div style={{ maxWidth: 700 }}>
|
|
89
|
-
{banner && (
|
|
90
|
-
<div className={`banner ${banner.ok ? 'banner-ok' : 'banner-err'}`}>{banner.msg}</div>
|
|
91
|
-
)}
|
|
92
|
-
|
|
93
|
-
<div className="card mb16">
|
|
94
|
-
<div className="field">
|
|
95
|
-
<label>Caption</label>
|
|
96
|
-
<textarea
|
|
97
|
-
className="textarea"
|
|
98
|
-
placeholder="Write your post…"
|
|
99
|
-
value={content}
|
|
100
|
-
onChange={e => setContent(e.target.value)}
|
|
101
|
-
/>
|
|
102
|
-
{limit && (
|
|
103
|
-
<div className={`char-count ${over ? 'char-over' : ''}`}>
|
|
104
|
-
{content.length} / {limit}{over ? ' — over limit for selected platforms' : ''}
|
|
105
|
-
</div>
|
|
106
|
-
)}
|
|
107
|
-
</div>
|
|
108
|
-
</div>
|
|
109
|
-
|
|
110
|
-
<div className="card mb16">
|
|
111
|
-
<div className="field" style={{ marginBottom: 0 }}>
|
|
112
|
-
<label>Platforms</label>
|
|
113
|
-
{!accounts.length ? (
|
|
114
|
-
<div style={{ color: 'var(--muted)', fontSize: 13 }}>No accounts connected.</div>
|
|
115
|
-
) : (
|
|
116
|
-
<div className="plat-row">
|
|
117
|
-
{accounts.map(a => (
|
|
118
|
-
<span
|
|
119
|
-
key={a._id}
|
|
120
|
-
className={`plat-toggle ${selected.find(x => x._id === a._id) ? 'selected' : ''}`}
|
|
121
|
-
onClick={() => toggle(a)}
|
|
122
|
-
>
|
|
123
|
-
{PLT_ICON[a.platform] || a.platform} {a.displayName || a.username}
|
|
124
|
-
</span>
|
|
125
|
-
))}
|
|
126
|
-
</div>
|
|
127
|
-
)}
|
|
128
|
-
</div>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
<div className="card mb16">
|
|
132
|
-
<div className="field">
|
|
133
|
-
<label>Scheduling Mode</label>
|
|
134
|
-
<div className="row mb8">
|
|
135
|
-
<button className={`btn btn-sm ${mode === 'time' ? 'btn-primary' : 'btn-ghost'}`} onClick={() => setMode('time')}>Specific Time</button>
|
|
136
|
-
<button className={`btn btn-sm ${mode === 'queue' ? 'btn-primary' : 'btn-ghost'}`} onClick={() => setMode('queue')}>Add to Queue</button>
|
|
137
|
-
</div>
|
|
138
|
-
</div>
|
|
139
|
-
|
|
140
|
-
{mode === 'time' ? (
|
|
141
|
-
<div className="field" style={{ marginBottom: 0 }}>
|
|
142
|
-
<label>Schedule At</label>
|
|
143
|
-
<input className="input" type="datetime-local" value={schedTime} onChange={e => setSchedTime(e.target.value)} />
|
|
144
|
-
</div>
|
|
145
|
-
) : (
|
|
146
|
-
<div className="field" style={{ marginBottom: 0 }}>
|
|
147
|
-
<label>Queue</label>
|
|
148
|
-
{queues.length ? (
|
|
149
|
-
<select className="select" value={queueId} onChange={e => setQueueId(e.target.value)}>
|
|
150
|
-
<option value="">— select queue —</option>
|
|
151
|
-
{queues.map(q => (
|
|
152
|
-
<option key={q._id} value={q._id}>{q.name}</option>
|
|
153
|
-
))}
|
|
154
|
-
</select>
|
|
155
|
-
) : (
|
|
156
|
-
<div style={{ color: 'var(--muted)', fontSize: 13 }}>No queues defined. <span style={{ color: 'var(--accentl)', cursor: 'pointer' }} onClick={() => onNavigate('queues')}>Create one →</span></div>
|
|
157
|
-
)}
|
|
158
|
-
</div>
|
|
159
|
-
)}
|
|
160
|
-
</div>
|
|
161
|
-
|
|
162
|
-
<div className="card mb16">
|
|
163
|
-
<div className="field" style={{ marginBottom: 0 }}>
|
|
164
|
-
<label>Media (optional)</label>
|
|
165
|
-
<input
|
|
166
|
-
className="input"
|
|
167
|
-
type="file"
|
|
168
|
-
accept="image/*,video/*"
|
|
169
|
-
style={{ cursor: 'pointer', padding: '7px 12px' }}
|
|
170
|
-
onChange={e => { setMediaFile(e.target.files[0] || null); setMediaId(''); }}
|
|
171
|
-
/>
|
|
172
|
-
{mediaFile && <div style={{ fontSize: 12, color: 'var(--dim)', marginTop: 5 }}>{mediaFile.name} — will upload on submit</div>}
|
|
173
|
-
{mediaId && <div style={{ fontSize: 12, color: 'var(--greenl)', marginTop: 5 }}>Uploaded: {mediaId}</div>}
|
|
174
|
-
</div>
|
|
175
|
-
</div>
|
|
176
|
-
|
|
177
|
-
<div className="row-end">
|
|
178
|
-
<button className="btn btn-secondary" onClick={() => { setContent(''); setSelected([]); setSchedTime(''); setMediaFile(null); setBanner(null); }}>Clear</button>
|
|
179
|
-
<button className="btn btn-primary" onClick={submit} disabled={submitting || over}>
|
|
180
|
-
{submitting ? <><span className="spinner" style={{ marginRight: 7 }} />Scheduling…</> : 'Schedule Post'}
|
|
181
|
-
</button>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
);
|
|
185
|
-
}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
import { api, PROFILE_ID } from '../api.js';
|
|
3
|
-
import { useApp } from '../App.jsx';
|
|
4
|
-
|
|
5
|
-
const PLT_ICON = { twitter:'𝕏', linkedin:'in', instagram:'📸', facebook:'f', tiktok:'🎵', youtube:'▶', bluesky:'🦋', threads:'@', reddit:'r/', pinterest:'P', telegram:'✈', whatsapp:'W' };
|
|
6
|
-
const PLT_BG = { twitter:'#000', linkedin:'#0077b5', instagram:'#e1306c', facebook:'#1877f2', tiktok:'#010101', youtube:'#ff0000', bluesky:'#0085ff', threads:'#101010', reddit:'#ff4500', pinterest:'#e60023', telegram:'#0088cc', whatsapp:'#25d366' };
|
|
7
|
-
|
|
8
|
-
export default function Dashboard({ onNavigate }) {
|
|
9
|
-
const { accounts, profile, showToast } = useApp();
|
|
10
|
-
const [scheduled, setScheduled] = useState(null);
|
|
11
|
-
const [queues, setQueues] = useState(null);
|
|
12
|
-
const [loading, setLoading] = useState(true);
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (!PROFILE_ID) { setLoading(false); return; }
|
|
16
|
-
Promise.all([
|
|
17
|
-
api.getPosts(PROFILE_ID, 'scheduled'),
|
|
18
|
-
api.getQueues(PROFILE_ID),
|
|
19
|
-
])
|
|
20
|
-
.then(([posts, qs]) => {
|
|
21
|
-
setScheduled((posts.posts || []).length);
|
|
22
|
-
setQueues((qs.queues || []).length);
|
|
23
|
-
})
|
|
24
|
-
.catch(e => showToast(e.message, false))
|
|
25
|
-
.finally(() => setLoading(false));
|
|
26
|
-
}, []);
|
|
27
|
-
|
|
28
|
-
return (
|
|
29
|
-
<div>
|
|
30
|
-
<div className="stats-grid">
|
|
31
|
-
<div className="stat-card">
|
|
32
|
-
<div className="stat-label">Profile</div>
|
|
33
|
-
<div className="stat-value" style={{ fontSize: 18, paddingTop: 4 }}>{profile?.name || '—'}</div>
|
|
34
|
-
<div className="stat-sub">{PROFILE_ID || 'not set'}</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div className="stat-card">
|
|
37
|
-
<div className="stat-label">Accounts</div>
|
|
38
|
-
<div className="stat-value">{accounts.length}</div>
|
|
39
|
-
<div className="stat-sub">connected platforms</div>
|
|
40
|
-
</div>
|
|
41
|
-
<div className="stat-card">
|
|
42
|
-
<div className="stat-label">Scheduled</div>
|
|
43
|
-
<div className="stat-value">{loading ? '…' : scheduled ?? '—'}</div>
|
|
44
|
-
<div className="stat-sub">pending posts</div>
|
|
45
|
-
</div>
|
|
46
|
-
<div className="stat-card">
|
|
47
|
-
<div className="stat-label">Queues</div>
|
|
48
|
-
<div className="stat-value">{loading ? '…' : queues ?? '—'}</div>
|
|
49
|
-
<div className="stat-sub">recurring slots</div>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<div className="row mb16" style={{ justifyContent: 'space-between', alignItems: 'center' }}>
|
|
54
|
-
<div className="section-title" style={{ marginBottom: 0 }}>Connected Platforms</div>
|
|
55
|
-
<button className="btn btn-ghost btn-sm" onClick={() => onNavigate('accounts')}>View all →</button>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
{!accounts.length && !loading && (
|
|
59
|
-
<div className="empty"><div className="empty-icon">🔗</div><div className="empty-msg">No accounts connected on this profile</div></div>
|
|
60
|
-
)}
|
|
61
|
-
|
|
62
|
-
{accounts.map(a => (
|
|
63
|
-
<div key={a._id || a.accountId} className="account-card">
|
|
64
|
-
<div className="platform-icon" style={{ background: PLT_BG[a.platform] || '#3f3f46', color: '#fff' }}>
|
|
65
|
-
{PLT_ICON[a.platform] || a.platform?.[0]?.toUpperCase()}
|
|
66
|
-
</div>
|
|
67
|
-
<div className="acc-info">
|
|
68
|
-
<div className="acc-name">{a.displayName || a.username}</div>
|
|
69
|
-
<div className="acc-handle">{a.platform} · @{a.username}</div>
|
|
70
|
-
</div>
|
|
71
|
-
<span className="badge badge-green">Active</span>
|
|
72
|
-
</div>
|
|
73
|
-
))}
|
|
74
|
-
|
|
75
|
-
<hr className="divider" />
|
|
76
|
-
|
|
77
|
-
<div className="section-title mb8">Quick Actions</div>
|
|
78
|
-
<div className="row">
|
|
79
|
-
<button className="btn btn-primary" onClick={() => onNavigate('compose')}>✏️ New Post</button>
|
|
80
|
-
<button className="btn btn-secondary" onClick={() => onNavigate('scheduled')}>📅 View Scheduled</button>
|
|
81
|
-
<button className="btn btn-secondary" onClick={() => onNavigate('queues')}>🔄 Manage Queues</button>
|
|
82
|
-
<button className="btn btn-secondary" onClick={() => onNavigate('inbox')}>💬 Inbox</button>
|
|
83
|
-
<button className="btn btn-secondary" onClick={() => onNavigate('analytics')}>📊 Analytics</button>
|
|
84
|
-
</div>
|
|
85
|
-
</div>
|
|
86
|
-
);
|
|
87
|
-
}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
2
|
-
import { api, PROFILE_ID } from '../api.js';
|
|
3
|
-
import { useApp } from '../App.jsx';
|
|
4
|
-
|
|
5
|
-
export default function Inbox() {
|
|
6
|
-
const { showToast } = useApp();
|
|
7
|
-
const [conversations, setConversations] = useState([]);
|
|
8
|
-
const [loading, setLoading] = useState(true);
|
|
9
|
-
const [selected, setSelected] = useState(null);
|
|
10
|
-
const [thread, setThread] = useState(null);
|
|
11
|
-
const [threadLoading, setThreadLoading] = useState(false);
|
|
12
|
-
const [reply, setReply] = useState('');
|
|
13
|
-
const [sending, setSending] = useState(false);
|
|
14
|
-
|
|
15
|
-
const loadInbox = useCallback(() => {
|
|
16
|
-
if (!PROFILE_ID) { setLoading(false); return; }
|
|
17
|
-
api.getInbox(PROFILE_ID)
|
|
18
|
-
.then(d => setConversations(d.conversations || d.inbox || []))
|
|
19
|
-
.catch(e => showToast(e.message, false))
|
|
20
|
-
.finally(() => setLoading(false));
|
|
21
|
-
}, []);
|
|
22
|
-
|
|
23
|
-
useEffect(loadInbox, [loadInbox]);
|
|
24
|
-
|
|
25
|
-
const selectConv = async (conv) => {
|
|
26
|
-
setSelected(conv);
|
|
27
|
-
setThread(null);
|
|
28
|
-
setReply('');
|
|
29
|
-
setThreadLoading(true);
|
|
30
|
-
try {
|
|
31
|
-
const data = await api.getConversation(conv._id || conv.id);
|
|
32
|
-
setThread(data);
|
|
33
|
-
} catch (e) {
|
|
34
|
-
showToast(e.message, false);
|
|
35
|
-
} finally {
|
|
36
|
-
setThreadLoading(false);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
const sendReply = async () => {
|
|
41
|
-
if (!reply.trim()) return;
|
|
42
|
-
if (!selected) return;
|
|
43
|
-
setSending(true);
|
|
44
|
-
try {
|
|
45
|
-
await api.replyConversation(selected._id || selected.id, { content: reply });
|
|
46
|
-
showToast('Reply sent ✓');
|
|
47
|
-
setReply('');
|
|
48
|
-
selectConv(selected);
|
|
49
|
-
} catch (e) {
|
|
50
|
-
showToast(e.message, false);
|
|
51
|
-
} finally {
|
|
52
|
-
setSending(false);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
if (loading) return <div className="loading-row"><span className="spinner" />Loading inbox…</div>;
|
|
57
|
-
|
|
58
|
-
if (!conversations.length) return (
|
|
59
|
-
<div className="empty">
|
|
60
|
-
<div className="empty-icon">💬</div>
|
|
61
|
-
<div className="empty-msg">Inbox is empty. DMs, comments, and reviews will appear here.</div>
|
|
62
|
-
</div>
|
|
63
|
-
);
|
|
64
|
-
|
|
65
|
-
const msgs = thread?.messages || thread?.replies || [];
|
|
66
|
-
|
|
67
|
-
return (
|
|
68
|
-
<div className="inbox-layout">
|
|
69
|
-
<div className="inbox-list">
|
|
70
|
-
{conversations.map(c => {
|
|
71
|
-
const id = c._id || c.id;
|
|
72
|
-
const isSelected = selected && (selected._id || selected.id) === id;
|
|
73
|
-
return (
|
|
74
|
-
<div
|
|
75
|
-
key={id}
|
|
76
|
-
className={`inbox-item ${isSelected ? 'selected' : ''}`}
|
|
77
|
-
onClick={() => selectConv(c)}
|
|
78
|
-
>
|
|
79
|
-
<div className="inbox-platform">{c.platform} · {c.type || 'message'}</div>
|
|
80
|
-
<div className="acc-name" style={{ marginBottom: 3 }}>{c.from || c.author || 'Unknown'}</div>
|
|
81
|
-
<div className="inbox-preview">{c.preview || c.lastMessage || '…'}</div>
|
|
82
|
-
{c.updatedAt && (
|
|
83
|
-
<div style={{ fontSize: 11, color: 'var(--muted)', marginTop: 4 }}>
|
|
84
|
-
{new Date(c.updatedAt).toLocaleDateString()}
|
|
85
|
-
</div>
|
|
86
|
-
)}
|
|
87
|
-
</div>
|
|
88
|
-
);
|
|
89
|
-
})}
|
|
90
|
-
</div>
|
|
91
|
-
|
|
92
|
-
<div className="inbox-thread">
|
|
93
|
-
{!selected && (
|
|
94
|
-
<div className="empty" style={{ margin: 'auto' }}>
|
|
95
|
-
<div className="empty-icon">💬</div>
|
|
96
|
-
<div className="empty-msg">Select a conversation</div>
|
|
97
|
-
</div>
|
|
98
|
-
)}
|
|
99
|
-
|
|
100
|
-
{selected && (
|
|
101
|
-
<>
|
|
102
|
-
<div style={{ padding: '14px 18px', borderBottom: '1px solid var(--border)', background: 'var(--surface)' }}>
|
|
103
|
-
<div style={{ fontWeight: 600, fontSize: 13 }}>{selected.from || selected.author}</div>
|
|
104
|
-
<div style={{ fontSize: 11, color: 'var(--muted)' }}>{selected.platform} · {selected._id || selected.id}</div>
|
|
105
|
-
</div>
|
|
106
|
-
|
|
107
|
-
<div className="thread-msgs">
|
|
108
|
-
{threadLoading && <div className="loading-row"><span className="spinner" />Loading thread…</div>}
|
|
109
|
-
{!threadLoading && !msgs.length && <div style={{ color: 'var(--muted)', fontSize: 13 }}>No messages in thread yet.</div>}
|
|
110
|
-
{msgs.map((m, i) => {
|
|
111
|
-
const isOut = m.direction === 'outbound' || m.isOwn;
|
|
112
|
-
return (
|
|
113
|
-
<div key={i}>
|
|
114
|
-
<div className={`msg-meta ${isOut ? '' : ''}`} style={{ textAlign: isOut ? 'right' : 'left' }}>
|
|
115
|
-
{m.author || (isOut ? 'You' : selected.from)} · {m.createdAt ? new Date(m.createdAt).toLocaleTimeString() : ''}
|
|
116
|
-
</div>
|
|
117
|
-
<div className={`msg ${isOut ? 'msg-out' : 'msg-in'}`}>
|
|
118
|
-
{m.content || m.text || m.body}
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
);
|
|
122
|
-
})}
|
|
123
|
-
</div>
|
|
124
|
-
|
|
125
|
-
<div className="thread-reply">
|
|
126
|
-
<textarea
|
|
127
|
-
placeholder="Type a reply…"
|
|
128
|
-
value={reply}
|
|
129
|
-
onChange={e => setReply(e.target.value)}
|
|
130
|
-
onKeyDown={e => { if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) sendReply(); }}
|
|
131
|
-
/>
|
|
132
|
-
<div className="col" style={{ gap: 6, justifyContent: 'flex-end' }}>
|
|
133
|
-
<button className="btn btn-primary btn-sm" onClick={sendReply} disabled={sending || !reply.trim()}>
|
|
134
|
-
{sending ? <span className="spinner" /> : 'Send'}
|
|
135
|
-
</button>
|
|
136
|
-
<span style={{ fontSize: 10, color: 'var(--muted)', textAlign: 'center' }}>⌘↵</span>
|
|
137
|
-
</div>
|
|
138
|
-
</div>
|
|
139
|
-
</>
|
|
140
|
-
)}
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
);
|
|
144
|
-
}
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
2
|
-
import { api, PROFILE_ID } from '../api.js';
|
|
3
|
-
import { useApp } from '../App.jsx';
|
|
4
|
-
|
|
5
|
-
const DAYS = ['mon','tue','wed','thu','fri','sat','sun'];
|
|
6
|
-
const ALL_PLATS = ['twitter','linkedin','instagram','facebook','tiktok','youtube','bluesky','threads','reddit','pinterest','telegram','whatsapp'];
|
|
7
|
-
|
|
8
|
-
const emptySlot = () => ({ day: 'mon', time: '09:00', platforms: [] });
|
|
9
|
-
|
|
10
|
-
export default function Queues() {
|
|
11
|
-
const { accounts, showToast } = useApp();
|
|
12
|
-
const [queues, setQueues] = useState([]);
|
|
13
|
-
const [loading, setLoading] = useState(true);
|
|
14
|
-
const [creating, setCreating] = useState(false);
|
|
15
|
-
const [deleting, setDeleting] = useState(null);
|
|
16
|
-
const [showForm, setShowForm] = useState(false);
|
|
17
|
-
|
|
18
|
-
const [name, setName] = useState('');
|
|
19
|
-
const [timezone, setTimezone] = useState('America/New_York');
|
|
20
|
-
const [slots, setSlots] = useState([emptySlot()]);
|
|
21
|
-
|
|
22
|
-
const availPlats = accounts.length
|
|
23
|
-
? [...new Set(accounts.map(a => a.platform))]
|
|
24
|
-
: ALL_PLATS;
|
|
25
|
-
|
|
26
|
-
const load = useCallback(() => {
|
|
27
|
-
if (!PROFILE_ID) { setLoading(false); return; }
|
|
28
|
-
api.getQueues(PROFILE_ID)
|
|
29
|
-
.then(d => setQueues(d.queues || []))
|
|
30
|
-
.catch(e => showToast(e.message, false))
|
|
31
|
-
.finally(() => setLoading(false));
|
|
32
|
-
}, []);
|
|
33
|
-
|
|
34
|
-
useEffect(load, [load]);
|
|
35
|
-
|
|
36
|
-
const addSlot = () => setSlots(s => [...s, emptySlot()]);
|
|
37
|
-
const removeSlot = (i) => setSlots(s => s.filter((_, j) => j !== i));
|
|
38
|
-
const updateSlot = (i, key, val) => setSlots(s => s.map((sl, j) => j !== i ? sl : { ...sl, [key]: val }));
|
|
39
|
-
const toggleSlotPlat = (i, p) => {
|
|
40
|
-
const sl = slots[i];
|
|
41
|
-
const plats = sl.platforms.includes(p) ? sl.platforms.filter(x => x !== p) : [...sl.platforms, p];
|
|
42
|
-
updateSlot(i, 'platforms', plats);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const create = async () => {
|
|
46
|
-
if (!name.trim()) { showToast('Enter a queue name', false); return; }
|
|
47
|
-
const validSlots = slots.filter(s => s.platforms.length);
|
|
48
|
-
if (!validSlots.length) { showToast('Each slot needs at least one platform', false); return; }
|
|
49
|
-
setCreating(true);
|
|
50
|
-
try {
|
|
51
|
-
await api.createQueue({ profileId: PROFILE_ID, name, timezone, slots: validSlots });
|
|
52
|
-
showToast('Queue created ✓');
|
|
53
|
-
setName(''); setSlots([emptySlot()]); setShowForm(false);
|
|
54
|
-
load();
|
|
55
|
-
} catch (e) {
|
|
56
|
-
showToast(e.message, false);
|
|
57
|
-
} finally {
|
|
58
|
-
setCreating(false);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const deleteQueue = async (id) => {
|
|
63
|
-
if (!confirm('Delete this queue? Already-scheduled posts remain.')) return;
|
|
64
|
-
setDeleting(id);
|
|
65
|
-
try {
|
|
66
|
-
await api.deleteQueue(id);
|
|
67
|
-
showToast('Queue deleted');
|
|
68
|
-
load();
|
|
69
|
-
} catch (e) {
|
|
70
|
-
showToast(e.message, false);
|
|
71
|
-
} finally {
|
|
72
|
-
setDeleting(null);
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
if (loading) return <div className="loading-row"><span className="spinner" />Loading queues…</div>;
|
|
77
|
-
|
|
78
|
-
return (
|
|
79
|
-
<div>
|
|
80
|
-
<div className="row mb16" style={{ justifyContent: 'space-between' }}>
|
|
81
|
-
<div className="section-title" style={{ marginBottom: 0 }}>{queues.length} Queue{queues.length !== 1 ? 's' : ''}</div>
|
|
82
|
-
<button className="btn btn-primary btn-sm" onClick={() => setShowForm(f => !f)}>
|
|
83
|
-
{showForm ? '✕ Cancel' : '+ New Queue'}
|
|
84
|
-
</button>
|
|
85
|
-
</div>
|
|
86
|
-
|
|
87
|
-
{showForm && (
|
|
88
|
-
<div className="card mb16">
|
|
89
|
-
<div className="section-title mb16">New Recurring Queue</div>
|
|
90
|
-
<div className="field">
|
|
91
|
-
<label>Queue Name</label>
|
|
92
|
-
<input className="input" placeholder="e.g. weekly-evergreen" value={name} onChange={e => setName(e.target.value)} />
|
|
93
|
-
</div>
|
|
94
|
-
<div className="field">
|
|
95
|
-
<label>Timezone</label>
|
|
96
|
-
<input className="input" value={timezone} onChange={e => setTimezone(e.target.value)} />
|
|
97
|
-
</div>
|
|
98
|
-
|
|
99
|
-
<div className="field">
|
|
100
|
-
<label>Time Slots</label>
|
|
101
|
-
{slots.map((sl, i) => (
|
|
102
|
-
<div key={i} style={{ background: '#09090b', border: '1px solid var(--border)', borderRadius: 8, padding: 12, marginBottom: 8 }}>
|
|
103
|
-
<div className="row mb8">
|
|
104
|
-
<select className="select" style={{ width: 90 }} value={sl.day} onChange={e => updateSlot(i, 'day', e.target.value)}>
|
|
105
|
-
{DAYS.map(d => <option key={d}>{d}</option>)}
|
|
106
|
-
</select>
|
|
107
|
-
<input className="input" type="time" style={{ width: 110 }} value={sl.time} onChange={e => updateSlot(i, 'time', e.target.value)} />
|
|
108
|
-
<button className="btn btn-danger btn-xs" style={{ marginLeft: 'auto' }} onClick={() => removeSlot(i)} disabled={slots.length === 1}>✕</button>
|
|
109
|
-
</div>
|
|
110
|
-
<div style={{ fontSize: 11, color: 'var(--muted)', marginBottom: 5 }}>Platforms</div>
|
|
111
|
-
<div className="plat-row">
|
|
112
|
-
{availPlats.map(p => (
|
|
113
|
-
<span key={p} className={`plat-toggle ${sl.platforms.includes(p) ? 'selected' : ''}`} onClick={() => toggleSlotPlat(i, p)}>{p}</span>
|
|
114
|
-
))}
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
))}
|
|
118
|
-
<button className="btn btn-ghost btn-sm mt8" onClick={addSlot}>+ Add Slot</button>
|
|
119
|
-
</div>
|
|
120
|
-
|
|
121
|
-
<div className="row-end">
|
|
122
|
-
<button className="btn btn-primary" onClick={create} disabled={creating}>
|
|
123
|
-
{creating ? <><span className="spinner" style={{ marginRight: 7 }} />Creating…</> : 'Create Queue'}
|
|
124
|
-
</button>
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
)}
|
|
128
|
-
|
|
129
|
-
{!queues.length && !showForm && (
|
|
130
|
-
<div className="empty">
|
|
131
|
-
<div className="empty-icon">🔄</div>
|
|
132
|
-
<div className="empty-msg">No queues yet. Create one to auto-schedule posts into recurring time slots.</div>
|
|
133
|
-
</div>
|
|
134
|
-
)}
|
|
135
|
-
|
|
136
|
-
{queues.map(q => (
|
|
137
|
-
<div key={q._id} className="card mb16">
|
|
138
|
-
<div className="row mb8" style={{ justifyContent: 'space-between' }}>
|
|
139
|
-
<div>
|
|
140
|
-
<span style={{ fontWeight: 600 }}>{q.name}</span>
|
|
141
|
-
<span style={{ fontSize: 11, color: 'var(--muted)', marginLeft: 10 }}>{q.timezone}</span>
|
|
142
|
-
</div>
|
|
143
|
-
<button className="btn btn-danger btn-sm" onClick={() => deleteQueue(q._id)} disabled={deleting === q._id}>
|
|
144
|
-
{deleting === q._id ? '…' : 'Delete'}
|
|
145
|
-
</button>
|
|
146
|
-
</div>
|
|
147
|
-
<div className="table-wrap">
|
|
148
|
-
<table>
|
|
149
|
-
<thead>
|
|
150
|
-
<tr><th>Day</th><th>Time</th><th>Platforms</th></tr>
|
|
151
|
-
</thead>
|
|
152
|
-
<tbody>
|
|
153
|
-
{(q.slots || []).map((sl, i) => (
|
|
154
|
-
<tr key={i}>
|
|
155
|
-
<td style={{ textTransform: 'capitalize' }}>{sl.day}</td>
|
|
156
|
-
<td>{sl.time}</td>
|
|
157
|
-
<td>{(sl.platforms || []).join(', ')}</td>
|
|
158
|
-
</tr>
|
|
159
|
-
))}
|
|
160
|
-
</tbody>
|
|
161
|
-
</table>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
))}
|
|
165
|
-
</div>
|
|
166
|
-
);
|
|
167
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useCallback } from 'react';
|
|
2
|
-
import { api, PROFILE_ID } from '../api.js';
|
|
3
|
-
import { useApp } from '../App.jsx';
|
|
4
|
-
|
|
5
|
-
export default function Scheduled() {
|
|
6
|
-
const { showToast } = useApp();
|
|
7
|
-
const [posts, setPosts] = useState([]);
|
|
8
|
-
const [loading, setLoading] = useState(true);
|
|
9
|
-
const [deleting, setDeleting] = useState(null);
|
|
10
|
-
|
|
11
|
-
const load = useCallback(() => {
|
|
12
|
-
if (!PROFILE_ID) { setLoading(false); return; }
|
|
13
|
-
setLoading(true);
|
|
14
|
-
api.getPosts(PROFILE_ID, 'scheduled')
|
|
15
|
-
.then(d => setPosts(d.posts || []))
|
|
16
|
-
.catch(e => showToast(e.message, false))
|
|
17
|
-
.finally(() => setLoading(false));
|
|
18
|
-
}, []);
|
|
19
|
-
|
|
20
|
-
useEffect(load, [load]);
|
|
21
|
-
|
|
22
|
-
const deletePost = async (id) => {
|
|
23
|
-
if (!confirm('Unschedule this post?')) return;
|
|
24
|
-
setDeleting(id);
|
|
25
|
-
try {
|
|
26
|
-
await api.deletePost(id);
|
|
27
|
-
showToast('Post unscheduled');
|
|
28
|
-
load();
|
|
29
|
-
} catch (e) {
|
|
30
|
-
showToast(e.message, false);
|
|
31
|
-
} finally {
|
|
32
|
-
setDeleting(null);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
if (loading) return <div className="loading-row"><span className="spinner" />Loading scheduled posts…</div>;
|
|
37
|
-
|
|
38
|
-
if (!posts.length) return (
|
|
39
|
-
<div className="empty">
|
|
40
|
-
<div className="empty-icon">📅</div>
|
|
41
|
-
<div className="empty-msg">No scheduled posts. Use Compose to schedule your first post.</div>
|
|
42
|
-
</div>
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
return (
|
|
46
|
-
<div>
|
|
47
|
-
<div className="row mb16" style={{ justifyContent: 'space-between' }}>
|
|
48
|
-
<div className="section-title" style={{ marginBottom: 0 }}>{posts.length} Scheduled Post{posts.length !== 1 ? 's' : ''}</div>
|
|
49
|
-
<button className="btn btn-ghost btn-sm" onClick={load}>↻ Refresh</button>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
{posts.map(p => (
|
|
53
|
-
<div key={p._id || p.id} className="post-card">
|
|
54
|
-
<div className="post-meta">
|
|
55
|
-
{(p.platforms || []).map(pl => (
|
|
56
|
-
<span key={pl.platform} className="badge badge-neutral" style={{ marginRight: 2 }}>{pl.platform}</span>
|
|
57
|
-
))}
|
|
58
|
-
<span style={{ fontSize: 12, color: 'var(--muted)', marginLeft: 4 }}>
|
|
59
|
-
{p.scheduledFor ? new Date(p.scheduledFor).toLocaleString() : 'Queued'}
|
|
60
|
-
</span>
|
|
61
|
-
<span className="badge badge-blue" style={{ marginLeft: 'auto' }}>Scheduled</span>
|
|
62
|
-
</div>
|
|
63
|
-
<div className="post-content">{p.content}</div>
|
|
64
|
-
{p.media?.length > 0 && (
|
|
65
|
-
<div style={{ fontSize: 11, color: 'var(--muted)', marginTop: 6 }}>
|
|
66
|
-
📎 {p.media.length} media file{p.media.length > 1 ? 's' : ''}
|
|
67
|
-
</div>
|
|
68
|
-
)}
|
|
69
|
-
<div className="post-actions">
|
|
70
|
-
<span style={{ fontSize: 11, color: 'var(--muted)', alignSelf: 'center', fontFamily: 'monospace' }}>
|
|
71
|
-
{p._id || p.id}
|
|
72
|
-
</span>
|
|
73
|
-
<button
|
|
74
|
-
className="btn btn-danger btn-xs"
|
|
75
|
-
onClick={() => deletePost(p._id || p.id)}
|
|
76
|
-
disabled={deleting === (p._id || p.id)}
|
|
77
|
-
>
|
|
78
|
-
{deleting === (p._id || p.id) ? '…' : 'Unschedule'}
|
|
79
|
-
</button>
|
|
80
|
-
</div>
|
|
81
|
-
</div>
|
|
82
|
-
))}
|
|
83
|
-
</div>
|
|
84
|
-
);
|
|
85
|
-
}
|