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,306 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* adaria-ai config schema.
|
|
4
|
+
*
|
|
5
|
+
* Written to `$ADARIA_HOME/config.yaml` by `adaria-ai init`. Secrets may be
|
|
6
|
+
* stored inline or replaced with the sentinel string `***keychain***`, in
|
|
7
|
+
* which case `store.ts` resolves them from the macOS Keychain at load time.
|
|
8
|
+
*
|
|
9
|
+
* Shape diverges from pilot-ai: dropped all personal-agent surfaces (notion,
|
|
10
|
+
* obsidian, linear, figma, github, google workspace, telegram, filesystem
|
|
11
|
+
* sandbox). Only Slack is supported as the messenger in v1.
|
|
12
|
+
*/
|
|
13
|
+
export declare const slackConfigSchema: z.ZodObject<{
|
|
14
|
+
botToken: z.ZodString;
|
|
15
|
+
appToken: z.ZodString;
|
|
16
|
+
signingSecret: z.ZodString;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export declare const claudeConfigSchema: z.ZodObject<{
|
|
19
|
+
mode: z.ZodDefault<z.ZodLiteral<"cli">>;
|
|
20
|
+
cliBinary: z.ZodDefault<z.ZodString>;
|
|
21
|
+
apiKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
22
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export declare const securityConfigSchema: z.ZodObject<{
|
|
25
|
+
allowedUsers: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
26
|
+
dmOnly: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
auditLog: z.ZodDefault<z.ZodObject<{
|
|
28
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
maskSecrets: z.ZodDefault<z.ZodBoolean>;
|
|
30
|
+
}, z.core.$strip>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const safetyConfigSchema: z.ZodObject<{
|
|
33
|
+
dangerousActionsRequireApproval: z.ZodDefault<z.ZodBoolean>;
|
|
34
|
+
approvalTimeoutMinutes: z.ZodDefault<z.ZodNumber>;
|
|
35
|
+
}, z.core.$strip>;
|
|
36
|
+
export declare const thresholdsConfigSchema: z.ZodObject<{
|
|
37
|
+
keywordRankAlert: z.ZodDefault<z.ZodNumber>;
|
|
38
|
+
reviewSentimentAlert: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
oneStarReviewAlert: z.ZodDefault<z.ZodNumber>;
|
|
40
|
+
installSignupDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
41
|
+
subscriptionDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
seoClicksDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
43
|
+
seoImpressionsDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
44
|
+
webTrafficDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export declare const agentConfigSchema: z.ZodObject<{
|
|
47
|
+
showThinking: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
briefingChannel: z.ZodOptional<z.ZodString>;
|
|
49
|
+
weeklyTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
50
|
+
}, z.core.$strip>;
|
|
51
|
+
/**
|
|
52
|
+
* `config.yaml.collectors` holds the global secrets each collector needs.
|
|
53
|
+
* Every block is optional so users can enable collectors incrementally:
|
|
54
|
+
* an unset block means the skill/orchestrator that depends on it will
|
|
55
|
+
* simply skip that data source. Secret fields accept the keychain
|
|
56
|
+
* sentinel the same way `slack.*` does.
|
|
57
|
+
*/
|
|
58
|
+
export declare const appStoreCollectorConfigSchema: z.ZodObject<{
|
|
59
|
+
keyId: z.ZodString;
|
|
60
|
+
issuerId: z.ZodString;
|
|
61
|
+
privateKey: z.ZodString;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export declare const playStoreCollectorConfigSchema: z.ZodObject<{
|
|
64
|
+
serviceAccountJson: z.ZodString;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
export declare const eodinSdkCollectorConfigSchema: z.ZodObject<{
|
|
67
|
+
apiKey: z.ZodString;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
export declare const eodinGrowthCollectorConfigSchema: z.ZodObject<{
|
|
70
|
+
token: z.ZodString;
|
|
71
|
+
}, z.core.$strip>;
|
|
72
|
+
export declare const asoMobileCollectorConfigSchema: z.ZodObject<{
|
|
73
|
+
apiKey: z.ZodString;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
export declare const youtubeCollectorConfigSchema: z.ZodObject<{
|
|
76
|
+
apiKey: z.ZodString;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const ardenTtsCollectorConfigSchema: z.ZodObject<{
|
|
79
|
+
endpoint: z.ZodString;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
export declare const twitterSocialConfigSchema: z.ZodObject<{
|
|
82
|
+
apiKey: z.ZodString;
|
|
83
|
+
apiSecret: z.ZodString;
|
|
84
|
+
accessToken: z.ZodString;
|
|
85
|
+
accessTokenSecret: z.ZodString;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
export declare const facebookSocialConfigSchema: z.ZodObject<{
|
|
88
|
+
appId: z.ZodString;
|
|
89
|
+
appSecret: z.ZodString;
|
|
90
|
+
accessToken: z.ZodString;
|
|
91
|
+
pageId: z.ZodString;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
export declare const threadsSocialConfigSchema: z.ZodObject<{
|
|
94
|
+
accessToken: z.ZodString;
|
|
95
|
+
userId: z.ZodString;
|
|
96
|
+
}, z.core.$strip>;
|
|
97
|
+
export declare const tiktokSocialConfigSchema: z.ZodObject<{
|
|
98
|
+
clientKey: z.ZodString;
|
|
99
|
+
clientSecret: z.ZodString;
|
|
100
|
+
accessToken: z.ZodString;
|
|
101
|
+
}, z.core.$strip>;
|
|
102
|
+
export declare const youtubeSocialConfigSchema: z.ZodObject<{
|
|
103
|
+
accessToken: z.ZodString;
|
|
104
|
+
channelId: z.ZodString;
|
|
105
|
+
}, z.core.$strip>;
|
|
106
|
+
export declare const linkedinSocialConfigSchema: z.ZodObject<{
|
|
107
|
+
accessToken: z.ZodString;
|
|
108
|
+
organizationId: z.ZodString;
|
|
109
|
+
}, z.core.$strip>;
|
|
110
|
+
export declare const socialConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
111
|
+
twitter: z.ZodOptional<z.ZodObject<{
|
|
112
|
+
apiKey: z.ZodString;
|
|
113
|
+
apiSecret: z.ZodString;
|
|
114
|
+
accessToken: z.ZodString;
|
|
115
|
+
accessTokenSecret: z.ZodString;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
facebook: z.ZodOptional<z.ZodObject<{
|
|
118
|
+
appId: z.ZodString;
|
|
119
|
+
appSecret: z.ZodString;
|
|
120
|
+
accessToken: z.ZodString;
|
|
121
|
+
pageId: z.ZodString;
|
|
122
|
+
}, z.core.$strip>>;
|
|
123
|
+
threads: z.ZodOptional<z.ZodObject<{
|
|
124
|
+
accessToken: z.ZodString;
|
|
125
|
+
userId: z.ZodString;
|
|
126
|
+
}, z.core.$strip>>;
|
|
127
|
+
tiktok: z.ZodOptional<z.ZodObject<{
|
|
128
|
+
clientKey: z.ZodString;
|
|
129
|
+
clientSecret: z.ZodString;
|
|
130
|
+
accessToken: z.ZodString;
|
|
131
|
+
}, z.core.$strip>>;
|
|
132
|
+
youtube: z.ZodOptional<z.ZodObject<{
|
|
133
|
+
accessToken: z.ZodString;
|
|
134
|
+
channelId: z.ZodString;
|
|
135
|
+
}, z.core.$strip>>;
|
|
136
|
+
linkedin: z.ZodOptional<z.ZodObject<{
|
|
137
|
+
accessToken: z.ZodString;
|
|
138
|
+
organizationId: z.ZodString;
|
|
139
|
+
}, z.core.$strip>>;
|
|
140
|
+
}, z.core.$strip>>;
|
|
141
|
+
export declare const collectorsConfigSchema: z.ZodDefault<z.ZodObject<{
|
|
142
|
+
appStore: z.ZodOptional<z.ZodObject<{
|
|
143
|
+
keyId: z.ZodString;
|
|
144
|
+
issuerId: z.ZodString;
|
|
145
|
+
privateKey: z.ZodString;
|
|
146
|
+
}, z.core.$strip>>;
|
|
147
|
+
playStore: z.ZodOptional<z.ZodObject<{
|
|
148
|
+
serviceAccountJson: z.ZodString;
|
|
149
|
+
}, z.core.$strip>>;
|
|
150
|
+
eodinSdk: z.ZodOptional<z.ZodObject<{
|
|
151
|
+
apiKey: z.ZodString;
|
|
152
|
+
}, z.core.$strip>>;
|
|
153
|
+
eodinGrowth: z.ZodOptional<z.ZodObject<{
|
|
154
|
+
token: z.ZodString;
|
|
155
|
+
}, z.core.$strip>>;
|
|
156
|
+
asoMobile: z.ZodOptional<z.ZodObject<{
|
|
157
|
+
apiKey: z.ZodString;
|
|
158
|
+
}, z.core.$strip>>;
|
|
159
|
+
youtube: z.ZodOptional<z.ZodObject<{
|
|
160
|
+
apiKey: z.ZodString;
|
|
161
|
+
}, z.core.$strip>>;
|
|
162
|
+
ardenTts: z.ZodOptional<z.ZodObject<{
|
|
163
|
+
endpoint: z.ZodString;
|
|
164
|
+
}, z.core.$strip>>;
|
|
165
|
+
}, z.core.$strip>>;
|
|
166
|
+
export declare const configSchema: z.ZodObject<{
|
|
167
|
+
slack: z.ZodObject<{
|
|
168
|
+
botToken: z.ZodString;
|
|
169
|
+
appToken: z.ZodString;
|
|
170
|
+
signingSecret: z.ZodString;
|
|
171
|
+
}, z.core.$strip>;
|
|
172
|
+
claude: z.ZodObject<{
|
|
173
|
+
mode: z.ZodDefault<z.ZodLiteral<"cli">>;
|
|
174
|
+
cliBinary: z.ZodDefault<z.ZodString>;
|
|
175
|
+
apiKey: z.ZodDefault<z.ZodNullable<z.ZodString>>;
|
|
176
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
177
|
+
}, z.core.$strip>;
|
|
178
|
+
security: z.ZodObject<{
|
|
179
|
+
allowedUsers: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
180
|
+
dmOnly: z.ZodDefault<z.ZodBoolean>;
|
|
181
|
+
auditLog: z.ZodDefault<z.ZodObject<{
|
|
182
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
183
|
+
maskSecrets: z.ZodDefault<z.ZodBoolean>;
|
|
184
|
+
}, z.core.$strip>>;
|
|
185
|
+
}, z.core.$strip>;
|
|
186
|
+
safety: z.ZodDefault<z.ZodObject<{
|
|
187
|
+
dangerousActionsRequireApproval: z.ZodDefault<z.ZodBoolean>;
|
|
188
|
+
approvalTimeoutMinutes: z.ZodDefault<z.ZodNumber>;
|
|
189
|
+
}, z.core.$strip>>;
|
|
190
|
+
agent: z.ZodDefault<z.ZodObject<{
|
|
191
|
+
showThinking: z.ZodDefault<z.ZodBoolean>;
|
|
192
|
+
briefingChannel: z.ZodOptional<z.ZodString>;
|
|
193
|
+
weeklyTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
194
|
+
}, z.core.$strip>>;
|
|
195
|
+
social: z.ZodDefault<z.ZodObject<{
|
|
196
|
+
twitter: z.ZodOptional<z.ZodObject<{
|
|
197
|
+
apiKey: z.ZodString;
|
|
198
|
+
apiSecret: z.ZodString;
|
|
199
|
+
accessToken: z.ZodString;
|
|
200
|
+
accessTokenSecret: z.ZodString;
|
|
201
|
+
}, z.core.$strip>>;
|
|
202
|
+
facebook: z.ZodOptional<z.ZodObject<{
|
|
203
|
+
appId: z.ZodString;
|
|
204
|
+
appSecret: z.ZodString;
|
|
205
|
+
accessToken: z.ZodString;
|
|
206
|
+
pageId: z.ZodString;
|
|
207
|
+
}, z.core.$strip>>;
|
|
208
|
+
threads: z.ZodOptional<z.ZodObject<{
|
|
209
|
+
accessToken: z.ZodString;
|
|
210
|
+
userId: z.ZodString;
|
|
211
|
+
}, z.core.$strip>>;
|
|
212
|
+
tiktok: z.ZodOptional<z.ZodObject<{
|
|
213
|
+
clientKey: z.ZodString;
|
|
214
|
+
clientSecret: z.ZodString;
|
|
215
|
+
accessToken: z.ZodString;
|
|
216
|
+
}, z.core.$strip>>;
|
|
217
|
+
youtube: z.ZodOptional<z.ZodObject<{
|
|
218
|
+
accessToken: z.ZodString;
|
|
219
|
+
channelId: z.ZodString;
|
|
220
|
+
}, z.core.$strip>>;
|
|
221
|
+
linkedin: z.ZodOptional<z.ZodObject<{
|
|
222
|
+
accessToken: z.ZodString;
|
|
223
|
+
organizationId: z.ZodString;
|
|
224
|
+
}, z.core.$strip>>;
|
|
225
|
+
}, z.core.$strip>>;
|
|
226
|
+
thresholds: z.ZodDefault<z.ZodObject<{
|
|
227
|
+
keywordRankAlert: z.ZodDefault<z.ZodNumber>;
|
|
228
|
+
reviewSentimentAlert: z.ZodDefault<z.ZodNumber>;
|
|
229
|
+
oneStarReviewAlert: z.ZodDefault<z.ZodNumber>;
|
|
230
|
+
installSignupDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
231
|
+
subscriptionDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
232
|
+
seoClicksDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
233
|
+
seoImpressionsDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
234
|
+
webTrafficDropAlert: z.ZodDefault<z.ZodNumber>;
|
|
235
|
+
}, z.core.$strip>>;
|
|
236
|
+
collectors: z.ZodDefault<z.ZodObject<{
|
|
237
|
+
appStore: z.ZodOptional<z.ZodObject<{
|
|
238
|
+
keyId: z.ZodString;
|
|
239
|
+
issuerId: z.ZodString;
|
|
240
|
+
privateKey: z.ZodString;
|
|
241
|
+
}, z.core.$strip>>;
|
|
242
|
+
playStore: z.ZodOptional<z.ZodObject<{
|
|
243
|
+
serviceAccountJson: z.ZodString;
|
|
244
|
+
}, z.core.$strip>>;
|
|
245
|
+
eodinSdk: z.ZodOptional<z.ZodObject<{
|
|
246
|
+
apiKey: z.ZodString;
|
|
247
|
+
}, z.core.$strip>>;
|
|
248
|
+
eodinGrowth: z.ZodOptional<z.ZodObject<{
|
|
249
|
+
token: z.ZodString;
|
|
250
|
+
}, z.core.$strip>>;
|
|
251
|
+
asoMobile: z.ZodOptional<z.ZodObject<{
|
|
252
|
+
apiKey: z.ZodString;
|
|
253
|
+
}, z.core.$strip>>;
|
|
254
|
+
youtube: z.ZodOptional<z.ZodObject<{
|
|
255
|
+
apiKey: z.ZodString;
|
|
256
|
+
}, z.core.$strip>>;
|
|
257
|
+
ardenTts: z.ZodOptional<z.ZodObject<{
|
|
258
|
+
endpoint: z.ZodString;
|
|
259
|
+
}, z.core.$strip>>;
|
|
260
|
+
}, z.core.$strip>>;
|
|
261
|
+
}, z.core.$strip>;
|
|
262
|
+
export type AdariaConfig = z.infer<typeof configSchema>;
|
|
263
|
+
export type SlackConfig = z.infer<typeof slackConfigSchema>;
|
|
264
|
+
export type ClaudeConfig = z.infer<typeof claudeConfigSchema>;
|
|
265
|
+
export type SecurityConfig = z.infer<typeof securityConfigSchema>;
|
|
266
|
+
export type SafetyConfig = z.infer<typeof safetyConfigSchema>;
|
|
267
|
+
export type AgentConfig = z.infer<typeof agentConfigSchema>;
|
|
268
|
+
export type ThresholdsConfig = z.infer<typeof thresholdsConfigSchema>;
|
|
269
|
+
export type SocialConfig = z.infer<typeof socialConfigSchema>;
|
|
270
|
+
export type CollectorsConfig = z.infer<typeof collectorsConfigSchema>;
|
|
271
|
+
export type AppStoreCollectorConfig = z.infer<typeof appStoreCollectorConfigSchema>;
|
|
272
|
+
export type PlayStoreCollectorConfig = z.infer<typeof playStoreCollectorConfigSchema>;
|
|
273
|
+
export type EodinSdkCollectorConfig = z.infer<typeof eodinSdkCollectorConfigSchema>;
|
|
274
|
+
export type EodinGrowthCollectorConfig = z.infer<typeof eodinGrowthCollectorConfigSchema>;
|
|
275
|
+
export type AsoMobileCollectorConfig = z.infer<typeof asoMobileCollectorConfigSchema>;
|
|
276
|
+
export type YoutubeCollectorConfig = z.infer<typeof youtubeCollectorConfigSchema>;
|
|
277
|
+
export type ArdenTtsCollectorConfig = z.infer<typeof ardenTtsCollectorConfigSchema>;
|
|
278
|
+
export declare const KEYCHAIN_SENTINEL = "***keychain***";
|
|
279
|
+
/**
|
|
280
|
+
* Keychain slot names for every secret field in the config. Kept in one
|
|
281
|
+
* place so init.ts (writes) and store.ts (reads) can't drift out of sync.
|
|
282
|
+
*/
|
|
283
|
+
export declare const KEYCHAIN_KEYS: {
|
|
284
|
+
readonly slackBotToken: "slack-bot-token";
|
|
285
|
+
readonly slackAppToken: "slack-app-token";
|
|
286
|
+
readonly slackSigningSecret: "slack-signing-secret";
|
|
287
|
+
readonly anthropicApiKey: "anthropic-api-key";
|
|
288
|
+
readonly appStorePrivateKey: "collector-appstore-private-key";
|
|
289
|
+
readonly playStoreServiceAccount: "collector-playstore-service-account";
|
|
290
|
+
readonly eodinSdkApiKey: "collector-eodin-sdk-api-key";
|
|
291
|
+
readonly eodinGrowthToken: "collector-eodin-growth-token";
|
|
292
|
+
readonly asoMobileApiKey: "collector-asomobile-api-key";
|
|
293
|
+
readonly youtubeApiKey: "collector-youtube-api-key";
|
|
294
|
+
readonly twitterApiKey: "social-twitter-api-key";
|
|
295
|
+
readonly twitterApiSecret: "social-twitter-api-secret";
|
|
296
|
+
readonly twitterAccessToken: "social-twitter-access-token";
|
|
297
|
+
readonly twitterAccessTokenSecret: "social-twitter-access-token-secret";
|
|
298
|
+
readonly facebookAppSecret: "social-facebook-app-secret";
|
|
299
|
+
readonly facebookAccessToken: "social-facebook-access-token";
|
|
300
|
+
readonly threadsAccessToken: "social-threads-access-token";
|
|
301
|
+
readonly tiktokClientSecret: "social-tiktok-client-secret";
|
|
302
|
+
readonly tiktokAccessToken: "social-tiktok-access-token";
|
|
303
|
+
readonly youtubeAccessToken: "social-youtube-access-token";
|
|
304
|
+
readonly linkedinAccessToken: "social-linkedin-access-token";
|
|
305
|
+
};
|
|
306
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* adaria-ai config schema.
|
|
4
|
+
*
|
|
5
|
+
* Written to `$ADARIA_HOME/config.yaml` by `adaria-ai init`. Secrets may be
|
|
6
|
+
* stored inline or replaced with the sentinel string `***keychain***`, in
|
|
7
|
+
* which case `store.ts` resolves them from the macOS Keychain at load time.
|
|
8
|
+
*
|
|
9
|
+
* Shape diverges from pilot-ai: dropped all personal-agent surfaces (notion,
|
|
10
|
+
* obsidian, linear, figma, github, google workspace, telegram, filesystem
|
|
11
|
+
* sandbox). Only Slack is supported as the messenger in v1.
|
|
12
|
+
*/
|
|
13
|
+
export const slackConfigSchema = z.object({
|
|
14
|
+
botToken: z.string().min(1),
|
|
15
|
+
appToken: z.string().min(1),
|
|
16
|
+
signingSecret: z.string().min(1),
|
|
17
|
+
});
|
|
18
|
+
export const claudeConfigSchema = z.object({
|
|
19
|
+
/** M1 ships only the CLI runner. The schema intentionally refuses
|
|
20
|
+
* `mode: 'api'` at load time rather than silently falling through to
|
|
21
|
+
* CLI when the user expected an Anthropic SDK invocation (M1 claude
|
|
22
|
+
* review HIGH #1). A later milestone will re-add `'api'` once the
|
|
23
|
+
* fallback runner is ported. */
|
|
24
|
+
mode: z.literal("cli").default("cli"),
|
|
25
|
+
cliBinary: z.string().default("claude"),
|
|
26
|
+
apiKey: z.string().nullable().default(null),
|
|
27
|
+
/** Default Claude CLI timeout in ms — adaria-ai defaults to 120s for
|
|
28
|
+
* reactive Slack calls; weekly orchestrator overrides this per-call. */
|
|
29
|
+
timeoutMs: z.number().int().positive().default(120_000),
|
|
30
|
+
});
|
|
31
|
+
export const securityConfigSchema = z.object({
|
|
32
|
+
/** Slack user IDs allowed to mention the bot. Non-allowlisted users are
|
|
33
|
+
* silently ignored. */
|
|
34
|
+
allowedUsers: z.array(z.string()).default([]),
|
|
35
|
+
/** If true, only direct messages (no public channel mentions) are accepted. */
|
|
36
|
+
dmOnly: z.boolean().default(false),
|
|
37
|
+
auditLog: z
|
|
38
|
+
.object({
|
|
39
|
+
enabled: z.boolean().default(true),
|
|
40
|
+
maskSecrets: z.boolean().default(true),
|
|
41
|
+
})
|
|
42
|
+
.default({ enabled: true, maskSecrets: true }),
|
|
43
|
+
});
|
|
44
|
+
export const safetyConfigSchema = z.object({
|
|
45
|
+
dangerousActionsRequireApproval: z.boolean().default(true),
|
|
46
|
+
approvalTimeoutMinutes: z.number().int().positive().default(30),
|
|
47
|
+
});
|
|
48
|
+
export const thresholdsConfigSchema = z.object({
|
|
49
|
+
/** Keyword rank drop (positions) to trigger a critical alert. */
|
|
50
|
+
keywordRankAlert: z.number().int().positive().default(5),
|
|
51
|
+
/** Negative review ratio (0–1) to trigger a critical alert. */
|
|
52
|
+
reviewSentimentAlert: z.number().min(0).max(1).default(0.3),
|
|
53
|
+
/** 1-star reviews in 24h to trigger a warning. */
|
|
54
|
+
oneStarReviewAlert: z.number().int().nonnegative().default(3),
|
|
55
|
+
/** Install→signup conversion drop ratio (0–1) to trigger a warning. */
|
|
56
|
+
installSignupDropAlert: z.number().min(0).max(1).default(0.15),
|
|
57
|
+
/** Signup→subscription conversion drop ratio (0–1) to trigger a warning. */
|
|
58
|
+
subscriptionDropAlert: z.number().min(0).max(1).default(0.2),
|
|
59
|
+
/** SEO clicks WoW drop ratio to trigger a warning. */
|
|
60
|
+
seoClicksDropAlert: z.number().min(0).max(1).default(0.3),
|
|
61
|
+
/** SEO impressions WoW drop ratio to trigger a warning. */
|
|
62
|
+
seoImpressionsDropAlert: z.number().min(0).max(1).default(0.3),
|
|
63
|
+
/** Web traffic sessions WoW drop ratio to trigger a warning. */
|
|
64
|
+
webTrafficDropAlert: z.number().min(0).max(1).default(0.25),
|
|
65
|
+
});
|
|
66
|
+
export const agentConfigSchema = z.object({
|
|
67
|
+
/** Whether to stream Claude's thinking snippets back to the Slack message. */
|
|
68
|
+
showThinking: z.boolean().default(true),
|
|
69
|
+
/** Default briefing channel (e.g. "#growth"). Used by the weekly
|
|
70
|
+
* orchestrator (M6) for posting the Sunday briefing. */
|
|
71
|
+
briefingChannel: z.string().optional(),
|
|
72
|
+
/** Claude CLI timeout override for weekly orchestrator (ms). Weekly
|
|
73
|
+
* analysis skills may take much longer than interactive commands. */
|
|
74
|
+
weeklyTimeoutMs: z.number().int().positive().default(900_000),
|
|
75
|
+
});
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// Collector credentials (global — per-app identifiers live in apps.yaml)
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* `config.yaml.collectors` holds the global secrets each collector needs.
|
|
81
|
+
* Every block is optional so users can enable collectors incrementally:
|
|
82
|
+
* an unset block means the skill/orchestrator that depends on it will
|
|
83
|
+
* simply skip that data source. Secret fields accept the keychain
|
|
84
|
+
* sentinel the same way `slack.*` does.
|
|
85
|
+
*/
|
|
86
|
+
export const appStoreCollectorConfigSchema = z.object({
|
|
87
|
+
keyId: z.string().min(1),
|
|
88
|
+
issuerId: z.string().min(1),
|
|
89
|
+
privateKey: z.string().min(1),
|
|
90
|
+
});
|
|
91
|
+
export const playStoreCollectorConfigSchema = z.object({
|
|
92
|
+
serviceAccountJson: z.string().min(1),
|
|
93
|
+
});
|
|
94
|
+
export const eodinSdkCollectorConfigSchema = z.object({
|
|
95
|
+
apiKey: z.string().min(1),
|
|
96
|
+
});
|
|
97
|
+
export const eodinGrowthCollectorConfigSchema = z.object({
|
|
98
|
+
token: z.string().min(1),
|
|
99
|
+
});
|
|
100
|
+
export const asoMobileCollectorConfigSchema = z.object({
|
|
101
|
+
apiKey: z.string().min(1),
|
|
102
|
+
});
|
|
103
|
+
export const youtubeCollectorConfigSchema = z.object({
|
|
104
|
+
apiKey: z.string().min(1),
|
|
105
|
+
});
|
|
106
|
+
export const ardenTtsCollectorConfigSchema = z.object({
|
|
107
|
+
/** Not a secret — the user-hosted TTS endpoint URL. */
|
|
108
|
+
endpoint: z.string().url(),
|
|
109
|
+
});
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
// Social platform credentials
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
export const twitterSocialConfigSchema = z.object({
|
|
114
|
+
apiKey: z.string().min(1),
|
|
115
|
+
apiSecret: z.string().min(1),
|
|
116
|
+
accessToken: z.string().min(1),
|
|
117
|
+
accessTokenSecret: z.string().min(1),
|
|
118
|
+
});
|
|
119
|
+
export const facebookSocialConfigSchema = z.object({
|
|
120
|
+
appId: z.string().min(1),
|
|
121
|
+
appSecret: z.string().min(1),
|
|
122
|
+
accessToken: z.string().min(1),
|
|
123
|
+
pageId: z.string().min(1),
|
|
124
|
+
});
|
|
125
|
+
export const threadsSocialConfigSchema = z.object({
|
|
126
|
+
accessToken: z.string().min(1),
|
|
127
|
+
userId: z.string().min(1),
|
|
128
|
+
});
|
|
129
|
+
export const tiktokSocialConfigSchema = z.object({
|
|
130
|
+
clientKey: z.string().min(1),
|
|
131
|
+
clientSecret: z.string().min(1),
|
|
132
|
+
accessToken: z.string().min(1),
|
|
133
|
+
});
|
|
134
|
+
export const youtubeSocialConfigSchema = z.object({
|
|
135
|
+
accessToken: z.string().min(1),
|
|
136
|
+
channelId: z.string().min(1),
|
|
137
|
+
});
|
|
138
|
+
export const linkedinSocialConfigSchema = z.object({
|
|
139
|
+
accessToken: z.string().min(1),
|
|
140
|
+
organizationId: z.string().min(1),
|
|
141
|
+
});
|
|
142
|
+
export const socialConfigSchema = z
|
|
143
|
+
.object({
|
|
144
|
+
twitter: twitterSocialConfigSchema.optional(),
|
|
145
|
+
facebook: facebookSocialConfigSchema.optional(),
|
|
146
|
+
threads: threadsSocialConfigSchema.optional(),
|
|
147
|
+
tiktok: tiktokSocialConfigSchema.optional(),
|
|
148
|
+
youtube: youtubeSocialConfigSchema.optional(),
|
|
149
|
+
linkedin: linkedinSocialConfigSchema.optional(),
|
|
150
|
+
})
|
|
151
|
+
.default({});
|
|
152
|
+
// ---------------------------------------------------------------------------
|
|
153
|
+
// Collector credentials (global — per-app identifiers live in apps.yaml)
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
export const collectorsConfigSchema = z
|
|
156
|
+
.object({
|
|
157
|
+
appStore: appStoreCollectorConfigSchema.optional(),
|
|
158
|
+
playStore: playStoreCollectorConfigSchema.optional(),
|
|
159
|
+
eodinSdk: eodinSdkCollectorConfigSchema.optional(),
|
|
160
|
+
eodinGrowth: eodinGrowthCollectorConfigSchema.optional(),
|
|
161
|
+
asoMobile: asoMobileCollectorConfigSchema.optional(),
|
|
162
|
+
youtube: youtubeCollectorConfigSchema.optional(),
|
|
163
|
+
ardenTts: ardenTtsCollectorConfigSchema.optional(),
|
|
164
|
+
})
|
|
165
|
+
.default({});
|
|
166
|
+
export const configSchema = z.object({
|
|
167
|
+
slack: slackConfigSchema,
|
|
168
|
+
claude: claudeConfigSchema,
|
|
169
|
+
security: securityConfigSchema,
|
|
170
|
+
safety: safetyConfigSchema.default({
|
|
171
|
+
dangerousActionsRequireApproval: true,
|
|
172
|
+
approvalTimeoutMinutes: 30,
|
|
173
|
+
}),
|
|
174
|
+
agent: agentConfigSchema.default({
|
|
175
|
+
showThinking: true,
|
|
176
|
+
weeklyTimeoutMs: 900_000,
|
|
177
|
+
}),
|
|
178
|
+
social: socialConfigSchema,
|
|
179
|
+
thresholds: thresholdsConfigSchema.default({
|
|
180
|
+
keywordRankAlert: 5,
|
|
181
|
+
reviewSentimentAlert: 0.3,
|
|
182
|
+
oneStarReviewAlert: 3,
|
|
183
|
+
installSignupDropAlert: 0.15,
|
|
184
|
+
subscriptionDropAlert: 0.2,
|
|
185
|
+
seoClicksDropAlert: 0.3,
|
|
186
|
+
seoImpressionsDropAlert: 0.3,
|
|
187
|
+
webTrafficDropAlert: 0.25,
|
|
188
|
+
}),
|
|
189
|
+
collectors: collectorsConfigSchema,
|
|
190
|
+
});
|
|
191
|
+
export const KEYCHAIN_SENTINEL = "***keychain***";
|
|
192
|
+
/**
|
|
193
|
+
* Keychain slot names for every secret field in the config. Kept in one
|
|
194
|
+
* place so init.ts (writes) and store.ts (reads) can't drift out of sync.
|
|
195
|
+
*/
|
|
196
|
+
export const KEYCHAIN_KEYS = {
|
|
197
|
+
slackBotToken: "slack-bot-token",
|
|
198
|
+
slackAppToken: "slack-app-token",
|
|
199
|
+
slackSigningSecret: "slack-signing-secret",
|
|
200
|
+
anthropicApiKey: "anthropic-api-key",
|
|
201
|
+
appStorePrivateKey: "collector-appstore-private-key",
|
|
202
|
+
playStoreServiceAccount: "collector-playstore-service-account",
|
|
203
|
+
eodinSdkApiKey: "collector-eodin-sdk-api-key",
|
|
204
|
+
eodinGrowthToken: "collector-eodin-growth-token",
|
|
205
|
+
asoMobileApiKey: "collector-asomobile-api-key",
|
|
206
|
+
youtubeApiKey: "collector-youtube-api-key",
|
|
207
|
+
// Social platform secrets
|
|
208
|
+
twitterApiKey: "social-twitter-api-key",
|
|
209
|
+
twitterApiSecret: "social-twitter-api-secret",
|
|
210
|
+
twitterAccessToken: "social-twitter-access-token",
|
|
211
|
+
twitterAccessTokenSecret: "social-twitter-access-token-secret",
|
|
212
|
+
facebookAppSecret: "social-facebook-app-secret",
|
|
213
|
+
facebookAccessToken: "social-facebook-access-token",
|
|
214
|
+
threadsAccessToken: "social-threads-access-token",
|
|
215
|
+
tiktokClientSecret: "social-tiktok-client-secret",
|
|
216
|
+
tiktokAccessToken: "social-tiktok-access-token",
|
|
217
|
+
youtubeAccessToken: "social-youtube-access-token",
|
|
218
|
+
linkedinAccessToken: "social-linkedin-access-token",
|
|
219
|
+
};
|
|
220
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type AdariaConfig } from "./schema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create $ADARIA_HOME and all required subdirectories and force 0700 perms.
|
|
4
|
+
*
|
|
5
|
+
* The explicit `fs.chmod` calls are load-bearing: `fs.mkdir({ mode })` silently
|
|
6
|
+
* ignores the mode argument on pre-existing directories, so if the user ever
|
|
7
|
+
* created `~/.adaria` by hand or via a prior tool at 0755, we need to tighten
|
|
8
|
+
* it on every daemon startup. Same pattern applies to `saveConfig` below.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ensureAdariaDir(): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Load and validate the config from $ADARIA_HOME/config.yaml.
|
|
13
|
+
* Throws ConfigError if the file is missing or invalid.
|
|
14
|
+
* Secrets flagged with KEYCHAIN_SENTINEL are resolved from the macOS Keychain.
|
|
15
|
+
*
|
|
16
|
+
* TODO(M6): cache resolved config for daemon hot path — cron shots currently
|
|
17
|
+
* fork the `security` CLI up to 4× per loadConfig() call. Fine during M1
|
|
18
|
+
* startup, but M6 weekly/monitor cron will benefit from in-memory caching
|
|
19
|
+
* with SIGHUP invalidation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function loadConfig(): Promise<AdariaConfig>;
|
|
22
|
+
/**
|
|
23
|
+
* Read the YAML file as-is without schema validation or keychain resolution.
|
|
24
|
+
* Used by `adaria-ai init` when updating an existing config.
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadRawConfig(): Promise<Record<string, unknown>>;
|
|
27
|
+
/**
|
|
28
|
+
* Write a (possibly partial) config object to disk as YAML with 0600 perms.
|
|
29
|
+
*
|
|
30
|
+
* The explicit `fs.chmod` is load-bearing: `fs.writeFile({ mode })` only applies
|
|
31
|
+
* the mode when creating a new file. Without the chmod, a config accidentally
|
|
32
|
+
* written with a loose umask (e.g. 0022 → 0644) would stay loose across
|
|
33
|
+
* subsequent saves. Callers are responsible for writing a structure that will
|
|
34
|
+
* pass schema validation on the next load.
|
|
35
|
+
*/
|
|
36
|
+
export declare function saveConfig(config: Partial<AdariaConfig> | Record<string, unknown>): Promise<void>;
|
|
37
|
+
export declare function configExists(): Promise<boolean>;
|
|
38
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/config/store.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAcrB;;;;;;;GAOG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC,CA6BxD;AAyGD;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAKf;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAOrD"}
|