@cesarandreslopez/occ 0.8.12 → 0.9.1

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.
Files changed (193) hide show
  1. package/README.md +170 -79
  2. package/dist/src/cli-validation.js +3 -11
  3. package/dist/src/cli-validation.js.map +1 -1
  4. package/dist/src/cli.js +23 -11
  5. package/dist/src/cli.js.map +1 -1
  6. package/dist/src/code/build.d.ts +6 -7
  7. package/dist/src/code/build.js +62 -28
  8. package/dist/src/code/build.js.map +1 -1
  9. package/dist/src/code/cache.js +3 -1
  10. package/dist/src/code/cache.js.map +1 -1
  11. package/dist/src/code/chunk.d.ts +2 -0
  12. package/dist/src/code/chunk.js +16 -4
  13. package/dist/src/code/chunk.js.map +1 -1
  14. package/dist/src/code/command.js +147 -37
  15. package/dist/src/code/command.js.map +1 -1
  16. package/dist/src/code/diff.d.ts +264 -0
  17. package/dist/src/code/diff.js +504 -0
  18. package/dist/src/code/diff.js.map +1 -0
  19. package/dist/src/code/discover.js +5 -5
  20. package/dist/src/code/discover.js.map +1 -1
  21. package/dist/src/code/focus.js +5 -5
  22. package/dist/src/code/focus.js.map +1 -1
  23. package/dist/src/code/incremental.js +11 -9
  24. package/dist/src/code/incremental.js.map +1 -1
  25. package/dist/src/code/index-io.d.ts +2 -0
  26. package/dist/src/code/index-io.js +2 -2
  27. package/dist/src/code/index-io.js.map +1 -1
  28. package/dist/src/code/isolated-runner.js.map +1 -1
  29. package/dist/src/code/isolated.js +2 -2
  30. package/dist/src/code/isolated.js.map +1 -1
  31. package/dist/src/code/languages.js +2 -2
  32. package/dist/src/code/languages.js.map +1 -1
  33. package/dist/src/code/map.d.ts +12 -0
  34. package/dist/src/code/map.js +22 -9
  35. package/dist/src/code/map.js.map +1 -1
  36. package/dist/src/code/output.d.ts +3 -0
  37. package/dist/src/code/output.js +39 -22
  38. package/dist/src/code/output.js.map +1 -1
  39. package/dist/src/code/parsers.js +87 -26
  40. package/dist/src/code/parsers.js.map +1 -1
  41. package/dist/src/code/query.js +44 -38
  42. package/dist/src/code/query.js.map +1 -1
  43. package/dist/src/code/rank.js +30 -17
  44. package/dist/src/code/rank.js.map +1 -1
  45. package/dist/src/code/session.js.map +1 -1
  46. package/dist/src/code/slim.d.ts +2 -0
  47. package/dist/src/code/slim.js +23 -8
  48. package/dist/src/code/slim.js.map +1 -1
  49. package/dist/src/code/store.d.ts +6 -8
  50. package/dist/src/code/store.js +57 -41
  51. package/dist/src/code/store.js.map +1 -1
  52. package/dist/src/code/types.js +15 -3
  53. package/dist/src/code/types.js.map +1 -1
  54. package/dist/src/doc/batch.js +6 -2
  55. package/dist/src/doc/batch.js.map +1 -1
  56. package/dist/src/doc/chunk.js +9 -5
  57. package/dist/src/doc/chunk.js.map +1 -1
  58. package/dist/src/doc/command.js +18 -9
  59. package/dist/src/doc/command.js.map +1 -1
  60. package/dist/src/doc/discover.d.ts +1 -1
  61. package/dist/src/doc/discover.js.map +1 -1
  62. package/dist/src/doc/entities.js +90 -10
  63. package/dist/src/doc/entities.js.map +1 -1
  64. package/dist/src/doc/inspect-docx.js +5 -4
  65. package/dist/src/doc/inspect-docx.js.map +1 -1
  66. package/dist/src/doc/inspect-odt.js.map +1 -1
  67. package/dist/src/doc/inspect-pdf.js +1 -1
  68. package/dist/src/doc/inspect-pdf.js.map +1 -1
  69. package/dist/src/doc/inspect.js +4 -4
  70. package/dist/src/doc/inspect.js.map +1 -1
  71. package/dist/src/doc/output.js +11 -8
  72. package/dist/src/doc/output.js.map +1 -1
  73. package/dist/src/doc/references.js +4 -4
  74. package/dist/src/doc/references.js.map +1 -1
  75. package/dist/src/errors.js +2 -4
  76. package/dist/src/errors.js.map +1 -1
  77. package/dist/src/git/api.d.ts +34 -0
  78. package/dist/src/git/api.js +247 -0
  79. package/dist/src/git/api.js.map +1 -0
  80. package/dist/src/git/client.d.ts +48 -0
  81. package/dist/src/git/client.js +336 -0
  82. package/dist/src/git/client.js.map +1 -0
  83. package/dist/src/git/command.d.ts +2 -0
  84. package/dist/src/git/command.js +173 -0
  85. package/dist/src/git/command.js.map +1 -0
  86. package/dist/src/git/index.d.ts +5 -0
  87. package/dist/src/git/index.js +6 -0
  88. package/dist/src/git/index.js.map +1 -0
  89. package/dist/src/git/output.d.ts +8 -0
  90. package/dist/src/git/output.js +38 -0
  91. package/dist/src/git/output.js.map +1 -0
  92. package/dist/src/git/parse.d.ts +19 -0
  93. package/dist/src/git/parse.js +354 -0
  94. package/dist/src/git/parse.js.map +1 -0
  95. package/dist/src/git/types.d.ts +334 -0
  96. package/dist/src/git/types.js +135 -0
  97. package/dist/src/git/types.js.map +1 -0
  98. package/dist/src/index.d.ts +38 -12
  99. package/dist/src/index.js +27 -7
  100. package/dist/src/index.js.map +1 -1
  101. package/dist/src/inspect/shared.js.map +1 -1
  102. package/dist/src/markdown/convert.js +17 -11
  103. package/dist/src/markdown/convert.js.map +1 -1
  104. package/dist/src/output/tabular.js +25 -17
  105. package/dist/src/output/tabular.js.map +1 -1
  106. package/dist/src/output/tree.js +7 -7
  107. package/dist/src/output/tree.js.map +1 -1
  108. package/dist/src/parsers/docx.js +1 -1
  109. package/dist/src/parsers/docx.js.map +1 -1
  110. package/dist/src/parsers/index.js +9 -7
  111. package/dist/src/parsers/index.js.map +1 -1
  112. package/dist/src/parsers/pdf.js +1 -1
  113. package/dist/src/parsers/pdf.js.map +1 -1
  114. package/dist/src/parsers/pptx.js.map +1 -1
  115. package/dist/src/parsers/xlsx.js +5 -3
  116. package/dist/src/parsers/xlsx.js.map +1 -1
  117. package/dist/src/scc.js +9 -5
  118. package/dist/src/scc.js.map +1 -1
  119. package/dist/src/sheet/command.js +11 -7
  120. package/dist/src/sheet/command.js.map +1 -1
  121. package/dist/src/sheet/inspect.js +14 -14
  122. package/dist/src/sheet/inspect.js.map +1 -1
  123. package/dist/src/sheet/output.js +10 -15
  124. package/dist/src/sheet/output.js.map +1 -1
  125. package/dist/src/skills/command.d.ts +2 -0
  126. package/dist/src/skills/command.js +188 -0
  127. package/dist/src/skills/command.js.map +1 -0
  128. package/dist/src/slide/command.js +8 -6
  129. package/dist/src/slide/command.js.map +1 -1
  130. package/dist/src/slide/inspect-odp.js.map +1 -1
  131. package/dist/src/slide/inspect-pptx.js +5 -2
  132. package/dist/src/slide/inspect-pptx.js.map +1 -1
  133. package/dist/src/slide/inspect.js +4 -2
  134. package/dist/src/slide/inspect.js.map +1 -1
  135. package/dist/src/slide/output.js +10 -15
  136. package/dist/src/slide/output.js.map +1 -1
  137. package/dist/src/slide/types.js.map +1 -1
  138. package/dist/src/stats.js +31 -3
  139. package/dist/src/stats.js.map +1 -1
  140. package/dist/src/table/command.js +8 -6
  141. package/dist/src/table/command.js.map +1 -1
  142. package/dist/src/table/inspect-docx.js +1 -1
  143. package/dist/src/table/inspect-docx.js.map +1 -1
  144. package/dist/src/table/inspect-odt.js.map +1 -1
  145. package/dist/src/table/inspect-pptx.js +5 -2
  146. package/dist/src/table/inspect-pptx.js.map +1 -1
  147. package/dist/src/table/inspect-xlsx.js +1 -1
  148. package/dist/src/table/inspect-xlsx.js.map +1 -1
  149. package/dist/src/table/inspect.js +3 -1
  150. package/dist/src/table/inspect.js.map +1 -1
  151. package/dist/src/table/output.js +7 -11
  152. package/dist/src/table/output.js.map +1 -1
  153. package/dist/src/table/types.js.map +1 -1
  154. package/dist/src/tokens.js +1 -1
  155. package/dist/src/tokens.js.map +1 -1
  156. package/dist/src/utils.d.ts +14 -0
  157. package/dist/src/utils.js +32 -11
  158. package/dist/src/utils.js.map +1 -1
  159. package/dist/src/walker.js +2 -4
  160. package/dist/src/walker.js.map +1 -1
  161. package/dist/src/workspace/analyze.js +4 -4
  162. package/dist/src/workspace/analyze.js.map +1 -1
  163. package/dist/src/workspace/bundle-io.d.ts +14 -0
  164. package/dist/src/workspace/bundle-io.js +81 -0
  165. package/dist/src/workspace/bundle-io.js.map +1 -0
  166. package/dist/src/workspace/bundle-runner.d.ts +5 -0
  167. package/dist/src/workspace/bundle-runner.js +50 -0
  168. package/dist/src/workspace/bundle-runner.js.map +1 -0
  169. package/dist/src/workspace/bundle.d.ts +14 -0
  170. package/dist/src/workspace/bundle.js +315 -71
  171. package/dist/src/workspace/bundle.js.map +1 -1
  172. package/dist/src/workspace/command.js +31 -16
  173. package/dist/src/workspace/command.js.map +1 -1
  174. package/dist/src/workspace/describe-output.js +10 -9
  175. package/dist/src/workspace/describe-output.js.map +1 -1
  176. package/dist/src/workspace/describe.js +54 -47
  177. package/dist/src/workspace/describe.js.map +1 -1
  178. package/dist/src/workspace/documents.js +28 -8
  179. package/dist/src/workspace/documents.js.map +1 -1
  180. package/dist/src/workspace/prepare-runner.js.map +1 -1
  181. package/dist/src/workspace/prepare-types.js.map +1 -1
  182. package/dist/src/workspace/prepare.js +38 -19
  183. package/dist/src/workspace/prepare.js.map +1 -1
  184. package/dist/src/workspace/types.js +4 -2
  185. package/dist/src/workspace/types.js.map +1 -1
  186. package/package.json +57 -4
  187. package/scripts/postinstall.js +13 -9
  188. package/skills/occ/SKILL.md +77 -0
  189. package/skills/occ/reference/code.md +69 -0
  190. package/skills/occ/reference/commands.md +66 -0
  191. package/skills/occ/reference/documents.md +65 -0
  192. package/skills/occ/reference/git.md +55 -0
  193. package/skills/occ/reference/workspace.md +65 -0
