geopilot 0.0.0-stage → 0.0.1-bootstrap.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 (240) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +72 -2
  3. package/dist/agent/install.d.ts +23 -0
  4. package/dist/agent/install.js +75 -0
  5. package/dist/agent/install.js.map +1 -0
  6. package/dist/cache/runs.d.ts +18 -0
  7. package/dist/cache/runs.js +91 -0
  8. package/dist/cache/runs.js.map +1 -0
  9. package/dist/cli/args.d.ts +20 -0
  10. package/dist/cli/args.js +116 -0
  11. package/dist/cli/args.js.map +1 -0
  12. package/dist/cli/commands/agent.d.ts +2 -0
  13. package/dist/cli/commands/agent.js +48 -0
  14. package/dist/cli/commands/agent.js.map +1 -0
  15. package/dist/cli/commands/fix.d.ts +2 -0
  16. package/dist/cli/commands/fix.js +284 -0
  17. package/dist/cli/commands/fix.js.map +1 -0
  18. package/dist/cli/commands/init.d.ts +2 -0
  19. package/dist/cli/commands/init.js +62 -0
  20. package/dist/cli/commands/init.js.map +1 -0
  21. package/dist/cli/commands/insights.d.ts +17 -0
  22. package/dist/cli/commands/insights.js +143 -0
  23. package/dist/cli/commands/insights.js.map +1 -0
  24. package/dist/cli/commands/rules.d.ts +5 -0
  25. package/dist/cli/commands/rules.js +86 -0
  26. package/dist/cli/commands/rules.js.map +1 -0
  27. package/dist/cli/commands/scan.d.ts +14 -0
  28. package/dist/cli/commands/scan.js +127 -0
  29. package/dist/cli/commands/scan.js.map +1 -0
  30. package/dist/cli/commands-list.d.ts +6 -0
  31. package/dist/cli/commands-list.js +15 -0
  32. package/dist/cli/commands-list.js.map +1 -0
  33. package/dist/cli/context.d.ts +26 -0
  34. package/dist/cli/context.js +108 -0
  35. package/dist/cli/context.js.map +1 -0
  36. package/dist/cli/io.d.ts +16 -0
  37. package/dist/cli/io.js +28 -0
  38. package/dist/cli/io.js.map +1 -0
  39. package/dist/cli/main.d.ts +15 -0
  40. package/dist/cli/main.js +118 -0
  41. package/dist/cli/main.js.map +1 -0
  42. package/dist/collect/crawl.d.ts +51 -0
  43. package/dist/collect/crawl.js +187 -0
  44. package/dist/collect/crawl.js.map +1 -0
  45. package/dist/config/config.d.ts +86 -0
  46. package/dist/config/config.js +396 -0
  47. package/dist/config/config.js.map +1 -0
  48. package/dist/core/errors.d.ts +20 -0
  49. package/dist/core/errors.js +32 -0
  50. package/dist/core/errors.js.map +1 -0
  51. package/dist/core/hash.d.ts +7 -0
  52. package/dist/core/hash.js +28 -0
  53. package/dist/core/hash.js.map +1 -0
  54. package/dist/core/redact.d.ts +3 -0
  55. package/dist/core/redact.js +23 -0
  56. package/dist/core/redact.js.map +1 -0
  57. package/dist/core/tty.d.ts +12 -0
  58. package/dist/core/tty.js +33 -0
  59. package/dist/core/tty.js.map +1 -0
  60. package/dist/core/version.d.ts +6 -0
  61. package/dist/core/version.js +10 -0
  62. package/dist/core/version.js.map +1 -0
  63. package/dist/fix/apply.d.ts +119 -0
  64. package/dist/fix/apply.js +334 -0
  65. package/dist/fix/apply.js.map +1 -0
  66. package/dist/fix/diff.d.ts +1 -0
  67. package/dist/fix/diff.js +35 -0
  68. package/dist/fix/diff.js.map +1 -0
  69. package/dist/fix/plan.d.ts +42 -0
  70. package/dist/fix/plan.js +385 -0
  71. package/dist/fix/plan.js.map +1 -0
  72. package/dist/fix/serve.d.ts +13 -0
  73. package/dist/fix/serve.js +112 -0
  74. package/dist/fix/serve.js.map +1 -0
  75. package/dist/fix/variants.d.ts +13 -0
  76. package/dist/fix/variants.js +8 -0
  77. package/dist/fix/variants.js.map +1 -0
  78. package/dist/frameworks/ast.d.ts +84 -0
  79. package/dist/frameworks/ast.js +231 -0
  80. package/dist/frameworks/ast.js.map +1 -0
  81. package/dist/frameworks/nextjs-app/analyze.d.ts +92 -0
  82. package/dist/frameworks/nextjs-app/analyze.js +350 -0
  83. package/dist/frameworks/nextjs-app/analyze.js.map +1 -0
  84. package/dist/frameworks/static/analyze.d.ts +18 -0
  85. package/dist/frameworks/static/analyze.js +66 -0
  86. package/dist/frameworks/static/analyze.js.map +1 -0
  87. package/dist/html/parse.d.ts +50 -0
  88. package/dist/html/parse.js +205 -0
  89. package/dist/html/parse.js.map +1 -0
  90. package/dist/index.d.ts +10 -0
  91. package/dist/index.js +11 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/insights/validate.d.ts +74 -0
  94. package/dist/insights/validate.js +213 -0
  95. package/dist/insights/validate.js.map +1 -0
  96. package/dist/net/address.d.ts +10 -0
  97. package/dist/net/address.js +116 -0
  98. package/dist/net/address.js.map +1 -0
  99. package/dist/net/fetch.d.ts +53 -0
  100. package/dist/net/fetch.js +281 -0
  101. package/dist/net/fetch.js.map +1 -0
  102. package/dist/repo/detect.d.ts +3 -0
  103. package/dist/repo/detect.js +92 -0
  104. package/dist/repo/detect.js.map +1 -0
  105. package/dist/repo/reader.d.ts +12 -0
  106. package/dist/repo/reader.js +97 -0
  107. package/dist/repo/reader.js.map +1 -0
  108. package/dist/report/render.d.ts +20 -0
  109. package/dist/report/render.js +176 -0
  110. package/dist/report/render.js.map +1 -0
  111. package/dist/robots/crawlers.d.ts +10 -0
  112. package/dist/robots/crawlers.js +20 -0
  113. package/dist/robots/crawlers.js.map +1 -0
  114. package/dist/robots/robots.d.ts +33 -0
  115. package/dist/robots/robots.js +133 -0
  116. package/dist/robots/robots.js.map +1 -0
  117. package/dist/rules/catalogue.d.ts +43 -0
  118. package/dist/rules/catalogue.js +361 -0
  119. package/dist/rules/catalogue.js.map +1 -0
  120. package/dist/rules/context.d.ts +36 -0
  121. package/dist/rules/context.js +129 -0
  122. package/dist/rules/context.js.map +1 -0
  123. package/dist/rules/evaluate.d.ts +11 -0
  124. package/dist/rules/evaluate.js +1070 -0
  125. package/dist/rules/evaluate.js.map +1 -0
  126. package/dist/rules/finalize.d.ts +34 -0
  127. package/dist/rules/finalize.js +93 -0
  128. package/dist/rules/finalize.js.map +1 -0
  129. package/dist/scan.d.ts +27 -0
  130. package/dist/scan.js +147 -0
  131. package/dist/scan.js.map +1 -0
  132. package/dist/scoring/compare.d.ts +21 -0
  133. package/dist/scoring/compare.js +47 -0
  134. package/dist/scoring/compare.js.map +1 -0
  135. package/dist/scoring/score.d.ts +21 -0
  136. package/dist/scoring/score.js +112 -0
  137. package/dist/scoring/score.js.map +1 -0
  138. package/dist/sitemap/sitemap.d.ts +10 -0
  139. package/dist/sitemap/sitemap.js +48 -0
  140. package/dist/sitemap/sitemap.js.map +1 -0
  141. package/dist/types.d.ts +155 -0
  142. package/dist/types.js +13 -0
  143. package/dist/types.js.map +1 -0
  144. package/hosts/claude-project/.claude/agents/geopilot-explainer.md +36 -0
  145. package/hosts/claude-project/.claude/agents/geopilot-fixer.md +42 -0
  146. package/hosts/claude-project/.claude/agents/geopilot-investigator.md +45 -0
  147. package/hosts/claude-project/.claude/agents/geopilot-reviewer.md +41 -0
  148. package/hosts/claude-project/.claude/agents/geopilot-scanner.md +47 -0
  149. package/hosts/claude-project/.claude/skills/geo/SKILL.md +95 -0
  150. package/hosts/claude-project/.claude/skills/geo/references/frameworks.md +20 -0
  151. package/hosts/claude-project/.claude/skills/geo/references/insight-contract.md +42 -0
  152. package/hosts/claude-project/.claude/skills/geo/references/safety.md +30 -0
  153. package/hosts/claude-project/.claude/skills/geo/references/workflow-explain.md +8 -0
  154. package/hosts/claude-project/.claude/skills/geo/references/workflow-fix.md +20 -0
  155. package/hosts/claude-project/.claude/skills/geo/references/workflow-init.md +6 -0
  156. package/hosts/claude-project/.claude/skills/geo/references/workflow-insights.md +13 -0
  157. package/hosts/claude-project/.claude/skills/geo/references/workflow-plan.md +13 -0
  158. package/hosts/claude-project/.claude/skills/geo/references/workflow-review.md +8 -0
  159. package/hosts/claude-project/.claude/skills/geo/references/workflow-scan.md +18 -0
  160. package/hosts/claude-project/.claude/skills/geo/schemas/insights.schema.json +255 -0
  161. package/hosts/claude-project/.claude/skills/geo/scripts/geo.ps1 +11 -0
  162. package/hosts/claude-project/.claude/skills/geo/scripts/geo.sh +11 -0
  163. package/hosts/claude-project/.claude/skills/geopilot-explain/SKILL.md +9 -0
  164. package/hosts/claude-project/.claude/skills/geopilot-fix/SKILL.md +12 -0
  165. package/hosts/claude-project/.claude/skills/geopilot-init/SKILL.md +15 -0
  166. package/hosts/claude-project/.claude/skills/geopilot-insights/SKILL.md +11 -0
  167. package/hosts/claude-project/.claude/skills/geopilot-review/SKILL.md +11 -0
  168. package/hosts/claude-project/.claude/skills/geopilot-scan/SKILL.md +11 -0
  169. package/hosts/geopilot/.claude-plugin/plugin.json +22 -0
  170. package/hosts/geopilot/README.md +25 -0
  171. package/hosts/geopilot/agents/explainer.agent.md +36 -0
  172. package/hosts/geopilot/agents/fixer.agent.md +42 -0
  173. package/hosts/geopilot/agents/investigator.agent.md +45 -0
  174. package/hosts/geopilot/agents/reviewer.agent.md +41 -0
  175. package/hosts/geopilot/agents/scanner.agent.md +47 -0
  176. package/hosts/geopilot/assets/icon.png +0 -0
  177. package/hosts/geopilot/skills/explain/SKILL.md +9 -0
  178. package/hosts/geopilot/skills/fix/SKILL.md +12 -0
  179. package/hosts/geopilot/skills/geo/SKILL.md +95 -0
  180. package/hosts/geopilot/skills/geo/references/frameworks.md +20 -0
  181. package/hosts/geopilot/skills/geo/references/insight-contract.md +42 -0
  182. package/hosts/geopilot/skills/geo/references/safety.md +30 -0
  183. package/hosts/geopilot/skills/geo/references/workflow-explain.md +8 -0
  184. package/hosts/geopilot/skills/geo/references/workflow-fix.md +20 -0
  185. package/hosts/geopilot/skills/geo/references/workflow-init.md +6 -0
  186. package/hosts/geopilot/skills/geo/references/workflow-insights.md +13 -0
  187. package/hosts/geopilot/skills/geo/references/workflow-plan.md +13 -0
  188. package/hosts/geopilot/skills/geo/references/workflow-review.md +8 -0
  189. package/hosts/geopilot/skills/geo/references/workflow-scan.md +18 -0
  190. package/hosts/geopilot/skills/geo/schemas/insights.schema.json +255 -0
  191. package/hosts/geopilot/skills/geo/scripts/geo.ps1 +11 -0
  192. package/hosts/geopilot/skills/geo/scripts/geo.sh +11 -0
  193. package/hosts/geopilot/skills/init/SKILL.md +15 -0
  194. package/hosts/geopilot/skills/insights/SKILL.md +11 -0
  195. package/hosts/geopilot/skills/review/SKILL.md +11 -0
  196. package/hosts/geopilot/skills/scan/SKILL.md +11 -0
  197. package/hosts/opencode/.opencode/agents/geopilot-explainer.md +39 -0
  198. package/hosts/opencode/.opencode/agents/geopilot-fixer.md +45 -0
  199. package/hosts/opencode/.opencode/agents/geopilot-investigator.md +48 -0
  200. package/hosts/opencode/.opencode/agents/geopilot-reviewer.md +44 -0
  201. package/hosts/opencode/.opencode/agents/geopilot-scanner.md +50 -0
  202. package/hosts/opencode/.opencode/commands/geopilot-explain.md +8 -0
  203. package/hosts/opencode/.opencode/commands/geopilot-fix.md +10 -0
  204. package/hosts/opencode/.opencode/commands/geopilot-init.md +12 -0
  205. package/hosts/opencode/.opencode/commands/geopilot-insights.md +10 -0
  206. package/hosts/opencode/.opencode/commands/geopilot-review.md +10 -0
  207. package/hosts/opencode/.opencode/commands/geopilot-scan.md +10 -0
  208. package/hosts/opencode/.opencode/skills/geo/SKILL.md +95 -0
  209. package/hosts/opencode/.opencode/skills/geo/references/frameworks.md +20 -0
  210. package/hosts/opencode/.opencode/skills/geo/references/insight-contract.md +42 -0
  211. package/hosts/opencode/.opencode/skills/geo/references/safety.md +30 -0
  212. package/hosts/opencode/.opencode/skills/geo/references/workflow-explain.md +8 -0
  213. package/hosts/opencode/.opencode/skills/geo/references/workflow-fix.md +20 -0
  214. package/hosts/opencode/.opencode/skills/geo/references/workflow-init.md +6 -0
  215. package/hosts/opencode/.opencode/skills/geo/references/workflow-insights.md +13 -0
  216. package/hosts/opencode/.opencode/skills/geo/references/workflow-plan.md +13 -0
  217. package/hosts/opencode/.opencode/skills/geo/references/workflow-review.md +8 -0
  218. package/hosts/opencode/.opencode/skills/geo/references/workflow-scan.md +18 -0
  219. package/hosts/opencode/.opencode/skills/geo/schemas/insights.schema.json +255 -0
  220. package/hosts/opencode/.opencode/skills/geo/scripts/geo.ps1 +11 -0
  221. package/hosts/opencode/.opencode/skills/geo/scripts/geo.sh +11 -0
  222. package/package.json +65 -4
  223. package/schemas/config-v1.json +392 -0
  224. package/schemas/insights-v1.json +255 -0
  225. package/schemas/merged-v1.json +71 -0
  226. package/schemas/report-v1.json +836 -0
  227. package/skill/geo/SKILL.md +95 -0
  228. package/skill/geo/references/frameworks.md +20 -0
  229. package/skill/geo/references/insight-contract.md +42 -0
  230. package/skill/geo/references/safety.md +30 -0
  231. package/skill/geo/references/workflow-explain.md +8 -0
  232. package/skill/geo/references/workflow-fix.md +20 -0
  233. package/skill/geo/references/workflow-init.md +6 -0
  234. package/skill/geo/references/workflow-insights.md +13 -0
  235. package/skill/geo/references/workflow-plan.md +13 -0
  236. package/skill/geo/references/workflow-review.md +8 -0
  237. package/skill/geo/references/workflow-scan.md +18 -0
  238. package/skill/geo/schemas/insights.schema.json +255 -0
  239. package/skill/geo/scripts/geo.ps1 +11 -0
  240. package/skill/geo/scripts/geo.sh +11 -0
