@4da/mcp-server 4.5.0 → 4.6.1
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 +201 -21
- package/README.md +63 -83
- package/dist/auth.js +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/db.d.ts +46 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +156 -36
- package/dist/db.js.map +1 -1
- package/dist/doctor.js +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/http-transport.js +1 -1
- package/dist/http-transport.js.map +1 -1
- package/dist/index.d.ts +9 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -35
- package/dist/index.js.map +1 -1
- package/dist/live/cache.js +1 -1
- package/dist/live/cache.js.map +1 -1
- package/dist/live/crates-registry.js +1 -1
- package/dist/live/crates-registry.js.map +1 -1
- package/dist/live/go-registry.js +1 -1
- package/dist/live/go-registry.js.map +1 -1
- package/dist/live/hn-fetcher.js +1 -1
- package/dist/live/hn-fetcher.js.map +1 -1
- package/dist/live/http-utils.js +1 -1
- package/dist/live/http-utils.js.map +1 -1
- package/dist/live/index.d.ts +28 -0
- package/dist/live/index.d.ts.map +1 -1
- package/dist/live/index.js +63 -4
- package/dist/live/index.js.map +1 -1
- package/dist/live/npm-registry.js +1 -1
- package/dist/live/npm-registry.js.map +1 -1
- package/dist/live/osv-scanner.d.ts +4 -0
- package/dist/live/osv-scanner.d.ts.map +1 -1
- package/dist/live/osv-scanner.js +45 -40
- package/dist/live/osv-scanner.js.map +1 -1
- package/dist/live/pypi-registry.js +1 -1
- package/dist/live/pypi-registry.js.map +1 -1
- package/dist/live/rate-limiter.js +1 -1
- package/dist/live/rate-limiter.js.map +1 -1
- package/dist/live/semver-utils.js +1 -1
- package/dist/live/semver-utils.js.map +1 -1
- package/dist/live/types.d.ts +4 -0
- package/dist/live/types.d.ts.map +1 -1
- package/dist/live/types.js +1 -1
- package/dist/live/types.js.map +1 -1
- package/dist/live/version-resolver.d.ts +5 -0
- package/dist/live/version-resolver.d.ts.map +1 -1
- package/dist/live/version-resolver.js +64 -14
- package/dist/live/version-resolver.js.map +1 -1
- package/dist/live-singleton.js +1 -1
- package/dist/live-singleton.js.map +1 -1
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +13 -16
- package/dist/llm.js.map +1 -1
- package/dist/output-manager.js +1 -1
- package/dist/output-manager.js.map +1 -1
- package/dist/project-scanner.d.ts +5 -0
- package/dist/project-scanner.d.ts.map +1 -1
- package/dist/project-scanner.js +66 -10
- package/dist/project-scanner.js.map +1 -1
- package/dist/schema-registry.d.ts +4 -2
- package/dist/schema-registry.d.ts.map +1 -1
- package/dist/schema-registry.js +58 -238
- package/dist/schema-registry.js.map +1 -1
- package/dist/schemas/agent-memory.json +1 -1
- package/dist/schemas/decision-enforcement.json +1 -1
- package/dist/schemas/decision-memory.json +1 -1
- package/dist/schemas/dependency-health.json +1 -1
- package/dist/schemas/developer-dna.json +1 -1
- package/dist/schemas/ecosystem-pulse.json +1 -1
- package/dist/schemas/get-actionable-signals.json +1 -1
- package/dist/schemas/get-context.json +1 -1
- package/dist/schemas/get-relevant-content.json +1 -1
- package/dist/schemas/knowledge-gaps.json +1 -1
- package/dist/schemas/record-feedback.json +1 -1
- package/dist/schemas/upgrade-planner.json +1 -1
- package/dist/schemas/vulnerability-scan.json +2 -2
- package/dist/setup.js +1 -1
- package/dist/setup.js.map +1 -1
- package/dist/tool-dispatch.d.ts +1 -7
- package/dist/tool-dispatch.d.ts.map +1 -1
- package/dist/tool-dispatch.js +51 -50
- package/dist/tool-dispatch.js.map +1 -1
- package/dist/tools/agent-memory.js +1 -1
- package/dist/tools/agent-memory.js.map +1 -1
- package/dist/tools/decision-enforcement.js +1 -1
- package/dist/tools/decision-enforcement.js.map +1 -1
- package/dist/tools/decision-memory.d.ts +0 -2
- package/dist/tools/decision-memory.d.ts.map +1 -1
- package/dist/tools/decision-memory.js +1 -80
- package/dist/tools/decision-memory.js.map +1 -1
- package/dist/tools/dependency-health.js +1 -1
- package/dist/tools/dependency-health.js.map +1 -1
- package/dist/tools/developer-dna.js +1 -1
- package/dist/tools/developer-dna.js.map +1 -1
- package/dist/tools/ecosystem-pulse.js +1 -1
- package/dist/tools/ecosystem-pulse.js.map +1 -1
- package/dist/tools/get-actionable-signals.d.ts.map +1 -1
- package/dist/tools/get-actionable-signals.js +26 -1
- package/dist/tools/get-actionable-signals.js.map +1 -1
- package/dist/tools/get-context.js +1 -1
- package/dist/tools/get-context.js.map +1 -1
- package/dist/tools/get-relevant-content.js +1 -1
- package/dist/tools/get-relevant-content.js.map +1 -1
- package/dist/tools/index.d.ts +13 -42
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +19 -55
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/knowledge-gaps.js +1 -1
- package/dist/tools/knowledge-gaps.js.map +1 -1
- package/dist/tools/record-feedback.js +1 -1
- package/dist/tools/record-feedback.js.map +1 -1
- package/dist/tools/upgrade-planner.js +1 -1
- package/dist/tools/upgrade-planner.js.map +1 -1
- package/dist/tools/vulnerability-scan.d.ts +7 -3
- package/dist/tools/vulnerability-scan.d.ts.map +1 -1
- package/dist/tools/vulnerability-scan.js +19 -6
- package/dist/tools/vulnerability-scan.js.map +1 -1
- package/dist/tools/what-should-i-know.d.ts +3 -12
- package/dist/tools/what-should-i-know.d.ts.map +1 -1
- package/dist/tools/what-should-i-know.js +11 -171
- package/dist/tools/what-should-i-know.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +12 -8
- package/dist/schemas/agent-feedback-stats.json +0 -14
- package/dist/schemas/agent-session-brief.json +0 -25
- package/dist/schemas/attention-report.json +0 -13
- package/dist/schemas/autophagy-status.json +0 -13
- package/dist/schemas/compound-advantage.json +0 -14
- package/dist/schemas/config-validator.json +0 -18
- package/dist/schemas/context-analysis.json +0 -25
- package/dist/schemas/daily-briefing.json +0 -34
- package/dist/schemas/decision-windows.json +0 -22
- package/dist/schemas/delegation-score.json +0 -18
- package/dist/schemas/explain-relevance.json +0 -19
- package/dist/schemas/export-context.json +0 -17
- package/dist/schemas/llm-status.json +0 -13
- package/dist/schemas/preemption-feed.json +0 -18
- package/dist/schemas/project-health.json +0 -13
- package/dist/schemas/record-agent-feedback.json +0 -28
- package/dist/schemas/reverse-mentions.json +0 -13
- package/dist/schemas/score-autopsy.json +0 -30
- package/dist/schemas/semantic-shifts.json +0 -17
- package/dist/schemas/signal-chains.json +0 -19
- package/dist/schemas/source-health.json +0 -17
- package/dist/schemas/tech-radar.json +0 -23
- package/dist/schemas/topic-connections.json +0 -34
- package/dist/schemas/trend-analysis.json +0 -29
- package/dist/schemas/trust-summary.json +0 -13
- package/dist/tools/agent-feedback-stats.d.ts +0 -30
- package/dist/tools/agent-feedback-stats.d.ts.map +0 -1
- package/dist/tools/agent-feedback-stats.js +0 -41
- package/dist/tools/agent-feedback-stats.js.map +0 -1
- package/dist/tools/agent-session-brief.d.ts +0 -44
- package/dist/tools/agent-session-brief.d.ts.map +0 -1
- package/dist/tools/agent-session-brief.js +0 -179
- package/dist/tools/agent-session-brief.js.map +0 -1
- package/dist/tools/attention-report.d.ts +0 -40
- package/dist/tools/attention-report.d.ts.map +0 -1
- package/dist/tools/attention-report.js +0 -73
- package/dist/tools/attention-report.js.map +0 -1
- package/dist/tools/autophagy-status.d.ts +0 -25
- package/dist/tools/autophagy-status.d.ts.map +0 -1
- package/dist/tools/autophagy-status.js +0 -56
- package/dist/tools/autophagy-status.js.map +0 -1
- package/dist/tools/compound-advantage.d.ts +0 -30
- package/dist/tools/compound-advantage.d.ts.map +0 -1
- package/dist/tools/compound-advantage.js +0 -133
- package/dist/tools/compound-advantage.js.map +0 -1
- package/dist/tools/config-validator.d.ts +0 -59
- package/dist/tools/config-validator.d.ts.map +0 -1
- package/dist/tools/config-validator.js +0 -417
- package/dist/tools/config-validator.js.map +0 -1
- package/dist/tools/context-analysis.d.ts +0 -108
- package/dist/tools/context-analysis.d.ts.map +0 -1
- package/dist/tools/context-analysis.js +0 -301
- package/dist/tools/context-analysis.js.map +0 -1
- package/dist/tools/daily-briefing.d.ts +0 -103
- package/dist/tools/daily-briefing.d.ts.map +0 -1
- package/dist/tools/daily-briefing.js +0 -294
- package/dist/tools/daily-briefing.js.map +0 -1
- package/dist/tools/decision-windows.d.ts +0 -37
- package/dist/tools/decision-windows.d.ts.map +0 -1
- package/dist/tools/decision-windows.js +0 -67
- package/dist/tools/decision-windows.js.map +0 -1
- package/dist/tools/delegation-score.d.ts +0 -34
- package/dist/tools/delegation-score.d.ts.map +0 -1
- package/dist/tools/delegation-score.js +0 -260
- package/dist/tools/delegation-score.js.map +0 -1
- package/dist/tools/explain-relevance.d.ts +0 -36
- package/dist/tools/explain-relevance.d.ts.map +0 -1
- package/dist/tools/explain-relevance.js +0 -51
- package/dist/tools/explain-relevance.js.map +0 -1
- package/dist/tools/export-context.d.ts +0 -60
- package/dist/tools/export-context.d.ts.map +0 -1
- package/dist/tools/export-context.js +0 -179
- package/dist/tools/export-context.js.map +0 -1
- package/dist/tools/llm-status.d.ts +0 -45
- package/dist/tools/llm-status.d.ts.map +0 -1
- package/dist/tools/llm-status.js +0 -93
- package/dist/tools/llm-status.js.map +0 -1
- package/dist/tools/muse-context.d.ts +0 -195
- package/dist/tools/muse-context.d.ts.map +0 -1
- package/dist/tools/muse-context.js +0 -284
- package/dist/tools/muse-context.js.map +0 -1
- package/dist/tools/preemption-feed.d.ts +0 -55
- package/dist/tools/preemption-feed.d.ts.map +0 -1
- package/dist/tools/preemption-feed.js +0 -124
- package/dist/tools/preemption-feed.js.map +0 -1
- package/dist/tools/project-health.d.ts +0 -53
- package/dist/tools/project-health.d.ts.map +0 -1
- package/dist/tools/project-health.js +0 -122
- package/dist/tools/project-health.js.map +0 -1
- package/dist/tools/record-agent-feedback.d.ts +0 -46
- package/dist/tools/record-agent-feedback.d.ts.map +0 -1
- package/dist/tools/record-agent-feedback.js +0 -71
- package/dist/tools/record-agent-feedback.js.map +0 -1
- package/dist/tools/reverse-mentions.d.ts +0 -38
- package/dist/tools/reverse-mentions.d.ts.map +0 -1
- package/dist/tools/reverse-mentions.js +0 -75
- package/dist/tools/reverse-mentions.js.map +0 -1
- package/dist/tools/score-autopsy.d.ts +0 -93
- package/dist/tools/score-autopsy.d.ts.map +0 -1
- package/dist/tools/score-autopsy.js +0 -295
- package/dist/tools/score-autopsy.js.map +0 -1
- package/dist/tools/semantic-shifts.d.ts +0 -53
- package/dist/tools/semantic-shifts.d.ts.map +0 -1
- package/dist/tools/semantic-shifts.js +0 -74
- package/dist/tools/semantic-shifts.js.map +0 -1
- package/dist/tools/signal-chains.d.ts +0 -52
- package/dist/tools/signal-chains.d.ts.map +0 -1
- package/dist/tools/signal-chains.js +0 -63
- package/dist/tools/signal-chains.js.map +0 -1
- package/dist/tools/source-health.d.ts +0 -64
- package/dist/tools/source-health.d.ts.map +0 -1
- package/dist/tools/source-health.js +0 -205
- package/dist/tools/source-health.js.map +0 -1
- package/dist/tools/tech-radar.d.ts +0 -38
- package/dist/tools/tech-radar.d.ts.map +0 -1
- package/dist/tools/tech-radar.js +0 -249
- package/dist/tools/tech-radar.js.map +0 -1
- package/dist/tools/topic-connections.d.ts +0 -112
- package/dist/tools/topic-connections.d.ts.map +0 -1
- package/dist/tools/topic-connections.js +0 -319
- package/dist/tools/topic-connections.js.map +0 -1
- package/dist/tools/trend-analysis.d.ts +0 -105
- package/dist/tools/trend-analysis.d.ts.map +0 -1
- package/dist/tools/trend-analysis.js +0 -296
- package/dist/tools/trend-analysis.js.map +0 -1
- package/dist/tools/trust-summary.d.ts +0 -38
- package/dist/tools/trust-summary.d.ts.map +0 -1
- package/dist/tools/trust-summary.js +0 -89
- package/dist/tools/trust-summary.js.map +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "compound_advantage",
|
|
3
|
-
"description": "Get compound advantage score — measures how effectively you leverage 4DA intelligence for time-sensitive decisions.\n\nTracks response rate to decision windows, average lead time before opportunities close, and calibration accuracy of the scoring engine.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"period": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["weekly", "monthly"],
|
|
10
|
-
"description": "Scoring period. Default: weekly"
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "config_validator",
|
|
3
|
-
"description": "Validate 4DA configuration and detect issues.\nReturns:\n- Schema validation results\n- Missing required fields\n- Invalid values detected\n- Cross-field consistency checks\n- Recommendations for fixes\n\nUse this when things aren't working as expected.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"section": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["all", "sources", "embedding", "llm", "ace", "digest", "ui"],
|
|
10
|
-
"description": "Config section to validate (default: all)"
|
|
11
|
-
},
|
|
12
|
-
"fix_suggestions": {
|
|
13
|
-
"type": "boolean",
|
|
14
|
-
"description": "Include fix suggestions (default: true)"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "context_analysis",
|
|
3
|
-
"description": "Analyze your 4DA context and get optimization recommendations.\n\nWith synthesize=true (recommended), uses AI for personalized optimization advice.\n\nReturns:\n- Current context summary (tech stack, interests, topics)\n- Context quality score\n- Coverage gaps (what you care about but isn't tracked)\n- AI-powered personalized recommendations (when enabled)\n\nUse this to tune 4DA for better personalization.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"include_recommendations": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"description": "Include optimization recommendations (default: true)"
|
|
10
|
-
},
|
|
11
|
-
"analyze_gaps": {
|
|
12
|
-
"type": "boolean",
|
|
13
|
-
"description": "Analyze coverage gaps (default: true)"
|
|
14
|
-
},
|
|
15
|
-
"synthesize": {
|
|
16
|
-
"type": "boolean",
|
|
17
|
-
"description": "Use AI for personalized advice (default: true if LLM configured)"
|
|
18
|
-
},
|
|
19
|
-
"compact": {
|
|
20
|
-
"type": "boolean",
|
|
21
|
-
"description": "Return compact result with file reference (default: true for ~80% token reduction)"
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "daily_briefing",
|
|
3
|
-
"description": "Generate an executive briefing from 4DA's recent discoveries.\n\nWith synthesize=true (recommended), uses AI to generate genuine insights tailored to your context.\n\nReturns:\n- TL;DR summary (AI-generated when synthesize=true)\n- Key themes with item counts\n- Notable high-scoring items\n- Actionable recommendations\n- Trend highlights\n- AI synthesis (when enabled)\n\nUse this for your daily/weekly content review.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"hours": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "Hours to look back (default: 24)"
|
|
10
|
-
},
|
|
11
|
-
"min_score": {
|
|
12
|
-
"type": "number",
|
|
13
|
-
"description": "Minimum relevance score (default: 0.5)"
|
|
14
|
-
},
|
|
15
|
-
"max_items": {
|
|
16
|
-
"type": "number",
|
|
17
|
-
"description": "Maximum items to analyze (default: 50)"
|
|
18
|
-
},
|
|
19
|
-
"format": {
|
|
20
|
-
"type": "string",
|
|
21
|
-
"enum": ["full", "brief", "actionable"],
|
|
22
|
-
"description": "Output format (default: full)"
|
|
23
|
-
},
|
|
24
|
-
"synthesize": {
|
|
25
|
-
"type": "boolean",
|
|
26
|
-
"description": "Use AI to generate genuine insights (default: true if LLM configured)"
|
|
27
|
-
},
|
|
28
|
-
"compact": {
|
|
29
|
-
"type": "boolean",
|
|
30
|
-
"description": "Return compact result with file reference (default: true for ~80% token reduction)"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "decision_windows",
|
|
3
|
-
"description": "View and manage decision windows — time-bounded opportunities detected from content intelligence.\n\nList open windows sorted by urgency, mark windows as acted on with an outcome, or close windows that are no longer relevant.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"action": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["list", "act", "close"],
|
|
10
|
-
"description": "Action to perform. Default: list"
|
|
11
|
-
},
|
|
12
|
-
"window_id": {
|
|
13
|
-
"type": "number",
|
|
14
|
-
"description": "Window ID (required for 'act' or 'close' actions)"
|
|
15
|
-
},
|
|
16
|
-
"outcome": {
|
|
17
|
-
"type": "string",
|
|
18
|
-
"description": "Outcome description when acting on a window"
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "delegation_score",
|
|
3
|
-
"description": "AI-delegatability assessment — should the agent proceed autonomously or ask the human?\n\nComputes a delegation score (0-1) for a given subject/task by analyzing the developer's familiarity, decision history, and risk profile. Higher scores mean safer to delegate.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"subject": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "The technology, pattern, or topic to assess for delegation"
|
|
10
|
-
},
|
|
11
|
-
"task_description": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "Optional description of the task being considered for delegation"
|
|
14
|
-
}
|
|
15
|
-
},
|
|
16
|
-
"required": ["subject"]
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "explain_relevance",
|
|
3
|
-
"description": "Explain why a content item was considered relevant.\n\nProvides a detailed breakdown of:\n- Score components (static match, ACE context, learned preferences, penalties)\n- Matching context elements (interests, tech, topics, affinities)\n- Human-readable explanation\n\nUse this to understand how 4DA scored a particular item.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"item_id": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "The database ID of the item to explain"
|
|
10
|
-
},
|
|
11
|
-
"source_type": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "The source type: \"hackernews\", \"arxiv\", or \"reddit\"",
|
|
14
|
-
"enum": ["hackernews", "arxiv", "reddit"]
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"required": ["item_id", "source_type"]
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "export_context_packet",
|
|
3
|
-
"description": "Generate a portable context packet for session handoff between AI agents or tools.\n\nExports the user's current 4DA context including open signals, saved items, and active state into a self-contained packet that another session can consume.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"include_signals": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"description": "Include open signals. Default: true"
|
|
10
|
-
},
|
|
11
|
-
"include_saved": {
|
|
12
|
-
"type": "boolean",
|
|
13
|
-
"description": "Include saved items. Default: true"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "llm_status",
|
|
3
|
-
"description": "Check LLM configuration and availability.\nReturns:\n- Current LLM provider configuration\n- Ollama status (if configured)\n- Available models\n- Recommended models for your hardware\n- Configuration recommendations\n\nUse this to diagnose AI synthesis issues.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"check_ollama": {
|
|
8
|
-
"type": "boolean",
|
|
9
|
-
"description": "Check Ollama connectivity (default: true)"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "preemption_feed",
|
|
3
|
-
"description": "Get forward-looking intelligence alerts about upcoming risks, breaking changes, and ecosystem shifts affecting your stack.\n\nSynthesizes signal chains, dependency health alerts, and knowledge gaps into actionable preemption intelligence. Use before dependency updates or when planning work.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"urgency_filter": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "Filter by minimum urgency: critical, high, medium, watch. Default: all",
|
|
10
|
-
"enum": ["critical", "high", "medium", "watch"]
|
|
11
|
-
},
|
|
12
|
-
"limit": {
|
|
13
|
-
"type": "number",
|
|
14
|
-
"description": "Maximum alerts to return. Default: 10"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "project_health",
|
|
3
|
-
"description": "Project health radar for dependency freshness and security.\n\nAssesses the health of your scanned projects by analyzing dependency counts, package freshness, and cross-referencing with content signals for security advisories or breaking changes.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"project_path": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "Specific project path to check. Omit for all projects."
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "record_agent_feedback",
|
|
3
|
-
"description": "Record whether content recommended by 4DA was useful in the agent's task.\n\nCall this after using get_relevant_content results to help 4DA learn what's actually valuable for AI-assisted development.\n\nOutcomes:\n- \"used\": Agent/developer used the recommended content (strong positive signal)\n- \"rejected\": Content was not useful — outdated, irrelevant, or wrong context (negative signal)\n- \"partially_used\": Some value extracted but not directly applicable (weak positive signal)\n\nThis feedback helps 4DA's PASIFA scoring system learn which content sources and topics are genuinely useful when agents recommend them.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"item_ids": {
|
|
8
|
-
"type": "array",
|
|
9
|
-
"items": { "type": "string" },
|
|
10
|
-
"description": "Source item IDs that were recommended (from get_relevant_content results)"
|
|
11
|
-
},
|
|
12
|
-
"outcome": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"enum": ["used", "rejected", "partially_used"],
|
|
15
|
-
"description": "Whether the agent/developer used the recommended content"
|
|
16
|
-
},
|
|
17
|
-
"context": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"description": "Brief context about why (e.g., 'recommended to developer, they found it relevant' or 'content was outdated')"
|
|
20
|
-
},
|
|
21
|
-
"session_task": {
|
|
22
|
-
"type": "string",
|
|
23
|
-
"description": "What task the agent was working on when it used this content"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"required": ["item_ids", "outcome"]
|
|
27
|
-
}
|
|
28
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "reverse_mentions",
|
|
3
|
-
"description": "Find where your projects are mentioned in sources.\n\nSearches across all indexed content for mentions of your project names, dependencies, and technologies. Useful for discovering discussions about your work or tools you maintain.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"limit": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "Maximum mentions to return. Default: 20"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "score_autopsy",
|
|
3
|
-
"description": "Perform a complete forensic analysis of why an item scored the way it did.\n\nWith synthesize=true (recommended), uses AI to explain whether the score seems correct.\n\nReturns:\n- Component-by-component score breakdown\n- Matching context (interests, tech, topics)\n- Comparison with similar items\n- Recommendations for improving relevance\n- AI analysis (when enabled)\n\nUse this when you need to understand or debug relevance scores.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"item_id": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "The item ID to analyze"
|
|
10
|
-
},
|
|
11
|
-
"source_type": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "Source type (e.g., 'hackernews', 'arxiv')"
|
|
14
|
-
},
|
|
15
|
-
"compare_count": {
|
|
16
|
-
"type": "number",
|
|
17
|
-
"description": "Number of similar items to compare (default: 5)"
|
|
18
|
-
},
|
|
19
|
-
"synthesize": {
|
|
20
|
-
"type": "boolean",
|
|
21
|
-
"description": "Use AI to analyze if the score makes sense (default: true if LLM configured)"
|
|
22
|
-
},
|
|
23
|
-
"compact": {
|
|
24
|
-
"type": "boolean",
|
|
25
|
-
"description": "Return compact result with file reference (default: true for ~80% token reduction)"
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
"required": ["item_id", "source_type"]
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "semantic_shifts",
|
|
3
|
-
"description": "Detect narrative shifts in topics you follow.\n\nAnalyzes how the meaning and context of topics are changing over time by comparing content embeddings across time windows. Catches paradigm shifts early.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"period_days": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "Look-back period in days. Default: 7"
|
|
10
|
-
},
|
|
11
|
-
"min_magnitude": {
|
|
12
|
-
"type": "number",
|
|
13
|
-
"description": "Minimum drift magnitude (0-1). Default: 0.1"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "signal_chains",
|
|
3
|
-
"description": "Get causal signal chains connecting related events over time.\n\nTracks evolving stories across sources — e.g., a security vulnerability first mentioned on HN, then an advisory on GitHub, then a fix release. Chains link related signals into narratives.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"resolution": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["open", "resolved", "expired", "all"],
|
|
10
|
-
"description": "Filter by chain resolution status. Default: open"
|
|
11
|
-
},
|
|
12
|
-
"min_priority": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"enum": ["critical", "high", "medium", "low"],
|
|
15
|
-
"description": "Minimum chain priority to include. Default: low"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "source_health",
|
|
3
|
-
"description": "Diagnose the health of 4DA's content sources.\nReturns:\n- Per-source status (healthy/degraded/failing)\n- Recent fetch statistics\n- Data quality metrics\n- Error patterns detected\n- Recommendations for fixes\n\nUse this when content seems stale or sources aren't working.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"source": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"description": "Specific source to analyze (optional, all if not specified)"
|
|
10
|
-
},
|
|
11
|
-
"hours": {
|
|
12
|
-
"type": "number",
|
|
13
|
-
"description": "Hours to analyze (default: 24)"
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tech_radar",
|
|
3
|
-
"description": "Generate a technology radar from decisions and content signals.\n\nPlaces technologies into quadrants (languages, frameworks, tools, platforms) and rings (adopt, trial, assess, hold) based on your decisions, usage patterns, and content engagement.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"quadrant": {
|
|
8
|
-
"type": "string",
|
|
9
|
-
"enum": ["languages", "frameworks", "tools", "platforms"],
|
|
10
|
-
"description": "Filter by quadrant. Leave empty for all quadrants."
|
|
11
|
-
},
|
|
12
|
-
"ring": {
|
|
13
|
-
"type": "string",
|
|
14
|
-
"enum": ["adopt", "trial", "assess", "hold"],
|
|
15
|
-
"description": "Filter by ring. Leave empty for all rings."
|
|
16
|
-
},
|
|
17
|
-
"search": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"description": "Free-text search to filter entries by name."
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "topic_connections",
|
|
3
|
-
"description": "Discover connections between topics in your content.\n\nWith synthesize=true (recommended), uses AI to explain the significance of connections.\n\nReturns:\n- Topic co-occurrence graph\n- Strongest topic relationships\n- Central/hub topics\n- Path finding between topics\n- AI insights about connections (when enabled)\n\nUse this to understand how your interests connect.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"topics": {
|
|
8
|
-
"type": "array",
|
|
9
|
-
"items": { "type": "string" },
|
|
10
|
-
"description": "Specific topics to analyze (optional, auto-detect if not specified)"
|
|
11
|
-
},
|
|
12
|
-
"find_path": {
|
|
13
|
-
"type": "object",
|
|
14
|
-
"properties": {
|
|
15
|
-
"from": { "type": "string" },
|
|
16
|
-
"to": { "type": "string" }
|
|
17
|
-
},
|
|
18
|
-
"description": "Find connection path between two topics"
|
|
19
|
-
},
|
|
20
|
-
"days": {
|
|
21
|
-
"type": "number",
|
|
22
|
-
"description": "Days of content to analyze (default: 30)"
|
|
23
|
-
},
|
|
24
|
-
"synthesize": {
|
|
25
|
-
"type": "boolean",
|
|
26
|
-
"description": "Use AI to explain connection significance (default: true if LLM configured)"
|
|
27
|
-
},
|
|
28
|
-
"compact": {
|
|
29
|
-
"type": "boolean",
|
|
30
|
-
"description": "Return compact result with file reference (default: true for ~80% token reduction)"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "trend_analysis",
|
|
3
|
-
"description": "Analyze patterns and trends in 4DA's content over time.\n\nWith synthesize=true (recommended), uses AI to interpret trends and predict what matters.\n\nReturns:\n- Topic frequency trends (rising/falling)\n- Volume anomalies detected\n- Week-over-week comparisons\n- Source performance trends\n- AI predictions (when enabled)\n\nUse this to understand what's changing in your information landscape.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"days": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "Analysis period in days (default: 30)"
|
|
10
|
-
},
|
|
11
|
-
"topic": {
|
|
12
|
-
"type": "string",
|
|
13
|
-
"description": "Specific topic to analyze (optional)"
|
|
14
|
-
},
|
|
15
|
-
"detect_anomalies": {
|
|
16
|
-
"type": "boolean",
|
|
17
|
-
"description": "Include anomaly detection (default: true)"
|
|
18
|
-
},
|
|
19
|
-
"synthesize": {
|
|
20
|
-
"type": "boolean",
|
|
21
|
-
"description": "Use AI to interpret trends and predict (default: true if LLM configured)"
|
|
22
|
-
},
|
|
23
|
-
"compact": {
|
|
24
|
-
"type": "boolean",
|
|
25
|
-
"description": "Return compact result with file reference (default: true for ~80% token reduction)"
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "trust_summary",
|
|
3
|
-
"description": "Get intelligence quality metrics — precision, action conversion rate, false positive rate, and preemption wins.\n\nReturns trust ledger data for a configurable time window. Use this to assess how reliable 4DA's signals are before acting on them.",
|
|
4
|
-
"inputSchema": {
|
|
5
|
-
"type": "object",
|
|
6
|
-
"properties": {
|
|
7
|
-
"days": {
|
|
8
|
-
"type": "number",
|
|
9
|
-
"description": "Number of days to analyze. Default: 30"
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* get_agent_feedback_stats tool
|
|
3
|
-
*
|
|
4
|
-
* Get statistics on how agents have used 4DA recommendations.
|
|
5
|
-
* Shows which sources and topics are most valuable for AI-assisted development.
|
|
6
|
-
*/
|
|
7
|
-
import type { FourDADatabase } from "../db.js";
|
|
8
|
-
import type { GetAgentFeedbackStatsParams, AgentFeedbackStats } from "../types.js";
|
|
9
|
-
/**
|
|
10
|
-
* Tool definition for MCP registration
|
|
11
|
-
*/
|
|
12
|
-
export declare const agentFeedbackStatsTool: {
|
|
13
|
-
name: string;
|
|
14
|
-
description: string;
|
|
15
|
-
inputSchema: {
|
|
16
|
-
type: "object";
|
|
17
|
-
properties: {
|
|
18
|
-
days: {
|
|
19
|
-
type: string;
|
|
20
|
-
description: string;
|
|
21
|
-
default: number;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Execute the get_agent_feedback_stats tool
|
|
28
|
-
*/
|
|
29
|
-
export declare function executeGetAgentFeedbackStats(db: FourDADatabase, params: GetAgentFeedbackStatsParams): AgentFeedbackStats;
|
|
30
|
-
//# sourceMappingURL=agent-feedback-stats.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-feedback-stats.d.ts","sourceRoot":"","sources":["../../src/tools/agent-feedback-stats.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,KAAK,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAsBlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,2BAA2B,GAClC,kBAAkB,CAGpB"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: FSL-1.1-Apache-2.0
|
|
2
|
-
/**
|
|
3
|
-
* get_agent_feedback_stats tool
|
|
4
|
-
*
|
|
5
|
-
* Get statistics on how agents have used 4DA recommendations.
|
|
6
|
-
* Shows which sources and topics are most valuable for AI-assisted development.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Tool definition for MCP registration
|
|
10
|
-
*/
|
|
11
|
-
export const agentFeedbackStatsTool = {
|
|
12
|
-
name: "get_agent_feedback_stats",
|
|
13
|
-
description: `Get statistics on how agents have used 4DA recommendations.
|
|
14
|
-
|
|
15
|
-
Shows which sources and topics are most valuable for AI-assisted development:
|
|
16
|
-
- Total recommendations: used / rejected / partially_used counts
|
|
17
|
-
- By source type: which sources produce the most agent-useful content
|
|
18
|
-
- Top used item IDs (most frequently recommended and accepted)
|
|
19
|
-
- Recent feedback entries
|
|
20
|
-
|
|
21
|
-
Use this to understand what content is actually being used by AI agents
|
|
22
|
-
and where PASIFA scoring can be improved.`,
|
|
23
|
-
inputSchema: {
|
|
24
|
-
type: "object",
|
|
25
|
-
properties: {
|
|
26
|
-
days: {
|
|
27
|
-
type: "number",
|
|
28
|
-
description: "Number of days to look back (default: 30, max: 365)",
|
|
29
|
-
default: 30,
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* Execute the get_agent_feedback_stats tool
|
|
36
|
-
*/
|
|
37
|
-
export function executeGetAgentFeedbackStats(db, params) {
|
|
38
|
-
const days = Math.max(1, Math.min(365, params.days ?? 30));
|
|
39
|
-
return db.getAgentFeedbackStats(days);
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=agent-feedback-stats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-feedback-stats.js","sourceRoot":"","sources":["../../src/tools/agent-feedback-stats.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,IAAI,EAAE,0BAA0B;IAChC,WAAW,EAAE;;;;;;;;;0CAS2B;IACxC,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qDAAqD;gBAClE,OAAO,EAAE,EAAE;aACZ;SACF;KACF;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,EAAkB,EAClB,MAAmC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* agent_session_brief tool
|
|
3
|
-
*
|
|
4
|
-
* Tailored session startup context for AI agents.
|
|
5
|
-
* Call at the START of every agent session to get caught up on:
|
|
6
|
-
* - Active developer decisions
|
|
7
|
-
* - Ecosystem changes (security, breaking, releases)
|
|
8
|
-
* - Recent agent memories from all agents
|
|
9
|
-
* - Latest briefing text
|
|
10
|
-
*/
|
|
11
|
-
import type { FourDADatabase } from "../db.js";
|
|
12
|
-
export interface AgentSessionBriefParams {
|
|
13
|
-
agent_type?: string;
|
|
14
|
-
since?: string;
|
|
15
|
-
include_decisions?: boolean;
|
|
16
|
-
include_memories?: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare const agentSessionBriefTool: {
|
|
19
|
-
name: string;
|
|
20
|
-
description: string;
|
|
21
|
-
inputSchema: {
|
|
22
|
-
type: "object";
|
|
23
|
-
properties: {
|
|
24
|
-
agent_type: {
|
|
25
|
-
type: string;
|
|
26
|
-
description: string;
|
|
27
|
-
};
|
|
28
|
-
since: {
|
|
29
|
-
type: string;
|
|
30
|
-
description: string;
|
|
31
|
-
};
|
|
32
|
-
include_decisions: {
|
|
33
|
-
type: string;
|
|
34
|
-
description: string;
|
|
35
|
-
};
|
|
36
|
-
include_memories: {
|
|
37
|
-
type: string;
|
|
38
|
-
description: string;
|
|
39
|
-
};
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
export declare function executeAgentSessionBrief(db: FourDADatabase, params: AgentSessionBriefParams): object;
|
|
44
|
-
//# sourceMappingURL=agent-session-brief.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-brief.d.ts","sourceRoot":"","sources":["../../src/tools/agent-session-brief.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAM/C,MAAM,WAAW,uBAAuB;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmCD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;CA2BjC,CAAC;AAMF,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAwJR"}
|