package/README.md CHANGED
@@ -26,6 +26,38 @@ OCC started as a way to make office documents visible in the same workflows that
26
26
  - quickly describe whether a directory is a code, office, documentation, data, or mixed project (`occ describe`, `occ workspace describe`)
27
27
  - summarize code metrics through `scc`
28
28
  - explore JavaScript, TypeScript, Vue Single-File Components, and Python repositories with symbol search, call analysis, dependency inspection, and inheritance queries (`occ code`)
29
+ - track git changes, diffs, commit history, and churn — and map a diff to the code symbols it touches (`occ git`, `occ code diff`, `occ code history`)
30
+
31
+ ## Agent Skills
32
+
33
+ OCC ships an **Agent Skill** so AI coding agents can automatically learn how to use the CLI. It uses the open `SKILL.md` format read by **Claude Code**, **OpenAI Codex**, and other agents — a single umbrella `occ` skill with a decision/router table covering workspace reconnaissance, office-document and table triage, and code exploration, plus on-demand reference files for deeper detail. Humans can read the same files as concise CLI recipes.
34
+
35
+ The skill ships inside the package (`node_modules/@cesarandreslopez/occ/skills/`). Install it explicitly into your agent(s):
36
+
37
+ ```bash
38
+ # Install for all supported agents into your user skills dir
39
+ occ skills install # ~/.claude/skills/occ and ~/.codex/skills/occ
40
+
41
+ # Project-local install (per-repo, checked in if you like)
42
+ occ skills install --project # ./.claude/skills/occ
43
+
44
+ # Pick one agent, force overwrite, or symlink for live updates
45
+ occ skills install --agent claude --force
46
+ occ skills install --link
47
+
48
+ # Inspect what's bundled
49
+ occ skills list
50
+ occ skills path
51
+ ```
52
+
53
+ Claude Code users can also install it as a plugin straight from git:
54
+
55
+ ```text
56
+ /plugin marketplace add cesarandreslopez/occ
57
+ /plugin install occ@occ
58
+ ```
59
+
60
+ After install the skill lands at `<skills-dir>/occ/SKILL.md` and your agent surfaces it automatically when a task involves exploring a repository or office documents.
29
61
 
