@nebulacomponents/citable 1.13.1 → 1.15.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 (359) hide show
  1. package/CHANGELOG.md +312 -0
  2. package/README.md +44 -6
  3. package/dist/universal/.agents/skills/citable/SKILL.md +22 -8
  4. package/dist/universal/.agents/skills/citable/VERSION +1 -1
  5. package/dist/universal/.agents/skills/citable/agents/citable-auditor.md +64 -0
  6. package/dist/universal/.agents/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  7. package/dist/universal/.agents/skills/citable/commands/README.md +4 -1
  8. package/dist/universal/.agents/skills/citable/commands/action-findings.md +9 -1
  9. package/dist/universal/.agents/skills/citable/commands/observe-and-act.md +62 -8
  10. package/dist/universal/.agents/skills/citable/commands/plan-audit.md +35 -0
  11. package/dist/universal/.agents/skills/citable/commands/reporting.md +57 -0
  12. package/dist/universal/.agents/skills/citable/manifest.json +29 -16
  13. package/dist/universal/.agents/skills/citable/schemas/action-plan.schema.json +13 -0
  14. package/dist/universal/.agents/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  15. package/dist/universal/.agents/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  16. package/dist/universal/.agents/skills/citable/schemas/common.defs.json +12 -1
  17. package/dist/universal/.agents/skills/citable/schemas/corroboration-import.schema.json +48 -0
  18. package/dist/universal/.agents/skills/citable/schemas/entity-graph.schema.json +75 -0
  19. package/dist/universal/.agents/skills/citable/schemas/entity.schema.json +13 -0
  20. package/dist/universal/.agents/skills/citable/schemas/observation.schema.json +1 -1
  21. package/dist/universal/.agents/skills/citable/schemas/page.schema.json +3 -0
  22. package/dist/universal/.agents/skills/citable/schemas/regional-network-import.schema.json +55 -0
  23. package/dist/universal/.agents/skills/citable/schemas/schedule.schema.json +1 -1
  24. package/dist/universal/.agents/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  25. package/dist/universal/.agents/skills/citable/scripts/README.md +3 -1
  26. package/dist/universal/.claude/agents/citable/citable-auditor.md +64 -0
  27. package/dist/universal/.claude/agents/citable/citable-semantic-reviewer.md +66 -0
  28. package/dist/universal/.claude/agents/citable/manifest.json +12 -0
  29. package/dist/universal/.claude/skills/citable/SKILL.md +22 -8
  30. package/dist/universal/.claude/skills/citable/VERSION +1 -1
  31. package/dist/universal/.claude/skills/citable/agents/citable-auditor.md +64 -0
  32. package/dist/universal/.claude/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  33. package/dist/universal/.claude/skills/citable/commands/README.md +4 -1
  34. package/dist/universal/.claude/skills/citable/commands/action-findings.md +9 -1
  35. package/dist/universal/.claude/skills/citable/commands/observe-and-act.md +62 -8
  36. package/dist/universal/.claude/skills/citable/commands/plan-audit.md +35 -0
  37. package/dist/universal/.claude/skills/citable/commands/reporting.md +57 -0
  38. package/dist/universal/.claude/skills/citable/manifest.json +34 -16
  39. package/dist/universal/.claude/skills/citable/schemas/action-plan.schema.json +13 -0
  40. package/dist/universal/.claude/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  41. package/dist/universal/.claude/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  42. package/dist/universal/.claude/skills/citable/schemas/common.defs.json +12 -1
  43. package/dist/universal/.claude/skills/citable/schemas/corroboration-import.schema.json +48 -0
  44. package/dist/universal/.claude/skills/citable/schemas/entity-graph.schema.json +75 -0
  45. package/dist/universal/.claude/skills/citable/schemas/entity.schema.json +13 -0
  46. package/dist/universal/.claude/skills/citable/schemas/observation.schema.json +1 -1
  47. package/dist/universal/.claude/skills/citable/schemas/page.schema.json +3 -0
  48. package/dist/universal/.claude/skills/citable/schemas/regional-network-import.schema.json +55 -0
  49. package/dist/universal/.claude/skills/citable/schemas/schedule.schema.json +1 -1
  50. package/dist/universal/.claude/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  51. package/dist/universal/.claude/skills/citable/scripts/README.md +3 -1
  52. package/dist/universal/.cursor/skills/citable/SKILL.md +22 -8
  53. package/dist/universal/.cursor/skills/citable/VERSION +1 -1
  54. package/dist/universal/.cursor/skills/citable/agents/citable-auditor.md +64 -0
  55. package/dist/universal/.cursor/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  56. package/dist/universal/.cursor/skills/citable/commands/README.md +4 -1
  57. package/dist/universal/.cursor/skills/citable/commands/action-findings.md +9 -1
  58. package/dist/universal/.cursor/skills/citable/commands/observe-and-act.md +62 -8
  59. package/dist/universal/.cursor/skills/citable/commands/plan-audit.md +35 -0
  60. package/dist/universal/.cursor/skills/citable/commands/reporting.md +57 -0
  61. package/dist/universal/.cursor/skills/citable/manifest.json +29 -16
  62. package/dist/universal/.cursor/skills/citable/schemas/action-plan.schema.json +13 -0
  63. package/dist/universal/.cursor/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  64. package/dist/universal/.cursor/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  65. package/dist/universal/.cursor/skills/citable/schemas/common.defs.json +12 -1
  66. package/dist/universal/.cursor/skills/citable/schemas/corroboration-import.schema.json +48 -0
  67. package/dist/universal/.cursor/skills/citable/schemas/entity-graph.schema.json +75 -0
  68. package/dist/universal/.cursor/skills/citable/schemas/entity.schema.json +13 -0
  69. package/dist/universal/.cursor/skills/citable/schemas/observation.schema.json +1 -1
  70. package/dist/universal/.cursor/skills/citable/schemas/page.schema.json +3 -0
  71. package/dist/universal/.cursor/skills/citable/schemas/regional-network-import.schema.json +55 -0
  72. package/dist/universal/.cursor/skills/citable/schemas/schedule.schema.json +1 -1
  73. package/dist/universal/.cursor/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  74. package/dist/universal/.cursor/skills/citable/scripts/README.md +3 -1
  75. package/dist/universal/.gemini/skills/citable/SKILL.md +22 -8
  76. package/dist/universal/.gemini/skills/citable/VERSION +1 -1
  77. package/dist/universal/.gemini/skills/citable/agents/citable-auditor.md +64 -0
  78. package/dist/universal/.gemini/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  79. package/dist/universal/.gemini/skills/citable/commands/README.md +4 -1
  80. package/dist/universal/.gemini/skills/citable/commands/action-findings.md +9 -1
  81. package/dist/universal/.gemini/skills/citable/commands/observe-and-act.md +62 -8
  82. package/dist/universal/.gemini/skills/citable/commands/plan-audit.md +35 -0
  83. package/dist/universal/.gemini/skills/citable/commands/reporting.md +57 -0
  84. package/dist/universal/.gemini/skills/citable/manifest.json +29 -16
  85. package/dist/universal/.gemini/skills/citable/schemas/action-plan.schema.json +13 -0
  86. package/dist/universal/.gemini/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  87. package/dist/universal/.gemini/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  88. package/dist/universal/.gemini/skills/citable/schemas/common.defs.json +12 -1
  89. package/dist/universal/.gemini/skills/citable/schemas/corroboration-import.schema.json +48 -0
  90. package/dist/universal/.gemini/skills/citable/schemas/entity-graph.schema.json +75 -0
  91. package/dist/universal/.gemini/skills/citable/schemas/entity.schema.json +13 -0
  92. package/dist/universal/.gemini/skills/citable/schemas/observation.schema.json +1 -1
  93. package/dist/universal/.gemini/skills/citable/schemas/page.schema.json +3 -0
  94. package/dist/universal/.gemini/skills/citable/schemas/regional-network-import.schema.json +55 -0
  95. package/dist/universal/.gemini/skills/citable/schemas/schedule.schema.json +1 -1
  96. package/dist/universal/.gemini/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  97. package/dist/universal/.gemini/skills/citable/scripts/README.md +3 -1
  98. package/dist/universal/.github/skills/citable/SKILL.md +22 -8
  99. package/dist/universal/.github/skills/citable/VERSION +1 -1
  100. package/dist/universal/.github/skills/citable/agents/citable-auditor.md +64 -0
  101. package/dist/universal/.github/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  102. package/dist/universal/.github/skills/citable/commands/README.md +4 -1
  103. package/dist/universal/.github/skills/citable/commands/action-findings.md +9 -1
  104. package/dist/universal/.github/skills/citable/commands/observe-and-act.md +62 -8
  105. package/dist/universal/.github/skills/citable/commands/plan-audit.md +35 -0
  106. package/dist/universal/.github/skills/citable/commands/reporting.md +57 -0
  107. package/dist/universal/.github/skills/citable/manifest.json +29 -16
  108. package/dist/universal/.github/skills/citable/schemas/action-plan.schema.json +13 -0
  109. package/dist/universal/.github/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  110. package/dist/universal/.github/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  111. package/dist/universal/.github/skills/citable/schemas/common.defs.json +12 -1
  112. package/dist/universal/.github/skills/citable/schemas/corroboration-import.schema.json +48 -0
  113. package/dist/universal/.github/skills/citable/schemas/entity-graph.schema.json +75 -0
  114. package/dist/universal/.github/skills/citable/schemas/entity.schema.json +13 -0
  115. package/dist/universal/.github/skills/citable/schemas/observation.schema.json +1 -1
  116. package/dist/universal/.github/skills/citable/schemas/page.schema.json +3 -0
  117. package/dist/universal/.github/skills/citable/schemas/regional-network-import.schema.json +55 -0
  118. package/dist/universal/.github/skills/citable/schemas/schedule.schema.json +1 -1
  119. package/dist/universal/.github/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  120. package/dist/universal/.github/skills/citable/scripts/README.md +3 -1
  121. package/dist/universal/.kiro/skills/citable/SKILL.md +22 -8
  122. package/dist/universal/.kiro/skills/citable/VERSION +1 -1
  123. package/dist/universal/.kiro/skills/citable/agents/citable-auditor.md +64 -0
  124. package/dist/universal/.kiro/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  125. package/dist/universal/.kiro/skills/citable/commands/README.md +4 -1
  126. package/dist/universal/.kiro/skills/citable/commands/action-findings.md +9 -1
  127. package/dist/universal/.kiro/skills/citable/commands/observe-and-act.md +62 -8
  128. package/dist/universal/.kiro/skills/citable/commands/plan-audit.md +35 -0
  129. package/dist/universal/.kiro/skills/citable/commands/reporting.md +57 -0
  130. package/dist/universal/.kiro/skills/citable/manifest.json +29 -16
  131. package/dist/universal/.kiro/skills/citable/schemas/action-plan.schema.json +13 -0
  132. package/dist/universal/.kiro/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  133. package/dist/universal/.kiro/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  134. package/dist/universal/.kiro/skills/citable/schemas/common.defs.json +12 -1
  135. package/dist/universal/.kiro/skills/citable/schemas/corroboration-import.schema.json +48 -0
  136. package/dist/universal/.kiro/skills/citable/schemas/entity-graph.schema.json +75 -0
  137. package/dist/universal/.kiro/skills/citable/schemas/entity.schema.json +13 -0
  138. package/dist/universal/.kiro/skills/citable/schemas/observation.schema.json +1 -1
  139. package/dist/universal/.kiro/skills/citable/schemas/page.schema.json +3 -0
  140. package/dist/universal/.kiro/skills/citable/schemas/regional-network-import.schema.json +55 -0
  141. package/dist/universal/.kiro/skills/citable/schemas/schedule.schema.json +1 -1
  142. package/dist/universal/.kiro/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  143. package/dist/universal/.kiro/skills/citable/scripts/README.md +3 -1
  144. package/dist/universal/.opencode/skills/citable/SKILL.md +22 -8
  145. package/dist/universal/.opencode/skills/citable/VERSION +1 -1
  146. package/dist/universal/.opencode/skills/citable/agents/citable-auditor.md +64 -0
  147. package/dist/universal/.opencode/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  148. package/dist/universal/.opencode/skills/citable/commands/README.md +4 -1
  149. package/dist/universal/.opencode/skills/citable/commands/action-findings.md +9 -1
  150. package/dist/universal/.opencode/skills/citable/commands/observe-and-act.md +62 -8
  151. package/dist/universal/.opencode/skills/citable/commands/plan-audit.md +35 -0
  152. package/dist/universal/.opencode/skills/citable/commands/reporting.md +57 -0
  153. package/dist/universal/.opencode/skills/citable/manifest.json +29 -16
  154. package/dist/universal/.opencode/skills/citable/schemas/action-plan.schema.json +13 -0
  155. package/dist/universal/.opencode/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  156. package/dist/universal/.opencode/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  157. package/dist/universal/.opencode/skills/citable/schemas/common.defs.json +12 -1
  158. package/dist/universal/.opencode/skills/citable/schemas/corroboration-import.schema.json +48 -0
  159. package/dist/universal/.opencode/skills/citable/schemas/entity-graph.schema.json +75 -0
  160. package/dist/universal/.opencode/skills/citable/schemas/entity.schema.json +13 -0
  161. package/dist/universal/.opencode/skills/citable/schemas/observation.schema.json +1 -1
  162. package/dist/universal/.opencode/skills/citable/schemas/page.schema.json +3 -0
  163. package/dist/universal/.opencode/skills/citable/schemas/regional-network-import.schema.json +55 -0
  164. package/dist/universal/.opencode/skills/citable/schemas/schedule.schema.json +1 -1
  165. package/dist/universal/.opencode/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  166. package/dist/universal/.opencode/skills/citable/scripts/README.md +3 -1
  167. package/dist/universal/.pi/agent/skills/citable/SKILL.md +22 -8
  168. package/dist/universal/.pi/agent/skills/citable/VERSION +1 -1
  169. package/dist/universal/.pi/agent/skills/citable/agents/citable-auditor.md +64 -0
  170. package/dist/universal/.pi/agent/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  171. package/dist/universal/.pi/agent/skills/citable/commands/README.md +4 -1
  172. package/dist/universal/.pi/agent/skills/citable/commands/action-findings.md +9 -1
  173. package/dist/universal/.pi/agent/skills/citable/commands/observe-and-act.md +62 -8
  174. package/dist/universal/.pi/agent/skills/citable/commands/plan-audit.md +35 -0
  175. package/dist/universal/.pi/agent/skills/citable/commands/reporting.md +57 -0
  176. package/dist/universal/.pi/agent/skills/citable/manifest.json +29 -16
  177. package/dist/universal/.pi/agent/skills/citable/schemas/action-plan.schema.json +13 -0
  178. package/dist/universal/.pi/agent/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  179. package/dist/universal/.pi/agent/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  180. package/dist/universal/.pi/agent/skills/citable/schemas/common.defs.json +12 -1
  181. package/dist/universal/.pi/agent/skills/citable/schemas/corroboration-import.schema.json +48 -0
  182. package/dist/universal/.pi/agent/skills/citable/schemas/entity-graph.schema.json +75 -0
  183. package/dist/universal/.pi/agent/skills/citable/schemas/entity.schema.json +13 -0
  184. package/dist/universal/.pi/agent/skills/citable/schemas/observation.schema.json +1 -1
  185. package/dist/universal/.pi/agent/skills/citable/schemas/page.schema.json +3 -0
  186. package/dist/universal/.pi/agent/skills/citable/schemas/regional-network-import.schema.json +55 -0
  187. package/dist/universal/.pi/agent/skills/citable/schemas/schedule.schema.json +1 -1
  188. package/dist/universal/.pi/agent/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  189. package/dist/universal/.pi/agent/skills/citable/scripts/README.md +3 -1
  190. package/dist/universal/.qoder/skills/citable/SKILL.md +22 -8
  191. package/dist/universal/.qoder/skills/citable/VERSION +1 -1
  192. package/dist/universal/.qoder/skills/citable/agents/citable-auditor.md +64 -0
  193. package/dist/universal/.qoder/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  194. package/dist/universal/.qoder/skills/citable/commands/README.md +4 -1
  195. package/dist/universal/.qoder/skills/citable/commands/action-findings.md +9 -1
  196. package/dist/universal/.qoder/skills/citable/commands/observe-and-act.md +62 -8
  197. package/dist/universal/.qoder/skills/citable/commands/plan-audit.md +35 -0
  198. package/dist/universal/.qoder/skills/citable/commands/reporting.md +57 -0
  199. package/dist/universal/.qoder/skills/citable/manifest.json +29 -16
  200. package/dist/universal/.qoder/skills/citable/schemas/action-plan.schema.json +13 -0
  201. package/dist/universal/.qoder/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  202. package/dist/universal/.qoder/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  203. package/dist/universal/.qoder/skills/citable/schemas/common.defs.json +12 -1
  204. package/dist/universal/.qoder/skills/citable/schemas/corroboration-import.schema.json +48 -0
  205. package/dist/universal/.qoder/skills/citable/schemas/entity-graph.schema.json +75 -0
  206. package/dist/universal/.qoder/skills/citable/schemas/entity.schema.json +13 -0
  207. package/dist/universal/.qoder/skills/citable/schemas/observation.schema.json +1 -1
  208. package/dist/universal/.qoder/skills/citable/schemas/page.schema.json +3 -0
  209. package/dist/universal/.qoder/skills/citable/schemas/regional-network-import.schema.json +55 -0
  210. package/dist/universal/.qoder/skills/citable/schemas/schedule.schema.json +1 -1
  211. package/dist/universal/.qoder/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  212. package/dist/universal/.qoder/skills/citable/scripts/README.md +3 -1
  213. package/dist/universal/.rovodev/skills/citable/SKILL.md +22 -8
  214. package/dist/universal/.rovodev/skills/citable/VERSION +1 -1
  215. package/dist/universal/.rovodev/skills/citable/agents/citable-auditor.md +64 -0
  216. package/dist/universal/.rovodev/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  217. package/dist/universal/.rovodev/skills/citable/commands/README.md +4 -1
  218. package/dist/universal/.rovodev/skills/citable/commands/action-findings.md +9 -1
  219. package/dist/universal/.rovodev/skills/citable/commands/observe-and-act.md +62 -8
  220. package/dist/universal/.rovodev/skills/citable/commands/plan-audit.md +35 -0
  221. package/dist/universal/.rovodev/skills/citable/commands/reporting.md +57 -0
  222. package/dist/universal/.rovodev/skills/citable/manifest.json +29 -16
  223. package/dist/universal/.rovodev/skills/citable/schemas/action-plan.schema.json +13 -0
  224. package/dist/universal/.rovodev/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  225. package/dist/universal/.rovodev/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  226. package/dist/universal/.rovodev/skills/citable/schemas/common.defs.json +12 -1
  227. package/dist/universal/.rovodev/skills/citable/schemas/corroboration-import.schema.json +48 -0
  228. package/dist/universal/.rovodev/skills/citable/schemas/entity-graph.schema.json +75 -0
  229. package/dist/universal/.rovodev/skills/citable/schemas/entity.schema.json +13 -0
  230. package/dist/universal/.rovodev/skills/citable/schemas/observation.schema.json +1 -1
  231. package/dist/universal/.rovodev/skills/citable/schemas/page.schema.json +3 -0
  232. package/dist/universal/.rovodev/skills/citable/schemas/regional-network-import.schema.json +55 -0
  233. package/dist/universal/.rovodev/skills/citable/schemas/schedule.schema.json +1 -1
  234. package/dist/universal/.rovodev/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  235. package/dist/universal/.rovodev/skills/citable/scripts/README.md +3 -1
  236. package/dist/universal/.trae/skills/citable/SKILL.md +22 -8
  237. package/dist/universal/.trae/skills/citable/VERSION +1 -1
  238. package/dist/universal/.trae/skills/citable/agents/citable-auditor.md +64 -0
  239. package/dist/universal/.trae/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  240. package/dist/universal/.trae/skills/citable/commands/README.md +4 -1
  241. package/dist/universal/.trae/skills/citable/commands/action-findings.md +9 -1
  242. package/dist/universal/.trae/skills/citable/commands/observe-and-act.md +62 -8
  243. package/dist/universal/.trae/skills/citable/commands/plan-audit.md +35 -0
  244. package/dist/universal/.trae/skills/citable/commands/reporting.md +57 -0
  245. package/dist/universal/.trae/skills/citable/manifest.json +29 -16
  246. package/dist/universal/.trae/skills/citable/schemas/action-plan.schema.json +13 -0
  247. package/dist/universal/.trae/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  248. package/dist/universal/.trae/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  249. package/dist/universal/.trae/skills/citable/schemas/common.defs.json +12 -1
  250. package/dist/universal/.trae/skills/citable/schemas/corroboration-import.schema.json +48 -0
  251. package/dist/universal/.trae/skills/citable/schemas/entity-graph.schema.json +75 -0
  252. package/dist/universal/.trae/skills/citable/schemas/entity.schema.json +13 -0
  253. package/dist/universal/.trae/skills/citable/schemas/observation.schema.json +1 -1
  254. package/dist/universal/.trae/skills/citable/schemas/page.schema.json +3 -0
  255. package/dist/universal/.trae/skills/citable/schemas/regional-network-import.schema.json +55 -0
  256. package/dist/universal/.trae/skills/citable/schemas/schedule.schema.json +1 -1
  257. package/dist/universal/.trae/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  258. package/dist/universal/.trae/skills/citable/scripts/README.md +3 -1
  259. package/dist/universal/.trae-cn/skills/citable/SKILL.md +22 -8
  260. package/dist/universal/.trae-cn/skills/citable/VERSION +1 -1
  261. package/dist/universal/.trae-cn/skills/citable/agents/citable-auditor.md +64 -0
  262. package/dist/universal/.trae-cn/skills/citable/agents/citable-semantic-reviewer.md +66 -0
  263. package/dist/universal/.trae-cn/skills/citable/commands/README.md +4 -1
  264. package/dist/universal/.trae-cn/skills/citable/commands/action-findings.md +9 -1
  265. package/dist/universal/.trae-cn/skills/citable/commands/observe-and-act.md +62 -8
  266. package/dist/universal/.trae-cn/skills/citable/commands/plan-audit.md +35 -0
  267. package/dist/universal/.trae-cn/skills/citable/commands/reporting.md +57 -0
  268. package/dist/universal/.trae-cn/skills/citable/manifest.json +29 -16
  269. package/dist/universal/.trae-cn/skills/citable/schemas/action-plan.schema.json +13 -0
  270. package/dist/universal/.trae-cn/skills/citable/schemas/browser-evidence-plan.schema.json +14 -0
  271. package/dist/universal/.trae-cn/skills/citable/schemas/canonical-index-import.schema.json +30 -0
  272. package/dist/universal/.trae-cn/skills/citable/schemas/common.defs.json +12 -1
  273. package/dist/universal/.trae-cn/skills/citable/schemas/corroboration-import.schema.json +48 -0
  274. package/dist/universal/.trae-cn/skills/citable/schemas/entity-graph.schema.json +75 -0
  275. package/dist/universal/.trae-cn/skills/citable/schemas/entity.schema.json +13 -0
  276. package/dist/universal/.trae-cn/skills/citable/schemas/observation.schema.json +1 -1
  277. package/dist/universal/.trae-cn/skills/citable/schemas/page.schema.json +3 -0
  278. package/dist/universal/.trae-cn/skills/citable/schemas/regional-network-import.schema.json +55 -0
  279. package/dist/universal/.trae-cn/skills/citable/schemas/schedule.schema.json +1 -1
  280. package/dist/universal/.trae-cn/skills/citable/schemas/source-identity-chain.schema.json +83 -0
  281. package/dist/universal/.trae-cn/skills/citable/scripts/README.md +3 -1
  282. package/dist/universal/manifest.json +306 -195
  283. package/package.json +1 -1
  284. package/schemas/action-plan.schema.json +13 -0
  285. package/schemas/browser-evidence-plan.schema.json +14 -0
  286. package/schemas/canonical-index-import.schema.json +30 -0
  287. package/schemas/common.defs.json +12 -1
  288. package/schemas/corroboration-import.schema.json +48 -0
  289. package/schemas/entity-graph.schema.json +75 -0
  290. package/schemas/entity.schema.json +13 -0
  291. package/schemas/observation.schema.json +1 -1
  292. package/schemas/page.schema.json +3 -0
  293. package/schemas/regional-network-import.schema.json +55 -0
  294. package/schemas/schedule.schema.json +1 -1
  295. package/schemas/source-identity-chain.schema.json +83 -0
  296. package/scripts/build-dist.js +36 -3
  297. package/skill/SKILL.md +22 -8
  298. package/skill/agents/citable-auditor.md +64 -0
  299. package/skill/agents/citable-semantic-reviewer.md +66 -0
  300. package/skill/commands/README.md +4 -1
  301. package/skill/commands/action-findings.md +9 -1
  302. package/skill/commands/observe-and-act.md +62 -8
  303. package/skill/commands/plan-audit.md +35 -0
  304. package/skill/commands/reporting.md +57 -0
  305. package/src/cli/index.js +115 -15
  306. package/src/commands/actionPlan.js +12 -1
  307. package/src/commands/audit.js +4 -0
  308. package/src/commands/connect.js +29 -0
  309. package/src/commands/context.js +15 -0
  310. package/src/commands/delivery.js +86 -2
  311. package/src/commands/demo.js +36 -0
  312. package/src/commands/fixtures/demo/.citable/claims.yaml +27 -0
  313. package/src/commands/fixtures/demo/.citable/competitors.yaml +3 -0
  314. package/src/commands/fixtures/demo/.citable/config.yaml +18 -0
  315. package/src/commands/fixtures/demo/.citable/crawlers.yaml +30 -0
  316. package/src/commands/fixtures/demo/.citable/entities.yaml +28 -0
  317. package/src/commands/fixtures/demo/.citable/evidence.yaml +19 -0
  318. package/src/commands/fixtures/demo/.citable/experiments.yaml +3 -0
  319. package/src/commands/fixtures/demo/.citable/pages.yaml +54 -0
  320. package/src/commands/fixtures/demo/.citable/prompts.yaml +11 -0
  321. package/src/commands/fixtures/demo/.citable/queries.yaml +10 -0
  322. package/src/commands/fixtures/demo/site/index.html +12 -0
  323. package/src/commands/fixtures/demo/site/learn/execution-governance/index.html +14 -0
  324. package/src/commands/fixtures/demo/site/pricing/index.html +10 -0
  325. package/src/commands/fixtures/demo/site/products/gatekeeper/index.html +15 -0
  326. package/src/commands/fixtures/demo/site/robots.txt +7 -0
  327. package/src/commands/fixtures/demo/site/sitemap.xml +7 -0
  328. package/src/commands/init.js +5 -2
  329. package/src/commands/monitor.js +35 -0
  330. package/src/commands/observe.js +315 -15
  331. package/src/commands/planAudit.js +151 -0
  332. package/src/commands/reportDashboard.js +21 -0
  333. package/src/commands/reportShareOfVoice.js +60 -0
  334. package/src/commands/schemaCmd.js +5 -1
  335. package/src/commands/substantiate.js +22 -10
  336. package/src/connectors/http.js +6 -3
  337. package/src/connectors/index.js +3 -1
  338. package/src/connectors/webflow.js +224 -0
  339. package/src/connectors/wordpress.js +226 -0
  340. package/src/crawler/fetch.js +34 -6
  341. package/src/detectors/geoReco.js +101 -0
  342. package/src/extractor/page.js +17 -0
  343. package/src/installer/index.js +282 -28
  344. package/src/installer/providers.js +11 -0
  345. package/src/monitoring/alertDelivery.js +98 -0
  346. package/src/observations/browserJourney.js +15 -7
  347. package/src/observations/claimDiff.js +83 -0
  348. package/src/observations/common.js +25 -0
  349. package/src/observations/entityGraph.js +89 -0
  350. package/src/observations/renderParity.js +49 -0
  351. package/src/observations/sourceIdentity.js +62 -0
  352. package/src/observations/stance.js +261 -0
  353. package/src/registries/seed.js +95 -0
  354. package/src/registries/seeds/saas-pricing/claims.yaml +18 -0
  355. package/src/registries/seeds/saas-pricing/entities.yaml +20 -0
  356. package/src/registries/seeds/saas-pricing/seed.json +6 -0
  357. package/src/reporting/dashboard.js +254 -0
  358. package/src/reporting/shareOfVoice.js +362 -0
  359. package/src/shared/checklist.js +19 -0
