MCPcopy Create free account
hub / github.com/adcontextprotocol/adcp / createAddieAdminRouter

Function createAddieAdminRouter

server/src/routes/addie-admin.ts:117–2208  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

115 * Returns separate routers for page routes (/admin/addie/*) and API routes (/api/admin/addie/*)
116 */
117export function createAddieAdminRouter(): { pageRouter: Router; apiRouter: Router } {
118 const pageRouter = Router();
119 const apiRouter = Router();
120
121 // =========================================================================
122 // ADMIN PAGE ROUTES (mounted at /admin/addie)
123 // =========================================================================
124
125 // Main Addie dashboard
126 pageRouter.get("/", requireAuth, requireAdmin, (req, res) => {
127 serveHtmlWithConfig(req, res, "admin-addie.html").catch((err) => {
128 logger.error({ err }, "Error serving Addie admin page");
129 res.status(500).send("Internal server error");
130 });
131 });
132
133 // =========================================================================
134 // KNOWLEDGE MANAGEMENT API (mounted at /api/admin/addie/knowledge)
135 // =========================================================================
136
137 // GET /api/admin/addie/knowledge - List all knowledge documents
138 apiRouter.get("/knowledge", requireAuth, requireAdmin, async (req, res) => {
139 try {
140 const { category, active_only, source_type, status, limit, offset } = req.query;
141
142 const { rows: documents, total } = await addieDb.listKnowledge({
143 category: category as string | undefined,
144 sourceType: source_type as string | undefined,
145 fetchStatus: status as string | undefined,
146 activeOnly: active_only !== "false",
147 limit: clampLimit(limit, 100, 500),
148 offset: clampOffset(offset),
149 });
150
151 res.json({
152 documents,
153 total,
154 });
155 } catch (error) {
156 logger.error({ err: error }, "Error fetching knowledge documents");
157 res.status(500).json({
158 error: "Internal server error",
159 message: "Unable to fetch knowledge documents",
160 });
161 }
162 });
163
164 // GET /api/admin/addie/knowledge/categories - Get category list with counts
165 apiRouter.get("/knowledge/categories", requireAuth, requireAdmin, async (req, res) => {
166 try {
167 const categories = await addieDb.getKnowledgeCategories();
168 res.json({ categories });
169 } catch (error) {
170 logger.error({ err: error }, "Error fetching knowledge categories");
171 res.status(500).json({
172 error: "Internal server error",
173 message: "Unable to fetch knowledge categories",
174 });

Callers 1

setupRoutesMethod · 0.85

Calls 15

serveHtmlWithConfigFunction · 0.85
clampLimitFunction · 0.85
clampOffsetFunction · 0.85
parseNumericIdFunction · 0.85
getThreadServiceFunction · 0.85
loadRulesFunction · 0.85
getHomeContentFunction · 0.85
getWorkosFunction · 0.85
getWebHomeContentFunction · 0.85
renderHomeHTMLFunction · 0.85
getAddieRouterFunction · 0.85

Tested by

no test coverage detected