diff --git a/.gitignore b/.gitignore index f8c015d..027dc36 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,9 @@ dist/ dist-test/ *.log .DS_Store +*.sh + +#graphify +graphify-out/manifest.json # mtime-based, breaks after git clone +graphify-out/cost.json # local only +# graphify-out/cache/ # optional: commit for speed, skip to keep repo small \ No newline at end of file diff --git a/.graphifyignore b/.graphifyignore new file mode 100644 index 0000000..80beea2 --- /dev/null +++ b/.graphifyignore @@ -0,0 +1,9 @@ +# .graphifyignore +node_modules/ +dist/ +*.generated.py + +# only index src/, ignore everything else +* +!src/ +!src/** \ No newline at end of file diff --git a/docs/superpowers/specs/2026-05-03-setup-wizard-design.md b/docs/superpowers/specs/2026-05-03-setup-wizard-design.md new file mode 100644 index 0000000..9c6bf67 --- /dev/null +++ b/docs/superpowers/specs/2026-05-03-setup-wizard-design.md @@ -0,0 +1,135 @@ +# `claudely setup` — Interactive Configuration Wizard + +## Summary + +Add a `claudely setup` subcommand that walks the user through configuring +their provider, base URL, auth token, and default model via an interactive +wizard. Values are persisted to a platform-native config file and loaded on +every subsequent `claudely` invocation, slotting into the resolution chain +below CLI flags and env vars but above hardcoded provider defaults. + +## Config file location + +Platform-native paths, no new dependencies: + +| Platform | Path | +|----------|------| +| Linux | `$XDG_CONFIG_HOME/claudely/config.json` (default `~/.config/claudely/`) | +| macOS | `~/Library/Application Support/claudely/config.json` | +| Windows | `%APPDATA%\claudely\config.json` | + +## Config shape + +```ts +interface ClaudelyConfig { + provider?: string; + baseUrl?: string; + token?: string; + model?: string; +} +``` + +All fields optional. Missing fields fall through to the next source in the +precedence chain. + +## Precedence + +For each setting, highest wins: + +``` +CLI flag > env var > config file > provider default +``` + +Examples: +- `provider`: `--provider` > `$CLAUDELY_PROVIDER` > `config.provider` > `"lmstudio"` +- `baseUrl`: `--base-url` > `$CLAUDELY_BASE_URL` > `config.baseUrl` > `provider.defaultBaseUrl()` +- `token`: `--token` > `$CLAUDELY_TOKEN` > `config.token` > `provider.defaultToken` +- `model` (non-resume): `--model` > `$CLAUDELY_MODEL` > `config.model` > picker + +## New files + +### `src/config.ts` — All config I/O in one place + +Consolidates all config-reading logic. `loadSettings()` moves here from +`compat.ts` so that disk I/O and compat business logic are decoupled. + +- `configDir(): string` — platform-aware directory resolution +- `configPath(): string` — `configDir() + "/config.json"` +- `loadConfig(): ClaudelyConfig` — reads and parses JSON; returns `{}` if + file is missing or corrupt (logs a warning on corrupt) +- `saveConfig(config: ClaudelyConfig): void` — writes pretty-printed JSON; + creates directory with `{ recursive: true }` if needed +- `loadSettings(settingsPath: string)` — moved from `compat.ts`; reads + Claude Code's `~/.claude/settings.json` and returns the parsed object + (or `undefined` on missing/corrupt) + +### `src/setup.ts` — Interactive wizard + +Exported entry point: `runSetup(): Promise` (returns exit code). + +Flow: + +1. **Load existing config** — pre-fill prompts with saved values (if any) +2. **Pick provider** — `@inquirer/prompts` select over `PROVIDER_NAMES`, + default = existing config value or `lmstudio` +3. **Base URL** — input prompt, pre-filled with `config.baseUrl` or the + selected provider's default +4. **Auth token** — input prompt, pre-filled with `config.token` or the + provider's default +5. **Test connection** — `fetch(baseUrl + "/v1/models")` with a 5 s timeout. + On success: print model count. On failure: warn but continue (server may + not be running yet — config is still valid to save) +6. **Pick default model** — if connection succeeded and models were returned, + show the model picker (reuse `listForProvider`). If connection failed, + offer a text input for manual model ID entry (or Enter to skip) +7. **Confirm & save** — print a summary table of what will be written, then + call `saveConfig()` + +Running `claudely setup` when a config already exists shows current values +as prompt defaults so the user can accept (Enter) or edit inline. + +## Changes to existing files + +### `src/compat.ts` — Decouple I/O from business logic + +- **Remove** `loadSettings()` (moves to `config.ts`) +- **Remove** `import { readFileSync } from "node:fs"` (no longer needed) +- `applyCompat()`, `INCOMPATIBILITIES`, `isAnthropicHost()` stay unchanged +- Re-export `loadSettings` from `config.ts` for backwards compat during + transition, or update all import sites directly (preferred) + +### `src/cli.ts` + +- **Import change** — `loadSettings` imported from `"./config.js"` instead + of `"./compat.js"` +- **Subcommand dispatch** — before `parseArgs`, check if + `process.argv[2] === "setup"`. If so, import and call `runSetup()`, then + exit with its return code. +- **Config loading** — after `parseArgs`, call `loadConfig()` and thread the + result into provider/baseUrl/token/model resolution per the precedence + table above. +- **HELP text** — add `claudely setup` to the usage block. + +## Testing + +### `src/config.test.ts` + +- `configDir()` returns correct path per platform (mock `process.platform`) +- `loadConfig()` / `saveConfig()` round-trip through a temp directory +- `loadConfig()` returns `{}` on missing file +- `loadConfig()` returns `{}` and warns on corrupt JSON +- `saveConfig()` creates parent directories if missing +- `loadSettings()` — existing tests from `compat.test.ts` that cover + `loadSettings` move here (or compat.test.ts imports from config.ts) + +### Setup wizard + +The wizard is interactive (`@inquirer/prompts`), so it is not unit-tested +directly. The config layer covers the persistence logic; the wizard is +verified via manual smoke testing. + +## Out of scope + +- Per-project config (`.claudely/config.json` in cwd) — future enhancement +- Config migration from env-var-only setups +- `claudely config get/set` subcommands — future enhancement diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md new file mode 100644 index 0000000..960463c --- /dev/null +++ b/graphify-out/GRAPH_REPORT.md @@ -0,0 +1,149 @@ +# Graph Report - /home/cesar/dev/claudely (2026-05-03) + +## Corpus Check +- Corpus is ~14,888 words - fits in a single context window. You may not need a graph. + +## Summary +- 165 nodes · 210 edges · 15 communities detected +- Extraction: 79% EXTRACTED · 21% INFERRED · 0% AMBIGUOUS · INFERRED: 44 edges (avg confidence: 0.83) +- Token cost: 0 input · 0 output + +## Community Hubs (Navigation) +- [[_COMMUNITY_CLI Core & Config|CLI Core & Config]] +- [[_COMMUNITY_Compiled Output (dist-test)|Compiled Output (dist-test)]] +- [[_COMMUNITY_Setup Wizard Spec|Setup Wizard Spec]] +- [[_COMMUNITY_Source Modules & Tests|Source Modules & Tests]] +- [[_COMMUNITY_Lister Integration Tests|Lister Integration Tests]] +- [[_COMMUNITY_Provider & Model Discovery|Provider & Model Discovery]] +- [[_COMMUNITY_Test Helpers & Mocking|Test Helpers & Mocking]] +- [[_COMMUNITY_Session Resume Logic|Session Resume Logic]] +- [[_COMMUNITY_CLI-Lister Bridge|CLI-Lister Bridge]] +- [[_COMMUNITY_Compatibility Layer|Compatibility Layer]] +- [[_COMMUNITY_Version Tests (dist)|Version Tests (dist)]] +- [[_COMMUNITY_Help Text|Help Text]] +- [[_COMMUNITY_ModelEntry Type|ModelEntry Type]] +- [[_COMMUNITY_Runner Type|Runner Type]] +- [[_COMMUNITY_RestoreFetch Helper|RestoreFetch Helper]] + +## God Nodes (most connected - your core abstractions) +1. `main()` - 21 edges +2. `main()` - 10 edges +3. `main()` - 10 edges +4. `PROVIDERS registry` - 8 edges +5. `listLmStudio()` - 6 edges +6. `listOllama()` - 6 edges +7. `listV1Models()` - 6 edges +8. `claudely setup -- Interactive Configuration Wizard` - 6 edges +9. `listForProvider()` - 5 edges +10. `listV1Models()` - 5 edges + +## Surprising Connections (you probably didn't know these) +- `src/config.ts -- Config persistence layer` --semantically_similar_to--> `Compatibility layer (applyCompat, loadSettings, INCOMPATIBILITIES)` [INFERRED] [semantically similar] + docs/superpowers/specs/2026-05-03-setup-wizard-design.md → dist-test/compat.js +- `Setting resolution precedence chain` --semantically_similar_to--> `Auto-resume on bare invocation feature` [INFERRED] [semantically similar] + docs/superpowers/specs/2026-05-03-setup-wizard-design.md → dist-test/cli.js +- `main()` --implemented_by--> `KV-cache speedup via CLAUDE_CODE_ATTRIBUTION_HEADER=0` [EXTRACTED] + src/cli.ts → README.md +- `main()` --implemented_by--> `Setting resolution precedence chain` [INFERRED] + src/cli.ts → docs/superpowers/specs/2026-05-03-setup-wizard-design.md +- `PROVIDERS registry` --reads--> `src/setup.ts -- Interactive wizard (runSetup)` [EXTRACTED] + src/providers.ts → docs/superpowers/specs/2026-05-03-setup-wizard-design.md + +## Hyperedges (group relationships) +- **config.ts consolidates all config I/O functions** — setup_config_ts, setup_load_config, setup_save_config, setup_config_dir, setup_config_path, setup_load_settings [INFERRED 1.00] +- **Platform-native config file locations resolved by configDir()** — setup_config_file_linux, setup_config_file_macos, setup_config_file_windows [INFERRED 1.00] +- **loadSettings decoupling: moved from compat.ts to config.ts, cli.ts import updated** — setup_cli_ts, setup_compat_ts, setup_config_ts [INFERRED 1.00] + +## Communities + +### Community 0 - "CLI Core & Config" +Cohesion: 0.08 +Nodes (27): FlagSpec interface, Argument splitter (splitArgs), splitArgs(), Auto-resume on bare invocation feature, FLAG_SPEC, main(), Compatibility layer (applyCompat, loadSettings, INCOMPATIBILITIES), Arg splitting pattern (own vs claude passthrough) (+19 more) + +### Community 1 - "Compiled Output (dist-test)" +Cohesion: 0.18 +Nodes (14): splitArgs(), main(), applyCompat(), loadSettings(), assembleClaudeArgv(), encodeCwdForClaude(), hasRecentSessionForCwd(), isResumeIntent() (+6 more) + +### Community 2 - "Setup Wizard Spec" +Cohesion: 0.14 +Nodes (20): ClaudelyConfig, src/cli.ts, src/compat.ts, configDir(), Linux config path, macOS config path, Windows config path, configPath() (+12 more) + +### Community 3 - "Source Modules & Tests" +Cohesion: 0.15 +Nodes (3): probeClaudeVersion(), readClaudelyVersion(), renderVersion() + +### Community 4 - "Lister Integration Tests" +Cohesion: 0.16 +Nodes (3): listLmStudio(), listOllama(), listV1Models() + +### Community 5 - "Provider & Model Discovery" +Cohesion: 0.23 +Nodes (15): listForProvider(), Auth env-style pattern (auth_token vs api_key), Lister fallback pattern (CLI tool -> /v1/models HTTP), Provider env-style auth (auth_token vs api_key), listLmStudio(), listOllama(), listV1Models(), custom provider (+7 more) + +### Community 6 - "Test Helpers & Mocking" +Cohesion: 0.22 +Nodes (3): mockV1Fallback(), mockFetch(), mockV1Fallback() + +### Community 7 - "Session Resume Logic" +Cohesion: 0.32 +Nodes (5): encodeCwdForClaude(), hasRecentSessionForCwd(), isResumeIntent(), shouldAutoResume(), seedSessionFile() + +### Community 8 - "CLI-Lister Bridge" +Cohesion: 0.57 +Nodes (5): listForProvider(), listLmStudio(), listOllama(), listV1Models(), listForProvider() + +### Community 9 - "Compatibility Layer" +Cohesion: 0.5 +Nodes (4): applyCompat(), INCOMPATIBILITIES table, Incompatibility interface, Settings incompatibility clamping pattern + +### Community 17 - "Version Tests (dist)" +Cohesion: 1.0 +Nodes (1): HELP text + +### Community 18 - "Help Text" +Cohesion: 1.0 +Nodes (1): ModelEntry interface + +### Community 19 - "ModelEntry Type" +Cohesion: 1.0 +Nodes (1): Runner type + +### Community 20 - "Runner Type" +Cohesion: 1.0 +Nodes (1): SplitResult interface + +### Community 23 - "RestoreFetch Helper" +Cohesion: 1.0 +Nodes (1): claudely - launch Claude Code against local LLM + +## Knowledge Gaps +- **18 isolated node(s):** `HELP text`, `ModelEntry interface`, `Runner type`, `Incompatibility interface`, `FlagSpec interface` (+13 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **Thin community `Version Tests (dist)`** (1 nodes): `HELP text` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Help Text`** (1 nodes): `ModelEntry interface` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `ModelEntry Type`** (1 nodes): `Runner type` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Runner Type`** (1 nodes): `SplitResult interface` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `RestoreFetch Helper`** (1 nodes): `claudely - launch Claude Code against local LLM` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `main()` connect `CLI Core & Config` to `Compatibility Layer`, `Provider & Model Discovery`?** + _High betweenness centrality (0.078) - this node is a cross-community bridge._ +- **Why does `main()` connect `Compiled Output (dist-test)` to `CLI-Lister Bridge`, `Source Modules & Tests`?** + _High betweenness centrality (0.075) - this node is a cross-community bridge._ +- **Why does `mockV1Fallback()` connect `Test Helpers & Mocking` to `Lister Integration Tests`?** + _High betweenness centrality (0.039) - this node is a cross-community bridge._ +- **Are the 8 inferred relationships involving `main()` (e.g. with `splitArgs()` and `renderVersion()`) actually correct?** + _`main()` has 8 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 8 inferred relationships involving `main()` (e.g. with `splitArgs()` and `loadSettings()`) actually correct?** + _`main()` has 8 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `HELP text`, `ModelEntry interface`, `Runner type` to the rest of the system?** + _18 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `CLI Core & Config` be split into smaller, more focused modules?** + _Cohesion score 0.08 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html new file mode 100644 index 0000000..9fbe2de --- /dev/null +++ b/graphify-out/graph.html @@ -0,0 +1,276 @@ + + + + +graphify - graphify-out/graph.html + + + + +
+ + + + + \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json new file mode 100644 index 0000000..220572a --- /dev/null +++ b/graphify-out/graph.json @@ -0,0 +1,4288 @@ +{ + "directed": false, + "multigraph": false, + "graph": { + "hyperedges": [ + { + "nodes": [ + "setup_config_ts", + "setup_load_config", + "setup_save_config", + "setup_config_dir", + "setup_config_path", + "setup_load_settings" + ], + "label": "config.ts consolidates all config I/O functions", + "type": "EXTRACTED", + "confidence_score": 1.0 + }, + { + "nodes": [ + "setup_config_file_linux", + "setup_config_file_macos", + "setup_config_file_windows" + ], + "label": "Platform-native config file locations resolved by configDir()", + "type": "EXTRACTED", + "confidence_score": 1.0 + }, + { + "nodes": [ + "setup_cli_ts", + "setup_compat_ts", + "setup_config_ts" + ], + "label": "loadSettings decoupling: moved from compat.ts to config.ts, cli.ts import updated", + "type": "EXTRACTED", + "confidence_score": 1.0 + } + ] + }, + "nodes": [ + { + "label": "listers.ts", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "L1", + "community": 4, + "norm_label": "listers.ts", + "id": "src_listers_ts" + }, + { + "label": "listLmStudio()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "L30", + "community": 4, + "norm_label": "listlmstudio()", + "id": "src_listers_listlmstudio" + }, + { + "label": "listOllama()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "L62", + "community": 4, + "norm_label": "listollama()", + "id": "src_listers_listollama" + }, + { + "label": "listV1Models()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "L89", + "community": 4, + "norm_label": "listv1models()", + "id": "src_listers_listv1models" + }, + { + "label": "providers.ts", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "L1", + "community": 3, + "norm_label": "providers.ts", + "id": "src_providers_ts" + }, + { + "label": "argsplit.test.ts", + "file_type": "code", + "source_file": "src/argsplit.test.ts", + "source_location": "L1", + "community": 3, + "norm_label": "argsplit.test.ts", + "id": "src_argsplit_test_ts" + }, + { + "label": "compat.test.ts", + "file_type": "code", + "source_file": "src/compat.test.ts", + "source_location": "L1", + "community": 3, + "norm_label": "compat.test.ts", + "id": "src_compat_test_ts" + }, + { + "label": "argsplit.ts", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": "L1", + "community": 3, + "norm_label": "argsplit.ts", + "id": "src_argsplit_ts" + }, + { + "label": "splitArgs()", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": "L12", + "community": 3, + "norm_label": "splitargs()", + "id": "src_argsplit_splitargs" + }, + { + "label": "compat.ts", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "L1", + "community": 3, + "norm_label": "compat.ts", + "id": "src_compat_ts" + }, + { + "label": "loadSettings()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "L9", + "community": 3, + "norm_label": "loadsettings()", + "id": "src_compat_loadsettings" + }, + { + "label": "isAnthropicHost()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "L34", + "community": 3, + "norm_label": "isanthropichost()", + "id": "src_compat_isanthropichost" + }, + { + "label": "applyCompat()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "L54", + "community": 3, + "norm_label": "applycompat()", + "id": "src_compat_applycompat" + }, + { + "label": "cli.integration.test.ts", + "file_type": "code", + "source_file": "src/cli.integration.test.ts", + "source_location": "L1", + "community": 11, + "norm_label": "cli.integration.test.ts", + "id": "src_cli_integration_test_ts" + }, + { + "label": "emptyEnv()", + "file_type": "code", + "source_file": "src/cli.integration.test.ts", + "source_location": "L21", + "community": 11, + "norm_label": "emptyenv()", + "id": "src_cli_integration_test_emptyenv" + }, + { + "label": "cli.ts", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "L1", + "community": 3, + "norm_label": "cli.ts", + "id": "src_cli_ts" + }, + { + "label": "listForProvider()", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "L91", + "community": 8, + "norm_label": "listforprovider()", + "id": "src_cli_listforprovider" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "L106", + "community": 1, + "norm_label": "main()", + "id": "src_cli_main" + }, + { + "label": "resume.test.ts", + "file_type": "code", + "source_file": "src/resume.test.ts", + "source_location": "L1", + "community": 7, + "norm_label": "resume.test.ts", + "id": "src_resume_test_ts" + }, + { + "label": "seedSessionFile()", + "file_type": "code", + "source_file": "src/resume.test.ts", + "source_location": "L145", + "community": 7, + "norm_label": "seedsessionfile()", + "id": "src_resume_test_seedsessionfile" + }, + { + "label": "resume.ts", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L1", + "community": 7, + "norm_label": "resume.ts", + "id": "src_resume_ts" + }, + { + "label": "isResumeIntent()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L23", + "community": 7, + "norm_label": "isresumeintent()", + "id": "src_resume_isresumeintent" + }, + { + "label": "assembleClaudeArgv()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L40", + "community": 7, + "norm_label": "assembleclaudeargv()", + "id": "src_resume_assembleclaudeargv" + }, + { + "label": "encodeCwdForClaude()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L48", + "community": 7, + "norm_label": "encodecwdforclaude()", + "id": "src_resume_encodecwdforclaude" + }, + { + "label": "hasRecentSessionForCwd()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L57", + "community": 7, + "norm_label": "hasrecentsessionforcwd()", + "id": "src_resume_hasrecentsessionforcwd" + }, + { + "label": "shouldAutoResume()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "L79", + "community": 7, + "norm_label": "shouldautoresume()", + "id": "src_resume_shouldautoresume" + }, + { + "label": "version.test.ts", + "file_type": "code", + "source_file": "src/version.test.ts", + "source_location": "L1", + "community": 3, + "norm_label": "version.test.ts", + "id": "src_version_test_ts" + }, + { + "label": "version.ts", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "L1", + "community": 3, + "norm_label": "version.ts", + "id": "src_version_ts" + }, + { + "label": "readClaudelyVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "L15", + "community": 3, + "norm_label": "readclaudelyversion()", + "id": "src_version_readclaudelyversion" + }, + { + "label": "probeClaudeVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "L29", + "community": 3, + "norm_label": "probeclaudeversion()", + "id": "src_version_probeclaudeversion" + }, + { + "label": "renderVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "L41", + "community": 3, + "norm_label": "renderversion()", + "id": "src_version_renderversion" + }, + { + "label": "listers.integration.test.ts", + "file_type": "code", + "source_file": "src/listers.integration.test.ts", + "source_location": "L1", + "community": 4, + "norm_label": "listers.integration.test.ts", + "id": "src_listers_integration_test_ts" + }, + { + "label": "installFake()", + "file_type": "code", + "source_file": "src/listers.integration.test.ts", + "source_location": "L40", + "community": 4, + "norm_label": "installfake()", + "id": "src_listers_integration_test_installfake" + }, + { + "label": "prependToPath()", + "file_type": "code", + "source_file": "src/listers.integration.test.ts", + "source_location": "L45", + "community": 4, + "norm_label": "prependtopath()", + "id": "src_listers_integration_test_prependtopath" + }, + { + "label": "readArgvLog()", + "file_type": "code", + "source_file": "src/listers.integration.test.ts", + "source_location": "L49", + "community": 4, + "norm_label": "readargvlog()", + "id": "src_listers_integration_test_readargvlog" + }, + { + "label": "listers.test.ts", + "file_type": "code", + "source_file": "src/listers.test.ts", + "source_location": "L1", + "community": 4, + "norm_label": "listers.test.ts", + "id": "src_listers_test_ts" + }, + { + "label": "fakeRun()", + "file_type": "code", + "source_file": "src/listers.test.ts", + "source_location": "L6", + "community": 4, + "norm_label": "fakerun()", + "id": "src_listers_test_fakerun" + }, + { + "label": "enoentRunner()", + "file_type": "code", + "source_file": "src/listers.test.ts", + "source_location": "L16", + "community": 4, + "norm_label": "enoentrunner()", + "id": "src_listers_test_enoentrunner" + }, + { + "label": "mockV1Fallback()", + "file_type": "code", + "source_file": "src/listers.test.ts", + "source_location": "L22", + "community": 6, + "norm_label": "mockv1fallback()", + "id": "src_listers_test_mockv1fallback" + }, + { + "label": "test-helpers.ts", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "L1", + "community": 4, + "norm_label": "test-helpers.ts", + "id": "src_test_helpers_ts" + }, + { + "label": "captureRealFetch()", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "L3", + "community": 4, + "norm_label": "capturerealfetch()", + "id": "src_test_helpers_capturerealfetch" + }, + { + "label": "restoreFetch()", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "L7", + "community": 4, + "norm_label": "restorefetch()", + "id": "src_test_helpers_restorefetch" + }, + { + "label": "mockFetch()", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "L11", + "community": 4, + "norm_label": "mockfetch()", + "id": "src_test_helpers_mockfetch" + }, + { + "label": "argsplit.js", + "file_type": "code", + "source_file": "dist-test/argsplit.js", + "source_location": "L1", + "community": 1, + "norm_label": "argsplit.js", + "id": "dist_test_argsplit_js" + }, + { + "label": "splitArgs()", + "file_type": "code", + "source_file": "dist-test/argsplit.js", + "source_location": "L1", + "community": 1, + "norm_label": "splitargs()", + "id": "dist_test_argsplit_splitargs" + }, + { + "label": "argsplit.test.js", + "file_type": "code", + "source_file": "dist-test/argsplit.test.js", + "source_location": "L1", + "community": 13, + "norm_label": "argsplit.test.js", + "id": "dist_test_argsplit_test_js" + }, + { + "label": "providers.js", + "file_type": "code", + "source_file": "dist-test/providers.js", + "source_location": "L1", + "community": 14, + "norm_label": "providers.js", + "id": "dist_test_providers_js" + }, + { + "label": "listers.js", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": "L1", + "community": 8, + "norm_label": "listers.js", + "id": "dist_test_listers_js" + }, + { + "label": "listLmStudio()", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": "L6", + "community": 8, + "norm_label": "listlmstudio()", + "id": "dist_test_listers_listlmstudio" + }, + { + "label": "listOllama()", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": "L35", + "community": 8, + "norm_label": "listollama()", + "id": "dist_test_listers_listollama" + }, + { + "label": "listV1Models()", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": "L60", + "community": 8, + "norm_label": "listv1models()", + "id": "dist_test_listers_listv1models" + }, + { + "label": "compat.js", + "file_type": "code", + "source_file": "dist-test/compat.js", + "source_location": "L1", + "community": 1, + "norm_label": "compat.js", + "id": "dist_test_compat_js" + }, + { + "label": "loadSettings()", + "file_type": "code", + "source_file": "dist-test/compat.js", + "source_location": "L2", + "community": 1, + "norm_label": "loadsettings()", + "id": "dist_test_compat_loadsettings" + }, + { + "label": "isAnthropicHost()", + "file_type": "code", + "source_file": "dist-test/compat.js", + "source_location": "L13", + "community": 1, + "norm_label": "isanthropichost()", + "id": "dist_test_compat_isanthropichost" + }, + { + "label": "applyCompat()", + "file_type": "code", + "source_file": "dist-test/compat.js", + "source_location": "L31", + "community": 1, + "norm_label": "applycompat()", + "id": "dist_test_compat_applycompat" + }, + { + "label": "listers.integration.test.js", + "file_type": "code", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L1", + "community": 10, + "norm_label": "listers.integration.test.js", + "id": "dist_test_listers_integration_test_js" + }, + { + "label": "installFake()", + "file_type": "code", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L34", + "community": 10, + "norm_label": "installfake()", + "id": "dist_test_listers_integration_test_installfake" + }, + { + "label": "prependToPath()", + "file_type": "code", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L38", + "community": 10, + "norm_label": "prependtopath()", + "id": "dist_test_listers_integration_test_prependtopath" + }, + { + "label": "readArgvLog()", + "file_type": "code", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L41", + "community": 10, + "norm_label": "readargvlog()", + "id": "dist_test_listers_integration_test_readargvlog" + }, + { + "label": "cli.js", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "L1", + "community": 8, + "norm_label": "cli.js", + "id": "dist_test_cli_js" + }, + { + "label": "listForProvider()", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "L77", + "community": 8, + "norm_label": "listforprovider()", + "id": "dist_test_cli_listforprovider" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "L87", + "community": 1, + "norm_label": "main()", + "id": "dist_test_cli_main" + }, + { + "label": "compat.test.js", + "file_type": "code", + "source_file": "dist-test/compat.test.js", + "source_location": "L1", + "community": 15, + "norm_label": "compat.test.js", + "id": "dist_test_compat_test_js" + }, + { + "label": "listers.test.js", + "file_type": "code", + "source_file": "dist-test/listers.test.js", + "source_location": "L1", + "community": 6, + "norm_label": "listers.test.js", + "id": "dist_test_listers_test_js" + }, + { + "label": "fakeRun()", + "file_type": "code", + "source_file": "dist-test/listers.test.js", + "source_location": "L5", + "community": 6, + "norm_label": "fakerun()", + "id": "dist_test_listers_test_fakerun" + }, + { + "label": "enoentRunner()", + "file_type": "code", + "source_file": "dist-test/listers.test.js", + "source_location": "L16", + "community": 6, + "norm_label": "enoentrunner()", + "id": "dist_test_listers_test_enoentrunner" + }, + { + "label": "mockV1Fallback()", + "file_type": "code", + "source_file": "dist-test/listers.test.js", + "source_location": "L21", + "community": 6, + "norm_label": "mockv1fallback()", + "id": "dist_test_listers_test_mockv1fallback" + }, + { + "label": "cli.integration.test.js", + "file_type": "code", + "source_file": "dist-test/cli.integration.test.js", + "source_location": "L1", + "community": 12, + "norm_label": "cli.integration.test.js", + "id": "dist_test_cli_integration_test_js" + }, + { + "label": "emptyEnv()", + "file_type": "code", + "source_file": "dist-test/cli.integration.test.js", + "source_location": "L17", + "community": 12, + "norm_label": "emptyenv()", + "id": "dist_test_cli_integration_test_emptyenv" + }, + { + "label": "version.js", + "file_type": "code", + "source_file": "dist-test/version.js", + "source_location": "L1", + "community": 1, + "norm_label": "version.js", + "id": "dist_test_version_js" + }, + { + "label": "readClaudelyVersion()", + "file_type": "code", + "source_file": "dist-test/version.js", + "source_location": "L7", + "community": 1, + "norm_label": "readclaudelyversion()", + "id": "dist_test_version_readclaudelyversion" + }, + { + "label": "probeClaudeVersion()", + "file_type": "code", + "source_file": "dist-test/version.js", + "source_location": "L19", + "community": 1, + "norm_label": "probeclaudeversion()", + "id": "dist_test_version_probeclaudeversion" + }, + { + "label": "renderVersion()", + "file_type": "code", + "source_file": "dist-test/version.js", + "source_location": "L32", + "community": 1, + "norm_label": "renderversion()", + "id": "dist_test_version_renderversion" + }, + { + "label": "version.test.js", + "file_type": "code", + "source_file": "dist-test/version.test.js", + "source_location": "L1", + "community": 16, + "norm_label": "version.test.js", + "id": "dist_test_version_test_js" + }, + { + "label": "resume.js", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L1", + "community": 1, + "norm_label": "resume.js", + "id": "dist_test_resume_js" + }, + { + "label": "isResumeIntent()", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L19", + "community": 1, + "norm_label": "isresumeintent()", + "id": "dist_test_resume_isresumeintent" + }, + { + "label": "assembleClaudeArgv()", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L31", + "community": 1, + "norm_label": "assembleclaudeargv()", + "id": "dist_test_resume_assembleclaudeargv" + }, + { + "label": "encodeCwdForClaude()", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L38", + "community": 1, + "norm_label": "encodecwdforclaude()", + "id": "dist_test_resume_encodecwdforclaude" + }, + { + "label": "hasRecentSessionForCwd()", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L41", + "community": 1, + "norm_label": "hasrecentsessionforcwd()", + "id": "dist_test_resume_hasrecentsessionforcwd" + }, + { + "label": "shouldAutoResume()", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": "L52", + "community": 1, + "norm_label": "shouldautoresume()", + "id": "dist_test_resume_shouldautoresume" + }, + { + "label": "resume.test.js", + "file_type": "code", + "source_file": "dist-test/resume.test.js", + "source_location": "L1", + "community": 1, + "norm_label": "resume.test.js", + "id": "dist_test_resume_test_js" + }, + { + "label": "seedSessionFile()", + "file_type": "code", + "source_file": "dist-test/resume.test.js", + "source_location": "L101", + "community": 1, + "norm_label": "seedsessionfile()", + "id": "dist_test_resume_test_seedsessionfile" + }, + { + "label": "test-helpers.js", + "file_type": "code", + "source_file": "dist-test/test-helpers.js", + "source_location": "L1", + "community": 6, + "norm_label": "test-helpers.js", + "id": "dist_test_test_helpers_js" + }, + { + "label": "captureRealFetch()", + "file_type": "code", + "source_file": "dist-test/test-helpers.js", + "source_location": "L2", + "community": 6, + "norm_label": "capturerealfetch()", + "id": "dist_test_test_helpers_capturerealfetch" + }, + { + "label": "restoreFetch()", + "file_type": "code", + "source_file": "dist-test/test-helpers.js", + "source_location": "L5", + "community": 6, + "norm_label": "restorefetch()", + "id": "dist_test_test_helpers_restorefetch" + }, + { + "label": "mockFetch()", + "file_type": "code", + "source_file": "dist-test/test-helpers.js", + "source_location": "L8", + "community": 6, + "norm_label": "mockfetch()", + "id": "dist_test_test_helpers_mockfetch" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "line 106", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "main()", + "id": "cli_main" + }, + { + "label": "listForProvider()", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "line 91", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "listforprovider()", + "id": "cli_listforprovider" + }, + { + "label": "FLAG_SPEC", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "line 35", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "flag_spec", + "id": "cli_flag_spec" + }, + { + "label": "HELP text", + "file_type": "code", + "source_file": "src/cli.ts", + "source_location": "line 48", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 17, + "norm_label": "help text", + "id": "cli_help" + }, + { + "label": "Provider interface", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 9", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "provider interface", + "id": "providers_provider" + }, + { + "label": "EnvStyle type", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 6", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "envstyle type", + "id": "providers_envstyle" + }, + { + "label": "ListerKind type", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 7", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "listerkind type", + "id": "providers_listerkind" + }, + { + "label": "PROVIDERS registry", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 19", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "providers registry", + "id": "providers_registry" + }, + { + "label": "lmstudio provider", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 20", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "lmstudio provider", + "id": "providers_lmstudio" + }, + { + "label": "ollama provider", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 29", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "ollama provider", + "id": "providers_ollama" + }, + { + "label": "llamacpp provider", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 38", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "llamacpp provider", + "id": "providers_llamacpp" + }, + { + "label": "custom provider", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 49", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "custom provider", + "id": "providers_custom" + }, + { + "label": "ModelEntry interface", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "line 11", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 18, + "norm_label": "modelentry interface", + "id": "listers_modelentry" + }, + { + "label": "Runner type", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "line 7", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 19, + "norm_label": "runner type", + "id": "listers_runner" + }, + { + "label": "listLmStudio()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "line 30", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "listlmstudio()", + "id": "listers_listlmstudio" + }, + { + "label": "listOllama()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "line 62", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "listollama()", + "id": "listers_listollama" + }, + { + "label": "listV1Models()", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": "line 89", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "listv1models()", + "id": "listers_listv1models" + }, + { + "label": "loadSettings()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "line 9", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "loadsettings()", + "id": "compat_loadsettings" + }, + { + "label": "applyCompat()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "line 54", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 9, + "norm_label": "applycompat()", + "id": "compat_applycompat" + }, + { + "label": "INCOMPATIBILITIES table", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "line 42", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 9, + "norm_label": "incompatibilities table", + "id": "compat_incompatibilities" + }, + { + "label": "Incompatibility interface", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "line 25", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 9, + "norm_label": "incompatibility interface", + "id": "compat_incompatibility" + }, + { + "label": "isAnthropicHost()", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": "line 34", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 9, + "norm_label": "isanthropichost()", + "id": "compat_isanthropichost" + }, + { + "label": "splitArgs()", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": "line 12", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "splitargs()", + "id": "argsplit_splitargs" + }, + { + "label": "FlagSpec interface", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": "line 1", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "flagspec interface", + "id": "argsplit_flagspec" + }, + { + "label": "SplitResult interface", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": "line 7", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 20, + "norm_label": "splitresult interface", + "id": "argsplit_splitresult" + }, + { + "label": "isResumeIntent()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "line 23", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "isresumeintent()", + "id": "resume_isresumeintent" + }, + { + "label": "assembleClaudeArgv()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "line 40", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "assembleclaudeargv()", + "id": "resume_assembleclaudeargv" + }, + { + "label": "encodeCwdForClaude()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "line 48", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "encodecwdforclaude()", + "id": "resume_encodecwdforclaude" + }, + { + "label": "hasRecentSessionForCwd()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "line 57", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "hasrecentsessionforcwd()", + "id": "resume_hasrecentsessionforcwd" + }, + { + "label": "shouldAutoResume()", + "file_type": "code", + "source_file": "src/resume.ts", + "source_location": "line 79", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "shouldautoresume()", + "id": "resume_shouldautoresume" + }, + { + "label": "readClaudelyVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "line 15", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "readclaudelyversion()", + "id": "version_readclaudelyversion" + }, + { + "label": "probeClaudeVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "line 29", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "probeclaudeversion()", + "id": "version_probeclaudeversion" + }, + { + "label": "renderVersion()", + "file_type": "code", + "source_file": "src/version.ts", + "source_location": "line 41", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "renderversion()", + "id": "version_renderversion" + }, + { + "label": "mockFetch()", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "line 11", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 21, + "norm_label": "mockfetch()", + "id": "test_helpers_mockfetch" + }, + { + "label": "restoreFetch()", + "file_type": "code", + "source_file": "src/test-helpers.ts", + "source_location": "line 7", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 22, + "norm_label": "restorefetch()", + "id": "test_helpers_restorefetch" + }, + { + "label": "claudely - launch Claude Code against local LLM", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": "https://www.npmjs.com/package/claudely", + "captured_at": null, + "author": "mforce", + "contributor": null, + "community": 23, + "norm_label": "claudely - launch claude code against local llm", + "id": "claudely_project" + }, + { + "label": "Auth env-style pattern (auth_token vs api_key)", + "file_type": "code", + "source_file": "src/providers.ts", + "source_location": "line 6", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "auth env-style pattern (auth_token vs api_key)", + "id": "concept_env_style" + }, + { + "label": "Lister fallback pattern (CLI tool -> /v1/models HTTP)", + "file_type": "code", + "source_file": "src/listers.ts", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "lister fallback pattern (cli tool -> /v1/models http)", + "id": "concept_fallback_chain" + }, + { + "label": "Auto-resume on bare invocation", + "file_type": "document", + "source_file": "CHANGELOG.md", + "source_location": "v0.1.4", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "auto-resume on bare invocation", + "id": "concept_auto_resume" + }, + { + "label": "KV-cache speedup via CLAUDE_CODE_ATTRIBUTION_HEADER=0", + "file_type": "document", + "source_file": "README.md", + "source_location": "KV-cache speedup section", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "kv-cache speedup via claude_code_attribution_header=0", + "id": "concept_kv_cache_speedup" + }, + { + "label": "Arg splitting pattern (own vs claude passthrough)", + "file_type": "code", + "source_file": "src/argsplit.ts", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "arg splitting pattern (own vs claude passthrough)", + "id": "concept_arg_splitting" + }, + { + "label": "Settings incompatibility clamping pattern", + "file_type": "code", + "source_file": "src/compat.ts", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 9, + "norm_label": "settings incompatibility clamping pattern", + "id": "concept_compat_clamping" + }, + { + "label": "claudely setup -- Interactive Configuration Wizard", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": null, + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "claudely setup -- interactive configuration wizard", + "id": "setup_wizard_design" + }, + { + "label": "ClaudelyConfig interface", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 24-29", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "claudelyconfig interface", + "id": "setup_wizard_claudely_config" + }, + { + "label": "src/config.ts -- Config persistence layer", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 51-58", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "src/config.ts -- config persistence layer", + "id": "setup_wizard_config_ts" + }, + { + "label": "src/setup.ts -- Interactive wizard (runSetup)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 60-83", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "src/setup.ts -- interactive wizard (runsetup)", + "id": "setup_wizard_setup_ts" + }, + { + "label": "Setting resolution precedence chain", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 37-47", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "setting resolution precedence chain", + "id": "setup_wizard_precedence" + }, + { + "label": "Platform-native config file locations", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 13-19", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "platform-native config file locations", + "id": "setup_wizard_config_paths" + }, + { + "label": "@inquirer/prompts dependency for wizard", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 67", + "source_url": null, + "captured_at": "2026-05-03", + "author": null, + "contributor": null, + "community": 0, + "norm_label": "@inquirer/prompts dependency for wizard", + "id": "setup_wizard_inquirer_prompts" + }, + { + "label": "Model listers module (listLmStudio, listOllama, listV1Models)", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "model listers module (listlmstudio, listollama, listv1models)", + "id": "listers_module" + }, + { + "label": "Compatibility layer (applyCompat, loadSettings, INCOMPATIBILITIES)", + "file_type": "code", + "source_file": "dist-test/compat.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "compatibility layer (applycompat, loadsettings, incompatibilities)", + "id": "compat_module" + }, + { + "label": "Argument splitter (splitArgs)", + "file_type": "code", + "source_file": "dist-test/argsplit.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "argument splitter (splitargs)", + "id": "argsplit_module" + }, + { + "label": "Resume intent detection and auto-resume logic", + "file_type": "code", + "source_file": "dist-test/resume.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "resume intent detection and auto-resume logic", + "id": "resume_module" + }, + { + "label": "Version reporting (readClaudelyVersion, probeClaudeVersion, renderVersion)", + "file_type": "code", + "source_file": "dist-test/version.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "version reporting (readclaudelyversion, probeclaudeversion, renderversion)", + "id": "version_module" + }, + { + "label": "Shared test helpers (mockFetch, restoreFetch, captureRealFetch)", + "file_type": "code", + "source_file": "dist-test/test-helpers.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "shared test helpers (mockfetch, restorefetch, capturerealfetch)", + "id": "test_helpers_module" + }, + { + "label": "Graceful degradation fallback to /v1/models API", + "file_type": "code", + "source_file": "dist-test/listers.js", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "graceful degradation fallback to /v1/models api", + "id": "v1_models_fallback_pattern" + }, + { + "label": "Auto-resume on bare invocation feature", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "line 148-161", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "auto-resume on bare invocation feature", + "id": "auto_resume_feature" + }, + { + "label": "Provider env-style auth (auth_token vs api_key)", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "line 204-212", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 5, + "norm_label": "provider env-style auth (auth_token vs api_key)", + "id": "env_style_auth_pattern" + }, + { + "label": "KV-cache speedup via CLAUDE_CODE_ATTRIBUTION_HEADER=0", + "file_type": "code", + "source_file": "dist-test/cli.js", + "source_location": "line 215-218", + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "community": 0, + "norm_label": "kv-cache speedup via claude_code_attribution_header=0", + "id": "kv_cache_attribution_header" + }, + { + "label": "claudely setup wizard", + "type": "concept", + "attributes": { + "description": "Interactive configuration wizard invoked via `claudely setup` subcommand. Walks user through provider, base URL, auth token, and default model selection. Persists values to a platform-native config file.", + "rationale": "Provides a guided first-run experience so users do not need to manually create config files or remember env var names. Config is persisted and loaded on every subsequent invocation, slotting into the resolution chain below CLI flags and env vars but above hardcoded provider defaults." + }, + "id": "setup_wizard", + "community": 2, + "norm_label": "claudely setup wizard" + }, + { + "label": "ClaudelyConfig", + "type": "interface", + "attributes": { + "description": "TypeScript interface with optional fields: provider, baseUrl, token, model. All fields optional so missing fields fall through to the next source in the precedence chain.", + "fields": [ + "provider?", + "baseUrl?", + "token?", + "model?" + ] + }, + "id": "setup_claudely_config", + "community": 2, + "norm_label": "claudelyconfig" + }, + { + "label": "src/config.ts", + "type": "module", + "attributes": { + "description": "Consolidates all config-reading logic in one place. Exports configDir(), configPath(), loadConfig(), saveConfig(), and loadSettings() (moved from compat.ts).", + "rationale": "Decouples disk I/O from compat business logic by moving loadSettings here. Consolidation ensures all config I/O has a single source of truth." + }, + "id": "setup_config_ts", + "community": 2, + "norm_label": "src/config.ts" + }, + { + "label": "src/setup.ts", + "type": "module", + "attributes": { + "description": "Interactive wizard module. Exports runSetup(): Promise (returns exit code). Flow: load existing config, pick provider, base URL, auth token, test connection, pick default model, confirm & save.", + "entry_point": "runSetup()" + }, + "id": "setup_setup_ts", + "community": 2, + "norm_label": "src/setup.ts" + }, + { + "label": "src/compat.ts", + "type": "module", + "attributes": { + "description": "Compat business logic module. After decoupling: loadSettings() removed (moved to config.ts), readFileSync import removed. applyCompat(), INCOMPATIBILITIES, isAnthropicHost() stay unchanged.", + "rationale": "Removing loadSettings and its fs import makes compat.ts purely about business logic (checking incompatibilities, host detection), no longer responsible for disk I/O." + }, + "id": "setup_compat_ts", + "community": 2, + "norm_label": "src/compat.ts" + }, + { + "label": "src/cli.ts", + "type": "module", + "attributes": { + "description": "CLI entry point. Changes: loadSettings import source changes from compat.js to config.js; subcommand dispatch for 'setup'; config loading via loadConfig() threaded into resolution; HELP text updated." + }, + "id": "setup_cli_ts", + "community": 2, + "norm_label": "src/cli.ts" + }, + { + "label": "Precedence chain", + "type": "concept", + "attributes": { + "description": "Resolution order for each setting: CLI flag > env var > config file > provider default. Applies to provider, baseUrl, token, and model settings.", + "examples": { + "provider": "--provider > $CLAUDELY_PROVIDER > config.provider > 'lmstudio'", + "baseUrl": "--base-url > $CLAUDELY_BASE_URL > config.baseUrl > provider.defaultBaseUrl()", + "token": "--token > $CLAUDELY_TOKEN > config.token > provider.defaultToken", + "model": "--model > $CLAUDELY_MODEL > config.model > picker" + } + }, + "id": "setup_precedence_chain", + "community": 2, + "norm_label": "precedence chain" + }, + { + "label": "Linux config path", + "type": "config_location", + "attributes": { + "path": "$XDG_CONFIG_HOME/claudely/config.json", + "default": "~/.config/claudely/config.json", + "platform": "linux" + }, + "id": "setup_config_file_linux", + "community": 2, + "norm_label": "linux config path" + }, + { + "label": "macOS config path", + "type": "config_location", + "attributes": { + "path": "~/Library/Application Support/claudely/config.json", + "platform": "macos" + }, + "id": "setup_config_file_macos", + "community": 2, + "norm_label": "macos config path" + }, + { + "label": "Windows config path", + "type": "config_location", + "attributes": { + "path": "%APPDATA%\\claudely\\config.json", + "platform": "windows" + }, + "id": "setup_config_file_windows", + "community": 2, + "norm_label": "windows config path" + }, + { + "label": "loadSettings()", + "type": "function", + "attributes": { + "description": "Reads Claude Code's ~/.claude/settings.json and returns the parsed object (or undefined on missing/corrupt). Moved from compat.ts to config.ts as part of the I/O decoupling.", + "signature": "loadSettings(settingsPath: string): object | undefined" + }, + "id": "setup_load_settings", + "community": 2, + "norm_label": "loadsettings()" + }, + { + "label": "configDir()", + "type": "function", + "attributes": { + "description": "Platform-aware directory resolution for config file location.", + "module": "src/config.ts" + }, + "id": "setup_config_dir", + "community": 2, + "norm_label": "configdir()" + }, + { + "label": "configPath()", + "type": "function", + "attributes": { + "description": "Returns configDir() + '/config.json'.", + "module": "src/config.ts" + }, + "id": "setup_config_path", + "community": 2, + "norm_label": "configpath()" + }, + { + "label": "loadConfig()", + "type": "function", + "attributes": { + "description": "Reads and parses config JSON. Returns {} if file is missing or corrupt (logs warning on corrupt).", + "module": "src/config.ts", + "return_type": "ClaudelyConfig" + }, + "id": "setup_load_config", + "community": 2, + "norm_label": "loadconfig()" + }, + { + "label": "saveConfig()", + "type": "function", + "attributes": { + "description": "Writes pretty-printed JSON config. Creates directory with { recursive: true } if needed.", + "module": "src/config.ts", + "parameter": "ClaudelyConfig" + }, + "id": "setup_save_config", + "community": 2, + "norm_label": "saveconfig()" + }, + { + "label": "runSetup()", + "type": "function", + "attributes": { + "description": "Exported entry point for the interactive wizard. Returns Promise (exit code).", + "module": "src/setup.ts" + }, + "id": "setup_run_setup", + "community": 2, + "norm_label": "runsetup()" + }, + { + "label": "@inquirer/prompts", + "type": "dependency", + "attributes": { + "description": "Used for interactive select and input prompts in the setup wizard." + }, + "id": "setup_inquirer_prompts", + "community": 2, + "norm_label": "@inquirer/prompts" + }, + { + "label": "src/config.test.ts", + "type": "test_module", + "attributes": { + "description": "Tests for config.ts: configDir() per platform, loadConfig/saveConfig round-trip, missing file handling, corrupt JSON handling, directory creation, loadSettings tests moved from compat.test.ts." + }, + "id": "setup_config_test_ts", + "community": 2, + "norm_label": "src/config.test.ts" + }, + { + "label": "Connection test step", + "type": "concept", + "attributes": { + "description": "Wizard step 5: fetch(baseUrl + '/v1/models') with 5s timeout. On success prints model count, on failure warns but continues (server may not be running yet)." + }, + "id": "setup_connection_test", + "community": 2, + "norm_label": "connection test step" + }, + { + "label": "listForProvider", + "type": "function", + "attributes": { + "description": "Reused by the wizard to show the model picker when connection test succeeds and models are returned." + }, + "id": "setup_list_for_provider", + "community": 2, + "norm_label": "listforprovider" + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.ts", + "source_location": "L30", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_listers_listlmstudio", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_listers_listlmstudio" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.ts", + "source_location": "L62", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_listers_listollama", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_listers_listollama" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.ts", + "source_location": "L89", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_listers_listv1models", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_listers_listv1models" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L19", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_cli_ts", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_cli_ts" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/listers.integration.test.ts", + "source_location": "L15", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_listers_integration_test_ts", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_listers_integration_test_ts" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/listers.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "src_listers_ts", + "_tgt": "src_listers_test_ts", + "confidence_score": 1.0, + "source": "src_listers_ts", + "target": "src_listers_test_ts" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/listers.ts", + "source_location": "L42", + "weight": 1.0, + "_src": "src_listers_listlmstudio", + "_tgt": "src_listers_listv1models", + "confidence_score": 1.0, + "source": "src_listers_listlmstudio", + "target": "src_listers_listv1models" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/listers.ts", + "source_location": "L70", + "weight": 1.0, + "_src": "src_listers_listollama", + "_tgt": "src_listers_listv1models", + "confidence_score": 1.0, + "source": "src_listers_listollama", + "target": "src_listers_listv1models" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "src_providers_ts", + "_tgt": "src_cli_ts", + "confidence_score": 1.0, + "source": "src_providers_ts", + "target": "src_cli_ts" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/argsplit.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "src_argsplit_test_ts", + "_tgt": "src_argsplit_ts", + "confidence_score": 1.0, + "source": "src_argsplit_test_ts", + "target": "src_argsplit_ts" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/compat.test.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "src_compat_test_ts", + "_tgt": "src_compat_ts", + "confidence_score": 1.0, + "source": "src_compat_test_ts", + "target": "src_compat_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/argsplit.ts", + "source_location": "L12", + "weight": 1.0, + "_src": "src_argsplit_ts", + "_tgt": "src_argsplit_splitargs", + "confidence_score": 1.0, + "source": "src_argsplit_ts", + "target": "src_argsplit_splitargs" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L26", + "weight": 1.0, + "_src": "src_argsplit_ts", + "_tgt": "src_cli_ts", + "confidence_score": 1.0, + "source": "src_argsplit_ts", + "target": "src_cli_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/compat.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "src_compat_ts", + "_tgt": "src_compat_loadsettings", + "confidence_score": 1.0, + "source": "src_compat_ts", + "target": "src_compat_loadsettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/compat.ts", + "source_location": "L34", + "weight": 1.0, + "_src": "src_compat_ts", + "_tgt": "src_compat_isanthropichost", + "confidence_score": 1.0, + "source": "src_compat_ts", + "target": "src_compat_isanthropichost" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/compat.ts", + "source_location": "L54", + "weight": 1.0, + "_src": "src_compat_ts", + "_tgt": "src_compat_applycompat", + "confidence_score": 1.0, + "source": "src_compat_ts", + "target": "src_compat_applycompat" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L25", + "weight": 1.0, + "_src": "src_compat_ts", + "_tgt": "src_cli_ts", + "confidence_score": 1.0, + "source": "src_compat_ts", + "target": "src_cli_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/cli.integration.test.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "src_cli_integration_test_ts", + "_tgt": "src_cli_integration_test_emptyenv", + "confidence_score": 1.0, + "source": "src_cli_integration_test_ts", + "target": "src_cli_integration_test_emptyenv" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L27", + "weight": 1.0, + "_src": "src_cli_ts", + "_tgt": "src_version_ts", + "confidence_score": 1.0, + "source": "src_cli_ts", + "target": "src_version_ts" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L28", + "weight": 1.0, + "_src": "src_cli_ts", + "_tgt": "src_resume_ts", + "confidence_score": 1.0, + "source": "src_cli_ts", + "target": "src_resume_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L91", + "weight": 1.0, + "_src": "src_cli_ts", + "_tgt": "src_cli_listforprovider", + "confidence_score": 1.0, + "source": "src_cli_ts", + "target": "src_cli_listforprovider" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L106", + "weight": 1.0, + "_src": "src_cli_ts", + "_tgt": "src_cli_main", + "confidence_score": 1.0, + "source": "src_cli_ts", + "target": "src_cli_main" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/cli.ts", + "source_location": "L174", + "weight": 1.0, + "_src": "src_cli_listforprovider", + "_tgt": "src_cli_main", + "confidence_score": 1.0, + "source": "src_cli_listforprovider", + "target": "src_cli_main" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L98", + "weight": 1.0, + "_src": "src_cli_listforprovider", + "_tgt": "dist_test_listers_listlmstudio", + "source": "src_cli_listforprovider", + "target": "dist_test_listers_listlmstudio" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L100", + "weight": 1.0, + "_src": "src_cli_listforprovider", + "_tgt": "dist_test_listers_listollama", + "source": "src_cli_listforprovider", + "target": "dist_test_listers_listollama" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L102", + "weight": 1.0, + "_src": "src_cli_listforprovider", + "_tgt": "dist_test_listers_listv1models", + "source": "src_cli_listforprovider", + "target": "dist_test_listers_listv1models" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L110", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_argsplit_splitargs", + "source": "src_cli_main", + "target": "dist_test_argsplit_splitargs" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L143", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_version_renderversion", + "source": "src_cli_main", + "target": "dist_test_version_renderversion" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L186", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_resume_shouldautoresume", + "source": "src_cli_main", + "target": "dist_test_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L189", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_resume_hasrecentsessionforcwd", + "source": "src_cli_main", + "target": "dist_test_resume_hasrecentsessionforcwd" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L204", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_resume_isresumeintent", + "source": "src_cli_main", + "target": "dist_test_resume_isresumeintent" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L262", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_compat_loadsettings", + "source": "src_cli_main", + "target": "dist_test_compat_loadsettings" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L263", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_compat_applycompat", + "source": "src_cli_main", + "target": "dist_test_compat_applycompat" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/cli.ts", + "source_location": "L266", + "weight": 1.0, + "_src": "src_cli_main", + "_tgt": "dist_test_resume_assembleclaudeargv", + "source": "src_cli_main", + "target": "dist_test_resume_assembleclaudeargv" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/resume.test.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "src_resume_test_ts", + "_tgt": "src_resume_ts", + "confidence_score": 1.0, + "source": "src_resume_test_ts", + "target": "src_resume_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.test.ts", + "source_location": "L145", + "weight": 1.0, + "_src": "src_resume_test_ts", + "_tgt": "src_resume_test_seedsessionfile", + "confidence_score": 1.0, + "source": "src_resume_test_ts", + "target": "src_resume_test_seedsessionfile" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/resume.test.ts", + "source_location": "L146", + "weight": 1.0, + "_src": "src_resume_test_seedsessionfile", + "_tgt": "dist_test_resume_encodecwdforclaude", + "source": "src_resume_test_seedsessionfile", + "target": "dist_test_resume_encodecwdforclaude" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "src_resume_ts", + "_tgt": "src_resume_isresumeintent", + "confidence_score": 1.0, + "source": "src_resume_ts", + "target": "src_resume_isresumeintent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "src_resume_ts", + "_tgt": "src_resume_assembleclaudeargv", + "confidence_score": 1.0, + "source": "src_resume_ts", + "target": "src_resume_assembleclaudeargv" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L48", + "weight": 1.0, + "_src": "src_resume_ts", + "_tgt": "src_resume_encodecwdforclaude", + "confidence_score": 1.0, + "source": "src_resume_ts", + "target": "src_resume_encodecwdforclaude" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L57", + "weight": 1.0, + "_src": "src_resume_ts", + "_tgt": "src_resume_hasrecentsessionforcwd", + "confidence_score": 1.0, + "source": "src_resume_ts", + "target": "src_resume_hasrecentsessionforcwd" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L79", + "weight": 1.0, + "_src": "src_resume_ts", + "_tgt": "src_resume_shouldautoresume", + "confidence_score": 1.0, + "source": "src_resume_ts", + "target": "src_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L84", + "weight": 1.0, + "_src": "src_resume_isresumeintent", + "_tgt": "src_resume_shouldautoresume", + "confidence_score": 1.0, + "source": "src_resume_isresumeintent", + "target": "src_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/resume.ts", + "source_location": "L59", + "weight": 1.0, + "_src": "src_resume_encodecwdforclaude", + "_tgt": "src_resume_hasrecentsessionforcwd", + "confidence_score": 1.0, + "source": "src_resume_encodecwdforclaude", + "target": "src_resume_hasrecentsessionforcwd" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/version.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "src_version_test_ts", + "_tgt": "src_version_ts", + "confidence_score": 1.0, + "source": "src_version_test_ts", + "target": "src_version_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/version.ts", + "source_location": "L15", + "weight": 1.0, + "_src": "src_version_ts", + "_tgt": "src_version_readclaudelyversion", + "confidence_score": 1.0, + "source": "src_version_ts", + "target": "src_version_readclaudelyversion" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/version.ts", + "source_location": "L29", + "weight": 1.0, + "_src": "src_version_ts", + "_tgt": "src_version_probeclaudeversion", + "confidence_score": 1.0, + "source": "src_version_ts", + "target": "src_version_probeclaudeversion" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/version.ts", + "source_location": "L41", + "weight": 1.0, + "_src": "src_version_ts", + "_tgt": "src_version_renderversion", + "confidence_score": 1.0, + "source": "src_version_ts", + "target": "src_version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/version.ts", + "source_location": "L43", + "weight": 1.0, + "_src": "src_version_readclaudelyversion", + "_tgt": "src_version_renderversion", + "confidence_score": 1.0, + "source": "src_version_readclaudelyversion", + "target": "src_version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "src/version.ts", + "source_location": "L44", + "weight": 1.0, + "_src": "src_version_probeclaudeversion", + "_tgt": "src_version_renderversion", + "confidence_score": 1.0, + "source": "src_version_probeclaudeversion", + "target": "src_version_renderversion" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/listers.integration.test.ts", + "source_location": "L16", + "weight": 1.0, + "_src": "src_listers_integration_test_ts", + "_tgt": "src_test_helpers_ts", + "confidence_score": 1.0, + "source": "src_listers_integration_test_ts", + "target": "src_test_helpers_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.integration.test.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "src_listers_integration_test_ts", + "_tgt": "src_listers_integration_test_installfake", + "confidence_score": 1.0, + "source": "src_listers_integration_test_ts", + "target": "src_listers_integration_test_installfake" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.integration.test.ts", + "source_location": "L45", + "weight": 1.0, + "_src": "src_listers_integration_test_ts", + "_tgt": "src_listers_integration_test_prependtopath", + "confidence_score": 1.0, + "source": "src_listers_integration_test_ts", + "target": "src_listers_integration_test_prependtopath" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.integration.test.ts", + "source_location": "L49", + "weight": 1.0, + "_src": "src_listers_integration_test_ts", + "_tgt": "src_listers_integration_test_readargvlog", + "confidence_score": 1.0, + "source": "src_listers_integration_test_ts", + "target": "src_listers_integration_test_readargvlog" + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/listers.test.ts", + "source_location": "L4", + "weight": 1.0, + "_src": "src_listers_test_ts", + "_tgt": "src_test_helpers_ts", + "confidence_score": 1.0, + "source": "src_listers_test_ts", + "target": "src_test_helpers_ts" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.test.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "src_listers_test_ts", + "_tgt": "src_listers_test_fakerun", + "confidence_score": 1.0, + "source": "src_listers_test_ts", + "target": "src_listers_test_fakerun" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.test.ts", + "source_location": "L16", + "weight": 1.0, + "_src": "src_listers_test_ts", + "_tgt": "src_listers_test_enoentrunner", + "confidence_score": 1.0, + "source": "src_listers_test_ts", + "target": "src_listers_test_enoentrunner" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/listers.test.ts", + "source_location": "L22", + "weight": 1.0, + "_src": "src_listers_test_ts", + "_tgt": "src_listers_test_mockv1fallback", + "confidence_score": 1.0, + "source": "src_listers_test_ts", + "target": "src_listers_test_mockv1fallback" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "src/listers.test.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "src_listers_test_mockv1fallback", + "_tgt": "dist_test_test_helpers_mockfetch", + "source": "src_listers_test_mockv1fallback", + "target": "dist_test_test_helpers_mockfetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/test-helpers.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "src_test_helpers_ts", + "_tgt": "src_test_helpers_capturerealfetch", + "confidence_score": 1.0, + "source": "src_test_helpers_ts", + "target": "src_test_helpers_capturerealfetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/test-helpers.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "src_test_helpers_ts", + "_tgt": "src_test_helpers_restorefetch", + "confidence_score": 1.0, + "source": "src_test_helpers_ts", + "target": "src_test_helpers_restorefetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/test-helpers.ts", + "source_location": "L11", + "weight": 1.0, + "_src": "src_test_helpers_ts", + "_tgt": "src_test_helpers_mockfetch", + "confidence_score": 1.0, + "source": "src_test_helpers_ts", + "target": "src_test_helpers_mockfetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/argsplit.js", + "source_location": "L1", + "weight": 1.0, + "_src": "dist_test_argsplit_js", + "_tgt": "dist_test_argsplit_splitargs", + "confidence_score": 1.0, + "source": "dist_test_argsplit_js", + "target": "dist_test_argsplit_splitargs" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L91", + "weight": 1.0, + "_src": "dist_test_argsplit_splitargs", + "_tgt": "dist_test_cli_main", + "source": "dist_test_argsplit_splitargs", + "target": "dist_test_cli_main" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.js", + "source_location": "L6", + "weight": 1.0, + "_src": "dist_test_listers_js", + "_tgt": "dist_test_listers_listlmstudio", + "confidence_score": 1.0, + "source": "dist_test_listers_js", + "target": "dist_test_listers_listlmstudio" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.js", + "source_location": "L35", + "weight": 1.0, + "_src": "dist_test_listers_js", + "_tgt": "dist_test_listers_listollama", + "confidence_score": 1.0, + "source": "dist_test_listers_js", + "target": "dist_test_listers_listollama" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.js", + "source_location": "L60", + "weight": 1.0, + "_src": "dist_test_listers_js", + "_tgt": "dist_test_listers_listv1models", + "confidence_score": 1.0, + "source": "dist_test_listers_js", + "target": "dist_test_listers_listv1models" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.js", + "source_location": "L15", + "weight": 1.0, + "_src": "dist_test_listers_listlmstudio", + "_tgt": "dist_test_listers_listv1models", + "confidence_score": 1.0, + "source": "dist_test_listers_listlmstudio", + "target": "dist_test_listers_listv1models" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L80", + "weight": 1.0, + "_src": "dist_test_listers_listlmstudio", + "_tgt": "dist_test_cli_listforprovider", + "source": "dist_test_listers_listlmstudio", + "target": "dist_test_cli_listforprovider" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.js", + "source_location": "L40", + "weight": 1.0, + "_src": "dist_test_listers_listollama", + "_tgt": "dist_test_listers_listv1models", + "confidence_score": 1.0, + "source": "dist_test_listers_listollama", + "target": "dist_test_listers_listv1models" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L82", + "weight": 1.0, + "_src": "dist_test_listers_listollama", + "_tgt": "dist_test_cli_listforprovider", + "source": "dist_test_listers_listollama", + "target": "dist_test_cli_listforprovider" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L84", + "weight": 1.0, + "_src": "dist_test_listers_listv1models", + "_tgt": "dist_test_cli_listforprovider", + "source": "dist_test_listers_listv1models", + "target": "dist_test_cli_listforprovider" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/compat.js", + "source_location": "L2", + "weight": 1.0, + "_src": "dist_test_compat_js", + "_tgt": "dist_test_compat_loadsettings", + "confidence_score": 1.0, + "source": "dist_test_compat_js", + "target": "dist_test_compat_loadsettings" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/compat.js", + "source_location": "L13", + "weight": 1.0, + "_src": "dist_test_compat_js", + "_tgt": "dist_test_compat_isanthropichost", + "confidence_score": 1.0, + "source": "dist_test_compat_js", + "target": "dist_test_compat_isanthropichost" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/compat.js", + "source_location": "L31", + "weight": 1.0, + "_src": "dist_test_compat_js", + "_tgt": "dist_test_compat_applycompat", + "confidence_score": 1.0, + "source": "dist_test_compat_js", + "target": "dist_test_compat_applycompat" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L219", + "weight": 1.0, + "_src": "dist_test_compat_loadsettings", + "_tgt": "dist_test_cli_main", + "source": "dist_test_compat_loadsettings", + "target": "dist_test_cli_main" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L220", + "weight": 1.0, + "_src": "dist_test_compat_applycompat", + "_tgt": "dist_test_cli_main", + "source": "dist_test_compat_applycompat", + "target": "dist_test_cli_main" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L34", + "weight": 1.0, + "_src": "dist_test_listers_integration_test_js", + "_tgt": "dist_test_listers_integration_test_installfake", + "confidence_score": 1.0, + "source": "dist_test_listers_integration_test_js", + "target": "dist_test_listers_integration_test_installfake" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L38", + "weight": 1.0, + "_src": "dist_test_listers_integration_test_js", + "_tgt": "dist_test_listers_integration_test_prependtopath", + "confidence_score": 1.0, + "source": "dist_test_listers_integration_test_js", + "target": "dist_test_listers_integration_test_prependtopath" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.integration.test.js", + "source_location": "L41", + "weight": 1.0, + "_src": "dist_test_listers_integration_test_js", + "_tgt": "dist_test_listers_integration_test_readargvlog", + "confidence_score": 1.0, + "source": "dist_test_listers_integration_test_js", + "target": "dist_test_listers_integration_test_readargvlog" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/cli.js", + "source_location": "L77", + "weight": 1.0, + "_src": "dist_test_cli_js", + "_tgt": "dist_test_cli_listforprovider", + "confidence_score": 1.0, + "source": "dist_test_cli_js", + "target": "dist_test_cli_listforprovider" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/cli.js", + "source_location": "L87", + "weight": 1.0, + "_src": "dist_test_cli_js", + "_tgt": "dist_test_cli_main", + "confidence_score": 1.0, + "source": "dist_test_cli_js", + "target": "dist_test_cli_main" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/cli.js", + "source_location": "L141", + "weight": 1.0, + "_src": "dist_test_cli_listforprovider", + "_tgt": "dist_test_cli_main", + "confidence_score": 1.0, + "source": "dist_test_cli_listforprovider", + "target": "dist_test_cli_main" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L121", + "weight": 1.0, + "_src": "dist_test_cli_main", + "_tgt": "dist_test_version_renderversion", + "source": "dist_test_cli_main", + "target": "dist_test_version_renderversion" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L152", + "weight": 1.0, + "_src": "dist_test_cli_main", + "_tgt": "dist_test_resume_shouldautoresume", + "source": "dist_test_cli_main", + "target": "dist_test_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L155", + "weight": 1.0, + "_src": "dist_test_cli_main", + "_tgt": "dist_test_resume_hasrecentsessionforcwd", + "source": "dist_test_cli_main", + "target": "dist_test_resume_hasrecentsessionforcwd" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L169", + "weight": 1.0, + "_src": "dist_test_cli_main", + "_tgt": "dist_test_resume_isresumeintent", + "source": "dist_test_cli_main", + "target": "dist_test_resume_isresumeintent" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/cli.js", + "source_location": "L223", + "weight": 1.0, + "_src": "dist_test_cli_main", + "_tgt": "dist_test_resume_assembleclaudeargv", + "source": "dist_test_cli_main", + "target": "dist_test_resume_assembleclaudeargv" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.test.js", + "source_location": "L5", + "weight": 1.0, + "_src": "dist_test_listers_test_js", + "_tgt": "dist_test_listers_test_fakerun", + "confidence_score": 1.0, + "source": "dist_test_listers_test_js", + "target": "dist_test_listers_test_fakerun" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.test.js", + "source_location": "L16", + "weight": 1.0, + "_src": "dist_test_listers_test_js", + "_tgt": "dist_test_listers_test_enoentrunner", + "confidence_score": 1.0, + "source": "dist_test_listers_test_js", + "target": "dist_test_listers_test_enoentrunner" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/listers.test.js", + "source_location": "L21", + "weight": 1.0, + "_src": "dist_test_listers_test_js", + "_tgt": "dist_test_listers_test_mockv1fallback", + "confidence_score": 1.0, + "source": "dist_test_listers_test_js", + "target": "dist_test_listers_test_mockv1fallback" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/listers.test.js", + "source_location": "L22", + "weight": 1.0, + "_src": "dist_test_listers_test_mockv1fallback", + "_tgt": "dist_test_test_helpers_mockfetch", + "source": "dist_test_listers_test_mockv1fallback", + "target": "dist_test_test_helpers_mockfetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/cli.integration.test.js", + "source_location": "L17", + "weight": 1.0, + "_src": "dist_test_cli_integration_test_js", + "_tgt": "dist_test_cli_integration_test_emptyenv", + "confidence_score": 1.0, + "source": "dist_test_cli_integration_test_js", + "target": "dist_test_cli_integration_test_emptyenv" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/version.js", + "source_location": "L7", + "weight": 1.0, + "_src": "dist_test_version_js", + "_tgt": "dist_test_version_readclaudelyversion", + "confidence_score": 1.0, + "source": "dist_test_version_js", + "target": "dist_test_version_readclaudelyversion" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/version.js", + "source_location": "L19", + "weight": 1.0, + "_src": "dist_test_version_js", + "_tgt": "dist_test_version_probeclaudeversion", + "confidence_score": 1.0, + "source": "dist_test_version_js", + "target": "dist_test_version_probeclaudeversion" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/version.js", + "source_location": "L32", + "weight": 1.0, + "_src": "dist_test_version_js", + "_tgt": "dist_test_version_renderversion", + "confidence_score": 1.0, + "source": "dist_test_version_js", + "target": "dist_test_version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/version.js", + "source_location": "L34", + "weight": 1.0, + "_src": "dist_test_version_readclaudelyversion", + "_tgt": "dist_test_version_renderversion", + "confidence_score": 1.0, + "source": "dist_test_version_readclaudelyversion", + "target": "dist_test_version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/version.js", + "source_location": "L35", + "weight": 1.0, + "_src": "dist_test_version_probeclaudeversion", + "_tgt": "dist_test_version_renderversion", + "confidence_score": 1.0, + "source": "dist_test_version_probeclaudeversion", + "target": "dist_test_version_renderversion" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L19", + "weight": 1.0, + "_src": "dist_test_resume_js", + "_tgt": "dist_test_resume_isresumeintent", + "confidence_score": 1.0, + "source": "dist_test_resume_js", + "target": "dist_test_resume_isresumeintent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L31", + "weight": 1.0, + "_src": "dist_test_resume_js", + "_tgt": "dist_test_resume_assembleclaudeargv", + "confidence_score": 1.0, + "source": "dist_test_resume_js", + "target": "dist_test_resume_assembleclaudeargv" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L38", + "weight": 1.0, + "_src": "dist_test_resume_js", + "_tgt": "dist_test_resume_encodecwdforclaude", + "confidence_score": 1.0, + "source": "dist_test_resume_js", + "target": "dist_test_resume_encodecwdforclaude" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L41", + "weight": 1.0, + "_src": "dist_test_resume_js", + "_tgt": "dist_test_resume_hasrecentsessionforcwd", + "confidence_score": 1.0, + "source": "dist_test_resume_js", + "target": "dist_test_resume_hasrecentsessionforcwd" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L52", + "weight": 1.0, + "_src": "dist_test_resume_js", + "_tgt": "dist_test_resume_shouldautoresume", + "confidence_score": 1.0, + "source": "dist_test_resume_js", + "target": "dist_test_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L61", + "weight": 1.0, + "_src": "dist_test_resume_isresumeintent", + "_tgt": "dist_test_resume_shouldautoresume", + "confidence_score": 1.0, + "source": "dist_test_resume_isresumeintent", + "target": "dist_test_resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.js", + "source_location": "L43", + "weight": 1.0, + "_src": "dist_test_resume_encodecwdforclaude", + "_tgt": "dist_test_resume_hasrecentsessionforcwd", + "confidence_score": 1.0, + "source": "dist_test_resume_encodecwdforclaude", + "target": "dist_test_resume_hasrecentsessionforcwd" + }, + { + "relation": "calls", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "dist-test/resume.test.js", + "source_location": "L102", + "weight": 1.0, + "_src": "dist_test_resume_encodecwdforclaude", + "_tgt": "dist_test_resume_test_seedsessionfile", + "source": "dist_test_resume_encodecwdforclaude", + "target": "dist_test_resume_test_seedsessionfile" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/resume.test.js", + "source_location": "L101", + "weight": 1.0, + "_src": "dist_test_resume_test_js", + "_tgt": "dist_test_resume_test_seedsessionfile", + "confidence_score": 1.0, + "source": "dist_test_resume_test_js", + "target": "dist_test_resume_test_seedsessionfile" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/test-helpers.js", + "source_location": "L2", + "weight": 1.0, + "_src": "dist_test_test_helpers_js", + "_tgt": "dist_test_test_helpers_capturerealfetch", + "confidence_score": 1.0, + "source": "dist_test_test_helpers_js", + "target": "dist_test_test_helpers_capturerealfetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/test-helpers.js", + "source_location": "L5", + "weight": 1.0, + "_src": "dist_test_test_helpers_js", + "_tgt": "dist_test_test_helpers_restorefetch", + "confidence_score": 1.0, + "source": "dist_test_test_helpers_js", + "target": "dist_test_test_helpers_restorefetch" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "dist-test/test-helpers.js", + "source_location": "L8", + "weight": 1.0, + "_src": "dist_test_test_helpers_js", + "_tgt": "dist_test_test_helpers_mockfetch", + "confidence_score": 1.0, + "source": "dist_test_test_helpers_js", + "target": "dist_test_test_helpers_mockfetch" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 174, 213", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "cli_listforprovider", + "source": "cli_main", + "target": "cli_listforprovider" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 110", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "argsplit_splitargs", + "source": "cli_main", + "target": "argsplit_splitargs" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 143", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "version_renderversion", + "source": "cli_main", + "target": "version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 186", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "resume_shouldautoresume", + "source": "cli_main", + "target": "resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 189", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "resume_hasrecentsessionforcwd", + "source": "cli_main", + "target": "resume_hasrecentsessionforcwd" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 205", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "resume_isresumeintent", + "source": "cli_main", + "target": "resume_isresumeintent" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 266", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "resume_assembleclaudeargv", + "source": "cli_main", + "target": "resume_assembleclaudeargv" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 262", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "compat_loadsettings", + "source": "cli_main", + "target": "compat_loadsettings" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 263", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "compat_applycompat", + "source": "cli_main", + "target": "compat_applycompat" + }, + { + "relation": "reads", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 125", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "providers_registry", + "source": "cli_main", + "target": "providers_registry" + }, + { + "relation": "uses", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 110", + "weight": 0.8, + "_src": "cli_main", + "_tgt": "cli_flag_spec", + "source": "cli_main", + "target": "cli_flag_spec" + }, + { + "relation": "implemented_by", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "KV-cache speedup section", + "weight": 0.8, + "_src": "cli_main", + "_tgt": "concept_kv_cache_speedup", + "source": "cli_main", + "target": "concept_kv_cache_speedup" + }, + { + "relation": "specifies_changes_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 86-95", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "setup_wizard_design", + "source": "cli_main", + "target": "setup_wizard_design" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "dist-test/cli.js", + "source_location": "line 124-135", + "weight": 0.9, + "_src": "cli_main", + "_tgt": "setup_wizard_precedence", + "source": "cli_main", + "target": "setup_wizard_precedence" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 91", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "argsplit_module", + "source": "cli_main", + "target": "argsplit_module" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 141", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "listers_module", + "source": "cli_main", + "target": "listers_module" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 219-220", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "compat_module", + "source": "cli_main", + "target": "compat_module" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 152-169", + "weight": 1.0, + "_src": "cli_main", + "_tgt": "resume_module", + "source": "cli_main", + "target": "resume_module" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 122", + "weight": 0.8, + "_src": "cli_main", + "_tgt": "version_module", + "source": "cli_main", + "target": "version_module" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 204-212", + "weight": 0.9, + "_src": "cli_main", + "_tgt": "env_style_auth_pattern", + "source": "cli_main", + "target": "env_style_auth_pattern" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 215-218", + "weight": 0.7, + "_src": "cli_main", + "_tgt": "kv_cache_attribution_header", + "source": "cli_main", + "target": "kv_cache_attribution_header" + }, + { + "relation": "dispatches_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 98", + "weight": 1.0, + "_src": "cli_listforprovider", + "_tgt": "listers_listlmstudio", + "source": "cli_listforprovider", + "target": "listers_listlmstudio" + }, + { + "relation": "dispatches_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 99", + "weight": 1.0, + "_src": "cli_listforprovider", + "_tgt": "listers_listollama", + "source": "cli_listforprovider", + "target": "listers_listollama" + }, + { + "relation": "dispatches_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 102", + "weight": 1.0, + "_src": "cli_listforprovider", + "_tgt": "listers_listv1models", + "source": "cli_listforprovider", + "target": "listers_listv1models" + }, + { + "relation": "uses_type", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 92", + "weight": 0.8, + "_src": "cli_listforprovider", + "_tgt": "providers_provider", + "source": "cli_listforprovider", + "target": "providers_provider" + }, + { + "relation": "instance_of", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/cli.ts", + "source_location": "line 35", + "weight": 0.8, + "_src": "cli_flag_spec", + "_tgt": "argsplit_flagspec", + "source": "cli_flag_spec", + "target": "argsplit_flagspec" + }, + { + "relation": "uses_type", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 14", + "weight": 0.8, + "_src": "providers_provider", + "_tgt": "providers_envstyle", + "source": "providers_provider", + "target": "providers_envstyle" + }, + { + "relation": "uses_type", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 15", + "weight": 0.8, + "_src": "providers_provider", + "_tgt": "providers_listerkind", + "source": "providers_provider", + "target": "providers_listerkind" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "src/providers.ts", + "source_location": null, + "weight": 0.7, + "_src": "providers_envstyle", + "_tgt": "concept_env_style", + "source": "providers_envstyle", + "target": "concept_env_style" + }, + { + "relation": "maps_to", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/cli.ts", + "source_location": "line 96-103", + "weight": 0.8, + "_src": "providers_listerkind", + "_tgt": "listers_listlmstudio", + "source": "providers_listerkind", + "target": "listers_listlmstudio" + }, + { + "relation": "maps_to", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/cli.ts", + "source_location": "line 96-103", + "weight": 0.8, + "_src": "providers_listerkind", + "_tgt": "listers_listollama", + "source": "providers_listerkind", + "target": "listers_listollama" + }, + { + "relation": "maps_to", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/cli.ts", + "source_location": "line 96-103", + "weight": 0.8, + "_src": "providers_listerkind", + "_tgt": "listers_listv1models", + "source": "providers_listerkind", + "target": "listers_listv1models" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 20", + "weight": 1.0, + "_src": "providers_registry", + "_tgt": "providers_lmstudio", + "source": "providers_registry", + "target": "providers_lmstudio" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 29", + "weight": 1.0, + "_src": "providers_registry", + "_tgt": "providers_ollama", + "source": "providers_registry", + "target": "providers_ollama" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 38", + "weight": 1.0, + "_src": "providers_registry", + "_tgt": "providers_llamacpp", + "source": "providers_registry", + "target": "providers_llamacpp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/providers.ts", + "source_location": "line 49", + "weight": 1.0, + "_src": "providers_registry", + "_tgt": "providers_custom", + "source": "providers_registry", + "target": "providers_custom" + }, + { + "relation": "reads", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 67", + "weight": 0.9, + "_src": "providers_registry", + "_tgt": "setup_wizard_setup_ts", + "source": "providers_registry", + "target": "setup_wizard_setup_ts" + }, + { + "relation": "declares", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/providers.js", + "source_location": "line 8,19,30,39", + "weight": 0.9, + "_src": "providers_registry", + "_tgt": "env_style_auth_pattern", + "source": "providers_registry", + "target": "env_style_auth_pattern" + }, + { + "relation": "references_lister_key", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/providers.js", + "source_location": "line 12,21,31,39", + "weight": 0.9, + "_src": "providers_registry", + "_tgt": "listers_module", + "source": "providers_registry", + "target": "listers_module" + }, + { + "relation": "selects_lister", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/providers.ts", + "source_location": "line 26", + "weight": 0.8, + "_src": "providers_lmstudio", + "_tgt": "listers_listlmstudio", + "source": "providers_lmstudio", + "target": "listers_listlmstudio" + }, + { + "relation": "selects_lister", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/providers.ts", + "source_location": "line 35", + "weight": 0.8, + "_src": "providers_ollama", + "_tgt": "listers_listollama", + "source": "providers_ollama", + "target": "listers_listollama" + }, + { + "relation": "selects_lister", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/providers.ts", + "source_location": "line 45", + "weight": 0.8, + "_src": "providers_llamacpp", + "_tgt": "listers_listv1models", + "source": "providers_llamacpp", + "target": "listers_listv1models" + }, + { + "relation": "selects_lister", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/providers.ts", + "source_location": "line 53", + "weight": 0.8, + "_src": "providers_custom", + "_tgt": "listers_listv1models", + "source": "providers_custom", + "target": "listers_listv1models" + }, + { + "relation": "falls_back_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/listers.ts", + "source_location": "line 42, 58", + "weight": 1.0, + "_src": "listers_listlmstudio", + "_tgt": "listers_listv1models", + "source": "listers_listlmstudio", + "target": "listers_listv1models" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/listers.ts", + "source_location": null, + "weight": 0.8, + "_src": "listers_listlmstudio", + "_tgt": "concept_fallback_chain", + "source": "listers_listlmstudio", + "target": "concept_fallback_chain" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "src/listers.ts", + "source_location": null, + "weight": 0.7, + "_src": "listers_listlmstudio", + "_tgt": "listers_listollama", + "source": "listers_listlmstudio", + "target": "listers_listollama" + }, + { + "relation": "falls_back_to", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/listers.ts", + "source_location": "line 70, 85", + "weight": 1.0, + "_src": "listers_listollama", + "_tgt": "listers_listv1models", + "source": "listers_listollama", + "target": "listers_listv1models" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/listers.ts", + "source_location": null, + "weight": 0.8, + "_src": "listers_listollama", + "_tgt": "concept_fallback_chain", + "source": "listers_listollama", + "target": "concept_fallback_chain" + }, + { + "relation": "iterates", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/compat.ts", + "source_location": "line 58", + "weight": 1.0, + "_src": "compat_applycompat", + "_tgt": "compat_incompatibilities", + "source": "compat_applycompat", + "target": "compat_incompatibilities" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/compat.ts", + "source_location": null, + "weight": 0.8, + "_src": "compat_applycompat", + "_tgt": "concept_compat_clamping", + "source": "compat_applycompat", + "target": "concept_compat_clamping" + }, + { + "relation": "instance_of", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/compat.ts", + "source_location": "line 42", + "weight": 0.8, + "_src": "compat_incompatibilities", + "_tgt": "compat_incompatibility", + "source": "compat_incompatibilities", + "target": "compat_incompatibility" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/compat.ts", + "source_location": "line 48", + "weight": 1.0, + "_src": "compat_incompatibilities", + "_tgt": "compat_isanthropichost", + "source": "compat_incompatibilities", + "target": "compat_isanthropichost" + }, + { + "relation": "configured_by", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "src/compat.ts", + "source_location": null, + "weight": 0.7, + "_src": "compat_incompatibilities", + "_tgt": "concept_compat_clamping", + "source": "compat_incompatibilities", + "target": "concept_compat_clamping" + }, + { + "relation": "implemented_by", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "src/argsplit.ts", + "source_location": null, + "weight": 0.8, + "_src": "argsplit_splitargs", + "_tgt": "concept_arg_splitting", + "source": "argsplit_splitargs", + "target": "concept_arg_splitting" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/resume.ts", + "source_location": "line 84", + "weight": 1.0, + "_src": "resume_isresumeintent", + "_tgt": "resume_shouldautoresume", + "source": "resume_isresumeintent", + "target": "resume_shouldautoresume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/resume.ts", + "source_location": "line 59", + "weight": 1.0, + "_src": "resume_encodecwdforclaude", + "_tgt": "resume_hasrecentsessionforcwd", + "source": "resume_encodecwdforclaude", + "target": "resume_hasrecentsessionforcwd" + }, + { + "relation": "implemented_by", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CHANGELOG.md", + "source_location": "v0.1.4", + "weight": 0.9, + "_src": "resume_hasrecentsessionforcwd", + "_tgt": "concept_auto_resume", + "source": "resume_hasrecentsessionforcwd", + "target": "concept_auto_resume" + }, + { + "relation": "implemented_by", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CHANGELOG.md", + "source_location": "v0.1.4", + "weight": 0.9, + "_src": "resume_shouldautoresume", + "_tgt": "concept_auto_resume", + "source": "resume_shouldautoresume", + "target": "concept_auto_resume" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/version.ts", + "source_location": "line 43", + "weight": 1.0, + "_src": "version_readclaudelyversion", + "_tgt": "version_renderversion", + "source": "version_readclaudelyversion", + "target": "version_renderversion" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/version.ts", + "source_location": "line 44", + "weight": 1.0, + "_src": "version_probeclaudeversion", + "_tgt": "version_renderversion", + "source": "version_probeclaudeversion", + "target": "version_renderversion" + }, + { + "relation": "defines", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 23-30", + "weight": 1.0, + "_src": "setup_wizard_design", + "_tgt": "setup_wizard_claudely_config", + "source": "setup_wizard_design", + "target": "setup_wizard_claudely_config" + }, + { + "relation": "specifies_new_file", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 51", + "weight": 1.0, + "_src": "setup_wizard_design", + "_tgt": "setup_wizard_config_ts", + "source": "setup_wizard_design", + "target": "setup_wizard_config_ts" + }, + { + "relation": "specifies_new_file", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 60", + "weight": 1.0, + "_src": "setup_wizard_design", + "_tgt": "setup_wizard_setup_ts", + "source": "setup_wizard_design", + "target": "setup_wizard_setup_ts" + }, + { + "relation": "defines", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 37", + "weight": 1.0, + "_src": "setup_wizard_design", + "_tgt": "setup_wizard_precedence", + "source": "setup_wizard_design", + "target": "setup_wizard_precedence" + }, + { + "relation": "defines", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 13", + "weight": 1.0, + "_src": "setup_wizard_design", + "_tgt": "setup_wizard_config_paths", + "source": "setup_wizard_design", + "target": "setup_wizard_config_paths" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 80", + "weight": 1.0, + "_src": "setup_wizard_config_ts", + "_tgt": "setup_wizard_setup_ts", + "source": "setup_wizard_config_ts", + "target": "setup_wizard_setup_ts" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.7, + "source_file": null, + "source_location": null, + "weight": 0.6, + "_src": "setup_wizard_config_ts", + "_tgt": "compat_module", + "source": "setup_wizard_config_ts", + "target": "compat_module" + }, + { + "relation": "depends_on", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 67", + "weight": 0.8, + "_src": "setup_wizard_setup_ts", + "_tgt": "setup_wizard_inquirer_prompts", + "source": "setup_wizard_setup_ts", + "target": "setup_wizard_inquirer_prompts" + }, + { + "relation": "calls", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": "line 76-77", + "weight": 0.9, + "_src": "setup_wizard_setup_ts", + "_tgt": "listers_module", + "source": "setup_wizard_setup_ts", + "target": "listers_module" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "docs/superpowers/specs/2026-05-03-setup-wizard-design.md", + "source_location": null, + "weight": 0.5, + "_src": "setup_wizard_precedence", + "_tgt": "auto_resume_feature", + "source": "setup_wizard_precedence", + "target": "auto_resume_feature" + }, + { + "relation": "implements", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/listers.js", + "source_location": "line 15,33,58", + "weight": 1.0, + "_src": "listers_module", + "_tgt": "v1_models_fallback_pattern", + "source": "listers_module", + "target": "v1_models_fallback_pattern" + }, + { + "relation": "provides_test_infrastructure_for", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "dist-test/listers.test.js", + "source_location": "line 4", + "weight": 0.8, + "_src": "listers_module", + "_tgt": "test_helpers_module", + "source": "listers_module", + "target": "test_helpers_module" + }, + { + "relation": "implemented_by", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "dist-test/cli.js", + "source_location": "line 152-160", + "weight": 1.0, + "_src": "resume_module", + "_tgt": "auto_resume_feature", + "source": "resume_module", + "target": "auto_resume_feature" + }, + { + "label": "implemented in", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_wizard", + "_tgt": "setup_setup_ts", + "source": "setup_wizard", + "target": "setup_setup_ts" + }, + { + "label": "config values slot into precedence chain", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_wizard", + "_tgt": "setup_precedence_chain", + "source": "setup_wizard", + "target": "setup_precedence_chain" + }, + { + "label": "defines and uses interface", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_claudely_config", + "_tgt": "setup_config_ts", + "source": "setup_claudely_config", + "target": "setup_config_ts" + }, + { + "label": "returns ClaudelyConfig", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_claudely_config", + "_tgt": "setup_load_config", + "source": "setup_claudely_config", + "target": "setup_load_config" + }, + { + "label": "accepts ClaudelyConfig parameter", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_claudely_config", + "_tgt": "setup_save_config", + "source": "setup_claudely_config", + "target": "setup_save_config" + }, + { + "label": "imports loadConfig, saveConfig", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_setup_ts", + "source": "setup_config_ts", + "target": "setup_setup_ts" + }, + { + "label": "exports", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_load_config", + "source": "setup_config_ts", + "target": "setup_load_config" + }, + { + "label": "exports", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_save_config", + "source": "setup_config_ts", + "target": "setup_save_config" + }, + { + "label": "exports", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_config_dir", + "source": "setup_config_ts", + "target": "setup_config_dir" + }, + { + "label": "exports", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_config_path", + "source": "setup_config_ts", + "target": "setup_config_path" + }, + { + "label": "exports (moved from compat.ts)", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_load_settings", + "source": "setup_config_ts", + "target": "setup_load_settings" + }, + { + "label": "imports loadSettings from config.js (was compat.js)", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_cli_ts", + "source": "setup_config_ts", + "target": "setup_cli_ts" + }, + { + "label": "tests", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_ts", + "_tgt": "setup_config_test_ts", + "source": "setup_config_ts", + "target": "setup_config_test_ts" + }, + { + "label": "may re-export loadSettings for backwards compat", + "type": "AMBIGUOUS", + "confidence_score": 0.3, + "_src": "setup_config_ts", + "_tgt": "setup_compat_ts", + "source": "setup_config_ts", + "target": "setup_compat_ts" + }, + { + "label": "exports", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_setup_ts", + "_tgt": "setup_run_setup", + "source": "setup_setup_ts", + "target": "setup_run_setup" + }, + { + "label": "uses for interactive prompts", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_setup_ts", + "_tgt": "setup_inquirer_prompts", + "source": "setup_setup_ts", + "target": "setup_inquirer_prompts" + }, + { + "label": "reuses for model picker", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_setup_ts", + "_tgt": "setup_list_for_provider", + "source": "setup_setup_ts", + "target": "setup_list_for_provider" + }, + { + "label": "performs connection test in step 5", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_setup_ts", + "_tgt": "setup_connection_test", + "source": "setup_setup_ts", + "target": "setup_connection_test" + }, + { + "label": "moved from", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_compat_ts", + "_tgt": "setup_load_settings", + "source": "setup_compat_ts", + "target": "setup_load_settings" + }, + { + "label": "dispatches setup subcommand to runSetup()", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_cli_ts", + "_tgt": "setup_run_setup", + "source": "setup_cli_ts", + "target": "setup_run_setup" + }, + { + "label": "calls loadConfig() after parseArgs", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_cli_ts", + "_tgt": "setup_load_config", + "source": "setup_cli_ts", + "target": "setup_load_config" + }, + { + "label": "threads config into resolution per precedence", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_cli_ts", + "_tgt": "setup_precedence_chain", + "source": "setup_cli_ts", + "target": "setup_precedence_chain" + }, + { + "label": "resolves on linux", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_file_linux", + "_tgt": "setup_config_dir", + "source": "setup_config_file_linux", + "target": "setup_config_dir" + }, + { + "label": "resolves on macos", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_file_macos", + "_tgt": "setup_config_dir", + "source": "setup_config_file_macos", + "target": "setup_config_dir" + }, + { + "label": "resolves on windows", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_file_windows", + "_tgt": "setup_config_dir", + "source": "setup_config_file_windows", + "target": "setup_config_dir" + }, + { + "label": "delegates to configDir()", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_config_dir", + "_tgt": "setup_config_path", + "source": "setup_config_dir", + "target": "setup_config_path" + }, + { + "label": "on success, feeds models to picker", + "type": "EXTRACTED", + "confidence_score": 1.0, + "_src": "setup_connection_test", + "_tgt": "setup_list_for_provider", + "source": "setup_connection_test", + "target": "setup_list_for_provider" + } + ], + "hyperedges": [ + { + "nodes": [ + "setup_config_ts", + "setup_load_config", + "setup_save_config", + "setup_config_dir", + "setup_config_path", + "setup_load_settings" + ], + "label": "config.ts consolidates all config I/O functions", + "type": "EXTRACTED", + "confidence_score": 1.0 + }, + { + "nodes": [ + "setup_config_file_linux", + "setup_config_file_macos", + "setup_config_file_windows" + ], + "label": "Platform-native config file locations resolved by configDir()", + "type": "EXTRACTED", + "confidence_score": 1.0 + }, + { + "nodes": [ + "setup_cli_ts", + "setup_compat_ts", + "setup_config_ts" + ], + "label": "loadSettings decoupling: moved from compat.ts to config.ts, cli.ts import updated", + "type": "EXTRACTED", + "confidence_score": 1.0 + } + ] +} \ No newline at end of file