@vantageos/backend-doctor 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.
Files changed (108) hide show
  1. package/README.md +88 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +94 -0
  4. package/dist/contract.d.ts +18 -0
  5. package/dist/contract.js +29 -0
  6. package/dist/coverage-cli.d.ts +2 -0
  7. package/dist/coverage-cli.js +17 -0
  8. package/dist/coverage.d.ts +32 -0
  9. package/dist/coverage.js +77 -0
  10. package/dist/detectors/oracle-axis1.d.ts +86 -0
  11. package/dist/detectors/oracle-axis1.js +221 -0
  12. package/dist/detectors/oracle-axis2.d.ts +22 -0
  13. package/dist/detectors/oracle-axis2.js +149 -0
  14. package/dist/detectors/predicates.d.ts +19 -0
  15. package/dist/detectors/predicates.js +334 -0
  16. package/dist/detectors/shared.d.ts +56 -0
  17. package/dist/detectors/shared.js +103 -0
  18. package/dist/detectors/source/_scan.d.ts +43 -0
  19. package/dist/detectors/source/_scan.js +82 -0
  20. package/dist/detectors/source/backfill.d.ts +27 -0
  21. package/dist/detectors/source/backfill.js +211 -0
  22. package/dist/detectors/source/contract.d.ts +33 -0
  23. package/dist/detectors/source/contract.js +385 -0
  24. package/dist/detectors/source/identity.d.ts +47 -0
  25. package/dist/detectors/source/identity.js +410 -0
  26. package/dist/detectors/source/jobs.d.ts +10 -0
  27. package/dist/detectors/source/jobs.js +209 -0
  28. package/dist/detectors/source/lifecycle.d.ts +6 -0
  29. package/dist/detectors/source/lifecycle.js +147 -0
  30. package/dist/detectors/source/readbudget.d.ts +6 -0
  31. package/dist/detectors/source/readbudget.js +133 -0
  32. package/dist/detectors/source/refusal.d.ts +6 -0
  33. package/dist/detectors/source/refusal.js +125 -0
  34. package/dist/detectors/source/security.d.ts +37 -0
  35. package/dist/detectors/source/security.js +392 -0
  36. package/dist/detectors/source/writesafety.d.ts +14 -0
  37. package/dist/detectors/source/writesafety.js +345 -0
  38. package/dist/detectors/standard/_doc.d.ts +66 -0
  39. package/dist/detectors/standard/_doc.js +152 -0
  40. package/dist/detectors/standard/r41-frontier.d.ts +58 -0
  41. package/dist/detectors/standard/r41-frontier.js +176 -0
  42. package/dist/detectors/standard/r46-returns-validator.d.ts +61 -0
  43. package/dist/detectors/standard/r46-returns-validator.js +474 -0
  44. package/dist/detectors/standard/standard-doc.d.ts +12 -0
  45. package/dist/detectors/standard/standard-doc.js +271 -0
  46. package/dist/detectors/structural.d.ts +14 -0
  47. package/dist/detectors/structural.js +83 -0
  48. package/dist/engine-types.d.ts +10 -0
  49. package/dist/engine-types.js +1 -0
  50. package/dist/not-checkable.d.ts +22 -0
  51. package/dist/not-checkable.js +37 -0
  52. package/dist/oracle.d.ts +33 -0
  53. package/dist/oracle.js +133 -0
  54. package/dist/registry.d.ts +11 -0
  55. package/dist/registry.js +140 -0
  56. package/dist/report.d.ts +35 -0
  57. package/dist/report.js +138 -0
  58. package/dist/severity.d.ts +30 -0
  59. package/dist/severity.js +121 -0
  60. package/dist/tally.d.ts +57 -0
  61. package/dist/tally.js +152 -0
  62. package/dist/trigger.d.ts +47 -0
  63. package/dist/trigger.js +143 -0
  64. package/fixtures/backend-standard-51ec7af1.md +648 -0
  65. package/fixtures/backend-standard-a9d7877b.md +629 -0
  66. package/fixtures/mcp-app-standard-a74a042b.md +279 -0
  67. package/fixtures/mcp-extension-standard-a74a042b.md +259 -0
  68. package/fixtures/mcp-server-standard-a74a042b.md +434 -0
  69. package/fixtures/mcp-standard-a74a042b.md +354 -0
  70. package/fixtures/vp-1200-green/.pin +1 -0
  71. package/fixtures/vp-1200-green/convex/migrations.ts +350 -0
  72. package/fixtures/vp-1200-green/convex/schema.ts +1243 -0
  73. package/fixtures/vp-1200-red/.pin +1 -0
  74. package/fixtures/vp-1200-red/convex/migrations.ts +239 -0
  75. package/fixtures/vp-1200-red/convex/schema.ts +1243 -0
  76. package/fixtures/vp-by-tool-day158.csv +190 -0
  77. package/fixtures/vp-convex/.github/workflows/npm-publish.yml +163 -0
  78. package/fixtures/vp-convex/.pin +1 -0
  79. package/fixtures/vp-convex/bun.lock +783 -0
  80. package/fixtures/vp-convex/convex/auth.config.ts +8 -0
  81. package/fixtures/vp-convex/convex/briefingNotes.ts +321 -0
  82. package/fixtures/vp-convex/convex/convex.config.ts +14 -0
  83. package/fixtures/vp-convex/convex/credentials.ts +591 -0
  84. package/fixtures/vp-convex/convex/crons.ts +72 -0
  85. package/fixtures/vp-convex/convex/dashboard.ts +199 -0
  86. package/fixtures/vp-convex/convex/gumroadWebhook.ts +815 -0
  87. package/fixtures/vp-convex/convex/issues.ts +544 -0
  88. package/fixtures/vp-convex/convex/kb.ts +305 -0
  89. package/fixtures/vp-convex/convex/kbMutations.ts +192 -0
  90. package/fixtures/vp-convex/convex/kbShared.ts +56 -0
  91. package/fixtures/vp-convex/convex/licenses.ts +443 -0
  92. package/fixtures/vp-convex/convex/memories.ts +406 -0
  93. package/fixtures/vp-convex/convex/memoriesScoped.ts +220 -0
  94. package/fixtures/vp-convex/convex/messages.ts +971 -0
  95. package/fixtures/vp-convex/convex/migrations.ts +239 -0
  96. package/fixtures/vp-convex/convex/missionTemplates.ts +369 -0
  97. package/fixtures/vp-convex/convex/oauth.ts +1608 -0
  98. package/fixtures/vp-convex/convex/oauthMigrations.ts +96 -0
  99. package/fixtures/vp-convex/convex/okfBundleNode.ts +1031 -0
  100. package/fixtures/vp-convex/convex/recurringTasks.ts +386 -0
  101. package/fixtures/vp-convex/convex/schema.ts +1229 -0
  102. package/fixtures/vp-convex/convex/tasks.ts +2782 -0
  103. package/fixtures/vp-r31-green/.pin +1 -0
  104. package/fixtures/vp-r31-green/convex/migrations.ts +350 -0
  105. package/fixtures/vp-r31-red/.pin +1 -0
  106. package/fixtures/vp-r31-red/convex/migrations.ts +286 -0
  107. package/fixtures/vr-by-tool-day159.csv +89 -0
  108. package/package.json +39 -0
