fix: make example field optional and fix Discord webhook JSON escaping

Database Changes:
- Made `example` field optional in Prisma schema (String?)
- Added default empty arrays for `frameworks` and `tags`
- Allows tools to be synced without example field

Workflow Changes:
- Use jq to properly construct Discord webhook JSON
- Fixes "invalid JSON" error caused by unescaped special characters
- Properly escapes error messages with newlines and quotes

This fixes sync errors for packages missing the example field and
ensures Discord notifications are sent successfully.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Ajax Davis 2025-12-03 08:32:14 +10:00
parent da12d1fc5b
commit 484190720a
2 changed files with 73 additions and 64 deletions

View file

@ -28,18 +28,18 @@ model Tool {
npmMaintainers Json? @map("npm_maintainers") @db.JsonB
// TPMJS Metadata (from package.json tpmjs field)
category String @db.VarChar(50)
description String @db.Text
example String @db.Text
parameters Json? @db.JsonB
returns Json? @db.JsonB
authentication Json? @db.JsonB
pricing Json? @db.JsonB
frameworks String[] @db.Text
links Json? @db.JsonB
tags String[] @db.Text
status String? @db.VarChar(20)
aiAgent Json? @map("ai_agent") @db.JsonB
category String @db.VarChar(50)
description String @db.Text
example String? @db.Text
parameters Json? @db.JsonB
returns Json? @db.JsonB
authentication Json? @db.JsonB
pricing Json? @db.JsonB
frameworks String[] @default([]) @db.Text
links Json? @db.JsonB
tags String[] @default([]) @db.Text
status String? @db.VarChar(20)
aiAgent Json? @map("ai_agent") @db.JsonB
// Discovery Metadata
discoveryMethod String @map("discovery_method") @db.VarChar(20) // 'keyword' | 'changes-feed'