codebaseiq 0.1.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/CHANGELOG.md +481 -0
- package/LICENSE +202 -0
- package/README.md +349 -0
- package/dist/augment-vue-worker.js +2 -0
- package/dist/call-graph-evidence-gNsxjCW8.d.ts +16 -0
- package/dist/change-analysis-types-CCtoCHbC.d.ts +9 -0
- package/dist/chunk-2Q2LW5JW.js +14 -0
- package/dist/chunk-2X7V4HS4.js +88 -0
- package/dist/chunk-34WBMAYK.js +2 -0
- package/dist/chunk-35NLDRZC.js +2 -0
- package/dist/chunk-362QOSFD.js +3 -0
- package/dist/chunk-3IER7Q6H.js +12 -0
- package/dist/chunk-3JSXXYTZ.js +345 -0
- package/dist/chunk-3LCDIREB.js +4 -0
- package/dist/chunk-476NR5B7.js +2 -0
- package/dist/chunk-4FC325IF.js +30 -0
- package/dist/chunk-4WKDMDEW.js +9 -0
- package/dist/chunk-4XTAUQFD.js +2 -0
- package/dist/chunk-5PUWMSDU.js +26 -0
- package/dist/chunk-5VKBFZZU.js +3 -0
- package/dist/chunk-6BQ3DSPK.js +2 -0
- package/dist/chunk-6CS3UQTN.js +3 -0
- package/dist/chunk-6MUIJMVL.js +6 -0
- package/dist/chunk-6NW7MU72.js +40 -0
- package/dist/chunk-6OAHRI2D.js +6 -0
- package/dist/chunk-6YTSKJJ3.js +2 -0
- package/dist/chunk-7FND7D7N.js +2 -0
- package/dist/chunk-7MGU3HPH.js +2 -0
- package/dist/chunk-7NVGT435.js +2 -0
- package/dist/chunk-7XAN6GKB.js +2 -0
- package/dist/chunk-AAQQPKCU.js +2 -0
- package/dist/chunk-ADTBPVUZ.js +21 -0
- package/dist/chunk-AKB7V7TV.js +2 -0
- package/dist/chunk-ANFVSJWQ.js +11 -0
- package/dist/chunk-B2OB55RR.js +3 -0
- package/dist/chunk-B3UYV66Z.js +4 -0
- package/dist/chunk-B75HZHUP.js +2 -0
- package/dist/chunk-BFFZDZQV.js +2 -0
- package/dist/chunk-BGBBVSH4.js +2 -0
- package/dist/chunk-BH5F2Q4O.js +2 -0
- package/dist/chunk-BJ6SQAEN.js +2 -0
- package/dist/chunk-BMYOV5GP.js +77 -0
- package/dist/chunk-BVAJLC5A.js +7 -0
- package/dist/chunk-C6SBF2WH.js +4 -0
- package/dist/chunk-C74PPYLA.js +3 -0
- package/dist/chunk-C7QOQX32.js +8 -0
- package/dist/chunk-CAUCPUOF.js +7 -0
- package/dist/chunk-CO5R3UNA.js +2 -0
- package/dist/chunk-CQP3THUZ.js +7 -0
- package/dist/chunk-CVYSU6BX.js +16 -0
- package/dist/chunk-CWONGW6P.js +3 -0
- package/dist/chunk-DDZ7VHWV.js +20 -0
- package/dist/chunk-DGXRDLV5.js +2 -0
- package/dist/chunk-DO6WQD2T.js +3 -0
- package/dist/chunk-DQMDCD24.js +2 -0
- package/dist/chunk-DR2LURYU.js +3 -0
- package/dist/chunk-DRENNWRG.js +2 -0
- package/dist/chunk-ECQBG7PW.js +564 -0
- package/dist/chunk-EF2R3WNQ.js +2 -0
- package/dist/chunk-ELNRLMC5.js +29 -0
- package/dist/chunk-EMNIHCRB.js +18 -0
- package/dist/chunk-ENCCHKM6.js +5 -0
- package/dist/chunk-EZNMUY67.js +5 -0
- package/dist/chunk-FAJQ7LWY.js +3 -0
- package/dist/chunk-FDGD5AB5.js +2 -0
- package/dist/chunk-FETNQCFO.js +117 -0
- package/dist/chunk-FM5BPL4V.js +60 -0
- package/dist/chunk-FQKZWM4L.js +49 -0
- package/dist/chunk-FW53T7EB.js +2 -0
- package/dist/chunk-G6XFR4ZL.js +4 -0
- package/dist/chunk-GCHRX4YW.js +4 -0
- package/dist/chunk-GTIYTDRE.js +562 -0
- package/dist/chunk-GTXSJDCO.js +2 -0
- package/dist/chunk-GW6Z3WGY.js +2 -0
- package/dist/chunk-H3LGFZVK.js +2 -0
- package/dist/chunk-HKQUXIFO.js +2 -0
- package/dist/chunk-HOA5YGOH.js +3 -0
- package/dist/chunk-HPJRBHVT.js +3 -0
- package/dist/chunk-HRWGYWRJ.js +49 -0
- package/dist/chunk-I2T2LLK2.js +4 -0
- package/dist/chunk-ICFDQHAM.js +3 -0
- package/dist/chunk-ID63777H.js +4 -0
- package/dist/chunk-IJ4HMYBE.js +3 -0
- package/dist/chunk-ILMHV3KM.js +2 -0
- package/dist/chunk-IOP6FWIM.js +2 -0
- package/dist/chunk-IRQOAM5G.js +2 -0
- package/dist/chunk-J77SU6VA.js +38 -0
- package/dist/chunk-JE3WZ6II.js +2 -0
- package/dist/chunk-JEJLSICM.js +4 -0
- package/dist/chunk-JOIRNPPY.js +2 -0
- package/dist/chunk-JSOYNVWH.js +3 -0
- package/dist/chunk-KMITESMT.js +2 -0
- package/dist/chunk-KUW32IRO.js +2 -0
- package/dist/chunk-KWVHSKHK.js +31 -0
- package/dist/chunk-L4NRUAGJ.js +18 -0
- package/dist/chunk-L57ZKWVG.js +6 -0
- package/dist/chunk-LTA3BRZX.js +2 -0
- package/dist/chunk-LU3BMVH2.js +10 -0
- package/dist/chunk-LZYFLFEH.js +2 -0
- package/dist/chunk-MOVBWNIP.js +16 -0
- package/dist/chunk-MVB3DAEY.js +3 -0
- package/dist/chunk-N3IQCBCF.js +29 -0
- package/dist/chunk-NAUD7LCA.js +2 -0
- package/dist/chunk-NCZUNH3E.js +109 -0
- package/dist/chunk-NE6IU5ZD.js +5 -0
- package/dist/chunk-NEDP5RFQ.js +60 -0
- package/dist/chunk-NMTSZXCL.js +2 -0
- package/dist/chunk-NNJ2KZZG.js +4 -0
- package/dist/chunk-NNO6A2PO.js +2 -0
- package/dist/chunk-NNOKTMZT.js +20 -0
- package/dist/chunk-O6QTXQPJ.js +13 -0
- package/dist/chunk-OANDYLJQ.js +2 -0
- package/dist/chunk-OFBE4NGP.js +2 -0
- package/dist/chunk-OGTFJ3XD.js +2 -0
- package/dist/chunk-OL6KJP3N.js +16 -0
- package/dist/chunk-OLF4MA5W.js +8 -0
- package/dist/chunk-OTOKVOJ3.js +2 -0
- package/dist/chunk-OVTS4DKB.js +2 -0
- package/dist/chunk-OZYRSMSH.js +3 -0
- package/dist/chunk-P5XHIJHI.js +2 -0
- package/dist/chunk-PBI2LFKH.js +2 -0
- package/dist/chunk-PIOMTC27.js +2 -0
- package/dist/chunk-PTAWHLVJ.js +6 -0
- package/dist/chunk-PX4RYAAK.js +2 -0
- package/dist/chunk-PYAB5SM6.js +7 -0
- package/dist/chunk-Q5ELPRKQ.js +2 -0
- package/dist/chunk-Q65CQ4XL.js +2 -0
- package/dist/chunk-Q72QSKXC.js +308 -0
- package/dist/chunk-QCN62RTF.js +3 -0
- package/dist/chunk-QDCCHMVZ.js +2 -0
- package/dist/chunk-QHRNXP3C.js +3 -0
- package/dist/chunk-QKPLA6IC.js +2 -0
- package/dist/chunk-QOKYJ33H.js +2 -0
- package/dist/chunk-QW7EP6WI.js +21 -0
- package/dist/chunk-R2NOK63J.js +4 -0
- package/dist/chunk-RBAS5ZHI.js +2 -0
- package/dist/chunk-RDBI2RXU.js +9 -0
- package/dist/chunk-RKEJ6VTF.js +73 -0
- package/dist/chunk-RR7SX44N.js +35 -0
- package/dist/chunk-RU65DDUP.js +215 -0
- package/dist/chunk-SELM5MER.js +2 -0
- package/dist/chunk-SGX43S2L.js +2 -0
- package/dist/chunk-SMRBZ6EC.js +2 -0
- package/dist/chunk-SNNWPCN7.js +4 -0
- package/dist/chunk-ST7V3SKN.js +2 -0
- package/dist/chunk-SWHMHUKF.js +2 -0
- package/dist/chunk-SYDJMPES.js +2 -0
- package/dist/chunk-SZD2KF7Q.js +2 -0
- package/dist/chunk-T3DGWPXM.js +3 -0
- package/dist/chunk-TFZB6XTM.js +239 -0
- package/dist/chunk-TIIC3ZE7.js +2 -0
- package/dist/chunk-TRRC4ZJ7.js +2 -0
- package/dist/chunk-TXXOEMZJ.js +2 -0
- package/dist/chunk-UBGWN7I4.js +2 -0
- package/dist/chunk-UCD3H3UZ.js +5 -0
- package/dist/chunk-UDS562V4.js +5 -0
- package/dist/chunk-UNBY47BC.js +3 -0
- package/dist/chunk-UP3BUZR5.js +74 -0
- package/dist/chunk-UXM43C7T.js +3 -0
- package/dist/chunk-UZGZB3VB.js +3 -0
- package/dist/chunk-VE5AVNMP.js +2 -0
- package/dist/chunk-VEXUL62T.js +2 -0
- package/dist/chunk-VFY6Y2H6.js +61 -0
- package/dist/chunk-VUIYB2V3.js +2 -0
- package/dist/chunk-VXYS3FZD.js +23 -0
- package/dist/chunk-WE5RZHZ7.js +5 -0
- package/dist/chunk-WMPRTGH2.js +2 -0
- package/dist/chunk-WOQBZPIF.js +2 -0
- package/dist/chunk-XLQ3GLWZ.js +2 -0
- package/dist/chunk-XME3HPXZ.js +2 -0
- package/dist/chunk-XMQ23E27.js +2 -0
- package/dist/chunk-XWUOUWYI.js +2 -0
- package/dist/chunk-XZEE23VG.js +5 -0
- package/dist/chunk-Y6KHROC3.js +7 -0
- package/dist/chunk-YESXMKX3.js +3 -0
- package/dist/chunk-YMGZZEW4.js +2 -0
- package/dist/chunk-YSNONTJ2.js +2 -0
- package/dist/chunk-YUKYB54I.js +1 -0
- package/dist/chunk-YVCIMIOC.js +12 -0
- package/dist/chunk-Z54RD7VL.js +3 -0
- package/dist/chunk-ZKX2FRS6.js +15 -0
- package/dist/chunk-ZMI2JSX2.js +2 -0
- package/dist/chunk-ZV3JV5G5.js +8 -0
- package/dist/chunk-ZZ3MWF33.js +4 -0
- package/dist/chunk-ZZXSWSN6.js +2 -0
- package/dist/cli-context-3SNLDYBM.js +3 -0
- package/dist/cli-context-T3B7W6GG.js +2 -0
- package/dist/cli-program-YNOXO72B.js +7 -0
- package/dist/cli.js +3 -0
- package/dist/code-DlqpBDd0.d.ts +121 -0
- package/dist/command-descriptors-6AOUKWW7.js +346 -0
- package/dist/command-descriptors-ZFKJSRUP.js +344 -0
- package/dist/command-panels-SZONPMLJ.js +3 -0
- package/dist/config-types-BNoC96J3.d.ts +560 -0
- package/dist/db-D7sauVFH.d.ts +95 -0
- package/dist/direct-navigation-DP4LVMRX.js +3 -0
- package/dist/direct-navigation-FLUS3BT6.js +2 -0
- package/dist/exploration-topology-BG4v30HZ.d.ts +256 -0
- package/dist/file-dep-graph-Bqg3t3Px.d.ts +4 -0
- package/dist/file-kind-BKCVMNUf.d.ts +10 -0
- package/dist/frontend-behavior-evidence-EfM4_9bc.d.ts +4 -0
- package/dist/git-history-ChNHbfZQ.d.ts +13 -0
- package/dist/graph-evidence-BIFqyisO.d.ts +131 -0
- package/dist/health-DJaZXg8I.d.ts +340 -0
- package/dist/index.d.ts +183 -0
- package/dist/index.js +2 -0
- package/dist/invocation-command-descriptors-QT2JMY5J.js +3 -0
- package/dist/invocation-command-descriptors-YN4QJEAX.js +2 -0
- package/dist/next-anchor-candidates-BwMczMvX.d.ts +90 -0
- package/dist/output-continuation-command-2V2SL4TD.js +2 -0
- package/dist/output-continuation-command-65J5IP3O.js +3 -0
- package/dist/postinstall.js +3 -0
- package/dist/project-reindex-5JOKXAXT.js +2 -0
- package/dist/project-reindex-UQBIKO4M.js +3 -0
- package/dist/queries/affected.d.ts +40 -0
- package/dist/queries/affected.js +2 -0
- package/dist/queries/anchors.d.ts +123 -0
- package/dist/queries/anchors.js +2 -0
- package/dist/queries/architecture.d.ts +166 -0
- package/dist/queries/architecture.js +2 -0
- package/dist/queries/bottlenecks.d.ts +68 -0
- package/dist/queries/bottlenecks.js +2 -0
- package/dist/queries/by-kind.d.ts +27 -0
- package/dist/queries/by-kind.js +2 -0
- package/dist/queries/call-graph.d.ts +52 -0
- package/dist/queries/call-graph.js +2 -0
- package/dist/queries/change-surface.d.ts +55 -0
- package/dist/queries/change-surface.js +2 -0
- package/dist/queries/cleanup-plan.d.ts +66 -0
- package/dist/queries/cleanup-plan.js +2 -0
- package/dist/queries/co-change.d.ts +90 -0
- package/dist/queries/co-change.js +2 -0
- package/dist/queries/code.d.ts +6 -0
- package/dist/queries/code.js +2 -0
- package/dist/queries/complexity-hotspots.d.ts +61 -0
- package/dist/queries/complexity-hotspots.js +2 -0
- package/dist/queries/complexity.d.ts +74 -0
- package/dist/queries/complexity.js +2 -0
- package/dist/queries/context.d.ts +146 -0
- package/dist/queries/context.js +2 -0
- package/dist/queries/convergence.d.ts +33 -0
- package/dist/queries/convergence.js +2 -0
- package/dist/queries/coupling.d.ts +32 -0
- package/dist/queries/coupling.js +2 -0
- package/dist/queries/cycles.d.ts +66 -0
- package/dist/queries/cycles.js +2 -0
- package/dist/queries/dataflow.d.ts +77 -0
- package/dist/queries/dataflow.js +2 -0
- package/dist/queries/dead.d.ts +58 -0
- package/dist/queries/dead.js +2 -0
- package/dist/queries/decorative-checkers.d.ts +34 -0
- package/dist/queries/decorative-checkers.js +2 -0
- package/dist/queries/deep-chains.d.ts +5 -0
- package/dist/queries/deep-chains.js +2 -0
- package/dist/queries/dependence-slice.d.ts +46 -0
- package/dist/queries/dependence-slice.js +2 -0
- package/dist/queries/dependency-depth.d.ts +49 -0
- package/dist/queries/dependency-depth.js +2 -0
- package/dist/queries/deps.d.ts +15 -0
- package/dist/queries/deps.js +2 -0
- package/dist/queries/diff-impact.d.ts +165 -0
- package/dist/queries/diff-impact.js +2 -0
- package/dist/queries/doc-drift.d.ts +115 -0
- package/dist/queries/doc-drift.js +2 -0
- package/dist/queries/drift.d.ts +79 -0
- package/dist/queries/drift.js +2 -0
- package/dist/queries/duplicate-bodies.d.ts +55 -0
- package/dist/queries/duplicate-bodies.js +2 -0
- package/dist/queries/entry-map.d.ts +121 -0
- package/dist/queries/entry-map.js +2 -0
- package/dist/queries/evidence.d.ts +70 -0
- package/dist/queries/evidence.js +2 -0
- package/dist/queries/extract-candidates.d.ts +52 -0
- package/dist/queries/extract-candidates.js +2 -0
- package/dist/queries/fan.d.ts +53 -0
- package/dist/queries/fan.js +2 -0
- package/dist/queries/files.d.ts +20 -0
- package/dist/queries/files.js +2 -0
- package/dist/queries/health.d.ts +8 -0
- package/dist/queries/health.js +2 -0
- package/dist/queries/hierarchy.d.ts +21 -0
- package/dist/queries/hierarchy.js +2 -0
- package/dist/queries/hotspots.d.ts +42 -0
- package/dist/queries/hotspots.js +2 -0
- package/dist/queries/imports.d.ts +34 -0
- package/dist/queries/imports.js +2 -0
- package/dist/queries/incomplete-migration.d.ts +90 -0
- package/dist/queries/incomplete-migration.js +2 -0
- package/dist/queries/index.d.ts +180 -0
- package/dist/queries/index.js +2 -0
- package/dist/queries/isolated.d.ts +24 -0
- package/dist/queries/isolated.js +2 -0
- package/dist/queries/locality-candidates.d.ts +51 -0
- package/dist/queries/locality-candidates.js +2 -0
- package/dist/queries/members.d.ts +21 -0
- package/dist/queries/members.js +2 -0
- package/dist/queries/methods.d.ts +43 -0
- package/dist/queries/methods.js +2 -0
- package/dist/queries/not-implemented.d.ts +33 -0
- package/dist/queries/not-implemented.js +2 -0
- package/dist/queries/outline.d.ts +22 -0
- package/dist/queries/outline.js +2 -0
- package/dist/queries/passthrough-candidates.d.ts +41 -0
- package/dist/queries/passthrough-candidates.js +2 -0
- package/dist/queries/plan-context.d.ts +33 -0
- package/dist/queries/plan-context.js +2 -0
- package/dist/queries/react-component-duplicates.d.ts +39 -0
- package/dist/queries/react-component-duplicates.js +2 -0
- package/dist/queries/react-hook-candidates.d.ts +44 -0
- package/dist/queries/react-hook-candidates.js +2 -0
- package/dist/queries/react-large-component-pressure.d.ts +34 -0
- package/dist/queries/react-large-component-pressure.js +2 -0
- package/dist/queries/recent-duplicates.d.ts +79 -0
- package/dist/queries/recent-duplicates.js +2 -0
- package/dist/queries/redundant-reexports.d.ts +37 -0
- package/dist/queries/redundant-reexports.js +2 -0
- package/dist/queries/reference-neighborhood.d.ts +4 -0
- package/dist/queries/reference-neighborhood.js +2 -0
- package/dist/queries/reference-reachability.d.ts +48 -0
- package/dist/queries/reference-reachability.js +2 -0
- package/dist/queries/refs.d.ts +13 -0
- package/dist/queries/refs.js +2 -0
- package/dist/queries/self-audit.d.ts +65 -0
- package/dist/queries/self-audit.js +2 -0
- package/dist/queries/similar-chains.d.ts +48 -0
- package/dist/queries/similar-chains.js +2 -0
- package/dist/queries/similar-files.d.ts +35 -0
- package/dist/queries/similar-files.js +2 -0
- package/dist/queries/similar-signatures.d.ts +46 -0
- package/dist/queries/similar-signatures.js +2 -0
- package/dist/queries/similar.d.ts +187 -0
- package/dist/queries/similar.js +2 -0
- package/dist/queries/slice.d.ts +4 -0
- package/dist/queries/slice.js +2 -0
- package/dist/queries/source-inspection.d.ts +209 -0
- package/dist/queries/source-inspection.js +2 -0
- package/dist/queries/source-search.d.ts +85 -0
- package/dist/queries/source-search.js +2 -0
- package/dist/queries/stale-abstractions.d.ts +72 -0
- package/dist/queries/stale-abstractions.js +2 -0
- package/dist/queries/stats.d.ts +15 -0
- package/dist/queries/stats.js +2 -0
- package/dist/queries/surface.d.ts +22 -0
- package/dist/queries/surface.js +2 -0
- package/dist/queries/symbols.d.ts +14 -0
- package/dist/queries/symbols.js +2 -0
- package/dist/queries/system-map.d.ts +449 -0
- package/dist/queries/system-map.js +2 -0
- package/dist/queries/system.d.ts +21 -0
- package/dist/queries/system.js +2 -0
- package/dist/queries/test-quality.d.ts +56 -0
- package/dist/queries/test-quality.js +2 -0
- package/dist/queries/trace.d.ts +68 -0
- package/dist/queries/trace.js +2 -0
- package/dist/queries/twin-ab.d.ts +66 -0
- package/dist/queries/twin-ab.js +2 -0
- package/dist/queries/twin-drift.d.ts +119 -0
- package/dist/queries/twin-drift.js +2 -0
- package/dist/queries/unused-imports.d.ts +4 -0
- package/dist/queries/unused-imports.js +2 -0
- package/dist/queries/unused-params.d.ts +38 -0
- package/dist/queries/unused-params.js +2 -0
- package/dist/queries/value-flow.d.ts +42 -0
- package/dist/queries/value-flow.js +2 -0
- package/dist/queries/vue-component-duplicates.d.ts +43 -0
- package/dist/queries/vue-component-duplicates.js +2 -0
- package/dist/queries/vue-composable-candidates.d.ts +44 -0
- package/dist/queries/vue-composable-candidates.js +2 -0
- package/dist/queries/vue-large-view-pressure.d.ts +41 -0
- package/dist/queries/vue-large-view-pressure.js +2 -0
- package/dist/queries/wrapper-candidates.d.ts +34 -0
- package/dist/queries/wrapper-candidates.js +2 -0
- package/dist/reindex-worker.js +3 -0
- package/dist/reindex.d.ts +254 -0
- package/dist/reindex.js +298 -0
- package/dist/repository-text-C0Q8VYdN.d.ts +19 -0
- package/dist/runtime.d.ts +555 -0
- package/dist/runtime.js +4 -0
- package/dist/rust-semantic-session-server.js +2 -0
- package/dist/rust-semantic-session-worker.js +2 -0
- package/dist/rust-semantic-worker.js +2 -0
- package/dist/scip-cli-B7N3haxa.d.ts +67 -0
- package/dist/source-snippet-_wrcgmZc.d.ts +15 -0
- package/dist/symbol-types-BIQwfoAx.d.ts +74 -0
- package/dist/typescript-mailbox-worker.js +2 -0
- package/dist/watch-server.js +8 -0
- package/docs/AGENT_GUIDE.md +148 -0
- package/docs/AI_FAILURE_MODES.md +43 -0
- package/docs/API.md +40 -0
- package/docs/API_EVOLUTION.md +77 -0
- package/docs/CLI_JSON_OUTPUT.md +389 -0
- package/docs/COMMAND_REFERENCE.md +294 -0
- package/docs/CONFIGURATION_WRITE_SAFETY.md +131 -0
- package/docs/DETECTOR_GUIDE.md +46 -0
- package/docs/DURABILITY.md +159 -0
- package/docs/INDEX_GENERATIONS.md +167 -0
- package/docs/LOCK_PROTOCOL.md +133 -0
- package/docs/MAILBOX_LIFECYCLE.md +224 -0
- package/docs/REGEX_POLICY.md +36 -0
- package/docs/REINDEX_METADATA_COMPATIBILITY.md +104 -0
- package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
- package/docs/SECURITY_MODEL.md +125 -0
- package/docs/TELEMETRY_RETENTION.md +84 -0
- package/docs/TIME_SEMANTICS.md +77 -0
- package/docs/WATCH_REFRESH_REQUESTS.md +123 -0
- package/docs/WINDOWS_SIDECAR_RELEASE.md +424 -0
- package/docs/accuracy-audit-checklist.md +304 -0
- package/docs/accuracy-hardening-goal.md +500 -0
- package/docs/analyzer-inventory.md +78 -0
- package/docs/analyzer-validation-protocol.md +84 -0
- package/docs/architecture-coherence-vision.md +254 -0
- package/docs/assets/codebaseiq-logo-dark.svg +21 -0
- package/docs/assets/codebaseiq-logo.svg +24 -0
- package/docs/locality-analyzer-design.md +193 -0
- package/docs/schemas/cli-json-envelope.schema.json +237 -0
- package/docs/schemas/cli-output-page.schema.json +104 -0
- package/docs/schemas/npm-release-state.schema.json +146 -0
- package/docs/schemas/observation-receipt.schema.json +164 -0
- package/docs/schemas/project-config.schema.json +318 -0
- package/docs/schemas/suppression-record.schema.json +79 -0
- package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
- package/package.json +482 -0
- package/scripts/build-codebaseiq-windows.mjs +197 -0
- package/scripts/codebaseiq-windows-provenance.mjs +364 -0
- package/scripts/evidence-product-contract.mjs +197 -0
- package/scripts/verify-codebaseiq-windows.mjs +29 -0
- package/skills/codebaseiq/SKILL.md +75 -0
- package/skills/codebaseiq/agents/openai.yaml +4 -0
- package/skills/codebaseiq-explore/SKILL.md +34 -0
- package/skills/codebaseiq-explore/agents/openai.yaml +4 -0
- package/skills/concrete-plan/SKILL.md +79 -0
- package/skills/concrete-plan/agents/openai.yaml +4 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Coding-agent failure modes
|
|
2
|
+
|
|
3
|
+
codebaseiq helps with failures caused by an incomplete repository map. It does
|
|
4
|
+
not prevent every coding error and does not replace tests.
|
|
5
|
+
|
|
6
|
+
## Narrow implementation
|
|
7
|
+
|
|
8
|
+
The edit handles the obvious entry point but misses consumers, callers, or
|
|
9
|
+
parallel paths. Use `codebaseiq context <target>` before the edit and
|
|
10
|
+
`codebaseiq diff-impact` after it.
|
|
11
|
+
|
|
12
|
+
## Retirement residue
|
|
13
|
+
|
|
14
|
+
A replacement works, but old helpers, exports, adapters, tests, or docs remain
|
|
15
|
+
and mislead later agents. Inspect `codebaseiq incomplete-migration --full`,
|
|
16
|
+
`codebaseiq dead --full`, and the changed source. A detector suggests where to
|
|
17
|
+
look; source and native checks decide what can be removed.
|
|
18
|
+
|
|
19
|
+
## Duplicate or drifted concepts
|
|
20
|
+
|
|
21
|
+
An agent creates another implementation instead of reusing the current owner,
|
|
22
|
+
or updates one twin while leaving another behind. Inspect
|
|
23
|
+
`codebaseiq duplicate-bodies --full`, `codebaseiq twin-drift --full`, and
|
|
24
|
+
`codebaseiq recent-duplicates --full`.
|
|
25
|
+
|
|
26
|
+
## Structural drift
|
|
27
|
+
|
|
28
|
+
The code works locally but violates declared dependency rules or spreads one
|
|
29
|
+
concept across inappropriate boundaries. Inspect `codebaseiq architecture` and
|
|
30
|
+
the relevant dependency edges.
|
|
31
|
+
|
|
32
|
+
## Framework cleanup missed
|
|
33
|
+
|
|
34
|
+
Repeated React components or hooks, or repeated Vue components or composables,
|
|
35
|
+
remain invisible to a language-neutral review. Use the React and Vue detector
|
|
36
|
+
families in `codebaseiq health --full`, then confirm candidates in source.
|
|
37
|
+
|
|
38
|
+
## Ceremony without information
|
|
39
|
+
|
|
40
|
+
Repeated status checks, duplicate queries, and record writing spend time
|
|
41
|
+
without changing the agent's decision. codebaseiq therefore keeps work-state
|
|
42
|
+
ownership outside the tool. Reuse evidence while repository state and coverage
|
|
43
|
+
needs are unchanged.
|
package/docs/API.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Programmatic API
|
|
2
|
+
|
|
3
|
+
Public query commands are also available as TypeScript functions. The `queries` namespace exports cover the analysis commands, including the `top*` variants of `fan-in`, `fan-out`, and `coupling`, plus `similarAll` for the cross-codebase mode of `similar`. Operational CLI commands such as `setup`, `doctor`, and `watch` remain runtime commands rather than query-library exports.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import { ScipDatabase, createGitignoreFilter } from 'codebaseiq';
|
|
7
|
+
import {
|
|
8
|
+
health,
|
|
9
|
+
affected,
|
|
10
|
+
changeSurface,
|
|
11
|
+
diffImpact,
|
|
12
|
+
hotspots,
|
|
13
|
+
similar,
|
|
14
|
+
dead,
|
|
15
|
+
convergence,
|
|
16
|
+
} from 'codebaseiq/queries';
|
|
17
|
+
|
|
18
|
+
const filter = createGitignoreFilter('/path/to/project');
|
|
19
|
+
const db = new ScipDatabase(
|
|
20
|
+
{
|
|
21
|
+
dbPath: '/path/to/index.db',
|
|
22
|
+
indexPath: '/path/to/index.scip',
|
|
23
|
+
projectRoot: '/path/to/project',
|
|
24
|
+
},
|
|
25
|
+
filter,
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
const report = health(db);
|
|
29
|
+
console.log(`Score: ${report.score}/100`);
|
|
30
|
+
console.log(`Actions: ${report.actions.length}`);
|
|
31
|
+
|
|
32
|
+
const blast = affected(db, 'login', { maxDepth: 3 });
|
|
33
|
+
const brief = changeSurface(db, 'auth.service.ts');
|
|
34
|
+
const impact = diffImpact(db, { base: 'main' });
|
|
35
|
+
|
|
36
|
+
const pairs = similar(db, 'myFunction', { minSimilarity: 0.5 });
|
|
37
|
+
const recipe = convergence(db, 'funcA', 'funcB');
|
|
38
|
+
|
|
39
|
+
db.close();
|
|
40
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Public TypeScript API evolution
|
|
2
|
+
|
|
3
|
+
The public TypeScript API is the compiler-visible declaration surface
|
|
4
|
+
reachable through `codebaseiq` package export paths. Its essential property is
|
|
5
|
+
that downstream programs can depend on it without importing this repository's
|
|
6
|
+
internal files.
|
|
7
|
+
|
|
8
|
+
Every built declaration path is recorded in
|
|
9
|
+
`docs/api/codebaseiq.api.json`. The report includes exported names, declaration
|
|
10
|
+
kinds and signatures, generic and parameter syntax, return types, and the
|
|
11
|
+
shared declaration chunks that carry referenced public types. Generation
|
|
12
|
+
normalizes formatting, comments, named import/export order, path separators,
|
|
13
|
+
and tsup chunk hashes so the review shows semantic declaration changes rather
|
|
14
|
+
than build noise.
|
|
15
|
+
|
|
16
|
+
## Contributor workflow
|
|
17
|
+
|
|
18
|
+
Build and compare the current declarations:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm run api:check
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The check fails closed when a declaration target is absent, the committed
|
|
25
|
+
manifest is malformed, its acceptance record is missing, or any declaration
|
|
26
|
+
changes. Review every reported path and downstream use. Then accept the change
|
|
27
|
+
with one classification:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm run api:update -- \
|
|
31
|
+
--classification additive \
|
|
32
|
+
--reason "Add an optional result field for evidence provenance."
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The classifications are:
|
|
36
|
+
|
|
37
|
+
- `additive`: an old consumer remains valid, such as a new export or an
|
|
38
|
+
optional result field;
|
|
39
|
+
- `compatible-correction`: the declaration report changes to correct a
|
|
40
|
+
contract that did not describe usable runtime behavior, with the reasoning
|
|
41
|
+
recorded for review;
|
|
42
|
+
- `breaking`: an old consumer may stop compiling or acquire a different
|
|
43
|
+
meaning.
|
|
44
|
+
|
|
45
|
+
The checker automatically identifies additions and removals. It treats changed
|
|
46
|
+
signatures and referenced shared declarations conservatively. A human may
|
|
47
|
+
classify uncertain drift as a compatible correction or breaking change, but
|
|
48
|
+
cannot accept a known or uncertain change as additive without resolving the
|
|
49
|
+
evidence.
|
|
50
|
+
|
|
51
|
+
`api:update` writes a content-addressed record under
|
|
52
|
+
`docs/api/changes/`. The record binds the old and new manifest digests, package
|
|
53
|
+
version, automatic result, chosen classification, reason, and exact change
|
|
54
|
+
list. Do not edit the generated manifest or an acceptance record by hand.
|
|
55
|
+
|
|
56
|
+
## Compatibility policy
|
|
57
|
+
|
|
58
|
+
- Keep a deprecated export or adapter for at least one minor release before
|
|
59
|
+
removal when a feasible compatibility path exists.
|
|
60
|
+
- When preserving behavior would reintroduce a deliberately retired subsystem,
|
|
61
|
+
record a versioned compatibility exception beside the API change. The record
|
|
62
|
+
must name the removed referents, explain why an adapter would give consumers
|
|
63
|
+
false semantics, preserve any independently useful serialized types, and
|
|
64
|
+
identify the supported replacement. A generated breaking-change acceptance
|
|
65
|
+
record alone is not that justification.
|
|
66
|
+
- Add optional fields instead of making old consumers construct new required
|
|
67
|
+
state.
|
|
68
|
+
- Treat parameter optionality, union membership, generic constraints, and
|
|
69
|
+
discriminated-union members as contract changes even when runtime tests pass.
|
|
70
|
+
- Preserve the compile fixture in
|
|
71
|
+
`tests/fixtures/public-api-consumer/`. It represents a previously written
|
|
72
|
+
downstream program and must compile against the newly built package.
|
|
73
|
+
- The two-package release coordinator runs lint, whose gate includes
|
|
74
|
+
`api:check`, before packing either artifact or reading registry state. Direct
|
|
75
|
+
`npm publish` is refused by `prepublishOnly`; it is not an alternate API
|
|
76
|
+
compatibility path. A declaration change is not accepted merely because
|
|
77
|
+
its implementation tests pass.
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
# CLI output modes
|
|
2
|
+
|
|
3
|
+
Human output is the default for people and agents. It is the command-owned
|
|
4
|
+
presentation: reports retain sections and whitespace, and `code` retains a
|
|
5
|
+
path/range header, source indentation, and one-based line numbers. It omits
|
|
6
|
+
transport metadata that does not help answer the command's question.
|
|
7
|
+
|
|
8
|
+
Public commands that support structured output share the same three options:
|
|
9
|
+
|
|
10
|
+
```text
|
|
11
|
+
--json Emit the stable versioned CLI envelope.
|
|
12
|
+
--result-only With --json, emit only the command-owned result.
|
|
13
|
+
--compact With --json, minify the selected JSON form for a program.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Use plain `--json` for an integration that depends on producer, schema,
|
|
17
|
+
coverage, evidence, arguments, or invocation options. Use `--json
|
|
18
|
+
--result-only` for a program that needs just the result. Agents should run the
|
|
19
|
+
ordinary command instead; pretty JSON remains structurally noisier than the
|
|
20
|
+
human renderer. Both modifiers are rejected without `--json`.
|
|
21
|
+
|
|
22
|
+
For example, one exact `codebaseiq code <selector>` prints source directly. Its
|
|
23
|
+
single-result result-only form contains only `file`, resolved `symbol`,
|
|
24
|
+
`language`, a one-based `range`, and ordered `{ line, text }` rows. With several
|
|
25
|
+
selectors, an exact-file export surface, or ambiguity, result-only reports each
|
|
26
|
+
selector's status, sources, range or file coverage, omitted-definition ledger,
|
|
27
|
+
candidates, and literal values. A line-range selector includes the exact
|
|
28
|
+
requested lines plus statically attributed same-file callable definitions and
|
|
29
|
+
states the dynamic-call limit. An exact-file export surface contains exported
|
|
30
|
+
definitions—or top-level definitions when no explicit export surface
|
|
31
|
+
exists—and their same-file referenced definitions; `--members all` is the
|
|
32
|
+
explicit whole-file form. Ambiguity never silently selects one candidate.
|
|
33
|
+
|
|
34
|
+
## Stable JSON envelope
|
|
35
|
+
|
|
36
|
+
A CLI JSON envelope is the public transport record printed by a codebaseiq
|
|
37
|
+
command when a caller selects `--json`. Its real-world units are the JSON
|
|
38
|
+
objects read by agents, shell scripts, CI jobs, and other programs. It is a
|
|
39
|
+
versioned message format distinguished by one stable outer shape that names
|
|
40
|
+
its producer, command, and result contract while leaving the command-specific
|
|
41
|
+
payload under `result`.
|
|
42
|
+
|
|
43
|
+
The current envelope is schema version 1:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"kind": "codebaseiq-result",
|
|
48
|
+
"schemaVersion": 1,
|
|
49
|
+
"producer": { "name": "codebaseiq", "version": "0.20.0" },
|
|
50
|
+
"command": "refs",
|
|
51
|
+
"operationRole": "repository-observation",
|
|
52
|
+
"resultSchemaVersion": 1,
|
|
53
|
+
"evidence": "graph-fact",
|
|
54
|
+
"evidenceContext": {
|
|
55
|
+
"schemaVersion": 1,
|
|
56
|
+
"operationRole": "repository-observation",
|
|
57
|
+
"receipt": {
|
|
58
|
+
"schemaVersion": 2,
|
|
59
|
+
"observedAt": "2026-07-30T12:00:00.000Z",
|
|
60
|
+
"facts": {
|
|
61
|
+
"collaborationDomain": {
|
|
62
|
+
"schemaVersion": 1,
|
|
63
|
+
"canonicalizationVersion": 1,
|
|
64
|
+
"hashAlgorithm": "sha256",
|
|
65
|
+
"projection": { "name": "codebaseiq:collaboration-domain", "version": 1 },
|
|
66
|
+
"digest": "<64 lowercase hex characters>"
|
|
67
|
+
},
|
|
68
|
+
"index": {
|
|
69
|
+
"generation": {
|
|
70
|
+
"schemaVersion": 1,
|
|
71
|
+
"canonicalizationVersion": 1,
|
|
72
|
+
"hashAlgorithm": "sha256",
|
|
73
|
+
"projection": { "name": "codebaseiq:index-generation", "version": 1 },
|
|
74
|
+
"digest": "<64 lowercase hex characters>"
|
|
75
|
+
},
|
|
76
|
+
"source": "immutable"
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"observedSources": [{ "kind": "index-generation" }],
|
|
80
|
+
"stabilityProofs": [{ "source": "index-generation", "kind": "immutable" }]
|
|
81
|
+
},
|
|
82
|
+
"analysisManifest": {
|
|
83
|
+
"schemaVersion": 1,
|
|
84
|
+
"evidence": "graph-fact",
|
|
85
|
+
"coverage": {},
|
|
86
|
+
"claimQualification": {
|
|
87
|
+
"schemaVersion": 1,
|
|
88
|
+
"origin": "compiler-graph",
|
|
89
|
+
"coverage": { "state": "complete", "returned": 1, "totalKnown": true, "total": 1, "omitted": 0 },
|
|
90
|
+
"producerValidation": { "status": "not-evaluated" },
|
|
91
|
+
"stateAuthority": {
|
|
92
|
+
"policyVersion": 1,
|
|
93
|
+
"authority": "advisory",
|
|
94
|
+
"requiredRelationships": ["collaborationDomain", "wholeContent", "observationStability"],
|
|
95
|
+
"reasons": ["wholeContent:unknown"]
|
|
96
|
+
},
|
|
97
|
+
"repositoryPolicy": {
|
|
98
|
+
"policyId": "codebaseiq:unresolved-repository-policy",
|
|
99
|
+
"policyVersion": 1,
|
|
100
|
+
"permission": "not-established",
|
|
101
|
+
"reasons": ["No repository action policy was supplied for this claim."]
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"args": ["login"],
|
|
107
|
+
"options": { "json": true },
|
|
108
|
+
"result": {},
|
|
109
|
+
"coverage": {}
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
`schemaVersion` governs the outer transport record. `resultSchemaVersion`
|
|
114
|
+
governs the payload selected by `command`; it can advance without changing
|
|
115
|
+
the transport version. `producer.version` is the installed package version
|
|
116
|
+
that emitted the record. `kind` prevents a consumer from mistaking another
|
|
117
|
+
JSON protocol for a CLI result.
|
|
118
|
+
|
|
119
|
+
`operationRole` names the effect of the parsed invocation, independently from
|
|
120
|
+
how its result was derived. The closed roles distinguish repository
|
|
121
|
+
observation, repository preview, mutation, combined mutation/observation,
|
|
122
|
+
environment observation, and tool information. A command with several modes
|
|
123
|
+
selects its role from parsed arguments and options before its handler runs.
|
|
124
|
+
|
|
125
|
+
Repository observations, previews, and composite operations attach
|
|
126
|
+
`evidenceContext` automatically at the shared renderer when they hold an open
|
|
127
|
+
database. Pure mutations and environment/tool-information results do not
|
|
128
|
+
inherit repository-observation authority merely because they emit JSON. The
|
|
129
|
+
context repeats the selected operation role so it remains self-contained; the
|
|
130
|
+
decoder rejects conflicting top-level and nested roles.
|
|
131
|
+
|
|
132
|
+
The context's version-2 `receipt` records independent facts about the
|
|
133
|
+
collaboration domain, workspace instance, whole repository content, relevant
|
|
134
|
+
inputs, index inputs, immutable generation, observed sources, and the
|
|
135
|
+
mechanism—if any—that kept each source fixed. Every content-derived identity
|
|
136
|
+
names its projection and projection version, canonicalization version, and
|
|
137
|
+
hash algorithm. A missing fact means unknown; it is never inferred from a
|
|
138
|
+
neighboring identity.
|
|
139
|
+
|
|
140
|
+
The example identifies the immutable index generation the query actually
|
|
141
|
+
held, but it does not contain a fixed repository snapshot or an index-input
|
|
142
|
+
alignment proof. Product policy therefore keeps it advisory for completion
|
|
143
|
+
even though the index source itself is immutable. `analysisManifest`
|
|
144
|
+
separately records how the result was produced and how much was examined.
|
|
145
|
+
|
|
146
|
+
`claimQualification` keeps five questions independent. `origin` identifies
|
|
147
|
+
the method that produced support for the result. `coverage` identifies how
|
|
148
|
+
much of the relevant answer the invocation enumerated. `producerValidation`
|
|
149
|
+
reports performance against a named versioned corpus when such certification
|
|
150
|
+
exists. `stateAuthority` is product policy derived from the receipt rather
|
|
151
|
+
than a producer-authored strength label. `repositoryPolicy.permission` states
|
|
152
|
+
what response the repository permits. A strong value in one field never
|
|
153
|
+
upgrades another.
|
|
154
|
+
|
|
155
|
+
For a command whose aggregate origin is `mixed`, `families` binds a stable
|
|
156
|
+
result selector either to one fixed origin or to an existing per-row
|
|
157
|
+
provenance field. This retains the actual origins of findings and result
|
|
158
|
+
families instead of forcing a consumer to treat every row as generically
|
|
159
|
+
mixed. The legacy top-level and manifest `evidence` values remain during the
|
|
160
|
+
additive compatibility window.
|
|
161
|
+
|
|
162
|
+
When a producer actually reads repository bytes through the fixed-snapshot
|
|
163
|
+
boundary, its receipt may additionally contain:
|
|
164
|
+
|
|
165
|
+
- `facts.wholeContent`, derived from the immutable Git tree plus captured
|
|
166
|
+
dirty, untracked, declared-ignored, deletion, symlink, and executable-mode
|
|
167
|
+
overlays;
|
|
168
|
+
- one `facts.relevantInputs` entry for `codebaseiq:index-inputs`;
|
|
169
|
+
- `facts.index.inputs`, derived from the versioned project-input fingerprint
|
|
170
|
+
already persisted with the held generation; and
|
|
171
|
+
- a `repository-snapshot` observed source with a `fixed-snapshot` stability
|
|
172
|
+
proof.
|
|
173
|
+
|
|
174
|
+
Equal `codebaseiq:index-inputs` projections establish exact alignment between
|
|
175
|
+
that snapshot and the immutable generation. A capture race, unsupported input,
|
|
176
|
+
or producer that never read repository bytes leaves the snapshot facts absent;
|
|
177
|
+
absence remains `unknown`. A producer does not gain whole-content authority
|
|
178
|
+
merely because another command could have taken a snapshot.
|
|
179
|
+
|
|
180
|
+
Version-1 receipts remain readable as legacy provenance. Their path-derived
|
|
181
|
+
project identity and mixed worktree hash are not relabeled as collaboration,
|
|
182
|
+
workspace, or content identities. Only a legacy index-generation identity can
|
|
183
|
+
be compared as the same legacy fact; unproved v2 relationships remain
|
|
184
|
+
`unknown`.
|
|
185
|
+
|
|
186
|
+
The existing top-level `evidence`, `analysisBudget`, and `coverage` fields
|
|
187
|
+
remain during the additive migration so older tolerant consumers continue to
|
|
188
|
+
work. New consumers may read the nested context. `--result-only` deliberately
|
|
189
|
+
omits the common envelope, including this context, and therefore cannot stand
|
|
190
|
+
alone as completion evidence.
|
|
191
|
+
|
|
192
|
+
The machine-readable schema is
|
|
193
|
+
[`schemas/cli-json-envelope.schema.json`](schemas/cli-json-envelope.schema.json).
|
|
194
|
+
The public `codebaseiq/runtime` export provides
|
|
195
|
+
`decodeCliJsonEnvelope()` and `requireCompatibleCliJsonEnvelope()` for
|
|
196
|
+
consumers that want the repository's compatibility policy rather than a
|
|
197
|
+
hand-written field check.
|
|
198
|
+
|
|
199
|
+
## Complete output for agents
|
|
200
|
+
|
|
201
|
+
An output page is one consecutive, bounded part of the characters a command
|
|
202
|
+
rendered. Its real-world units are the `codebaseiq-output-page` objects and
|
|
203
|
+
human page blocks returned after a result exceeds an agent transport's safe
|
|
204
|
+
size. It differs from a query limit because it divides already-produced
|
|
205
|
+
output without discarding any character: following each emitted continuation
|
|
206
|
+
command reconstructs the complete rendered stream.
|
|
207
|
+
|
|
208
|
+
Every command accepts these global options:
|
|
209
|
+
|
|
210
|
+
```text
|
|
211
|
+
--output-page-size <characters>
|
|
212
|
+
--output-cursor <cursor>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Run commands normally without choosing a page size. Human output larger than
|
|
216
|
+
12,000 characters is paged automatically as ordinary multiline text, not as a
|
|
217
|
+
JSON object. Each incomplete page prints one exact continuation command after
|
|
218
|
+
its content. Agents must run that command unchanged until the output-complete
|
|
219
|
+
marker. Supplying `--output-page-size` changes the character budget; it does
|
|
220
|
+
not select JSON. The value counts rendered JavaScript string characters, not
|
|
221
|
+
rows, results, model tokens, or bytes. If the complete result fits, codebaseiq
|
|
222
|
+
returns it unchanged and removes the temporary snapshot; a page wrapper exists
|
|
223
|
+
only when more content remains. Partial human pages end at the last complete
|
|
224
|
+
line within that budget whenever one exists, so the next page begins with its
|
|
225
|
+
own heading or source line number; a single line longer than the budget is the
|
|
226
|
+
only case that requires a character-boundary split. Do not pipe codebaseiq
|
|
227
|
+
through `head`, `tail`, or a line-range `sed`; those programs discard output
|
|
228
|
+
without creating a resumable position.
|
|
229
|
+
|
|
230
|
+
Default `--json` output remains the ordinary, additively extensible
|
|
231
|
+
`codebaseiq-result` envelope. When that envelope exceeds
|
|
232
|
+
12,000 characters, codebaseiq writes an early stderr warning containing the
|
|
233
|
+
exact command that opts into output pages. The paged command returns:
|
|
234
|
+
|
|
235
|
+
```json
|
|
236
|
+
{
|
|
237
|
+
"kind": "codebaseiq-output-page",
|
|
238
|
+
"schemaVersion": 1,
|
|
239
|
+
"producer": { "name": "codebaseiq", "version": "0.20.0" },
|
|
240
|
+
"command": "architecture",
|
|
241
|
+
"contentType": "application/json",
|
|
242
|
+
"agentInstruction": "INCOMPLETE EVIDENCE: do not draw conclusions or report completion from this partial page. Run page.continuation.command exactly, then repeat until page.complete is true.",
|
|
243
|
+
"page": {
|
|
244
|
+
"offset": 0,
|
|
245
|
+
"returnedCharacters": 12000,
|
|
246
|
+
"totalCharacters": 48152,
|
|
247
|
+
"omittedCharacters": 36152,
|
|
248
|
+
"remainingCharacters": 36152,
|
|
249
|
+
"complete": false,
|
|
250
|
+
"outputHash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
|
|
251
|
+
"continuation": {
|
|
252
|
+
"cursor": "<opaque cursor>",
|
|
253
|
+
"command": "codebaseiq architecture --json --output-page-size 12000 --output-cursor <opaque cursor>"
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
"content": "{\n \"kind\": \"codebaseiq-result\",\n ..."
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
The cursor is bound to the executable or package-runner prefix, command,
|
|
261
|
+
working directory, complete non-pagination argument list, immutable page
|
|
262
|
+
number and size, private output snapshot, and SHA-256 of the complete rendered
|
|
263
|
+
output. The initial capture records that invocation identity plus each page's
|
|
264
|
+
UTF-8 byte range and hash. A continuation reads and verifies only that range,
|
|
265
|
+
so retrieving all pages performs linear snapshot I/O and never re-runs the
|
|
266
|
+
command. A changed executable identity, page, page size, missing snapshot, or
|
|
267
|
+
expired snapshot is rejected with the exact page-one restart command using the
|
|
268
|
+
same prefix that created it.
|
|
269
|
+
|
|
270
|
+
A genuinely partial JSON page must carry `content` as a string because an
|
|
271
|
+
arbitrary character boundary is not necessarily valid nested JSON. Run the
|
|
272
|
+
emitted continuation exactly until completion. Normal agent work should use
|
|
273
|
+
human output, where partial pages remain multiline text rather than a JSON
|
|
274
|
+
string.
|
|
275
|
+
|
|
276
|
+
One snapshot is bounded to 32 million characters, 64 MiB, and 32,768 pages.
|
|
277
|
+
The per-user pool is bounded to 32 snapshots and 256 MiB under atomic
|
|
278
|
+
reservation. Every incomplete machine-readable page carries a direct
|
|
279
|
+
`agentInstruction`; consumers must follow `page.continuation.command` until
|
|
280
|
+
`page.complete` is `true`.
|
|
281
|
+
|
|
282
|
+
Output pages and result coverage answer different questions:
|
|
283
|
+
|
|
284
|
+
- output pagination says whether every rendered character is retrievable;
|
|
285
|
+
- the result envelope's `coverage` says whether the command examined every
|
|
286
|
+
logical result unit.
|
|
287
|
+
|
|
288
|
+
A completely retrieved page can therefore still contain a bounded or sampled
|
|
289
|
+
analysis. Use the result envelope's stated `--full` remediation when present,
|
|
290
|
+
then follow output continuation commands until complete.
|
|
291
|
+
|
|
292
|
+
Invocation coverage counts the semantic result units declared by the command
|
|
293
|
+
descriptor. A list command counts top-level rows; a report counts one report;
|
|
294
|
+
and a command with a named result field counts only that field. Unrelated
|
|
295
|
+
diagnostic arrays do not inflate `returned`. Symbol-selecting commands also
|
|
296
|
+
report a separate `coverage.resolution` state—`exact`, `ambiguous`, or
|
|
297
|
+
`missing` with its candidate count—because resolving one requested identity
|
|
298
|
+
and enumerating that identity's result rows are different completeness
|
|
299
|
+
questions.
|
|
300
|
+
|
|
301
|
+
`refs --limit <n>` uses a generation-bound keyset cursor: each ordinary page
|
|
302
|
+
continues after the last returned `(relativePath, line)` and stops once it has
|
|
303
|
+
found the requested rows plus one continuation witness. The JSON result reports
|
|
304
|
+
`pagination.producer: "source-keyset"` for that bounded producer. Explicit
|
|
305
|
+
semantic enrichment (`--full`), Ruby supplemental evidence, and the coarse SCIP
|
|
306
|
+
chunk fallback cannot currently resume before complete materialization; those
|
|
307
|
+
pages preserve their evidence but report
|
|
308
|
+
`pagination.producer: "complete-only"` instead of implying that `--limit`
|
|
309
|
+
bounded the analysis work. Version-1 offset cursors remain readable and their
|
|
310
|
+
next continuation is upgraded to the version-2 keyset format. Every result
|
|
311
|
+
cursor is rejected after the index generation changes.
|
|
312
|
+
|
|
313
|
+
The machine-readable page schema is
|
|
314
|
+
[`schemas/cli-output-page.schema.json`](schemas/cli-output-page.schema.json).
|
|
315
|
+
Page sizes range from 256 through 100,000 characters and cursors are limited
|
|
316
|
+
to 4,096 characters. The first paged invocation streams the complete output
|
|
317
|
+
to a mode-`0600` snapshot beneath a current-user mode-`0700` temporary
|
|
318
|
+
directory while retaining only the requested page in memory. Snapshots expire
|
|
319
|
+
after one hour and are removed after the final page. Pagination imposes no
|
|
320
|
+
arbitrary total-output ceiling and does not silently discard later pages;
|
|
321
|
+
command-level result budgets still apply and report their own completeness.
|
|
322
|
+
|
|
323
|
+
## Compatibility policy
|
|
324
|
+
|
|
325
|
+
The decoder accepts:
|
|
326
|
+
|
|
327
|
+
| Input | Meaning | Consumer action |
|
|
328
|
+
| ------------------------------------------------------------------- | --------------------------------------------- | -------------------------------------------------------------- |
|
|
329
|
+
| Unversioned legacy envelope | The public shape emitted before schema v1 | Read as supported legacy v0; plan migration |
|
|
330
|
+
| `kind: "codebaseiq-result"`, `schemaVersion: 1` | Current transport contract | Read the named result schema |
|
|
331
|
+
| A supported envelope with an unknown command `resultSchemaVersion` | A command payload this consumer does not know | Reject that payload without changing unrelated command schemas |
|
|
332
|
+
| A higher or otherwise unsupported positive envelope `schemaVersion` | An outer contract this consumer does not know | Reject with producer/version context |
|
|
333
|
+
| Missing required identity or transport fields | A malformed or different message | Reject with the failed boundary |
|
|
334
|
+
|
|
335
|
+
Consumers must ignore unknown fields. Additive fields can therefore ship in a
|
|
336
|
+
minor release. A field removal, type change, meaning change, or previously
|
|
337
|
+
optional field becoming required needs a new relevant schema version.
|
|
338
|
+
Deprecated aliases remain available for a documented compatibility window;
|
|
339
|
+
removing one requires a major contract transition.
|
|
340
|
+
|
|
341
|
+
The committed v0 and v1 fixtures in `tests/fixtures/` prove that the newest
|
|
342
|
+
decoder reads both generations. The v1 fixture also contains an unknown
|
|
343
|
+
additive field so tests prove tolerant reads rather than exact-key coupling.
|
|
344
|
+
|
|
345
|
+
## Effectiveness telemetry authority
|
|
346
|
+
|
|
347
|
+
`effectiveness --json` reports both handling outcomes and the authority of the
|
|
348
|
+
observer that produced them. Repository-local agents and humans can edit the
|
|
349
|
+
same `.codebaseiq/events/` and suppression files being summarized, so their
|
|
350
|
+
rows use `authority: "local-writable-telemetry"` and expose
|
|
351
|
+
`resolutionVsSuppressionRate`. The legacy `precision` result field remains
|
|
352
|
+
present but is `null` for writable, mixed, or self-asserted populations. It is
|
|
353
|
+
numeric only when every event in that population is a `protected-ci`
|
|
354
|
+
observation with `protected-external` authority and the caller supplies its
|
|
355
|
+
gate-run ID through a separately controlled attestation set. The built-in
|
|
356
|
+
repository-history command supplies no such set, so writable JSON cannot
|
|
357
|
+
self-promote into an independent grade. External evaluators can call the
|
|
358
|
+
public `computeEffectiveness()` export from `codebaseiq/queries` with
|
|
359
|
+
`protectedGateRunIds` obtained from their separately controlled corpus.
|
|
360
|
+
|
|
361
|
+
The result also includes observer counts, distinct and missing gate-run
|
|
362
|
+
identities, and bounded anomaly samples. Those samples identify calibration
|
|
363
|
+
work without requiring a human to approve every ordinary automated
|
|
364
|
+
suppression. `recordCompatibility.outcomeEvents` remains the independent
|
|
365
|
+
statement about whether every event file was readable; neither compatibility
|
|
366
|
+
nor Git can prove that a writable event file was never deleted.
|
|
367
|
+
|
|
368
|
+
## Other JSON protocols
|
|
369
|
+
|
|
370
|
+
The hidden `__health-phase` and `__diff-impact-batch` commands are
|
|
371
|
+
same-package child-process messages, not public `--json` responses. They use
|
|
372
|
+
the independently versioned `codebaseiq-isolated-analysis` protocol and are
|
|
373
|
+
validated for protocol name, schema version, producer, command, and result
|
|
374
|
+
before the parent accepts them.
|
|
375
|
+
|
|
376
|
+
The `hook-context`, `hook-pretool`, and `hook-stop` outputs implement the
|
|
377
|
+
Codex or Claude host's hook schema. Those hosts are the protocol owners, so
|
|
378
|
+
codebaseiq must not add its CLI envelope fields to their messages. The hook
|
|
379
|
+
event discriminator supplied by the host contract identifies those records.
|
|
380
|
+
|
|
381
|
+
## Evolution checklist
|
|
382
|
+
|
|
383
|
+
1. Keep existing fields and meanings when making an additive change.
|
|
384
|
+
2. Bump `resultSchemaVersion` when one command's payload breaks compatibility.
|
|
385
|
+
3. Bump `schemaVersion` when the shared outer record breaks compatibility.
|
|
386
|
+
4. Keep a fixture for the previous supported generation and teach the decoder
|
|
387
|
+
whether to migrate or reject it.
|
|
388
|
+
5. Update the JSON Schema, this guide, the command reference, and compatibility
|
|
389
|
+
tests in the same change.
|