30
62
  ## Features
31
63
 
@@ -40,10 +72,12 @@ OCC started as a way to make office documents visible in the same workflows that
40
72
  - **Code exploration via `occ code`** — JS/TS, Vue SFC, and Python-first symbol lookup, content search, callers/callees, dependency categories, inheritance, module coupling, and ambiguity-aware chains
41
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
42
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
+ - **Git context via `occ git`** — changed files, diff summaries and token-bounded patches, commit/file history, and churn hotspots 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
43
76
  - **Multiple output modes** — grouped by type, per-file breakdown, or JSON
44
77
  - **CI-friendly** — ASCII-only, no-color mode for pipelines
45
78
  - **Flexible filtering** — include/exclude extensions, exclude directories, .gitignore-aware
46
79
  - **Progress bar** — with ETA for large scans
80
+ - **Agent Skills** — ships a universal `SKILL.md` skill (Claude Code + OpenAI Codex) installable via `occ skills install`
47
81
  - **Zero config** — auto-downloads scc binary on install, works out of the box
48
82
 
49
83
  ## Quick Start
@@ -124,6 +158,17 @@ occ code index --path . --format json
124
158
  occ code map --path . --map-tokens 4096
125
159
  occ code pack --path . --map-tokens 8192 --tokenizer o200k_base
126
160
 
161
+ # Git-aware code: which symbols a diff touched, and a diff-focused repo map
162
+ occ code diff --base main --map-tokens 4096
163
+ occ code history UserService --limit 10
164
+ occ code map --path . --changed-from main --map-tokens 4096
165
+
166
+ # Inspect git changes, history, and churn
167
+ occ git changed --base main
168
+ occ git diff --base main --patch --map-tokens 2048
169
+ occ git history src/cli.ts --limit 10
170
+ occ git churn --sort churn --limit 20
171
+
127
172
  # Workspace-level analysis (code + documents + structures)
128
173
  occ workspace analyze --format json
129
174
 
@@ -187,36 +232,36 @@ Scanned 23 documents (56,750 words, 201 pages) in 120ms
187
232
 
188
233
  ## Supported Formats
189
234
 
190
- | Format | Extension | Metrics | Structure |
191
- |--------|-----------|---------|-----------|
192
- | Word | `.docx` | words, pages*, paragraphs | Yes |
193
- | PDF | `.pdf` | words, pages | Yes (with page mapping) |
194
- | Excel | `.xlsx` | sheets, rows, cells | — |
195
- | PowerPoint | `.pptx` | words, slides | Yes (slide headers) |
196
- | ODT | `.odt` | words, pages*, paragraphs | Yes (best-effort) |
197
- | ODS | `.ods` | sheets, rows, cells | — |
198
- | ODP | `.odp` | words, slides | Yes (slide headers) |
235
+ | Format | Extension | Metrics | Structure |
236
+ | ---------- | --------- | -------------------------- | ----------------------- |
237
+ | Word | `.docx` | words, pages\*, paragraphs | Yes |
238
+ | PDF | `.pdf` | words, pages | Yes (with page mapping) |
239
+ | Excel | `.xlsx` | sheets, rows, cells | — |
240
+ | PowerPoint | `.pptx` | words, slides | Yes (slide headers) |
241
+ | ODT | `.odt` | words, pages\*, paragraphs | Yes (best-effort) |
242
+ | ODS | `.ods` | sheets, rows, cells | — |
243
+ | ODP | `.odp` | words, slides | Yes (slide headers) |
199
244
 
200
245
  \* Pages for Word/ODT are estimated at 250 words/page.
201
246
 
202
247
  ## CLI Flags
203
248
 
