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,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Summary Buffer for thread-based conversation continuity.
|
|
3
|
+
*
|
|
4
|
+
* Maintains a rolling summary of each thread's conversation so that
|
|
5
|
+
* context can be restored when a Claude CLI session is reset (msg_too_long).
|
|
6
|
+
*
|
|
7
|
+
* Strategy: hybrid — normal flow uses --resume for full context; this
|
|
8
|
+
* summary is the fallback injected into a fresh session's system prompt.
|
|
9
|
+
*/
|
|
10
|
+
import fs from "node:fs/promises";
|
|
11
|
+
import path from "node:path";
|
|
12
|
+
import { CONVERSATIONS_DIR } from "../utils/paths.js";
|
|
13
|
+
import { maskSecrets } from "./audit.js";
|
|
14
|
+
const MAX_TURNS = 15;
|
|
15
|
+
const MAX_DECISIONS = 20;
|
|
16
|
+
const MAX_FILES = 30;
|
|
17
|
+
const MAX_USER_MSG_LEN = 500;
|
|
18
|
+
const MAX_ACTION_LEN = 800;
|
|
19
|
+
const SUMMARY_TTL_MS = 48 * 60 * 60 * 1000;
|
|
20
|
+
function getSummaryPath(threadKey) {
|
|
21
|
+
const filename = threadKey.replace(/:/g, "_") + ".json";
|
|
22
|
+
return path.join(CONVERSATIONS_DIR, filename);
|
|
23
|
+
}
|
|
24
|
+
function buildThreadKey(platform, channelId, threadId) {
|
|
25
|
+
return `${platform}:${channelId}:${threadId}`;
|
|
26
|
+
}
|
|
27
|
+
export async function loadSummary(platform, channelId, threadId) {
|
|
28
|
+
const key = buildThreadKey(platform, channelId, threadId);
|
|
29
|
+
const filePath = getSummaryPath(key);
|
|
30
|
+
try {
|
|
31
|
+
const data = await fs.readFile(filePath, "utf-8");
|
|
32
|
+
return JSON.parse(data);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export async function saveSummary(summary) {
|
|
39
|
+
const filePath = getSummaryPath(summary.threadKey);
|
|
40
|
+
await fs.mkdir(CONVERSATIONS_DIR, { recursive: true, mode: 0o700 });
|
|
41
|
+
await fs.writeFile(filePath, JSON.stringify(summary, null, 2), {
|
|
42
|
+
mode: 0o600,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
export function extractActionSummary(agentResponse) {
|
|
46
|
+
const sections = [];
|
|
47
|
+
const firstPara = agentResponse.split("\n\n")[0]?.replace(/\n/g, " ").trim();
|
|
48
|
+
if (firstPara)
|
|
49
|
+
sections.push(firstPara.slice(0, 400));
|
|
50
|
+
const statusLines = agentResponse.match(/(?:❌|✅|⚠️|Error:|Success:|Failed:|Warning:).*/g);
|
|
51
|
+
if (statusLines) {
|
|
52
|
+
for (const line of statusLines.slice(0, 3)) {
|
|
53
|
+
sections.push(line.trim().slice(0, 150));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const commitLines = agentResponse.match(/commit [0-9a-f]{7,}.*/gi);
|
|
57
|
+
if (commitLines) {
|
|
58
|
+
for (const line of commitLines.slice(0, 2)) {
|
|
59
|
+
sections.push(line.trim().slice(0, 150));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const result = sections.join(" | ");
|
|
63
|
+
if (result.length <= MAX_ACTION_LEN)
|
|
64
|
+
return result;
|
|
65
|
+
const truncated = result.slice(0, MAX_ACTION_LEN);
|
|
66
|
+
const lastSep = truncated.lastIndexOf(" | ");
|
|
67
|
+
if (lastSep > MAX_ACTION_LEN * 0.5) {
|
|
68
|
+
return truncated.slice(0, lastSep);
|
|
69
|
+
}
|
|
70
|
+
return truncated + "...";
|
|
71
|
+
}
|
|
72
|
+
export function extractModifiedFiles(agentResponse) {
|
|
73
|
+
const patterns = [
|
|
74
|
+
/(?:Writing|Editing|Creating|Modifying|✏️)\s+([\w./-]+\.\w+)/gi,
|
|
75
|
+
/(?:wrote to|saved|updated|created|modified)\s+([\w./-]+\.\w+)/gi,
|
|
76
|
+
/^\s*([\w./-]+\.\w+)\s*\|/gm,
|
|
77
|
+
];
|
|
78
|
+
const files = new Set();
|
|
79
|
+
for (const pattern of patterns) {
|
|
80
|
+
let match;
|
|
81
|
+
while ((match = pattern.exec(agentResponse)) !== null) {
|
|
82
|
+
const filePath = match[1];
|
|
83
|
+
if (filePath && filePath.includes("/") && !filePath.startsWith("http")) {
|
|
84
|
+
files.add(filePath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return [...files];
|
|
89
|
+
}
|
|
90
|
+
export function extractKeyDecisions(agentResponse) {
|
|
91
|
+
const decisions = [];
|
|
92
|
+
const patterns = [
|
|
93
|
+
/commit\s+[0-9a-f]+\s*[—–-]\s*(.+)/gi,
|
|
94
|
+
/(?:Created|Deleted|Installed|Configured|Updated|Fixed|Removed|Added|Migrated|Refactored)\s+(.{10,100}?)[.!\n]/g,
|
|
95
|
+
];
|
|
96
|
+
for (const pattern of patterns) {
|
|
97
|
+
let match;
|
|
98
|
+
while ((match = pattern.exec(agentResponse)) !== null) {
|
|
99
|
+
const captured = match[1];
|
|
100
|
+
if (!captured)
|
|
101
|
+
continue;
|
|
102
|
+
const decision = captured.trim().slice(0, 200);
|
|
103
|
+
if (!decisions.includes(decision)) {
|
|
104
|
+
decisions.push(decision);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return decisions;
|
|
109
|
+
}
|
|
110
|
+
export async function updateConversationSummary(platform, channelId, threadId, rawUserMessage, rawAgentResponse) {
|
|
111
|
+
// Mask secrets before any field derived from these blobs is persisted to
|
|
112
|
+
// disk or later re-injected into Claude's system prompt via
|
|
113
|
+
// getConversationSummaryText().
|
|
114
|
+
const userMessage = maskSecrets(rawUserMessage);
|
|
115
|
+
const agentResponse = maskSecrets(rawAgentResponse);
|
|
116
|
+
const key = buildThreadKey(platform, channelId, threadId);
|
|
117
|
+
const existing = await loadSummary(platform, channelId, threadId);
|
|
118
|
+
const summary = existing ?? {
|
|
119
|
+
threadKey: key,
|
|
120
|
+
turns: [],
|
|
121
|
+
keyDecisions: [],
|
|
122
|
+
modifiedFiles: [],
|
|
123
|
+
lastUpdated: new Date().toISOString(),
|
|
124
|
+
};
|
|
125
|
+
const turn = {
|
|
126
|
+
userMessage: userMessage.slice(0, MAX_USER_MSG_LEN),
|
|
127
|
+
agentAction: extractActionSummary(agentResponse),
|
|
128
|
+
timestamp: new Date().toISOString(),
|
|
129
|
+
};
|
|
130
|
+
summary.turns.push(turn);
|
|
131
|
+
if (summary.turns.length > MAX_TURNS) {
|
|
132
|
+
summary.turns = summary.turns.slice(-MAX_TURNS);
|
|
133
|
+
}
|
|
134
|
+
const newFiles = extractModifiedFiles(agentResponse);
|
|
135
|
+
for (const f of newFiles) {
|
|
136
|
+
if (!summary.modifiedFiles.includes(f)) {
|
|
137
|
+
summary.modifiedFiles.push(f);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (summary.modifiedFiles.length > MAX_FILES) {
|
|
141
|
+
summary.modifiedFiles = summary.modifiedFiles.slice(-MAX_FILES);
|
|
142
|
+
}
|
|
143
|
+
const newDecisions = extractKeyDecisions(agentResponse);
|
|
144
|
+
for (const d of newDecisions) {
|
|
145
|
+
if (!summary.keyDecisions.includes(d)) {
|
|
146
|
+
summary.keyDecisions.push(d);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (summary.keyDecisions.length > MAX_DECISIONS) {
|
|
150
|
+
summary.keyDecisions = summary.keyDecisions.slice(-MAX_DECISIONS);
|
|
151
|
+
}
|
|
152
|
+
summary.lastUpdated = new Date().toISOString();
|
|
153
|
+
await saveSummary(summary);
|
|
154
|
+
}
|
|
155
|
+
export async function getConversationSummaryText(platform, channelId, threadId) {
|
|
156
|
+
const summary = await loadSummary(platform, channelId, threadId);
|
|
157
|
+
if (!summary || summary.turns.length === 0)
|
|
158
|
+
return null;
|
|
159
|
+
const lines = [];
|
|
160
|
+
lines.push("This is the conversation history from this thread. Use this context to respond to the user's follow-up request.");
|
|
161
|
+
lines.push("");
|
|
162
|
+
lines.push(`## Previous conversation (${summary.turns.length} turns)`);
|
|
163
|
+
for (let i = 0; i < summary.turns.length; i++) {
|
|
164
|
+
const turn = summary.turns[i];
|
|
165
|
+
if (!turn)
|
|
166
|
+
continue;
|
|
167
|
+
const time = new Date(turn.timestamp).toLocaleTimeString("en-US", {
|
|
168
|
+
hour: "2-digit",
|
|
169
|
+
minute: "2-digit",
|
|
170
|
+
hour12: false,
|
|
171
|
+
});
|
|
172
|
+
lines.push(`${i + 1}. [${time}] User: "${turn.userMessage}"`);
|
|
173
|
+
lines.push(` → Agent: ${turn.agentAction}`);
|
|
174
|
+
lines.push("");
|
|
175
|
+
}
|
|
176
|
+
if (summary.modifiedFiles.length > 0) {
|
|
177
|
+
lines.push("## Modified files");
|
|
178
|
+
for (const f of summary.modifiedFiles) {
|
|
179
|
+
lines.push(`- ${f}`);
|
|
180
|
+
}
|
|
181
|
+
lines.push("");
|
|
182
|
+
}
|
|
183
|
+
if (summary.keyDecisions.length > 0) {
|
|
184
|
+
lines.push("## Key decisions");
|
|
185
|
+
for (const d of summary.keyDecisions) {
|
|
186
|
+
lines.push(`- ${d}`);
|
|
187
|
+
}
|
|
188
|
+
lines.push("");
|
|
189
|
+
}
|
|
190
|
+
return lines.join("\n");
|
|
191
|
+
}
|
|
192
|
+
export async function cleanupExpiredSummaries() {
|
|
193
|
+
let removed = 0;
|
|
194
|
+
try {
|
|
195
|
+
const files = await fs.readdir(CONVERSATIONS_DIR);
|
|
196
|
+
const now = Date.now();
|
|
197
|
+
for (const file of files) {
|
|
198
|
+
if (!file.endsWith(".json"))
|
|
199
|
+
continue;
|
|
200
|
+
const filePath = path.join(CONVERSATIONS_DIR, file);
|
|
201
|
+
try {
|
|
202
|
+
const data = await fs.readFile(filePath, "utf-8");
|
|
203
|
+
const summary = JSON.parse(data);
|
|
204
|
+
const age = now - new Date(summary.lastUpdated).getTime();
|
|
205
|
+
if (age > SUMMARY_TTL_MS) {
|
|
206
|
+
await fs.unlink(filePath);
|
|
207
|
+
removed++;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
await fs.unlink(filePath).catch(() => { });
|
|
212
|
+
removed++;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// Directory doesn't exist yet.
|
|
218
|
+
}
|
|
219
|
+
return removed;
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=conversation-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-summary.js","sourceRoot":"","sources":["../../src/agent/conversation-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent core — message dispatch and Claude orchestration.
|
|
3
|
+
*
|
|
4
|
+
* Ports pilot-ai's `src/agent/core.ts` with the major trim called for in
|
|
5
|
+
* the milestone checklist:
|
|
6
|
+
*
|
|
7
|
+
* Drop: project resolver, md-based skills loader, project-scoped memory,
|
|
8
|
+
* Google/GitHub auth checks, OAuth token refresher, macOS
|
|
9
|
+
* permission watcher, preference detector, project analyzer,
|
|
10
|
+
* MCP install migrator, memory-command intercept, Anthropic API
|
|
11
|
+
* fallback path.
|
|
12
|
+
*
|
|
13
|
+
* Keep: auth check, audit log, thinking reactions, status message
|
|
14
|
+
* evolution, session continuity, error differentiation,
|
|
15
|
+
* msg_too_long fallback, MCP context builder, tool-descriptions
|
|
16
|
+
* injection, MCP server health check.
|
|
17
|
+
*
|
|
18
|
+
* Added for adaria-ai:
|
|
19
|
+
*
|
|
20
|
+
* - Mode A / Mode B split. A `SkillRegistry` is checked first; if a
|
|
21
|
+
* skill matches the first token of the message, it handles the
|
|
22
|
+
* dispatch directly and Claude is not invoked. Otherwise we fall
|
|
23
|
+
* through to Mode B, which is an MCP-tool-aware Claude CLI call
|
|
24
|
+
* (empty MCP tool set in M1, 4 marketing tools in M5.5).
|
|
25
|
+
* - `mcpManager` and `skillRegistry` are constructor-injectable so
|
|
26
|
+
* tests can pass mocks and M4/M5 can swap the M1 placeholder
|
|
27
|
+
* registry for real skills without touching core.ts.
|
|
28
|
+
* - `AdariaError` (not `PilotError`) for the error-differentiation path.
|
|
29
|
+
*/
|
|
30
|
+
import type Database from "better-sqlite3";
|
|
31
|
+
import type { AdariaConfig } from "../config/schema.js";
|
|
32
|
+
import type { AppConfig } from "../config/apps-schema.js";
|
|
33
|
+
import type { MessengerAdapter } from "../messenger/adapter.js";
|
|
34
|
+
import { McpManager } from "./mcp-manager.js";
|
|
35
|
+
import type { SkillRegistry } from "../skills/index.js";
|
|
36
|
+
export interface AgentCoreOptions {
|
|
37
|
+
mcpManager?: McpManager;
|
|
38
|
+
skillRegistry?: SkillRegistry;
|
|
39
|
+
/** Initialized SQLite database. Required for Mode A skill dispatch (M4+). */
|
|
40
|
+
db?: Database.Database;
|
|
41
|
+
/** Loaded apps from apps.yaml. Required for Mode A skill dispatch (M4+). */
|
|
42
|
+
apps?: AppConfig[];
|
|
43
|
+
}
|
|
44
|
+
export declare class AgentCore {
|
|
45
|
+
private readonly messenger;
|
|
46
|
+
private readonly config;
|
|
47
|
+
private readonly approvalManager;
|
|
48
|
+
private readonly mcpManager;
|
|
49
|
+
private readonly skillRegistry;
|
|
50
|
+
private readonly db;
|
|
51
|
+
private readonly apps;
|
|
52
|
+
private readonly skillClaudeBreaker;
|
|
53
|
+
private readonly approvalPayloads;
|
|
54
|
+
constructor(messenger: MessengerAdapter, config: AdariaConfig, options?: AgentCoreOptions);
|
|
55
|
+
private setupHandlers;
|
|
56
|
+
start(): Promise<void>;
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
/** Exposed for M1 wiring tests and for the CLI daemon to seed skills. */
|
|
59
|
+
getSkillRegistry(): SkillRegistry;
|
|
60
|
+
private handleMessage;
|
|
61
|
+
private handleDispatchError;
|
|
62
|
+
/**
|
|
63
|
+
* Mode B path: build system prompt, manage session continuity, call
|
|
64
|
+
* Claude CLI, handle msg_too_long fallback, persist conversation summary.
|
|
65
|
+
*/
|
|
66
|
+
private invokeClaudeWithContext;
|
|
67
|
+
private buildBaseSystemPrompt;
|
|
68
|
+
/**
|
|
69
|
+
* Build the SkillContext for Mode A dispatch. Returns `null` if the
|
|
70
|
+
* database is not initialized (M1 placeholder path — skills still
|
|
71
|
+
* receive a minimal context with a stub `runClaude`).
|
|
72
|
+
*/
|
|
73
|
+
private buildSkillContext;
|
|
74
|
+
/**
|
|
75
|
+
* Called when an approval request is resolved (approved or timed out).
|
|
76
|
+
* Executes the associated action if approved.
|
|
77
|
+
*/
|
|
78
|
+
private onApprovalResolved;
|
|
79
|
+
private createThinkingHandler;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/agent/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAQjC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAsB9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0BxD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,6EAA6E;IAC7E,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACvB,4EAA4E;IAC5E,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAgC;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;IACnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0D;gBAGzF,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,YAAY,EACpB,OAAO,GAAE,gBAAqB;IA2BhC,OAAO,CAAC,aAAa;IAef,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,yEAAyE;IACzE,gBAAgB,IAAI,aAAa;YAInB,aAAa;YA2Kb,mBAAmB;IAiDjC;;;OAGG;YACW,uBAAuB;YAuLvB,qBAAqB;IAenC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAgCzB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAmD1B,OAAO,CAAC,qBAAqB;CAkC9B"}
|