@hasna/contacts 0.6.22 → 0.6.27

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 (185) hide show
  1. package/README.md +82 -6
  2. package/dist/cli/commands/advanced.d.ts.map +1 -1
  3. package/dist/cli/commands/audience.d.ts +18 -0
  4. package/dist/cli/commands/audience.d.ts.map +1 -0
  5. package/dist/cli/commands/core.d.ts.map +1 -1
  6. package/dist/cli/commands/crm.d.ts.map +1 -1
  7. package/dist/cli/index.js +9446 -5681
  8. package/dist/cli/storage.d.ts.map +1 -1
  9. package/dist/cloud/http-storage.d.ts +88 -0
  10. package/dist/cloud/http-storage.d.ts.map +1 -0
  11. package/dist/db/audiences.d.ts +51 -0
  12. package/dist/db/audiences.d.ts.map +1 -0
  13. package/dist/db/companies.d.ts.map +1 -1
  14. package/dist/db/contacts.d.ts.map +1 -1
  15. package/dist/db/database.d.ts +1 -2
  16. package/dist/db/database.d.ts.map +1 -1
  17. package/dist/db/paths.d.ts +3 -0
  18. package/dist/db/paths.d.ts.map +1 -0
  19. package/dist/db/pg-migrations.d.ts.map +1 -1
  20. package/dist/db/storage.d.ts +1 -1
  21. package/dist/db/storage.d.ts.map +1 -1
  22. package/dist/db/tags.d.ts.map +1 -1
  23. package/dist/db/tombstones.d.ts +19 -0
  24. package/dist/db/tombstones.d.ts.map +1 -0
  25. package/dist/generated/storage-kit/health.d.ts +20 -0
  26. package/dist/generated/storage-kit/health.d.ts.map +1 -0
  27. package/dist/generated/storage-kit/index.d.ts +8 -0
  28. package/dist/generated/storage-kit/index.d.ts.map +1 -0
  29. package/dist/generated/storage-kit/migrations.d.ts +48 -0
  30. package/dist/generated/storage-kit/migrations.d.ts.map +1 -0
  31. package/dist/generated/storage-kit/mode.d.ts +48 -0
  32. package/dist/generated/storage-kit/mode.d.ts.map +1 -0
  33. package/dist/generated/storage-kit/pool.d.ts +34 -0
  34. package/dist/generated/storage-kit/pool.d.ts.map +1 -0
  35. package/dist/generated/storage-kit/query.d.ts +36 -0
  36. package/dist/generated/storage-kit/query.d.ts.map +1 -0
  37. package/dist/generated/storage-kit/tls.d.ts +26 -0
  38. package/dist/generated/storage-kit/tls.d.ts.map +1 -0
  39. package/dist/index.d.ts +6 -76
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3876 -2787
  42. package/dist/lib/audience-contract.d.ts +215 -0
  43. package/dist/lib/audience-contract.d.ts.map +1 -0
  44. package/dist/lib/mailery-sync.d.ts +46 -0
  45. package/dist/lib/mailery-sync.d.ts.map +1 -0
  46. package/dist/lib/package-version.d.ts +6 -0
  47. package/dist/lib/package-version.d.ts.map +1 -0
  48. package/dist/mcp/handlers/advanced.d.ts +5 -0
  49. package/dist/mcp/handlers/advanced.d.ts.map +1 -1
  50. package/dist/mcp/handlers/audience.d.ts +9 -0
  51. package/dist/mcp/handlers/audience.d.ts.map +1 -0
  52. package/dist/mcp/handlers/core.d.ts +4 -0
  53. package/dist/mcp/handlers/core.d.ts.map +1 -1
  54. package/dist/mcp/handlers/crm.d.ts +5 -0
  55. package/dist/mcp/handlers/crm.d.ts.map +1 -1
  56. package/dist/mcp/handlers/index.d.ts.map +1 -1
  57. package/dist/mcp/index.js +5843 -4045
  58. package/dist/mcp/storage-tools.d.ts.map +1 -1
  59. package/dist/mcp/tools.d.ts +252 -0
  60. package/dist/mcp/tools.d.ts.map +1 -1
  61. package/dist/sdk/index.d.ts +16 -0
  62. package/dist/sdk/index.d.ts.map +1 -0
  63. package/dist/sdk/index.js +173 -0
  64. package/dist/sdk/v1.generated.d.ts +189 -0
  65. package/dist/sdk/v1.generated.d.ts.map +1 -0
  66. package/dist/server/cloud.d.ts +51 -0
  67. package/dist/server/cloud.d.ts.map +1 -0
  68. package/dist/server/index.js +8791 -4916
  69. package/dist/server/openapi.d.ts +708 -0
  70. package/dist/server/openapi.d.ts.map +1 -0
  71. package/dist/server/pg-store.d.ts +57 -0
  72. package/dist/server/pg-store.d.ts.map +1 -0
  73. package/dist/server/security.d.ts +24 -0
  74. package/dist/server/security.d.ts.map +1 -0
  75. package/dist/server/serve.d.ts +8 -1
  76. package/dist/server/serve.d.ts.map +1 -1
  77. package/dist/server/v1.d.ts +6 -0
  78. package/dist/server/v1.d.ts.map +1 -0
  79. package/dist/store/index.d.ts +383 -0
  80. package/dist/store/index.d.ts.map +1 -0
  81. package/dist/types/index.d.ts +96 -0
  82. package/dist/types/index.d.ts.map +1 -1
  83. package/hasna.contract.json +32 -0
  84. package/migrations/0001_core_schema.sql +162 -0
  85. package/migrations/0002_contact_fields_groups.sql +22 -0
  86. package/migrations/0003_status_archiving.sql +17 -0
  87. package/migrations/0004_company_relationships.sql +16 -0
  88. package/migrations/0005_contact_projects.sql +19 -0
  89. package/migrations/0006_contact_notes.sql +14 -0
  90. package/migrations/0007_entities_vendor_tasks.sql +91 -0
  91. package/migrations/0008_deals_events.sql +36 -0
  92. package/migrations/0009_history_learnings_coordination.sql +122 -0
  93. package/migrations/0010_documents_health.sql +38 -0
  94. package/migrations/0011_feedback.sql +14 -0
  95. package/migrations/0012_audiences_consent_suppressions.sql +38 -0
  96. package/migrations/9001_api_keys.sql +18 -0
  97. package/package.json +19 -4
  98. package/dist/cli/storage-contract.test.d.ts +0 -2
  99. package/dist/cli/storage-contract.test.d.ts.map +0 -1
  100. package/dist/db/activity.test.d.ts +0 -2
  101. package/dist/db/activity.test.d.ts.map +0 -1
  102. package/dist/db/applications.test.d.ts +0 -2
  103. package/dist/db/applications.test.d.ts.map +0 -1
  104. package/dist/db/companies.test.d.ts +0 -2
  105. package/dist/db/companies.test.d.ts.map +0 -1
  106. package/dist/db/contact-tasks.test.d.ts +0 -2
  107. package/dist/db/contact-tasks.test.d.ts.map +0 -1
  108. package/dist/db/contacts.test.d.ts +0 -2
  109. package/dist/db/contacts.test.d.ts.map +0 -1
  110. package/dist/db/coordination.test.d.ts +0 -2
  111. package/dist/db/coordination.test.d.ts.map +0 -1
  112. package/dist/db/database.test.d.ts +0 -2
  113. package/dist/db/database.test.d.ts.map +0 -1
  114. package/dist/db/deals.test.d.ts +0 -2
  115. package/dist/db/deals.test.d.ts.map +0 -1
  116. package/dist/db/documents.test.d.ts +0 -2
  117. package/dist/db/documents.test.d.ts.map +0 -1
  118. package/dist/db/events.test.d.ts +0 -2
  119. package/dist/db/events.test.d.ts.map +0 -1
  120. package/dist/db/feedback.d.ts +0 -15
  121. package/dist/db/feedback.d.ts.map +0 -1
  122. package/dist/db/field-history.test.d.ts +0 -2
  123. package/dist/db/field-history.test.d.ts.map +0 -1
  124. package/dist/db/freshness.test.d.ts +0 -2
  125. package/dist/db/freshness.test.d.ts.map +0 -1
  126. package/dist/db/graph.test.d.ts +0 -2
  127. package/dist/db/graph.test.d.ts.map +0 -1
  128. package/dist/db/groups.test.d.ts +0 -2
  129. package/dist/db/groups.test.d.ts.map +0 -1
  130. package/dist/db/health.test.d.ts +0 -2
  131. package/dist/db/health.test.d.ts.map +0 -1
  132. package/dist/db/identity.test.d.ts +0 -2
  133. package/dist/db/identity.test.d.ts.map +0 -1
  134. package/dist/db/job-history.test.d.ts +0 -2
  135. package/dist/db/job-history.test.d.ts.map +0 -1
  136. package/dist/db/learnings.test.d.ts +0 -2
  137. package/dist/db/learnings.test.d.ts.map +0 -1
  138. package/dist/db/notes.test.d.ts +0 -2
  139. package/dist/db/notes.test.d.ts.map +0 -1
  140. package/dist/db/org-chart.test.d.ts +0 -2
  141. package/dist/db/org-chart.test.d.ts.map +0 -1
  142. package/dist/db/org-members.test.d.ts +0 -2
  143. package/dist/db/org-members.test.d.ts.map +0 -1
  144. package/dist/db/relationships.test.d.ts +0 -2
  145. package/dist/db/relationships.test.d.ts.map +0 -1
  146. package/dist/db/signals.test.d.ts +0 -2
  147. package/dist/db/signals.test.d.ts.map +0 -1
  148. package/dist/db/sqlite-adapter.test.d.ts +0 -2
  149. package/dist/db/sqlite-adapter.test.d.ts.map +0 -1
  150. package/dist/db/storage.test.d.ts +0 -2
  151. package/dist/db/storage.test.d.ts.map +0 -1
  152. package/dist/db/tags.test.d.ts +0 -2
  153. package/dist/db/tags.test.d.ts.map +0 -1
  154. package/dist/db/vendor-comms.test.d.ts +0 -2
  155. package/dist/db/vendor-comms.test.d.ts.map +0 -1
  156. package/dist/lib/audit.test.d.ts +0 -2
  157. package/dist/lib/audit.test.d.ts.map +0 -1
  158. package/dist/lib/brief.test.d.ts +0 -2
  159. package/dist/lib/brief.test.d.ts.map +0 -1
  160. package/dist/lib/config.test.d.ts +0 -2
  161. package/dist/lib/config.test.d.ts.map +0 -1
  162. package/dist/lib/dedup.test.d.ts +0 -2
  163. package/dist/lib/dedup.test.d.ts.map +0 -1
  164. package/dist/lib/export.test.d.ts +0 -2
  165. package/dist/lib/export.test.d.ts.map +0 -1
  166. package/dist/lib/gmail-import.test.d.ts +0 -2
  167. package/dist/lib/gmail-import.test.d.ts.map +0 -1
  168. package/dist/lib/google-contacts.test.d.ts +0 -2
  169. package/dist/lib/google-contacts.test.d.ts.map +0 -1
  170. package/dist/lib/import.test.d.ts +0 -2
  171. package/dist/lib/import.test.d.ts.map +0 -1
  172. package/dist/lib/signature-parser.test.d.ts +0 -2
  173. package/dist/lib/signature-parser.test.d.ts.map +0 -1
  174. package/dist/lib/stats.test.d.ts +0 -2
  175. package/dist/lib/stats.test.d.ts.map +0 -1
  176. package/dist/lib/timeline.test.d.ts +0 -2
  177. package/dist/lib/timeline.test.d.ts.map +0 -1
  178. package/dist/lib/upcoming.test.d.ts +0 -2
  179. package/dist/lib/upcoming.test.d.ts.map +0 -1
  180. package/dist/mcp/http.test.d.ts +0 -2
  181. package/dist/mcp/http.test.d.ts.map +0 -1
  182. package/dist/mcp/mcp.test.d.ts +0 -2
  183. package/dist/mcp/mcp.test.d.ts.map +0 -1
  184. package/dist/mcp/storage-contract.test.d.ts +0 -2
  185. package/dist/mcp/storage-contract.test.d.ts.map +0 -1
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Cloud (A1 pure-remote) service wiring for `contacts-serve`.
3
+ *
4
+ * This module powers the versioned `/v1` API and its API-key auth. Per Amendment
5
+ * A1 the serve process reads and writes the shared RDS Postgres DIRECTLY through
6
+ * the vendored @hasna/contracts storage kit — there is NO local sync/cache in
7
+ * the service. Everything is lazy: nothing touches Postgres or crypto until the
8
+ * first `/v1` / `/ready` request, so the local-first CLI/dashboard SQLite paths
9
+ * keep ZERO cloud dependencies.
10
+ */
11
+ import { ApiKeyStore, type ApiKeyVerifier } from "@hasna/contracts/auth";
12
+ import type { PoolQueryClient } from "../generated/storage-kit/query.js";
13
+ export declare const CONTACTS_APP_SLUG = "contacts";
14
+ /** Resolve the remote DATABASE_URL from the supported env vars (priority order). */
15
+ export declare function resolveCloudDatabaseUrl(env?: NodeJS.ProcessEnv): string | undefined;
16
+ /** Resolve the HMAC signing secret used to verify API keys. */
17
+ export declare function resolveSigningSecret(env?: NodeJS.ProcessEnv): string | undefined;
18
+ /** True when this process is configured to serve the cloud `/v1` API. */
19
+ export declare function isCloudModeEnabled(env?: NodeJS.ProcessEnv): boolean;
20
+ /** The vendored-kit Postgres pool client backing every `/v1` handler. */
21
+ export declare function getCloudClient(): PoolQueryClient;
22
+ export declare function getApiKeyStore(): ApiKeyStore;
23
+ /**
24
+ * The framework-agnostic API-key verifier for `/v1`. Tokens are stateless,
25
+ * HMAC-signed by the contracts issuer; revocation is checked against the RDS
26
+ * `api_keys` table. Fails closed when no signing secret is configured.
27
+ */
28
+ export declare function getCloudVerifier(): ApiKeyVerifier;
29
+ /**
30
+ * Ensure the remote schema exists: the relational contacts schema (translated
31
+ * for Postgres in PG_MIGRATIONS) plus the contracts api-keys table. Idempotent —
32
+ * every statement is CREATE ... IF NOT EXISTS / ADD COLUMN IF NOT EXISTS /
33
+ * ON CONFLICT DO NOTHING. NEVER drops or rewrites existing tables.
34
+ */
35
+ export declare function ensureCloudSchema(): Promise<void>;
36
+ /**
37
+ * Runtime schema check for the request path. The `contacts-serve` service runs
38
+ * as the LEAST-PRIVILEGE app role (DML only, no DDL) per the RDS isolation
39
+ * model; the one-shot migration task owns all schema DDL as the OWNER role.
40
+ * So here we attempt the ensure exactly ONCE and, if the app role lacks DDL
41
+ * privileges (the expected steady state), log a single line and proceed — the
42
+ * schema is already present, applied by the migration task. This NEVER throws,
43
+ * so a permission boundary can't take the API down. In local/dev where serve
44
+ * runs with a privileged role, this self-heals the schema on first request.
45
+ */
46
+ export declare function ensureCloudSchemaBestEffort(): Promise<void>;
47
+ /** Cheap readiness probe: round-trips a trivial query to RDS. */
48
+ export declare function pingCloud(): Promise<boolean>;
49
+ /** Test/shutdown helper. */
50
+ export declare function closeCloud(): Promise<void>;
51
+ //# sourceMappingURL=cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/server/cloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAgB,WAAW,EAAE,KAAK,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAE7G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAIzE,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAOhG;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAO7F;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhF;AAQD,yEAAyE;AACzE,wBAAgB,cAAc,IAAI,eAAe,CA2BhD;AAYD,wBAAgB,cAAc,IAAI,WAAW,CAI5C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAejD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvD;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAYjE;AAED,iEAAiE;AACjE,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAGlD;AAED,4BAA4B;AAC5B,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAOhD"}