204
- | Flag | Description | Default |
205
- |------|-------------|---------|
206
- | `--by-file` / `-f` | Row per file | grouped by type |
207
- | `--format <type>` | `tabular` or `json` | `tabular` |
208
- | `--structure` | Extract and display document heading hierarchy | off |
209
- | `--include-ext <exts>` | Comma-separated extensions | all supported |
210
- | `--exclude-ext <exts>` | Comma-separated to skip | none |
211
- | `--exclude-dir <dirs>` | Directories to skip | `node_modules,.git` |
212
- | `--ignore-pattern <pattern>` | Gitignore-style pattern to ignore (repeatable) | none |
213
- | `--no-gitignore` | Disable .gitignore respect | enabled |
214
- | `--sort <col>` | Sort by: files, name, words, size | `files` |
215
- | `--output <file>` / `-o` | Write to file | stdout |
216
- | `--ci` | ASCII-only, no color | off |
217
- | `--large-file-limit <mb>` | Skip files over this size | `50` |
218
- | `--no-code` | Skip scc code analysis | off |
219
- | `--show-confidence` | Show confidence levels for each metric | off |
249
+ | Flag | Description | Default |
250
+ | ---------------------------- | ---------------------------------------------- | ------------------- |
251
+ | `--by-file` / `-f` | Row per file | grouped by type |
252
+ | `--format <type>` | `tabular` or `json` | `tabular` |
253
+ | `--structure` | Extract and display document heading hierarchy | off |
254
+ | `--include-ext <exts>` | Comma-separated extensions | all supported |
255
+ | `--exclude-ext <exts>` | Comma-separated to skip | none |
256
+ | `--exclude-dir <dirs>` | Directories to skip | `node_modules,.git` |
257
+ | `--ignore-pattern <pattern>` | Gitignore-style pattern to ignore (repeatable) | none |
258
+ | `--no-gitignore` | Disable .gitignore respect | enabled |
259
+ | `--sort <col>` | Sort by: files, name, words, size | `files` |
260
+ | `--output <file>` / `-o` | Write to file | stdout |
261
+ | `--ci` | ASCII-only, no color | off |
262
+ | `--large-file-limit <mb>` | Skip files over this size | `50` |
263
+ | `--no-code` | Skip scc code analysis | off |
264
+ | `--show-confidence` | Show confidence levels for each metric | off |
220
265
 
221
266
  ## Code Exploration
222
267
 
@@ -254,6 +299,12 @@ occ code pack --path . --map-tokens 8192 --tokenizer o200k_base
254
299
 
255
300
  # Focus the map on a task — by query and/or path (with graph neighbors)
256
301
  occ code map --path . --query "workspace context injection" --focus-path src/services/memory --map-tokens 4096
302
+
303
+ # Change-aware: which symbols a git diff touched, the git history for a symbol,
304
+ # and a repo map focused on the files changed since a base ref
305
+ occ code diff --base main --map-tokens 4096
306
+ occ code history UserService --limit 10
307
+ occ code map --path . --changed-from main --map-tokens 4096
257
308
  ```
258
309
 
259
310
  Highlights of the current code exploration behavior:
@@ -261,6 +312,7 @@ Highlights of the current code exploration behavior:
261
312
  - **Full index export** via `occ code index` — dump the complete graph (files, symbols, edges, language capabilities) as JSON or a summary line
262
313
  - **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`)
263
314
  - **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
315
+ - **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)
264
316
  - **Exact, pattern, type, and content search** over the repository graph
265
317
  - **Call analysis** with explicit `resolved`, `ambiguous`, and `unresolved` states
266
318
  - **Receiver-aware method resolution** for `this`, `super`, `self`, and `cls`
@@ -381,17 +433,20 @@ import { createOcc } from '@cesarandreslopez/occ';
381
433
  const occ = createOcc();
382
434
  const bundle = await occ.workspace.bundle('./my-project', {
383
435
  includeDocumentChunks: true,
384
- includeCorpusChunks: true, // unified, deterministically-ordered code + document chunks
436
+ includeCorpusChunks: true, // unified, deterministically-ordered code + document chunks
437
+ cooperative: true, // yield during in-process CPU work so callers sharing the event loop stay responsive
385
438
  maxCodeFiles: 5_000,
386
439
  maxCodeBytes: 32 * 1024 * 1024,
387
440
  });
388
441
 
389
- console.log(bundle.outline); // root → projects → modules → documents → sections
390
- console.log(bundle.codeDocumentReferences); // per-symbol matches inside markdown content
391
- console.log(bundle.documentChunks?.length); // heading-aware token-budgeted document chunks
392
- console.log(bundle.corpusChunks?.length); // merged code + document chunks (WorkspaceCorpusChunk[]) for RAG
442
+ console.log(bundle.outline); // root → projects → modules → documents → sections
443
+ console.log(bundle.codeDocumentReferences); // per-symbol matches inside markdown content
444
+ console.log(bundle.documentChunks?.length); // heading-aware token-budgeted document chunks
445
+ console.log(bundle.corpusChunks?.length); // merged code + document chunks (WorkspaceCorpusChunk[]) for RAG
393
446
  ```
394
447
 
448
+ `bundleWorkspace` also supports `offThread: true`, which runs the whole bundle in a forked child process. Use it with `cacheDir` (or no store); a caller-provided `store` instance cannot cross the process boundary. When `includeCodeChunks` or `includeCorpusChunks` is enabled, OCC must read full code content because chunks contain source text. The returned `codeIndex` is still slim by default; to limit transient full-content memory, lower `maxCodeFiles`/`maxCodeBytes` or scope `codeChunk.files`.
449
+
395
450
  For heading-aware token-budgeted document chunking (RAG-friendly):
396
451
 
397
452
  ```ts
@@ -418,48 +473,50 @@ const callGraph = session.toMermaid('call-graph', 'bootstrap');
418
473
 
419
474
  Available subpath exports:
420
475
 
