diff --git a/@platform/CLAUDE.md b/@platform/CLAUDE.md index b120bf1..faa40c6 100644 --- a/@platform/CLAUDE.md +++ b/@platform/CLAUDE.md @@ -44,7 +44,7 @@ See `../DESIGN.md §4` for the canonical directory tree. Quick map: ## Cardinal rules (V4-specific) - **Provider-generic naming.** No `quinn-*` package names. `quinn.*` domains are *Quinn's brand instance*; the code is `platform.api`, `ai-copilot`, `content-onlyfans`, etc. -- **No vendoring.** `@ai`, `@chobit`, `@model-boss`, `mail-sync`, `mac-sync`, `quinn-prospector`, `@ml/*` live at `~/Code/@applications/` and are consumed over HTTP/MCP. (Root CLAUDE.md hard rule.) +- **No vendoring.** `@ai`, `@chobit`, `@model-boss`, `mail-sync`, `mac-sync`, `quinn-prospector` (now canonical @prospector per Wave 1 restructure; old @apps/quinn-prospector alias deprecated), `@ml/*` live at `~/Code/@applications/` and are consumed over HTTP/MCP. (Root CLAUDE.md hard rule. Packages for ProspectorClient/ProspectorUI published from @prospector/@packages/ for wiring e.g. ProspectorView to real LP data.) - **No dev DBs / dev APIs.** Engineering points dev frontends at **prod APIs on black** (`platform.api`, `quinn.api`). Test DBs are ephemeral docker-compose containers per test run. - **GPU through `@model-boss`** on apricot. Never load models locally. (See `../INFRA.md §4` for the apricot table.) - **Platform actions go upstream.** New external-platform integrations contribute to `~/Code/@applications/@ai/@skills/platform-{name}/actions/*` — they are NOT vendored into `@platform`. diff --git a/@platform/codebase/@features/ai-copilot/cockpit-kit/README.md b/@platform/codebase/@features/ai-copilot/cockpit-kit/README.md new file mode 100644 index 0000000..0f5630e --- /dev/null +++ b/@platform/codebase/@features/ai-copilot/cockpit-kit/README.md @@ -0,0 +1,74 @@ +# CocotteCockpitKit — Prospector + +The **Prospector 1-view** (Life / Dates / Digital channels with Mr Number scoring, classification badges, stage, and operations sub-categories) is implemented as `ProspectorView.swift` + supporting types in this kit. + +It is exposed as a primary tab (tag 3, "Prospector") in the iOS client shell (`ios-fe/App.swift` → `ProspectorTab` → `ProspectorView`). + +## Status (as of latest build) + +- UI shell complete and matching the spec from the feature tracker prototypes (channels segmented, row with avatar + last message + badges for MR score / classification / stage, summary bar for classified count + high score, "Classify All" toolbar action, detail navigation stub). +- Demo / mock data using the exact taxonomy: + - Life: personal:friends + - Dates: work:dates (in-person bookings) + - Digital: work:digital (OF/content audience, cams, digital work) + - Operations sub-cats under work (medical, hair, beauty) + misc / spam +- Dark theme, NavigationStack + List + Picker(.segmented) + NavigationLink to detail (stub `ProspectorDetail`). +- Wired into the TabView in `CocotteCockpitiOSApp` (after Fleet, before Activity/Insights). Can be selected directly with `--tab 3` (or the simulator run script that does the reorder + launch). + +**Current wiring**: internal `@State` mock data in `onAppear`. +**Next (real data)**: feed from `CockpitModel` / `LiveCockpitAPI` (engagement-events with prospect classification/state, Mr Number via specialist or dedicated endpoint, stage from prospect state machine). The "Classify All" button will call the platform classifier (fast rules + GPU LLM via mcp-prospector or direct when `PROSPECT_LLM_BACKEND=modelboss`). + +See the feature tracker for the full initiative history and spec: +- `.project/feature_quinn-prospector-ios/README.md` +- `.project/feature_quinn-prospector-ios/objectives/README.md` (especially 0003 UI port + classification, 0008 wireless/sim state) +- Prototypes (for reference): `swift-ui/ProspectorMessengerView.swift` and the quinn-my-ui TSX version (headers now point here as the live home). + +## Build / Run (iOS client) + +The Prospector tab is part of the normal CocotteCockpitiOS build. Use the DX in the `ios-fe` directory: + +```bash +cd @platform/codebase/@features/ai-copilot/ios-fe + +# Typical dev cycle (see the feature tracker's scripts/README.md for the full historical context and the reorder that made Prospector a primary tab) +./scripts/run-ios-sim.sh # or the equivalent that builds + installs to simulator with --tab 3 +# or +xcodebuild ... -scheme CocotteCockpitiOS ... # then launch with args for tab selection +``` + +The `ios-fe` has its own `ios-tools.config.json`, `project.yml`, and scripts (the old quinn-ios ones in the tracker are retained only as historical reference). + +After build/install/launch with the Prospector tab selected, the UI appears with the channels, list, badges, and summary exactly as prototyped. + +## Architecture notes (live implementation) + +- **UI**: Pure SwiftUI in this kit (`ProspectorView`, `ProspectorChannel`, `ProspectorItem`, `ProspectorRow`, `ProspectorDetail` stub). Reuses kit design tokens / components where possible (the view is self-contained for the initial integration). +- **Shell**: `ios-fe/Sources/App.swift` owns the `TabView` (Drops 0, Assets 1, Fleet 2, **Prospector 3**, Activity 4, Insights 5). `ProspectorTab` is a thin wrapper that gives it a NavigationStack + title. +- **Data / backend**: Will use the shared `CocottePlatformModels` + `CocottePlatformAPIClient` (or the higher-level `CockpitModel` / `LiveCockpitAPI` in the feature). Classification comes from the platform ai-copilot surfaces + mcp-prospector (or direct for the 1-view). Mr Number screening and prospect state (stage) from the central prospector engine. +- **quinn-my / web parity**: The same 1-view + channels + badges + summary is prototyped in the tracker's `quinn-my-ui/ProspectorMessenger.tsx` to drive the web implementation. +- **macOS / desktop**: A parallel native macOS experience (separate target or app) can reuse the same visual spec / components (see the tracker prototypes and the companion OSX designs in the workspace). The backend (engagement + classifier + macsync for threads/pastebin/outbox) is shared. + +## Related (live vs planning) + +- **Live code**: this `ProspectorView.swift`, the tab registration in `ios-fe/App.swift`, the platform backend (prospector features in api + mcp-prospector). +- **Tracker / planning** (history of the port from quinn-ios prototype, objectives, handoffs, the original sample that this view was ported from): `.project/feature_quinn-prospector-ios/` (both in the lilith worktree and main tree copies). These are now updated to point here as the correct/current implementation location. quinn-ios references are explicitly historical/legacy. +- **Designs / contracts** (the v4 prospecting sub-features like cross-provider graph, auto-qualify, warm intros, marketplace): still in the planning surface (`.project/designs/prospecting/` and ai-copilot specialist contracts). +- **Executor / inbound handling instructions**: See the platform `mcp-prospector/README.md` and the operator's Executor workspace (`Documents/Claude/Projects/Executor/prospecting/`) for the state machine, pastebin via macsync, macsync outbox wiring, DO GPU model usage, corrections loop, etc. + +## Wiring notes (for future real data) + +- Pass `CockpitModel` (or a prospect-specific slice) down to `ProspectorView`. +- Map platform `engagement-events` (or `/my/prospects` + classifier results) to `ProspectorItem`. +- Classification badge from the fast + full (GPU) path. +- Mr Number score from the screening specialist / mr-number endpoints. +- Stage from the prospect state machine (prospect-qualification / runner). +- "Classify All" → call the classifier for the current filtered set (with macsync context for pastebin/templates if drafting). +- Detail view → full thread context + actions (mark worked, correction for training, draft/send via macsync outbox). + +**Packages / shared client note (Wave 1 restructure)**: The ProspectorClient/ProspectorUI (and future wiring to real LP data) are now published from the new canonical home `@applications/@prospector/@packages/` (ProspectorClient, ProspectorUI). Update consumers here to use those (path for MVP, registry post-publish). Old `@packages/@swift/@prospector/` and `@applications/@quinn-prospector/` are deprecated (see their READMEs + plan.md). LP remains source of truth (prospect-runner, mcp-prospector, quinn-api, macsync pastebin). GPU on-demand via provision script + health script verification. MVP: OSX @prospector app as central to replace Executor inbound. + +The tab is intentionally lightweight in the shell so the heavy lifting (model, API client, tokens) stays in the shared kit and platform layers. + +--- + +*This document lives with the live implementation. The feature tracker in lilith-platform describes the initiative and the port from the original prototypes. All active iOS work for the Prospector 1-view is in @cocottetech paths.* \ No newline at end of file diff --git a/@platform/codebase/@features/ai-copilot/ios-fe/README.md b/@platform/codebase/@features/ai-copilot/ios-fe/README.md new file mode 100644 index 0000000..d632a75 --- /dev/null +++ b/@platform/codebase/@features/ai-copilot/ios-fe/README.md @@ -0,0 +1,51 @@ +# CocotteCockpitiOS (ios-fe) — Prospector Tab + +The Prospector feature (1-view messenger with channels Life/Dates/Shows, Mr Number, classification, stage, operations sub-cats) is integrated as a **primary tab** (tag 3, icon "person.2", label "Prospector") in the main `TabView`. + +See `Sources/App.swift`: + +```swift +TabView(selection: $selection) { + ... + ProspectorTab() + .tabItem { Label("Prospector", systemImage: "person.2") }.tag(3) + ... +} +``` + +`ProspectorTab` is a thin wrapper (`NavigationStack { ProspectorView() ... }`). + +The actual UI + logic is in the shared kit: `../cockpit-kit/Sources/CocotteCockpitKit/ProspectorView.swift` (and `ProspectorRow`, `ProspectorItem`, `ProspectorChannel`, etc.). + +## Build / Launch notes (current DX) + +- Use the local `project.yml`, `ios-tools.config.json`, and scripts in this directory. +- The feature tracker scripts (in the lilith .project/feature_quinn-prospector-ios/scripts/) are historical reference only; the active DX lives here. +- To land directly on the tab during development: pass `--tab 3` (the `RootView` reads it for initial selection) or use the run scripts that perform the tab reorder + launch. +- Example (from recent successful run): build from the updated sources here, install to the target simulator/device ("iPhone 16 Pro for Prospector"), launch with the tab selected. The UI appears with the exact channels, list, badges, summary, and "Classify All" as specified. + +After the tab reorder, Prospector sits directly in the main bar (visible, not buried under More). + +## Current state + +- UI shell + demo data matching the spec/prototype (see the kit README for details and the live wiring TODOs). +- Real data will come from the platform (via `CockpitModel` / `LiveCockpitAPI` passed down, engagement-events, classifier, etc.). +- The kit view is preferredColorScheme(.dark) and uses the environment tokens from the shell. + +For the full initiative history, spec, prototypes (the original swift-ui sample and quinn-my-ui TSX), objectives, and handoffs, see the feature tracker in the lilith tree: + +`.project/feature_quinn-prospector-ios/` (updated to point here as the correct/current implementation location; quinn-ios refs are historical/legacy). + +All active code lives in @cocottetech paths. + +## Related + +- Kit implementation + more notes: `../cockpit-kit/README.md` +- Platform backend (classifier, mcp-prospector, engagement, macsync integration for threads/pastebin/outbox, DO GPU models): tracked in the main platform docs and the mcp-prospector README. +- The companion native macOS / desktop experience can follow the same visual spec (see workspace designs and the quinn-my-ui prototype for parity). + +**Packages note (Wave 1 restructure)**: Shared ProspectorClient/ProspectorUI now come from new canonical `@applications/@prospector/@packages/` (published for consumers including future real LP data wiring in ProspectorView here). Old locations @packages/@swift/@prospector and @applications/@quinn-prospector deprecated after migration (per plan.md). Use new for wiring to LP's proven backend (runner, mcp, quinn-api, Notes pastebin via macsync). GPU provision anytime via script; health script proof. MVP inbound replacement focus for OSX app. + +--- + +*Live shell integration doc. The tracker holds the port story and planning; the source here + the kit is the truth for the running feature.* \ No newline at end of file diff --git a/DESIGN.md b/DESIGN.md index d21ce07..4031580 100644 --- a/DESIGN.md +++ b/DESIGN.md @@ -161,6 +161,7 @@ These stay at their current locations and are consumed over HTTP/MCP: - `~/Code/@applications/@ml/knowledge-platform/` — Crystal's successor (knowledge verification, content auditing) - `~/Code/@applications/@ml/*` — other ML pipelines (rag-retrieval, content-moderation, message-classifier, prospect-classifier-claude, cot-reasoning, draft-pipeline-claude, etc.) - `~/Code/@applications/@quinn-ios/` — Swift iOS app +- `~/Code/@applications/@prospector/` — Canonical (Wave 1) for Quinn Prospector OSX app + internal @packages/ (ProspectorClient/ProspectorUI published from here for cocottetech etc; old @quinn-prospector / @swift/@prospector deprecated). LP backend source of truth; GPU via script; health script; MVP to replace Executor inbound. See plan.md. ---