adaria-ai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +21 -0
- package/apps.example.yaml +65 -0
- package/dist/agent/audit.d.ts +16 -0
- package/dist/agent/audit.d.ts.map +1 -0
- package/dist/agent/audit.js +42 -0
- package/dist/agent/audit.js.map +1 -0
- package/dist/agent/claude.d.ts +62 -0
- package/dist/agent/claude.d.ts.map +1 -0
- package/dist/agent/claude.js +297 -0
- package/dist/agent/claude.js.map +1 -0
- package/dist/agent/conversation-summary.d.ts +29 -0
- package/dist/agent/conversation-summary.d.ts.map +1 -0
- package/dist/agent/conversation-summary.js +221 -0
- package/dist/agent/conversation-summary.js.map +1 -0
- package/dist/agent/core.d.ts +81 -0
- package/dist/agent/core.d.ts.map +1 -0
- package/dist/agent/core.js +527 -0
- package/dist/agent/core.js.map +1 -0
- package/dist/agent/mcp-launcher.d.ts +42 -0
- package/dist/agent/mcp-launcher.d.ts.map +1 -0
- package/dist/agent/mcp-launcher.js +38 -0
- package/dist/agent/mcp-launcher.js.map +1 -0
- package/dist/agent/mcp-manager.d.ts +81 -0
- package/dist/agent/mcp-manager.d.ts.map +1 -0
- package/dist/agent/mcp-manager.js +136 -0
- package/dist/agent/mcp-manager.js.map +1 -0
- package/dist/agent/memory.d.ts +10 -0
- package/dist/agent/memory.d.ts.map +1 -0
- package/dist/agent/memory.js +95 -0
- package/dist/agent/memory.js.map +1 -0
- package/dist/agent/safety.d.ts +45 -0
- package/dist/agent/safety.d.ts.map +1 -0
- package/dist/agent/safety.js +71 -0
- package/dist/agent/safety.js.map +1 -0
- package/dist/agent/session.d.ts +27 -0
- package/dist/agent/session.d.ts.map +1 -0
- package/dist/agent/session.js +124 -0
- package/dist/agent/session.js.map +1 -0
- package/dist/agent/tool-descriptions.d.ts +8 -0
- package/dist/agent/tool-descriptions.d.ts.map +1 -0
- package/dist/agent/tool-descriptions.js +26 -0
- package/dist/agent/tool-descriptions.js.map +1 -0
- package/dist/cli/analyze.d.ts +8 -0
- package/dist/cli/analyze.d.ts.map +1 -0
- package/dist/cli/analyze.js +114 -0
- package/dist/cli/analyze.js.map +1 -0
- package/dist/cli/daemon.d.ts +2 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +91 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/doctor.d.ts +2 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +198 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +459 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/logs.d.ts +4 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +50 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/monitor-cmd.d.ts +11 -0
- package/dist/cli/monitor-cmd.d.ts.map +1 -0
- package/dist/cli/monitor-cmd.js +59 -0
- package/dist/cli/monitor-cmd.js.map +1 -0
- package/dist/cli/start.d.ts +11 -0
- package/dist/cli/start.d.ts.map +1 -0
- package/dist/cli/start.js +103 -0
- package/dist/cli/start.js.map +1 -0
- package/dist/cli/status.d.ts +9 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +49 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/stop.d.ts +2 -0
- package/dist/cli/stop.d.ts.map +1 -0
- package/dist/cli/stop.js +34 -0
- package/dist/cli/stop.js.map +1 -0
- package/dist/collectors/appstore.d.ts +51 -0
- package/dist/collectors/appstore.d.ts.map +1 -0
- package/dist/collectors/appstore.js +166 -0
- package/dist/collectors/appstore.js.map +1 -0
- package/dist/collectors/arden-tts.d.ts +60 -0
- package/dist/collectors/arden-tts.d.ts.map +1 -0
- package/dist/collectors/arden-tts.js +83 -0
- package/dist/collectors/arden-tts.js.map +1 -0
- package/dist/collectors/asomobile.d.ts +37 -0
- package/dist/collectors/asomobile.d.ts.map +1 -0
- package/dist/collectors/asomobile.js +88 -0
- package/dist/collectors/asomobile.js.map +1 -0
- package/dist/collectors/eodin-blog.d.ts +90 -0
- package/dist/collectors/eodin-blog.d.ts.map +1 -0
- package/dist/collectors/eodin-blog.js +238 -0
- package/dist/collectors/eodin-blog.js.map +1 -0
- package/dist/collectors/eodin-sdk.d.ts +60 -0
- package/dist/collectors/eodin-sdk.d.ts.map +1 -0
- package/dist/collectors/eodin-sdk.js +112 -0
- package/dist/collectors/eodin-sdk.js.map +1 -0
- package/dist/collectors/fridgify-recipes.d.ts +65 -0
- package/dist/collectors/fridgify-recipes.d.ts.map +1 -0
- package/dist/collectors/fridgify-recipes.js +111 -0
- package/dist/collectors/fridgify-recipes.js.map +1 -0
- package/dist/collectors/playstore.d.ts +46 -0
- package/dist/collectors/playstore.d.ts.map +1 -0
- package/dist/collectors/playstore.js +140 -0
- package/dist/collectors/playstore.js.map +1 -0
- package/dist/collectors/youtube.d.ts +44 -0
- package/dist/collectors/youtube.d.ts.map +1 -0
- package/dist/collectors/youtube.js +107 -0
- package/dist/collectors/youtube.js.map +1 -0
- package/dist/config/apps-schema.d.ts +94 -0
- package/dist/config/apps-schema.d.ts.map +1 -0
- package/dist/config/apps-schema.js +66 -0
- package/dist/config/apps-schema.js.map +1 -0
- package/dist/config/keychain.d.ts +14 -0
- package/dist/config/keychain.d.ts.map +1 -0
- package/dist/config/keychain.js +89 -0
- package/dist/config/keychain.js.map +1 -0
- package/dist/config/load-apps.d.ts +16 -0
- package/dist/config/load-apps.d.ts.map +1 -0
- package/dist/config/load-apps.js +38 -0
- package/dist/config/load-apps.js.map +1 -0
- package/dist/config/schema.d.ts +306 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +220 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/store.d.ts +38 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +180 -0
- package/dist/config/store.js.map +1 -0
- package/dist/db/queries.d.ts +304 -0
- package/dist/db/queries.d.ts.map +1 -0
- package/dist/db/queries.js +327 -0
- package/dist/db/queries.js.map +1 -0
- package/dist/db/schema.d.ts +15 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +252 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- package/dist/messenger/adapter.d.ts +63 -0
- package/dist/messenger/adapter.d.ts.map +1 -0
- package/dist/messenger/adapter.js +7 -0
- package/dist/messenger/adapter.js.map +1 -0
- package/dist/messenger/factory.d.ts +12 -0
- package/dist/messenger/factory.d.ts.map +1 -0
- package/dist/messenger/factory.js +9 -0
- package/dist/messenger/factory.js.map +1 -0
- package/dist/messenger/slack.d.ts +30 -0
- package/dist/messenger/slack.d.ts.map +1 -0
- package/dist/messenger/slack.js +309 -0
- package/dist/messenger/slack.js.map +1 -0
- package/dist/messenger/split.d.ts +17 -0
- package/dist/messenger/split.d.ts.map +1 -0
- package/dist/messenger/split.js +56 -0
- package/dist/messenger/split.js.map +1 -0
- package/dist/orchestrator/dashboard.d.ts +67 -0
- package/dist/orchestrator/dashboard.d.ts.map +1 -0
- package/dist/orchestrator/dashboard.js +113 -0
- package/dist/orchestrator/dashboard.js.map +1 -0
- package/dist/orchestrator/monitor.d.ts +37 -0
- package/dist/orchestrator/monitor.d.ts.map +1 -0
- package/dist/orchestrator/monitor.js +236 -0
- package/dist/orchestrator/monitor.js.map +1 -0
- package/dist/orchestrator/types.d.ts +82 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +12 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/orchestrator/weekly.d.ts +66 -0
- package/dist/orchestrator/weekly.d.ts.map +1 -0
- package/dist/orchestrator/weekly.js +376 -0
- package/dist/orchestrator/weekly.js.map +1 -0
- package/dist/prompts/loader.d.ts +18 -0
- package/dist/prompts/loader.d.ts.map +1 -0
- package/dist/prompts/loader.js +28 -0
- package/dist/prompts/loader.js.map +1 -0
- package/dist/security/auth.d.ts +14 -0
- package/dist/security/auth.d.ts.map +1 -0
- package/dist/security/auth.js +14 -0
- package/dist/security/auth.js.map +1 -0
- package/dist/security/prompt-guard.d.ts +21 -0
- package/dist/security/prompt-guard.d.ts.map +1 -0
- package/dist/security/prompt-guard.js +54 -0
- package/dist/security/prompt-guard.js.map +1 -0
- package/dist/skills/aso.d.ts +60 -0
- package/dist/skills/aso.d.ts.map +1 -0
- package/dist/skills/aso.js +322 -0
- package/dist/skills/aso.js.map +1 -0
- package/dist/skills/content.d.ts +25 -0
- package/dist/skills/content.d.ts.map +1 -0
- package/dist/skills/content.js +90 -0
- package/dist/skills/content.js.map +1 -0
- package/dist/skills/index.d.ts +65 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +90 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/onboarding.d.ts +58 -0
- package/dist/skills/onboarding.d.ts.map +1 -0
- package/dist/skills/onboarding.js +274 -0
- package/dist/skills/onboarding.js.map +1 -0
- package/dist/skills/registry.d.ts +24 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +66 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/review.d.ts +33 -0
- package/dist/skills/review.d.ts.map +1 -0
- package/dist/skills/review.js +236 -0
- package/dist/skills/review.js.map +1 -0
- package/dist/skills/sdk-request.d.ts +30 -0
- package/dist/skills/sdk-request.d.ts.map +1 -0
- package/dist/skills/sdk-request.js +72 -0
- package/dist/skills/sdk-request.js.map +1 -0
- package/dist/skills/seo-blog.d.ts +64 -0
- package/dist/skills/seo-blog.d.ts.map +1 -0
- package/dist/skills/seo-blog.js +268 -0
- package/dist/skills/seo-blog.js.map +1 -0
- package/dist/skills/short-form.d.ts +28 -0
- package/dist/skills/short-form.d.ts.map +1 -0
- package/dist/skills/short-form.js +121 -0
- package/dist/skills/short-form.js.map +1 -0
- package/dist/skills/social-publish.d.ts +32 -0
- package/dist/skills/social-publish.d.ts.map +1 -0
- package/dist/skills/social-publish.js +133 -0
- package/dist/skills/social-publish.js.map +1 -0
- package/dist/social/base.d.ts +47 -0
- package/dist/social/base.d.ts.map +1 -0
- package/dist/social/base.js +26 -0
- package/dist/social/base.js.map +1 -0
- package/dist/social/facebook.d.ts +27 -0
- package/dist/social/facebook.d.ts.map +1 -0
- package/dist/social/facebook.js +166 -0
- package/dist/social/facebook.js.map +1 -0
- package/dist/social/factory.d.ts +26 -0
- package/dist/social/factory.d.ts.map +1 -0
- package/dist/social/factory.js +32 -0
- package/dist/social/factory.js.map +1 -0
- package/dist/social/linkedin.d.ts +26 -0
- package/dist/social/linkedin.d.ts.map +1 -0
- package/dist/social/linkedin.js +190 -0
- package/dist/social/linkedin.js.map +1 -0
- package/dist/social/threads.d.ts +21 -0
- package/dist/social/threads.d.ts.map +1 -0
- package/dist/social/threads.js +122 -0
- package/dist/social/threads.js.map +1 -0
- package/dist/social/tiktok.d.ts +23 -0
- package/dist/social/tiktok.d.ts.map +1 -0
- package/dist/social/tiktok.js +110 -0
- package/dist/social/tiktok.js.map +1 -0
- package/dist/social/twitter.d.ts +30 -0
- package/dist/social/twitter.d.ts.map +1 -0
- package/dist/social/twitter.js +189 -0
- package/dist/social/twitter.js.map +1 -0
- package/dist/social/youtube.d.ts +21 -0
- package/dist/social/youtube.d.ts.map +1 -0
- package/dist/social/youtube.js +108 -0
- package/dist/social/youtube.js.map +1 -0
- package/dist/tools/app-info.d.ts +7 -0
- package/dist/tools/app-info.d.ts.map +1 -0
- package/dist/tools/app-info.js +53 -0
- package/dist/tools/app-info.js.map +1 -0
- package/dist/tools/collector-fetch.d.ts +11 -0
- package/dist/tools/collector-fetch.d.ts.map +1 -0
- package/dist/tools/collector-fetch.js +101 -0
- package/dist/tools/collector-fetch.js.map +1 -0
- package/dist/tools/db-query.d.ts +29 -0
- package/dist/tools/db-query.d.ts.map +1 -0
- package/dist/tools/db-query.js +159 -0
- package/dist/tools/db-query.js.map +1 -0
- package/dist/tools/skill-result.d.ts +8 -0
- package/dist/tools/skill-result.d.ts.map +1 -0
- package/dist/tools/skill-result.js +63 -0
- package/dist/tools/skill-result.js.map +1 -0
- package/dist/tools/tool-host.d.ts +12 -0
- package/dist/tools/tool-host.d.ts.map +1 -0
- package/dist/tools/tool-host.js +124 -0
- package/dist/tools/tool-host.js.map +1 -0
- package/dist/types/collectors.d.ts +198 -0
- package/dist/types/collectors.d.ts.map +1 -0
- package/dist/types/collectors.js +28 -0
- package/dist/types/collectors.js.map +1 -0
- package/dist/types/skill.d.ts +60 -0
- package/dist/types/skill.d.ts.map +1 -0
- package/dist/types/skill.js +9 -0
- package/dist/types/skill.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +26 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +67 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/errors.d.ts +44 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +75 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/escape.d.ts +11 -0
- package/dist/utils/escape.d.ts.map +1 -0
- package/dist/utils/escape.js +19 -0
- package/dist/utils/escape.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +93 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/parse-json.d.ts +13 -0
- package/dist/utils/parse-json.d.ts.map +1 -0
- package/dist/utils/parse-json.js +61 -0
- package/dist/utils/parse-json.js.map +1 -0
- package/dist/utils/paths.d.ts +14 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +19 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +20 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +47 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/retry.d.ts +26 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +61 -0
- package/dist/utils/retry.js.map +1 -0
- package/launchd/.gitkeep +0 -0
- package/launchd/com.adaria-ai.daemon.plist.template +62 -0
- package/launchd/com.adaria-ai.monitor.plist.template +41 -0
- package/launchd/com.adaria-ai.weekly.plist.template +43 -0
- package/package.json +72 -0
- package/prompts/aso-description.md +44 -0
- package/prompts/aso-inapp-events.md +20 -0
- package/prompts/aso-metadata.md +34 -0
- package/prompts/aso-screenshots.md +20 -0
- package/prompts/onboarding-hypotheses.md +38 -0
- package/prompts/onboarding-review-timing.md +24 -0
- package/prompts/review-clustering.md +19 -0
- package/prompts/review-replies.md +18 -0
- package/prompts/review-sentiment.md +16 -0
- package/prompts/seo-blog-fridgify-recipe.md +116 -0
- package/prompts/seo-blog.md +69 -0
- package/prompts/short-form-ideas.md +50 -0
- package/prompts/social-publish.md +46 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool description text injected into the Mode B system prompt.
|
|
3
|
+
*
|
|
4
|
+
* Describes the 4 marketing MCP tools so Claude knows how and when
|
|
5
|
+
* to call them. All tools are strictly read-only.
|
|
6
|
+
*/
|
|
7
|
+
export function buildToolDescriptions() {
|
|
8
|
+
return `## Available MCP Tools (read-only)
|
|
9
|
+
|
|
10
|
+
You have access to 4 marketing analytics tools. Use them to answer questions about apps, rankings, reviews, and prior analyses. NEVER guess data you can fetch — always call the tool first.
|
|
11
|
+
|
|
12
|
+
1. **db-query** — Query the SQLite database directly. Whitelisted tables: keyword_rankings, sdk_events, reviews, approvals, competitor_metadata, agent_metrics, blog_posts, short_form_performance, seo_metrics, web_traffic, blog_performance. Review body text and competitor descriptions are redacted. Max 50 rows.
|
|
13
|
+
|
|
14
|
+
2. **collector-fetch** — Fetch cached collector data by name: keyword-rankings, reviews, sentiment, short-form, seo-metrics, web-traffic, blog-posts. Faster than db-query for common lookups. Review text is redacted.
|
|
15
|
+
|
|
16
|
+
3. **skill-result** — Read recent weekly skill run results (agent_metrics). Shows how skills performed: duration, status, alerts, actions. Useful for "how did last week's ASO analysis go?" questions.
|
|
17
|
+
|
|
18
|
+
4. **app-info** — Read app metadata from apps.yaml. Call without arguments to list all apps, or with an app ID for details (platforms, keywords, competitors, features).
|
|
19
|
+
|
|
20
|
+
### Important rules:
|
|
21
|
+
- These tools are READ-ONLY. You cannot write to the database, publish posts, change metadata, or reply to reviews.
|
|
22
|
+
- If the user asks for a write action, tell them to run the corresponding skill command (e.g. "aso fridgify", "blog fridgify").
|
|
23
|
+
- Do NOT pass raw review body text back to the user — always summarize or count.
|
|
24
|
+
- seo_metrics, web_traffic, and blog_performance tables are site-wide (no app_id column).`;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=tool-descriptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-descriptions.js","sourceRoot":"","sources":["../../src/agent/tool-descriptions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;0FAgBiF,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaria-ai analyze` — one-shot weekly orchestrator CLI entry.
|
|
3
|
+
*
|
|
4
|
+
* Loads config, initializes DB + collectors, runs the weekly orchestrator,
|
|
5
|
+
* and exits cleanly. Invoked by launchd cron (Sun 23:00 UTC) or manually.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runAnalyze(): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/cli/analyze.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAwGhD"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaria-ai analyze` — one-shot weekly orchestrator CLI entry.
|
|
3
|
+
*
|
|
4
|
+
* Loads config, initializes DB + collectors, runs the weekly orchestrator,
|
|
5
|
+
* and exits cleanly. Invoked by launchd cron (Sun 23:00 UTC) or manually.
|
|
6
|
+
*/
|
|
7
|
+
import { loadConfig } from "../config/store.js";
|
|
8
|
+
import { loadApps } from "../config/load-apps.js";
|
|
9
|
+
import { initDatabase } from "../db/schema.js";
|
|
10
|
+
import { createMessengerAdapter } from "../messenger/factory.js";
|
|
11
|
+
import { runWeeklyAnalysis } from "../orchestrator/weekly.js";
|
|
12
|
+
import { ReviewSkill } from "../skills/review.js";
|
|
13
|
+
import { SocialPublishSkill } from "../skills/social-publish.js";
|
|
14
|
+
import { SeoBlogSkill } from "../skills/seo-blog.js";
|
|
15
|
+
import { ShortFormSkill } from "../skills/short-form.js";
|
|
16
|
+
import { SdkRequestSkill } from "../skills/sdk-request.js";
|
|
17
|
+
import { ContentSkill } from "../skills/content.js";
|
|
18
|
+
import { invokeClaudeCli } from "../agent/claude.js";
|
|
19
|
+
import { writeAuditLog } from "../agent/audit.js";
|
|
20
|
+
import * as logger from "../utils/logger.js";
|
|
21
|
+
export async function runAnalyze() {
|
|
22
|
+
logger.info("Loading configuration");
|
|
23
|
+
let config;
|
|
24
|
+
try {
|
|
25
|
+
config = await loadConfig();
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
console.error(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`);
|
|
29
|
+
process.exitCode = 1;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
let apps;
|
|
33
|
+
try {
|
|
34
|
+
({ apps } = await loadApps());
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error(`Failed to load apps.yaml: ${err instanceof Error ? err.message : String(err)}`);
|
|
38
|
+
process.exitCode = 1;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const db = initDatabase();
|
|
42
|
+
let messenger;
|
|
43
|
+
try {
|
|
44
|
+
messenger = createMessengerAdapter(config);
|
|
45
|
+
// Build skill dispatchers with the weekly timeout
|
|
46
|
+
const timeoutMs = config.agent.weeklyTimeoutMs;
|
|
47
|
+
const cliBinary = config.claude.cliBinary;
|
|
48
|
+
const runClaude = async (prompt) => {
|
|
49
|
+
await writeAuditLog({
|
|
50
|
+
type: "command",
|
|
51
|
+
userId: "orchestrator",
|
|
52
|
+
platform: "internal",
|
|
53
|
+
content: `Claude CLI invocation (weekly, timeout=${String(timeoutMs)}ms)`,
|
|
54
|
+
});
|
|
55
|
+
const result = await invokeClaudeCli({
|
|
56
|
+
prompt,
|
|
57
|
+
cliBinary,
|
|
58
|
+
timeoutMs,
|
|
59
|
+
});
|
|
60
|
+
return result.result;
|
|
61
|
+
};
|
|
62
|
+
const ctx = { db, apps, config, runClaude };
|
|
63
|
+
// TODO(M7): Wire real collector instances from config.collectors
|
|
64
|
+
// credentials. Currently skills run with empty deps — ASO/Onboarding
|
|
65
|
+
// always reject, others skip collector-dependent paths. Required
|
|
66
|
+
// before M7 parity validation.
|
|
67
|
+
const reviewSkill = new ReviewSkill({});
|
|
68
|
+
const seoBlogSkill = new SeoBlogSkill({});
|
|
69
|
+
const shortFormSkill = new ShortFormSkill({});
|
|
70
|
+
const sdkRequestSkill = new SdkRequestSkill();
|
|
71
|
+
const contentSkill = new ContentSkill();
|
|
72
|
+
const socialPublishSkill = new SocialPublishSkill({
|
|
73
|
+
socialConfigs: {
|
|
74
|
+
twitter: config.social.twitter,
|
|
75
|
+
facebook: config.social.facebook,
|
|
76
|
+
threads: config.social.threads,
|
|
77
|
+
tiktok: config.social.tiktok,
|
|
78
|
+
youtube: config.social.youtube,
|
|
79
|
+
linkedin: config.social.linkedin,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
// Skills that require deps will throw if collectors are missing.
|
|
83
|
+
// The orchestrator's timedRun catches these as SkippedAgentError.
|
|
84
|
+
const dispatchers = {
|
|
85
|
+
aso: (_app) => Promise.reject(new Error("ASO collectors not wired in analyze CLI — use daemon for full analysis")),
|
|
86
|
+
review: (app) => reviewSkill.dispatch(ctx, `review ${app.name}`),
|
|
87
|
+
onboarding: (_app) => Promise.reject(new Error("Onboarding collector not wired in analyze CLI — use daemon for full analysis")),
|
|
88
|
+
seoBlog: (app) => seoBlogSkill.dispatch(ctx, `blog ${app.name}`),
|
|
89
|
+
shortForm: (app) => shortFormSkill.dispatch(ctx, `shortform ${app.name}`),
|
|
90
|
+
sdkRequest: (app) => sdkRequestSkill.dispatch(ctx, `sdkrequest ${app.name}`),
|
|
91
|
+
content: (app) => contentSkill.dispatch(ctx, `content ${app.name}`),
|
|
92
|
+
socialPublish: (app) => socialPublishSkill.dispatch(ctx, `social ${app.name}`),
|
|
93
|
+
};
|
|
94
|
+
await runWeeklyAnalysis({
|
|
95
|
+
db,
|
|
96
|
+
config,
|
|
97
|
+
apps,
|
|
98
|
+
messenger,
|
|
99
|
+
dispatchers,
|
|
100
|
+
});
|
|
101
|
+
logger.info("Weekly analysis finished successfully");
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
logger.error(`Weekly analysis failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
105
|
+
process.exitCode = 1;
|
|
106
|
+
}
|
|
107
|
+
finally {
|
|
108
|
+
db.close();
|
|
109
|
+
if (messenger) {
|
|
110
|
+
await messenger.stop();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=analyze.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/cli/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"AAyBA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmF/C"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaria-ai daemon` — foreground reactive daemon.
|
|
3
|
+
*
|
|
4
|
+
* This is the command launchd invokes. It is NOT meant for humans to run
|
|
5
|
+
* directly outside of local debugging; `adaria-ai start` is the usual
|
|
6
|
+
* entry point. The process stays alive forever (KeepAlive=true in the
|
|
7
|
+
* plist), handling SIGTERM/SIGINT for clean shutdown.
|
|
8
|
+
*
|
|
9
|
+
* M7: wires db, apps, and the production skill registry into AgentCore
|
|
10
|
+
* so that Mode A commands dispatch to real skills and approval callbacks
|
|
11
|
+
* can route to the correct skill handler.
|
|
12
|
+
*/
|
|
13
|
+
import { loadConfig } from "../config/store.js";
|
|
14
|
+
import { loadApps } from "../config/load-apps.js";
|
|
15
|
+
import { initDatabase } from "../db/schema.js";
|
|
16
|
+
import { createMessengerAdapter } from "../messenger/factory.js";
|
|
17
|
+
import { AgentCore } from "../agent/core.js";
|
|
18
|
+
import { createProductionRegistry } from "../skills/registry.js";
|
|
19
|
+
import { AdariaError } from "../utils/errors.js";
|
|
20
|
+
import { error as logError, info as logInfo, } from "../utils/logger.js";
|
|
21
|
+
export async function runDaemon() {
|
|
22
|
+
let config;
|
|
23
|
+
try {
|
|
24
|
+
config = await loadConfig();
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
// The plist uses `SuccessfulExit=false, Crashed=true` so a clean
|
|
28
|
+
// exit(0) tells launchd "don't respawn me". Without that combination
|
|
29
|
+
// of exit code + KeepAlive dict, any config typo would put the
|
|
30
|
+
// daemon into a 30s respawn loop that floods daemon.err.log.
|
|
31
|
+
const userMsg = err instanceof AdariaError
|
|
32
|
+
? err.userMessage
|
|
33
|
+
: err instanceof Error
|
|
34
|
+
? err.message
|
|
35
|
+
: String(err);
|
|
36
|
+
logError(`adaria-ai daemon refusing to start: ${userMsg}`);
|
|
37
|
+
console.error(`adaria-ai daemon refusing to start: ${userMsg}`);
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
// Load apps.yaml — optional for daemon startup. If missing, Mode A
|
|
41
|
+
// skill dispatch will work but skills that iterate apps will have
|
|
42
|
+
// an empty list.
|
|
43
|
+
let apps = [];
|
|
44
|
+
try {
|
|
45
|
+
({ apps } = await loadApps());
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
logError(`Failed to load apps.yaml: ${err instanceof Error ? err.message : String(err)}. Skills will have no app context.`);
|
|
49
|
+
}
|
|
50
|
+
// Initialize DB — required for Mode A skills and Mode B MCP tools.
|
|
51
|
+
let db;
|
|
52
|
+
try {
|
|
53
|
+
db = initDatabase();
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
logError(`DB initialization failed: ${err instanceof Error ? err.message : String(err)}. Exiting cleanly to prevent launchd respawn loop.`);
|
|
57
|
+
console.error(`adaria-ai daemon refusing to start: DB init failed — ${err instanceof Error ? err.message : String(err)}`);
|
|
58
|
+
process.exit(0);
|
|
59
|
+
}
|
|
60
|
+
// Build the production skill registry with all 8 skills.
|
|
61
|
+
const skillRegistry = createProductionRegistry(config);
|
|
62
|
+
const messenger = createMessengerAdapter(config);
|
|
63
|
+
const agent = new AgentCore(messenger, config, {
|
|
64
|
+
db,
|
|
65
|
+
apps,
|
|
66
|
+
skillRegistry,
|
|
67
|
+
});
|
|
68
|
+
await agent.start();
|
|
69
|
+
logInfo(`adaria-ai daemon started (${String(skillRegistry.getSkillCount())} skills, ${String(apps.length)} apps)`);
|
|
70
|
+
let shuttingDown = false;
|
|
71
|
+
const shutdown = (signal) => {
|
|
72
|
+
if (shuttingDown)
|
|
73
|
+
return;
|
|
74
|
+
shuttingDown = true;
|
|
75
|
+
logInfo(`adaria-ai daemon received ${signal}, stopping...`);
|
|
76
|
+
agent
|
|
77
|
+
.stop()
|
|
78
|
+
.then(() => {
|
|
79
|
+
db.close();
|
|
80
|
+
process.exit(0);
|
|
81
|
+
})
|
|
82
|
+
.catch((err) => {
|
|
83
|
+
logError(`Shutdown error: ${err instanceof Error ? err.message : String(err)}`);
|
|
84
|
+
db.close();
|
|
85
|
+
process.exit(1);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
89
|
+
process.on("SIGINT", () => shutdown("SIGINT"));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/cli/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AAgMA,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkD/C"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaria-ai doctor` — health snapshot.
|
|
3
|
+
*
|
|
4
|
+
* Checks configuration, Claude CLI, database, apps, collector
|
|
5
|
+
* credentials, social platform credentials, and MCP tool registration.
|
|
6
|
+
*
|
|
7
|
+
* Exit code is 0 when every check passes, 1 otherwise.
|
|
8
|
+
*/
|
|
9
|
+
import fs from "node:fs";
|
|
10
|
+
import os from "node:os";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { loadConfig } from "../config/store.js";
|
|
13
|
+
import { initDatabase } from "../db/schema.js";
|
|
14
|
+
import { checkClaudeCli, checkClaudeCliAuth } from "../agent/claude.js";
|
|
15
|
+
function check(name, pass, message) {
|
|
16
|
+
return message !== undefined ? { name, pass, message } : { name, pass };
|
|
17
|
+
}
|
|
18
|
+
async function checkConfig() {
|
|
19
|
+
try {
|
|
20
|
+
const config = await loadConfig();
|
|
21
|
+
const checks = [check("config.yaml loads", true)];
|
|
22
|
+
const allowlistCount = config.security.allowedUsers.length;
|
|
23
|
+
checks.push(check("security.allowedUsers non-empty", allowlistCount > 0, allowlistCount === 0
|
|
24
|
+
? 'No allowlisted users. Run "adaria-ai init" and add a Slack user ID.'
|
|
25
|
+
: `${String(allowlistCount)} user(s) allowlisted`));
|
|
26
|
+
const botOk = config.slack.botToken.startsWith("xoxb-");
|
|
27
|
+
checks.push(check("slack.botToken resolved", botOk, botOk ? undefined : "Bot token is missing or not resolved from Keychain"));
|
|
28
|
+
if (config.agent.briefingChannel) {
|
|
29
|
+
checks.push(check("agent.briefingChannel set", true, config.agent.briefingChannel));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Not a failure — optional for daemon-only setups
|
|
33
|
+
checks.push(check("agent.briefingChannel set", true, "not set (weekly orchestrator will skip posting)"));
|
|
34
|
+
}
|
|
35
|
+
return { checks, config };
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
return {
|
|
39
|
+
checks: [
|
|
40
|
+
check("config.yaml loads", false, err instanceof Error ? err.message : String(err)),
|
|
41
|
+
],
|
|
42
|
+
config: null,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async function checkClaude(cliBinary) {
|
|
47
|
+
const installed = await checkClaudeCli(cliBinary);
|
|
48
|
+
if (!installed) {
|
|
49
|
+
return [
|
|
50
|
+
check("claude CLI installed", false, `\`${cliBinary}\` not found on PATH. Install with 'npm i -g @anthropic-ai/claude-code'.`),
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
const authed = await checkClaudeCliAuth(cliBinary);
|
|
54
|
+
return [
|
|
55
|
+
check("claude CLI installed", true),
|
|
56
|
+
check("claude CLI authenticated", authed, authed
|
|
57
|
+
? undefined
|
|
58
|
+
: "Run 'claude /login' to authenticate. Note: during M7 parallel run, do NOT re-run /login (shared auth with growth-agent)."),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Warn if ~/.claude auth state was modified within the last 24h.
|
|
63
|
+
* During M7 parallel run, re-authentication invalidates both daemons.
|
|
64
|
+
*/
|
|
65
|
+
function checkClaudeAuthRecency() {
|
|
66
|
+
const claudeDir = path.join(os.homedir(), ".claude");
|
|
67
|
+
try {
|
|
68
|
+
if (!fs.existsSync(claudeDir)) {
|
|
69
|
+
return [check("claude auth recency", true, "~/.claude not found (skip)")];
|
|
70
|
+
}
|
|
71
|
+
const entries = fs.readdirSync(claudeDir);
|
|
72
|
+
const twentyFourHoursAgo = Date.now() - 24 * 60 * 60 * 1000;
|
|
73
|
+
let newestMtime = 0;
|
|
74
|
+
let newestFile = "";
|
|
75
|
+
for (const entry of entries) {
|
|
76
|
+
try {
|
|
77
|
+
const stat = fs.statSync(path.join(claudeDir, entry));
|
|
78
|
+
if (stat.mtimeMs > newestMtime) {
|
|
79
|
+
newestMtime = stat.mtimeMs;
|
|
80
|
+
newestFile = entry;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// skip unreadable entries
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (newestMtime > twentyFourHoursAgo) {
|
|
88
|
+
const ago = Math.round((Date.now() - newestMtime) / 60_000);
|
|
89
|
+
return [
|
|
90
|
+
check("claude auth recency", true, // warning, not failure
|
|
91
|
+
`WARNING: ~/.claude/${newestFile} modified ${String(ago)} min ago. If running M7 parallel, do NOT re-run /login.`),
|
|
92
|
+
];
|
|
93
|
+
}
|
|
94
|
+
return [check("claude auth recency", true, "no changes in last 24h")];
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return [check("claude auth recency", true, "could not check (skip)")];
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function checkDb() {
|
|
101
|
+
try {
|
|
102
|
+
const db = initDatabase();
|
|
103
|
+
const tables = db
|
|
104
|
+
.prepare("SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'")
|
|
105
|
+
.get();
|
|
106
|
+
const tableCount = tables?.count ?? 0;
|
|
107
|
+
db.close();
|
|
108
|
+
return [
|
|
109
|
+
check("DB accessible", true, `${String(tableCount)} tables`),
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
return [
|
|
114
|
+
check("DB accessible", false, err instanceof Error ? err.message : String(err)),
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function checkCollectors(config) {
|
|
119
|
+
const checks = [];
|
|
120
|
+
const c = config.collectors;
|
|
121
|
+
// Collector credentials are optional — pass=true even when not configured
|
|
122
|
+
checks.push(check("collector: App Store Connect", true, c.appStore ? "configured" : "not configured (optional)"));
|
|
123
|
+
checks.push(check("collector: Google Play", true, c.playStore ? "configured" : "not configured (optional)"));
|
|
124
|
+
checks.push(check("collector: ASOMobile", true, c.asoMobile ? "configured" : "not configured (optional)"));
|
|
125
|
+
checks.push(check("collector: Eodin SDK", true, c.eodinSdk ? "configured" : "not configured (optional)"));
|
|
126
|
+
checks.push(check("collector: Eodin Growth", true, c.eodinGrowth ? "configured" : "not configured (optional)"));
|
|
127
|
+
checks.push(check("collector: YouTube", true, c.youtube ? "configured" : "not configured (optional)"));
|
|
128
|
+
return checks;
|
|
129
|
+
}
|
|
130
|
+
function checkSocial(config) {
|
|
131
|
+
const checks = [];
|
|
132
|
+
const s = config.social;
|
|
133
|
+
// Social credentials are optional — pass=true even when not configured
|
|
134
|
+
checks.push(check("social: Twitter", true, s.twitter ? "configured" : "not configured (optional)"));
|
|
135
|
+
checks.push(check("social: Facebook", true, s.facebook ? "configured" : "not configured (optional)"));
|
|
136
|
+
checks.push(check("social: Threads", true, s.threads ? "configured" : "not configured (optional)"));
|
|
137
|
+
checks.push(check("social: TikTok", true, s.tiktok ? "configured" : "not configured (optional)"));
|
|
138
|
+
checks.push(check("social: YouTube", true, s.youtube ? "configured" : "not configured (optional)"));
|
|
139
|
+
checks.push(check("social: LinkedIn", true, s.linkedin ? "configured" : "not configured (optional)"));
|
|
140
|
+
return checks;
|
|
141
|
+
}
|
|
142
|
+
export async function runDoctor() {
|
|
143
|
+
const results = [];
|
|
144
|
+
// 1. Config
|
|
145
|
+
console.log("Configuration:");
|
|
146
|
+
const { checks: configChecks, config } = await checkConfig();
|
|
147
|
+
results.push(...configChecks);
|
|
148
|
+
for (const c of configChecks)
|
|
149
|
+
printCheck(c);
|
|
150
|
+
// 2. Claude CLI
|
|
151
|
+
console.log("\nClaude CLI:");
|
|
152
|
+
const cliBinary = config?.claude.cliBinary ?? "claude";
|
|
153
|
+
const claudeChecks = await checkClaude(cliBinary);
|
|
154
|
+
results.push(...claudeChecks);
|
|
155
|
+
for (const c of claudeChecks)
|
|
156
|
+
printCheck(c);
|
|
157
|
+
// 2b. Claude auth recency (M7 parallel run warning)
|
|
158
|
+
const authChecks = checkClaudeAuthRecency();
|
|
159
|
+
results.push(...authChecks);
|
|
160
|
+
for (const c of authChecks)
|
|
161
|
+
printCheck(c);
|
|
162
|
+
// 3. Database
|
|
163
|
+
console.log("\nDatabase:");
|
|
164
|
+
const dbChecks = checkDb();
|
|
165
|
+
results.push(...dbChecks);
|
|
166
|
+
for (const c of dbChecks)
|
|
167
|
+
printCheck(c);
|
|
168
|
+
// 4. Collectors (only if config loaded)
|
|
169
|
+
if (config) {
|
|
170
|
+
console.log("\nCollectors:");
|
|
171
|
+
const collectorChecks = checkCollectors(config);
|
|
172
|
+
results.push(...collectorChecks);
|
|
173
|
+
for (const c of collectorChecks)
|
|
174
|
+
printCheck(c);
|
|
175
|
+
console.log("\nSocial platforms:");
|
|
176
|
+
const socialChecks = checkSocial(config);
|
|
177
|
+
results.push(...socialChecks);
|
|
178
|
+
for (const c of socialChecks)
|
|
179
|
+
printCheck(c);
|
|
180
|
+
}
|
|
181
|
+
// Summary
|
|
182
|
+
const failed = results.filter((c) => !c.pass).length;
|
|
183
|
+
const total = results.length;
|
|
184
|
+
console.log("");
|
|
185
|
+
if (failed > 0) {
|
|
186
|
+
console.log(`${String(failed)}/${String(total)} check(s) failed.`);
|
|
187
|
+
process.exitCode = 1;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
console.log(`All ${String(total)} checks passed.`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function printCheck(c) {
|
|
194
|
+
const icon = c.pass ? "\u2705" : "\u274c";
|
|
195
|
+
const suffix = c.message ? ` \u2014 ${c.message}` : "";
|
|
196
|
+
console.log(` ${icon} ${c.name}${suffix}`);
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAmd5D,wBAAsB,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuElE"}
|