mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-02 13:39:41 +02:00
Per-case profiles of user intent (docs/readmymind-plan.md): user-stated goals plus the user's recently submitted prompts, captured from the Claude session transcript behind the new synced readMyMindEnabled setting (default OFF). - intent-store.ts: keyed by owner + realpath(workingDir), FIFO/size caps, consecutive-dupe collapse, atomic 0600 writes to ~/.codeman/intents.json - transcript-watcher.ts: new transcript:user_prompt event for typed user turns (tool_result-only entries stay silent); capture wiring in server.ts is claude-only and gated on the setting per event - readmymind-routes.ts: GET/PUT/DELETE /api/sessions/:id/intent, ownership via findSessionOrFail, strict Zod schema - agent skill: SKILL.md recipe + endpoints.md rows so agents can read and record intent (PUT replaces: read + merge; never delete unprompted) - groundwork for the phase-2 predictor button; nothing is ever auto-sent Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
/**
|
|
* @fileoverview Read My Mind intent types.
|
|
*
|
|
* An intent profile is per CASE (owner + workingDir), not per session:
|
|
* intentions outlive `/clear`, respawn cycles, and individual sessions.
|
|
* See `docs/readmymind-plan.md`.
|
|
*/
|
|
|
|
/** One captured user prompt, as it appeared in the session transcript. */
|
|
export interface IntentPromptEntry {
|
|
/** Capture time (ms epoch). */
|
|
ts: number;
|
|
/** Codeman session the prompt was sent in. */
|
|
sessionId: string;
|
|
/** The prompt text, sanitized and bounded. */
|
|
text: string;
|
|
}
|
|
|
|
/** Per-case profile of what the user is trying to accomplish. */
|
|
export interface IntentProfile {
|
|
/** Stable key: sha256(owner + ':' + realpath(workingDir)), first 16 hex chars. */
|
|
key: string;
|
|
/** The case working directory the profile belongs to (realpath-resolved). */
|
|
workingDir: string;
|
|
/** Last mutation (ms epoch). 0 for a never-persisted empty profile. */
|
|
updatedAt: number;
|
|
/** User/agent-stated goals, freeform markdown, bounded. */
|
|
goals: string;
|
|
/** Most recent captured prompts, oldest first, FIFO-capped. */
|
|
recentPrompts: IntentPromptEntry[];
|
|
}
|