@@ -2,6 +2,7 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { readJson, writeJson, sha256, nowIso } from '../shared/io.js';
4
4
  import { validateAgainst } from '../shared/schemaValidator.js';
5
+ import { checklistItem, toStringArray } from '../shared/checklist.js';
5
6
 
6
7
  const SEVERITY = { critical: 0, high: 1, medium: 2, low: 3, informational: 3, experimental: 3 };
7
8
  const PHASE = { unblock: 0, governance: 1, content: 2, optimization: 3 };
@@ -57,8 +58,13 @@ function renderPlan(plan) {
57
58
  lines.push(`### ${action.priority.toUpperCase()} · ${action.action_id} · ${action.status}`);
58
59
  lines.push('', `- Subject: \`${action.subject}\``, `- Action: ${action.action}`);
59
60
  lines.push(`- Owner: ${action.owner ?? 'unassigned'}`);
61
+ lines.push(`- Decision owner: ${action.decision_owner ?? 'unassigned'}`);
62
+ lines.push(`- Dependencies: ${action.depends_on_action_ids.length ? action.depends_on_action_ids.join(', ') : 'none established'}`);
60
63
  if (action.required_input.length) lines.push(`- Required input: ${action.required_input.join(', ')}`);
61
64
  if (action.semantic_gates.length) lines.push(`- Semantic gates: ${action.semantic_gates.join(', ')}`);
65
+ lines.push(`- Failure condition: ${action.failure_condition}`);
66
+ lines.push(`- Leading indicators: ${action.leading_indicators.length ? action.leading_indicators.join(', ') : 'none established'}`);
67
+ lines.push(`- Monitoring window: ${action.monitoring_window ?? 'not established'}`);
62
68
  lines.push(`- Verify: \`${action.verification.command}\``, '');
63
69
  }
