@agentsean/db 1.0.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 (98) hide show
  1. package/LICENSE +661 -0
  2. package/dist/client.d.ts +13 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +48 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/fts.d.ts +31 -0
  7. package/dist/fts.d.ts.map +1 -0
  8. package/dist/fts.js +69 -0
  9. package/dist/fts.js.map +1 -0
  10. package/dist/index.d.ts +7 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +7 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/pg/actions.d.ts +404 -0
  15. package/dist/pg/actions.d.ts.map +1 -0
  16. package/dist/pg/actions.js +54 -0
  17. package/dist/pg/actions.js.map +1 -0
  18. package/dist/pg/content.d.ts +642 -0
  19. package/dist/pg/content.d.ts.map +1 -0
  20. package/dist/pg/content.js +65 -0
  21. package/dist/pg/content.js.map +1 -0
  22. package/dist/pg/google.d.ts +2657 -0
  23. package/dist/pg/google.d.ts.map +1 -0
  24. package/dist/pg/google.js +250 -0
  25. package/dist/pg/google.js.map +1 -0
  26. package/dist/pg/hosted.d.ts +1075 -0
  27. package/dist/pg/hosted.d.ts.map +1 -0
  28. package/dist/pg/hosted.js +106 -0
  29. package/dist/pg/hosted.js.map +1 -0
  30. package/dist/pg/keywords.d.ts +962 -0
  31. package/dist/pg/keywords.d.ts.map +1 -0
  32. package/dist/pg/keywords.js +89 -0
  33. package/dist/pg/keywords.js.map +1 -0
  34. package/dist/pg/measure.d.ts +1343 -0
  35. package/dist/pg/measure.d.ts.map +1 -0
  36. package/dist/pg/measure.js +128 -0
  37. package/dist/pg/measure.js.map +1 -0
  38. package/dist/pg/schema.d.ts +2589 -0
  39. package/dist/pg/schema.d.ts.map +1 -0
  40. package/dist/pg/schema.js +243 -0
  41. package/dist/pg/schema.js.map +1 -0
  42. package/dist/pg/surfaces.d.ts +1187 -0
  43. package/dist/pg/surfaces.d.ts.map +1 -0
  44. package/dist/pg/surfaces.js +112 -0
  45. package/dist/pg/surfaces.js.map +1 -0
  46. package/dist/pg/vector.d.ts +4 -0
  47. package/dist/pg/vector.d.ts.map +1 -0
  48. package/dist/pg/vector.js +12 -0
  49. package/dist/pg/vector.js.map +1 -0
  50. package/dist/provider.d.ts +3 -0
  51. package/dist/provider.d.ts.map +1 -0
  52. package/dist/provider.js +7 -0
  53. package/dist/provider.js.map +1 -0
  54. package/dist/schema.d.ts +11770 -0
  55. package/dist/schema.d.ts.map +1 -0
  56. package/dist/schema.js +9 -0
  57. package/dist/schema.js.map +1 -0
  58. package/dist/sqlite/actions.d.ts +448 -0
  59. package/dist/sqlite/actions.d.ts.map +1 -0
  60. package/dist/sqlite/actions.js +54 -0
  61. package/dist/sqlite/actions.js.map +1 -0
  62. package/dist/sqlite/content.d.ts +708 -0
  63. package/dist/sqlite/content.d.ts.map +1 -0
  64. package/dist/sqlite/content.js +65 -0
  65. package/dist/sqlite/content.js.map +1 -0
  66. package/dist/sqlite/google.d.ts +2885 -0
  67. package/dist/sqlite/google.d.ts.map +1 -0
  68. package/dist/sqlite/google.js +250 -0
  69. package/dist/sqlite/google.js.map +1 -0
  70. package/dist/sqlite/hosted.d.ts +1183 -0
  71. package/dist/sqlite/hosted.d.ts.map +1 -0
  72. package/dist/sqlite/hosted.js +106 -0
  73. package/dist/sqlite/hosted.js.map +1 -0
  74. package/dist/sqlite/init-sql.d.ts +3 -0
  75. package/dist/sqlite/init-sql.d.ts.map +1 -0
  76. package/dist/sqlite/init-sql.js +963 -0
  77. package/dist/sqlite/init-sql.js.map +1 -0
  78. package/dist/sqlite/keywords.d.ts +1038 -0
  79. package/dist/sqlite/keywords.d.ts.map +1 -0
  80. package/dist/sqlite/keywords.js +89 -0
  81. package/dist/sqlite/keywords.js.map +1 -0
  82. package/dist/sqlite/measure.d.ts +1451 -0
  83. package/dist/sqlite/measure.d.ts.map +1 -0
  84. package/dist/sqlite/measure.js +128 -0
  85. package/dist/sqlite/measure.js.map +1 -0
  86. package/dist/sqlite/schema.d.ts +2849 -0
  87. package/dist/sqlite/schema.d.ts.map +1 -0
  88. package/dist/sqlite/schema.js +243 -0
  89. package/dist/sqlite/schema.js.map +1 -0
  90. package/dist/sqlite/surfaces.d.ts +1295 -0
  91. package/dist/sqlite/surfaces.d.ts.map +1 -0
  92. package/dist/sqlite/surfaces.js +112 -0
  93. package/dist/sqlite/surfaces.js.map +1 -0
  94. package/dist/tables.d.ts +30 -0
  95. package/dist/tables.d.ts.map +1 -0
  96. package/dist/tables.js +106 -0
  97. package/dist/tables.js.map +1 -0
  98. package/package.json +52 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.d.ts","sourceRoot":"","sources":["../../src/pg/keywords.ts"],"names":[],"mappings":"AAGA,wFAAwF;AAExF,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAc3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBzB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAerB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB1B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAW1B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { index, integer, pgTable, real, text, uniqueIndex } from "drizzle-orm/pg-core";