@@ -0,0 +1,392 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://moelzanaty3.github.io/geopilot/schema/config/v1.json",
4
+ "title": "geo.config.json",
5
+ "description": "geopilot configuration. JSON only; unknown keys are errors. GEO never infers site.origin, site.language, crawler policy or app identifiers.",
6
+ "type": "object",
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string"
10
+ },
11
+ "version": {
12
+ "const": 1
13
+ },
14
+ "framework": {
15
+ "enum": [
16
+ "auto",
17
+ "nextjs-app",
18
+ "static",
19
+ "generic"
20
+ ]
21
+ },
22
+ "profile": {
23
+ "enum": [
24
+ "web",
25
+ "app"
26
+ ],
27
+ "description": "app enables GEO-101 and GEO-102"
28
+ },
29
+ "site": {
30
+ "type": "object",
31
+ "properties": {
32
+ "origin": {
33
+ "type": [
34
+ "string",
35
+ "null"
36
+ ],
37
+ "format": "uri"
38
+ },
39
+ "language": {
40
+ "type": [
41
+ "string",
42
+ "null"
43
+ ]
44
+ }
45
+ },
46
+ "additionalProperties": false
47
+ },
48
+ "routes": {
49
+ "type": "object",
50
+ "properties": {
51
+ "include": {
52
+ "type": "array",
53
+ "items": {
54
+ "type": "string"
55
+ }
56
+ },
57
+ "exclude": {
58
+ "type": "array",
59
+ "items": {
60
+ "type": "string"
61
+ }
62
+ }
63
+ },
64
+ "additionalProperties": false
65
+ },
66
+ "crawl": {
67
+ "type": "object",
68
+ "properties": {
69
+ "maxPages": {
70
+ "type": [
71
+ "integer",
72
+ "null"
73
+ ],
74
+ "minimum": 1,
75
+ "maximum": 200
76
+ },
77
+ "maxDepth": {
78
+ "type": "integer",
79
+ "minimum": 0,
80
+ "maximum": 10
81
+ },
82
+ "render": {
83
+ "enum": [
84
+ "auto",
85
+ "always",
86
+ "never"
87
+ ]
88
+ },
89
+ "requestTimeoutMs": {
90
+ "type": "integer",
91
+ "minimum": 1000,
92
+ "maximum": 10000
93
+ }
94
+ },
95
+ "additionalProperties": false
96
+ },
97
+ "policy": {
98
+ "type": "object",
99
+ "properties": {
100
+ "aiSearchCrawlers": {
101
+ "enum": [
102
+ "allow",
103
+ "block",
104
+ "undecided"
105
+ ]
106
+ },
107
+ "aiTrainingCrawlers": {
108
+ "enum": [
109
+ "allow",
110
+ "block",
111
+ "undecided"
112
+ ]
113
+ },
114
+ "userTriggeredFetchers": {
115
+ "enum": [
116
+ "allow",
117
+ "block",
118
+ "undecided"
119
+ ]
120
+ }
121
+ },
122
+ "additionalProperties": false
123
+ },
124
+ "appLinks": {
125
+ "type": "object",
126
+ "properties": {
127
+ "ios": {
128
+ "oneOf": [
129
+ {
130
+ "type": "null"
131
+ },
132
+ {
133
+ "type": "object",
134
+ "properties": {
135
+ "appIds": {
136
+ "type": "array",
137
+ "items": {
138
+ "type": "string"
139
+ }
140
+ }
141
+ },
142
+ "additionalProperties": false,
143
+ "required": [
144
+ "appIds"
145
+ ]
146
+ }
147
+ ]
148
+ },
149
+ "android": {
150
+ "oneOf": [
151
+ {
152
+ "type": "null"
153
+ },
154
+ {
155
+ "type": "object",
156
+ "properties": {
157
+ "packageName": {
158
+ "type": "string"
159
+ },
160
+ "sha256CertFingerprints": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "string"
164
+ }
165
+ }
166
+ },
167
+ "additionalProperties": false,
168
+ "required": [
169
+ "packageName",
170
+ "sha256CertFingerprints"
171
+ ]
172
+ }
173
+ ]
174
+ }
175
+ },
176
+ "additionalProperties": false
177
+ },
178
+ "rules": {
179
+ "type": "object",
180
+ "propertyNames": {
181
+ "enum": [
182
+ "GEO-002",
183
+ "GEO-003",
184
+ "GEO-004",
185
+ "GEO-009",
186
+ "GEO-010",
187
+ "GEO-011",
188
+ "GEO-012",
189
+ "GEO-013",
190
+ "GEO-014",
191
+ "GEO-015",
192
+ "GEO-016",
193
+ "GEO-017",
194
+ "GEO-101",
195
+ "GEO-102"
196
+ ]
197
+ },
198
+ "additionalProperties": {
199
+ "oneOf": [
200
+ {
201
+ "const": "off"
202
+ },
203
+ {
204
+ "type": "object",
205
+ "properties": {
206
+ "severity": {
207
+ "enum": [
208
+ "high",
209
+ "medium",
210
+ "low",
211
+ "info"
212
+ ]
213
+ }
214
+ },
215
+ "additionalProperties": false,
216
+ "required": [
217
+ "severity"
218
+ ]
219
+ }
220
+ ]
221
+ }
222
+ },
223
+ "suppress": {
224
+ "type": "array",
225
+ "items": {
226
+ "type": "object",
227
+ "properties": {
228
+ "rule": {
229
+ "enum": [
230
+ "GEO-002",
231
+ "GEO-003",
232
+ "GEO-004",
233
+ "GEO-009",
234
+ "GEO-010",
235
+ "GEO-011",
236
+ "GEO-012",
237
+ "GEO-013",
238
+ "GEO-014",
239
+ "GEO-015",
240
+ "GEO-016",
241
+ "GEO-017",
242
+ "GEO-101",
243
+ "GEO-102"
244
+ ]
245
+ },
246
+ "routes": {
247
+ "type": "array",
248
+ "items": {
249
+ "type": "string"
250
+ }
251
+ },
252
+ "reason": {
253
+ "type": "string",
254
+ "minLength": 1
255
+ },
256
+ "expires": {
257
+ "type": [
258
+ "string",
259
+ "null"
260
+ ],
261
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
262
+ }
263
+ },
264
+ "additionalProperties": false,
265
+ "required": [
266
+ "rule",
267
+ "reason"
268
+ ]
269
+ }
270
+ },
271
+ "fix": {
272
+ "type": "object",
273
+ "properties": {
274
+ "verifyCommands": {
275
+ "type": "array",
276
+ "items": {
277
+ "type": "array",
278
+ "minItems": 1,
279
+ "items": {
280
+ "type": "string"
281
+ }
282
+ }
283
+ },
284
+ "runtimeTimeoutSeconds": {
285
+ "type": "integer",
286
+ "minimum": 5,
287
+ "maximum": 600
288
+ },
289
+ "serve": {
290
+ "type": "object",
291
+ "properties": {
292
+ "command": {
293
+ "oneOf": [
294
+ {
295
+ "type": "null"
296
+ },
297
+ {
298
+ "type": "array",
299
+ "minItems": 1,
300
+ "items": {
301
+ "type": "string"
302
+ }
303
+ }
304
+ ]
305
+ },
306
+ "url": {
307
+ "type": [
308
+ "string",
309
+ "null"
310
+ ],
311
+ "description": "loopback URL only"
312
+ },
313
+ "readyTimeoutSeconds": {
314
+ "type": "integer",
315
+ "minimum": 5,
316
+ "maximum": 600
317
+ }
318
+ },
319
+ "additionalProperties": false
320
+ }
321
+ },
322
+ "additionalProperties": false
323
+ },
324
+ "thresholds": {
325
+ "type": "object",
326
+ "properties": {
327
+ "failOn": {
328
+ "oneOf": [
329
+ {
330
+ "type": "null"
331
+ },
332
+ {
333
+ "enum": [
334
+ "high",
335
+ "medium",
336
+ "low",
337
+ "info"
338
+ ]
339
+ }
340
+ ]
341
+ },
342
+ "minReadiness": {
343
+ "type": [
344
+ "integer",
345
+ "null"
346
+ ],
347
+ "minimum": 0,
348
+ "maximum": 100
349
+ },
350
+ "minCoverage": {
351
+ "type": "integer",
352
+ "minimum": 0,
353
+ "maximum": 100
354
+ }
355
+ },
356
+ "additionalProperties": false
357
+ },
358
+ "hook": {
359
+ "type": "object",
360
+ "properties": {
361
+ "failOn": {
362
+ "oneOf": [
363
+ {
364
+ "type": "null"
365
+ },
366
+ {
367
+ "enum": [
368
+ "high",
369
+ "medium",
370
+ "low",
371
+ "info"
372
+ ]
373
+ }
374
+ ]
375
+ },
376
+ "timeoutSeconds": {
377
+ "type": "integer",
378
+ "minimum": 1,
379
+ "maximum": 60
380
+ }
381
+ },
382
+ "additionalProperties": false
383
+ },
384
+ "experimental": {
385
+ "type": "boolean"
386
+ }
387
+ },
388
+ "additionalProperties": false,
389
+ "required": [
390
+ "version"
391
+ ]
392
+ }
@@ -0,0 +1,255 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://moelzanaty3.github.io/geopilot/schema/insights/v1.json",
4
+ "title": "geo-insights/v1",
5
+ "description": "Agent output. kind is recommendation or hypothesis, never verified.",
6
+ "type": "object",
7
+ "properties": {
8
+ "schemaVersion": {
9
+ "const": "geo-insights/v1"
10
+ },
11
+ "producer": {
12
+ "type": "object",
13
+ "properties": {
14
+ "host": {
15
+ "type": "string"
16
+ },
17
+ "model": {
18
+ "type": "string"
19
+ },
20
+ "skillVersion": {
21
+ "type": "string"
22
+ }
23
+ },
24
+ "additionalProperties": false,
25
+ "required": [
26
+ "host",
27
+ "model",
28
+ "skillVersion"
29
+ ]
30
+ },
31
+ "basedOn": {
32
+ "type": "object",
33
+ "properties": {
34
+ "runId": {
35
+ "type": "string"
36
+ },
37
+ "reportSha256": {
38
+ "type": "string"
39
+ },
40
+ "gitCommit": {
41
+ "type": [
42
+ "string",
43
+ "null"
44
+ ]
45
+ }
46
+ },
47
+ "additionalProperties": false,
48
+ "required": [
49
+ "runId",
50
+ "reportSha256",
51
+ "gitCommit"
52
+ ]
53
+ },
54
+ "insights": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "object",
58
+ "properties": {
59
+ "id": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ },
63
+ "kind": {
64
+ "enum": [
65
+ "recommendation",
66
+ "hypothesis"
67
+ ]
68
+ },
69
+ "category": {
70
+ "type": "string"
71
+ },
72
+ "title": {
73
+ "type": "string"
74
+ },
75
+ "description": {
76
+ "type": "string"
77
+ },
78
+ "evidence": {
79
+ "type": "array",
80
+ "minItems": 1,
81
+ "items": {
82
+ "type": "object",
83
+ "required": [
84
+ "type"
85
+ ],
86
+ "properties": {
87
+ "type": {
88
+ "enum": [
89
+ "file",
90
+ "url",
91
+ "finding",
92
+ "note"
93
+ ]
94
+ },
95
+ "path": {
96
+ "type": "string"
97
+ },
98
+ "lines": {
99
+ "type": "object",
100
+ "properties": {
101
+ "start": {
102
+ "type": "integer",
103
+ "minimum": 1
104
+ },
105
+ "end": {
106
+ "type": "integer",
107
+ "minimum": 1
108
+ }
109
+ },
110
+ "additionalProperties": false,
111
+ "required": [
112
+ "start",
113
+ "end"
114
+ ]
115
+ },
116
+ "quote": {
117
+ "type": "string"
118
+ },
119
+ "url": {
120
+ "type": "string"
121
+ },
122
+ "selector": {
123
+ "type": "string"
124
+ },
125
+ "fingerprint": {
126
+ "type": "string"
127
+ },
128
+ "detail": {
129
+ "type": "string"
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ }
134
+ },
135
+ "related": {
136
+ "type": "object",
137
+ "properties": {
138
+ "fingerprints": {
139
+ "type": "array",
140
+ "items": {
141
+ "type": "string"
142
+ }
143
+ },
144
+ "routes": {
145
+ "type": "array",
146
+ "items": {
147
+ "type": "string"
148
+ }
149
+ },
150
+ "files": {
151
+ "type": "array",
152
+ "items": {
153
+ "type": "string"
154
+ }
155
+ },
156
+ "insights": {
157
+ "type": "array",
158
+ "items": {
159
+ "type": "string"
160
+ }
161
+ }
162
+ },
163
+ "additionalProperties": false,
164
+ "required": [
165
+ "fingerprints",
166
+ "routes",
167
+ "files",
168
+ "insights"
169
+ ]
170
+ },
171
+ "conflictsWith": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "string"
175
+ }
176
+ },
177
+ "confidence": {
178
+ "enum": [
179
+ "low",
180
+ "medium",
181
+ "high"
182
+ ]
183
+ },
184
+ "priority": {
185
+ "enum": [
186
+ "low",
187
+ "medium",
188
+ "high"
189
+ ]
190
+ },
191
+ "effort": {
192
+ "enum": [
193
+ "small",
194
+ "medium",
195
+ "large"
196
+ ]
197
+ },
198
+ "expectedBenefit": {
199
+ "type": "string"
200
+ },
201
+ "suggestedAction": {
202
+ "type": "string"
203
+ },
204
+ "fixClass": {
205
+ "enum": [
206
+ "contextual",
207
+ "editorial",
208
+ "unsupported"
209
+ ]
210
+ },
211
+ "approvalRequired": {
212
+ "type": "boolean"
213
+ },
214
+ "verification": {
215
+ "enum": [
216
+ "V2",
217
+ "V4",
218
+ "none"
219
+ ]
220
+ },
221
+ "uncertainty": {
222
+ "type": "string"
223
+ }
224
+ },
225
+ "additionalProperties": false,
226
+ "required": [
227
+ "id",
228
+ "kind",
229
+ "category",
230
+ "title",
231
+ "description",
232
+ "evidence",
233
+ "related",
234
+ "conflictsWith",
235
+ "confidence",
236
+ "priority",
237
+ "effort",
238
+ "expectedBenefit",
239
+ "suggestedAction",
240
+ "fixClass",
241
+ "approvalRequired",
242
+ "verification",
243
+ "uncertainty"
244
+ ]
245
+ }
246
+ }
247
+ },
248
+ "additionalProperties": false,
249
+ "required": [
250
+ "schemaVersion",
251
+ "producer",
252
+ "basedOn",
253
+ "insights"
254
+ ]
255
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://moelzanaty3.github.io/geopilot/schema/merged/v1.json",
4
+ "title": "geo-merged/v1",
5
+ "type": "object",
6
+ "properties": {
7
+ "schemaVersion": {
8
+ "const": "geo-merged/v1"
9
+ },
10
+ "report": {
11
+ "$ref": "https://moelzanaty3.github.io/geopilot/schema/report/v1.json"
12
+ },
13
+ "insights": {
14
+ "oneOf": [
15
+ {
16
+ "type": "null"
17
+ },
18
+ {
19
+ "$ref": "https://moelzanaty3.github.io/geopilot/schema/insights/v1.json"
20
+ }
21
+ ]
22
+ },
23
+ "validation": {
24
+ "type": [
25
+ "object",
26
+ "null"
27
+ ]
28
+ },
29
+ "sections": {
30
+ "type": "object",
31
+ "properties": {
32
+ "verifiedEngineFindings": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string"
36
+ }
37
+ },
38
+ "agentRecommendations": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "string"
42
+ }
43
+ },
44
+ "hypothesesToValidate": {
45
+ "type": "array",
46
+ "items": {
47
+ "type": "string"
48
+ }
49
+ }
50
+ },
51
+ "additionalProperties": false,
52
+ "required": [
53
+ "verifiedEngineFindings",
54
+ "agentRecommendations",
55
+ "hypothesesToValidate"
56
+ ]
57
+ },
58
+ "disclaimer": {
59
+ "type": "string"
60
+ }
61
+ },
62
+ "additionalProperties": false,
63
+ "required": [
64
+ "schemaVersion",
65
+ "report",
66
+ "insights",
67
+ "validation",
68
+ "sections",
69
+ "disclaimer"
70
+ ]
71
+ }