aiwcli 0.12.6 → 0.12.7
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.
- package/bin/dev.cmd +3 -3
- package/bin/dev.js +16 -16
- package/bin/run.cmd +3 -3
- package/bin/run.js +21 -21
- package/dist/commands/branch.js +7 -2
- package/dist/lib/bmad-installer.js +37 -37
- package/dist/lib/terminal.d.ts +2 -0
- package/dist/lib/terminal.js +57 -7
- package/dist/templates/CLAUDE.md +205 -205
- package/dist/templates/_shared/.claude/commands/handoff-resume.md +12 -12
- package/dist/templates/_shared/.claude/commands/handoff.md +12 -12
- package/dist/templates/_shared/.claude/settings.json +65 -65
- package/dist/templates/_shared/.codex/workflows/handoff.md +226 -226
- package/dist/templates/_shared/.windsurf/workflows/handoff.md +226 -226
- package/dist/templates/_shared/handoff-system/CLAUDE.md +421 -421
- package/dist/templates/_shared/handoff-system/lib/document-generator.ts +215 -215
- package/dist/templates/_shared/handoff-system/lib/handoff-reader.ts +158 -158
- package/dist/templates/_shared/handoff-system/scripts/resume_handoff.ts +373 -373
- package/dist/templates/_shared/handoff-system/scripts/save_handoff.ts +469 -469
- package/dist/templates/_shared/handoff-system/workflows/handoff-resume.md +66 -66
- package/dist/templates/_shared/handoff-system/workflows/handoff.md +254 -254
- package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +2 -2
- package/dist/templates/_shared/hooks-ts/archive_plan.ts +159 -159
- package/dist/templates/_shared/hooks-ts/context_monitor.ts +147 -147
- package/dist/templates/_shared/hooks-ts/file-suggestion.ts +128 -128
- package/dist/templates/_shared/hooks-ts/pre_compact.ts +49 -49
- package/dist/templates/_shared/hooks-ts/session_end.ts +196 -196
- package/dist/templates/_shared/hooks-ts/session_start.ts +163 -163
- package/dist/templates/_shared/hooks-ts/task_create_capture.ts +48 -48
- package/dist/templates/_shared/hooks-ts/task_update_capture.ts +74 -74
- package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +93 -93
- package/dist/templates/_shared/lib-ts/CLAUDE.md +367 -367
- package/dist/templates/_shared/lib-ts/base/atomic-write.ts +138 -138
- package/dist/templates/_shared/lib-ts/base/constants.ts +303 -303
- package/dist/templates/_shared/lib-ts/base/git-state.ts +58 -58
- package/dist/templates/_shared/lib-ts/base/hook-utils.ts +582 -582
- package/dist/templates/_shared/lib-ts/base/inference.ts +301 -301
- package/dist/templates/_shared/lib-ts/base/logger.ts +247 -247
- package/dist/templates/_shared/lib-ts/base/state-io.ts +202 -202
- package/dist/templates/_shared/lib-ts/base/stop-words.ts +184 -184
- package/dist/templates/_shared/lib-ts/base/utils.ts +184 -184
- package/dist/templates/_shared/lib-ts/context/context-formatter.ts +566 -566
- package/dist/templates/_shared/lib-ts/context/context-selector.ts +524 -524
- package/dist/templates/_shared/lib-ts/context/context-store.ts +712 -712
- package/dist/templates/_shared/lib-ts/context/plan-manager.ts +312 -312
- package/dist/templates/_shared/lib-ts/context/task-tracker.ts +185 -185
- package/dist/templates/_shared/lib-ts/package.json +20 -20
- package/dist/templates/_shared/lib-ts/templates/formatters.ts +102 -102
- package/dist/templates/_shared/lib-ts/templates/plan-context.ts +58 -58
- package/dist/templates/_shared/lib-ts/tsconfig.json +13 -13
- package/dist/templates/_shared/lib-ts/types.ts +186 -186
- package/dist/templates/_shared/scripts/resolve_context.ts +33 -33
- package/dist/templates/_shared/scripts/status_line.ts +690 -690
- package/dist/templates/cc-native/.claude/commands/cc-native/rlm/ask.md +136 -136
- package/dist/templates/cc-native/.claude/commands/cc-native/rlm/index.md +21 -21
- package/dist/templates/cc-native/.claude/commands/cc-native/rlm/overview.md +56 -56
- package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +10 -10
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/fix.md +8 -8
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/implement.md +8 -8
- package/dist/templates/cc-native/.windsurf/workflows/cc-native/research.md +8 -8
- package/dist/templates/cc-native/CC-NATIVE-README.md +189 -189
- package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +304 -304
- package/dist/templates/cc-native/_cc-native/agents/CLAUDE.md +143 -143
- package/dist/templates/cc-native/_cc-native/agents/PLAN-ORCHESTRATOR.md +213 -213
- package/dist/templates/cc-native/_cc-native/agents/plan-questions/PLAN-QUESTIONER.md +70 -70
- package/dist/templates/cc-native/_cc-native/cc-native.config.json +96 -96
- package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +247 -247
- package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +76 -76
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +54 -54
- package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +51 -51
- package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +53 -53
- package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +61 -61
- package/dist/templates/cc-native/_cc-native/lib-ts/agent-selection.ts +163 -163
- package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +156 -156
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/format.ts +597 -597
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/index.ts +26 -26
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/tracker.ts +107 -107
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts/write.ts +119 -119
- package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +21 -21
- package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +319 -319
- package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +144 -144
- package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +57 -57
- package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +83 -83
- package/dist/templates/cc-native/_cc-native/lib-ts/corroboration.ts +119 -119
- package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +79 -79
- package/dist/templates/cc-native/_cc-native/lib-ts/graduation.ts +132 -132
- package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +116 -116
- package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +168 -168
- package/dist/templates/cc-native/_cc-native/lib-ts/orchestrator.ts +70 -70
- package/dist/templates/cc-native/_cc-native/lib-ts/output-builder.ts +130 -130
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +80 -80
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +41 -41
- package/dist/templates/cc-native/_cc-native/lib-ts/plan-questions.ts +101 -101
- package/dist/templates/cc-native/_cc-native/lib-ts/review-pipeline.ts +511 -511
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/agent.ts +71 -71
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/base/base-agent.ts +217 -217
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/index.ts +12 -12
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/claude-agent.ts +66 -66
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/codex-agent.ts +184 -184
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/gemini-agent.ts +39 -39
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/providers/orchestrator-claude-agent.ts +196 -196
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/schemas.ts +201 -201
- package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/types.ts +21 -21
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/CLAUDE.md +480 -480
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +287 -287
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +148 -148
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +54 -54
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +58 -58
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +208 -208
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +460 -460
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +446 -446
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +280 -280
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +274 -274
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +201 -201
- package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +278 -278
- package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +184 -184
- package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +275 -275
- package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +18 -18
- package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +329 -329
- package/dist/templates/cc-native/_cc-native/lib-ts/verdict.ts +72 -72
- package/dist/templates/cc-native/_cc-native/workflows/specdev.md +9 -9
- package/oclif.manifest.json +1 -1
- package/package.json +108 -108
- package/dist/templates/cc-native/_cc-native/lib-ts/nul +0 -3
|
@@ -1,201 +1,201 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RLM (Recursive Language Model) — Session Transcript Memory
|
|
3
|
-
*
|
|
4
|
-
* Type definitions and constants for indexing, searching, and loading
|
|
5
|
-
* Claude Code session transcripts across all projects.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { homedir } from "os";
|
|
9
|
-
import { join } from "path";
|
|
10
|
-
import { getProjectRoot } from "../../../_shared/lib-ts/base/constants.js";
|
|
11
|
-
import { loadConfig } from "../config.js";
|
|
12
|
-
|
|
13
|
-
// ---------------------------------------------------------------------------
|
|
14
|
-
// Constants
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
|
|
17
|
-
/** Bump when index fields change. Search skips indexes with older versions. */
|
|
18
|
-
export const CURRENT_SCHEMA_VERSION = 1;
|
|
19
|
-
|
|
20
|
-
/** Root of all Claude Code project transcripts. */
|
|
21
|
-
export const CLAUDE_PROJECTS_DIR = join(homedir(), ".claude", "projects");
|
|
22
|
-
|
|
23
|
-
/** Root of the RLM index cache. */
|
|
24
|
-
export const RLM_INDEX_DIR = join(homedir(), ".claude", "rlm-index");
|
|
25
|
-
|
|
26
|
-
/** Max chars returned by TranscriptLoader for a single segment. */
|
|
27
|
-
export const MAX_LOADER_CHARS = 50_000;
|
|
28
|
-
|
|
29
|
-
/** How many top results TranscriptSearcher keeps during scoring. */
|
|
30
|
-
export const TOP_N_HEAP = 50;
|
|
31
|
-
|
|
32
|
-
// ---------------------------------------------------------------------------
|
|
33
|
-
// Search scoring weights
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
|
-
|
|
36
|
-
export const WEIGHT = {
|
|
37
|
-
summary: 3.0,
|
|
38
|
-
segmentTopic: 3.0,
|
|
39
|
-
keywords: 2.0,
|
|
40
|
-
filesTouched: 2.0,
|
|
41
|
-
commandsRun: 1.5,
|
|
42
|
-
toolCalls: 1.0,
|
|
43
|
-
} as const;
|
|
44
|
-
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
// Index types
|
|
47
|
-
// ---------------------------------------------------------------------------
|
|
48
|
-
|
|
49
|
-
export interface IndexSegment {
|
|
50
|
-
lines: [start: number, end: number];
|
|
51
|
-
topic: string;
|
|
52
|
-
keywords: string[];
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export interface SessionIndex {
|
|
56
|
-
schema_version: number;
|
|
57
|
-
session_id: string;
|
|
58
|
-
project: string;
|
|
59
|
-
date: string; // YYYY-MM-DD
|
|
60
|
-
first_timestamp: string; // ISO 8601
|
|
61
|
-
line_count: number;
|
|
62
|
-
summary: string;
|
|
63
|
-
keywords: string[];
|
|
64
|
-
user_message_count: number;
|
|
65
|
-
assistant_message_count: number;
|
|
66
|
-
tool_calls: string[];
|
|
67
|
-
files_touched: string[];
|
|
68
|
-
commands_run: string[];
|
|
69
|
-
source_mtime: number; // ms since epoch
|
|
70
|
-
skipped_lines: number;
|
|
71
|
-
segments: IndexSegment[];
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// ---------------------------------------------------------------------------
|
|
75
|
-
// Search types
|
|
76
|
-
// ---------------------------------------------------------------------------
|
|
77
|
-
|
|
78
|
-
export interface SearchResult {
|
|
79
|
-
session_id: string;
|
|
80
|
-
project: string;
|
|
81
|
-
date: string;
|
|
82
|
-
summary: string;
|
|
83
|
-
score: number;
|
|
84
|
-
matching_segments: IndexSegment[];
|
|
85
|
-
source_path: string; // path to original .jsonl
|
|
86
|
-
source_exists: boolean; // whether the original .jsonl still exists
|
|
87
|
-
index_path: string; // path to .index.json
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// ---------------------------------------------------------------------------
|
|
91
|
-
// Loader types
|
|
92
|
-
// ---------------------------------------------------------------------------
|
|
93
|
-
|
|
94
|
-
export interface LoadedSegment {
|
|
95
|
-
session_id: string;
|
|
96
|
-
project: string;
|
|
97
|
-
line_range: [number, number] | null; // null = full session
|
|
98
|
-
content: string; // formatted transcript text
|
|
99
|
-
truncated: boolean;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// ---------------------------------------------------------------------------
|
|
103
|
-
// Vector / Embedding constants
|
|
104
|
-
// ---------------------------------------------------------------------------
|
|
105
|
-
|
|
106
|
-
export const RLM_VECTOR_DB_PATH = join(homedir(), ".claude", "rlm-vectors.db");
|
|
107
|
-
export const OLLAMA_BASE_URL = "http://localhost:11434";
|
|
108
|
-
export const OLLAMA_EMBED_MODEL = "nomic-embed-text";
|
|
109
|
-
export const EMBED_DIMENSIONS = 768;
|
|
110
|
-
export const VECTOR_TOP_K = 20;
|
|
111
|
-
export const MAX_PARALLEL_SUMMARIZERS = 6;
|
|
112
|
-
|
|
113
|
-
// ---------------------------------------------------------------------------
|
|
114
|
-
// HyDE Configuration
|
|
115
|
-
// ---------------------------------------------------------------------------
|
|
116
|
-
|
|
117
|
-
// Load HyDE config from CC-native config file
|
|
118
|
-
const _ccNativeConfig = (() => {
|
|
119
|
-
try {
|
|
120
|
-
const projectRoot = getProjectRoot();
|
|
121
|
-
const config = loadConfig(join(projectRoot, ".aiwcli"));
|
|
122
|
-
return (config as any)?.rlm?.hyde ?? {};
|
|
123
|
-
} catch {
|
|
124
|
-
return {}; // Graceful fallback if config loading fails
|
|
125
|
-
}
|
|
126
|
-
})();
|
|
127
|
-
|
|
128
|
-
/** Enable HyDE (Hypothetical Document Embeddings) for improved recall. Default: false (opt-in). */
|
|
129
|
-
export const HYDE_ENABLED = _ccNativeConfig.enabled ?? false;
|
|
130
|
-
|
|
131
|
-
/** LLM provider for HyDE generation. Options: "ollama" (local, free) or "claude" (API, costs). */
|
|
132
|
-
export const HYDE_PROVIDER = _ccNativeConfig.provider === "claude" ? "claude" : "ollama";
|
|
133
|
-
|
|
134
|
-
/** Ollama model for HyDE generation. Recommended: qwen2.5:1.5b (fast) or llama3.1:8b (quality). */
|
|
135
|
-
export const HYDE_OLLAMA_MODEL = _ccNativeConfig.ollamaModel ?? "qwen2.5:1.5b";
|
|
136
|
-
|
|
137
|
-
/** Number of hypothetical responses to generate and average. Research standard: 5. */
|
|
138
|
-
export const HYDE_NUM_RESPONSES = _ccNativeConfig.numResponses ?? 5;
|
|
139
|
-
|
|
140
|
-
/** Max tokens per hypothetical response. 200 tokens ≈ 150 words ≈ 2-3 sentences. */
|
|
141
|
-
export const HYDE_MAX_TOKENS = _ccNativeConfig.maxTokens ?? 200;
|
|
142
|
-
|
|
143
|
-
/** Per-response generation timeout in milliseconds. Local models usually respond in 500-1500ms. */
|
|
144
|
-
export const HYDE_TIMEOUT_MS = _ccNativeConfig.timeoutMs ?? 10000;
|
|
145
|
-
|
|
146
|
-
/** Fallback to direct query embedding if HyDE fails? true = graceful degradation (recommended). */
|
|
147
|
-
export const HYDE_FALLBACK_TO_QUERY = _ccNativeConfig.fallbackToQuery ?? true;
|
|
148
|
-
|
|
149
|
-
/** Fallback to Claude API if Ollama unavailable? false = no cost fallback (recommended). */
|
|
150
|
-
export const HYDE_FALLBACK_TO_CLAUDE = _ccNativeConfig.fallbackToClaude ?? false;
|
|
151
|
-
|
|
152
|
-
// ---------------------------------------------------------------------------
|
|
153
|
-
// Vector / Embedding types
|
|
154
|
-
// ---------------------------------------------------------------------------
|
|
155
|
-
|
|
156
|
-
export interface VectorSearchResult {
|
|
157
|
-
chunk_id: number;
|
|
158
|
-
session_id: string;
|
|
159
|
-
project: string;
|
|
160
|
-
segment_index: number;
|
|
161
|
-
line_start: number;
|
|
162
|
-
line_end: number;
|
|
163
|
-
topic: string;
|
|
164
|
-
date: string;
|
|
165
|
-
source_path: string;
|
|
166
|
-
distance: number;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export interface ChunkSummary {
|
|
170
|
-
session_id: string;
|
|
171
|
-
project: string;
|
|
172
|
-
date: string;
|
|
173
|
-
segment_lines: [number, number];
|
|
174
|
-
summary: string;
|
|
175
|
-
source_path: string;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
export interface RankedSession {
|
|
179
|
-
session_id: string;
|
|
180
|
-
project: string;
|
|
181
|
-
date: string;
|
|
182
|
-
relevant: boolean;
|
|
183
|
-
confidence: number;
|
|
184
|
-
topics: string[];
|
|
185
|
-
key_findings: string[];
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
export interface RetrievalResult {
|
|
189
|
-
query: string;
|
|
190
|
-
synthesis: string;
|
|
191
|
-
sources: RankedSession[];
|
|
192
|
-
stage_timings: {
|
|
193
|
-
hyde_ms?: number; // Only present if HyDE was used
|
|
194
|
-
embed_query_ms: number;
|
|
195
|
-
vector_search_ms: number;
|
|
196
|
-
summarize_ms: number;
|
|
197
|
-
rank_ms: number;
|
|
198
|
-
synthesize_ms: number;
|
|
199
|
-
total_ms: number;
|
|
200
|
-
};
|
|
201
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* RLM (Recursive Language Model) — Session Transcript Memory
|
|
3
|
+
*
|
|
4
|
+
* Type definitions and constants for indexing, searching, and loading
|
|
5
|
+
* Claude Code session transcripts across all projects.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { homedir } from "os";
|
|
9
|
+
import { join } from "path";
|
|
10
|
+
import { getProjectRoot } from "../../../_shared/lib-ts/base/constants.js";
|
|
11
|
+
import { loadConfig } from "../config.js";
|
|
12
|
+
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Constants
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
/** Bump when index fields change. Search skips indexes with older versions. */
|
|
18
|
+
export const CURRENT_SCHEMA_VERSION = 1;
|
|
19
|
+
|
|
20
|
+
/** Root of all Claude Code project transcripts. */
|
|
21
|
+
export const CLAUDE_PROJECTS_DIR = join(homedir(), ".claude", "projects");
|
|
22
|
+
|
|
23
|
+
/** Root of the RLM index cache. */
|
|
24
|
+
export const RLM_INDEX_DIR = join(homedir(), ".claude", "rlm-index");
|
|
25
|
+
|
|
26
|
+
/** Max chars returned by TranscriptLoader for a single segment. */
|
|
27
|
+
export const MAX_LOADER_CHARS = 50_000;
|
|
28
|
+
|
|
29
|
+
/** How many top results TranscriptSearcher keeps during scoring. */
|
|
30
|
+
export const TOP_N_HEAP = 50;
|
|
31
|
+
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Search scoring weights
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
|
|
36
|
+
export const WEIGHT = {
|
|
37
|
+
summary: 3.0,
|
|
38
|
+
segmentTopic: 3.0,
|
|
39
|
+
keywords: 2.0,
|
|
40
|
+
filesTouched: 2.0,
|
|
41
|
+
commandsRun: 1.5,
|
|
42
|
+
toolCalls: 1.0,
|
|
43
|
+
} as const;
|
|
44
|
+
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Index types
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
|
|
49
|
+
export interface IndexSegment {
|
|
50
|
+
lines: [start: number, end: number];
|
|
51
|
+
topic: string;
|
|
52
|
+
keywords: string[];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface SessionIndex {
|
|
56
|
+
schema_version: number;
|
|
57
|
+
session_id: string;
|
|
58
|
+
project: string;
|
|
59
|
+
date: string; // YYYY-MM-DD
|
|
60
|
+
first_timestamp: string; // ISO 8601
|
|
61
|
+
line_count: number;
|
|
62
|
+
summary: string;
|
|
63
|
+
keywords: string[];
|
|
64
|
+
user_message_count: number;
|
|
65
|
+
assistant_message_count: number;
|
|
66
|
+
tool_calls: string[];
|
|
67
|
+
files_touched: string[];
|
|
68
|
+
commands_run: string[];
|
|
69
|
+
source_mtime: number; // ms since epoch
|
|
70
|
+
skipped_lines: number;
|
|
71
|
+
segments: IndexSegment[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Search types
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
|
|
78
|
+
export interface SearchResult {
|
|
79
|
+
session_id: string;
|
|
80
|
+
project: string;
|
|
81
|
+
date: string;
|
|
82
|
+
summary: string;
|
|
83
|
+
score: number;
|
|
84
|
+
matching_segments: IndexSegment[];
|
|
85
|
+
source_path: string; // path to original .jsonl
|
|
86
|
+
source_exists: boolean; // whether the original .jsonl still exists
|
|
87
|
+
index_path: string; // path to .index.json
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
// Loader types
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
|
|
94
|
+
export interface LoadedSegment {
|
|
95
|
+
session_id: string;
|
|
96
|
+
project: string;
|
|
97
|
+
line_range: [number, number] | null; // null = full session
|
|
98
|
+
content: string; // formatted transcript text
|
|
99
|
+
truncated: boolean;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Vector / Embedding constants
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
|
|
106
|
+
export const RLM_VECTOR_DB_PATH = join(homedir(), ".claude", "rlm-vectors.db");
|
|
107
|
+
export const OLLAMA_BASE_URL = "http://localhost:11434";
|
|
108
|
+
export const OLLAMA_EMBED_MODEL = "nomic-embed-text";
|
|
109
|
+
export const EMBED_DIMENSIONS = 768;
|
|
110
|
+
export const VECTOR_TOP_K = 20;
|
|
111
|
+
export const MAX_PARALLEL_SUMMARIZERS = 6;
|
|
112
|
+
|
|
113
|
+
// ---------------------------------------------------------------------------
|
|
114
|
+
// HyDE Configuration
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
|
|
117
|
+
// Load HyDE config from CC-native config file
|
|
118
|
+
const _ccNativeConfig = (() => {
|
|
119
|
+
try {
|
|
120
|
+
const projectRoot = getProjectRoot();
|
|
121
|
+
const config = loadConfig(join(projectRoot, ".aiwcli"));
|
|
122
|
+
return (config as any)?.rlm?.hyde ?? {};
|
|
123
|
+
} catch {
|
|
124
|
+
return {}; // Graceful fallback if config loading fails
|
|
125
|
+
}
|
|
126
|
+
})();
|
|
127
|
+
|
|
128
|
+
/** Enable HyDE (Hypothetical Document Embeddings) for improved recall. Default: false (opt-in). */
|
|
129
|
+
export const HYDE_ENABLED = _ccNativeConfig.enabled ?? false;
|
|
130
|
+
|
|
131
|
+
/** LLM provider for HyDE generation. Options: "ollama" (local, free) or "claude" (API, costs). */
|
|
132
|
+
export const HYDE_PROVIDER = _ccNativeConfig.provider === "claude" ? "claude" : "ollama";
|
|
133
|
+
|
|
134
|
+
/** Ollama model for HyDE generation. Recommended: qwen2.5:1.5b (fast) or llama3.1:8b (quality). */
|
|
135
|
+
export const HYDE_OLLAMA_MODEL = _ccNativeConfig.ollamaModel ?? "qwen2.5:1.5b";
|
|
136
|
+
|
|
137
|
+
/** Number of hypothetical responses to generate and average. Research standard: 5. */
|
|
138
|
+
export const HYDE_NUM_RESPONSES = _ccNativeConfig.numResponses ?? 5;
|
|
139
|
+
|
|
140
|
+
/** Max tokens per hypothetical response. 200 tokens ≈ 150 words ≈ 2-3 sentences. */
|
|
141
|
+
export const HYDE_MAX_TOKENS = _ccNativeConfig.maxTokens ?? 200;
|
|
142
|
+
|
|
143
|
+
/** Per-response generation timeout in milliseconds. Local models usually respond in 500-1500ms. */
|
|
144
|
+
export const HYDE_TIMEOUT_MS = _ccNativeConfig.timeoutMs ?? 10000;
|
|
145
|
+
|
|
146
|
+
/** Fallback to direct query embedding if HyDE fails? true = graceful degradation (recommended). */
|
|
147
|
+
export const HYDE_FALLBACK_TO_QUERY = _ccNativeConfig.fallbackToQuery ?? true;
|
|
148
|
+
|
|
149
|
+
/** Fallback to Claude API if Ollama unavailable? false = no cost fallback (recommended). */
|
|
150
|
+
export const HYDE_FALLBACK_TO_CLAUDE = _ccNativeConfig.fallbackToClaude ?? false;
|
|
151
|
+
|
|
152
|
+
// ---------------------------------------------------------------------------
|
|
153
|
+
// Vector / Embedding types
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
export interface VectorSearchResult {
|
|
157
|
+
chunk_id: number;
|
|
158
|
+
session_id: string;
|
|
159
|
+
project: string;
|
|
160
|
+
segment_index: number;
|
|
161
|
+
line_start: number;
|
|
162
|
+
line_end: number;
|
|
163
|
+
topic: string;
|
|
164
|
+
date: string;
|
|
165
|
+
source_path: string;
|
|
166
|
+
distance: number;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface ChunkSummary {
|
|
170
|
+
session_id: string;
|
|
171
|
+
project: string;
|
|
172
|
+
date: string;
|
|
173
|
+
segment_lines: [number, number];
|
|
174
|
+
summary: string;
|
|
175
|
+
source_path: string;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export interface RankedSession {
|
|
179
|
+
session_id: string;
|
|
180
|
+
project: string;
|
|
181
|
+
date: string;
|
|
182
|
+
relevant: boolean;
|
|
183
|
+
confidence: number;
|
|
184
|
+
topics: string[];
|
|
185
|
+
key_findings: string[];
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface RetrievalResult {
|
|
189
|
+
query: string;
|
|
190
|
+
synthesis: string;
|
|
191
|
+
sources: RankedSession[];
|
|
192
|
+
stage_timings: {
|
|
193
|
+
hyde_ms?: number; // Only present if HyDE was used
|
|
194
|
+
embed_query_ms: number;
|
|
195
|
+
vector_search_ms: number;
|
|
196
|
+
summarize_ms: number;
|
|
197
|
+
rank_ms: number;
|
|
198
|
+
synthesize_ms: number;
|
|
199
|
+
total_ms: number;
|
|
200
|
+
};
|
|
201
|
+
}
|