2
+ import { sites } from "./schema.js";
3
+ /** Phase 6 — keywords, ranks, provider quotes. Dual-dialect with sqlite/keywords.ts. */
4
+ export const keywords = pgTable("keywords", {
5
+ id: text("id").primaryKey(),
6
+ siteId: text("site_id")
7
+ .notNull()
8
+ .references(() => sites.id, { onDelete: "cascade" }),
9
+ query: text("query").notNull(),
10
+ source: text("source").notNull(),
11
+ volume: integer("volume"),
12
+ volumeSource: text("volume_source"),
13
+ difficulty: real("difficulty"),
14
+ clicks: real("clicks").notNull().default(0),
15
+ impressions: real("impressions").notNull().default(0),
16
+ position: real("position"),
17
+ page: text("page"),
18
+ clusterId: text("cluster_id"),
19
+ createdAt: text("created_at").notNull(),
20
+ updatedAt: text("updated_at").notNull(),
21
+ }, (t) => [
22
+ uniqueIndex("keywords_site_query_uidx").on(t.siteId, t.query),
23
+ index("keywords_site_idx").on(t.siteId),
24
+ index("keywords_cluster_idx").on(t.clusterId),
25
+ ]);
26
+ export const keywordClusters = pgTable("keyword_clusters", {
27
+ id: text("id").primaryKey(),
28
+ siteId: text("site_id")
29
+ .notNull()
30
+ .references(() => sites.id, { onDelete: "cascade" }),
31
+ label: text("label").notNull(),
32
+ memberCount: integer("member_count").notNull().default(0),
33
+ centroidJson: text("centroid_json"),
34
+ serpConfirmed: integer("serp_confirmed").notNull().default(0),
35
+ createdAt: text("created_at").notNull(),
36
+ }, (t) => [index("keyword_clusters_site_idx").on(t.siteId)]);
37
+ export const rankSnapshots = pgTable("rank_snapshots", {
38
+ id: text("id").primaryKey(),
39
+ siteId: text("site_id")
40
+ .notNull()
41
+ .references(() => sites.id, { onDelete: "cascade" }),
42
+ query: text("query").notNull(),
43
+ url: text("url"),
44
+ position: integer("position"),
45
+ date: text("date").notNull(),
46
+ provider: text("provider").notNull(),
47
+ estimatedUsd: real("estimated_usd").notNull().default(0),
48
+ actualUsd: real("actual_usd").notNull().default(0),
49
+ createdAt: text("created_at").notNull(),
50
+ }, (t) => [
51
+ uniqueIndex("rank_snapshots_uidx").on(t.siteId, t.query, t.date, t.provider),
52
+ index("rank_snapshots_site_date_idx").on(t.siteId, t.date),
53
+ ]);
54
+ export const serpCache = pgTable("serp_cache", {
55
+ id: text("id").primaryKey(),
56
+ siteId: text("site_id").references(() => sites.id, { onDelete: "cascade" }),
57
+ query: text("query").notNull(),
58
+ provider: text("provider").notNull(),
59
+ resultsJson: text("results_json").notNull(),
60
+ estimatedUsd: real("estimated_usd").notNull().default(0),
61
+ fetchedAt: text("fetched_at").notNull(),
62
+ }, (t) => [
63
+ uniqueIndex("serp_cache_uidx").on(t.query, t.provider),
64
+ index("serp_cache_site_idx").on(t.siteId),
65
+ ]);
66
+ export const providerQuotes = pgTable("provider_quotes", {
67
+ id: text("id").primaryKey(),
68
+ siteId: text("site_id").references(() => sites.id, { onDelete: "cascade" }),
69
+ provider: text("provider").notNull(),
70
+ capability: text("capability").notNull(),
71
+ operation: text("operation").notNull(),
72
+ units: integer("units").notNull().default(1),
73
+ estimatedUsd: real("estimated_usd").notNull().default(0),
74
+ actualUsd: real("actual_usd"),
75
+ free: integer("free").notNull().default(0),
76
+ createdAt: text("created_at").notNull(),
77
+ }, (t) => [
78
+ index("provider_quotes_site_idx").on(t.siteId),
79
+ index("provider_quotes_provider_idx").on(t.provider),
80
+ ]);
81
+ export const embeddingCache = pgTable("embedding_cache", {
82
+ id: text("id").primaryKey(),
83
+ hash: text("hash").notNull(),
84
+ model: text("model").notNull(),
85
+ dim: integer("dim").notNull(),
86
+ vectorJson: text("vector_json").notNull(),
87
+ createdAt: text("created_at").notNull(),
88
+ }, (t) => [uniqueIndex("embedding_cache_uidx").on(t.hash, t.model)]);
89
+ //# sourceMappingURL=keywords.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keywords.js","sourceRoot":"","sources":["../../src/pg/keywords.ts"],"names":[],"mappings":"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"}