421
- | Import path | Description |
422
- |-------------|-------------|
423
- | `@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 |
424
- | `@cesarandreslopez/occ/code/types` | TypeScript types (`CodebaseIndex`, `CodeNode`, `CodeEdge`, `IndexTruncation`, etc.) |
425
- | `@cesarandreslopez/occ/code/query` | Query functions (`findByName`, `analyzeCalls`, `analyzeDeps`, etc.) |
426
- | `@cesarandreslopez/occ/code/discover` | `discoverCodeFiles` — file discovery |
427
- | `@cesarandreslopez/occ/code/preview` | `previewCodebaseSize` — cheap size + per-language estimate without parsing, with budget pressure reporting |
428
- | `@cesarandreslopez/occ/code/isolated` | `buildCodebaseIndexIsolated` — runs `buildCodebaseIndex` in a forked subprocess, optionally returning a slim index |
429
- | `@cesarandreslopez/occ/code/incremental` | `computeManifestDiff`, `classifyChangedFiles`, `findResolutionImpactedFiles`, `spliceIndexInputs` — primitives behind incremental `update()`/`ensureFresh()` (manifest diff + resolution-impact + graph splice) |
430
- | `@cesarandreslopez/occ/code/slim` | `slimifyIndex`, `parseSlimIndex`, `validateSlimIndex` — content-free `CodebaseIndexSlim` for graph-only consumers |
431
- | `@cesarandreslopez/occ/code/chunk` | `chunkCodebase`, `chunkFromIndex` — semantic code chunking (word- or token-based via `maxTokens`/`countTokens`) |
432
- | `@cesarandreslopez/occ/code/session` | `createCodeQuerySession` — stateful code query session |
433
- | `@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) |
434
- | `@cesarandreslopez/occ/code/cache` | Index caching utilities (legacy — prefer `./code/store`) |
435
- | `@cesarandreslopez/occ/doc/inspect` | `inspectDocument` — document metadata and content extraction |
436
- | `@cesarandreslopez/occ/doc/types` | Document inspection types |
437
- | `@cesarandreslopez/occ/doc/discover` | Document file discovery (now includes prose formats by default; opt into data files via `includeDataFiles`; new `discoverDocumentSet` returns `{ documents, skipped }`) |
438
- | `@cesarandreslopez/occ/doc/batch` | Batch document inspection |
439
- | `@cesarandreslopez/occ/doc/chunk` | `chunkDocument` / `chunkDocumentFromMarkdown` heading-aware, token-budgeted document chunker for DOCX/PDF/PPTX/XLSX/ODT/ODS/ODP/MD/MDX/TXT/RST/AsciiDoc (the `FromMarkdown` variant chunks pre-converted markdown without re-parsing) |
440
- | `@cesarandreslopez/occ/doc/entities` | Entity and keyword extraction |
441
- | `@cesarandreslopez/occ/doc/references` | Cross-reference detection |
442
- | `@cesarandreslopez/occ/workspace/analyze` | `analyzeWorkspace` workspace-level analysis |
443
- | `@cesarandreslopez/occ/workspace/describe` | `describeWorkspace` — fast directory classification |
444
- | `@cesarandreslopez/occ/workspace/documents` | `inspectWorkspaceDocumentSet` — document summaries and cross-references |
445
- | `@cesarandreslopez/occ/workspace/types` | Workspace analysis types |
446
- | `@cesarandreslopez/occ/workspace/prepare` | `prepareWorkspaceContext` — combined code indexing + document inspection |
447
- | `@cesarandreslopez/occ/workspace/prepare-types` | Workspace preparation types (`WorkspacePrepareOptions`, `WorkspacePreparedContext`, etc.) |
448
- | `@cesarandreslopez/occ/workspace/bundle` | `bundleWorkspace` — single-call versioned `WorkspaceBundle` (description + analysis + documents + slim code index + outline + cross-refs + optional document / code / unified corpus chunks via `WorkspaceCorpusChunk`) |
449
- | `@cesarandreslopez/occ/markdown/convert` | `documentToMarkdown` document-to-markdown conversion (now reads MD/MDX/TXT/RST/AsciiDoc/YAML/JSON/TOML directly) |
450
- | `@cesarandreslopez/occ/structure/extract` | `extractFromMarkdown` — heading tree extraction |
451
- | `@cesarandreslopez/occ/structure/types` | Structure types and helpers |
452
- | `@cesarandreslopez/occ/sheet/inspect` | `inspectWorkbook` — XLSX workbook inspection |
453
- | `@cesarandreslopez/occ/sheet/types` | Sheet inspection types |
454
- | `@cesarandreslopez/occ/slide/inspect` | `inspectPresentation` — presentation inspection |
455
- | `@cesarandreslopez/occ/table/inspect` | Table extraction from documents |
456
- | `@cesarandreslopez/occ/table/types` | Table extraction types |
457
- | `@cesarandreslopez/occ/health` | `health()` liveness probe with version + capability flags |
458
- | `@cesarandreslopez/occ/errors` | `OccAbortError`, `OCC_ABORTED`, `isOccAbortError` — typed abort error that survives `instanceof` across forked subprocesses |
459
- | `@cesarandreslopez/occ/types` | Shared types (`ConfidenceLevel`, `ParseResult`, `ParserOutput`, etc.) |
460
- | `@cesarandreslopez/occ/tokens` | Token estimation utilities |
461
- | `@cesarandreslopez/occ/progress-event` | Progress event types (`ProgressPhase`, `ProgressEvent` with optional `scope`/`currentPath`/`bytesProcessed`/`totalBytes`/`startedAt`/`elapsedMs`) |
462
- | `@cesarandreslopez/occ/stats` | Stats types (`StatsRow`, `AggregateResult`) and `aggregate()` |
476
+ | Import path | Description |
477
+ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
478
+ | `@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 |
479
+ | `@cesarandreslopez/occ/code/types` | TypeScript types (`CodebaseIndex`, `CodeNode`, `CodeEdge`, `IndexTruncation`, etc.) |
480
+ | `@cesarandreslopez/occ/code/query` | Query functions (`findByName`, `analyzeCalls`, `analyzeDeps`, etc.) |
481
+ | `@cesarandreslopez/occ/code/discover` | `discoverCodeFiles` — file discovery |
482
+ | `@cesarandreslopez/occ/code/preview` | `previewCodebaseSize` — cheap size + per-language estimate without parsing, with budget pressure reporting |
483
+ | `@cesarandreslopez/occ/code/isolated` | `buildCodebaseIndexIsolated` — runs `buildCodebaseIndex` in a forked subprocess, optionally returning a slim index |
484
+ | `@cesarandreslopez/occ/code/incremental` | `computeManifestDiff`, `classifyChangedFiles`, `findResolutionImpactedFiles`, `spliceIndexInputs` — primitives behind incremental `update()`/`ensureFresh()` (manifest diff + resolution-impact + graph splice) |
485
+ | `@cesarandreslopez/occ/code/slim` | `slimifyIndex`, `parseSlimIndex`, `validateSlimIndex` — content-free `CodebaseIndexSlim` for graph-only consumers |
486
+ | `@cesarandreslopez/occ/code/chunk` | `chunkCodebase`, `chunkFromIndex` — semantic code chunking (word- or token-based via `maxTokens`/`countTokens`) |
487
+ | `@cesarandreslopez/occ/code/session` | `createCodeQuerySession` — stateful code query session |
488
+ | `@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) |
489
+ | `@cesarandreslopez/occ/code/cache` | Index caching utilities (legacy — prefer `./code/store`) |
490
+ | `@cesarandreslopez/occ/code/diff` | `computeCodeDiff`, `joinHunksToSymbols`map a git diff range to changed code symbols (added/removed/modified, new/removed exports, removed-symbol recovery) |
491
+ | `@cesarandreslopez/occ/git` | Git context API — `getGitChangedFiles`, `getGitDiffSummary`, `getGitDiffPatch`, `getGitDiffHunks`, `getGitDiffFunctionContext`, `getGitCommitHistory`, `getGitFileHistory`, `getGitChurnSummary`, `resolveGitRange` (also `./git/types`, `./git/api`, `./git/client`, `./git/parse`) |
492
+ | `@cesarandreslopez/occ/doc/inspect` | `inspectDocument` document metadata and content extraction |
493
+ | `@cesarandreslopez/occ/doc/types` | Document inspection types |
494
+ | `@cesarandreslopez/occ/doc/discover` | Document file discovery (now includes prose formats by default; opt into data files via `includeDataFiles`; new `discoverDocumentSet` returns `{ documents, skipped }`) |
495
+ | `@cesarandreslopez/occ/doc/batch` | Batch document inspection |
496
+ | `@cesarandreslopez/occ/doc/chunk` | `chunkDocument` / `chunkDocumentFromMarkdown` — heading-aware, token-budgeted document chunker for DOCX/PDF/PPTX/XLSX/ODT/ODS/ODP/MD/MDX/TXT/RST/AsciiDoc (the `FromMarkdown` variant chunks pre-converted markdown without re-parsing) |
497
+ | `@cesarandreslopez/occ/doc/entities` | Entity and keyword extraction |
498
+ | `@cesarandreslopez/occ/doc/references` | Cross-reference detection |
499
+ | `@cesarandreslopez/occ/workspace/analyze` | `analyzeWorkspace` — workspace-level analysis |
500
+ | `@cesarandreslopez/occ/workspace/describe` | `describeWorkspace` fast directory classification |
501
+ | `@cesarandreslopez/occ/workspace/documents` | `inspectWorkspaceDocumentSet` — document summaries and cross-references |
502
+ | `@cesarandreslopez/occ/workspace/types` | Workspace analysis types |
503
+ | `@cesarandreslopez/occ/workspace/prepare` | `prepareWorkspaceContext` — combined code indexing + document inspection |
504
+ | `@cesarandreslopez/occ/workspace/prepare-types` | Workspace preparation types (`WorkspacePrepareOptions`, `WorkspacePreparedContext`, etc.) |
505
+ | `@cesarandreslopez/occ/workspace/bundle` | `bundleWorkspace` — single-call versioned `WorkspaceBundle` (description + analysis + documents + slim code index + outline + cross-refs + optional document / code / unified corpus chunks via `WorkspaceCorpusChunk`) |
506
+ | `@cesarandreslopez/occ/markdown/convert` | `documentToMarkdown` document-to-markdown conversion (now reads MD/MDX/TXT/RST/AsciiDoc/YAML/JSON/TOML directly) |
507
+ | `@cesarandreslopez/occ/structure/extract` | `extractFromMarkdown` — heading tree extraction |
508
+ | `@cesarandreslopez/occ/structure/types` | Structure types and helpers |
509
+ | `@cesarandreslopez/occ/sheet/inspect` | `inspectWorkbook` — XLSX workbook inspection |
510
+ | `@cesarandreslopez/occ/sheet/types` | Sheet inspection types |
511
+ | `@cesarandreslopez/occ/slide/inspect` | `inspectPresentation` presentation inspection |
512
+ | `@cesarandreslopez/occ/table/inspect` | Table extraction from documents |
513
+ | `@cesarandreslopez/occ/table/types` | Table extraction types |
514
+ | `@cesarandreslopez/occ/health` | `health()` liveness probe with version + capability flags |
515
+ | `@cesarandreslopez/occ/errors` | `OccAbortError`, `OCC_ABORTED`, `isOccAbortError` — typed abort error that survives `instanceof` across forked subprocesses |
516
+ | `@cesarandreslopez/occ/types` | Shared types (`ConfidenceLevel`, `ParseResult`, `ParserOutput`, etc.) |
517
+ | `@cesarandreslopez/occ/tokens` | Token estimation utilities |
518
+ | `@cesarandreslopez/occ/progress-event` | Progress event types (`ProgressPhase`, `ProgressEvent` with optional `scope`/`currentPath`/`bytesProcessed`/`totalBytes`/`startedAt`/`elapsedMs`) |
519
+ | `@cesarandreslopez/occ/stats` | Stats types (`StatsRow`, `AggregateResult`) and `aggregate()` |
463
520
 