64
70
  }
@@ -83,15 +89,20 @@ export function actionPlan(root, { runId } = {}) {
83
89
  return {
84
90
  action_id: `ACT-${finding.finding_id.replace(/^F-/, '')}`,
85
91
  finding_ids: [finding.finding_id],
92
+ depends_on_action_ids: [],
86
93
  phase: phaseFor(finding),
87
94
  priority: ['informational', 'experimental'].includes(finding.classification.severity) ? 'low' : finding.classification.severity,
88
95
  subject: finding.subject.identifier,
89
96
  action: finding.remediation.preferred,
90
97
  owner,
98
+ decision_owner: owner,
91
99
  status: blocked ? 'blocked' : 'ready',
92
- required_input: blocked ? ['accountable owner'] : [],
100
+ required_input: blocked ? toStringArray([checklistItem('owner', 'accountable owner')]) : [],
93
101
  semantic_gates: semanticGates(finding),
94
102
  unsafe_shortcuts: finding.remediation.unsafe_shortcuts || [],
103
+ failure_condition: `${finding.verification.detector_to_rerun} still reports the exact subject, or verification cannot complete with sufficient evidence`,
104
+ leading_indicators: [],
105
+ monitoring_window: null,
95
106
  verification: {
96
107
  method: finding.verification.method,
97
108
  detector: finding.verification.detector_to_rerun,
@@ -8,6 +8,8 @@ import { summarize, renderMarkdownReport } from '../reporting/report.js';
8
8
  import { validateAgainst } from '../shared/schemaValidator.js';
9
9
  import { writeJson, sha256 } from '../shared/io.js';
10
10
  import { extractModified } from '../detectors/lifeMeas.js';
11
+ import { buildEntityGraph } from '../observations/entityGraph.js';
12
+ import { buildSourceIdentityChain } from '../observations/sourceIdentity.js';
11
13
 
12
14
  /** `citable audit [scope]` — run detectors and produce an evidence package. */
13
15
  export async function audit(root, { target, scope, baseUrl, refDate } = {}) {
@@ -93,6 +95,8 @@ export async function audit(root, { target, scope, baseUrl, refDate } = {}) {
93
95
  const schemaBlocks = [];
94
96
  for (const p of ctx.site.pages) for (const j of p.jsonLd) schemaBlocks.push({ url: p.url, parseError: j.parseError, blocks: j.blocks });
95
97
  run.writeArtifact('schema/jsonld.json', schemaBlocks);
98
+ run.writeArtifact('schema/entity-graph.json', buildEntityGraph(ctx.site.pages));
99
+ run.writeArtifact('identity/source-chain.json', buildSourceIdentityChain(ctx.registries));
96
100
  for (const p of ctx.site.pages) {
97
101
  run.writeArtifact(`headers/${encodeURIComponent(p.url)}.json`, { status: p.status, headers: p.headers });
98
102
  }
@@ -1,7 +1,9 @@
1
+ import fs from 'node:fs';
1
2
  import { loadRegistries, saveRegistry } from '../registries/index.js';
2
3
  import { envelope, observationRun } from '../observations/common.js';
3
4
  import { getConnector, listConnectors } from '../connectors/index.js';
4
5
  import { validateAgainst } from '../shared/schemaValidator.js';
6
+ import { readJson } from '../shared/io.js';
5
7
 
6
8
  function findConnection(root, connectionId) {
7
9
  const loaded = loadRegistries(root);
@@ -88,3 +90,30 @@ export async function syncConnection(root, { connectionId, startDate, endDate, a
88
90
  saveRegistry(root, 'connections', updated);
89
91
  return { ...run, connection_id: connectionId, provider: connector.provider };
90
92
  }
93
+
94
+ export async function readCmsContent(root, { connectionId, targetId, accessToken, env, fetchImpl } = {}) {
95
+ if (!connectionId || !targetId) throw new Error('connect read requires --connection-id <id> and --target-id <id>');
96
+ const loaded = findConnection(root, connectionId);
97
+ const connector = getConnector(loaded.connection.provider);
98
+ if (!connector.readContent) {
99
+ throw new Error(`connector ${connector.provider} does not support CMS content reading`);
100
+ }
101
+ const context = contextFor(loaded.connection, connector, { accessToken, env, fetchImpl });
102
+ const content = await connector.readContent(loaded.connection, targetId, context);
103
+ return { connection_id: connectionId, provider: connector.provider, target_id: targetId, content };
104
+ }
105
+
106
+ export async function applyCmsRemediation(root, { connectionId, input, write = false, reviewer, accessToken, env, fetchImpl } = {}) {
107
+ if (!connectionId || !input) throw new Error('connect apply requires --connection-id <id> and --input <spec.json>');
108
+ const loaded = findConnection(root, connectionId);
109
+ const connector = getConnector(loaded.connection.provider);
110
+ if (!connector.applyRemediation) {
111
+ throw new Error(`connector ${connector.provider} does not support CMS remediation updates`);
112
+ }
113
+ const spec = typeof input === 'string' && fs.existsSync(input) ? readJson(input) : typeof input === 'object' ? input : JSON.parse(input);
114
+ const context = { ...contextFor(loaded.connection, connector, { accessToken, env, fetchImpl }), write: Boolean(write) };
115
+ if (reviewer && !spec.reviewer) spec.reviewer = reviewer;
116
+ const result = await connector.applyRemediation(loaded.connection, spec, context);
117
+ return { connection_id: connectionId, provider: connector.provider, ...result };
118
+ }
119
+
@@ -41,6 +41,20 @@ export async function buildContext(root, { target, baseUrl, refDate } = {}) {
41
41
  }
42
42
  }
43
43
 
44
+ // Observations recorded under .citable/runs/*/observations/
45
+ const observations = [];
46
+ if (fs.existsSync(runsDir)) {
47
+ for (const run of fs.readdirSync(runsDir)) {
48
+ const obsDir = path.join(runsDir, run, 'observations');
49
+ if (!fs.existsSync(obsDir)) continue;
50
+ for (const f of fs.readdirSync(obsDir)) {
51
+ if (f.endsWith('.json')) {
52
+ try { observations.push(readJson(path.join(obsDir, f))); } catch { warnings.push(`unreadable observation: ${run}/${f}`); }
53
+ }
54
+ }
55
+ }
56
+ }
57
+
44
58
  // Latest page snapshot (for regression/freshness comparison)
45
59
  let snapshots = null;
46
60
  const snapFile = path.join(root, '.citable', 'snapshots', 'pages-latest.json');
@@ -54,6 +68,7 @@ export async function buildContext(root, { target, baseUrl, refDate } = {}) {
54
68
  registries,
55
69
  site,
56
70
  promptResults: promptResults.length ? promptResults : null,
71
+ observations: observations.length ? observations : null,
57
72
  snapshots,
58
73
  refDate: parseRefDate(refDate),
59
74
  hashPage: (p) => sha256(p.text),
@@ -2,12 +2,23 @@ import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { audit } from './audit.js';
5
+ import { compareSnapshots } from './compareSnapshots.js';
6
+ import { buildAlertPayload, dispatchAlertWebhook, filterAlerts } from '../monitoring/alertDelivery.js';
5
7
  import { loadRegistries } from '../registries/index.js';
6
8
  import { readJson, sha256, writeJson, nowIso } from '../shared/io.js';
7
9
 
8
10
  const PKG = readJson(path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../package.json'));
9
11
 
10
- export async function runSchedule(root, { scheduleId, refDate } = {}) {
12
+ export async function runSchedule(root, {
13
+ scheduleId,
14
+ refDate,
15
+ webhook,
16
+ monitor: flagMonitor,
17
+ minSeverity,
18
+ fetchImpl,
19
+ lookup,
20
+ allowPrivateForTest = false,
21
+ } = {}) {
11
22
  const { registries, problems } = loadRegistries(root);
12
23
  if (problems.length) throw new Error(`registry validation failed: ${problems.join('; ')}`);
13
24
  const schedule = registries.schedules.entries.find((item) => item.schedule_id === scheduleId);
@@ -15,7 +26,80 @@ export async function runSchedule(root, { scheduleId, refDate } = {}) {
15
26
  if (schedule.status !== 'active') throw new Error(`schedule ${scheduleId} is ${schedule.status}`);
16
27
  if (schedule.expected_tool_version !== PKG.version) throw new Error(`schedule ${scheduleId} expects Citable ${schedule.expected_tool_version}, current version is ${PKG.version}`);
17
28
  const result = await audit(root, { target: schedule.audit.target, scope: schedule.audit.scope, baseUrl: schedule.audit.base_url, refDate });
18
- const execution = { schedule_id: scheduleId, cron: schedule.cron, owner: schedule.owner, executed_at: nowIso(), run_id: result.runId, manifest_hash: sha256(fs.readFileSync(path.join(result.dir, 'manifest.json'))), limitations: schedule.limitations };
29
+
30
+ const shouldMonitor = flagMonitor || Boolean(schedule.monitor?.enabled);
31
+ let monitorResult = null;
32
+ let alertDelivery = null;
33
+
34
+ if (shouldMonitor) {
35
+ const runsDir = path.join(root, '.citable', 'runs');
36
+ const runs = fs.existsSync(runsDir)
37
+ ? fs.readdirSync(runsDir).filter((r) => r !== result.runId && fs.existsSync(path.join(runsDir, r, 'findings.json'))).sort()
38
+ : [];
39
+ const prevRunId = runs.at(-1);
40
+
41
+ if (prevRunId) {
42
+ const comparison = compareSnapshots(root, { runA: prevRunId, runB: result.runId });
43
+ monitorResult = {
44
+ baseline_run: prevRunId,
45
+ comparable: comparison.comparability.comparable,
46
+ summary: comparison.summary,
47
+ regressions_count: comparison.regressions.length,
48
+ };
49
+
50
+ const targetWebhook = webhook || schedule.monitor?.webhook_url;
51
+ const targetMinSev = minSeverity || schedule.monitor?.min_severity || 'medium';
52
+
53
+ if (targetWebhook) {
54
+ const alerts = comparison.regressions.map((f) => ({
55
+ severity: f.classification?.severity || 'medium',
56
+ type: 'finding_regression',
57
+ detector_id: f.detector_id,
58
+ key: `${f.detector_id}|${f.subject?.identifier || f.subject?.source_file || 'unknown'}`,
59
+ message: f.observation?.summary || '',
60
+ }));
61
+
62
+ const qualifyingAlerts = filterAlerts(alerts, targetMinSev);
63
+ if (qualifyingAlerts.length > 0) {
64
+ const payload = buildAlertPayload({
65
+ runA: prevRunId,
66
+ runB: result.runId,
67
+ source: 'schedule',
68
+ summary: {
69
+ schedule_id: scheduleId,
70
+ ...comparison.summary,
71
+ },
72
+ alerts: qualifyingAlerts,
73
+ });
74
+ alertDelivery = await dispatchAlertWebhook(root, payload, {
75
+ webhookUrl: targetWebhook,
76
+ fetchImpl,
77
+ lookup,
78
+ allowPrivateForTest,
79
+ });
80
+ } else {
81
+ alertDelivery = { skipped: true, reason: `no regressions meet min_severity: ${targetMinSev}` };
82
+ }
83
+ }
84
+ } else {
85
+ monitorResult = {
86
+ status: 'insufficient_history',
87
+ message: 'No prior audit run available for regression comparison',
88
+ };
89
+ }
90
+ }
91
+
92
+ const execution = {
93
+ schedule_id: scheduleId,
94
+ cron: schedule.cron,
95
+ owner: schedule.owner,
96
+ executed_at: nowIso(),
97
+ run_id: result.runId,
98
+ manifest_hash: sha256(fs.readFileSync(path.join(result.dir, 'manifest.json'))),
99
+ limitations: schedule.limitations,
100
+ ...(monitorResult ? { monitor: monitorResult } : {}),
101
+ ...(alertDelivery ? { alert_delivery: alertDelivery } : {}),
102
+ };
19
103
  const executionFile = path.join(root, '.citable', 'schedule-executions', `${result.runId}.json`);
20
104
  writeJson(executionFile, execution);
21
105
  return { ...result, schedule_execution: execution, execution_file: executionFile };
@@ -0,0 +1,36 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { audit } from './audit.js';
6
+
7
+ const FIXTURE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), 'fixtures', 'demo');
8
+ // Pinned so output never drifts as real-world "today" passes the fixture's validity windows.
9
+ const DEMO_REF_DATE = '2026-07-18';
10
+
11
+ /**
12
+ * `citable demo` — run the full detector engine against a bundled, frozen,
13
+ * offline example site. Never fetches the network. Never scores the caller's
14
+ * own project or a real named company — the fixture is synthetic
15
+ * (`https://example.test`, RFC 2606 reserved, non-resolvable).
16
+ */
17
+ export async function demo() {
18
+ const workDir = fs.mkdtempSync(path.join(os.tmpdir(), 'citable-demo-'));
19
+ try {
20
+ fs.cpSync(FIXTURE_ROOT, workDir, { recursive: true });
21
+ const r = await audit(workDir, {
22
+ target: path.join(workDir, 'site'),
23
+ baseUrl: 'https://example.test',
24
+ refDate: DEMO_REF_DATE,
25
+ });
26
+ return {
27
+ runId: r.runId,
28
+ summary: r.summary,
29
+ manifest: r.manifest,
30
+ report: r.report,
31
+ fixture: 'bundled synthetic example site — offline, not fetched, not a real company',
32
+ };
33
+ } finally {
34
+ fs.rmSync(workDir, { recursive: true, force: true });
35
+ }
36
+ }
@@ -0,0 +1,27 @@
1
+ version: 1
2
+ kind: claims
3
+ entries:
4
+ - claim_id: CLAIM-ENFORCE
5
+ claim: >
6
+ Gatekeeper validates whether an AI-initiated action remains admissible
7
+ before execution in configured enforcement deployments.
8
+ claim_type: capability
9
+ entity: ENT-GATEKEEPER
10
+ scope:
11
+ - configured deployments using enforcement mode
12
+ exclusions:
13
+ - advisory-only deployments
14
+ evidence: [EVD-ARCH-SPEC]
15
+ legal_status: approved
16
+ publication_surfaces: ["/products/gatekeeper/"]
17
+ owner: Claim Owner
18
+ status: verified
19
+ valid_from: "2026-05-10"
20
+ expires: "2027-05-10"
21
+ last_verified: "2026-06-01"
22
+ support_assessment:
23
+ status: directly_supported
24
+ assessor: SME Reviewer
25
+ assessment_method: architecture specification review against claim wording
26
+ assessment_date: "2026-06-01"
27
+ confidence: high
@@ -0,0 +1,3 @@
1
+ version: 1
2
+ kind: competitors
3
+ entries: []
@@ -0,0 +1,18 @@
1
+ version: 1
2
+ site:
3
+ base_url: null
4
+ built_output_dir: null
5
+ source_dirs: []
6
+ default_locale: en
7
+ default_jurisdiction: null
8
+ framework:
9
+ name: null
10
+ rendering_model: null
11
+ package_manager: null
12
+ build_command: null
13
+ test_command: null
14
+ audit:
15
+ index_target_default: true
16
+ max_crawl_depth: 4
17
+ thin_content_words: 120
18
+ fetch_external: false
@@ -0,0 +1,30 @@
1
+ version: 1
2
+ kind: crawlers
3
+ entries:
4
+ - crawler_id: CRAWLER-GOOGLEBOT
5
+ user_agent: Googlebot
6
+ vendor: Google
7
+ purpose: search_indexing
8
+ decision: allow
9
+ decision_owner: SEO Owner
10
+ business_rationale: search visibility
11
+ next_review_date: "2027-01-01"
12
+ status: active
13
+ - crawler_id: CRAWLER-GPTBOT
14
+ user_agent: GPTBot
15
+ vendor: OpenAI
16
+ purpose: model_training
17
+ decision: block
18
+ decision_owner: Legal Owner
19
+ legal_rationale: no training license granted
20
+ next_review_date: "2027-01-01"
21
+ status: active
22
+ - crawler_id: CRAWLER-OAI-SEARCHBOT
23
+ user_agent: OAI-SearchBot
24
+ vendor: OpenAI
25
+ purpose: ai_search_discovery
26
+ decision: allow
27
+ decision_owner: SEO Owner
28
+ business_rationale: ChatGPT search inclusion
29
+ next_review_date: "2027-01-01"
30
+ status: active
@@ -0,0 +1,28 @@
1
+ version: 1
2
+ kind: entities
3
+ entries:
4
+ - entity_id: ENT-ORG
5
+ canonical_name: Example Governance
6
+ entity_type: organization
7
+ canonical_url: https://example.test/
8
+ aliases: []
9
+ authoritative_profiles:
10
+ - https://www.linkedin.com/company/example-governance
11
+ category: AI execution governance
12
+ definition: >
13
+ Example Governance is an AI execution governance platform vendor.
14
+ status: verified
15
+ last_verified: "2026-06-01"
16
+ owner: Entity Owner
17
+ - entity_id: ENT-GATEKEEPER
18
+ canonical_name: Gatekeeper
19
+ entity_type: product
20
+ owner_entity: ENT-ORG
21
+ canonical_url: https://example.test/products/gatekeeper/
22
+ category: AI execution governance
23
+ definition: >
24
+ A runtime enforcement component that validates whether an AI-initiated
25
+ action remains admissible before execution.
26
+ status: verified
27
+ last_verified: "2026-06-01"
28
+ owner: Entity Owner
@@ -0,0 +1,19 @@
1
+ version: 1
2
+ kind: evidence
3
+ entries:
4
+ - evidence_id: EVD-ARCH-SPEC
5
+ title: Gatekeeper architecture specification v2
6
+ evidence_type: architecture_specification
7
+ source: internal://specs/gatekeeper-v2.md
8
+ primary_or_secondary: primary
9
+ supports_claims: [CLAIM-ENFORCE]
10
+ methodology: design review
11
+ measurement_period: "2026-05"
12
+ publication_date: "2026-05-10"
13
+ retrieved_date: "2026-06-01"
14
+ valid_until: "2027-05-10"
15
+ integrity_hash: sha256:f685b01d139f89eacd9b8957b55f4986ad8dff1ba6848a61419dd505075d9dc
16
+ access_status: internal
17
+ reuse_status: licensed
18
+ reviewer: SME Reviewer
19
+ verification_status: verified
@@ -0,0 +1,3 @@
1
+ version: 1
2
+ kind: experiments
3
+ entries: []
@@ -0,0 +1,54 @@
1
+ version: 1
2
+ kind: pages
3
+ entries:
4
+ - page_id: PAGE-HOME
5
+ url: /
6
+ page_type: home
7
+ primary_intent: brand navigation
8
+ primary_entities: [ENT-ORG]
9
+ content_owner: Content Owner
10
+ lifecycle_class: evergreen
11
+ review_cadence: quarterly
12
+ next_review_date: "2026-10-01"
13
+ indexing_intent: index
14
+ conversion_action: request demo
15
+ status: active
16
+ - page_id: PAGE-GATEKEEPER
17
+ url: /products/gatekeeper/
18
+ page_type: product
19
+ primary_intent: vendor evaluation of runtime authorization
20
+ primary_entities: [ENT-GATEKEEPER]
21
+ published_claims: [CLAIM-ENFORCE]
22
+ content_owner: Content Owner
23
+ factual_reviewer: SME Reviewer
24
+ lifecycle_class: product_capability
25
+ review_cadence: release-driven
26
+ next_review_date: "2026-12-01"
27
+ indexing_intent: index
28
+ conversion_action: request demo
29
+ status: active
30
+ - page_id: PAGE-DEFN
31
+ url: /learn/execution-governance/
32
+ page_type: definition
33
+ primary_intent: define AI execution governance
34
+ primary_entities: [ENT-ORG]
35
+ content_owner: Content Owner
36
+ factual_reviewer: SME Reviewer
37
+ lifecycle_class: foundational
38
+ review_cadence: semiannual
39
+ next_review_date: "2026-12-15"
40
+ indexing_intent: index
41
+ conversion_action: read product page
42
+ status: active
43
+ - page_id: PAGE-PRICING
44
+ url: /pricing/
45
+ page_type: pricing
46
+ primary_intent: pricing evaluation
47
+ primary_entities: [ENT-GATEKEEPER]
48
+ content_owner: Content Owner
49
+ lifecycle_class: pricing
50
+ review_cadence: on-change
51
+ next_review_date: "2026-08-01"
52
+ indexing_intent: index
53
+ conversion_action: contact sales
54
+ status: active
@@ -0,0 +1,11 @@
1
+ version: 1
2
+ kind: prompts
3
+ entries:
4
+ - prompt_id: P-RECO
5
+ canonical_prompt: What platforms provide runtime authorization for AI agents?
6
+ prompt_class: category
7
+ desired_outcome: mention
8
+ target_entities: [ENT-GATEKEEPER]
9
+ accuracy_status: not_observed
10
+ owner: GEO Owner
11
+ status: active
@@ -0,0 +1,10 @@
1
+ version: 1
2
+ kind: queries
3
+ entries:
4
+ - query_id: Q-DEFN
5
+ canonical_query: what is ai execution governance
6
+ intent: category_discovery
7
+ funnel_stage: awareness
8
+ target_page: /learn/execution-governance/
9
+ business_value: high
10
+ status: active
@@ -0,0 +1,12 @@
1
+ <!doctype html><html lang="en"><head>
2
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
3
+ <title>Example Governance — AI execution governance platform</title>
4
+ <meta name="description" content="Example Governance provides runtime authorization controls for AI agents, with documented scope, evidence, and limitations.">
5
+ <link rel="canonical" href="https://example.test/">
6
+ <script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://example.test/#organization","name":"Example Governance","url":"https://example.test/"}</script>
7
+ </head><body>
8
+ <h1>AI execution governance for autonomous agents</h1>
9
+ <p>Example Governance is an AI execution governance platform that validates whether an AI-initiated action remains admissible before execution. It does not replace observability tooling; it operates in the execution path.</p>
10
+ <p>The platform is designed for engineering and risk teams at organizations that deploy tool-using AI agents. It is not intended for teams that only need model evaluation dashboards.</p>
11
+ <nav><a href="/products/gatekeeper/">Gatekeeper runtime authorization</a> <a href="/learn/execution-governance/">What is AI execution governance</a> <a href="/pricing/">Pricing and deployment options</a></nav>
12
+ </body></html>
@@ -0,0 +1,14 @@
1
+ <!doctype html><html lang="en"><head>
2
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
3
+ <title>What is AI execution governance? Definition and scope</title>
4
+ <meta name="description" content="A precise definition of AI execution governance, what it excludes, and how it differs from observability and approval workflows.">
5
+ <link rel="canonical" href="https://example.test/learn/execution-governance/">
6
+ </head><body>
7
+ <h1>What is AI execution governance?</h1>
8
+ <p>AI execution governance is the set of enforceable controls that determines whether a specific AI-initiated action is authorized at the moment of execution. It does not include model training governance or after-the-fact observability.</p>
9
+ <h2>How it differs from observability</h2>
10
+ <p>Execution governance differs from observability in one decisive dimension: observability records actions after they occur, whereas execution governance can prevent an inadmissible action. The comparison basis here is enforcement capability, not data collection depth.</p>
11
+ <h2>Limitations of this definition</h2>
12
+ <p>This definition does not apply to fully air-gapped batch systems where no runtime decision point exists. That constraint is a boundary condition, not an implementation detail.</p>
13
+ <p>See <a href="/products/gatekeeper/">Gatekeeper runtime authorization</a> for an implementation, or return to the <a href="/">Example Governance home page</a>.</p>
14
+ </body></html>
@@ -0,0 +1,10 @@
1
+ <!doctype html><html lang="en"><head>
2
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
3
+ <title>Pricing — Gatekeeper plans and deployment options</title>
4
+ <meta name="description" content="Published pricing for Gatekeeper: per-seat SaaS plans and self-hosted licensing, with what each plan does not include.">
5
+ <link rel="canonical" href="https://example.test/pricing/">
6
+ </head><body>
7
+ <h1>Gatekeeper pricing</h1>
8
+ <p>Gatekeeper SaaS starts at 40 USD per seat per month. Self-hosted licensing is quoted per deployment. The starter plan does not include enterprise audit exports; that limitation applies until the Team plan.</p>
9
+ <p><a href="/products/gatekeeper/">Gatekeeper product details</a> · <a href="/">Example Governance home</a></p>
10
+ </body></html>
@@ -0,0 +1,15 @@
1
+ <!doctype html><html lang="en"><head>
2
+ <meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
3
+ <title>Gatekeeper — runtime authorization for AI agents</title>
4
+ <meta name="description" content="Gatekeeper validates AI agent actions against current policy before execution. SaaS or self-hosted, available globally.">
5
+ <link rel="canonical" href="https://example.test/products/gatekeeper/">
6
+ <script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","@id":"https://example.test/products/gatekeeper/#product","name":"Gatekeeper","url":"https://example.test/products/gatekeeper/","publisher":{"@id":"https://example.test/#organization"}}</script>
7
+ </head><body>
8
+ <h1>Gatekeeper</h1>
9
+ <p>Gatekeeper is a runtime enforcement component that validates whether an AI-initiated action remains admissible before execution. It is designed for platform engineering teams operating autonomous agents in production. It is not for teams seeking a model training framework.</p>
10
+ <h2>Deployment and pricing</h2>
11
+ <p>Gatekeeper is available as SaaS or self-hosted. Pricing is published per seat per month; contact sales for enterprise quotes. Gatekeeper is available in North America and Europe.</p>
12
+ <h2>Limitations</h2>
13
+ <p>Gatekeeper does not support advisory-only deployments for enforcement guarantees, and it does not cover workflows that bypass its integration points. Known limitation: latency budgets under 5 ms are out of scope.</p>
14
+ <p><a href="/learn/execution-governance/">Read the execution governance definition</a> or <a href="/pricing/">compare pricing and deployment options</a>. <a href="/">Example Governance home</a></p>
15
+ </body></html>
@@ -0,0 +1,7 @@
1
+ User-agent: GPTBot
2
+ Disallow: /
3
+
4
+ User-agent: *
5
+ Allow: /
6
+
7
+ Sitemap: https://example.test/sitemap.xml
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3
+ <url><loc>https://example.test/</loc><lastmod>2026-07-01</lastmod></url>
4
+ <url><loc>https://example.test/products/gatekeeper/</loc><lastmod>2026-07-01</lastmod></url>
5
+ <url><loc>https://example.test/learn/execution-governance/</loc><lastmod>2026-07-01</lastmod></url>
6
+ <url><loc>https://example.test/pricing/</loc><lastmod>2026-07-01</lastmod></url>
7
+ </urlset>
@@ -3,6 +3,7 @@ import path from 'node:path';
3
3
  import { writeYaml, readJson, nowIso, listFiles } from '../shared/io.js';
4
4
  import { REGISTRY_SPECS, emptyRegistry, contextDir } from '../registries/index.js';
5
5
  import { validateAgainst } from '../shared/schemaValidator.js';
6
+ import { applySeed } from '../registries/seed.js';
6
7
 
7
8
  const DEFAULT_CRAWLERS = [
8
9
  ['CRAWLER-GOOGLEBOT', 'Googlebot', 'Google', 'search_indexing'],
@@ -68,7 +69,7 @@ function detectFramework(root) {
68
69
  }
69
70
 
70
71
  /** `citable init` — inspect the repo and create .citable/ without overwriting anything user-maintained. */
71
- export function init(root, { force = false } = {}) {
72
+ export function init(root, { force = false, seed = null } = {}) {
72
73
  const dir = contextDir(root);
73
74
  const created = [];
74
75
  const skipped = [];
@@ -120,5 +121,7 @@ export function init(root, { force = false } = {}) {
120
121
  writeYaml(file, reg);
121
122
  created.push(spec.file);
122
123
  }
123
- return { created, skipped, detected, unresolved };
124
+
125
+ const seedResult = seed ? applySeed(root, seed, { force }) : null;
126
+ return { created, skipped, detected, unresolved, seed: seedResult };
124
127
  }
@@ -1,6 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { readJson, writeJson, nowIso } from '../shared/io.js';
4
+ import { buildAlertPayload, dispatchAlertWebhook, filterAlerts } from '../monitoring/alertDelivery.js';
4
5
 
5
6
  function observations(dir) {
6
7
  const folder = path.join(dir, 'observations');
@@ -47,3 +48,37 @@ export function monitor(root, { runA, runB } = {}) {
47
48
  writeJson(path.join(dir, 'latest.json'), result);
48
49
  return { ...result, dir };
49
50
  }
51
+
52
+ export async function monitorAndAlert(root, {
53
+ runA,
54
+ runB,
55
+ webhookUrl,
56
+ minSeverity = 'medium',
57
+ fetchImpl,
58
+ lookup,
59
+ allowPrivateForTest = false,
60
+ } = {}) {
61
+ const result = monitor(root, { runA, runB });
62
+ if (webhookUrl) {
63
+ const qualifying = filterAlerts(result.alerts, minSeverity);
64
+ if (qualifying.length > 0) {
65
+ const payload = buildAlertPayload({
66
+ runA: result.run_a,
67
+ runB: result.run_b,
68
+ source: 'monitor',
69
+ summary: result.summary,
70
+ alerts: qualifying,
71
+ });
72
+ const delivery = await dispatchAlertWebhook(root, payload, {
73
+ webhookUrl,
74
+ fetchImpl,
75
+ lookup,
76
+ allowPrivateForTest,
77
+ });
78
+ return { ...result, delivery };
79
+ }
80
+ return { ...result, delivery: { skipped: true, reason: `no alerts meet min_severity: ${minSeverity}` } };
81
+ }
82
+ return result;
83
+ }
84
+