@@ -0,0 +1,89 @@
1
+ table,outil,T2_verdict,T2_composant_cible,crud,operation_detail,search_mecanisme,surface,rbac_qui,scope_enforcement,namespace_ou_org,tokens_estime_contexte,doublon_alias,rbac_coherence_table,rbac_adjustment_needed,table_purpose,table_conserver_supprimer
2
+ (multi-table),get_stats,AMBIGU,catalogue-core(agrege),RPC,"Agrege les comptages par table (teams, agents, skills, plugins, hooks, runbooks avec by_status/by_category) — pas de table primaire unique.","Promise.all de api.teams.list/agents.list/skills.list/plugins.list/hooks.list APPELES SANS paginationOpts NI limit -> agents/skills/hooks tombent sur clampListLimit(undefined,undefined)=DEFAUT 50 (plafond SILENCIEUX); teams/plugins non plafonnes (.collect()); runbooks appeles avec limit:1000 explicite (3x, un par status)",MCP-public,lecture-ouverte(toutes),AUCUN,global,91,,N/A,GARDER,Agregat de comptages cross-table (teams/agents/skills/plugins/hooks/runbooks) — pas une table.,"N/A (outil agregat, pas une table)"
3
+ agents,detect_agent_drift,CORE,catalogue-core,SEARCH,Retourne sha256(vrHash)+filePath+testHash par agent dans le scope.,"index by_name (name=<slug>) | scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,176,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
4
+ agents,get_agent,CORE,catalogue-core,READ-GET,Recupere 1 agent par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,66,,INCOHERENT read=public write=admin,GARDER,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
5
+ agents,get_agent_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique agent heberge VR (content, sha256, version, testContent*) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,145,,INCOHERENT read=public write=admin,GARDER,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
6
+ agents,list_agents,CORE,catalogue-core,READ-LIST,"Liste agents, filtres status/team/category, projection lite|full.","index by_team|by_category|by_status selon filtre, sinon full scan | native .paginate() si paginationOpts fourni (pas de cap silencieux) | SANS paginationOpts: defaut:50 max:200 (clampListLimit, plafond visible cote client)",MCP-public,lecture-ouverte(toutes),"resolveListBearerScope(bearer optional, fail-closed public si absent)",orgId(bearer optionnel),350,,INCOHERENT read=public write=admin,GARDER,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
7
+ agents,list_agents_by_team,CORE,catalogue-core,READ-LIST,Liste agents d'une team donnee.,index by_team | pas de curseur (.take) | defaut:50 max:200 (clampListLimit) (plafond documente dans le tool mais SANS pagination -> troncature silencieuse au-dela de 200),MCP-public,lecture-ouverte(toutes),AUCUN,global,179,list_agents(team=...)(recouvrement partiel),INCOHERENT read=public write=admin,DEDUP,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
8
+ agents,upsert_agent,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne agents (upsert par name+team).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,405,,INCOHERENT read=public write=admin,GARDER,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
9
+ agents,upsert_agent_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique agent, recalcule sha256, bump patch version, testContent optionnel co-ecrit.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,315,,INCOHERENT read=public write=admin,GARDER,Catalogue des agents (metadata + corps canonique vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
10
+ audit_log,(aucun — audit_log),COMPOSANT,audit,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,Trail d'evenements append-only scope par workspace (action dot-namespaced).,"CONSERVER: cluster audit detachable, aucune lecture catalogue ne depend de cette table"
11
+ commands,detect_command_drift,CORE,catalogue-core,SEARCH,Retourne sha256(vrHash)+filePath par commande dans le scope.,"index by_name (name=<slug>) | scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,161,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des commandes slash (metadata + corps canonique).,CONSERVER: coeur du catalogue public
12
+ commands,get_command_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique commande heberge VR (content, sha256, version) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,115,,INCOHERENT read=public write=admin,GARDER,Catalogue des commandes slash (metadata + corps canonique).,CONSERVER: coeur du catalogue public
13
+ commands,upsert_command_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique commande, recalcule sha256, bump patch version, auto-cree la ligne si absente (pas de flag createIfMissing — toujours auto-create).",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,161,,INCOHERENT read=public write=admin,GARDER,Catalogue des commandes slash (metadata + corps canonique).,CONSERVER: coeur du catalogue public
14
+ components,create_org_component,CORE,catalogue-core,CREATE,"Cree un composant dans le catalogue prive de l'organisation appelante (secondaire: components, orgId=caller). Secondaire: org_component_writes (ledger rate-limit, 1 ligne append-only par ecriture reussie, 120/5min).",,MCP-tenant,org-scoped(tokenHash),requireTokenWriteScope(tokenHash),orgId(tokenHash),249,"register_component(scope org via meme table components, chemin auth different)",INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,DEDUP,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
15
+ components,delete_component,CORE,catalogue-core,DELETE,Soft-delete un composant du catalogue public par id (status -> deprecated).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,108,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
16
+ components,delete_org_component,CORE,catalogue-core,DELETE,"Soft-delete un composant du catalogue de l'organisation appelante (secondaire: components). Secondaire: org_component_writes (ledger rate-limit, 1 ligne append-only par ecriture reussie, 120/5min).",,MCP-tenant,org-scoped(tokenHash),requireTokenWriteScope(tokenHash),orgId(tokenHash),104,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
17
+ components,get_component,CORE,catalogue-core,READ-GET,Recupere 1 composant par Convex _id (document complet ou null).,,MCP-public,lecture-ouverte(toutes),AUCUN,global,80,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
18
+ components,list_components,CORE,catalogue-core,READ-LIST,"Liste components filtres kind/ownerTeam/status/tags, projection lite|full, scope tenant via VR_TENANT_TOKEN (org+public) sinon public seul; effet de bord fire-and-forget: enregistre un usage signal par resultat.",index by_orgId_and_kind|by_orgId_and_ownerTeam|by_orgId_and_status|by_orgId selon filtre | .take(limit) | defaut:100 max:500 (documente dans le tool),MCP-public,lecture-ouverte(toutes) + org-scoped(tokenHash),"resolveCatalogReadScope(tokenHash optional, fail-closed public si absent)",orgId(tokenHash optionnel),293,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
19
+ components,register_component,CORE,catalogue-core,UPSERT,Cree ou met a jour un composant dans le catalogue public components (upsert par name+kind).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,475,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
20
+ components,search_components,CORE,catalogue-core,SEARCH,"Recherche composants par prefixe de name (range scan Convex, case-sensitive), scope tenant via tokenHash.","index by_name range scan (q.gte(name).lt(name+high-unicode)) | limit = Math.min(limit??50, 200) — defaut:50 max:200, plafond applicatif (pas un zod schema, un Math.min en handler)",MCP-public,lecture-ouverte(toutes) + org-scoped(tokenHash),"resolveCatalogReadScope(tokenHash optional, fail-closed public si absent)",orgId(tokenHash optionnel),148,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
21
+ components,update_component,CORE,catalogue-core,UPDATE,Patch des champs individuels d'un composant existant du catalogue public (erreur si introuvable).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,377,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
22
+ components,update_org_component,CORE,catalogue-core,UPDATE,"Met a jour un composant du catalogue de l'organisation appelante (secondaire: components); composant d'un autre org ou du catalogue public rapporte comme introuvable. Secondaire: org_component_writes (ledger rate-limit, 1 ligne append-only par ecriture reussie, 120/5min).",,MCP-tenant,org-scoped(tokenHash),requireTokenWriteScope(tokenHash),orgId(tokenHash),197,,INCOHERENT read=org-tokenHash+public write=admin+org-tokenHash,GARDER,"Catalogue generique des composants VantageOS (skill/agent/hook/plugin/...), public + prive par org.","CONSERVER: surface catalogue unifiee, lue par fleet + tenants org-scopes"
23
+ doc_forge_token_issuance,(aucun — doc_forge_token_issuance),COMPOSANT,auth-tokens,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,"Ledger d'emission de tokens par (org,user) pour le rate-limit issueTenantToken.","CONSERVER: cluster auth-tokens, meme pattern que org_component_writes"
24
+ fleet_sync_runs,(aucun — fleet_sync_runs),COMPOSANT,fleet-ops,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,"Log append-only des executions cron de fleetSync.orchestrate (par source, ok/error/skipped).","CONSERVER: observabilite fleet-interne, detachable du catalogue public"
25
+ fork_lineage,(aucun — fork_lineage),COMPOSANT,workspace-fork,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,Graphe de provenance des forks d'items catalogue (source/target opaques + workspace typed).,"CONSERVER: coeur du sous-systeme fork, candidat carve-out propre avec workspaces"
26
+ hooks,detect_hook_drift,CORE,catalogue-core,SEARCH,Retourne sha256(vrHash)+filePath+testHash par hook dans le scope.,"index by_name (name=<slug>) | scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,175,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
27
+ hooks,get_hook,CORE,catalogue-core,READ-GET,Recupere 1 hook par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,65,,INCOHERENT read=public write=admin,GARDER,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
28
+ hooks,get_hook_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique hook heberge VR (content, sha256, version, testContent*) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,144,,INCOHERENT read=public write=admin,GARDER,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
29
+ hooks,list_hooks,CORE,catalogue-core,READ-LIST,"Liste hooks, filtres status/event, projection lite|full.","index by_status/by_event selon filtre, sinon full scan | native .paginate() si paginationOpts fourni | SANS paginationOpts: defaut:50 max:200 (clampListLimit, meme mecanisme que agents/skills)",MCP-public,lecture-ouverte(toutes),"resolveListBearerScope(bearer optional, fail-closed public si absent)",orgId(bearer optionnel),346,,INCOHERENT read=public write=admin,GARDER,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
30
+ hooks,upsert_hook,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne hooks (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,326,,INCOHERENT read=public write=admin,GARDER,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
31
+ hooks,upsert_hook_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique hook, recalcule sha256, bump patch version, testContent optionnel co-ecrit, auto-cree une ligne placeholder (event='PreToolUse') si createIfMissing.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,327,,INCOHERENT read=public write=admin,GARDER,Catalogue des hooks (metadata + corps canonique + testContent).,"CONSERVER: coeur du catalogue public, source RULE #30 zero-divergence"
32
+ org_component_writes,(aucun — org_component_writes),COMPOSANT,auth-tokens,n/a,Touchee uniquement en SECONDAIRE par create/update/delete_org_component (table primaire: components) — jamais adressee directement par un outil MCP.,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,"Ledger d'ecritures par (org,principal) pour le throttle du chemin tenant-token (rate-limit, pas de donnee catalogue).","CONSERVER: sous-systeme auth-tokens detachable, append-only, purge cron dediee"
33
+ plugins,detect_plugin_drift,CORE,catalogue-core,SEARCH,Retourne sha256(vrHash)+filePath par plugin dans le scope.,"index by_name (name=<slug>) | scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,159,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
34
+ plugins,get_plugin,CORE,catalogue-core,READ-GET,Recupere 1 plugin par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,66,,INCOHERENT read=public write=admin,GARDER,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
35
+ plugins,get_plugin_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique plugin heberge VR (content, sha256, version) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,114,,INCOHERENT read=public write=admin,GARDER,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
36
+ plugins,list_plugins,CORE,catalogue-core,READ-LIST,"Liste plugins, filtres status/source/team, projection lite|full.","index by_team (si team) sinon .collect() plein scan, filtre status/source en JS post-fetch | pas de limit param -> AUCUN plafond (table plugins actuellement petite mais non borne par construction)",MCP-public,lecture-ouverte(toutes),AUCUN,global,185,,INCOHERENT read=public write=admin,CORRIGER-CAP50,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
37
+ plugins,upsert_plugin,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne plugins (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,401,,INCOHERENT read=public write=admin,GARDER,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
38
+ plugins,upsert_plugin_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique plugin, recalcule sha256, bump patch version.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,223,,INCOHERENT read=public write=admin,GARDER,Catalogue des plugins (metadata + corps canonique).,CONSERVER: coeur du catalogue public VantageRegistry
39
+ prompts,get_prompt,CORE,catalogue-core,READ-GET,Recupere 1 prompt par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,66,,INCOHERENT read=public write=admin,GARDER,Catalogue des prompts fleet (name/team/content).,CONSERVER: coeur du catalogue public
40
+ prompts,list_prompts,CORE,catalogue-core,READ-LIST,"Liste prompts, filtre optionnel team.",index by_team (si team) sinon full scan | pas de limit param visible -> a verifier mais probablement non plafonne (petite table),MCP-public,lecture-ouverte(toutes),AUCUN,global,238,,INCOHERENT read=public write=admin,GARDER,Catalogue des prompts fleet (name/team/content).,CONSERVER: coeur du catalogue public
41
+ prompts,upsert_prompt,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne prompts (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,159,,INCOHERENT read=public write=admin,GARDER,Catalogue des prompts fleet (name/team/content).,CONSERVER: coeur du catalogue public
42
+ rules,detect_rule_drift,CORE,catalogue-core,SEARCH,Retourne sha256(vrHash)+filePath+testHash par rule; filtre optionnel since=<timestamp>.,"index by_name (name=<slug>) | omis: .take(500) — PLAFOND SILENCIEUX (500), aucun signal de troncature; since= filtre en JS post-fetch APRES le take(500) donc peut manquer des rules recentes si >500 rules total",MCP-public,lecture-ouverte(toutes),AUCUN,global,202,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
43
+ rules,get_rule,CORE,catalogue-core,READ-GET,"Recupere 1 rule par name (metadonnees seules, sans contenu) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,86,,INCOHERENT read=public write=admin,GARDER,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
44
+ rules,get_rule_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique rule heberge VR (content, sha256, version, testContent*) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,143,,INCOHERENT read=public write=admin,GARDER,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
45
+ rules,list_rules,CORE,catalogue-core,READ-LIST,"Liste rules, filtre status, projection lite|full.","index by_status (si status) sinon full scan | pas de curseur (.take) | defaut:50 lite/30 full max:200 (clampListLimit-style, documente dans la description du tool)",MCP-public,lecture-ouverte(toutes),AUCUN,global,193,,INCOHERENT read=public write=admin,GARDER,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
46
+ rules,upsert_rule,CORE,catalogue-core,UPSERT,Insere ou met a jour metadonnees rule (description/paths/status) par name; NE touche PAS content/hash/version.,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,264,,INCOHERENT read=public write=admin,GARDER,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
47
+ rules,upsert_rule_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique rule, recalcule sha256, bump patch version, testContent optionnel co-ecrit.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,305,,INCOHERENT read=public write=admin,GARDER,Catalogue des rules (metadata + corps canonique + testContent).,CONSERVER: coeur du catalogue public
48
+ runbook_template_links,link_runbook_template,COMPOSANT,template-graph,UPSERT,"Cree ou met a jour un lien type (uses|produces|references) entre un runbook et un template (upsert par (runbookId,templateId)); secondaires: runbooks, templates.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,349,,INCOHERENT read=public write=admin,GARDER,Table de jonction typee (uses/produces/references) runbook<->template.,"CONSERVER: sous-graphe detachable du catalogue de templates, pas lu hors contexte runbook"
49
+ runbook_template_links,list_runbooks_for_template,COMPOSANT,template-graph,READ-LIST,"Recherche inverse: liste les runbooks lies a un template, metadonnees runbook enrichies (secondaire: runbooks).",index byTemplate (ou equivalent) | pas de limit documente cote tool,MCP-public,lecture-ouverte(toutes),AUCUN,global,199,,INCOHERENT read=public write=admin,GARDER,Table de jonction typee (uses/produces/references) runbook<->template.,"CONSERVER: sous-graphe detachable du catalogue de templates, pas lu hors contexte runbook"
50
+ runbook_template_links,list_templates_for_runbook,COMPOSANT,template-graph,READ-LIST,"Liste les templates lies a un runbook, metadonnees template enrichies (secondaire: templates).","index byRunbook | pas de limit documente cote tool (table junction, generalement petite)",MCP-public,lecture-ouverte(toutes),AUCUN,global,175,,INCOHERENT read=public write=admin,GARDER,Table de jonction typee (uses/produces/references) runbook<->template.,"CONSERVER: sous-graphe detachable du catalogue de templates, pas lu hors contexte runbook"
51
+ runbook_template_links,unlink_runbook_template,COMPOSANT,template-graph,DELETE,"Hard-delete le lien type entre un runbook et un template (pas de lifecycle, existe ou non).",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,148,,INCOHERENT read=public write=admin,GARDER,Table de jonction typee (uses/produces/references) runbook<->template.,"CONSERVER: sous-graphe detachable du catalogue de templates, pas lu hors contexte runbook"
52
+ runbooks,delete_runbook,CORE,catalogue-core,DELETE,"Soft-delete un runbook par name (status -> deprecated), pas de hard-delete.",index byName,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,87,,INCOHERENT read=public write=admin,GARDER,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
53
+ runbooks,detect_runbook_drift,CORE,catalogue-core,SEARCH,Retourne sha256 (vrHash) + category + version par runbook dans le scope.,"scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,148,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
54
+ runbooks,get_runbook,CORE,catalogue-core,READ-GET,"Recupere 1 runbook par name via index byName, avec garde optionnelle sur la version exacte.",index byName,MCP-public,lecture-ouverte(toutes),AUCUN,global,98,,INCOHERENT read=public write=admin,GARDER,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
55
+ runbooks,list_runbooks,CORE,catalogue-core,READ-LIST,"Liste runbooks, defaut status=published, filtres applicabilite (orchestrator/bu/use_case).",index byStatus | native .paginate() si paginationOpts fourni (pas de cap silencieux),MCP-public,lecture-ouverte(toutes),AUCUN,global,373,,INCOHERENT read=public write=admin,GARDER,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
56
+ runbooks,list_runbooks_by_category,CORE,catalogue-core,READ-LIST,Liste runbooks d'une categorie via l'index byCategory.,"index byCategory | pas de curseur (.take) | defaut:50 max:200 (clampListLimit, plafond SILENCIEUX au-dela)",MCP-public,lecture-ouverte(toutes),AUCUN,global,209,list_runbooks(category=...)(recouvrement partiel),INCOHERENT read=public write=admin,DEDUP,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
57
+ runbooks,list_runbooks_by_team,CORE,catalogue-core,READ-LIST,Liste runbooks d'une team via l'index byTeam.,"index byTeam | pas de curseur (.take) | defaut:50 max:200 (clampListLimit, plafond SILENCIEUX au-dela)",MCP-public,lecture-ouverte(toutes),AUCUN,global,201,list_runbooks(team=...)(recouvrement partiel),INCOHERENT read=public write=admin,DEDUP,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
58
+ runbooks,upsert_runbook,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne runbooks (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,996,,INCOHERENT read=public write=admin,GARDER,Runbooks operationnels (phases/inputs/outputs/applicabilite) consommes par tout orchestrateur.,"CONSERVER: coeur du catalogue public, lu par toute la flotte via RUNBOOK DISCOVERY"
59
+ skill_eval_corpus,upsert_skill_eval_corpus,COMPOSANT,quality-eval,UPSERT,Insere ou met a jour une version du corpus d'evaluation d'un skill (upsert par skillId+version).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,319,,N/A (ecriture seule MCP: admin),GARDER,"Corpus d'evaluation versionne par skill (cases, assertions, baseline prompt).",CONSERVER: appartient au meme cluster quality-eval que skill_test_runs
60
+ skill_test_runs,get_skill_test_history,COMPOSANT,quality-eval,READ-LIST,"Retourne l'historique des runs de test d'un skill, du plus recent au plus ancien.","index par skillId, tri desc | limit optionnel, defaut:50 (pas de max documente explicitement dans server.ts)",MCP-public,lecture-ouverte(toutes),AUCUN,global,96,,INCOHERENT read=public write=admin,GARDER,"Historique des runs de test qualite par skill (score, delta, modeles).","CONSERVER: sous-systeme detachable d'evaluation qualite, pas lu par le catalogue public"
61
+ skill_test_runs,list_skills_below_threshold,COMPOSANT,quality-eval,READ-LIST,Retourne les skills dont le dernier run de test est sous un seuil de score (fraction 0-1 de 'X/Y') ou sous un delta (secondaire: skills).,"scan skill_test_runs, filtre scoreMin/deltaMin en JS | pas de limit param -> AUCUN plafond documente cote tool",MCP-public,lecture-ouverte(toutes),AUCUN,global,198,,INCOHERENT read=public write=admin,CORRIGER-CAP50,"Historique des runs de test qualite par skill (score, delta, modeles).","CONSERVER: sous-systeme detachable d'evaluation qualite, pas lu par le catalogue public"
62
+ skill_test_runs,list_skills_by_freshness,COMPOSANT,quality-eval,READ-LIST,Retourne les skills jamais testes ou dont le dernier test date de plus de staleDays jours (secondaire: skills pour la projection).,"scan skill_test_runs cote-a-cote avec skills | limit optionnel, defaut:100 max:500 (documente dans le tool, plafond visible)",MCP-public,lecture-ouverte(toutes),AUCUN,global,212,,INCOHERENT read=public write=admin,GARDER,"Historique des runs de test qualite par skill (score, delta, modeles).","CONSERVER: sous-systeme detachable d'evaluation qualite, pas lu par le catalogue public"
63
+ skill_test_runs,upsert_test_run,COMPOSANT,quality-eval,CREATE,Insere 1 run de test qualite pour un skill et met a jour les champs qualite denormalises du skill parent (secondaire: skills).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,579,,INCOHERENT read=public write=admin,GARDER,"Historique des runs de test qualite par skill (score, delta, modeles).","CONSERVER: sous-systeme detachable d'evaluation qualite, pas lu par le catalogue public"
64
+ skills,detect_skill_drift,CORE,catalogue-core,SEARCH,"Retourne sha256(vrHash)+filePath+testHash par skill dans le scope, pour diff cote client vs disque.","index by_name (name=<slug>) | scope=all: ctx.db.query('skills').take(500) — PLAFOND SILENCIEUX a 500, aucune pagination, aucun signal de troncature retourne",MCP-public,lecture-ouverte(toutes),AUCUN,global,176,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
65
+ skills,get_skill,CORE,catalogue-core,READ-GET,Recupere 1 skill par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,66,,INCOHERENT read=public write=admin,GARDER,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
66
+ skills,get_skill_content,CORE,catalogue-core,READ-GET,"Lit le corps canonique SKILL.md heberge VR (content, sha256, version, testContent*) via index by_name.",,MCP-public,lecture-ouverte(toutes),AUCUN,global,142,,INCOHERENT read=public write=admin,GARDER,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
67
+ skills,list_skills,CORE,catalogue-core,READ-LIST,"Liste skills, filtres status/team/category, projection lite|full.","index by_team|by_category|by_status selon filtre, sinon full scan | native .paginate() si paginationOpts fourni | SANS paginationOpts: defaut:50 max:200 (clampListLimit)",MCP-public,lecture-ouverte(toutes),"resolveListBearerScope(bearer optional, fail-closed public si absent)",orgId(bearer optionnel),381,,INCOHERENT read=public write=admin,GARDER,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
68
+ skills,list_skills_by_category,CORE,catalogue-core,READ-LIST,Liste skills d'une categorie (capability/composite/playbook/root/external).,"index by_category | pas de curseur (.take) | defaut:50 max:200 (clampListLimit, plafond SILENCIEUX au-dela)",MCP-public,lecture-ouverte(toutes),AUCUN,global,152,list_skills(category=...)(recouvrement partiel),INCOHERENT read=public write=admin,DEDUP,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
69
+ skills,list_skills_by_team,CORE,catalogue-core,READ-LIST,Liste skills d'une team donnee.,"index by_team | pas de curseur (.take) | defaut:50 max:200 (clampListLimit, plafond SILENCIEUX au-dela)",MCP-public,lecture-ouverte(toutes),AUCUN,global,123,list_skills(team=...)(recouvrement partiel),INCOHERENT read=public write=admin,DEDUP,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
70
+ skills,upsert_skill,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne skills (upsert par name+team); vrBody optionnel co-ecrit vrContent/vrContentHash/vrContentVersion dans le meme appel.,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,542,upsert_skill(vrBody=...) chevauche upsert_skill_content(deprecie pour ce cas),INCOHERENT read=public write=admin,DEPRECIER,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
71
+ skills,upsert_skill_content,CORE,catalogue-core,UPSERT,"Ecrit/actualise le corps canonique SKILL.md, recalcule sha256, bump patch version, testContent optionnel co-ecrit.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,327,"upsert_skill(vrBody=...)=upsert_skill_content(deprecie, conserve pour back-compat)",INCOHERENT read=public write=admin,DEPRECIER,Catalogue des skills (metadata + corps canonique SKILL.md vrContent/hash/version).,CONSERVER: coeur du catalogue public VantageRegistry
72
+ teams,get_team,CORE,catalogue-core,READ-GET,Recupere 1 team par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,65,,INCOHERENT read=public write=admin,GARDER,Registre des teams fleet (agentCount/skillCount denormalises).,"CONSERVER: table racine du catalogue, lue par tous"
73
+ teams,list_teams,CORE,catalogue-core,READ-LIST,"Liste teams, filtre optionnel status.",index by_status (si status) sinon .collect() plein scan | pas de limit param | pas de cap (table petite: teams),MCP-public,lecture-ouverte(toutes),AUCUN,global,85,,INCOHERENT read=public write=admin,GARDER,Registre des teams fleet (agentCount/skillCount denormalises).,"CONSERVER: table racine du catalogue, lue par tous"
74
+ teams,upsert_team,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne teams (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,227,,INCOHERENT read=public write=admin,GARDER,Registre des teams fleet (agentCount/skillCount denormalises).,"CONSERVER: table racine du catalogue, lue par tous"
75
+ template_consumers,link_template_consumer,COMPOSANT,template-graph,UPSERT,"Cree ou met a jour un lien entre un template et un composant/BU consommateur (upsert par (templateId,consumerName)); linkType uses|produces|references.",,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,376,,INCOHERENT read=public write=admin,GARDER,Table de jonction template<->composant/BU consommateur.,CONSERVER: meme cluster template-graph que runbook_template_links
76
+ template_consumers,list_consumers_for_template,COMPOSANT,template-graph,READ-LIST,"Liste les consommateurs lies a un template, filtre optionnel linkType.",index byTemplate | pas de limit documente cote tool,MCP-public,lecture-ouverte(toutes),AUCUN,global,177,,INCOHERENT read=public write=admin,GARDER,Table de jonction template<->composant/BU consommateur.,CONSERVER: meme cluster template-graph que runbook_template_links
77
+ template_consumers,list_templates_for_consumer,COMPOSANT,template-graph,READ-LIST,"Recherche inverse: liste templates consommes par un consumerName, metadonnees enrichies (secondaire: templates), orphan links skippes.",index byConsumer | pas de limit documente cote tool,MCP-public,lecture-ouverte(toutes),AUCUN,global,199,,INCOHERENT read=public write=admin,GARDER,Table de jonction template<->composant/BU consommateur.,CONSERVER: meme cluster template-graph que runbook_template_links
78
+ template_consumers,unlink_template_consumer,COMPOSANT,template-graph,DELETE,Hard-delete le lien entre un template et un consommateur.,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,155,,INCOHERENT read=public write=admin,GARDER,Table de jonction template<->composant/BU consommateur.,CONSERVER: meme cluster template-graph que runbook_template_links
79
+ templates,detect_template_drift,CORE,catalogue-core,SEARCH,"Retourne sha256 contentHash + provenance (sourceCommit, sourceRepo) par template dans le scope.","scope=all: .take(500) — PLAFOND SILENCIEUX, aucun signal de troncature",MCP-public,lecture-ouverte(toutes),AUCUN,global,145,,INCOHERENT read=public write=admin,CORRIGER-TRONCATURE-DRIFT,Catalogue des templates (mission/document/checklist) + provenance sourceCommit/sourceRepo.,"CONSERVER: coeur du catalogue public, cible de runbook_template_links/template_consumers"
80
+ templates,get_template,CORE,catalogue-core,READ-GET,Recupere 1 template par Convex _id.,,MCP-public,lecture-ouverte(toutes),AUCUN,global,68,,INCOHERENT read=public write=admin,GARDER,Catalogue des templates (mission/document/checklist) + provenance sourceCommit/sourceRepo.,"CONSERVER: coeur du catalogue public, cible de runbook_template_links/template_consumers"
81
+ templates,list_templates,CORE,catalogue-core,READ-LIST,"Liste templates, filtres team/template_type, projection lite|full.",index byTemplateType/by_team selon filtre | native .paginate() si paginationOpts fourni | SANS paginationOpts: .take(clamped) sauf branche team+template_type qui utilise MAX_TEMPLATE_FETCH (bound plus large avant post-filtre),MCP-public,lecture-ouverte(toutes),AUCUN,global,292,,INCOHERENT read=public write=admin,GARDER,Catalogue des templates (mission/document/checklist) + provenance sourceCommit/sourceRepo.,"CONSERVER: coeur du catalogue public, cible de runbook_template_links/template_consumers"
82
+ templates,list_templates_by_category,CORE,catalogue-core,READ-LIST,Liste templates d'une categorie via l'index byCategory.,"index byCategory | pas de curseur (.take) | defaut:50 max:200 (clampListLimit, plafond SILENCIEUX au-dela)",MCP-public,lecture-ouverte(toutes),AUCUN,global,173,"list_templates(category filtre non expose directement, mais recouvrement fonctionnel avec template_type)",INCOHERENT read=public write=admin,DEDUP,Catalogue des templates (mission/document/checklist) + provenance sourceCommit/sourceRepo.,"CONSERVER: coeur du catalogue public, cible de runbook_template_links/template_consumers"
83
+ templates,upsert_template,CORE,catalogue-core,UPSERT,Insere ou met a jour 1 ligne templates (upsert par name).,,MCP-admin,admin-fleet,adminWriteArgs(VR_ADMIN_WRITE_SECRET),global,518,,INCOHERENT read=public write=admin,GARDER,Catalogue des templates (mission/document/checklist) + provenance sourceCommit/sourceRepo.,"CONSERVER: coeur du catalogue public, cible de runbook_template_links/template_consumers"
84
+ webhook_events,(aucun — webhook_events),COMPOSANT,workspace-fork,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,"Dedup idempotence des webhooks entrants (Clerk), keye sur svix-id.",CONSERVER: infra webhook du cluster workspace-fork (VR Cloud C-PR1)
85
+ workspace_invitations,(aucun — workspace_invitations),COMPOSANT,workspace-fork,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,Invitations email en attente/acceptees/revoquees par workspace.,CONSERVER: cluster workspace-fork
86
+ workspace_members,(aucun — workspace_members),COMPOSANT,workspace-fork,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,Roster RBAC (admin/editor/viewer) par workspace.,"CONSERVER: cluster workspace-fork, enfant direct de workspaces"
87
+ workspace_tokens,(aucun — workspace_tokens),COMPOSANT,auth-tokens,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,"Bearer tokens MCP par workspace (tokenHash SHA-256, jamais le plaintext).","CONSERVER: cluster auth-tokens, distinct de VR_ADMIN_WRITE_SECRET/VR_TENANT_TOKEN"
88
+ workspaces,(aucun — workspaces),COMPOSANT,workspace-fork,n/a,,,n/a,n/a,n/a,n/a,0,,N/A,n/a — non exposée MCP,Espaces de travail (personal/team) proprietaires de forks catalogue.,"CONSERVER: racine du sous-systeme fork/workspace, candidat carve-out propre"
89
+ TOTAL,,,,,,,,,,,17158,,,,,
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@vantageos/backend-doctor",
3
+ "version": "0.1.0",
4
+ "description": "A conformance instrument that measures the VantagePeers backend against the pinned backend standard. The THIRD doctor built ON the @vantageos/mcp-doctor engine \u2014 never a third engine. It consumes runDoctor/renderTable and adds only detectors.",
5
+ "type": "module",
6
+ "main": "./dist/cli.js",
7
+ "types": "./dist/cli.d.ts",
8
+ "bin": {
9
+ "backend-doctor": "./dist/cli.js"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "fixtures"
14
+ ],
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "coverage": "tsx src/coverage-cli.ts",
21
+ "doctor": "tsx src/cli.ts",
22
+ "test": "vitest run",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepack": "npm run build",
25
+ "prepublishOnly": "npm run build && npm test"
26
+ },
27
+ "dependencies": {
28
+ "@vantageos/mcp-doctor": "^0.2.0",
29
+ "typescript": "^5.7.2"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^26.1.2",
33
+ "tsx": "^4.19.2",
34
+ "vitest": "^2.1.8"
35
+ },
36
+ "engines": {
37
+ "node": ">=20"
38
+ }
39
+ }