Extends the simulator to light up the previously-empty Campaigns and Voice
surfaces from the live backend: launches sample campaigns via the real
facets→preview→launch flow, posts voice/tone corrections so the voice-
alignment lens returns pairs, and stands up an ephemeral macsync pastebin
stand-in so the template draft path renders real bodies offline. Verified:
GET /campaigns → 2 rows, /corrections/voice/alignment → 6 corrections / 4
pairs. (AI judge files left uncommitted per scope.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New @prospector/ai-harness workspace package — prospector's self-hosted
inference layer, replacing the model-boss coordinator. Owns a direct
OpenAI-compatible vLLM client over GPU_INFERENCE_URL (instance circuit
breaker + /health probe), a typed TASK_REGISTRY (prospect.classify /
prospect.draft / placeholder prospect.judge for the coming alignment
gate), the Quinn-voice prompt builders, and the request/response types
(ChatJsonOpts, ChatPriority, InferenceHealth). Framework-agnostic (no
NestJS, no process.env) so it is promotable to a shared @ct package.
Co-located Vitest (9 tests). Registered in root workspaces + backend dep.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add the third prospector interface: an AI-facing streaming orchestrator MCP
that sits above the raw mcp-prospector adapter and alongside the operator PWA.
It ticks the system, reports status, detects items needing a human, raises
dedup'd nudges, and drives the GO/PAUSE/AWAY kill-switch — but never sends
(every send stays behind Gate-2 + the human_owned floor).
- @packages/mcp-orchestrator: package.json + tsconfig + src/{index,client,
nudges,types}.ts. Six tools (orchestrate_tick, status_report, list_nudges,
ack_nudge, set_mode, drive_loop) wired to the real REST surface; detection/
loop logic left as documented PENDING stubs. Typechecks + builds clean.
- docs/features/ai-orchestrator.md: responsibilities, tool surface, streaming/
nudge loop, nudge rules mapped to verified live endpoints, reuse + safety,
open decisions.
- register the package in the root workspaces.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Remove all Swift/legacy artifacts — no native app, no swift-react UI, no
tech debt. The Chrome PWA (web/) on the NestJS backend (src/) + MCP server
is the sole way forward.
Removed:
- @packages/prospector-client, @packages/prospector-ui (Swift packages)
- Sources/ (QuinnProspector, QuinnProspectorCore), Config/, project.yml,
QuinnProspector.xcodeproj, Resources/
- PLAN.md (stale my/-port plan, superseded)
Rewired:
- .forgejo/workflows/ci.yml → Node CI (npm ci → typecheck/test/build for
backend + web + MCP) instead of Swift build/test
- .gitignore → drop .build/, *.xcodeproj/
Unified definition:
- docs/PROSPECTOR.md — new single source of truth (architecture, surfaces,
invariants, dependencies, build/deploy)
- README.md, CLAUDE.md, docs/README.md, src/README.md → PWA-forward,
point at docs/PROSPECTOR.md, no Swift/legacy references
designs/ kept intact as the authoritative UI/behavior spec.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
POST/GET prospector/corrections (own-DB prospect_corrections): operator/coworker
records where the backend's decision or draft was wrong — the trial vetting signal
and the substrate for tuning the OSS models. Adds prospector_correction MCP tool.
Disable tsc incremental (nest deleteOutDir + stale tsbuildinfo dropped emitted
files). tsc clean; corrections POST/GET verified live.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restructure to match the @mac-sync sister-app convention + operator direction:
- Backend service -> repo root (root package = the app); engine is CORE source,
now src/engine/ (not a separate package); imports rewritten to relative.
- MCP server -> @packages/mcp-prospector/ (agent interface; thin REST wrapper so
the coworker can trial this backend and fall back to legacy quinn-prospector).
- web/ stays a top-level surface.
- draft_engine default 'claude:sonnet' -> 'pastebin': the whole point is to run
OFF hosted Claude (which refuses adult-services copy) on OSS-uncensored LLMs on
raw GPU droplets; generative target is 'gpu:<model>'. Reuse LPv2's existing DO
GPU provisioning, not model-boss.
- docs/features/mcp.md: how the MCP works + the coworker graceful-switch protocol.
- .gitignore: ignore Swift .build/.
Verified: tsc clean, 101 tests (92 engine + 9 runner), app boots from root,
mcp-prospector builds + boots, smoke tests green (scam held, settings=pastebin).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Fixed build error in prospector-ui + the co-located app Sources after migration.
- Updated to use AppColors (per tokens package API + tv-anarchy/quinn-ios patterns) + cleaned do/catch.
- These Sources/project were part of skeleton; now verified buildable with new packages.
- Cleans status for Wave 1 (designs, packages, app slice already present).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- prospector-client/: merge of domain-models/ + api-client/ into single target/product 'ProspectorClient' with combined Sources/
- prospector-ui/: moved, product 'ProspectorUI' depends on prospector-client + adjusted @ui/ path deps
- Used terminal mv for content relocation (from @packages/@swift/@prospector/); git add in new repo
- Updated all internal: imports (LilithProspectorDomainModels → ProspectorClient or removed), Package.swift names/products/comments, tests (@testable), READMEs, source comments
- Added exact required note: 'Published from @applications/@prospector as part of restructure. Consumers use @lilith/prospector-client etc. See plan.md. Integrates with LP's prospect-runner, mcp-prospector, quinn-api, macsync Apple Notes pastebin.'
- Skeleton @prospector/ + @packages/ + top README also updated for structure/MVP/LP notes
- Independent of app migration (old app/project.yml still reference old; deprecation notes added)
- Old location: packages deleted via git rm + DEPRECATED.md left (in its own commit)
- See also DEPRECATED-PACKAGES.md in @quinn-prospector
Verification follows (ls/grep old names zero in new; swift build)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>