@cesarandreslopez/occ 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -8
- package/dist/src/cli.d.ts +16 -0
- package/dist/src/cli.js +46 -4
- package/dist/src/cli.js.map +1 -1
- package/dist/src/code/build.d.ts +22 -0
- package/dist/src/code/build.js +47 -13
- package/dist/src/code/build.js.map +1 -1
- package/dist/src/code/cache.js +30 -1
- package/dist/src/code/cache.js.map +1 -1
- package/dist/src/code/check.js +46 -6
- package/dist/src/code/check.js.map +1 -1
- package/dist/src/code/command.js +125 -69
- package/dist/src/code/command.js.map +1 -1
- package/dist/src/code/context.d.ts +54 -0
- package/dist/src/code/context.js +67 -0
- package/dist/src/code/context.js.map +1 -0
- package/dist/src/code/diff.d.ts +12 -2
- package/dist/src/code/diff.js +15 -3
- package/dist/src/code/diff.js.map +1 -1
- package/dist/src/code/discover.d.ts +2 -2
- package/dist/src/code/discover.js +8 -10
- package/dist/src/code/discover.js.map +1 -1
- package/dist/src/code/focus.js +34 -26
- package/dist/src/code/focus.js.map +1 -1
- package/dist/src/code/incremental.js +1 -1
- package/dist/src/code/incremental.js.map +1 -1
- package/dist/src/code/index-io.js +10 -2
- package/dist/src/code/index-io.js.map +1 -1
- package/dist/src/code/isolated-chunk-runner.js +17 -2
- package/dist/src/code/isolated-chunk-runner.js.map +1 -1
- package/dist/src/code/isolated-runner.js +17 -3
- package/dist/src/code/isolated-runner.js.map +1 -1
- package/dist/src/code/isolated.js +32 -6
- package/dist/src/code/isolated.js.map +1 -1
- package/dist/src/code/languages.js +23 -3
- package/dist/src/code/languages.js.map +1 -1
- package/dist/src/code/map.d.ts +47 -0
- package/dist/src/code/map.js +155 -12
- package/dist/src/code/map.js.map +1 -1
- package/dist/src/code/output.d.ts +3 -1
- package/dist/src/code/output.js +11 -0
- package/dist/src/code/output.js.map +1 -1
- package/dist/src/code/parsers.js +115 -36
- package/dist/src/code/parsers.js.map +1 -1
- package/dist/src/code/preview.js +24 -22
- package/dist/src/code/preview.js.map +1 -1
- package/dist/src/code/query.js +0 -0
- package/dist/src/code/query.js.map +1 -1
- package/dist/src/code/search.d.ts +39 -0
- package/dist/src/code/search.js +154 -0
- package/dist/src/code/search.js.map +1 -0
- package/dist/src/code/session.d.ts +9 -3
- package/dist/src/code/session.js +16 -4
- package/dist/src/code/session.js.map +1 -1
- package/dist/src/code/slim.d.ts +2 -0
- package/dist/src/code/slim.js +16 -1
- package/dist/src/code/slim.js.map +1 -1
- package/dist/src/code/store.d.ts +23 -0
- package/dist/src/code/store.js +61 -6
- package/dist/src/code/store.js.map +1 -1
- package/dist/src/code/tree-sitter.d.ts +1 -0
- package/dist/src/code/tree-sitter.js +11 -10
- package/dist/src/code/tree-sitter.js.map +1 -1
- package/dist/src/code/tree.d.ts +7 -0
- package/dist/src/code/tree.js +364 -0
- package/dist/src/code/tree.js.map +1 -0
- package/dist/src/code/types.d.ts +131 -0
- package/dist/src/code/types.js +47 -0
- package/dist/src/code/types.js.map +1 -1
- package/dist/src/doc/batch.d.ts +2 -0
- package/dist/src/doc/batch.js +3 -1
- package/dist/src/doc/batch.js.map +1 -1
- package/dist/src/doc/discover.js +2 -2
- package/dist/src/doc/discover.js.map +1 -1
- package/dist/src/doc/inspect-odt.js +3 -1
- package/dist/src/doc/inspect-odt.js.map +1 -1
- package/dist/src/doc/inspect-pdf.d.ts +6 -0
- package/dist/src/doc/inspect-pdf.js +11 -1
- package/dist/src/doc/inspect-pdf.js.map +1 -1
- package/dist/src/doc/inspect.js +2 -2
- package/dist/src/doc/inspect.js.map +1 -1
- package/dist/src/doc/types.d.ts +1 -0
- package/dist/src/doc/types.js +7 -0
- package/dist/src/doc/types.js.map +1 -1
- package/dist/src/git/api.d.ts +7 -1
- package/dist/src/git/api.js +32 -10
- package/dist/src/git/api.js.map +1 -1
- package/dist/src/git/client.js +5 -1
- package/dist/src/git/client.js.map +1 -1
- package/dist/src/git/command.js +22 -2
- package/dist/src/git/command.js.map +1 -1
- package/dist/src/git/output.d.ts +2 -1
- package/dist/src/git/output.js +7 -1
- package/dist/src/git/output.js.map +1 -1
- package/dist/src/git/parse.d.ts +2 -1
- package/dist/src/git/parse.js +222 -2
- package/dist/src/git/parse.js.map +1 -1
- package/dist/src/git/types.d.ts +49 -5
- package/dist/src/git/types.js +21 -0
- package/dist/src/git/types.js.map +1 -1
- package/dist/src/health.d.ts +8 -0
- package/dist/src/health.js +15 -0
- package/dist/src/health.js.map +1 -1
- package/dist/src/index.d.ts +23 -11
- package/dist/src/index.js +14 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/inspect/xlsx-cells.js +4 -2
- package/dist/src/inspect/xlsx-cells.js.map +1 -1
- package/dist/src/markdown/convert.d.ts +9 -0
- package/dist/src/markdown/convert.js +23 -1
- package/dist/src/markdown/convert.js.map +1 -1
- package/dist/src/output/tabular.js +33 -16
- package/dist/src/output/tabular.js.map +1 -1
- package/dist/src/parsers/odf.js +4 -2
- package/dist/src/parsers/odf.js.map +1 -1
- package/dist/src/scc.d.ts +3 -0
- package/dist/src/scc.js +2 -0
- package/dist/src/scc.js.map +1 -1
- package/dist/src/skills/command.d.ts +6 -0
- package/dist/src/skills/command.js +18 -3
- package/dist/src/skills/command.js.map +1 -1
- package/dist/src/slide/inspect-odp.js +3 -2
- package/dist/src/slide/inspect-odp.js.map +1 -1
- package/dist/src/slide/inspect-pptx.js +4 -3
- package/dist/src/slide/inspect-pptx.js.map +1 -1
- package/dist/src/stats.js +3 -1
- package/dist/src/stats.js.map +1 -1
- package/dist/src/structure/extract.js +16 -3
- package/dist/src/structure/extract.js.map +1 -1
- package/dist/src/utils.d.ts +7 -0
- package/dist/src/utils.js +19 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/walker.js +15 -3
- package/dist/src/walker.js.map +1 -1
- package/dist/src/workspace/analyze.d.ts +3 -0
- package/dist/src/workspace/analyze.js +26 -15
- package/dist/src/workspace/analyze.js.map +1 -1
- package/dist/src/workspace/bundle.js +11 -3
- package/dist/src/workspace/bundle.js.map +1 -1
- package/dist/src/workspace/command.d.ts +6 -0
- package/dist/src/workspace/command.js +73 -44
- package/dist/src/workspace/command.js.map +1 -1
- package/dist/src/workspace/describe.js +22 -13
- package/dist/src/workspace/describe.js.map +1 -1
- package/dist/src/workspace/documents.d.ts +3 -0
- package/dist/src/workspace/documents.js +25 -14
- package/dist/src/workspace/documents.js.map +1 -1
- package/dist/src/workspace/prepare.js +3 -1
- package/dist/src/workspace/prepare.js.map +1 -1
- package/dist/src/workspace/types.d.ts +4 -0
- package/package.json +12 -11
- package/skills/occ/SKILL.md +27 -24
- package/skills/occ/reference/code.md +62 -1
- package/skills/occ/reference/git.md +17 -1
package/README.md
CHANGED
|
@@ -24,9 +24,9 @@ OCC started as a way to make office documents visible in the same workflows that
|
|
|
24
24
|
- extract structured table content from documents (`occ table inspect`)
|
|
25
25
|
- analyze workspaces for combined code, document, and structure metrics (`occ workspace analyze`) and cross-document references (`occ workspace documents`)
|
|
26
26
|
- quickly describe whether a directory is a code, office, documentation, data, or mixed project (`occ describe`, `occ workspace describe`)
|
|
27
|
-
- summarize code metrics through `scc`
|
|
27
|
+
- summarize code metrics and file-level complexity through `scc`
|
|
28
28
|
- explore JavaScript, TypeScript, Vue Single-File Components, Python, Go, Rust, Java, C/C++, Kotlin, and other tree-sitter-backed repositories with symbol search, exact `nodeId` source reads, syntax checks, call analysis, dependency inspection, and inheritance queries (`occ code`)
|
|
29
|
-
- track git changes, diffs, commit history, and
|
|
29
|
+
- track git changes, diffs, commit history, churn, and file-level co-change — and map a diff to the code symbols it touches (`occ git`, `occ code diff`, `occ code history`)
|
|
30
30
|
|
|
31
31
|
## Agent Skills
|
|
32
32
|
|
|
@@ -68,11 +68,12 @@ After install the skill lands at `<skills-dir>/occ/SKILL.md` and your agent surf
|
|
|
68
68
|
- **Spreadsheet inspection via `occ sheet inspect`** — workbook properties, hidden sheets, names, formulas, links, comments, schema preview, and token estimates for XLSX
|
|
69
69
|
- **Presentation inspection via `occ slide inspect`** — metadata, risk flags, per-slide inventory, and content preview for PPTX and ODP
|
|
70
70
|
- **Table extraction via `occ table inspect`** — structured table content from DOCX, XLSX, PPTX, ODT, and ODP with auto-detected headers, sample row limits, and merged cell support
|
|
71
|
-
- **Code metrics via scc** — auto-detects code files and integrates scc output
|
|
71
|
+
- **Code metrics via scc** — auto-detects code files and integrates scc output, including file-level `Complexity` where scc provides it
|
|
72
72
|
- **Code exploration via `occ code`** — JS/TS, Vue SFC, Python, Go, Rust, Java, C/C++, Kotlin, and other tree-sitter-backed symbol lookup, exact `nodeId` source reads with `occ code source`, syntax checks with `occ code check`, content search, callers/callees, dependency categories, inheritance, module coupling, and ambiguity-aware chains
|
|
73
73
|
- **Repository map / pack via `occ code map` / `occ code pack`** — token-budgeted, PageRank-ranked repo map (top symbol signatures per file) or content pack, with a pluggable heuristic or BPE (`o200k_base` / `cl100k_base`) tokenizer for exact budgets, and opt-in query/path focus (`--query`, `--focus-path`, `--focus-depth`) to bias the map toward a specific task
|
|
74
74
|
- **Workspace analysis via `occ workspace`** — fast directory description plus combined code, document, and structure analysis with versioned JSON contracts, per-document summaries, and cross-reference detection
|
|
75
|
-
- **
|
|
75
|
+
- **Directory tree via `occ code dirtree`** — bounded, ignore-aware trees from the built code index with focus drill-in and map-mode symbol annotations
|
|
76
|
+
- **Git context via `occ git`** — changed files, diff summaries and token-bounded patches, commit/file history, churn hotspots, and file-level co-change over a typed, shell-injection-safe git client; plus git-aware code (`occ code diff`, `occ code history`, `occ code map --changed-from`) that maps a diff to the code symbols it touches
|
|
76
77
|
- **Multiple output modes** — grouped by type, per-file breakdown, or JSON
|
|
77
78
|
- **CI-friendly** — ASCII-only, no-color mode for pipelines
|
|
78
79
|
- **Flexible filtering** — include/exclude extensions, exclude directories, .gitignore-aware
|
|
@@ -162,6 +163,7 @@ occ code index --path . --format json
|
|
|
162
163
|
# Token-budgeted, PageRank-ranked repo map (signatures) and pack (content)
|
|
163
164
|
occ code map --path . --map-tokens 4096
|
|
164
165
|
occ code pack --path . --map-tokens 8192 --tokenizer o200k_base
|
|
166
|
+
occ code dirtree --path . --mode map --map-tokens 4096
|
|
165
167
|
|
|
166
168
|
# Git-aware code: which symbols a diff touched, and a diff-focused repo map
|
|
167
169
|
occ code diff --base main --map-tokens 4096
|
|
@@ -173,6 +175,7 @@ occ git changed --base main
|
|
|
173
175
|
occ git diff --base main --patch --map-tokens 2048
|
|
174
176
|
occ git history src/cli.ts --limit 10
|
|
175
177
|
occ git churn --sort churn --limit 20
|
|
178
|
+
occ git cochange --target src/cli.ts --limit 20
|
|
176
179
|
|
|
177
180
|
# Workspace-level analysis (code + documents + structures)
|
|
178
181
|
occ workspace analyze --format json
|
|
@@ -310,6 +313,9 @@ occ code analyze chain ambiguousCaller duplicate --path test/fixtures/code-explo
|
|
|
310
313
|
occ code map --path . --map-tokens 4096
|
|
311
314
|
occ code pack --path . --map-tokens 8192 --tokenizer o200k_base
|
|
312
315
|
|
|
316
|
+
# Bounded directory tree from the built, ignore-aware code index
|
|
317
|
+
occ code dirtree --path . --mode map --map-tokens 4096
|
|
318
|
+
|
|
313
319
|
# Focus the map on a task — by query and/or path (with graph neighbors)
|
|
314
320
|
occ code map --path . --query "workspace context injection" --focus-path src/services/memory --map-tokens 4096
|
|
315
321
|
|
|
@@ -324,9 +330,13 @@ Highlights of the current code exploration behavior:
|
|
|
324
330
|
|
|
325
331
|
- **Full index export** via `occ code index` — dump the complete graph (files, symbols, edges, language capabilities) as JSON or a summary line
|
|
326
332
|
- **Repository map and pack** via `occ code map` / `occ code pack` — PageRank-ranked, token-budgeted output (symbol signatures or file content) that greedily admits the highest-ranked files within the budget, shrinking content or shedding low-rank symbols rather than dropping a file that nearly fits, with a pluggable heuristic or BPE tokenizer (`--tokenizer o200k_base|cl100k_base`)
|
|
333
|
+
- **Directory tree** via `occ code dirtree` / `buildDirectoryTree` / `session.getDirectoryTree` — bounded, ignore-aware tree output derived from `CodebaseIndex.files` with `truncatedPaths` for drill-in and map mode for top symbol signatures per subtree
|
|
327
334
|
- **Focused maps** via `--query`, `--focus-path` (repeatable), and `--focus-depth` — opt-in, additive relevance scoring (query + path + graph neighbors) blended with the global rank so task-relevant files surface within the budget; omitting the flags keeps the global PageRank overview unchanged
|
|
328
335
|
- **Change-aware exploration** via `occ code diff` (symbols touched by a git diff range, with removed-symbol recovery), `occ code history <symbol>` (git line history for a symbol), and `occ code map --changed-from <ref>` (diff-focused repo maps)
|
|
329
336
|
- **Exact, pattern, type, and content search** over the repository graph
|
|
337
|
+
- **Fuzzy symbol search** via `searchSymbols` / `session.searchSymbols` (`createOcc().code.searchSymbols`) — rank symbols across name, container-qualified name, and file path with match positions/spans for highlighting; the corpus is memoized per index so repeated queries in long-running hosts pay the build once
|
|
338
|
+
- **Code-context projection** via `buildCodeContext` / `session.projectContext` (`createOcc().code.context`) — project a full or slim index down to per-file exported symbols, a deduplicated local import graph, and external dependency roots
|
|
339
|
+
- **Symbol→node linkage** — index `files[].symbols[]` entries (and the slim format, `occ code map` / `find` / `index` JSON) carry a `nodeId`, so a file symbol addresses its graph node directly without scanning `nodes`
|
|
330
340
|
- **Single-symbol source reads** via `occ code source` — read one symbol body by stable `nodeId` (from `occ code map` / `find` / `index` JSON) or a disambiguated name, reading file content on demand and refusing paths that escape the repo root
|
|
331
341
|
- **Language-server-free syntax checks** via `occ code check` — TS/JS, Vue SFC, Python, and the vendored tree-sitter languages; exits nonzero only when `valid` is false
|
|
332
342
|
- **Call analysis** with explicit `resolved`, `ambiguous`, and `unresolved` states
|
|
@@ -360,8 +370,10 @@ import { createCodeQuerySession } from '@cesarandreslopez/occ/code/session';
|
|
|
360
370
|
const session = await createCodeQuerySession({ repoRoot: './my-repo' });
|
|
361
371
|
session.findByName('UserService');
|
|
362
372
|
session.analyzeCalls('bootstrap');
|
|
373
|
+
session.searchSymbols('usrsvc', { limit: 10 }); // fuzzy match across name, container, and path
|
|
374
|
+
session.projectContext(); // per-file exports + local import graph + external dependency roots
|
|
363
375
|
session.chunk({ maxChunkWords: 200 });
|
|
364
|
-
await session.refresh(); // rebuild index when files change
|
|
376
|
+
await session.refresh(); // rebuild index when files change (accepts an optional AbortSignal)
|
|
365
377
|
```
|
|
366
378
|
|
|
367
379
|
For persistent caching across sessions with automatic freshness checks:
|
|
@@ -374,6 +386,12 @@ const store = openCodeIndexStore({
|
|
|
374
386
|
cacheDir: '.occ-cache',
|
|
375
387
|
});
|
|
376
388
|
|
|
389
|
+
// Probe the persisted cache cheaply — before the first getSession() and without
|
|
390
|
+
// deserializing the index or reparsing files (both return null when no usable
|
|
391
|
+
// cache exists yet). Handy for long-running hosts deciding whether to refresh.
|
|
392
|
+
const meta = await store.peekMetadata(); // persisted metadata, validated against repo/options/version
|
|
393
|
+
const freshness = await store.isFresh(); // stat-only working-tree vs. manifest diff
|
|
394
|
+
|
|
377
395
|
// First call builds + caches; subsequent calls load from cache
|
|
378
396
|
const session = await store.getSession({ strategy: 'prefer-cache' });
|
|
379
397
|
session.findByName('UserService');
|
|
@@ -395,8 +413,11 @@ const session = await occ.code.createSession({ repoRoot: './my-repo' });
|
|
|
395
413
|
const description = await occ.workspace.describe('./my-project');
|
|
396
414
|
const analysis = await occ.workspace.analyze('./my-project', { includeCode: true });
|
|
397
415
|
const doc = await occ.doc.inspect('report.docx', {});
|
|
416
|
+
const status = await occ.health(); // version, capability flags, and a `features` map for probing
|
|
398
417
|
```
|
|
399
418
|
|
|
419
|
+
The facade also exposes the code helpers directly: `occ.code.searchSymbols(index, query, options)` (fuzzy symbol search), `occ.code.context(index)` (per-file exports + local import graph), `occ.code.mapChanged(index, { changed, ...RepoMapOptions })` (the programmatic form of `occ code map --changed-from`), `occ.code.directoryTree(index, options)` / `session.getDirectoryTree(options)`, and `occ.git.cochange(options)`. Hosts that must support multiple OCC versions can feature-detect with `status.features?.['code.directoryTree'] === true`, `status.features?.['git.cochange'] === true`, or `status.features?.['metrics.fileComplexity'] === true` — the map only ever gains keys, so a missing key means the feature is unavailable.
|
|
420
|
+
|
|
400
421
|
For large or untrusted repositories, preview the size first, then build the index in an isolated subprocess with a budget. Pair with the slim variant when the consumer only needs the graph (no source content):
|
|
401
422
|
|
|
402
423
|
```ts
|
|
@@ -493,7 +514,7 @@ Available subpath exports:
|
|
|
493
514
|
| `@cesarandreslopez/occ/code/build` | `buildCodebaseIndex` — graph construction (with optional `maxFiles`/`maxBytes`/`onBudgetExceeded` budget controls and `CodeIndexBudgetExceededError`); also `parseCodeFiles` (bounded-concurrency parse pool) + `assembleCodebaseIndex` for staged indexing |
|
|
494
515
|
| `@cesarandreslopez/occ/code/types` | TypeScript types (`CodebaseIndex`, `CodeNode`, `CodeEdge`, `IndexTruncation`, etc.) |
|
|
495
516
|
| `@cesarandreslopez/occ/code/query` | Query functions (`findByName`, `analyzeCalls`, `analyzeDeps`, etc.) |
|
|
496
|
-
| `@cesarandreslopez/occ/code/discover` | `discoverCodeFiles` — file discovery
|
|
517
|
+
| `@cesarandreslopez/occ/code/discover` | `discoverCodeFiles` — code file discovery (defaults to the shared `DEFAULT_EXCLUDE_DIRS`, re-exported here and from the package root — now also covering `out`, `.next`, `__pycache__`, and `.venv`) |
|
|
497
518
|
| `@cesarandreslopez/occ/code/preview` | `previewCodebaseSize` — cheap size + per-language estimate without parsing, with budget pressure reporting |
|
|
498
519
|
| `@cesarandreslopez/occ/code/isolated` | `buildCodebaseIndexIsolated` — runs `buildCodebaseIndex` in a forked subprocess, optionally returning a slim index; also `chunkFromStoreIsolated` — runs store-backed code chunking in a forked subprocess (options `ChunkFromStoreIsolatedOptions`, `SerializableCodeChunkOptions`) |
|
|
499
520
|
| `@cesarandreslopez/occ/code/incremental` | `computeManifestDiff`, `classifyChangedFiles`, `findResolutionImpactedFiles`, `spliceIndexInputs` — primitives behind incremental `update()`/`ensureFresh()` (manifest diff + resolution-impact + graph splice) |
|
|
@@ -503,7 +524,7 @@ Available subpath exports:
|
|
|
503
524
|
| `@cesarandreslopez/occ/code/store` | `openCodeIndexStore`, `openChunkCodeIndexStore` — persistent index store with cache strategies (the chunk variant pins `contentMode: 'full'`; `update(changedFiles?)` does a true incremental refresh — manifest diff + targeted re-parse + graph splice; `chunkIsolated(options?)` chunks the cached index in a forked subprocess) |
|
|
504
525
|
| `@cesarandreslopez/occ/code/cache` | Index caching utilities (legacy — prefer `./code/store`) |
|
|
505
526
|
| `@cesarandreslopez/occ/code/diff` | `computeCodeDiff`, `joinHunksToSymbols` — map a git diff range to changed code symbols (added/removed/modified, new/removed exports, removed-symbol recovery) |
|
|
506
|
-
| `@cesarandreslopez/occ/git` | Git context API — `getGitChangedFiles`, `getGitDiffSummary`, `getGitDiffPatch`, `getGitDiffHunks`, `getGitDiffFunctionContext`, `getGitCommitHistory`, `getGitFileHistory`, `getGitChurnSummary`, `resolveGitRange` (also `./git/types`, `./git/api`, `./git/client`, `./git/parse`)
|
|
527
|
+
| `@cesarandreslopez/occ/git` | Git context API — `getGitChangedFiles`, `getGitDiffSummary`, `getGitDiffPatch`, `getGitDiffHunks`, `getGitDiffFunctionContext`, `getGitCommitHistory`, `getGitFileHistory`, `getGitChurnSummary`, `getGitCochange`, `resolveGitRange` (also `./git/types`, `./git/api`, `./git/client`, `./git/parse`) |
|
|
507
528
|
| `@cesarandreslopez/occ/doc/inspect` | `inspectDocument` — document metadata and content extraction |
|
|
508
529
|
| `@cesarandreslopez/occ/doc/types` | Document inspection types |
|
|
509
530
|
| `@cesarandreslopez/occ/doc/discover` | Document file discovery (now includes prose formats by default; opt into data files via `includeDataFiles`; new `discoverDocumentSet` returns `{ documents, skipped }`) |
|
|
@@ -526,7 +547,7 @@ Available subpath exports:
|
|
|
526
547
|
| `@cesarandreslopez/occ/slide/inspect` | `inspectPresentation` — presentation inspection |
|
|
527
548
|
| `@cesarandreslopez/occ/table/inspect` | Table extraction from documents |
|
|
528
549
|
| `@cesarandreslopez/occ/table/types` | Table extraction types |
|
|
529
|
-
| `@cesarandreslopez/occ/health` | `health()` — liveness probe with version
|
|
550
|
+
| `@cesarandreslopez/occ/health` | `health()` — liveness probe with version, capability flags, and a stable `features` map (only-added keys like `code.searchSymbols` / `store.isFresh`) for fine-grained feature detection |
|
|
530
551
|
| `@cesarandreslopez/occ/errors` | `OccAbortError`, `OCC_ABORTED`, `isOccAbortError` — typed abort error that survives `instanceof` across forked subprocesses |
|
|
531
552
|
| `@cesarandreslopez/occ/types` | Shared types (`ConfidenceLevel`, `ParseResult`, `ParserOutput`, etc.) |
|
|
532
553
|
| `@cesarandreslopez/occ/tokens` | Token estimation utilities |
|
|
@@ -703,6 +724,7 @@ occ git history src/cli.ts --line-start 10 --line-end 50
|
|
|
703
724
|
|
|
704
725
|
# Rank changed files by churn to find hotspots
|
|
705
726
|
occ git churn --sort churn --limit 20 --format json
|
|
727
|
+
occ git cochange --target src/cli.ts --limit 20 --format json
|
|
706
728
|
```
|
|
707
729
|
|
|
708
730
|
Current git context highlights:
|
|
@@ -711,6 +733,7 @@ Current git context highlights:
|
|
|
711
733
|
- **`occ git diff`** — per-file churn summary, or the raw unified patch with `--patch`, token-bounded via `--map-tokens` / `--tokenizer` (degrades gracefully, reporting `filesOmitted`, when the diff exceeds the git buffer)
|
|
712
734
|
- **`occ git history`** — commit history for a range, or per-file history with `--follow`, `--since`, `--limit`, and line-scoped `git log -L` via `--line-start` / `--line-end`
|
|
713
735
|
- **`occ git churn`** — files ranked by `--sort churn|commits|added|deleted|net` (default `churn`) with commit, addition, deletion, net, and last-touched metrics
|
|
736
|
+
- **`occ git cochange`** — file pairs ranked by historical co-change count and lift, with `--target` for one-file impact context and `--max-commit-files` to ignore sweeping commits
|
|
714
737
|
- **Symbol-level changes** — pair with `occ code diff` to see which _symbols_ (not just files and lines) a diff touched
|
|
715
738
|
|
|
716
739
|
## Documentation
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -19,6 +19,22 @@ declare const CliOptionsSchema: z.ZodObject<{
|
|
|
19
19
|
showConfidence: z.ZodOptional<z.ZodBoolean>;
|
|
20
20
|
}, z.core.$loose>;
|
|
21
21
|
type CliOptions = z.infer<typeof CliOptionsSchema>;
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the scc binary, degrading to null (documents-only) when scc is not
|
|
24
|
+
* available instead of aborting the whole scan. Returns a warning string when
|
|
25
|
+
* scc could not be found so the caller can surface it without failing.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveSccBinary(resolve?: () => Promise<string>): Promise<{
|
|
28
|
+
binary: string | null;
|
|
29
|
+
warning: string | null;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Translate directory-style ignore patterns into scc --exclude-dir names. scc
|
|
33
|
+
* excludes by directory basename, so only single-segment directory patterns
|
|
34
|
+
* (optionally with a trailing slash, `/**`, or `/*`) can be forwarded; negations,
|
|
35
|
+
* multi-segment paths, and wildcard patterns are left to apply to documents only.
|
|
36
|
+
*/
|
|
37
|
+
export declare function deriveSccExcludeDirs(ignorePatterns: string[]): string[];
|
|
22
38
|
export declare function run(argv: string[]): Promise<void>;
|
|
23
39
|
export declare function applyTokenBudget(output: string, opts: CliOptions): Promise<string>;
|
|
24
40
|
export {};
|
package/dist/src/cli.js
CHANGED
|
@@ -48,6 +48,45 @@ const CliOptionsSchema = z
|
|
|
48
48
|
function collectOption(value, previous = []) {
|
|
49
49
|
return [...previous, value];
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve the scc binary, degrading to null (documents-only) when scc is not
|
|
53
|
+
* available instead of aborting the whole scan. Returns a warning string when
|
|
54
|
+
* scc could not be found so the caller can surface it without failing.
|
|
55
|
+
*/
|
|
56
|
+
export async function resolveSccBinary(resolve = checkScc) {
|
|
57
|
+
try {
|
|
58
|
+
return { binary: await resolve(), warning: null };
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return {
|
|
62
|
+
binary: null,
|
|
63
|
+
warning: 'scc not found; skipping code analysis (documents only). ' +
|
|
64
|
+
'Run "npm install" to auto-download it, or install from https://github.com/boyter/scc.',
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Translate directory-style ignore patterns into scc --exclude-dir names. scc
|
|
70
|
+
* excludes by directory basename, so only single-segment directory patterns
|
|
71
|
+
* (optionally with a trailing slash, `/**`, or `/*`) can be forwarded; negations,
|
|
72
|
+
* multi-segment paths, and wildcard patterns are left to apply to documents only.
|
|
73
|
+
*/
|
|
74
|
+
export function deriveSccExcludeDirs(ignorePatterns) {
|
|
75
|
+
const dirs = [];
|
|
76
|
+
for (const raw of ignorePatterns) {
|
|
77
|
+
const pattern = raw.trim();
|
|
78
|
+
if (!pattern || pattern.startsWith('!') || pattern.startsWith('#'))
|
|
79
|
+
continue;
|
|
80
|
+
const stripped = pattern.replace(/^\.?\/+/, '').replace(/\/(\*\*|\*)?$/, '');
|
|
81
|
+
if (!stripped || stripped === '.' || stripped === '..')
|
|
82
|
+
continue;
|
|
83
|
+
if (/[/*?[\]{}]/.test(stripped))
|
|
84
|
+
continue;
|
|
85
|
+
if (!dirs.includes(stripped))
|
|
86
|
+
dirs.push(stripped);
|
|
87
|
+
}
|
|
88
|
+
return dirs;
|
|
89
|
+
}
|
|
51
90
|
const PackageJsonSchema = z.object({ version: z.string() }).passthrough();
|
|
52
91
|
// Find package.json — works from both src/ (dev) and dist/src/ (built)
|
|
53
92
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -75,7 +114,7 @@ export async function run(argv) {
|
|
|
75
114
|
.option('--include-ext <exts>', 'comma-separated extensions to include')
|
|
76
115
|
.option('--exclude-ext <exts>', 'comma-separated extensions to exclude')
|
|
77
116
|
.option('--exclude-dir <dirs>', 'directories to skip (comma-separated)', 'node_modules,.git')
|
|
78
|
-
.option('--ignore-pattern <pattern>', 'gitignore-style pattern to ignore', collectOption, [])
|
|
117
|
+
.option('--ignore-pattern <pattern>', 'gitignore-style pattern to ignore (directory-name patterns also excluded from code metrics)', collectOption, [])
|
|
79
118
|
.option('--no-gitignore', 'disable .gitignore respect')
|
|
80
119
|
// Note: this is a global option, so it is inherited by every subcommand. It is
|
|
81
120
|
// intentionally not constrained with .choices() because subcommands (e.g. `git churn`)
|
|
@@ -206,7 +245,10 @@ async function execute(directories, opts) {
|
|
|
206
245
|
const includeCode = opts.code !== false;
|
|
207
246
|
let sccBinary = null;
|
|
208
247
|
if (includeCode) {
|
|
209
|
-
|
|
248
|
+
const resolved = await resolveSccBinary();
|
|
249
|
+
sccBinary = resolved.binary;
|
|
250
|
+
if (resolved.warning)
|
|
251
|
+
await writeStream(process.stderr, `Warning: ${resolved.warning}\n`);
|
|
210
252
|
}
|
|
211
253
|
// Find and parse office documents
|
|
212
254
|
const { files, skipped } = await findFiles(directories, {
|
|
@@ -230,12 +272,12 @@ async function execute(directories, opts) {
|
|
|
230
272
|
showConfidence: opts.showConfidence,
|
|
231
273
|
});
|
|
232
274
|
let sccData = null;
|
|
233
|
-
if (includeCode) {
|
|
275
|
+
if (includeCode && sccBinary) {
|
|
234
276
|
if (showProgress)
|
|
235
277
|
process.stderr.write('\rAnalyzing code with scc...');
|
|
236
278
|
sccData = await runScc(sccBinary, directories, {
|
|
237
279
|
byFile: opts.byFile,
|
|
238
|
-
excludeDir: excludeDirs,
|
|
280
|
+
excludeDir: [...excludeDirs, ...deriveSccExcludeDirs(opts.ignorePattern ?? [])],
|
|
239
281
|
sort: opts.sort,
|
|
240
282
|
ci: opts.ci,
|
|
241
283
|
noGitignore: !opts.gitignore,
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/code/build.d.ts
CHANGED
|
@@ -78,6 +78,22 @@ export declare class CodeIndexBudgetExceededError extends Error {
|
|
|
78
78
|
readonly budget: CodeIndexBudget;
|
|
79
79
|
constructor(budget: CodeIndexBudget);
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Pre-parse stat snapshot for a file retained by the build. Structurally
|
|
83
|
+
* compatible with the incremental manifest entry shape. Captured BEFORE
|
|
84
|
+
* parsing, so an edit made while the build is running diverges from the
|
|
85
|
+
* recorded stat and is detected by the next freshness check.
|
|
86
|
+
*/
|
|
87
|
+
export interface BuildFileStat {
|
|
88
|
+
relativePath: string;
|
|
89
|
+
size: number;
|
|
90
|
+
mtimeMs: number;
|
|
91
|
+
}
|
|
92
|
+
export interface BuildCodebaseResult {
|
|
93
|
+
index: CodebaseIndex;
|
|
94
|
+
/** Stats for the budgeted file set, keyed for manifest reuse by stores. */
|
|
95
|
+
fileStats: BuildFileStat[];
|
|
96
|
+
}
|
|
81
97
|
/**
|
|
82
98
|
* Parse `files` with bounded concurrency. Both result arrays are returned in
|
|
83
99
|
* input order (per-slot results are compacted after the pool drains).
|
|
@@ -86,5 +102,11 @@ export declare class CodeIndexBudgetExceededError extends Error {
|
|
|
86
102
|
*/
|
|
87
103
|
export declare function parseCodeFiles(files: string[], options: ParseCodeFilesOptions, onProgress?: OnProgress, signal?: AbortSignal, yielder?: Yielder): Promise<ParseCodeFilesResult>;
|
|
88
104
|
export declare function buildCodebaseIndex(options: BuildCodebaseOptions, onProgress?: OnProgress, signal?: AbortSignal): Promise<CodebaseIndex>;
|
|
105
|
+
/**
|
|
106
|
+
* Like {@link buildCodebaseIndex}, but also returns the pre-parse stat
|
|
107
|
+
* snapshot of the budgeted file set so callers persisting a freshness
|
|
108
|
+
* manifest don't have to re-stat every file after the build.
|
|
109
|
+
*/
|
|
110
|
+
export declare function buildCodebaseIndexWithStats(options: BuildCodebaseOptions, onProgress?: OnProgress, signal?: AbortSignal): Promise<BuildCodebaseResult>;
|
|
89
111
|
export declare function assembleCodebaseIndex(input: AssembleCodebaseIndexInput, onProgress?: OnProgress, signal?: AbortSignal): CodebaseIndex;
|
|
90
112
|
export declare function assembleCodebaseIndexCooperative(input: AssembleCodebaseIndexInput, yielder: Yielder, onProgress?: OnProgress, signal?: AbortSignal): Promise<CodebaseIndex>;
|
package/dist/src/code/build.js
CHANGED
|
@@ -107,7 +107,7 @@ async function withFileSizes(filePaths, signal) {
|
|
|
107
107
|
const statted = await mapWithConcurrency(filePaths, 32, async (filePath) => {
|
|
108
108
|
try {
|
|
109
109
|
const fileStat = await stat(filePath);
|
|
110
|
-
return fileStat.isFile() ? { path: filePath, size: fileStat.size } : null;
|
|
110
|
+
return fileStat.isFile() ? { path: filePath, size: fileStat.size, mtimeMs: fileStat.mtimeMs } : null;
|
|
111
111
|
}
|
|
112
112
|
catch {
|
|
113
113
|
// Files can disappear between discovery and stat; they are dropped from
|
|
@@ -329,6 +329,15 @@ export async function parseCodeFiles(files, options, onProgress, signal, yielder
|
|
|
329
329
|
return { parsedFiles, skippedFiles };
|
|
330
330
|
}
|
|
331
331
|
export async function buildCodebaseIndex(options, onProgress, signal) {
|
|
332
|
+
const { index } = await buildCodebaseIndexWithStats(options, onProgress, signal);
|
|
333
|
+
return index;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Like {@link buildCodebaseIndex}, but also returns the pre-parse stat
|
|
337
|
+
* snapshot of the budgeted file set so callers persisting a freshness
|
|
338
|
+
* manifest don't have to re-stat every file after the build.
|
|
339
|
+
*/
|
|
340
|
+
export async function buildCodebaseIndexWithStats(options, onProgress, signal) {
|
|
332
341
|
const repoRoot = path.resolve(options.repoRoot);
|
|
333
342
|
const contentMode = options.contentMode ?? 'excerpt';
|
|
334
343
|
const cooperative = isCooperative(options.cooperative);
|
|
@@ -366,9 +375,18 @@ export async function buildCodebaseIndex(options, onProgress, signal) {
|
|
|
366
375
|
skippedFiles,
|
|
367
376
|
truncated: budgeted.truncated,
|
|
368
377
|
};
|
|
369
|
-
|
|
370
|
-
? assembleCodebaseIndexCooperative(input, yielder, onProgress, signal)
|
|
378
|
+
const index = yielder
|
|
379
|
+
? await assembleCodebaseIndexCooperative(input, yielder, onProgress, signal)
|
|
371
380
|
: assembleCodebaseIndex(input, onProgress, signal);
|
|
381
|
+
const budgetedPaths = new Set(budgeted.files);
|
|
382
|
+
const fileStats = discoveredWithSizes
|
|
383
|
+
.filter(file => budgetedPaths.has(file.path))
|
|
384
|
+
.map(file => ({
|
|
385
|
+
relativePath: normalizePath(path.relative(repoRoot, file.path)),
|
|
386
|
+
size: file.size,
|
|
387
|
+
mtimeMs: file.mtimeMs,
|
|
388
|
+
}));
|
|
389
|
+
return { index, fileStats };
|
|
372
390
|
}
|
|
373
391
|
/**
|
|
374
392
|
* Assemble the node/edge graph from already-parsed files. Synchronous —
|
|
@@ -437,8 +455,14 @@ function* assembleSteps(input, onProgress, signal) {
|
|
|
437
455
|
});
|
|
438
456
|
const symbolIndex = new Map();
|
|
439
457
|
for (const symbol of file.symbols) {
|
|
440
|
-
|
|
441
|
-
|
|
458
|
+
// Containers can be classes or interface-like types (interfaces, traits,
|
|
459
|
+
// protocols). Rebuild the container id exactly as the container node's own
|
|
460
|
+
// id is constructed below so member `contains` edges resolve to a real node.
|
|
461
|
+
const container = symbol.containerName
|
|
462
|
+
? file.symbols.find(candidate => (candidate.type === 'class' || candidate.type === 'interface') && candidate.name === symbol.containerName)
|
|
463
|
+
: undefined;
|
|
464
|
+
const containerId = container
|
|
465
|
+
? makeId(container.type, file.path, container.name, container.line, container.containerName)
|
|
442
466
|
: moduleNode.id;
|
|
443
467
|
const node = {
|
|
444
468
|
id: makeId(symbol.type, file.path, symbol.name, symbol.line, symbol.containerName),
|
|
@@ -457,6 +481,10 @@ function* assembleSteps(input, onProgress, signal) {
|
|
|
457
481
|
signature: symbol.signature,
|
|
458
482
|
};
|
|
459
483
|
pushNode(node);
|
|
484
|
+
// Stamp the graph linkage onto the file symbol so index consumers can
|
|
485
|
+
// jump from files[].symbols[] to nodes without a scan. Node ids are
|
|
486
|
+
// deterministic, so re-assembly over cached parses stamps identically.
|
|
487
|
+
symbol.nodeId = node.id;
|
|
460
488
|
symbolByIdentity.set(makeId(symbol.type, file.path, symbol.name, symbol.line, symbol.containerName), node);
|
|
461
489
|
mapPush(symbolIndex, symbol.name, node);
|
|
462
490
|
edges.push({
|
|
@@ -506,12 +534,18 @@ function* assembleSteps(input, onProgress, signal) {
|
|
|
506
534
|
const sourceSymbols = topLevelSymbolsByFile.get(fileImport.resolvedPath);
|
|
507
535
|
if (sourceSymbols) {
|
|
508
536
|
for (const name of sourceSymbols.keys()) {
|
|
509
|
-
fileMap.set(name, fileImport.resolvedPath);
|
|
537
|
+
fileMap.set(name, { path: fileImport.resolvedPath, sourceName: name });
|
|
510
538
|
}
|
|
511
539
|
}
|
|
512
540
|
}
|
|
513
541
|
else {
|
|
514
|
-
|
|
542
|
+
// For aliased re-exports (`export { foo as baz }`) the source module
|
|
543
|
+
// exports the original name, so resolution must look it up by
|
|
544
|
+
// importedName, not the outward alias.
|
|
545
|
+
fileMap.set(binding.localName, {
|
|
546
|
+
path: fileImport.resolvedPath,
|
|
547
|
+
sourceName: binding.importedName ?? binding.localName,
|
|
548
|
+
});
|
|
515
549
|
}
|
|
516
550
|
}
|
|
517
551
|
}
|
|
@@ -666,9 +700,9 @@ function* assembleSteps(input, onProgress, signal) {
|
|
|
666
700
|
else if (namespaceBinding?.modulePath) {
|
|
667
701
|
let importedFileSymbols = topLevelSymbolsByFile.get(namespaceBinding.modulePath)?.get(call.calleeName) ?? [];
|
|
668
702
|
if (importedFileSymbols.length === 0) {
|
|
669
|
-
const
|
|
670
|
-
if (
|
|
671
|
-
importedFileSymbols = topLevelSymbolsByFile.get(
|
|
703
|
+
const reExport = reExportsByFile.get(namespaceBinding.modulePath)?.get(call.calleeName);
|
|
704
|
+
if (reExport) {
|
|
705
|
+
importedFileSymbols = topLevelSymbolsByFile.get(reExport.path)?.get(reExport.sourceName) ?? [];
|
|
672
706
|
}
|
|
673
707
|
}
|
|
674
708
|
if (importedFileSymbols.length > 0)
|
|
@@ -678,9 +712,9 @@ function* assembleSteps(input, onProgress, signal) {
|
|
|
678
712
|
const symbolName = directBinding.importedName ?? call.calleeName;
|
|
679
713
|
let importedFileSymbols = topLevelSymbolsByFile.get(directBinding.modulePath)?.get(symbolName) ?? [];
|
|
680
714
|
if (importedFileSymbols.length === 0) {
|
|
681
|
-
const
|
|
682
|
-
if (
|
|
683
|
-
importedFileSymbols = topLevelSymbolsByFile.get(
|
|
715
|
+
const reExport = reExportsByFile.get(directBinding.modulePath)?.get(symbolName);
|
|
716
|
+
if (reExport) {
|
|
717
|
+
importedFileSymbols = topLevelSymbolsByFile.get(reExport.path)?.get(reExport.sourceName) ?? [];
|
|
684
718
|
}
|
|
685
719
|
}
|
|
686
720
|
if (importedFileSymbols.length > 0)
|