464
521
  TypeScript ships with OCC as a direct dependency, so the code exploration module works after a normal install. You only need a separate TypeScript setup if your own project uses `tsc`.
465
522
 
@@ -593,13 +650,17 @@ For combined code indexing and document inspection with progress tracking:
593
650
  ```ts
594
651
  import { prepareWorkspaceContext } from '@cesarandreslopez/occ/workspace/prepare';
595
652
 
596
- const context = await prepareWorkspaceContext('./my-project', {
597
- includeCode: true,
598
- includeDocuments: true,
599
- executionMode: 'auto', // 'auto' | 'inline' | 'subprocess'
600
- }, (event) => {
601
- console.log(`[${event.scope}] ${event.stage}: ${event.completed}/${event.total}`);
602
- });
653
+ const context = await prepareWorkspaceContext(
654
+ './my-project',
655
+ {
656
+ includeCode: true,
657
+ includeDocuments: true,
658
+ executionMode: 'auto', // 'auto' | 'inline' | 'subprocess'
659
+ },
660
+ event => {
661
+ console.log(`[${event.scope}] ${event.stage}: ${event.completed}/${event.total}`);
662
+ }
663
+ );
603
664
 
604
665
  // context.code?.index — full CodebaseIndex
605
666
  // context.documents — WorkspaceDocumentSet with cross-references
@@ -607,6 +668,36 @@ const context = await prepareWorkspaceContext('./my-project', {
607
668
  // context.errors — collected errors from both phases
608
669
  ```
609
670
 
