From 3342f7a344b76769a78a031434180a012c4ba4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=80=A7=E9=A9=8A?= Date: Fri, 26 Jun 2026 20:09:36 +0800 Subject: [PATCH] fix floder --- .DS_Store | Bin 0 -> 8196 bytes backend/.DS_Store | Bin 0 -> 8196 bytes README.md => backend/README.md | 0 {cmd => backend/cmd}/tool/main.go | 0 {cmd => backend/cmd}/worker/main.go | 0 {docs => backend/docs}/job-system-plan.md | 0 {docs => backend/docs}/scan-placement-plan.md | 0 {etc => backend/etc}/gateway.dev.example.yaml | 0 {etc => backend/etc}/gateway.prod.yaml | 0 {etc => backend/etc}/gateway.worker.yaml | 0 {etc => backend/etc}/gateway.yaml | 0 gateway.go => backend/gateway.go | 0 {generate => backend/generate}/api/ai.api | 0 {generate => backend/generate}/api/auth.api | 0 {generate => backend/generate}/api/brand.api | 0 {generate => backend/generate}/api/common.api | 0 .../generate}/api/copy_mission.api | 0 {generate => backend/generate}/api/gateway.api | 0 {generate => backend/generate}/api/job.api | 0 {generate => backend/generate}/api/member.api | 0 {generate => backend/generate}/api/normal.api | 0 .../generate}/api/permission.api | 0 {generate => backend/generate}/api/persona.api | 0 .../generate}/api/placement_topic.api | 0 {generate => backend/generate}/api/setting.api | 0 .../generate}/api/threads_account.api | 0 .../generate}/api/worker_internal.api | 0 .../generate}/goctl/api/handler.tpl | 0 go.mod => backend/go.mod | 0 go.sum => backend/go.sum | 0 .../internal}/bootstrap/admin.go | 0 .../internal}/bootstrap/admin_test.go | 0 {internal => backend/internal}/bootstrap/init.go | 0 {internal => backend/internal}/config/config.go | 0 .../internal}/handler/ai/chat_handler.go | 0 .../internal}/handler/ai/chat_stream_handler.go | 0 .../handler/ai/islander_chat_stream_handler.go | 0 .../ai/list_ai_provider_models_handler.go | 0 .../handler/ai/list_ai_providers_handler.go | 0 .../internal}/handler/auth/login_handler.go | 0 .../internal}/handler/auth/logout_handler.go | 0 .../internal}/handler/auth/refresh_handler.go | 0 .../internal}/handler/auth/register_handler.go | 0 .../handler/brand/create_brand_handler.go | 0 .../brand/create_brand_product_handler.go | 0 .../handler/brand/delete_brand_handler.go | 0 .../brand/delete_brand_product_handler.go | 0 .../brand/expand_knowledge_graph_handler.go | 0 .../generate_brand_content_matrix_handler.go | 0 .../brand/generate_outreach_drafts_handler.go | 0 .../brand/get_brand_content_matrix_handler.go | 0 .../internal}/handler/brand/get_brand_handler.go | 0 .../brand/get_brand_scan_schedule_handler.go | 0 .../handler/brand/get_knowledge_graph_handler.go | 0 .../handler/brand/list_brand_products_handler.go | 0 .../brand/list_brand_scan_posts_handler.go | 0 .../handler/brand/list_brands_handler.go | 0 .../brand/patch_knowledge_graph_nodes_handler.go | 0 .../brand/patch_scan_post_outreach_handler.go | 0 .../brand/publish_outreach_draft_handler.go | 0 .../brand/start_brand_scan_job_handler.go | 0 .../handler/brand/update_brand_handler.go | 0 .../brand/update_brand_product_handler.go | 0 .../brand/upsert_brand_scan_schedule_handler.go | 0 .../copy_mission/create_copy_mission_handler.go | 0 .../copy_mission/delete_copy_mission_handler.go | 0 .../generate_copy_mission_matrix_handler.go | 0 .../copy_mission/get_copy_mission_handler.go | 0 .../get_copy_mission_scan_schedule_handler.go | 0 .../copy_mission/inspire_copy_mission_handler.go | 0 .../list_copy_mission_copy_drafts_handler.go | 0 .../list_copy_mission_scan_posts_handler.go | 0 .../copy_mission/list_copy_missions_handler.go | 0 .../start_copy_mission_analyze_job_handler.go | 0 .../start_copy_mission_copy_draft_job_handler.go | 0 .../start_copy_mission_matrix_job_handler.go | 0 .../start_copy_mission_scan_job_handler.go | 0 .../copy_mission/update_copy_mission_handler.go | 0 .../upsert_copy_mission_scan_schedule_handler.go | 0 .../handler/job/ack_worker_job_cancel_handler.go | 0 .../job/analyze_style8_d_from_worker_handler.go | 0 .../internal}/handler/job/cancel_job_handler.go | 0 .../job/check_worker_job_cancel_handler.go | 0 .../handler/job/claim_worker_job_handler.go | 0 .../handler/job/complete_worker_job_handler.go | 0 .../internal}/handler/job/create_job_handler.go | 0 .../handler/job/create_job_schedule_handler.go | 0 .../handler/job/delete_job_schedule_handler.go | 0 .../handler/job/disable_job_schedule_handler.go | 0 .../handler/job/enable_job_schedule_handler.go | 0 .../handler/job/fail_worker_job_handler.go | 0 .../internal}/handler/job/get_job_handler.go | 0 .../handler/job/get_job_template_handler.go | 0 ...get_worker_threads_account_session_handler.go | 0 .../handler/job/list_job_events_handler.go | 0 .../handler/job/list_job_schedules_handler.go | 0 .../handler/job/list_job_templates_handler.go | 0 .../internal}/handler/job/list_jobs_handler.go | 0 .../job/refresh_worker_job_lock_handler.go | 0 .../internal}/handler/job/retry_job_handler.go | 0 ..._persona_style_profile_from_worker_handler.go | 0 .../handler/job/update_job_schedule_handler.go | 0 .../job/update_worker_job_progress_handler.go | 0 .../handler/job/upsert_job_template_handler.go | 0 .../handler/member/get_member_me_handler.go | 0 .../get_member_placement_settings_handler.go | 0 .../handler/member/update_member_me_handler.go | 0 .../update_member_placement_settings_handler.go | 0 .../internal}/handler/normal/health_handler.go | 0 .../permission/get_me_permissions_handler.go | 0 .../permission/get_permission_catalog_handler.go | 0 .../handler/persona/create_persona_handler.go | 0 .../handler/persona/delete_persona_handler.go | 0 .../generate_persona_copy_draft_handler.go | 0 .../handler/persona/get_persona_handler.go | 0 .../persona/list_persona_copy_drafts_handler.go | 0 .../list_persona_viral_scan_posts_handler.go | 0 .../handler/persona/list_personas_handler.go | 0 .../publish_persona_copy_draft_handler.go | 0 .../start_persona_style_analysis_handler.go | 0 .../start_persona_viral_scan_job_handler.go | 0 .../persona/update_persona_copy_draft_handler.go | 0 .../handler/persona/update_persona_handler.go | 0 ..._delete_placement_topic_scan_posts_handler.go | 0 .../create_placement_topic_handler.go | 0 .../delete_placement_topic_handler.go | 0 .../delete_placement_topic_scan_post_handler.go | 0 .../expand_placement_topic_graph_handler.go | 0 ...ate_placement_topic_content_matrix_handler.go | 0 ...te_placement_topic_outreach_drafts_handler.go | 0 ...get_placement_topic_content_matrix_handler.go | 0 .../get_placement_topic_graph_handler.go | 0 .../get_placement_topic_handler.go | 0 .../get_placement_topic_scan_schedule_handler.go | 0 .../list_placement_topic_scan_posts_handler.go | 0 .../list_placement_topics_handler.go | 0 .../patch_placement_topic_graph_nodes_handler.go | 0 ...placement_topic_scan_post_outreach_handler.go | 0 ...ish_placement_topic_outreach_draft_handler.go | 0 .../start_placement_topic_scan_job_handler.go | 0 .../update_placement_topic_handler.go | 0 ...sert_placement_topic_scan_schedule_handler.go | 0 {internal => backend/internal}/handler/routes.go | 0 .../handler/setting/delete_setting_handler.go | 0 .../handler/setting/get_setting_handler.go | 0 .../handler/setting/list_settings_handler.go | 0 .../handler/setting/upsert_setting_handler.go | 0 .../activate_threads_account_handler.go | 0 .../create_threads_account_handler.go | 0 .../get_threads_account_ai_settings_handler.go | 0 .../get_threads_account_connection_handler.go | 0 .../get_threads_account_handler.go | 0 .../import_threads_account_session_handler.go | 0 .../list_threads_accounts_handler.go | 0 ...update_threads_account_ai_settings_handler.go | 0 .../update_threads_account_connection_handler.go | 0 .../update_threads_account_handler.go | 0 .../internal}/library/authctx/context.go | 0 .../internal}/library/brave/breaker.go | 0 .../internal}/library/brave/client.go | 0 .../internal}/library/clock/clock.go | 0 .../internal}/library/clock/clock_test.go | 0 .../internal}/library/errors/code/types.go | 0 .../internal}/library/errors/errors.go | 0 .../internal}/library/exa/client.go | 0 .../internal}/library/exa/client_test.go | 0 .../internal}/library/knowledge/bootstrap.go | 0 .../library/knowledge/bootstrap_test.go | 0 .../internal}/library/knowledge/brave_collect.go | 0 .../library/knowledge/brave_collect_test.go | 0 .../library/knowledge/expand_strategy.go | 0 .../library/knowledge/expand_strategy_test.go | 0 .../internal}/library/knowledge/graph.go | 0 .../internal}/library/knowledge/patrol_input.go | 0 .../internal}/library/knowledge/patrol_phrase.go | 0 .../library/knowledge/patrol_phrase_test.go | 0 .../internal}/library/knowledge/patrol_rank.go | 0 .../library/knowledge/patrol_rank_test.go | 0 .../library/knowledge/patrol_resolve.go | 0 .../library/knowledge/patrol_resolve_test.go | 0 .../internal}/library/knowledge/patrol_tags.go | 0 .../library/knowledge/patrol_tags_test.go | 0 .../internal}/library/knowledge/quality.go | 0 .../internal}/library/knowledge/quality_test.go | 0 .../internal}/library/knowledge/queries.go | 0 .../internal}/library/knowledge/queries_test.go | 0 .../internal}/library/knowledge/synth.go | 0 .../internal}/library/knowledge/synth_test.go | 0 .../internal}/library/matrix/copy_generate.go | 0 .../internal}/library/matrix/generate.go | 0 .../internal}/library/matrix/samples.go | 0 .../internal}/library/mongo/brand_scope.go | 0 .../internal}/library/mongo/client.go | 0 .../internal}/library/mongo/ensure_index.go | 0 .../internal}/library/outreach/generate.go | 0 .../internal}/library/outreach/generate_test.go | 0 .../internal}/library/permmatch/match.go | 0 .../internal}/library/permmatch/match_test.go | 0 .../internal}/library/placement/ai_generate.go | 0 .../internal}/library/placement/context.go | 0 .../library/placement/context_prompt.go | 0 .../library/placement/context_prompt_test.go | 0 .../internal}/library/placement/crawler_exec.go | 0 .../library/placement/crawler_exec_test.go | 0 .../library/placement/crawler_polite.go | 0 .../internal}/library/placement/discover.go | 0 .../library/placement/discover_route.go | 0 .../library/placement/discover_route_test.go | 0 .../internal}/library/placement/dual_track.go | 0 .../library/placement/effective_strategy.go | 0 .../library/placement/effective_strategy_test.go | 0 .../internal}/library/placement/exclusion.go | 0 .../internal}/library/placement/filter.go | 0 .../internal}/library/placement/filter_test.go | 0 .../internal}/library/placement/parse_threads.go | 0 .../library/placement/patrol_queries.go | 0 .../library/placement/patrol_queries_test.go | 0 .../library/placement/product_catalog.go | 0 .../library/placement/product_context.go | 0 .../internal}/library/placement/product_match.go | 0 .../internal}/library/placement/query_build.go | 0 .../internal}/library/placement/recency.go | 0 .../internal}/library/placement/research_map.go | 0 .../library/placement/research_map_test.go | 0 .../library/placement/scrape_replies.go | 0 .../library/placement/scrape_replies_test.go | 0 .../internal}/library/placement/source_mode.go | 0 .../library/placement/source_mode_test.go | 0 .../internal}/library/placement/threads_api.go | 0 .../internal}/library/prompt/compose.go | 0 .../internal}/library/prompt/compose_test.go | 0 .../internal}/library/prompt/errors.go | 0 .../library/prompt/files/ai.chat.system.md | 0 .../library/prompt/files/ai.islander.system.md | 0 .../prompt/files/knowledge_graph.queries.json | 0 .../prompt/files/knowledge_graph.supplemental.md | 0 .../prompt/files/knowledge_graph.system.md | 0 .../library/prompt/files/knowledge_graph.user.md | 0 .../prompt/files/knowledge_graph_llm.system.md | 0 .../prompt/files/knowledge_graph_llm.user.md | 0 .../library/prompt/files/matrix_copy.system.md | 0 .../library/prompt/files/matrix_copy.user.md | 0 .../prompt/files/matrix_placement.system.md | 0 .../prompt/files/matrix_placement.user.md | 0 .../prompt/files/outreach_placement.system.md | 0 .../prompt/files/outreach_placement.user.md | 0 .../internal}/library/prompt/files/overlay.md | 0 .../library/prompt/files/style8d.schema.md | 0 .../library/prompt/files/style8d.system.md | 0 .../internal}/library/prompt/registry.go | 0 .../internal}/library/redact/redact.go | 0 .../internal}/library/redact/redact_test.go | 0 .../internal}/library/redis/client.go | 0 .../internal}/library/style8d/analyze.go | 0 .../internal}/library/style8d/analyze_test.go | 0 .../internal}/library/style8d/prompt.go | 0 .../internal}/library/style8d/prompt_test.go | 0 .../internal}/library/threadsapi/client.go | 0 .../internal}/library/threadsapi/publish.go | 0 .../internal}/library/threadsapi/replies.go | 0 .../internal}/library/threadspost/limits.go | 0 .../internal}/library/threadspost/limits_test.go | 0 .../internal}/library/validate/validate.go | 0 .../internal}/library/viral/analyze_viral.go | 0 .../internal}/library/viral/discover.go | 0 .../internal}/library/viral/discover_accounts.go | 0 .../library/viral/discover_accounts_test.go | 0 .../library/viral/discover_budget_test.go | 0 .../library/viral/discover_graceful_test.go | 0 .../internal}/library/viral/enrich_accounts.go | 0 .../internal}/library/viral/flexible_json.go | 0 .../internal}/library/viral/mission_inspire.go | 0 .../library/viral/mission_inspire_collect.go | 0 .../library/viral/mission_inspire_test.go | 0 .../library/viral/mission_research_map.go | 0 .../library/viral/mission_research_map_test.go | 0 .../internal}/library/viral/quality.go | 0 .../internal}/library/viral/quality_test.go | 0 .../library/viral/reference_accounts.go | 0 .../viral/reference_accounts_fallback_test.go | 0 .../library/viral/reference_accounts_test.go | 0 .../internal}/library/viral/replicate.go | 0 .../internal}/library/viral/research_map.go | 0 .../internal}/library/viral/score.go | 0 .../internal}/library/viral/search_tags.go | 0 .../internal}/library/viral/search_tags_test.go | 0 .../internal}/library/viral/tags.go | 0 .../internal}/library/viral/tags_test.go | 0 .../internal}/library/websearch/client.go | 0 {internal => backend/internal}/logic/ai/actor.go | 0 .../internal}/logic/ai/chat_logic.go | 0 .../internal}/logic/ai/chat_stream_logic.go | 0 .../internal}/logic/ai/credential.go | 0 .../logic/ai/islander_chat_stream_logic.go | 0 .../logic/ai/list_ai_provider_models_logic.go | 0 .../logic/ai/list_ai_providers_logic.go | 0 .../internal}/logic/ai/mapper.go | 0 .../internal}/logic/auth/login_logic.go | 0 .../internal}/logic/auth/logout_logic.go | 0 .../internal}/logic/auth/mapper.go | 0 .../internal}/logic/auth/refresh_logic.go | 0 .../internal}/logic/auth/register_logic.go | 0 .../internal}/logic/authz/admin.go | 0 .../internal}/logic/brand/actor.go | 0 .../internal}/logic/brand/create_brand_logic.go | 0 .../logic/brand/create_brand_product_logic.go | 0 .../internal}/logic/brand/delete_brand_logic.go | 0 .../logic/brand/delete_brand_product_logic.go | 0 .../logic/brand/expand_knowledge_graph_logic.go | 0 .../brand/generate_brand_content_matrix_logic.go | 0 .../brand/generate_outreach_drafts_logic.go | 0 .../brand/get_brand_content_matrix_logic.go | 0 .../internal}/logic/brand/get_brand_logic.go | 0 .../logic/brand/get_brand_scan_schedule_logic.go | 0 .../logic/brand/get_knowledge_graph_logic.go | 0 .../logic/brand/list_brand_products_logic.go | 0 .../logic/brand/list_brand_scan_posts_logic.go | 0 .../internal}/logic/brand/list_brands_logic.go | 0 .../internal}/logic/brand/mapper.go | 0 .../brand/patch_knowledge_graph_nodes_logic.go | 0 .../brand/patch_scan_post_outreach_logic.go | 0 .../logic/brand/publish_outreach_draft_logic.go | 0 .../logic/brand/start_brand_scan_job_logic.go | 0 .../internal}/logic/brand/update_brand_logic.go | 0 .../logic/brand/update_brand_product_logic.go | 0 .../brand/upsert_brand_scan_schedule_logic.go | 0 .../internal}/logic/copy_mission/actor.go | 0 .../copy_mission/create_copy_mission_logic.go | 0 .../copy_mission/delete_copy_mission_logic.go | 0 .../generate_copy_mission_matrix_logic.go | 0 .../logic/copy_mission/get_copy_mission_logic.go | 0 .../get_copy_mission_scan_schedule_logic.go | 0 .../copy_mission/inspire_copy_mission_logic.go | 0 .../list_copy_mission_copy_drafts_logic.go | 0 .../list_copy_mission_scan_posts_logic.go | 0 .../copy_mission/list_copy_missions_logic.go | 0 .../internal}/logic/copy_mission/mapper.go | 0 .../logic/copy_mission/schedule_helper.go | 0 .../start_copy_mission_analyze_job_logic.go | 0 .../start_copy_mission_copy_draft_job_logic.go | 0 .../start_copy_mission_matrix_job_logic.go | 0 .../start_copy_mission_scan_job_logic.go | 0 .../copy_mission/update_copy_mission_logic.go | 0 .../upsert_copy_mission_scan_schedule_logic.go | 0 .../logic/job/ack_worker_job_cancel_logic.go | 0 .../internal}/logic/job/actor.go | 0 .../job/analyze_style8_d_from_worker_logic.go | 0 .../internal}/logic/job/cancel_job_logic.go | 0 .../logic/job/check_worker_job_cancel_logic.go | 0 .../logic/job/claim_worker_job_logic.go | 0 .../logic/job/complete_worker_job_logic.go | 0 .../internal}/logic/job/create_job_logic.go | 0 .../logic/job/create_job_schedule_logic.go | 0 .../logic/job/delete_job_schedule_logic.go | 0 .../logic/job/disable_job_schedule_logic.go | 0 .../logic/job/enable_job_schedule_logic.go | 0 .../internal}/logic/job/fail_worker_job_logic.go | 0 .../internal}/logic/job/get_job_logic.go | 0 .../logic/job/get_job_template_logic.go | 0 .../get_worker_threads_account_session_logic.go | 0 .../internal}/logic/job/list_job_events_logic.go | 0 .../logic/job/list_job_schedules_logic.go | 0 .../logic/job/list_job_templates_logic.go | 0 .../internal}/logic/job/list_jobs_logic.go | 0 .../internal}/logic/job/mapper.go | 0 .../internal}/logic/job/ownership.go | 0 .../internal}/logic/job/ownership_test.go | 0 .../logic/job/refresh_worker_job_lock_logic.go | 0 .../internal}/logic/job/retry_job_logic.go | 0 ...re_persona_style_profile_from_worker_logic.go | 0 .../logic/job/update_job_schedule_logic.go | 0 .../job/update_worker_job_progress_logic.go | 0 .../logic/job/upsert_job_template_logic.go | 0 .../internal}/logic/job/worker_helpers.go | 0 .../logic/member/get_member_me_logic.go | 0 .../get_member_placement_settings_logic.go | 0 .../internal}/logic/member/mapper.go | 0 .../logic/member/update_member_me_logic.go | 0 .../update_member_placement_settings_logic.go | 0 .../internal}/logic/normal/health_logic.go | 0 .../logic/permission/get_me_permissions_logic.go | 0 .../permission/get_permission_catalog_logic.go | 0 .../internal}/logic/permission/mapper.go | 0 .../internal}/logic/persona/actor.go | 0 .../logic/persona/create_persona_logic.go | 0 .../logic/persona/delete_persona_logic.go | 0 .../persona/generate_persona_copy_draft_logic.go | 0 .../internal}/logic/persona/get_persona_logic.go | 0 .../persona/list_persona_copy_drafts_logic.go | 0 .../list_persona_viral_scan_posts_logic.go | 0 .../logic/persona/list_personas_logic.go | 0 .../internal}/logic/persona/mapper.go | 0 .../persona/publish_persona_copy_draft_logic.go | 0 .../start_persona_style_analysis_logic.go | 0 .../start_persona_viral_scan_job_logic.go | 0 .../persona/update_persona_copy_draft_logic.go | 0 .../logic/persona/update_persona_logic.go | 0 .../internal}/logic/placement_topic/actor.go | 0 ...ch_delete_placement_topic_scan_posts_logic.go | 0 .../create_placement_topic_logic.go | 0 .../delete_placement_topic_logic.go | 0 .../delete_placement_topic_scan_post_logic.go | 0 .../expand_placement_topic_graph_logic.go | 0 ...erate_placement_topic_content_matrix_logic.go | 0 ...rate_placement_topic_outreach_drafts_logic.go | 0 .../get_placement_topic_content_matrix_logic.go | 0 .../get_placement_topic_graph_logic.go | 0 .../placement_topic/get_placement_topic_logic.go | 0 .../get_placement_topic_scan_schedule_logic.go | 0 .../list_placement_topic_scan_posts_logic.go | 0 .../list_placement_topics_logic.go | 0 .../internal}/logic/placement_topic/mapper.go | 0 .../patch_placement_topic_graph_nodes_logic.go | 0 ...h_placement_topic_scan_post_outreach_logic.go | 0 ...blish_placement_topic_outreach_draft_logic.go | 0 .../internal}/logic/placement_topic/scope.go | 0 .../start_placement_topic_scan_job_logic.go | 0 .../update_placement_topic_logic.go | 0 ...upsert_placement_topic_scan_schedule_logic.go | 0 .../logic/setting/delete_setting_logic.go | 0 .../internal}/logic/setting/get_setting_logic.go | 0 .../logic/setting/list_settings_logic.go | 0 .../internal}/logic/setting/mapper.go | 0 .../logic/setting/upsert_setting_logic.go | 0 .../activate_threads_account_logic.go | 0 .../internal}/logic/threads_account/actor.go | 0 .../create_threads_account_logic.go | 0 .../get_threads_account_ai_settings_logic.go | 0 .../get_threads_account_connection_logic.go | 0 .../threads_account/get_threads_account_logic.go | 0 .../import_threads_account_session_logic.go | 0 .../list_threads_accounts_logic.go | 0 .../internal}/logic/threads_account/mapper.go | 0 .../update_threads_account_ai_settings_logic.go | 0 .../update_threads_account_connection_logic.go | 0 .../update_threads_account_logic.go | 0 .../internal}/middleware/auth.go | 0 .../internal}/middleware/auth_middleware.go | 0 .../internal}/middleware/auth_test.go | 0 .../internal}/middleware/authjwt_middleware.go | 0 .../middleware/memberauth_middleware.go | 0 .../middleware/permissionrbac_middleware.go | 0 .../middleware/workersecret_middleware.go | 0 .../internal}/model/ai/domain/enum/provider.go | 0 .../internal}/model/ai/domain/usecase/ai.go | 0 .../model/ai/provider/openai_compatible.go | 0 .../model/ai/provider/openai_compatible_test.go | 0 .../internal}/model/ai/usecase/provider_map.go | 0 .../internal}/model/ai/usecase/usecase.go | 0 .../model/auth/domain/repository/token_revoke.go | 0 .../internal}/model/auth/domain/usecase/token.go | 0 .../model/auth/repository/token_revoke_redis.go | 0 .../internal}/model/auth/usecase/token.go | 0 .../internal}/model/brand/domain/entity/brand.go | 0 .../model/brand/domain/entity/product.go | 0 .../model/brand/domain/entity/research_map.go | 0 .../model/brand/domain/repository/repository.go | 0 .../model/brand/domain/usecase/usecase.go | 0 .../internal}/model/brand/repository/mongo.go | 0 .../internal}/model/brand/usecase/products.go | 0 .../internal}/model/brand/usecase/usecase.go | 0 .../model/content_matrix/domain/entity/matrix.go | 0 .../domain/repository/repository.go | 0 .../content_matrix/domain/usecase/usecase.go | 0 .../model/content_matrix/repository/mongo.go | 0 .../model/content_matrix/usecase/usecase.go | 0 .../model/copy_draft/domain/entity/draft.go | 0 .../copy_draft/domain/repository/repository.go | 0 .../model/copy_draft/domain/usecase/usecase.go | 0 .../model/copy_draft/repository/mongo.go | 0 .../model/copy_draft/usecase/usecase.go | 0 .../model/copy_mission/domain/entity/mission.go | 0 .../copy_mission/domain/repository/repository.go | 0 .../model/copy_mission/domain/usecase/usecase.go | 0 .../model/copy_mission/repository/mongo.go | 0 .../model/copy_mission/usecase/usecase.go | 0 .../internal}/model/job/cron/next_run.go | 0 .../internal}/model/job/cron/next_run_test.go | 0 .../internal}/model/job/domain/entity/event.go | 0 .../internal}/model/job/domain/entity/run.go | 0 .../model/job/domain/entity/schedule.go | 0 .../model/job/domain/entity/template.go | 0 .../internal}/model/job/domain/enum/status.go | 0 .../model/job/domain/repository/event.go | 0 .../model/job/domain/repository/queue.go | 0 .../internal}/model/job/domain/repository/run.go | 0 .../model/job/domain/repository/schedule.go | 0 .../model/job/domain/repository/template.go | 0 .../internal}/model/job/domain/usecase/job.go | 0 .../model/job/repository/mongo_event.go | 0 .../internal}/model/job/repository/mongo_run.go | 0 .../model/job/repository/mongo_schedule.go | 0 .../model/job/repository/mongo_template.go | 0 .../model/job/repository/redis_queue.go | 0 .../model/job/repository/redis_queue_test.go | 0 .../internal}/model/job/resume/resume.go | 0 .../internal}/model/job/resume/resume_test.go | 0 .../internal}/model/job/usecase/cancel_test.go | 0 .../internal}/model/job/usecase/dedupe_test.go | 0 .../internal}/model/job/usecase/helpers.go | 0 .../internal}/model/job/usecase/maintenance.go | 0 .../model/job/usecase/maintenance_test.go | 0 .../model/job/usecase/refresh_lock_test.go | 0 .../model/job/usecase/retry_resume_test.go | 0 .../internal}/model/job/usecase/retry_test.go | 0 .../internal}/model/job/usecase/schedule.go | 0 .../model/job/usecase/schedule_payload.go | 0 .../model/job/usecase/schedule_payload_test.go | 0 .../internal}/model/job/usecase/schedule_test.go | 0 .../internal}/model/job/usecase/step_resume.go | 0 .../internal}/model/job/usecase/template.go | 0 .../internal}/model/job/usecase/template_test.go | 0 .../internal}/model/job/usecase/test_mocks.go | 0 .../internal}/model/job/usecase/usecase.go | 0 .../model/knowledge_graph/domain/entity/graph.go | 0 .../domain/repository/repository.go | 0 .../knowledge_graph/domain/usecase/usecase.go | 0 .../model/knowledge_graph/repository/mongo.go | 0 .../model/knowledge_graph/usecase/usecase.go | 0 .../model/member/domain/entity/member.go | 0 .../model/member/domain/repository/member.go | 0 .../model/member/domain/usecase/member.go | 0 .../internal}/model/member/repository/mongo.go | 0 .../internal}/model/member/usecase/usecase.go | 0 .../model/outreach_draft/domain/entity/draft.go | 0 .../domain/repository/repository.go | 0 .../outreach_draft/domain/usecase/usecase.go | 0 .../model/outreach_draft/repository/mongo.go | 0 .../model/outreach_draft/usecase/errors.go | 0 .../model/outreach_draft/usecase/usecase.go | 0 .../model/permission/domain/entity/permission.go | 0 .../permission/domain/repository/permission.go | 0 .../permission/domain/usecase/permission.go | 0 .../permission/repository/mongo_permission.go | 0 .../repository/mongo_role_permission.go | 0 .../model/permission/repository/object_id.go | 0 .../model/permission/usecase/usecase.go | 0 .../model/permission/usecase/usecase_test.go | 0 .../persona/domain/entity/copy_research_map.go | 0 .../model/persona/domain/entity/persona.go | 0 .../persona/domain/repository/repository.go | 0 .../model/persona/domain/usecase/usecase.go | 0 .../internal}/model/persona/repository/mongo.go | 0 .../internal}/model/persona/usecase/usecase.go | 0 .../model/placement/usecase/settings.go | 0 .../model/placement_topic/domain/entity/topic.go | 0 .../domain/repository/repository.go | 0 .../placement_topic/domain/usecase/usecase.go | 0 .../model/placement_topic/repository/mongo.go | 0 .../model/placement_topic/usecase/usecase.go | 0 .../scan_post/domain/entity/outreach_patch.go | 0 .../model/scan_post/domain/entity/post.go | 0 .../scan_post/domain/repository/repository.go | 0 .../model/scan_post/domain/usecase/usecase.go | 0 .../model/scan_post/repository/mongo.go | 0 .../repository/mongo_priority_filter_test.go | 0 .../repository/mongo_topic_scope_test.go | 0 .../internal}/model/scan_post/usecase/errors.go | 0 .../internal}/model/scan_post/usecase/usecase.go | 0 .../model/setting/domain/entity/setting.go | 0 .../model/setting/domain/repository/setting.go | 0 .../model/setting/domain/usecase/setting.go | 0 .../internal}/model/setting/repository/mongo.go | 0 .../internal}/model/setting/usecase/usecase.go | 0 .../threads_account/domain/entity/account.go | 0 .../threads_account/domain/entity/secrets.go | 0 .../domain/repository/repository.go | 0 .../threads_account/domain/usecase/usecase.go | 0 .../model/threads_account/repository/mongo.go | 0 .../threads_account/repository/secrets_mongo.go | 0 .../threads_account/usecase/ai_credentials.go | 0 .../threads_account/usecase/placement_context.go | 0 .../usecase/placement_context_test.go | 0 .../usecase/publish_credentials.go | 0 .../model/threads_account/usecase/usecase.go | 0 .../internal}/response/request.go | 0 .../internal}/response/response.go | 0 .../internal}/svc/service_context.go | 0 {internal => backend/internal}/types/types.go | 0 .../internal}/worker/job/analyze_copy_mission.go | 0 .../internal}/worker/job/crawler_search.go | 0 .../internal}/worker/job/expand_graph.go | 0 .../internal}/worker/job/generate_copy_draft.go | 0 .../internal}/worker/job/generate_copy_matrix.go | 0 .../internal}/worker/job/payload_actor.go | 0 .../internal}/worker/job/placement_scope.go | 0 .../internal}/worker/job/reaper.go | 0 .../internal}/worker/job/runner.go | 0 .../internal}/worker/job/runner_test.go | 0 .../internal}/worker/job/scan_placement.go | 0 .../internal}/worker/job/scan_viral.go | 0 .../internal}/worker/job/scheduler.go | 0 {worker => backend/worker}/package.json | 0 {worker => backend/worker}/style-8d-worker.ts | 0 .../worker}/threads-keyword-search-cli.ts | 0 .../worker}/threads-keyword-search.ts | 0 .../worker}/threads-profile-scraper.ts | 0 {web => frontend}/.gitignore | 0 {web => frontend}/index.html | 0 {web => frontend}/package-lock.json | 0 {web => frontend}/package.json | 0 .../public/downloads/haixun-threads-sync.zip | Bin .../public/illustrations/island/airplane.svg | 0 .../public/illustrations/island/bell.svg | 0 .../public/illustrations/island/cloud.svg | 0 .../illustrations/island/desert-island.svg | 0 .../public/illustrations/island/herb.svg | 0 .../public/illustrations/island/hut.svg | 0 .../illustrations/island/magnifying-glass.svg | 0 .../public/illustrations/island/passport.svg | 0 .../public/illustrations/island/sun.svg | 0 .../public/illustrations/island/water-wave.svg | 0 {web => frontend}/src/App.tsx | 0 {web => frontend}/src/api/client.ts | 0 {web => frontend}/src/auth/AuthContext.tsx | 0 {web => frontend}/src/components/AcIcon.tsx | 0 .../src/components/AccountAiSettings.tsx | 0 .../src/components/AccountConnectionMode.tsx | 0 .../components/AccountDisplayNameSettings.tsx | 0 .../src/components/AccountSwitcher.tsx | 0 {web => frontend}/src/components/AdminRoute.tsx | 0 .../src/components/AppBrandLink.tsx | 0 {web => frontend}/src/components/AppSidebar.tsx | 0 {web => frontend}/src/components/AuthDecor.tsx | 0 {web => frontend}/src/components/AuthShell.tsx | 0 .../src/components/BrandProductPicker.tsx | 0 .../src/components/BrandProductsPanel.tsx | 0 .../src/components/BrandSwitcher.tsx | 0 {web => frontend}/src/components/CopyFlowNav.tsx | 0 .../src/components/CopyFlowPipeline.tsx | 0 .../src/components/CopyMissionActiveJobsCard.tsx | 0 .../components/CopyMissionAnalyzeJobPanel.tsx | 0 .../src/components/CopyMissionDiceButton.tsx | 0 .../src/components/CopyMissionDraftCard.tsx | 0 .../src/components/CopyMissionJobPanel.tsx | 0 .../src/components/CopyMissionResearchEditor.tsx | 0 .../components/CopyMissionResearchOverview.tsx | 0 .../components/CopyMissionScanSchedulePanel.tsx | 0 .../src/components/CopyMissionSwitcher.tsx | 0 .../src/components/CopyPersonaSwitcher.tsx | 0 .../src/components/CopySuggestedTagsPicker.tsx | 0 .../components/CreatePlacementTopicDialog.tsx | 0 .../src/components/DevToolsPanel.tsx | 0 .../src/components/EvidenceList.tsx | 0 .../src/components/ExpandGraphJobPanel.tsx | 0 .../src/components/ExpandStrategyField.tsx | 0 .../src/components/ExtensionInstallCard.tsx | 0 {web => frontend}/src/components/JobMonitor.tsx | 0 .../src/components/KnowledgeGraphPanel.tsx | 0 .../src/components/KnowledgeLayerRipple.tsx | 0 .../src/components/KnowledgeOrbitDiagram.tsx | 0 .../src/components/KnowledgeOverviewPanel.tsx | 0 {web => frontend}/src/components/Layout.tsx | 0 .../src/components/LegacyBrandRouteRedirect.tsx | 0 .../src/components/MatrixEntryRoute.tsx | 0 {web => frontend}/src/components/MemberMenu.tsx | 0 .../src/components/MobileBottomNav.tsx | 0 .../src/components/OnboardingBanner.tsx | 0 .../src/components/OnboardingGuide.tsx | 0 .../src/components/OnboardingRouteGuard.tsx | 0 .../src/components/OutreachEntryRoute.tsx | 0 .../src/components/PatrolKeywordsEditor.tsx | 0 .../src/components/PatrolNodeTagsEditor.tsx | 0 .../src/components/PersonaIslandArt.tsx | 0 .../src/components/PersonaScanSchedulePanel.tsx | 0 .../src/components/PlacementFlowNav.tsx | 0 .../src/components/PlacementFlowPipeline.tsx | 0 .../src/components/PlacementResearchSettings.tsx | 0 .../src/components/PlacementScanJobPanel.tsx | 0 .../src/components/ProductContextForm.tsx | 0 .../src/components/ProductItemForm.tsx | 0 .../src/components/ProtectedRoute.tsx | 0 .../src/components/RegisterForm.tsx | 0 .../src/components/ReplyPersonaPicker.tsx | 0 .../src/components/ResearchMapEditor.tsx | 0 .../src/components/ResearchMapOverview.tsx | 0 .../src/components/ResearchMapPanel.tsx | 0 .../src/components/ScheduleFrequencyPicker.tsx | 0 .../src/components/SourceLinkPreview.tsx | 0 .../src/components/StringListEditor.tsx | 0 .../src/components/Style8DAnalysisMeta.tsx | 0 .../src/components/Style8DDimensionEditor.tsx | 0 .../src/components/Style8DJobPanel.tsx | 0 {web => frontend}/src/components/ThemeToggle.tsx | 0 .../src/components/ThreadsAccountWorkspace.tsx | 0 .../src/components/ThreadsPostCharMeter.tsx | 0 .../src/components/TopicSwitcher.tsx | 0 .../src/components/VerifiedAuthorBadge.tsx | 0 .../src/components/ViralScanJobPanel.tsx | 0 .../src/components/islander/IslanderAvatar.tsx | 0 .../components/islander/IslanderChatPanel.tsx | 0 .../components/islander/IslanderCompanion.tsx | 0 .../src/components/islander/IslanderMarkdown.tsx | 0 {web => frontend}/src/components/ui.tsx | 0 {web => frontend}/src/hooks/useActiveBrand.ts | 0 .../src/hooks/useActiveCopyPersona.ts | 0 {web => frontend}/src/hooks/useActiveTopic.ts | 0 {web => frontend}/src/hooks/useIslanderUnlock.ts | 0 {web => frontend}/src/index.css | 0 {web => frontend}/src/lib/acAssets.ts | 0 {web => frontend}/src/lib/aiCredentials.ts | 0 {web => frontend}/src/lib/brandContext.ts | 0 {web => frontend}/src/lib/connectionMode.ts | 0 {web => frontend}/src/lib/copyFlow.ts | 0 {web => frontend}/src/lib/copyMissionJobs.ts | 0 {web => frontend}/src/lib/easterEggCatalog.ts | 0 {web => frontend}/src/lib/extensionInstall.ts | 0 {web => frontend}/src/lib/extensionSync.ts | 0 {web => frontend}/src/lib/formatDate.ts | 0 .../src/lib/islander/IslanderPageContext.tsx | 0 .../src/lib/islander/actionExecutor.ts | 0 .../src/lib/islander/buildIslanderContext.ts | 0 {web => frontend}/src/lib/islander/config.ts | 0 .../src/lib/islander/copyActions.ts | 0 .../src/lib/islander/handoffStore.ts | 0 {web => frontend}/src/lib/islander/index.ts | 0 .../src/lib/islander/islanderActions.ts | 0 .../src/lib/islander/islanderAgent.ts | 0 .../src/lib/islander/outreachActions.ts | 0 .../src/lib/islander/pageContextIntent.ts | 0 .../src/lib/islander/pageRegistry.ts | 0 .../src/lib/islander/pageSnapshot.ts | 0 .../src/lib/islander/researchActions.ts | 0 {web => frontend}/src/lib/islander/siteGuide.ts | 0 {web => frontend}/src/lib/islander/types.ts | 0 {web => frontend}/src/lib/islander/unlock.ts | 0 .../src/lib/islander/useIslanderPosition.ts | 0 {web => frontend}/src/lib/jobStatus.ts | 0 {web => frontend}/src/lib/jobTemplate.ts | 0 {web => frontend}/src/lib/knowledgeGraph.ts | 0 {web => frontend}/src/lib/memberRole.ts | 0 {web => frontend}/src/lib/onboarding.ts | 0 {web => frontend}/src/lib/pageJobScope.ts | 0 {web => frontend}/src/lib/placementFlow.ts | 0 {web => frontend}/src/lib/placementResearch.ts | 0 {web => frontend}/src/lib/placementTopics.ts | 0 {web => frontend}/src/lib/productCatalog.ts | 0 {web => frontend}/src/lib/productContext.ts | 0 {web => frontend}/src/lib/productMatch.ts | 0 {web => frontend}/src/lib/publishPersona.ts | 0 {web => frontend}/src/lib/scheduleCatalog.ts | 0 {web => frontend}/src/lib/scheduleCron.ts | 0 {web => frontend}/src/lib/searchSourceMode.ts | 0 {web => frontend}/src/lib/sourcePreview.ts | 0 {web => frontend}/src/lib/storage.ts | 0 {web => frontend}/src/lib/styleEvidence.ts | 0 {web => frontend}/src/lib/styleProfile.ts | 0 {web => frontend}/src/lib/threadsAccount.ts | 0 {web => frontend}/src/lib/threadsLinks.ts | 0 {web => frontend}/src/lib/threadsPostLimits.ts | 0 {web => frontend}/src/lib/viralSignals.ts | 0 {web => frontend}/src/main.tsx | 0 .../src/onboarding/OnboardingContext.tsx | 0 {web => frontend}/src/pages/BrandDetailPage.tsx | 0 .../src/pages/BrandProductEditPage.tsx | 0 {web => frontend}/src/pages/BrandsPage.tsx | 0 {web => frontend}/src/pages/CopyMatrixPage.tsx | 0 .../src/pages/CopyMissionDetailPage.tsx | 0 {web => frontend}/src/pages/DashboardPage.tsx | 0 {web => frontend}/src/pages/EasterEggsPage.tsx | 0 {web => frontend}/src/pages/JobDetailPage.tsx | 0 {web => frontend}/src/pages/JobSchedulesPage.tsx | 0 {web => frontend}/src/pages/JobTemplatesPage.tsx | 0 {web => frontend}/src/pages/JobsPage.tsx | 0 {web => frontend}/src/pages/LoginPage.tsx | 0 {web => frontend}/src/pages/PermissionsPage.tsx | 0 .../src/pages/PersonaDetailPage.tsx | 0 .../src/pages/PersonaMatrixPage.tsx | 0 .../src/pages/PersonaOutreachPage.tsx | 0 .../src/pages/PersonaResearchPage.tsx | 0 {web => frontend}/src/pages/PersonasPage.tsx | 0 .../src/pages/PlacementTopicResearchMapPage.tsx | 0 .../src/pages/PlacementTopicSettingsPage.tsx | 0 .../src/pages/PlacementTopicsPage.tsx | 0 {web => frontend}/src/pages/ProfilePage.tsx | 0 {web => frontend}/src/pages/SettingsPage.tsx | 0 .../src/pages/ThreadsAccountConnectionsPage.tsx | 0 .../src/pages/ThreadsAccountPublishPage.tsx | 0 {web => frontend}/src/theme/ThemeContext.tsx | 0 .../src/threads/ThreadsAccountContext.tsx | 0 {web => frontend}/src/types/api.ts | 0 {web => frontend}/src/types/brand.ts | 0 {web => frontend}/src/types/copyMission.ts | 0 {web => frontend}/src/types/placementTopic.ts | 0 {web => frontend}/src/vite-env.d.ts | 0 {web => frontend}/tsconfig.app.json | 0 {web => frontend}/tsconfig.json | 0 {web => frontend}/tsconfig.node.json | 0 {web => frontend}/vite.config.ts | 0 789 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .DS_Store create mode 100644 backend/.DS_Store rename README.md => backend/README.md (100%) rename {cmd => backend/cmd}/tool/main.go (100%) rename {cmd => backend/cmd}/worker/main.go (100%) rename {docs => backend/docs}/job-system-plan.md (100%) rename {docs => backend/docs}/scan-placement-plan.md (100%) rename {etc => backend/etc}/gateway.dev.example.yaml (100%) rename {etc => backend/etc}/gateway.prod.yaml (100%) rename {etc => backend/etc}/gateway.worker.yaml (100%) rename {etc => backend/etc}/gateway.yaml (100%) rename gateway.go => backend/gateway.go (100%) rename {generate => backend/generate}/api/ai.api (100%) rename {generate => backend/generate}/api/auth.api (100%) rename {generate => backend/generate}/api/brand.api (100%) rename {generate => backend/generate}/api/common.api (100%) rename {generate => backend/generate}/api/copy_mission.api (100%) rename {generate => backend/generate}/api/gateway.api (100%) rename {generate => backend/generate}/api/job.api (100%) rename {generate => backend/generate}/api/member.api (100%) rename {generate => backend/generate}/api/normal.api (100%) rename {generate => backend/generate}/api/permission.api (100%) rename {generate => backend/generate}/api/persona.api (100%) rename {generate => backend/generate}/api/placement_topic.api (100%) rename {generate => backend/generate}/api/setting.api (100%) rename {generate => backend/generate}/api/threads_account.api (100%) rename {generate => backend/generate}/api/worker_internal.api (100%) rename {generate => backend/generate}/goctl/api/handler.tpl (100%) rename go.mod => backend/go.mod (100%) rename go.sum => backend/go.sum (100%) rename {internal => backend/internal}/bootstrap/admin.go (100%) rename {internal => backend/internal}/bootstrap/admin_test.go (100%) rename {internal => backend/internal}/bootstrap/init.go (100%) rename {internal => backend/internal}/config/config.go (100%) rename {internal => backend/internal}/handler/ai/chat_handler.go (100%) rename {internal => backend/internal}/handler/ai/chat_stream_handler.go (100%) rename {internal => backend/internal}/handler/ai/islander_chat_stream_handler.go (100%) rename {internal => backend/internal}/handler/ai/list_ai_provider_models_handler.go (100%) rename {internal => backend/internal}/handler/ai/list_ai_providers_handler.go (100%) rename {internal => backend/internal}/handler/auth/login_handler.go (100%) rename {internal => backend/internal}/handler/auth/logout_handler.go (100%) rename {internal => backend/internal}/handler/auth/refresh_handler.go (100%) rename {internal => backend/internal}/handler/auth/register_handler.go (100%) rename {internal => backend/internal}/handler/brand/create_brand_handler.go (100%) rename {internal => backend/internal}/handler/brand/create_brand_product_handler.go (100%) rename {internal => backend/internal}/handler/brand/delete_brand_handler.go (100%) rename {internal => backend/internal}/handler/brand/delete_brand_product_handler.go (100%) rename {internal => backend/internal}/handler/brand/expand_knowledge_graph_handler.go (100%) rename {internal => backend/internal}/handler/brand/generate_brand_content_matrix_handler.go (100%) rename {internal => backend/internal}/handler/brand/generate_outreach_drafts_handler.go (100%) rename {internal => backend/internal}/handler/brand/get_brand_content_matrix_handler.go (100%) rename {internal => backend/internal}/handler/brand/get_brand_handler.go (100%) rename {internal => backend/internal}/handler/brand/get_brand_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/brand/get_knowledge_graph_handler.go (100%) rename {internal => backend/internal}/handler/brand/list_brand_products_handler.go (100%) rename {internal => backend/internal}/handler/brand/list_brand_scan_posts_handler.go (100%) rename {internal => backend/internal}/handler/brand/list_brands_handler.go (100%) rename {internal => backend/internal}/handler/brand/patch_knowledge_graph_nodes_handler.go (100%) rename {internal => backend/internal}/handler/brand/patch_scan_post_outreach_handler.go (100%) rename {internal => backend/internal}/handler/brand/publish_outreach_draft_handler.go (100%) rename {internal => backend/internal}/handler/brand/start_brand_scan_job_handler.go (100%) rename {internal => backend/internal}/handler/brand/update_brand_handler.go (100%) rename {internal => backend/internal}/handler/brand/update_brand_product_handler.go (100%) rename {internal => backend/internal}/handler/brand/upsert_brand_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/create_copy_mission_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/delete_copy_mission_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/generate_copy_mission_matrix_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/get_copy_mission_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/get_copy_mission_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/inspire_copy_mission_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/list_copy_mission_copy_drafts_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/list_copy_mission_scan_posts_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/list_copy_missions_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/start_copy_mission_analyze_job_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/start_copy_mission_copy_draft_job_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/start_copy_mission_matrix_job_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/start_copy_mission_scan_job_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/update_copy_mission_handler.go (100%) rename {internal => backend/internal}/handler/copy_mission/upsert_copy_mission_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/ack_worker_job_cancel_handler.go (100%) rename {internal => backend/internal}/handler/job/analyze_style8_d_from_worker_handler.go (100%) rename {internal => backend/internal}/handler/job/cancel_job_handler.go (100%) rename {internal => backend/internal}/handler/job/check_worker_job_cancel_handler.go (100%) rename {internal => backend/internal}/handler/job/claim_worker_job_handler.go (100%) rename {internal => backend/internal}/handler/job/complete_worker_job_handler.go (100%) rename {internal => backend/internal}/handler/job/create_job_handler.go (100%) rename {internal => backend/internal}/handler/job/create_job_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/delete_job_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/disable_job_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/enable_job_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/fail_worker_job_handler.go (100%) rename {internal => backend/internal}/handler/job/get_job_handler.go (100%) rename {internal => backend/internal}/handler/job/get_job_template_handler.go (100%) rename {internal => backend/internal}/handler/job/get_worker_threads_account_session_handler.go (100%) rename {internal => backend/internal}/handler/job/list_job_events_handler.go (100%) rename {internal => backend/internal}/handler/job/list_job_schedules_handler.go (100%) rename {internal => backend/internal}/handler/job/list_job_templates_handler.go (100%) rename {internal => backend/internal}/handler/job/list_jobs_handler.go (100%) rename {internal => backend/internal}/handler/job/refresh_worker_job_lock_handler.go (100%) rename {internal => backend/internal}/handler/job/retry_job_handler.go (100%) rename {internal => backend/internal}/handler/job/store_persona_style_profile_from_worker_handler.go (100%) rename {internal => backend/internal}/handler/job/update_job_schedule_handler.go (100%) rename {internal => backend/internal}/handler/job/update_worker_job_progress_handler.go (100%) rename {internal => backend/internal}/handler/job/upsert_job_template_handler.go (100%) rename {internal => backend/internal}/handler/member/get_member_me_handler.go (100%) rename {internal => backend/internal}/handler/member/get_member_placement_settings_handler.go (100%) rename {internal => backend/internal}/handler/member/update_member_me_handler.go (100%) rename {internal => backend/internal}/handler/member/update_member_placement_settings_handler.go (100%) rename {internal => backend/internal}/handler/normal/health_handler.go (100%) rename {internal => backend/internal}/handler/permission/get_me_permissions_handler.go (100%) rename {internal => backend/internal}/handler/permission/get_permission_catalog_handler.go (100%) rename {internal => backend/internal}/handler/persona/create_persona_handler.go (100%) rename {internal => backend/internal}/handler/persona/delete_persona_handler.go (100%) rename {internal => backend/internal}/handler/persona/generate_persona_copy_draft_handler.go (100%) rename {internal => backend/internal}/handler/persona/get_persona_handler.go (100%) rename {internal => backend/internal}/handler/persona/list_persona_copy_drafts_handler.go (100%) rename {internal => backend/internal}/handler/persona/list_persona_viral_scan_posts_handler.go (100%) rename {internal => backend/internal}/handler/persona/list_personas_handler.go (100%) rename {internal => backend/internal}/handler/persona/publish_persona_copy_draft_handler.go (100%) rename {internal => backend/internal}/handler/persona/start_persona_style_analysis_handler.go (100%) rename {internal => backend/internal}/handler/persona/start_persona_viral_scan_job_handler.go (100%) rename {internal => backend/internal}/handler/persona/update_persona_copy_draft_handler.go (100%) rename {internal => backend/internal}/handler/persona/update_persona_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/batch_delete_placement_topic_scan_posts_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/create_placement_topic_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/delete_placement_topic_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/delete_placement_topic_scan_post_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/expand_placement_topic_graph_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/generate_placement_topic_content_matrix_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/generate_placement_topic_outreach_drafts_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/get_placement_topic_content_matrix_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/get_placement_topic_graph_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/get_placement_topic_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/get_placement_topic_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/list_placement_topic_scan_posts_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/list_placement_topics_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/patch_placement_topic_graph_nodes_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/patch_placement_topic_scan_post_outreach_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/publish_placement_topic_outreach_draft_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/start_placement_topic_scan_job_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/update_placement_topic_handler.go (100%) rename {internal => backend/internal}/handler/placement_topic/upsert_placement_topic_scan_schedule_handler.go (100%) rename {internal => backend/internal}/handler/routes.go (100%) rename {internal => backend/internal}/handler/setting/delete_setting_handler.go (100%) rename {internal => backend/internal}/handler/setting/get_setting_handler.go (100%) rename {internal => backend/internal}/handler/setting/list_settings_handler.go (100%) rename {internal => backend/internal}/handler/setting/upsert_setting_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/activate_threads_account_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/create_threads_account_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/get_threads_account_ai_settings_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/get_threads_account_connection_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/get_threads_account_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/import_threads_account_session_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/list_threads_accounts_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/update_threads_account_ai_settings_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/update_threads_account_connection_handler.go (100%) rename {internal => backend/internal}/handler/threads_account/update_threads_account_handler.go (100%) rename {internal => backend/internal}/library/authctx/context.go (100%) rename {internal => backend/internal}/library/brave/breaker.go (100%) rename {internal => backend/internal}/library/brave/client.go (100%) rename {internal => backend/internal}/library/clock/clock.go (100%) rename {internal => backend/internal}/library/clock/clock_test.go (100%) rename {internal => backend/internal}/library/errors/code/types.go (100%) rename {internal => backend/internal}/library/errors/errors.go (100%) rename {internal => backend/internal}/library/exa/client.go (100%) rename {internal => backend/internal}/library/exa/client_test.go (100%) rename {internal => backend/internal}/library/knowledge/bootstrap.go (100%) rename {internal => backend/internal}/library/knowledge/bootstrap_test.go (100%) rename {internal => backend/internal}/library/knowledge/brave_collect.go (100%) rename {internal => backend/internal}/library/knowledge/brave_collect_test.go (100%) rename {internal => backend/internal}/library/knowledge/expand_strategy.go (100%) rename {internal => backend/internal}/library/knowledge/expand_strategy_test.go (100%) rename {internal => backend/internal}/library/knowledge/graph.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_input.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_phrase.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_phrase_test.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_rank.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_rank_test.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_resolve.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_resolve_test.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_tags.go (100%) rename {internal => backend/internal}/library/knowledge/patrol_tags_test.go (100%) rename {internal => backend/internal}/library/knowledge/quality.go (100%) rename {internal => backend/internal}/library/knowledge/quality_test.go (100%) rename {internal => backend/internal}/library/knowledge/queries.go (100%) rename {internal => backend/internal}/library/knowledge/queries_test.go (100%) rename {internal => backend/internal}/library/knowledge/synth.go (100%) rename {internal => backend/internal}/library/knowledge/synth_test.go (100%) rename {internal => backend/internal}/library/matrix/copy_generate.go (100%) rename {internal => backend/internal}/library/matrix/generate.go (100%) rename {internal => backend/internal}/library/matrix/samples.go (100%) rename {internal => backend/internal}/library/mongo/brand_scope.go (100%) rename {internal => backend/internal}/library/mongo/client.go (100%) rename {internal => backend/internal}/library/mongo/ensure_index.go (100%) rename {internal => backend/internal}/library/outreach/generate.go (100%) rename {internal => backend/internal}/library/outreach/generate_test.go (100%) rename {internal => backend/internal}/library/permmatch/match.go (100%) rename {internal => backend/internal}/library/permmatch/match_test.go (100%) rename {internal => backend/internal}/library/placement/ai_generate.go (100%) rename {internal => backend/internal}/library/placement/context.go (100%) rename {internal => backend/internal}/library/placement/context_prompt.go (100%) rename {internal => backend/internal}/library/placement/context_prompt_test.go (100%) rename {internal => backend/internal}/library/placement/crawler_exec.go (100%) rename {internal => backend/internal}/library/placement/crawler_exec_test.go (100%) rename {internal => backend/internal}/library/placement/crawler_polite.go (100%) rename {internal => backend/internal}/library/placement/discover.go (100%) rename {internal => backend/internal}/library/placement/discover_route.go (100%) rename {internal => backend/internal}/library/placement/discover_route_test.go (100%) rename {internal => backend/internal}/library/placement/dual_track.go (100%) rename {internal => backend/internal}/library/placement/effective_strategy.go (100%) rename {internal => backend/internal}/library/placement/effective_strategy_test.go (100%) rename {internal => backend/internal}/library/placement/exclusion.go (100%) rename {internal => backend/internal}/library/placement/filter.go (100%) rename {internal => backend/internal}/library/placement/filter_test.go (100%) rename {internal => backend/internal}/library/placement/parse_threads.go (100%) rename {internal => backend/internal}/library/placement/patrol_queries.go (100%) rename {internal => backend/internal}/library/placement/patrol_queries_test.go (100%) rename {internal => backend/internal}/library/placement/product_catalog.go (100%) rename {internal => backend/internal}/library/placement/product_context.go (100%) rename {internal => backend/internal}/library/placement/product_match.go (100%) rename {internal => backend/internal}/library/placement/query_build.go (100%) rename {internal => backend/internal}/library/placement/recency.go (100%) rename {internal => backend/internal}/library/placement/research_map.go (100%) rename {internal => backend/internal}/library/placement/research_map_test.go (100%) rename {internal => backend/internal}/library/placement/scrape_replies.go (100%) rename {internal => backend/internal}/library/placement/scrape_replies_test.go (100%) rename {internal => backend/internal}/library/placement/source_mode.go (100%) rename {internal => backend/internal}/library/placement/source_mode_test.go (100%) rename {internal => backend/internal}/library/placement/threads_api.go (100%) rename {internal => backend/internal}/library/prompt/compose.go (100%) rename {internal => backend/internal}/library/prompt/compose_test.go (100%) rename {internal => backend/internal}/library/prompt/errors.go (100%) rename {internal => backend/internal}/library/prompt/files/ai.chat.system.md (100%) rename {internal => backend/internal}/library/prompt/files/ai.islander.system.md (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph.queries.json (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph.supplemental.md (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph.system.md (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph.user.md (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph_llm.system.md (100%) rename {internal => backend/internal}/library/prompt/files/knowledge_graph_llm.user.md (100%) rename {internal => backend/internal}/library/prompt/files/matrix_copy.system.md (100%) rename {internal => backend/internal}/library/prompt/files/matrix_copy.user.md (100%) rename {internal => backend/internal}/library/prompt/files/matrix_placement.system.md (100%) rename {internal => backend/internal}/library/prompt/files/matrix_placement.user.md (100%) rename {internal => backend/internal}/library/prompt/files/outreach_placement.system.md (100%) rename {internal => backend/internal}/library/prompt/files/outreach_placement.user.md (100%) rename {internal => backend/internal}/library/prompt/files/overlay.md (100%) rename {internal => backend/internal}/library/prompt/files/style8d.schema.md (100%) rename {internal => backend/internal}/library/prompt/files/style8d.system.md (100%) rename {internal => backend/internal}/library/prompt/registry.go (100%) rename {internal => backend/internal}/library/redact/redact.go (100%) rename {internal => backend/internal}/library/redact/redact_test.go (100%) rename {internal => backend/internal}/library/redis/client.go (100%) rename {internal => backend/internal}/library/style8d/analyze.go (100%) rename {internal => backend/internal}/library/style8d/analyze_test.go (100%) rename {internal => backend/internal}/library/style8d/prompt.go (100%) rename {internal => backend/internal}/library/style8d/prompt_test.go (100%) rename {internal => backend/internal}/library/threadsapi/client.go (100%) rename {internal => backend/internal}/library/threadsapi/publish.go (100%) rename {internal => backend/internal}/library/threadsapi/replies.go (100%) rename {internal => backend/internal}/library/threadspost/limits.go (100%) rename {internal => backend/internal}/library/threadspost/limits_test.go (100%) rename {internal => backend/internal}/library/validate/validate.go (100%) rename {internal => backend/internal}/library/viral/analyze_viral.go (100%) rename {internal => backend/internal}/library/viral/discover.go (100%) rename {internal => backend/internal}/library/viral/discover_accounts.go (100%) rename {internal => backend/internal}/library/viral/discover_accounts_test.go (100%) rename {internal => backend/internal}/library/viral/discover_budget_test.go (100%) rename {internal => backend/internal}/library/viral/discover_graceful_test.go (100%) rename {internal => backend/internal}/library/viral/enrich_accounts.go (100%) rename {internal => backend/internal}/library/viral/flexible_json.go (100%) rename {internal => backend/internal}/library/viral/mission_inspire.go (100%) rename {internal => backend/internal}/library/viral/mission_inspire_collect.go (100%) rename {internal => backend/internal}/library/viral/mission_inspire_test.go (100%) rename {internal => backend/internal}/library/viral/mission_research_map.go (100%) rename {internal => backend/internal}/library/viral/mission_research_map_test.go (100%) rename {internal => backend/internal}/library/viral/quality.go (100%) rename {internal => backend/internal}/library/viral/quality_test.go (100%) rename {internal => backend/internal}/library/viral/reference_accounts.go (100%) rename {internal => backend/internal}/library/viral/reference_accounts_fallback_test.go (100%) rename {internal => backend/internal}/library/viral/reference_accounts_test.go (100%) rename {internal => backend/internal}/library/viral/replicate.go (100%) rename {internal => backend/internal}/library/viral/research_map.go (100%) rename {internal => backend/internal}/library/viral/score.go (100%) rename {internal => backend/internal}/library/viral/search_tags.go (100%) rename {internal => backend/internal}/library/viral/search_tags_test.go (100%) rename {internal => backend/internal}/library/viral/tags.go (100%) rename {internal => backend/internal}/library/viral/tags_test.go (100%) rename {internal => backend/internal}/library/websearch/client.go (100%) rename {internal => backend/internal}/logic/ai/actor.go (100%) rename {internal => backend/internal}/logic/ai/chat_logic.go (100%) rename {internal => backend/internal}/logic/ai/chat_stream_logic.go (100%) rename {internal => backend/internal}/logic/ai/credential.go (100%) rename {internal => backend/internal}/logic/ai/islander_chat_stream_logic.go (100%) rename {internal => backend/internal}/logic/ai/list_ai_provider_models_logic.go (100%) rename {internal => backend/internal}/logic/ai/list_ai_providers_logic.go (100%) rename {internal => backend/internal}/logic/ai/mapper.go (100%) rename {internal => backend/internal}/logic/auth/login_logic.go (100%) rename {internal => backend/internal}/logic/auth/logout_logic.go (100%) rename {internal => backend/internal}/logic/auth/mapper.go (100%) rename {internal => backend/internal}/logic/auth/refresh_logic.go (100%) rename {internal => backend/internal}/logic/auth/register_logic.go (100%) rename {internal => backend/internal}/logic/authz/admin.go (100%) rename {internal => backend/internal}/logic/brand/actor.go (100%) rename {internal => backend/internal}/logic/brand/create_brand_logic.go (100%) rename {internal => backend/internal}/logic/brand/create_brand_product_logic.go (100%) rename {internal => backend/internal}/logic/brand/delete_brand_logic.go (100%) rename {internal => backend/internal}/logic/brand/delete_brand_product_logic.go (100%) rename {internal => backend/internal}/logic/brand/expand_knowledge_graph_logic.go (100%) rename {internal => backend/internal}/logic/brand/generate_brand_content_matrix_logic.go (100%) rename {internal => backend/internal}/logic/brand/generate_outreach_drafts_logic.go (100%) rename {internal => backend/internal}/logic/brand/get_brand_content_matrix_logic.go (100%) rename {internal => backend/internal}/logic/brand/get_brand_logic.go (100%) rename {internal => backend/internal}/logic/brand/get_brand_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/brand/get_knowledge_graph_logic.go (100%) rename {internal => backend/internal}/logic/brand/list_brand_products_logic.go (100%) rename {internal => backend/internal}/logic/brand/list_brand_scan_posts_logic.go (100%) rename {internal => backend/internal}/logic/brand/list_brands_logic.go (100%) rename {internal => backend/internal}/logic/brand/mapper.go (100%) rename {internal => backend/internal}/logic/brand/patch_knowledge_graph_nodes_logic.go (100%) rename {internal => backend/internal}/logic/brand/patch_scan_post_outreach_logic.go (100%) rename {internal => backend/internal}/logic/brand/publish_outreach_draft_logic.go (100%) rename {internal => backend/internal}/logic/brand/start_brand_scan_job_logic.go (100%) rename {internal => backend/internal}/logic/brand/update_brand_logic.go (100%) rename {internal => backend/internal}/logic/brand/update_brand_product_logic.go (100%) rename {internal => backend/internal}/logic/brand/upsert_brand_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/actor.go (100%) rename {internal => backend/internal}/logic/copy_mission/create_copy_mission_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/delete_copy_mission_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/generate_copy_mission_matrix_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/get_copy_mission_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/get_copy_mission_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/inspire_copy_mission_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/list_copy_mission_copy_drafts_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/list_copy_mission_scan_posts_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/list_copy_missions_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/mapper.go (100%) rename {internal => backend/internal}/logic/copy_mission/schedule_helper.go (100%) rename {internal => backend/internal}/logic/copy_mission/start_copy_mission_analyze_job_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/start_copy_mission_copy_draft_job_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/start_copy_mission_matrix_job_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/start_copy_mission_scan_job_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/update_copy_mission_logic.go (100%) rename {internal => backend/internal}/logic/copy_mission/upsert_copy_mission_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/ack_worker_job_cancel_logic.go (100%) rename {internal => backend/internal}/logic/job/actor.go (100%) rename {internal => backend/internal}/logic/job/analyze_style8_d_from_worker_logic.go (100%) rename {internal => backend/internal}/logic/job/cancel_job_logic.go (100%) rename {internal => backend/internal}/logic/job/check_worker_job_cancel_logic.go (100%) rename {internal => backend/internal}/logic/job/claim_worker_job_logic.go (100%) rename {internal => backend/internal}/logic/job/complete_worker_job_logic.go (100%) rename {internal => backend/internal}/logic/job/create_job_logic.go (100%) rename {internal => backend/internal}/logic/job/create_job_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/delete_job_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/disable_job_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/enable_job_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/fail_worker_job_logic.go (100%) rename {internal => backend/internal}/logic/job/get_job_logic.go (100%) rename {internal => backend/internal}/logic/job/get_job_template_logic.go (100%) rename {internal => backend/internal}/logic/job/get_worker_threads_account_session_logic.go (100%) rename {internal => backend/internal}/logic/job/list_job_events_logic.go (100%) rename {internal => backend/internal}/logic/job/list_job_schedules_logic.go (100%) rename {internal => backend/internal}/logic/job/list_job_templates_logic.go (100%) rename {internal => backend/internal}/logic/job/list_jobs_logic.go (100%) rename {internal => backend/internal}/logic/job/mapper.go (100%) rename {internal => backend/internal}/logic/job/ownership.go (100%) rename {internal => backend/internal}/logic/job/ownership_test.go (100%) rename {internal => backend/internal}/logic/job/refresh_worker_job_lock_logic.go (100%) rename {internal => backend/internal}/logic/job/retry_job_logic.go (100%) rename {internal => backend/internal}/logic/job/store_persona_style_profile_from_worker_logic.go (100%) rename {internal => backend/internal}/logic/job/update_job_schedule_logic.go (100%) rename {internal => backend/internal}/logic/job/update_worker_job_progress_logic.go (100%) rename {internal => backend/internal}/logic/job/upsert_job_template_logic.go (100%) rename {internal => backend/internal}/logic/job/worker_helpers.go (100%) rename {internal => backend/internal}/logic/member/get_member_me_logic.go (100%) rename {internal => backend/internal}/logic/member/get_member_placement_settings_logic.go (100%) rename {internal => backend/internal}/logic/member/mapper.go (100%) rename {internal => backend/internal}/logic/member/update_member_me_logic.go (100%) rename {internal => backend/internal}/logic/member/update_member_placement_settings_logic.go (100%) rename {internal => backend/internal}/logic/normal/health_logic.go (100%) rename {internal => backend/internal}/logic/permission/get_me_permissions_logic.go (100%) rename {internal => backend/internal}/logic/permission/get_permission_catalog_logic.go (100%) rename {internal => backend/internal}/logic/permission/mapper.go (100%) rename {internal => backend/internal}/logic/persona/actor.go (100%) rename {internal => backend/internal}/logic/persona/create_persona_logic.go (100%) rename {internal => backend/internal}/logic/persona/delete_persona_logic.go (100%) rename {internal => backend/internal}/logic/persona/generate_persona_copy_draft_logic.go (100%) rename {internal => backend/internal}/logic/persona/get_persona_logic.go (100%) rename {internal => backend/internal}/logic/persona/list_persona_copy_drafts_logic.go (100%) rename {internal => backend/internal}/logic/persona/list_persona_viral_scan_posts_logic.go (100%) rename {internal => backend/internal}/logic/persona/list_personas_logic.go (100%) rename {internal => backend/internal}/logic/persona/mapper.go (100%) rename {internal => backend/internal}/logic/persona/publish_persona_copy_draft_logic.go (100%) rename {internal => backend/internal}/logic/persona/start_persona_style_analysis_logic.go (100%) rename {internal => backend/internal}/logic/persona/start_persona_viral_scan_job_logic.go (100%) rename {internal => backend/internal}/logic/persona/update_persona_copy_draft_logic.go (100%) rename {internal => backend/internal}/logic/persona/update_persona_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/actor.go (100%) rename {internal => backend/internal}/logic/placement_topic/batch_delete_placement_topic_scan_posts_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/create_placement_topic_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/delete_placement_topic_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/delete_placement_topic_scan_post_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/expand_placement_topic_graph_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/generate_placement_topic_content_matrix_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/generate_placement_topic_outreach_drafts_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/get_placement_topic_content_matrix_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/get_placement_topic_graph_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/get_placement_topic_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/get_placement_topic_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/list_placement_topic_scan_posts_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/list_placement_topics_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/mapper.go (100%) rename {internal => backend/internal}/logic/placement_topic/patch_placement_topic_graph_nodes_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/patch_placement_topic_scan_post_outreach_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/publish_placement_topic_outreach_draft_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/scope.go (100%) rename {internal => backend/internal}/logic/placement_topic/start_placement_topic_scan_job_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/update_placement_topic_logic.go (100%) rename {internal => backend/internal}/logic/placement_topic/upsert_placement_topic_scan_schedule_logic.go (100%) rename {internal => backend/internal}/logic/setting/delete_setting_logic.go (100%) rename {internal => backend/internal}/logic/setting/get_setting_logic.go (100%) rename {internal => backend/internal}/logic/setting/list_settings_logic.go (100%) rename {internal => backend/internal}/logic/setting/mapper.go (100%) rename {internal => backend/internal}/logic/setting/upsert_setting_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/activate_threads_account_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/actor.go (100%) rename {internal => backend/internal}/logic/threads_account/create_threads_account_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/get_threads_account_ai_settings_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/get_threads_account_connection_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/get_threads_account_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/import_threads_account_session_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/list_threads_accounts_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/mapper.go (100%) rename {internal => backend/internal}/logic/threads_account/update_threads_account_ai_settings_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/update_threads_account_connection_logic.go (100%) rename {internal => backend/internal}/logic/threads_account/update_threads_account_logic.go (100%) rename {internal => backend/internal}/middleware/auth.go (100%) rename {internal => backend/internal}/middleware/auth_middleware.go (100%) rename {internal => backend/internal}/middleware/auth_test.go (100%) rename {internal => backend/internal}/middleware/authjwt_middleware.go (100%) rename {internal => backend/internal}/middleware/memberauth_middleware.go (100%) rename {internal => backend/internal}/middleware/permissionrbac_middleware.go (100%) rename {internal => backend/internal}/middleware/workersecret_middleware.go (100%) rename {internal => backend/internal}/model/ai/domain/enum/provider.go (100%) rename {internal => backend/internal}/model/ai/domain/usecase/ai.go (100%) rename {internal => backend/internal}/model/ai/provider/openai_compatible.go (100%) rename {internal => backend/internal}/model/ai/provider/openai_compatible_test.go (100%) rename {internal => backend/internal}/model/ai/usecase/provider_map.go (100%) rename {internal => backend/internal}/model/ai/usecase/usecase.go (100%) rename {internal => backend/internal}/model/auth/domain/repository/token_revoke.go (100%) rename {internal => backend/internal}/model/auth/domain/usecase/token.go (100%) rename {internal => backend/internal}/model/auth/repository/token_revoke_redis.go (100%) rename {internal => backend/internal}/model/auth/usecase/token.go (100%) rename {internal => backend/internal}/model/brand/domain/entity/brand.go (100%) rename {internal => backend/internal}/model/brand/domain/entity/product.go (100%) rename {internal => backend/internal}/model/brand/domain/entity/research_map.go (100%) rename {internal => backend/internal}/model/brand/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/brand/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/brand/repository/mongo.go (100%) rename {internal => backend/internal}/model/brand/usecase/products.go (100%) rename {internal => backend/internal}/model/brand/usecase/usecase.go (100%) rename {internal => backend/internal}/model/content_matrix/domain/entity/matrix.go (100%) rename {internal => backend/internal}/model/content_matrix/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/content_matrix/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/content_matrix/repository/mongo.go (100%) rename {internal => backend/internal}/model/content_matrix/usecase/usecase.go (100%) rename {internal => backend/internal}/model/copy_draft/domain/entity/draft.go (100%) rename {internal => backend/internal}/model/copy_draft/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/copy_draft/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/copy_draft/repository/mongo.go (100%) rename {internal => backend/internal}/model/copy_draft/usecase/usecase.go (100%) rename {internal => backend/internal}/model/copy_mission/domain/entity/mission.go (100%) rename {internal => backend/internal}/model/copy_mission/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/copy_mission/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/copy_mission/repository/mongo.go (100%) rename {internal => backend/internal}/model/copy_mission/usecase/usecase.go (100%) rename {internal => backend/internal}/model/job/cron/next_run.go (100%) rename {internal => backend/internal}/model/job/cron/next_run_test.go (100%) rename {internal => backend/internal}/model/job/domain/entity/event.go (100%) rename {internal => backend/internal}/model/job/domain/entity/run.go (100%) rename {internal => backend/internal}/model/job/domain/entity/schedule.go (100%) rename {internal => backend/internal}/model/job/domain/entity/template.go (100%) rename {internal => backend/internal}/model/job/domain/enum/status.go (100%) rename {internal => backend/internal}/model/job/domain/repository/event.go (100%) rename {internal => backend/internal}/model/job/domain/repository/queue.go (100%) rename {internal => backend/internal}/model/job/domain/repository/run.go (100%) rename {internal => backend/internal}/model/job/domain/repository/schedule.go (100%) rename {internal => backend/internal}/model/job/domain/repository/template.go (100%) rename {internal => backend/internal}/model/job/domain/usecase/job.go (100%) rename {internal => backend/internal}/model/job/repository/mongo_event.go (100%) rename {internal => backend/internal}/model/job/repository/mongo_run.go (100%) rename {internal => backend/internal}/model/job/repository/mongo_schedule.go (100%) rename {internal => backend/internal}/model/job/repository/mongo_template.go (100%) rename {internal => backend/internal}/model/job/repository/redis_queue.go (100%) rename {internal => backend/internal}/model/job/repository/redis_queue_test.go (100%) rename {internal => backend/internal}/model/job/resume/resume.go (100%) rename {internal => backend/internal}/model/job/resume/resume_test.go (100%) rename {internal => backend/internal}/model/job/usecase/cancel_test.go (100%) rename {internal => backend/internal}/model/job/usecase/dedupe_test.go (100%) rename {internal => backend/internal}/model/job/usecase/helpers.go (100%) rename {internal => backend/internal}/model/job/usecase/maintenance.go (100%) rename {internal => backend/internal}/model/job/usecase/maintenance_test.go (100%) rename {internal => backend/internal}/model/job/usecase/refresh_lock_test.go (100%) rename {internal => backend/internal}/model/job/usecase/retry_resume_test.go (100%) rename {internal => backend/internal}/model/job/usecase/retry_test.go (100%) rename {internal => backend/internal}/model/job/usecase/schedule.go (100%) rename {internal => backend/internal}/model/job/usecase/schedule_payload.go (100%) rename {internal => backend/internal}/model/job/usecase/schedule_payload_test.go (100%) rename {internal => backend/internal}/model/job/usecase/schedule_test.go (100%) rename {internal => backend/internal}/model/job/usecase/step_resume.go (100%) rename {internal => backend/internal}/model/job/usecase/template.go (100%) rename {internal => backend/internal}/model/job/usecase/template_test.go (100%) rename {internal => backend/internal}/model/job/usecase/test_mocks.go (100%) rename {internal => backend/internal}/model/job/usecase/usecase.go (100%) rename {internal => backend/internal}/model/knowledge_graph/domain/entity/graph.go (100%) rename {internal => backend/internal}/model/knowledge_graph/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/knowledge_graph/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/knowledge_graph/repository/mongo.go (100%) rename {internal => backend/internal}/model/knowledge_graph/usecase/usecase.go (100%) rename {internal => backend/internal}/model/member/domain/entity/member.go (100%) rename {internal => backend/internal}/model/member/domain/repository/member.go (100%) rename {internal => backend/internal}/model/member/domain/usecase/member.go (100%) rename {internal => backend/internal}/model/member/repository/mongo.go (100%) rename {internal => backend/internal}/model/member/usecase/usecase.go (100%) rename {internal => backend/internal}/model/outreach_draft/domain/entity/draft.go (100%) rename {internal => backend/internal}/model/outreach_draft/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/outreach_draft/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/outreach_draft/repository/mongo.go (100%) rename {internal => backend/internal}/model/outreach_draft/usecase/errors.go (100%) rename {internal => backend/internal}/model/outreach_draft/usecase/usecase.go (100%) rename {internal => backend/internal}/model/permission/domain/entity/permission.go (100%) rename {internal => backend/internal}/model/permission/domain/repository/permission.go (100%) rename {internal => backend/internal}/model/permission/domain/usecase/permission.go (100%) rename {internal => backend/internal}/model/permission/repository/mongo_permission.go (100%) rename {internal => backend/internal}/model/permission/repository/mongo_role_permission.go (100%) rename {internal => backend/internal}/model/permission/repository/object_id.go (100%) rename {internal => backend/internal}/model/permission/usecase/usecase.go (100%) rename {internal => backend/internal}/model/permission/usecase/usecase_test.go (100%) rename {internal => backend/internal}/model/persona/domain/entity/copy_research_map.go (100%) rename {internal => backend/internal}/model/persona/domain/entity/persona.go (100%) rename {internal => backend/internal}/model/persona/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/persona/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/persona/repository/mongo.go (100%) rename {internal => backend/internal}/model/persona/usecase/usecase.go (100%) rename {internal => backend/internal}/model/placement/usecase/settings.go (100%) rename {internal => backend/internal}/model/placement_topic/domain/entity/topic.go (100%) rename {internal => backend/internal}/model/placement_topic/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/placement_topic/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/placement_topic/repository/mongo.go (100%) rename {internal => backend/internal}/model/placement_topic/usecase/usecase.go (100%) rename {internal => backend/internal}/model/scan_post/domain/entity/outreach_patch.go (100%) rename {internal => backend/internal}/model/scan_post/domain/entity/post.go (100%) rename {internal => backend/internal}/model/scan_post/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/scan_post/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/scan_post/repository/mongo.go (100%) rename {internal => backend/internal}/model/scan_post/repository/mongo_priority_filter_test.go (100%) rename {internal => backend/internal}/model/scan_post/repository/mongo_topic_scope_test.go (100%) rename {internal => backend/internal}/model/scan_post/usecase/errors.go (100%) rename {internal => backend/internal}/model/scan_post/usecase/usecase.go (100%) rename {internal => backend/internal}/model/setting/domain/entity/setting.go (100%) rename {internal => backend/internal}/model/setting/domain/repository/setting.go (100%) rename {internal => backend/internal}/model/setting/domain/usecase/setting.go (100%) rename {internal => backend/internal}/model/setting/repository/mongo.go (100%) rename {internal => backend/internal}/model/setting/usecase/usecase.go (100%) rename {internal => backend/internal}/model/threads_account/domain/entity/account.go (100%) rename {internal => backend/internal}/model/threads_account/domain/entity/secrets.go (100%) rename {internal => backend/internal}/model/threads_account/domain/repository/repository.go (100%) rename {internal => backend/internal}/model/threads_account/domain/usecase/usecase.go (100%) rename {internal => backend/internal}/model/threads_account/repository/mongo.go (100%) rename {internal => backend/internal}/model/threads_account/repository/secrets_mongo.go (100%) rename {internal => backend/internal}/model/threads_account/usecase/ai_credentials.go (100%) rename {internal => backend/internal}/model/threads_account/usecase/placement_context.go (100%) rename {internal => backend/internal}/model/threads_account/usecase/placement_context_test.go (100%) rename {internal => backend/internal}/model/threads_account/usecase/publish_credentials.go (100%) rename {internal => backend/internal}/model/threads_account/usecase/usecase.go (100%) rename {internal => backend/internal}/response/request.go (100%) rename {internal => backend/internal}/response/response.go (100%) rename {internal => backend/internal}/svc/service_context.go (100%) rename {internal => backend/internal}/types/types.go (100%) rename {internal => backend/internal}/worker/job/analyze_copy_mission.go (100%) rename {internal => backend/internal}/worker/job/crawler_search.go (100%) rename {internal => backend/internal}/worker/job/expand_graph.go (100%) rename {internal => backend/internal}/worker/job/generate_copy_draft.go (100%) rename {internal => backend/internal}/worker/job/generate_copy_matrix.go (100%) rename {internal => backend/internal}/worker/job/payload_actor.go (100%) rename {internal => backend/internal}/worker/job/placement_scope.go (100%) rename {internal => backend/internal}/worker/job/reaper.go (100%) rename {internal => backend/internal}/worker/job/runner.go (100%) rename {internal => backend/internal}/worker/job/runner_test.go (100%) rename {internal => backend/internal}/worker/job/scan_placement.go (100%) rename {internal => backend/internal}/worker/job/scan_viral.go (100%) rename {internal => backend/internal}/worker/job/scheduler.go (100%) rename {worker => backend/worker}/package.json (100%) rename {worker => backend/worker}/style-8d-worker.ts (100%) rename {worker => backend/worker}/threads-keyword-search-cli.ts (100%) rename {worker => backend/worker}/threads-keyword-search.ts (100%) rename {worker => backend/worker}/threads-profile-scraper.ts (100%) rename {web => frontend}/.gitignore (100%) rename {web => frontend}/index.html (100%) rename {web => frontend}/package-lock.json (100%) rename {web => frontend}/package.json (100%) rename {web => frontend}/public/downloads/haixun-threads-sync.zip (100%) rename {web => frontend}/public/illustrations/island/airplane.svg (100%) rename {web => frontend}/public/illustrations/island/bell.svg (100%) rename {web => frontend}/public/illustrations/island/cloud.svg (100%) rename {web => frontend}/public/illustrations/island/desert-island.svg (100%) rename {web => frontend}/public/illustrations/island/herb.svg (100%) rename {web => frontend}/public/illustrations/island/hut.svg (100%) rename {web => frontend}/public/illustrations/island/magnifying-glass.svg (100%) rename {web => frontend}/public/illustrations/island/passport.svg (100%) rename {web => frontend}/public/illustrations/island/sun.svg (100%) rename {web => frontend}/public/illustrations/island/water-wave.svg (100%) rename {web => frontend}/src/App.tsx (100%) rename {web => frontend}/src/api/client.ts (100%) rename {web => frontend}/src/auth/AuthContext.tsx (100%) rename {web => frontend}/src/components/AcIcon.tsx (100%) rename {web => frontend}/src/components/AccountAiSettings.tsx (100%) rename {web => frontend}/src/components/AccountConnectionMode.tsx (100%) rename {web => frontend}/src/components/AccountDisplayNameSettings.tsx (100%) rename {web => frontend}/src/components/AccountSwitcher.tsx (100%) rename {web => frontend}/src/components/AdminRoute.tsx (100%) rename {web => frontend}/src/components/AppBrandLink.tsx (100%) rename {web => frontend}/src/components/AppSidebar.tsx (100%) rename {web => frontend}/src/components/AuthDecor.tsx (100%) rename {web => frontend}/src/components/AuthShell.tsx (100%) rename {web => frontend}/src/components/BrandProductPicker.tsx (100%) rename {web => frontend}/src/components/BrandProductsPanel.tsx (100%) rename {web => frontend}/src/components/BrandSwitcher.tsx (100%) rename {web => frontend}/src/components/CopyFlowNav.tsx (100%) rename {web => frontend}/src/components/CopyFlowPipeline.tsx (100%) rename {web => frontend}/src/components/CopyMissionActiveJobsCard.tsx (100%) rename {web => frontend}/src/components/CopyMissionAnalyzeJobPanel.tsx (100%) rename {web => frontend}/src/components/CopyMissionDiceButton.tsx (100%) rename {web => frontend}/src/components/CopyMissionDraftCard.tsx (100%) rename {web => frontend}/src/components/CopyMissionJobPanel.tsx (100%) rename {web => frontend}/src/components/CopyMissionResearchEditor.tsx (100%) rename {web => frontend}/src/components/CopyMissionResearchOverview.tsx (100%) rename {web => frontend}/src/components/CopyMissionScanSchedulePanel.tsx (100%) rename {web => frontend}/src/components/CopyMissionSwitcher.tsx (100%) rename {web => frontend}/src/components/CopyPersonaSwitcher.tsx (100%) rename {web => frontend}/src/components/CopySuggestedTagsPicker.tsx (100%) rename {web => frontend}/src/components/CreatePlacementTopicDialog.tsx (100%) rename {web => frontend}/src/components/DevToolsPanel.tsx (100%) rename {web => frontend}/src/components/EvidenceList.tsx (100%) rename {web => frontend}/src/components/ExpandGraphJobPanel.tsx (100%) rename {web => frontend}/src/components/ExpandStrategyField.tsx (100%) rename {web => frontend}/src/components/ExtensionInstallCard.tsx (100%) rename {web => frontend}/src/components/JobMonitor.tsx (100%) rename {web => frontend}/src/components/KnowledgeGraphPanel.tsx (100%) rename {web => frontend}/src/components/KnowledgeLayerRipple.tsx (100%) rename {web => frontend}/src/components/KnowledgeOrbitDiagram.tsx (100%) rename {web => frontend}/src/components/KnowledgeOverviewPanel.tsx (100%) rename {web => frontend}/src/components/Layout.tsx (100%) rename {web => frontend}/src/components/LegacyBrandRouteRedirect.tsx (100%) rename {web => frontend}/src/components/MatrixEntryRoute.tsx (100%) rename {web => frontend}/src/components/MemberMenu.tsx (100%) rename {web => frontend}/src/components/MobileBottomNav.tsx (100%) rename {web => frontend}/src/components/OnboardingBanner.tsx (100%) rename {web => frontend}/src/components/OnboardingGuide.tsx (100%) rename {web => frontend}/src/components/OnboardingRouteGuard.tsx (100%) rename {web => frontend}/src/components/OutreachEntryRoute.tsx (100%) rename {web => frontend}/src/components/PatrolKeywordsEditor.tsx (100%) rename {web => frontend}/src/components/PatrolNodeTagsEditor.tsx (100%) rename {web => frontend}/src/components/PersonaIslandArt.tsx (100%) rename {web => frontend}/src/components/PersonaScanSchedulePanel.tsx (100%) rename {web => frontend}/src/components/PlacementFlowNav.tsx (100%) rename {web => frontend}/src/components/PlacementFlowPipeline.tsx (100%) rename {web => frontend}/src/components/PlacementResearchSettings.tsx (100%) rename {web => frontend}/src/components/PlacementScanJobPanel.tsx (100%) rename {web => frontend}/src/components/ProductContextForm.tsx (100%) rename {web => frontend}/src/components/ProductItemForm.tsx (100%) rename {web => frontend}/src/components/ProtectedRoute.tsx (100%) rename {web => frontend}/src/components/RegisterForm.tsx (100%) rename {web => frontend}/src/components/ReplyPersonaPicker.tsx (100%) rename {web => frontend}/src/components/ResearchMapEditor.tsx (100%) rename {web => frontend}/src/components/ResearchMapOverview.tsx (100%) rename {web => frontend}/src/components/ResearchMapPanel.tsx (100%) rename {web => frontend}/src/components/ScheduleFrequencyPicker.tsx (100%) rename {web => frontend}/src/components/SourceLinkPreview.tsx (100%) rename {web => frontend}/src/components/StringListEditor.tsx (100%) rename {web => frontend}/src/components/Style8DAnalysisMeta.tsx (100%) rename {web => frontend}/src/components/Style8DDimensionEditor.tsx (100%) rename {web => frontend}/src/components/Style8DJobPanel.tsx (100%) rename {web => frontend}/src/components/ThemeToggle.tsx (100%) rename {web => frontend}/src/components/ThreadsAccountWorkspace.tsx (100%) rename {web => frontend}/src/components/ThreadsPostCharMeter.tsx (100%) rename {web => frontend}/src/components/TopicSwitcher.tsx (100%) rename {web => frontend}/src/components/VerifiedAuthorBadge.tsx (100%) rename {web => frontend}/src/components/ViralScanJobPanel.tsx (100%) rename {web => frontend}/src/components/islander/IslanderAvatar.tsx (100%) rename {web => frontend}/src/components/islander/IslanderChatPanel.tsx (100%) rename {web => frontend}/src/components/islander/IslanderCompanion.tsx (100%) rename {web => frontend}/src/components/islander/IslanderMarkdown.tsx (100%) rename {web => frontend}/src/components/ui.tsx (100%) rename {web => frontend}/src/hooks/useActiveBrand.ts (100%) rename {web => frontend}/src/hooks/useActiveCopyPersona.ts (100%) rename {web => frontend}/src/hooks/useActiveTopic.ts (100%) rename {web => frontend}/src/hooks/useIslanderUnlock.ts (100%) rename {web => frontend}/src/index.css (100%) rename {web => frontend}/src/lib/acAssets.ts (100%) rename {web => frontend}/src/lib/aiCredentials.ts (100%) rename {web => frontend}/src/lib/brandContext.ts (100%) rename {web => frontend}/src/lib/connectionMode.ts (100%) rename {web => frontend}/src/lib/copyFlow.ts (100%) rename {web => frontend}/src/lib/copyMissionJobs.ts (100%) rename {web => frontend}/src/lib/easterEggCatalog.ts (100%) rename {web => frontend}/src/lib/extensionInstall.ts (100%) rename {web => frontend}/src/lib/extensionSync.ts (100%) rename {web => frontend}/src/lib/formatDate.ts (100%) rename {web => frontend}/src/lib/islander/IslanderPageContext.tsx (100%) rename {web => frontend}/src/lib/islander/actionExecutor.ts (100%) rename {web => frontend}/src/lib/islander/buildIslanderContext.ts (100%) rename {web => frontend}/src/lib/islander/config.ts (100%) rename {web => frontend}/src/lib/islander/copyActions.ts (100%) rename {web => frontend}/src/lib/islander/handoffStore.ts (100%) rename {web => frontend}/src/lib/islander/index.ts (100%) rename {web => frontend}/src/lib/islander/islanderActions.ts (100%) rename {web => frontend}/src/lib/islander/islanderAgent.ts (100%) rename {web => frontend}/src/lib/islander/outreachActions.ts (100%) rename {web => frontend}/src/lib/islander/pageContextIntent.ts (100%) rename {web => frontend}/src/lib/islander/pageRegistry.ts (100%) rename {web => frontend}/src/lib/islander/pageSnapshot.ts (100%) rename {web => frontend}/src/lib/islander/researchActions.ts (100%) rename {web => frontend}/src/lib/islander/siteGuide.ts (100%) rename {web => frontend}/src/lib/islander/types.ts (100%) rename {web => frontend}/src/lib/islander/unlock.ts (100%) rename {web => frontend}/src/lib/islander/useIslanderPosition.ts (100%) rename {web => frontend}/src/lib/jobStatus.ts (100%) rename {web => frontend}/src/lib/jobTemplate.ts (100%) rename {web => frontend}/src/lib/knowledgeGraph.ts (100%) rename {web => frontend}/src/lib/memberRole.ts (100%) rename {web => frontend}/src/lib/onboarding.ts (100%) rename {web => frontend}/src/lib/pageJobScope.ts (100%) rename {web => frontend}/src/lib/placementFlow.ts (100%) rename {web => frontend}/src/lib/placementResearch.ts (100%) rename {web => frontend}/src/lib/placementTopics.ts (100%) rename {web => frontend}/src/lib/productCatalog.ts (100%) rename {web => frontend}/src/lib/productContext.ts (100%) rename {web => frontend}/src/lib/productMatch.ts (100%) rename {web => frontend}/src/lib/publishPersona.ts (100%) rename {web => frontend}/src/lib/scheduleCatalog.ts (100%) rename {web => frontend}/src/lib/scheduleCron.ts (100%) rename {web => frontend}/src/lib/searchSourceMode.ts (100%) rename {web => frontend}/src/lib/sourcePreview.ts (100%) rename {web => frontend}/src/lib/storage.ts (100%) rename {web => frontend}/src/lib/styleEvidence.ts (100%) rename {web => frontend}/src/lib/styleProfile.ts (100%) rename {web => frontend}/src/lib/threadsAccount.ts (100%) rename {web => frontend}/src/lib/threadsLinks.ts (100%) rename {web => frontend}/src/lib/threadsPostLimits.ts (100%) rename {web => frontend}/src/lib/viralSignals.ts (100%) rename {web => frontend}/src/main.tsx (100%) rename {web => frontend}/src/onboarding/OnboardingContext.tsx (100%) rename {web => frontend}/src/pages/BrandDetailPage.tsx (100%) rename {web => frontend}/src/pages/BrandProductEditPage.tsx (100%) rename {web => frontend}/src/pages/BrandsPage.tsx (100%) rename {web => frontend}/src/pages/CopyMatrixPage.tsx (100%) rename {web => frontend}/src/pages/CopyMissionDetailPage.tsx (100%) rename {web => frontend}/src/pages/DashboardPage.tsx (100%) rename {web => frontend}/src/pages/EasterEggsPage.tsx (100%) rename {web => frontend}/src/pages/JobDetailPage.tsx (100%) rename {web => frontend}/src/pages/JobSchedulesPage.tsx (100%) rename {web => frontend}/src/pages/JobTemplatesPage.tsx (100%) rename {web => frontend}/src/pages/JobsPage.tsx (100%) rename {web => frontend}/src/pages/LoginPage.tsx (100%) rename {web => frontend}/src/pages/PermissionsPage.tsx (100%) rename {web => frontend}/src/pages/PersonaDetailPage.tsx (100%) rename {web => frontend}/src/pages/PersonaMatrixPage.tsx (100%) rename {web => frontend}/src/pages/PersonaOutreachPage.tsx (100%) rename {web => frontend}/src/pages/PersonaResearchPage.tsx (100%) rename {web => frontend}/src/pages/PersonasPage.tsx (100%) rename {web => frontend}/src/pages/PlacementTopicResearchMapPage.tsx (100%) rename {web => frontend}/src/pages/PlacementTopicSettingsPage.tsx (100%) rename {web => frontend}/src/pages/PlacementTopicsPage.tsx (100%) rename {web => frontend}/src/pages/ProfilePage.tsx (100%) rename {web => frontend}/src/pages/SettingsPage.tsx (100%) rename {web => frontend}/src/pages/ThreadsAccountConnectionsPage.tsx (100%) rename {web => frontend}/src/pages/ThreadsAccountPublishPage.tsx (100%) rename {web => frontend}/src/theme/ThemeContext.tsx (100%) rename {web => frontend}/src/threads/ThreadsAccountContext.tsx (100%) rename {web => frontend}/src/types/api.ts (100%) rename {web => frontend}/src/types/brand.ts (100%) rename {web => frontend}/src/types/copyMission.ts (100%) rename {web => frontend}/src/types/placementTopic.ts (100%) rename {web => frontend}/src/vite-env.d.ts (100%) rename {web => frontend}/tsconfig.app.json (100%) rename {web => frontend}/tsconfig.json (100%) rename {web => frontend}/tsconfig.node.json (100%) rename {web => frontend}/vite.config.ts (100%) diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..cae0d5cd8b171ebf082feb40899c59065fbc2153 GIT binary patch literal 8196 zcmeHM&rcLd6n+ILJ+f$npg=U4IEURtqTsTdY&OPWz##ruSevl0pksGWG4#??HR*0Z zAS83x)9%TWC*#?>F(zKT>BXz@vhh#Yy%|rtuYQaSGeg!B8mvmHzBg6htLpl?Uw6MA z03f;5!Z1J|09aTB+8x+5DPmmIhSH*Yx)BNb1I&N}=b!|I$*_TKI*bBF0i%FXz$jo8 z_#70#XSOKT9?yL>YFeX!QQ(VIK-?eFSOsP^Rusxx2R1SVKy1TqSDOLW;Iq6 zN>`jyWe-HV5}jfY<&NWNK}XDLtSD6OK$JTWy)w}m3X!X$Us}?EWEGm$C}0$5R6ykJ zDHw$bxC}ql=I`A1Lhj+H2&f#^C;!TV7C<|A;DQe;K!J&De;4~YGQQrM?XAaUJ@-?u z90qYRH1wLZw6+~O+-|j79o8*pnXfyEo2HxW_F9#2WSIoyH|5__J=Lf6d>TlMM%}3ni^Go3OXV77 z9izm@$Mq#{omlz({?G4Tj5f|w;)Rc3m6!i-wKXSVA!kKgLF~eUC5V7yU?xq&^D%M; zYr?aEe?S7XVP7Uh4{nGyob0-wI0OL(ga{0G_tT0T#c&v|35ObHlR&Q-tqt<43vV9k zAm7E<3Gn8OCc%w|vrnZ}tN`;VL9}2; z8tWabq6l6^p>)AUP(;5>#}PmLVTg8Gk7YGh6ygY$eg6<3k{a`he$Zag>PI)5kae E0k4#!LI3~& literal 0 HcmV?d00001 diff --git a/backend/.DS_Store b/backend/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..438083423bf4bec3d4e830d38faa44c1e6106d17 GIT binary patch literal 8196 zcmeHM&2JM&6n`&ClQrRE0|^9FBnw|EfgnJrR3U^hiD-mSqBsf(UuM0Ym?i5OYj+(J zqDVfsr}oYtz?BnHFFhipUb!Lu1h{g7Hy;k(b)%jN2xg?2-`jb=H?#9wz1L zD4HV%nzIAyaPk)ozoSuy1FD&695XYT6AGH62j&$Wu&B|tRspL(zXCE{2Em60)aJs} z`TZGrZhcTig$+Rs1To_@4^L!xgTNpGKg0Sn!`cIN@QBBtO}GiC=~|>?24sr&-ho3L z2Apc7V>A5dzxdU5+%&&XJg+vxAWo*HUg5yt&=12S&WJPW+$}#4?Q-HJt+?bxx8>E6 z5Mi}zd)4KDwJYxURlyT4;4D%BL5&gR&dq?=M7tzfycVn2vUWH*Cs%PNx3;FIr%vTB zoSWJ{mEZd19NE+7f8O5CITM957Z)q*VS|g`Xbn`*yyjq^zTRnnC#z3~z~3W)=5fhPudV_dazkZ8nKB{;5L^cP(O!tMTU7)?${d^w_Hv_dx7N zA`BNq93+9@t9N43doE#(Ild-n#tqVXzA0VtGK*ruzL=F&FN!=~XQj=%p;u+$JTHkP z5e>t1%ULL1?;1a8!-ax2NaXRZWe^L0d-s*S#06)$T%ovN zTn?OsD{uprVI3aBAMga8!e8(LUc*~>k0W>#PvA+M#!Gk^f5kbxg+4yO03Yi3f$qaT zZpJf!F&TXid!rojQ1CkWWZbY!97>-Cwb>Ldk^f~+3U|3Nw4jkr9+2tY%XJ{2RFerB z5qc1&`6}&u`8imGSyEw!beL85lers|uYlf&VM={Lqp!<3(xa=?-qR3X$zitJa%al)NH49U(LU(sMkBYCKN_8$UhOaFCj<5Qmn`~A1yf0YlPtN94x CS*}