069e60053b
When a sent/received email is matched to an investor, a local-model agent drafts a
one-line dated note and queues it as a PENDING proposal (it never writes the grid
itself). On the Email Capture page a partner sees "Proposed grid notes", can edit the
text, and Approve (appends to that investor's grid notes cell, newest at bottom,
stamped with the approver) or Dismiss. Going-forward only: a cutoff (app_settings
email_activity_since, set on first run) means email dated before the feature was
enabled is never summarized, so the historical backfill makes no noise. Sovereign:
summaries run entirely on the local model (no redaction needed). Gmail sync interval
tightened 180 -> 15 min so outgoing email surfaces quickly.
Backend: migration 0002 (email_activity_proposals); propose_email_activity_notes()
runs via a new scheduler post_sync hook; list/decide functions + routes
GET /api/activity/proposals, POST .../{id}/approve|dismiss. Grid append stamps the
approving user (fundraising_state.updated_by has a FK to users). Test
test_email_activity.py (propose cutoff/idempotency, approve appends + edited note,
dismiss, already-decided guard) under FK enforcement.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
2.5 KiB
TypeScript
39 lines
2.5 KiB
TypeScript
// Informational constants shared across the startos/ modules.
|
|
// The authoritative id, title and version for the package come
|
|
// from manifest/index.ts (id, title) and versions/ (version).
|
|
export const PACKAGE_ID = 'ten-database'
|
|
export const PACKAGE_TITLE = 'Ten31 Database'
|
|
// ExVer form of the current 0.4 wrapper release (upstream 0.1.0, wrapper rev 44).
|
|
// * 0.3.5 wrapper: 0.1.0.38 (legacy, aarch64)
|
|
// * First 0.4: 0.1.0:39 (shipped seed snapshot for migration)
|
|
// * Cleanup: 0.1.0:40 (seed removed + multi-threaded server + abuser auto-ban)
|
|
// * 0.1.0:41 (frontend persists auth across refreshes)
|
|
// * 0.1.0:42 (Gmail integration) / 0.1.0:43 (Gmail POST-body hotfix)
|
|
// * 0.1.0:44 (Phase-0 ingest + MCP server in image; build-index action)
|
|
// * 0.1.0:45 (Phase-1 thesis system; dual approval; merge review; in-app index)
|
|
// * 0.1.0:46 (packaging fix: ship full backend so migrations run + endpoints work)
|
|
// * 0.1.0:47 (soft-delete instead of hard-delete; source-count diagnostics)
|
|
// * 0.1.0:48 (entity model: investors vs people; fixes double-count)
|
|
// * 0.1.0:49 (Architect: Claude thesis generation + Thesis Workshop screen)
|
|
// * 0.1.0:50 (Set Anthropic API Key UI action — no terminal needed)
|
|
// * 0.1.0:51 (entity-resolution fix: people double-count + duplicate queue)
|
|
// * 0.1.0:52 (grid/contacts unification: contact_id link + grid as front door)
|
|
// * 0.1.0:53 (seed v5 thesis into the Architect Workshop)
|
|
// * 0.1.0:54 (unification polish: LinkedIn in grid inline contact editor)
|
|
// * 0.1.0:55 (Architect grounding boundary: redaction/re-hydration privacy gate)
|
|
// * 0.1.0:56 (Thesis Workshop redesign: edit/choose/delete + approve-as-current)
|
|
// * 0.1.0:57 (redaction fix: magnitude regex no longer eats the word after an amount)
|
|
// * 0.1.0:58 (seed 5 Architect positioning framings into the Workshop as candidate options)
|
|
// * 0.1.0:59 (Email Capture admin panel + matched email into the grounding corpus)
|
|
// * 0.1.0:60 (Email Capture: single-mailbox enroll field for testing)
|
|
// * 0.1.0:61 (Email Capture: live backfill progress + auto-refresh)
|
|
// * 0.1.0:62 (fix backfill crash on no-Reply-To emails; Sync now retries errored mailboxes)
|
|
// * 0.1.0:63 (System Status: storage usage — DB, attachments, backups, disk free)
|
|
// * Current: 0.1.0:64 (email-activity agent: propose->review->approve grid notes; sync ~15 min)
|
|
export const PACKAGE_VERSION = '0.1.0:64'
|
|
|
|
export const DATA_MOUNT_PATH = '/data'
|
|
export const WEB_PORT = 8080
|
|
export const IMAGE_ID = 'main'
|
|
export const VOLUME_ID = 'main'
|