671
+ ## Git Context
672
+
673
+ `occ git` inspects git changes, history, and churn over a typed, shell-injection-safe git client (it shells out to `git` with argument arrays, validates refs, and classifies failures like missing-git / not-a-repo / bad-ref). All `occ git` commands share `--path <repo-root>` (default: current directory), `--base <ref>`, `--head <ref>`, `--staged`, `--format tabular|json`, and `-o, --output <file>`. The diff range resolves from `--base`/`--head`/`--staged`, defaulting to the working-tree changes when unspecified.
674
+
675
+ ```bash
676
+ # List the files changed in the resolved diff range
677
+ occ git changed --base main
678
+ occ git changed --staged --format json
679
+
680
+ # Summarize the diff, or render a token-bounded raw patch
681
+ occ git diff --base main --format json
682
+ occ git diff --base main --patch --map-tokens 2048 --tokenizer o200k_base
683
+
684
+ # Commit history for a range, or per-file history (with line ranges)
685
+ occ git history --since 2025-01-01 --format json
686
+ occ git history src/cli.ts --limit 10 --follow
687
+ occ git history src/cli.ts --line-start 10 --line-end 50
688
+
689
+ # Rank changed files by churn to find hotspots
690
+ occ git churn --sort churn --limit 20 --format json
691
+ ```
692
+
693
+ Current git context highlights:
694
+
695
+ - **`occ git changed`** — changed files for the resolved range with status, rename/copy metadata, and binary flags
696
+ - **`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)
697
+ - **`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`
698
+ - **`occ git churn`** — files ranked by `--sort churn|commits|added|deleted|net` (default `churn`) with commit, addition, deletion, net, and last-touched metrics
699
+ - **Symbol-level changes** — pair with `occ code diff` to see which _symbols_ (not just files and lines) a diff touched
700
+
610
701
  ## Documentation
611
702
 
612
703
  Full documentation is available at [cesarandreslopez.github.io/occ](https://cesarandreslopez.github.io/occ/), including:
@@ -1,8 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  /** Schema that coerces a string to a positive integer. */
3
- export const PositiveIntSchema = z
4
- .string()
5
- .transform((val, ctx) => {
3
+ export const PositiveIntSchema = z.string().transform((val, ctx) => {
6
4
  const parsed = Number.parseInt(val, 10);
7
5
  if (!Number.isFinite(parsed) || parsed <= 0) {
8
6
  ctx.addIssue({ code: z.ZodIssueCode.custom, message: `must be a positive integer` });
@@ -11,15 +9,9 @@ export const PositiveIntSchema = z
11
9
  return parsed;
12
10
  });
13
11
  /** Schema for header-row option: "auto", "none", or a positive integer string. */
14
- export const HeaderRowSchema = z.union([
15
- z.literal('auto'),
16
- z.literal('none'),
17
- PositiveIntSchema,
18
- ]);
12
+ export const HeaderRowSchema = z.union([z.literal('auto'), z.literal('none'), PositiveIntSchema]);
19
13
  /** Schema that coerces a string to a positive number (float). */
20
- export const PositiveNumberSchema = z
21
- .string()
22
- .transform((val, ctx) => {
14
+ export const PositiveNumberSchema = z.string().transform((val, ctx) => {
23
15
  const n = parseFloat(val);
24
16
  if (Number.isNaN(n) || n <= 0) {
25
17
  ctx.addIssue({ code: z.ZodIssueCode.custom, message: `must be a positive number` });
@@ -1 +1 @@
1
- {"version":3,"file":"cli-validation.js","sourceRoot":"","sources":["../../src/cli-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IACrC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACjB,iBAAiB;CAClB,CAAC,CAAC;AAGH,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,EAAE;KACR,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEL,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,KAAyB,EAAE,QAAgB,EAAE,KAAa;IACzF,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,8CAA8C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,+BAA+B,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"cli-validation.js","sourceRoot":"","sources":["../../src/cli-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAGlG,iEAAiE;AACjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACpE,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,wFAAwF;AACxF,MAAM,UAAU,gBAAgB,CAAC,KAAyB,EAAE,QAAgB,EAAE,KAAa;IACzF,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,8CAA8C,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,sCAAsC,KAAK,+BAA+B,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
package/dist/src/cli.js CHANGED
@@ -14,15 +14,18 @@ import { documentToMarkdown } from './markdown/convert.js';
14
14
  import { extractFromMarkdown } from './structure/index.js';
15
15
  import { formatStructureTree } from './output/tree.js';
16
16
  import { registerCodeCommands } from './code/command.js';
17
+ import { registerGitCommands } from './git/command.js';
17
18
  import { registerSheetCommands } from './sheet/command.js';
18
19
  import { registerDocCommands } from './doc/command.js';
19
20
  import { registerSlideCommands } from './slide/command.js';
20
21
  import { registerTableCommands } from './table/command.js';
21
22
  import { registerDescribeCommand, registerWorkspaceCommands } from './workspace/command.js';
23
+ import { registerSkillsCommands } from './skills/command.js';
22
24
  import { formatBytes, getExtension, writeStream } from './utils.js';
23
25
  import { validateLargeFileLimit } from './cli-validation.js';
24
26
  import { createTokenizer, resolveTokenizerName } from './tokens.js';
25
- const CliOptionsSchema = z.object({
27
+ const CliOptionsSchema = z
28
+ .object({
26
29
  byFile: z.boolean().optional(),
27
30
  format: z.string(),
28
31
  includeExt: z.string().optional(),
@@ -40,7 +43,8 @@ const CliOptionsSchema = z.object({
40
43
  tokenizer: z.string().optional(),
41
44
  quick: z.boolean().optional(),
42
45
  showConfidence: z.boolean().optional(),
43
- }).passthrough();
46
+ })
47
+ .passthrough();
44
48
  function collectOption(value, previous = []) {
45
49
  return [...previous, value];
46
50
  }
@@ -52,7 +56,9 @@ async function loadPkg() {
52
56
  try {
53
57
  return PackageJsonSchema.parse(JSON.parse(await readFile(path.resolve(__dirname, rel, 'package.json'), 'utf8')));
54
58
  }
55
- catch { /* try next */ }
59
+ catch {
60
+ /* try next */
61
+ }
56
62
  }
57
63
  return { version: '0.0.0' };
58
64
  }
@@ -71,7 +77,11 @@ export async function run(argv) {
71
77
  .option('--exclude-dir <dirs>', 'directories to skip (comma-separated)', 'node_modules,.git')
72
78
  .option('--ignore-pattern <pattern>', 'gitignore-style pattern to ignore', collectOption, [])
73
79
  .option('--no-gitignore', 'disable .gitignore respect')
74
- .addOption(new Option('--sort <col>', 'sort by: files, name, words, size').choices(['files', 'name', 'words', 'size']).default('files'))
80
+ // Note: this is a global option, so it is inherited by every subcommand. It is
81
+ // intentionally not constrained with .choices() because subcommands (e.g. `git churn`)
82
+ // expose their own `--sort` keys; the default scan falls back to `files` for any value
83
+ // it does not recognize (see sortRows in stats.ts).
84
+ .option('--sort <col>', 'sort by: files, name, words, size', 'files')
75
85
  .option('-o, --output <file>', 'write output to file')
76
86
  .option('--ci', 'ASCII-only output, no colors')
77
87
  .option('--large-file-limit <mb>', 'skip files over this size in MB', '50')
@@ -97,18 +107,18 @@ export async function run(argv) {
97
107
  }
98
108
  });
99
109
  registerCodeCommands(program);
110
+ registerGitCommands(program);
100
111
  registerSheetCommands(program);
101
112
  registerDocCommands(program);
102
113
  registerSlideCommands(program);
103
114
  registerTableCommands(program);
104
115
  registerDescribeCommand(program);
105
116
  registerWorkspaceCommands(program);
117
+ registerSkillsCommands(program);
106
118
  await program.parseAsync(argv);
107
119
  }
108
120
  async function executeQuick(directories, opts) {
109
- const excludeDirs = opts.excludeDir
110
- ? opts.excludeDir.split(',').map(d => d.trim())
111
- : ['node_modules', '.git'];
121
+ const excludeDirs = opts.excludeDir ? opts.excludeDir.split(',').map(d => d.trim()) : ['node_modules', '.git'];
112
122
  const { files, skipped } = await findFiles(directories, {
113
123
  includeExt: opts.includeExt,
114
124
  excludeExt: opts.excludeExt,
@@ -192,9 +202,7 @@ async function extractStructures(files, concurrency, onProgress) {
192
202
  }
193
203
  async function execute(directories, opts) {
194
204
  const startTime = Date.now();
195
- const excludeDirs = opts.excludeDir
196
- ? opts.excludeDir.split(',').map(d => d.trim())
197
- : ['node_modules', '.git'];
205
+ const excludeDirs = opts.excludeDir ? opts.excludeDir.split(',').map(d => d.trim()) : ['node_modules', '.git'];
198
206
  const includeCode = opts.code !== false;
199
207
  let sccBinary = null;
200
208
  if (includeCode) {
@@ -242,7 +250,11 @@ async function execute(directories, opts) {
242
250
  if (opts.structure) {
243
251
  const structurableFiles = files.filter(f => STRUCTURABLE_EXTS.has(getExtension(f.path)));
244
252
  if (structurableFiles.length > 0) {
245
- const progress = createProgress({ total: structurableFiles.length, label: 'Extracting structure', enabled: showProgress });
253
+ const progress = createProgress({
254
+ total: structurableFiles.length,
255
+ label: 'Extracting structure',
256
+ enabled: showProgress,
257
+ });
246
258
  structureResults = await extractStructures(structurableFiles, 10, (inc, detail) => progress.update(inc, detail));
247
259
  progress.done();
248
260
  }
@@ -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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"}
@@ -1,6 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { type CodebaseIndex, type CodeSkippedFile, type ContentMode, type IndexTruncation, type ParsedFile } from './types.js';
3
3
  import type { OnProgress } from '../progress-event.js';
4
+ import { type CooperativeOption, type Yielder } from '../utils.js';
4
5
  export declare const BudgetExceededBehaviorSchema: z.ZodEnum<{
5
6
  truncate: "truncate";
6
7
  throw: "throw";
@@ -28,7 +29,9 @@ export declare const BuildCodebaseOptionsSchema: z.ZodObject<{
28
29
  }>>;
29
30
  parseConcurrency: z.ZodOptional<z.ZodNumber>;
30
31
  }, z.core.$strip>;
31
- export type BuildCodebaseOptions = z.infer<typeof BuildCodebaseOptionsSchema>;
32
+ export type BuildCodebaseOptions = z.infer<typeof BuildCodebaseOptionsSchema> & {
33
+ cooperative?: CooperativeOption;
34
+ };
32
35
  /**
33
36
  * Default fan-out for parseCodeFiles. parseCodeFile is async I/O (stat + read)
34
37
  * followed by a synchronous CPU parse; a small worker pool hides the I/O
@@ -81,11 +84,7 @@ export declare class CodeIndexBudgetExceededError extends Error {
81
84
  * Content-mode reduction happens at parse time, while content is still in
82
85
  * memory — excerpt extraction needs the full source text.
83
86
  */
84
- export declare function parseCodeFiles(files: string[], options: ParseCodeFilesOptions, onProgress?: OnProgress, signal?: AbortSignal): Promise<ParseCodeFilesResult>;
87
+ export declare function parseCodeFiles(files: string[], options: ParseCodeFilesOptions, onProgress?: OnProgress, signal?: AbortSignal, yielder?: Yielder): Promise<ParseCodeFilesResult>;
85
88
  export declare function buildCodebaseIndex(options: BuildCodebaseOptions, onProgress?: OnProgress, signal?: AbortSignal): Promise<CodebaseIndex>;
86
- /**
87
- * Assemble the node/edge graph from already-parsed files. Synchronous —
88
- * assembly has no awaits — so it can be reused verbatim by incremental
89
- * updates that splice fresh parses into a cached file set.
90
- */
91
89
  export declare function assembleCodebaseIndex(input: AssembleCodebaseIndexInput, onProgress?: OnProgress, signal?: AbortSignal): CodebaseIndex;
90
+ export declare function assembleCodebaseIndexCooperative(input: AssembleCodebaseIndexInput, yielder: Yielder, onProgress?: OnProgress, signal?: AbortSignal): Promise<CodebaseIndex>;