codexgpt 1.0.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.
Files changed (654) hide show
  1. package/AGENTS.example.md +20 -0
  2. package/CHANGELOG.md +342 -0
  3. package/CHATGPT_PROMPT.md +12 -0
  4. package/CLOUDFLARED_VERIFIED_INSTALL.md +94 -0
  5. package/CODEX_PROMPT.md +12 -0
  6. package/CONTRIBUTING.md +62 -0
  7. package/DOMAIN_SETUP.md +275 -0
  8. package/FAQ.md +366 -0
  9. package/FAQ_ZH.md +329 -0
  10. package/LICENSE +21 -0
  11. package/PUBLIC_LAUNCH_CHECKLIST.md +111 -0
  12. package/README.md +490 -0
  13. package/README_ZH.md +747 -0
  14. package/SECURITY.md +295 -0
  15. package/config.example.env +103 -0
  16. package/dist/access/fullAccessLease.js +148 -0
  17. package/dist/access/fullAccessLease.js.map +1 -0
  18. package/dist/access/protectedRoots.js +122 -0
  19. package/dist/access/protectedRoots.js.map +1 -0
  20. package/dist/access/rootAdmission.js +347 -0
  21. package/dist/access/rootAdmission.js.map +1 -0
  22. package/dist/analysis/cache.js +27 -0
  23. package/dist/analysis/cache.js.map +1 -0
  24. package/dist/analysis/classify.js +102 -0
  25. package/dist/analysis/classify.js.map +1 -0
  26. package/dist/analysis/extract.js +139 -0
  27. package/dist/analysis/extract.js.map +1 -0
  28. package/dist/analysis/graph.js +22 -0
  29. package/dist/analysis/graph.js.map +1 -0
  30. package/dist/analysis/impact.js +167 -0
  31. package/dist/analysis/impact.js.map +1 -0
  32. package/dist/analysis/index.js +215 -0
  33. package/dist/analysis/index.js.map +1 -0
  34. package/dist/analysis/inventory.js +51 -0
  35. package/dist/analysis/inventory.js.map +1 -0
  36. package/dist/analysis/providers.js +24 -0
  37. package/dist/analysis/providers.js.map +1 -0
  38. package/dist/analysis/rank.js +27 -0
  39. package/dist/analysis/rank.js.map +1 -0
  40. package/dist/analysis/types.js +8 -0
  41. package/dist/analysis/types.js.map +1 -0
  42. package/dist/audit/canonicalJson.js +79 -0
  43. package/dist/audit/canonicalJson.js.map +1 -0
  44. package/dist/audit/diagnostics.js +128 -0
  45. package/dist/audit/diagnostics.js.map +1 -0
  46. package/dist/audit/index.js +12 -0
  47. package/dist/audit/index.js.map +1 -0
  48. package/dist/audit/lifecycleV3.js +53 -0
  49. package/dist/audit/lifecycleV3.js.map +1 -0
  50. package/dist/audit/lifecycleV4.js +70 -0
  51. package/dist/audit/lifecycleV4.js.map +1 -0
  52. package/dist/audit/lock.js +195 -0
  53. package/dist/audit/lock.js.map +1 -0
  54. package/dist/audit/queryTool.js +120 -0
  55. package/dist/audit/queryTool.js.map +1 -0
  56. package/dist/audit/runtime.js +48 -0
  57. package/dist/audit/runtime.js.map +1 -0
  58. package/dist/audit/schemas.js +640 -0
  59. package/dist/audit/schemas.js.map +1 -0
  60. package/dist/audit/store.js +1309 -0
  61. package/dist/audit/store.js.map +1 -0
  62. package/dist/audit/transactionParticipant.js +45 -0
  63. package/dist/audit/transactionParticipant.js.map +1 -0
  64. package/dist/audit/types.js +11 -0
  65. package/dist/audit/types.js.map +1 -0
  66. package/dist/auth/audit.js +44 -0
  67. package/dist/auth/audit.js.map +1 -0
  68. package/dist/auth/authorizationStore.js +333 -0
  69. package/dist/auth/authorizationStore.js.map +1 -0
  70. package/dist/auth/challenges.js +25 -0
  71. package/dist/auth/challenges.js.map +1 -0
  72. package/dist/auth/clientStore.js +469 -0
  73. package/dist/auth/clientStore.js.map +1 -0
  74. package/dist/auth/cloudflareConfig.js +112 -0
  75. package/dist/auth/cloudflareConfig.js.map +1 -0
  76. package/dist/auth/configuration.js +167 -0
  77. package/dist/auth/configuration.js.map +1 -0
  78. package/dist/auth/credentialStore.js +65 -0
  79. package/dist/auth/credentialStore.js.map +1 -0
  80. package/dist/auth/deploymentLock.js +220 -0
  81. package/dist/auth/deploymentLock.js.map +1 -0
  82. package/dist/auth/deploymentRegistry.js +149 -0
  83. package/dist/auth/deploymentRegistry.js.map +1 -0
  84. package/dist/auth/errors.js +26 -0
  85. package/dist/auth/errors.js.map +1 -0
  86. package/dist/auth/grantStore.js +307 -0
  87. package/dist/auth/grantStore.js.map +1 -0
  88. package/dist/auth/index.js +39 -0
  89. package/dist/auth/index.js.map +1 -0
  90. package/dist/auth/keyManager.js +148 -0
  91. package/dist/auth/keyManager.js.map +1 -0
  92. package/dist/auth/localAdminSession.js +173 -0
  93. package/dist/auth/localAdminSession.js.map +1 -0
  94. package/dist/auth/metadata.js +69 -0
  95. package/dist/auth/metadata.js.map +1 -0
  96. package/dist/auth/oauthProvider.js +589 -0
  97. package/dist/auth/oauthProvider.js.map +1 -0
  98. package/dist/auth/ownerApproval.js +51 -0
  99. package/dist/auth/ownerApproval.js.map +1 -0
  100. package/dist/auth/policyIdentity.js +189 -0
  101. package/dist/auth/policyIdentity.js.map +1 -0
  102. package/dist/auth/rateLimits.js +66 -0
  103. package/dist/auth/rateLimits.js.map +1 -0
  104. package/dist/auth/recovery.js +275 -0
  105. package/dist/auth/recovery.js.map +1 -0
  106. package/dist/auth/requestContext.js +34 -0
  107. package/dist/auth/requestContext.js.map +1 -0
  108. package/dist/auth/resourceMiddleware.js +147 -0
  109. package/dist/auth/resourceMiddleware.js.map +1 -0
  110. package/dist/auth/runtimeStatus.js +51 -0
  111. package/dist/auth/runtimeStatus.js.map +1 -0
  112. package/dist/auth/schemas.js +84 -0
  113. package/dist/auth/schemas.js.map +1 -0
  114. package/dist/auth/stateStore.js +468 -0
  115. package/dist/auth/stateStore.js.map +1 -0
  116. package/dist/auth/tokenService.js +631 -0
  117. package/dist/auth/tokenService.js.map +1 -0
  118. package/dist/auth/toolSecurity.js +108 -0
  119. package/dist/auth/toolSecurity.js.map +1 -0
  120. package/dist/auth/types.js +6 -0
  121. package/dist/auth/types.js.map +1 -0
  122. package/dist/auth/windowsDpapi.js +193 -0
  123. package/dist/auth/windowsDpapi.js.map +1 -0
  124. package/dist/bashOps.js +292 -0
  125. package/dist/bashOps.js.map +1 -0
  126. package/dist/capabilitiesOps.js +412 -0
  127. package/dist/capabilitiesOps.js.map +1 -0
  128. package/dist/changesets/crypto.js +92 -0
  129. package/dist/changesets/crypto.js.map +1 -0
  130. package/dist/changesets/index.js +9 -0
  131. package/dist/changesets/index.js.map +1 -0
  132. package/dist/changesets/moveStore.js +237 -0
  133. package/dist/changesets/moveStore.js.map +1 -0
  134. package/dist/changesets/moveUndo.js +386 -0
  135. package/dist/changesets/moveUndo.js.map +1 -0
  136. package/dist/changesets/schemas.js +234 -0
  137. package/dist/changesets/schemas.js.map +1 -0
  138. package/dist/changesets/store.js +573 -0
  139. package/dist/changesets/store.js.map +1 -0
  140. package/dist/changesets/types.js +9 -0
  141. package/dist/changesets/types.js.map +1 -0
  142. package/dist/changesets/undo.js +525 -0
  143. package/dist/changesets/undo.js.map +1 -0
  144. package/dist/changesets/unifiedUndo.js +31 -0
  145. package/dist/changesets/unifiedUndo.js.map +1 -0
  146. package/dist/cliEnvironment.js +85 -0
  147. package/dist/cliEnvironment.js.map +1 -0
  148. package/dist/codexSessions.js +733 -0
  149. package/dist/codexSessions.js.map +1 -0
  150. package/dist/codexgptSupertool.js +216 -0
  151. package/dist/codexgptSupertool.js.map +1 -0
  152. package/dist/codexproSupertool.js +204 -0
  153. package/dist/codexproSupertool.js.map +1 -0
  154. package/dist/config.js +733 -0
  155. package/dist/config.js.map +1 -0
  156. package/dist/control/localApprovalClient.js +287 -0
  157. package/dist/control/localApprovalClient.js.map +1 -0
  158. package/dist/control/localApprovalServer.js +466 -0
  159. package/dist/control/localApprovalServer.js.map +1 -0
  160. package/dist/control/runtime.js +178 -0
  161. package/dist/control/runtime.js.map +1 -0
  162. package/dist/control/schemas.js +184 -0
  163. package/dist/control/schemas.js.map +1 -0
  164. package/dist/control/windowsLocalControl.js +348 -0
  165. package/dist/control/windowsLocalControl.js.map +1 -0
  166. package/dist/fsOps.js +541 -0
  167. package/dist/fsOps.js.map +1 -0
  168. package/dist/git/admission.js +26 -0
  169. package/dist/git/admission.js.map +1 -0
  170. package/dist/git/branchService.js +51 -0
  171. package/dist/git/branchService.js.map +1 -0
  172. package/dist/git/capabilities.js +143 -0
  173. package/dist/git/capabilities.js.map +1 -0
  174. package/dist/git/commitService.js +344 -0
  175. package/dist/git/commitService.js.map +1 -0
  176. package/dist/git/durableState.js +151 -0
  177. package/dist/git/durableState.js.map +1 -0
  178. package/dist/git/execution.js +451 -0
  179. package/dist/git/execution.js.map +1 -0
  180. package/dist/git/fileTransaction.js +50 -0
  181. package/dist/git/fileTransaction.js.map +1 -0
  182. package/dist/git/indexService.js +421 -0
  183. package/dist/git/indexService.js.map +1 -0
  184. package/dist/git/integrations.js +653 -0
  185. package/dist/git/integrations.js.map +1 -0
  186. package/dist/git/locks.js +287 -0
  187. package/dist/git/locks.js.map +1 -0
  188. package/dist/git/mutationContext.js +92 -0
  189. package/dist/git/mutationContext.js.map +1 -0
  190. package/dist/git/mutationJournal.js +91 -0
  191. package/dist/git/mutationJournal.js.map +1 -0
  192. package/dist/git/mutationService.js +352 -0
  193. package/dist/git/mutationService.js.map +1 -0
  194. package/dist/git/normalization.js +57 -0
  195. package/dist/git/normalization.js.map +1 -0
  196. package/dist/git/objectQuarantine.js +243 -0
  197. package/dist/git/objectQuarantine.js.map +1 -0
  198. package/dist/git/opaqueRecordStore.js +187 -0
  199. package/dist/git/opaqueRecordStore.js.map +1 -0
  200. package/dist/git/operationStore.js +287 -0
  201. package/dist/git/operationStore.js.map +1 -0
  202. package/dist/git/parsers.js +311 -0
  203. package/dist/git/parsers.js.map +1 -0
  204. package/dist/git/privateIndex.js +79 -0
  205. package/dist/git/privateIndex.js.map +1 -0
  206. package/dist/git/productionBootstrap.js +39 -0
  207. package/dist/git/productionBootstrap.js.map +1 -0
  208. package/dist/git/readService.js +846 -0
  209. package/dist/git/readService.js.map +1 -0
  210. package/dist/git/recovery.js +417 -0
  211. package/dist/git/recovery.js.map +1 -0
  212. package/dist/git/repositoryIdentity.js +611 -0
  213. package/dist/git/repositoryIdentity.js.map +1 -0
  214. package/dist/git/repositoryStore.js +237 -0
  215. package/dist/git/repositoryStore.js.map +1 -0
  216. package/dist/git/resources.js +113 -0
  217. package/dist/git/resources.js.map +1 -0
  218. package/dist/git/restoreService.js +178 -0
  219. package/dist/git/restoreService.js.map +1 -0
  220. package/dist/git/reviewToken.js +86 -0
  221. package/dist/git/reviewToken.js.map +1 -0
  222. package/dist/git/stashService.js +566 -0
  223. package/dist/git/stashService.js.map +1 -0
  224. package/dist/git/stateToken.js +139 -0
  225. package/dist/git/stateToken.js.map +1 -0
  226. package/dist/gitOps.js +147 -0
  227. package/dist/gitOps.js.map +1 -0
  228. package/dist/guard.js +608 -0
  229. package/dist/guard.js.map +1 -0
  230. package/dist/guidance/diagnostics.js +14 -0
  231. package/dist/guidance/diagnostics.js.map +1 -0
  232. package/dist/guidance/instructions.js +167 -0
  233. package/dist/guidance/instructions.js.map +1 -0
  234. package/dist/guidance/mode.js +18 -0
  235. package/dist/guidance/mode.js.map +1 -0
  236. package/dist/guidance/openaiSkillMetadata.js +29 -0
  237. package/dist/guidance/openaiSkillMetadata.js.map +1 -0
  238. package/dist/guidance/safeTextReader.js +171 -0
  239. package/dist/guidance/safeTextReader.js.map +1 -0
  240. package/dist/guidance/skillCatalog.js +70 -0
  241. package/dist/guidance/skillCatalog.js.map +1 -0
  242. package/dist/guidance/skillDiscovery.js +353 -0
  243. package/dist/guidance/skillDiscovery.js.map +1 -0
  244. package/dist/guidance/skillMetadata.js +115 -0
  245. package/dist/guidance/skillMetadata.js.map +1 -0
  246. package/dist/guidance/skillResources.js +146 -0
  247. package/dist/guidance/skillResources.js.map +1 -0
  248. package/dist/handoffOps.js +449 -0
  249. package/dist/handoffOps.js.map +1 -0
  250. package/dist/http/localAdminApp.js +203 -0
  251. package/dist/http/localAdminApp.js.map +1 -0
  252. package/dist/http/oauthMcpRuntime.js +294 -0
  253. package/dist/http/oauthMcpRuntime.js.map +1 -0
  254. package/dist/http/publicApp.js +350 -0
  255. package/dist/http/publicApp.js.map +1 -0
  256. package/dist/http/securityHeaders.js +11 -0
  257. package/dist/http/securityHeaders.js.map +1 -0
  258. package/dist/http.js +2076 -0
  259. package/dist/http.js.map +1 -0
  260. package/dist/moves/engine.js +1079 -0
  261. package/dist/moves/engine.js.map +1 -0
  262. package/dist/moves/index.js +6 -0
  263. package/dist/moves/index.js.map +1 -0
  264. package/dist/moves/planner.js +270 -0
  265. package/dist/moves/planner.js.map +1 -0
  266. package/dist/moves/recovery.js +557 -0
  267. package/dist/moves/recovery.js.map +1 -0
  268. package/dist/moves/service.js +300 -0
  269. package/dist/moves/service.js.map +1 -0
  270. package/dist/moves/types.js +11 -0
  271. package/dist/moves/types.js.map +1 -0
  272. package/dist/mutations/index.js +4 -0
  273. package/dist/mutations/index.js.map +1 -0
  274. package/dist/mutations/lifecycle.js +165 -0
  275. package/dist/mutations/lifecycle.js.map +1 -0
  276. package/dist/mutations/localService.js +163 -0
  277. package/dist/mutations/localService.js.map +1 -0
  278. package/dist/mutations/runtime.js +322 -0
  279. package/dist/mutations/runtime.js.map +1 -0
  280. package/dist/mutations/types.js +2 -0
  281. package/dist/mutations/types.js.map +1 -0
  282. package/dist/mutations/writers.js +360 -0
  283. package/dist/mutations/writers.js.map +1 -0
  284. package/dist/patchOps.js +420 -0
  285. package/dist/patchOps.js.map +1 -0
  286. package/dist/policy/approval.js +306 -0
  287. package/dist/policy/approval.js.map +1 -0
  288. package/dist/policy/audit.js +88 -0
  289. package/dist/policy/audit.js.map +1 -0
  290. package/dist/policy/authorizationFacts.js +187 -0
  291. package/dist/policy/authorizationFacts.js.map +1 -0
  292. package/dist/policy/compat.js +104 -0
  293. package/dist/policy/compat.js.map +1 -0
  294. package/dist/policy/context.js +31 -0
  295. package/dist/policy/context.js.map +1 -0
  296. package/dist/policy/enforcement.js +46 -0
  297. package/dist/policy/enforcement.js.map +1 -0
  298. package/dist/policy/evaluator.js +338 -0
  299. package/dist/policy/evaluator.js.map +1 -0
  300. package/dist/policy/executionCapabilities.js +80 -0
  301. package/dist/policy/executionCapabilities.js.map +1 -0
  302. package/dist/policy/executionResources.js +192 -0
  303. package/dist/policy/executionResources.js.map +1 -0
  304. package/dist/policy/fullAccessResources.js +23 -0
  305. package/dist/policy/fullAccessResources.js.map +1 -0
  306. package/dist/policy/hardPolicy.js +50 -0
  307. package/dist/policy/hardPolicy.js.map +1 -0
  308. package/dist/policy/identity.js +142 -0
  309. package/dist/policy/identity.js.map +1 -0
  310. package/dist/policy/integration.js +331 -0
  311. package/dist/policy/integration.js.map +1 -0
  312. package/dist/policy/pendingApprovals.js +301 -0
  313. package/dist/policy/pendingApprovals.js.map +1 -0
  314. package/dist/policy/profileStore.js +367 -0
  315. package/dist/policy/profileStore.js.map +1 -0
  316. package/dist/policy/resources.js +249 -0
  317. package/dist/policy/resources.js.map +1 -0
  318. package/dist/policy/runtime.js +713 -0
  319. package/dist/policy/runtime.js.map +1 -0
  320. package/dist/policy/schemas.js +625 -0
  321. package/dist/policy/schemas.js.map +1 -0
  322. package/dist/policy/toolPolicy.js +141 -0
  323. package/dist/policy/toolPolicy.js.map +1 -0
  324. package/dist/policy/transport.js +10 -0
  325. package/dist/policy/transport.js.map +1 -0
  326. package/dist/policy/types.js +31 -0
  327. package/dist/policy/types.js.map +1 -0
  328. package/dist/proContext.js +675 -0
  329. package/dist/proContext.js.map +1 -0
  330. package/dist/process/authority.js +18 -0
  331. package/dist/process/authority.js.map +1 -0
  332. package/dist/process/backendDiscovery.js +83 -0
  333. package/dist/process/backendDiscovery.js.map +1 -0
  334. package/dist/process/commandCompiler.js +71 -0
  335. package/dist/process/commandCompiler.js.map +1 -0
  336. package/dist/process/outputCursor.js +67 -0
  337. package/dist/process/outputCursor.js.map +1 -0
  338. package/dist/process/outputQuota.js +94 -0
  339. package/dist/process/outputQuota.js.map +1 -0
  340. package/dist/process/outputRing.js +138 -0
  341. package/dist/process/outputRing.js.map +1 -0
  342. package/dist/process/processAuditCoordinator.js +52 -0
  343. package/dist/process/processAuditCoordinator.js.map +1 -0
  344. package/dist/process/processManager.js +311 -0
  345. package/dist/process/processManager.js.map +1 -0
  346. package/dist/process/runCommand.js +332 -0
  347. package/dist/process/runCommand.js.map +1 -0
  348. package/dist/process/streamingRedactor.js +105 -0
  349. package/dist/process/streamingRedactor.js.map +1 -0
  350. package/dist/process/types.js +2 -0
  351. package/dist/process/types.js.map +1 -0
  352. package/dist/process/windowsHostClient.js +604 -0
  353. package/dist/process/windowsHostClient.js.map +1 -0
  354. package/dist/process/windowsHostProtocol.js +270 -0
  355. package/dist/process/windowsHostProtocol.js.map +1 -0
  356. package/dist/process/windowsPersistentBackend.js +263 -0
  357. package/dist/process/windowsPersistentBackend.js.map +1 -0
  358. package/dist/productionRuntime.js +907 -0
  359. package/dist/productionRuntime.js.map +1 -0
  360. package/dist/profileStore.js +231 -0
  361. package/dist/profileStore.js.map +1 -0
  362. package/dist/redact.js +124 -0
  363. package/dist/redact.js.map +1 -0
  364. package/dist/searchOps.js +186 -0
  365. package/dist/searchOps.js.map +1 -0
  366. package/dist/selfTestOps.js +786 -0
  367. package/dist/selfTestOps.js.map +1 -0
  368. package/dist/semantic/budgets.js +12 -0
  369. package/dist/semantic/budgets.js.map +1 -0
  370. package/dist/semantic/builtin/typescriptAssets.js +68 -0
  371. package/dist/semantic/builtin/typescriptAssets.js.map +1 -0
  372. package/dist/semantic/builtin/typescriptProvider.js +211 -0
  373. package/dist/semantic/builtin/typescriptProvider.js.map +1 -0
  374. package/dist/semantic/builtin/typescriptWorker.js +365 -0
  375. package/dist/semantic/builtin/typescriptWorker.js.map +1 -0
  376. package/dist/semantic/diffPreview.js +36 -0
  377. package/dist/semantic/diffPreview.js.map +1 -0
  378. package/dist/semantic/index.js +11 -0
  379. package/dist/semantic/index.js.map +1 -0
  380. package/dist/semantic/manager.js +522 -0
  381. package/dist/semantic/manager.js.map +1 -0
  382. package/dist/semantic/positions.js +86 -0
  383. package/dist/semantic/positions.js.map +1 -0
  384. package/dist/semantic/previewStore.js +276 -0
  385. package/dist/semantic/previewStore.js.map +1 -0
  386. package/dist/semantic/projectResolver.js +309 -0
  387. package/dist/semantic/projectResolver.js.map +1 -0
  388. package/dist/semantic/sourceSnapshot.js +54 -0
  389. package/dist/semantic/sourceSnapshot.js.map +1 -0
  390. package/dist/semantic/status.js +46 -0
  391. package/dist/semantic/status.js.map +1 -0
  392. package/dist/semantic/types.js +2 -0
  393. package/dist/semantic/types.js.map +1 -0
  394. package/dist/server.js +8676 -0
  395. package/dist/server.js.map +1 -0
  396. package/dist/stdio.js +64 -0
  397. package/dist/stdio.js.map +1 -0
  398. package/dist/toolCardWidget.js +2000 -0
  399. package/dist/toolCardWidget.js.map +1 -0
  400. package/dist/tools/contracts/catalog.js +111 -0
  401. package/dist/tools/contracts/catalog.js.map +1 -0
  402. package/dist/tools/contracts/index.js +8 -0
  403. package/dist/tools/contracts/index.js.map +1 -0
  404. package/dist/tools/contracts/registration.js +27 -0
  405. package/dist/tools/contracts/registration.js.map +1 -0
  406. package/dist/tools/contracts/schemas.js +11 -0
  407. package/dist/tools/contracts/schemas.js.map +1 -0
  408. package/dist/tools/contracts/types.js +2 -0
  409. package/dist/tools/contracts/types.js.map +1 -0
  410. package/dist/tools/contracts/v3.js +76 -0
  411. package/dist/tools/contracts/v3.js.map +1 -0
  412. package/dist/tools/contracts/v4.js +39 -0
  413. package/dist/tools/contracts/v4.js.map +1 -0
  414. package/dist/tools/contracts/v5.js +20 -0
  415. package/dist/tools/contracts/v5.js.map +1 -0
  416. package/dist/tools/phase3dServer.js +350 -0
  417. package/dist/tools/phase3dServer.js.map +1 -0
  418. package/dist/tools/schemas/applyPatch.js +388 -0
  419. package/dist/tools/schemas/applyPatch.js.map +1 -0
  420. package/dist/tools/schemas/bash.js +202 -0
  421. package/dist/tools/schemas/bash.js.map +1 -0
  422. package/dist/tools/schemas/closeWorkspace.js +105 -0
  423. package/dist/tools/schemas/closeWorkspace.js.map +1 -0
  424. package/dist/tools/schemas/codexContext.js +402 -0
  425. package/dist/tools/schemas/codexContext.js.map +1 -0
  426. package/dist/tools/schemas/codexSessions.js +328 -0
  427. package/dist/tools/schemas/codexSessions.js.map +1 -0
  428. package/dist/tools/schemas/codexgpt.js +1068 -0
  429. package/dist/tools/schemas/codexgpt.js.map +1 -0
  430. package/dist/tools/schemas/codexgptInventory.js +359 -0
  431. package/dist/tools/schemas/codexgptInventory.js.map +1 -0
  432. package/dist/tools/schemas/codexgptSelfTest.js +563 -0
  433. package/dist/tools/schemas/codexgptSelfTest.js.map +1 -0
  434. package/dist/tools/schemas/codexpro.js +917 -0
  435. package/dist/tools/schemas/codexpro.js.map +1 -0
  436. package/dist/tools/schemas/codexproInventory.js +352 -0
  437. package/dist/tools/schemas/codexproInventory.js.map +1 -0
  438. package/dist/tools/schemas/codexproSelfTest.js +546 -0
  439. package/dist/tools/schemas/codexproSelfTest.js.map +1 -0
  440. package/dist/tools/schemas/common.js +21 -0
  441. package/dist/tools/schemas/common.js.map +1 -0
  442. package/dist/tools/schemas/createTaskWorktree.js +51 -0
  443. package/dist/tools/schemas/createTaskWorktree.js.map +1 -0
  444. package/dist/tools/schemas/edit.js +321 -0
  445. package/dist/tools/schemas/edit.js.map +1 -0
  446. package/dist/tools/schemas/execution.js +330 -0
  447. package/dist/tools/schemas/execution.js.map +1 -0
  448. package/dist/tools/schemas/exportProContext.js +370 -0
  449. package/dist/tools/schemas/exportProContext.js.map +1 -0
  450. package/dist/tools/schemas/getTaskWorktree.js +19 -0
  451. package/dist/tools/schemas/getTaskWorktree.js.map +1 -0
  452. package/dist/tools/schemas/gitBranch.js +42 -0
  453. package/dist/tools/schemas/gitBranch.js.map +1 -0
  454. package/dist/tools/schemas/gitCommit.js +40 -0
  455. package/dist/tools/schemas/gitCommit.js.map +1 -0
  456. package/dist/tools/schemas/gitCreateBranch.js +22 -0
  457. package/dist/tools/schemas/gitCreateBranch.js.map +1 -0
  458. package/dist/tools/schemas/gitDiff.js +222 -0
  459. package/dist/tools/schemas/gitDiff.js.map +1 -0
  460. package/dist/tools/schemas/gitLog.js +41 -0
  461. package/dist/tools/schemas/gitLog.js.map +1 -0
  462. package/dist/tools/schemas/gitRestore.js +47 -0
  463. package/dist/tools/schemas/gitRestore.js.map +1 -0
  464. package/dist/tools/schemas/gitStage.js +33 -0
  465. package/dist/tools/schemas/gitStage.js.map +1 -0
  466. package/dist/tools/schemas/gitStash.js +102 -0
  467. package/dist/tools/schemas/gitStash.js.map +1 -0
  468. package/dist/tools/schemas/gitStatus.js +226 -0
  469. package/dist/tools/schemas/gitStatus.js.map +1 -0
  470. package/dist/tools/schemas/gitV4Common.js +205 -0
  471. package/dist/tools/schemas/gitV4Common.js.map +1 -0
  472. package/dist/tools/schemas/guidance.js +40 -0
  473. package/dist/tools/schemas/guidance.js.map +1 -0
  474. package/dist/tools/schemas/handoffToAgent.js +276 -0
  475. package/dist/tools/schemas/handoffToAgent.js.map +1 -0
  476. package/dist/tools/schemas/handoffToCodex.js +137 -0
  477. package/dist/tools/schemas/handoffToCodex.js.map +1 -0
  478. package/dist/tools/schemas/inspectWorkspace.js +379 -0
  479. package/dist/tools/schemas/inspectWorkspace.js.map +1 -0
  480. package/dist/tools/schemas/listTaskWorktrees.js +21 -0
  481. package/dist/tools/schemas/listTaskWorktrees.js.map +1 -0
  482. package/dist/tools/schemas/listWorkspaces.js +134 -0
  483. package/dist/tools/schemas/listWorkspaces.js.map +1 -0
  484. package/dist/tools/schemas/loadSkill.js +619 -0
  485. package/dist/tools/schemas/loadSkill.js.map +1 -0
  486. package/dist/tools/schemas/mergeTaskWorktree.js +105 -0
  487. package/dist/tools/schemas/mergeTaskWorktree.js.map +1 -0
  488. package/dist/tools/schemas/movePaths.js +175 -0
  489. package/dist/tools/schemas/movePaths.js.map +1 -0
  490. package/dist/tools/schemas/openCurrentWorkspace.js +174 -0
  491. package/dist/tools/schemas/openCurrentWorkspace.js.map +1 -0
  492. package/dist/tools/schemas/openFullAccessWorkspace.js +81 -0
  493. package/dist/tools/schemas/openFullAccessWorkspace.js.map +1 -0
  494. package/dist/tools/schemas/openWorkspace.js +193 -0
  495. package/dist/tools/schemas/openWorkspace.js.map +1 -0
  496. package/dist/tools/schemas/queryAuditEvents.js +193 -0
  497. package/dist/tools/schemas/queryAuditEvents.js.map +1 -0
  498. package/dist/tools/schemas/read.js +199 -0
  499. package/dist/tools/schemas/read.js.map +1 -0
  500. package/dist/tools/schemas/readCodexSession.js +353 -0
  501. package/dist/tools/schemas/readCodexSession.js.map +1 -0
  502. package/dist/tools/schemas/readHandoff.js +446 -0
  503. package/dist/tools/schemas/readHandoff.js.map +1 -0
  504. package/dist/tools/schemas/removeTaskWorktree.js +40 -0
  505. package/dist/tools/schemas/removeTaskWorktree.js.map +1 -0
  506. package/dist/tools/schemas/search.js +235 -0
  507. package/dist/tools/schemas/search.js.map +1 -0
  508. package/dist/tools/schemas/semantic.js +195 -0
  509. package/dist/tools/schemas/semantic.js.map +1 -0
  510. package/dist/tools/schemas/serverConfig.js +157 -0
  511. package/dist/tools/schemas/serverConfig.js.map +1 -0
  512. package/dist/tools/schemas/showChanges.js +283 -0
  513. package/dist/tools/schemas/showChanges.js.map +1 -0
  514. package/dist/tools/schemas/transactionResult.js +11 -0
  515. package/dist/tools/schemas/transactionResult.js.map +1 -0
  516. package/dist/tools/schemas/tree.js +136 -0
  517. package/dist/tools/schemas/tree.js.map +1 -0
  518. package/dist/tools/schemas/undoChangeSet.js +152 -0
  519. package/dist/tools/schemas/undoChangeSet.js.map +1 -0
  520. package/dist/tools/schemas/waitForHandoff.js +462 -0
  521. package/dist/tools/schemas/waitForHandoff.js.map +1 -0
  522. package/dist/tools/schemas/workspaceSnapshot.js +145 -0
  523. package/dist/tools/schemas/workspaceSnapshot.js.map +1 -0
  524. package/dist/tools/schemas/write.js +285 -0
  525. package/dist/tools/schemas/write.js.map +1 -0
  526. package/dist/transactions/atomicFs.js +438 -0
  527. package/dist/transactions/atomicFs.js.map +1 -0
  528. package/dist/transactions/atomicStateFile.js +190 -0
  529. package/dist/transactions/atomicStateFile.js.map +1 -0
  530. package/dist/transactions/engine.js +574 -0
  531. package/dist/transactions/engine.js.map +1 -0
  532. package/dist/transactions/index.js +12 -0
  533. package/dist/transactions/index.js.map +1 -0
  534. package/dist/transactions/installation.js +158 -0
  535. package/dist/transactions/installation.js.map +1 -0
  536. package/dist/transactions/manifestV2Store.js +96 -0
  537. package/dist/transactions/manifestV2Store.js.map +1 -0
  538. package/dist/transactions/participantRecovery.js +98 -0
  539. package/dist/transactions/participantRecovery.js.map +1 -0
  540. package/dist/transactions/recovery.js +513 -0
  541. package/dist/transactions/recovery.js.map +1 -0
  542. package/dist/transactions/schemas.js +365 -0
  543. package/dist/transactions/schemas.js.map +1 -0
  544. package/dist/transactions/stateRoot.js +63 -0
  545. package/dist/transactions/stateRoot.js.map +1 -0
  546. package/dist/transactions/types.js +11 -0
  547. package/dist/transactions/types.js.map +1 -0
  548. package/dist/transactions/workspaceLock.js +201 -0
  549. package/dist/transactions/workspaceLock.js.map +1 -0
  550. package/dist/workspaceOps.js +924 -0
  551. package/dist/workspaceOps.js.map +1 -0
  552. package/dist/worktrees/candidateWorkspace.js +566 -0
  553. package/dist/worktrees/candidateWorkspace.js.map +1 -0
  554. package/dist/worktrees/manager.js +258 -0
  555. package/dist/worktrees/manager.js.map +1 -0
  556. package/dist/worktrees/materializer.js +60 -0
  557. package/dist/worktrees/materializer.js.map +1 -0
  558. package/dist/worktrees/mergeExecute.js +498 -0
  559. package/dist/worktrees/mergeExecute.js.map +1 -0
  560. package/dist/worktrees/mergePlanStore.js +247 -0
  561. package/dist/worktrees/mergePlanStore.js.map +1 -0
  562. package/dist/worktrees/mergePrepare.js +709 -0
  563. package/dist/worktrees/mergePrepare.js.map +1 -0
  564. package/dist/worktrees/recovery.js +294 -0
  565. package/dist/worktrees/recovery.js.map +1 -0
  566. package/dist/worktrees/remove.js +296 -0
  567. package/dist/worktrees/remove.js.map +1 -0
  568. package/dist/worktrees/remover.js +57 -0
  569. package/dist/worktrees/remover.js.map +1 -0
  570. package/dist/worktrees/root.js +47 -0
  571. package/dist/worktrees/root.js.map +1 -0
  572. package/dist/worktrees/service.js +245 -0
  573. package/dist/worktrees/service.js.map +1 -0
  574. package/dist/worktrees/store.js +156 -0
  575. package/dist/worktrees/store.js.map +1 -0
  576. package/dist/worktrees/treeManifest.js +106 -0
  577. package/dist/worktrees/treeManifest.js.map +1 -0
  578. package/dist/worktrees/verificationReceipts.js +215 -0
  579. package/dist/worktrees/verificationReceipts.js.map +1 -0
  580. package/dist/worktrees/verificationTerminal.js +23 -0
  581. package/dist/worktrees/verificationTerminal.js.map +1 -0
  582. package/dist/worktrees/workspaceAuthority.js +64 -0
  583. package/dist/worktrees/workspaceAuthority.js.map +1 -0
  584. package/docs/favicon.svg +5 -0
  585. package/docs/index.html +624 -0
  586. package/docs/og.svg +52 -0
  587. package/docs/script.js +33 -0
  588. package/docs/star.svg +11 -0
  589. package/docs/styles.css +1571 -0
  590. package/docs/zh.html +428 -0
  591. package/package.json +121 -0
  592. package/scripts/analysis-cli-smoke.mjs +81 -0
  593. package/scripts/analysis-smoke.mjs +179 -0
  594. package/scripts/atomic-file.mjs +137 -0
  595. package/scripts/ci-change-classifier.mjs +59 -0
  596. package/scripts/ci-failure-summary.mjs +92 -0
  597. package/scripts/cloudflared-installer.mjs +215 -0
  598. package/scripts/cloudflared-release.mjs +63 -0
  599. package/scripts/codexgpt-entry.mjs +235 -0
  600. package/scripts/codexgpt.mjs +4987 -0
  601. package/scripts/connector-auth-output-shim.cjs +66 -0
  602. package/scripts/doctor-smoke.mjs +90 -0
  603. package/scripts/doctor.mjs +165 -0
  604. package/scripts/exact-head-ci.mjs +126 -0
  605. package/scripts/execute-handoff-smoke-platform-compat.mjs +38 -0
  606. package/scripts/execute-handoff-smoke.mjs +1117 -0
  607. package/scripts/g8-u-live-probe.mjs +208 -0
  608. package/scripts/http-smoke-compat.mjs +151 -0
  609. package/scripts/http-smoke.mjs +776 -0
  610. package/scripts/long-task-runner.mjs +1037 -0
  611. package/scripts/oauth-admin.mjs +1608 -0
  612. package/scripts/output-bounds.mjs +29 -0
  613. package/scripts/owned-temp-root.d.mts +50 -0
  614. package/scripts/owned-temp-root.mjs +567 -0
  615. package/scripts/phase-4a-smoke.mjs +36 -0
  616. package/scripts/policy-windows-spike.mjs +135 -0
  617. package/scripts/pro-apply.mjs +152 -0
  618. package/scripts/pro-bundle.mjs +121 -0
  619. package/scripts/pro-smoke.mjs +97 -0
  620. package/scripts/process-identity.mjs +67 -0
  621. package/scripts/repository-policy.mjs +166 -0
  622. package/scripts/run-and-summarize.mjs +134 -0
  623. package/scripts/run-smoke.mjs +52 -0
  624. package/scripts/run-with-cleanup.mjs +98 -0
  625. package/scripts/settings-smoke-platform-compat.mjs +85 -0
  626. package/scripts/settings-smoke.mjs +769 -0
  627. package/scripts/smoke-platform-compat.mjs +302 -0
  628. package/scripts/smoke.mjs +1180 -0
  629. package/scripts/stress-contract-compat.mjs +94 -0
  630. package/scripts/stress.mjs +882 -0
  631. package/scripts/test-domains.mjs +247 -0
  632. package/scripts/test-execution-profile-manifest.mjs +273 -0
  633. package/scripts/test-execution-profiles.mjs +147 -0
  634. package/scripts/test-performance-reporter.mjs +291 -0
  635. package/scripts/toolchain-manager.mjs +266 -0
  636. package/scripts/toolchains.json +19 -0
  637. package/scripts/windows-conpty-probe-child.mjs +82 -0
  638. package/scripts/windows-conpty-worker.ps1 +24 -0
  639. package/scripts/windows-credential-host-manifest.json +16 -0
  640. package/scripts/windows-credential-host-protocol-v1.json +16 -0
  641. package/scripts/windows-credential-host.cs +256 -0
  642. package/scripts/windows-credential-host.ps1 +26 -0
  643. package/scripts/windows-local-control-manifest.json +23 -0
  644. package/scripts/windows-local-control-spike.cs +738 -0
  645. package/scripts/windows-local-control-spike.mjs +415 -0
  646. package/scripts/windows-local-control-spike.ps1 +35 -0
  647. package/scripts/windows-local-control.cs +738 -0
  648. package/scripts/windows-local-control.ps1 +35 -0
  649. package/scripts/windows-native-api-inventory-v1.json +90 -0
  650. package/scripts/windows-process-host-manifest.json +20 -0
  651. package/scripts/windows-process-host-protocol-v1.json +59 -0
  652. package/scripts/windows-process-host.cs +2385 -0
  653. package/scripts/windows-process-host.ps1 +59 -0
  654. package/scripts/windows-realpath-shim.cjs +78 -0
package/docs/zh.html ADDED
@@ -0,0 +1,428 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>CodexGPT - 让 ChatGPT Web 连接本地仓库</title>
7
+ <meta
8
+ name="description"
9
+ content="CodexGPT 通过 ChatGPT Developer Mode 和 MCP,把 ChatGPT Web 连接到你的本地代码仓库,支持读取、搜索、编辑、git 检查和安全验证。"
10
+ />
11
+ <meta property="og:title" content="CodexGPT 中文文档" />
12
+ <meta property="og:description" content="让 ChatGPT Web 看见 Codex 风格仓库上下文,并像本地代码代理一样工作。" />
13
+ <meta property="og:image" content="https://rebel0789.github.io/codexgpt/og.svg" />
14
+ <meta name="theme-color" content="#0b1220" />
15
+ <link rel="alternate" hreflang="en" href="https://rebel0789.github.io/codexgpt/" />
16
+ <link rel="icon" href="./favicon.svg" type="image/svg+xml" />
17
+ <link rel="stylesheet" href="./styles.css" />
18
+ </head>
19
+ <body>
20
+ <a class="skip-link" href="#quickstart">跳到设置</a>
21
+ <header class="site-header">
22
+ <a class="brand" href="#top" aria-label="CodexGPT 中文首页">
23
+ <img class="brand-mark" src="./favicon.svg" width="34" height="34" alt="" aria-hidden="true" />
24
+ <span>CodexGPT</span>
25
+ </a>
26
+ <nav aria-label="主导航">
27
+ <a href="#quickstart">开始</a>
28
+ <a href="#chatgpt">ChatGPT</a>
29
+ <a href="#url">稳定 URL</a>
30
+ <a href="#modes">模式</a>
31
+ <a href="#faq">FAQ</a>
32
+ <a href="./index.html">English</a>
33
+ <a class="nav-star" href="https://github.com/chatGPT-10/codexgpt"><img src="./star.svg" alt="" aria-hidden="true" />GitHub 点星</a>
34
+ </nav>
35
+ </header>
36
+
37
+ <main id="top">
38
+ <section class="hero">
39
+ <div class="hero-copy">
40
+ <p class="launch-pill"><img src="./star.svg" alt="" aria-hidden="true" />简单安装</p>
41
+ <p class="eyebrow">在仓库里安装</p>
42
+ <h1>把 ChatGPT 连接到本地代码。</h1>
43
+ <p class="hero-lede">
44
+ 安装 CLI,在项目里运行 setup,然后把复制好的 Server URL 粘贴到 ChatGPT Developer Mode。CodexGPT 会处理本地 server、token、tunnel 和 workspace 工具。
45
+ </p>
46
+ <div class="install-line" role="group" aria-label="安装命令">
47
+ <code>npm install -g codexgpt
48
+ codexgpt setup</code>
49
+ <button class="copy-button" data-copy="npm install -g codexgpt&#10;codexgpt setup">复制</button>
50
+ </div>
51
+ <p class="eyebrow">main 文档可能早于 npm 发布;全局安装前请看 npm 版本,未发布行为用 source checkout。</p>
52
+ <div class="hero-proof" aria-label="核心能力">
53
+ <span>AGENTS.md 上下文</span>
54
+ <span>.ai-bridge handoff</span>
55
+ <span>紧凑卡片</span>
56
+ <span>Codex session metadata 可选开启</span>
57
+ </div>
58
+ <div class="hero-actions">
59
+ <a class="button primary" href="#quickstart">安装 CodexGPT</a>
60
+ <a class="button secondary star-button" href="https://github.com/chatGPT-10/codexgpt"><img src="./star.svg" alt="" aria-hidden="true" />GitHub 点星</a>
61
+ <a class="button secondary" href="https://www.npmjs.com/package/codexgpt">查看 npm</a>
62
+ </div>
63
+ </div>
64
+
65
+ <div class="hero-visual" aria-label="CodexGPT 工作区预览">
66
+ <div class="workspace-demo">
67
+ <div class="demo-status">
68
+ <span class="status-dot" aria-hidden="true"></span>
69
+ <div class="status-label">
70
+ <strong>Workspace bridge</strong>
71
+ <small>/path/to/repo · token protected</small>
72
+ </div>
73
+ <span class="status-badge">setup</span>
74
+ </div>
75
+ <div class="demo-grid">
76
+ <div class="chat-pane">
77
+ <small>安装</small>
78
+ <p><code>npm install -g codexgpt</code><br /><code>codexgpt setup</code></p>
79
+ <div class="message-chip">Server URL 自动复制</div>
80
+ </div>
81
+ <div class="tool-pane">
82
+ <small>然后 ChatGPT 可以</small>
83
+ <div class="tool-card-mini active">
84
+ <span>read/search</span>
85
+ <strong>读取文件并搜索代码</strong>
86
+ </div>
87
+ <div class="tool-card-mini">
88
+ <span>edit/review</span>
89
+ <strong>工作区内精确替换</strong>
90
+ </div>
91
+ <div class="tool-card-mini">
92
+ <span>verify</span>
93
+ <strong>紧凑显示 npm test / lint / build 结果</strong>
94
+ </div>
95
+ </div>
96
+ </div>
97
+ <div class="repo-pane">
98
+ <div class="repo-row"><span>README.md</span><strong>只导出选中的上下文</strong></div>
99
+ <div class="repo-row"><span>src/server.ts</span><strong>仅在 workspace 内编辑</strong></div>
100
+ <div class="repo-row"><span>.ai-bridge/current-plan.md</span><strong>handoff ready</strong></div>
101
+ <div class="repo-row"><span>~/.codex/sessions</span><strong>metadata 模式才读取</strong></div>
102
+ </div>
103
+ </div>
104
+ <div class="floating-note">
105
+ <span>setup 之后</span>
106
+ <strong>codexgpt start</strong>
107
+ <small>以后在同一个仓库里运行这个命令,就能重新连接 ChatGPT。</small>
108
+ </div>
109
+ </div>
110
+ </section>
111
+
112
+ <section class="strip" aria-label="核心流程">
113
+ <div>
114
+ <span>01</span>
115
+ <strong>Install</strong>
116
+ <p>先运行 <code>npm install -g codexgpt</code>。</p>
117
+ </div>
118
+ <div>
119
+ <span>02</span>
120
+ <strong>Setup</strong>
121
+ <p>在你的项目里运行 <code>codexgpt setup</code>。</p>
122
+ </div>
123
+ <div>
124
+ <span>03</span>
125
+ <strong>Paste</strong>
126
+ <p>创建 ChatGPT Plugin 时粘贴复制好的 Server URL。</p>
127
+ </div>
128
+ </section>
129
+
130
+ <section class="section value-section">
131
+ <div>
132
+ <p class="eyebrow">用好已有订阅</p>
133
+ <h2>把 ChatGPT 变成本地开发工作流的一部分。</h2>
134
+ <p>
135
+ CodexGPT 面向已经有 ChatGPT Apps / Developer Mode 权限的开发者。它让 ChatGPT 不再只是回答问题,而是通过 MCP 获取本地仓库工具:读取文件、精确编辑、搜索源码、查看 git 状态、查看 diff,并运行允许范围内的验证命令。
136
+ </p>
137
+ <p>
138
+ Codex 和 ChatGPT 是不同产品界面。某个工作流暂时不可用时,如果另一个你本来就有权限的界面仍然可用,CodexGPT 可以让它继续在同一个本地仓库上工作,但不会修改任何产品限制。
139
+ </p>
140
+ <p>
141
+ 如果你的 ChatGPT 账号在 Web 产品里提供更强模型,并且该模型界面可以调用 Developer Mode Apps,CodexGPT 可以让它通过 MCP 使用本地仓库工具。CodexGPT 不提供、不代理、不转售、也不解锁模型。
142
+ </p>
143
+ </div>
144
+ <div class="value-matrix">
145
+ <div>
146
+ <small>ChatGPT 可以看到</small>
147
+ <strong>AGENTS.md、.ai-bridge、git 状态、源码文件和显式 Codex 风格上下文</strong>
148
+ </div>
149
+ <div>
150
+ <small>默认编码模式可以</small>
151
+ <strong>读取、写入、编辑、搜索,并在工作区内运行安全验证</strong>
152
+ </div>
153
+ <div>
154
+ <small>Pro 上下文回退可以</small>
155
+ <strong>给不能调用 MCP 工具的模型导出持久上下文包</strong>
156
+ </div>
157
+ <div>
158
+ <small>账号要求</small>
159
+ <strong>能使用 Apps / Developer Mode 的 ChatGPT 账号。OpenAI 当前文档列出的 web 端范围包括 Pro、Plus、Business、Enterprise 和 Education;当前测试中 Free / Go 不支持这个 app 流程。</strong>
160
+ </div>
161
+ </div>
162
+ </section>
163
+
164
+ <section id="quickstart" class="section two-col">
165
+ <div>
166
+ <p class="eyebrow">快速开始</p>
167
+ <h2>全局安装,然后在仓库中运行 setup。</h2>
168
+ <p>
169
+ 默认路径使用 normal coding 模式、workspace 写入、安全 bash 和你选择的 tunnel。setup 保存配置后,日常启动只需要 <code>codexgpt start</code>。
170
+ </p>
171
+ </div>
172
+ <div class="steps">
173
+ <div class="step">
174
+ <span>1</span>
175
+ <div>
176
+ <strong>全局安装</strong>
177
+ <pre><code>npm install -g codexgpt</code></pre>
178
+ </div>
179
+ </div>
180
+ <div class="step">
181
+ <span>2</span>
182
+ <div>
183
+ <strong>进入目标仓库</strong>
184
+ <pre><code>cd /path/to/your/repo
185
+ codexgpt setup</code></pre>
186
+ </div>
187
+ </div>
188
+ <div class="step">
189
+ <span>3</span>
190
+ <div>
191
+ <strong>以后日常启动</strong>
192
+ <pre><code>codexgpt start</code></pre>
193
+ </div>
194
+ </div>
195
+ </div>
196
+ </section>
197
+
198
+ <section id="chatgpt" class="section two-col reverse">
199
+ <div class="command-stack">
200
+ <div>
201
+ <small>ChatGPT 设置路径</small>
202
+ <pre><code>Settings
203
+ -> Security and login
204
+ -> Developer mode: on
205
+ -> Enforce CSP in developer mode: on
206
+
207
+ Settings
208
+ -> Plugins
209
+ -> Create</code></pre>
210
+ </div>
211
+ <div>
212
+ <small>创建 Plugin 字段</small>
213
+ <pre><code>Name: CodexGPT
214
+ Connection: Server URL
215
+ Server URL: paste complete copied URL, including codexgpt_token
216
+ Authentication: No Authentication / None</code></pre>
217
+ </div>
218
+ </div>
219
+ <div>
220
+ <p class="eyebrow">ChatGPT App 设置</p>
221
+ <h2>创建 Plugin 时粘贴 CodexGPT 复制的 URL。</h2>
222
+ <p>
223
+ 保持 Enforce CSP in developer mode 开启。CodexGPT 的小组件按 CSP 开启路径设计,不依赖远程脚本、外部字体、iframe 或第三方图片。
224
+ </p>
225
+ <p>
226
+ 复制的完整 Server URL 已包含 <code>codexgpt_token</code> query 凭据。Authentication 选择 No Authentication / None,不要删除 query string。这是当前支持的个人 ChatGPT query-token 兼容流程。请把完整 URL 当成等同密码的秘密:它可能泄露到浏览器历史、剪贴板、截图、日志和复制的链接中。不要分享、发布或提交它。
227
+ </p>
228
+ </div>
229
+ </section>
230
+
231
+ <section id="url" class="section">
232
+ <div class="section-heading">
233
+ <p class="eyebrow">URL 选择</p>
234
+ <h2>根据使用场景选择 tunnel。</h2>
235
+ <p>quick tunnel 适合演示,稳定 URL 适合每天使用。</p>
236
+ </div>
237
+ <div class="compare-grid">
238
+ <article>
239
+ <span class="tag">最快</span>
240
+ <h3>Cloudflare quick tunnel</h3>
241
+ <p>不需要域名设置,适合 demo。每次重启 URL 都变,因此每次都要更新 ChatGPT App 的 Server URL。</p>
242
+ <pre><code>codexgpt start</code></pre>
243
+ </article>
244
+ <article>
245
+ <span class="tag">推荐</span>
246
+ <h3>ngrok free dev domain</h3>
247
+ <p>推荐给大多数用户。免费 ngrok 账号会给一个 dev domain,保存一次后每天可以复用同一个 ChatGPT App URL。</p>
248
+ <pre><code>ngrok config add-authtoken YOUR_TOKEN
249
+ codexgpt settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
250
+ codexgpt start</code></pre>
251
+ </article>
252
+ <article>
253
+ <span class="tag">自定义</span>
254
+ <h3>Cloudflare named tunnel</h3>
255
+ <p>适合已有域名的用户。把 DNS 路由到 <code>codexgpt.example.com</code> 这样的 hostname,之后 URL 保持不变。</p>
256
+ <pre><code>codexgpt stable --hostname codexgpt.example.com --tunnel-name codexgpt</code></pre>
257
+ </article>
258
+ <article>
259
+ <span class="tag">Tailnet</span>
260
+ <h3>Tailscale Funnel</h3>
261
+ <p>适合已经允许 Funnel HTTPS 的 tailnet。使用这台设备的 <code>.ts.net</code> hostname。</p>
262
+ <pre><code>codexgpt tailscale --hostname your-device.your-tailnet.ts.net</code></pre>
263
+ </article>
264
+ </div>
265
+ </section>
266
+
267
+ <section id="modes" class="section">
268
+ <div class="section-heading">
269
+ <p class="eyebrow">工作模式</p>
270
+ <h2>根据任务风险选择控制级别。</h2>
271
+ </div>
272
+ <div class="mode-row">
273
+ <div>
274
+ <strong>Normal coding</strong>
275
+ <p>默认模式。ChatGPT 可以在工作区内读取、写入、编辑、搜索并验证。</p>
276
+ </div>
277
+ <div>
278
+ <strong>Handoff</strong>
279
+ <p>规划模式。ChatGPT 写 <code>.ai-bridge/current-plan.md</code>,本地代理执行。</p>
280
+ </div>
281
+ <div>
282
+ <strong>Pro context</strong>
283
+ <p>给不能调用连接器或 MCP 工具的模型导出持久上下文包。</p>
284
+ </div>
285
+ </div>
286
+ </section>
287
+
288
+ <section class="section reference-section">
289
+ <div class="section-heading">
290
+ <p class="eyebrow">工具清单</p>
291
+ <h2>ChatGPT 通过 MCP 获取的本地动作。</h2>
292
+ </div>
293
+ <div class="tool-reference">
294
+ <div>
295
+ <p class="eyebrow">Standard tools</p>
296
+ <h3>默认精简的仓库读取、编辑、验证和 handoff。</h3>
297
+ </div>
298
+ <div class="tool-list">
299
+ <span>codexgpt</span>
300
+ <span>server_config</span>
301
+ <span>codexgpt_self_test</span>
302
+ <span>open_current_workspace</span>
303
+ <span>open_workspace</span>
304
+ <span>tree</span>
305
+ <span>search</span>
306
+ <span>read</span>
307
+ <span>write</span>
308
+ <span>edit</span>
309
+ <span>bash</span>
310
+ <span>show_changes</span>
311
+ <span>read_handoff</span>
312
+ <span>wait_for_handoff</span>
313
+ <span>export_pro_context</span>
314
+ <span>handoff_to_agent</span>
315
+ </div>
316
+ </div>
317
+ <div class="reference-grid compact">
318
+ <article>
319
+ <small>安全默认值</small>
320
+ <h3>敏感路径默认阻止</h3>
321
+ <p><code>.env</code>、私钥、<code>.git</code>、<code>node_modules</code>、生成目录、缓存目录、工作区外路径和 symlink 逃逸会被拒绝。</p>
322
+ </article>
323
+ <article>
324
+ <small>safe bash</small>
325
+ <h3>验证而不是任意 shell</h3>
326
+ <p>safe 模式允许常见检查、git、test、lint、typecheck 和 build 命令。只在信任的本地仓库里使用 full bash。</p>
327
+ </article>
328
+ <article>
329
+ <small>不突然跑 shell</small>
330
+ <h3>关闭或显式命中 bash</h3>
331
+ <p>正在 Codex 里工作时可以用 <code>codexgpt start --no-bash</code>,也可以用 <code>--bash-session main --require-bash-session</code>。这个标签属于本地 CodexGPT,不是 Codex App 聊天。</p>
332
+ </article>
333
+ <article>
334
+ <small>本地页面</small>
335
+ <h3>状态和重启命令</h3>
336
+ <p>终端按 <code>o</code> 打开 token-protected 本地页面。页面显示 mode、session 状态、allowed roots,并提供 no-bash、required bash session、Codex session metadata/read 和 full transcript 的复制按钮。</p>
337
+ </article>
338
+ <article>
339
+ <small>Codex 会话</small>
340
+ <h3>显式开启本地历史列表</h3>
341
+ <p><code>--codex-sessions metadata</code> 会列出本地 Codex session id、标题、cwd 和 resume 命令。<code>read</code> 模式才允许有限 transcript 读取;两者都不会附加到正在运行的 Codex 聊天。</p>
342
+ </article>
343
+ <article>
344
+ <small>可视卡片</small>
345
+ <h3>默认关闭,需要时开启</h3>
346
+ <p>默认只暴露纯 MCP 描述。用 <code>CODEXGPT_TOOL_CARDS=1</code> 开启后,workspace 摘要、读写 diff、bash、git/tree/search/context 和 handoff/export 都会使用紧凑结构化视图;长输出会折叠或截断。</p>
347
+ </article>
348
+ <article>
349
+ <small>上下文持久化</small>
350
+ <h3>用文件保持连续性</h3>
351
+ <p>把项目规则写进 <code>AGENTS.md</code>,把计划和决策写进 <code>.ai-bridge</code>,让 ChatGPT 换会话后也能恢复上下文。</p>
352
+ </article>
353
+ <article>
354
+ <small>本地网页后台</small>
355
+ <h3>修改下一次启动的 profile</h3>
356
+ <p>token-protected 本地页面可以保存 tunnel、hostname、port、mode、bash、Codex sessions、write/tool mode、widget origin 和 tunnel config 路径,下一次 <code>codexgpt start</code> 生效。原始 tunnel token、账号切换和后台服务管理仍不放进浏览器。</p>
357
+ </article>
358
+ </div>
359
+ </section>
360
+
361
+ <section id="faq" class="section">
362
+ <div class="section-heading">
363
+ <p class="eyebrow">FAQ</p>
364
+ <h2>安装前最常见的问题。</h2>
365
+ </div>
366
+ <div class="faq-grid">
367
+ <article>
368
+ <h3>需要 Plus / Pro 吗?</h3>
369
+ <p>需要能访问 Apps / Developer Mode 的 ChatGPT 账号。OpenAI 当前文档列出的 web 端范围包括 Pro、Plus、Business、Enterprise 和 Education;当前测试中 Free / Go 不支持这个 app 创建流程。</p>
370
+ </article>
371
+ <article>
372
+ <h3>这会绕过限制吗?</h3>
373
+ <p>不会。CodexGPT 不绕过、不提升、不合并、不转售、不修改任何 ChatGPT、Codex、OpenAI 或第三方模型限制。</p>
374
+ </article>
375
+ <article>
376
+ <h3>Pro 模型一定能调用工具吗?</h3>
377
+ <p>不一定。账号权限和模型工具能力是两回事。某些规划模型界面不能调用连接器或 MCP 工具,此时用 <code>codexgpt pro-bundle --copy</code>。</p>
378
+ </article>
379
+ <article>
380
+ <h3>ChatGPT 能看到 Codex 上下文吗?</h3>
381
+ <p>能看到显式文件:<code>AGENTS.md</code>、<code>.ai-bridge</code>、git status、git diff 和指定源码文件。它不能读取隐藏的 Codex 运行时记忆。</p>
382
+ </article>
383
+ <article>
384
+ <h3>如何避免每次改 URL?</h3>
385
+ <p>不要用 quick tunnel 做日常使用。用 ngrok free dev domain 或 Cloudflare named tunnel 保存稳定 hostname。</p>
386
+ </article>
387
+ <article>
388
+ <h3>如何停止?</h3>
389
+ <p>终端按 <code>q</code> 或 Ctrl+C。quick URL 会失效。稳定 hostname 仍然保留,下一次 <code>codexgpt start</code> 可复用。</p>
390
+ </article>
391
+ </div>
392
+ <div class="link-row" aria-label="中文文档链接">
393
+ <a class="star-link" href="https://github.com/chatGPT-10/codexgpt"><img src="./star.svg" alt="" aria-hidden="true" />GitHub 点星</a>
394
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/README_ZH.md">中文 README</a>
395
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/FAQ_ZH.md">中文 FAQ</a>
396
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/DOMAIN_SETUP.md">稳定 URL 指南</a>
397
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/SECURITY.md">安全说明</a>
398
+ </div>
399
+ </section>
400
+
401
+ <section class="section safety">
402
+ <div>
403
+ <p class="eyebrow">安全边界</p>
404
+ <h2>这是本地开发桥,不是操作系统级沙箱。</h2>
405
+ </div>
406
+ <ul>
407
+ <li>公网 tunnel 默认使用 token 保护。</li>
408
+ <li><code>.env</code>、私钥、<code>.git</code>、<code>node_modules</code> 和 symlink 逃逸默认阻止。</li>
409
+ <li>safe bash 用于常见检查和测试,不是任意 shell 控制。</li>
410
+ <li><code>--no-bash</code> 会关闭所有 ChatGPT 触发的 shell 命令。</li>
411
+ <li><code>--bash-session</code> 加 <code>--require-bash-session</code> 会要求 bash 调用显式命中本地会话标签。</li>
412
+ <li><code>--codex-sessions</code> 默认关闭;开启后只读取本地 Codex JSONL 历史,不进入正在运行的 Codex 聊天。</li>
413
+ <li>只想让 ChatGPT 做计划时,用 handoff 模式。</li>
414
+ </ul>
415
+ </section>
416
+ </main>
417
+
418
+ <footer class="site-footer">
419
+ <span>CodexGPT</span>
420
+ <a class="star-link" href="https://github.com/chatGPT-10/codexgpt"><img src="./star.svg" alt="" aria-hidden="true" />GitHub 点星</a>
421
+ <a href="https://www.npmjs.com/package/codexgpt">npm</a>
422
+ <a href="./index.html">English</a>
423
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/SECURITY.md">安全说明</a>
424
+ </footer>
425
+
426
+ <script src="./script.js"></script>
427
+ </body>
428
+ </html>
package/package.json ADDED
@@ -0,0 +1,121 @@
1
+ {
2
+ "name": "codexgpt",
3
+ "version": "1.0.0",
4
+ "description": "Windows-first, self-hosted MCP tools that connect ChatGPT to one local repository through a loopback server and an optional HTTPS tunnel.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/chatGPT-10/codexgpt.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/chatGPT-10/codexgpt/issues"
13
+ },
14
+ "homepage": "https://rebel0789.github.io/codexgpt/",
15
+ "keywords": [
16
+ "mcp",
17
+ "chatgpt",
18
+ "codex",
19
+ "apps-sdk",
20
+ "codexgpt",
21
+ "local-development",
22
+ "cloudflare-tunnel",
23
+ "ngrok",
24
+ "tailscale"
25
+ ],
26
+ "engines": {
27
+ "node": ">=20"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "docs/*.html",
32
+ "docs/*.js",
33
+ "docs/*.css",
34
+ "docs/*.svg",
35
+ "scripts",
36
+ "README.md",
37
+ "README_ZH.md",
38
+ "PUBLIC_LAUNCH_CHECKLIST.md",
39
+ "DOMAIN_SETUP.md",
40
+ "CLOUDFLARED_VERIFIED_INSTALL.md",
41
+ "LICENSE",
42
+ "SECURITY.md",
43
+ "CONTRIBUTING.md",
44
+ "FAQ.md",
45
+ "FAQ_ZH.md",
46
+ "CHANGELOG.md",
47
+ "CHATGPT_PROMPT.md",
48
+ "CODEX_PROMPT.md",
49
+ "AGENTS.example.md",
50
+ "config.example.env"
51
+ ],
52
+ "publishConfig": {
53
+ "access": "public"
54
+ },
55
+ "bin": {
56
+ "codexgpt": "scripts/codexgpt-entry.mjs",
57
+ "codexgpt-mcp": "dist/stdio.js",
58
+ "codexgpt-mcp-http": "dist/http.js"
59
+ },
60
+ "scripts": {
61
+ "build": "tsc -p tsconfig.json",
62
+ "prepack": "npm run build",
63
+ "start": "node dist/stdio.js",
64
+ "start:stdio": "node dist/stdio.js",
65
+ "start:http": "node dist/http.js",
66
+ "dev:stdio": "tsx src/stdio.ts",
67
+ "dev:http": "tsx src/http.ts",
68
+ "smoke": "node scripts/run-smoke.mjs",
69
+ "stress": "npm run build && node scripts/stress-contract-compat.mjs",
70
+ "analysis:smoke": "npm run build && node scripts/analysis-smoke.mjs",
71
+ "analysis:cli-smoke": "npm run build && node scripts/analysis-cli-smoke.mjs",
72
+ "doctor": "node scripts/doctor.mjs",
73
+ "connect": "node scripts/codexgpt-entry.mjs",
74
+ "connect:setup": "node scripts/codexgpt-entry.mjs setup",
75
+ "connect:local": "node scripts/codexgpt-entry.mjs --tunnel none",
76
+ "cloudflared:install": "node scripts/cloudflared-installer.mjs install",
77
+ "cloudflared:upgrade": "node scripts/cloudflared-installer.mjs upgrade",
78
+ "cloudflared:status": "node scripts/cloudflared-installer.mjs status",
79
+ "connect:cloudflare": "node scripts/codexgpt-entry.mjs --tunnel cloudflare",
80
+ "connect:chatgpt": "node scripts/codexgpt-entry.mjs --tunnel cloudflare",
81
+ "connect:stable": "node scripts/codexgpt-entry.mjs --tunnel cloudflare-named",
82
+ "connect:ngrok": "node scripts/codexgpt-entry.mjs ngrok",
83
+ "connect:tailscale": "node scripts/codexgpt-entry.mjs tailscale",
84
+ "pro:bundle": "node scripts/pro-bundle.mjs",
85
+ "pro:apply": "node scripts/pro-apply.mjs",
86
+ "policy:check": "node scripts/repository-policy.mjs",
87
+ "ci:classify": "node scripts/ci-change-classifier.mjs",
88
+ "ci:failure-summary": "npm run build --silent && node scripts/ci-failure-summary.mjs",
89
+ "ci:exact-head": "npm run build --silent && node scripts/exact-head-ci.mjs",
90
+ "task:runner": "node scripts/long-task-runner.mjs",
91
+ "task:run": "node scripts/run-with-cleanup.mjs",
92
+ "task:cleanup": "node scripts/long-task-runner.mjs clean",
93
+ "test:focused": "node scripts/run-with-cleanup.mjs --purpose focused-test -- node --test",
94
+ "native-host:spike": "node scripts/windows-process-host-spike.mjs",
95
+ "native-host:evidence": "node scripts/windows-process-host-spike.mjs --write-evidence",
96
+ "toolchain:status": "node scripts/toolchain-manager.mjs status",
97
+ "toolchain:ensure": "node scripts/toolchain-manager.mjs ensure",
98
+ "toolchain:matrix": "node scripts/toolchain-manager.mjs matrix --major all --",
99
+ "test:ordinary": "node scripts/test-domains.mjs run --domain ordinary",
100
+ "test:control-domain": "node scripts/test-domains.mjs run --domain control"
101
+ },
102
+ "dependencies": {
103
+ "@modelcontextprotocol/sdk": "1.29.0",
104
+ "cors": "^2.8.5",
105
+ "express": "^5.1.0",
106
+ "jose": "6.2.4",
107
+ "minimatch": "^10.0.1",
108
+ "typescript": "5.9.3",
109
+ "yaml": "2.9.0",
110
+ "zod": "^3.25.76"
111
+ },
112
+ "devDependencies": {
113
+ "@types/cors": "^2.8.19",
114
+ "@types/express": "^5.0.3",
115
+ "@types/node": "^24.0.0",
116
+ "tsx": "^4.20.3"
117
+ },
118
+ "allowScripts": {
119
+ "esbuild@0.28.1": true
120
+ }
121
+ }
@@ -0,0 +1,81 @@
1
+ import assert from 'node:assert/strict';
2
+ import { spawnSync } from 'node:child_process';
3
+ import fs from 'node:fs/promises';
4
+ import os from 'node:os';
5
+ import path from 'node:path';
6
+ import { fileURLToPath } from 'node:url';
7
+
8
+ const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
9
+ const cli = path.join(projectRoot, 'scripts', 'codexgpt.mjs');
10
+ const root = await fs.mkdtemp(path.join(os.tmpdir(), 'codexgpt-analysis-cli-'));
11
+ const home = await fs.mkdtemp(path.join(os.tmpdir(), 'codexgpt-analysis-cli-home-'));
12
+
13
+ function run(args) {
14
+ return spawnSync(process.execPath, [cli, ...args], {
15
+ cwd: projectRoot,
16
+ encoding: 'utf8',
17
+ timeout: 5000,
18
+ env: { ...process.env, NO_COLOR: '1', CI: '1', CODEXGPT_HOME: home }
19
+ });
20
+ }
21
+
22
+ try {
23
+ await fs.mkdir(path.join(root, 'src'), { recursive: true });
24
+ await fs.mkdir(path.join(root, 'test'), { recursive: true });
25
+ await fs.writeFile(path.join(root, 'package.json'), JSON.stringify({ name: 'cli-fixture', scripts: { test: 'node --test' } }, null, 2), 'utf8');
26
+ await fs.writeFile(path.join(root, 'src', 'auth.ts'), 'export function authenticate(user) { return Boolean(user); }\n', 'utf8');
27
+ await fs.writeFile(path.join(root, 'test', 'auth.test.ts'), "import { authenticate } from '../src/auth.js';\nvoid authenticate('test');\n", 'utf8');
28
+ for (const args of [['init'], ['add', '.']]) {
29
+ const result = spawnSync('git', args, { cwd: root, encoding: 'utf8' });
30
+ assert.equal(result.status, 0, result.stderr || result.stdout);
31
+ }
32
+ const commit = spawnSync('git', ['-c', 'user.email=cli@example.com', '-c', 'user.name=CLI Test', 'commit', '-m', 'fixture'], { cwd: root, encoding: 'utf8' });
33
+ assert.equal(commit.status, 0, commit.stderr || commit.stdout);
34
+ await fs.writeFile(path.join(root, 'src', 'auth.ts'), 'export function authenticate(user) { return Boolean(user?.trim()); }\n', 'utf8');
35
+
36
+ const inspect = run(['inspect', '--root', root, '--json']);
37
+ assert.equal(inspect.status, 0, inspect.stderr || inspect.stdout || inspect.error?.message);
38
+ const inspectJson = JSON.parse(inspect.stdout);
39
+ assert.equal(inspectJson.schema_version, 1);
40
+ assert(inspectJson.languages.includes('typescript'));
41
+ assert(inspectJson.entrypoints.length >= 0);
42
+
43
+ const review = run(['review', '--root', root, '--json']);
44
+ assert.equal(review.status, 0, review.stderr || review.stdout || review.error?.message);
45
+ const reviewJson = JSON.parse(review.stdout);
46
+ assert.equal(reviewJson.schema_version, 1);
47
+ assert(reviewJson.changed_files.includes('src/auth.ts'));
48
+ assert(reviewJson.risk_signals.some((risk) => risk.id === 'authentication'));
49
+ assert(reviewJson.related_tests.some((file) => file.path === 'test/auth.test.ts'));
50
+
51
+ const stage = spawnSync('git', ['add', 'src/auth.ts'], { cwd: root, encoding: 'utf8' });
52
+ assert.equal(stage.status, 0, stage.stderr || stage.stdout);
53
+ const stagedReview = run(['review', '--root', root, '--staged', '--path', 'src/auth.ts', '--json']);
54
+ assert.equal(stagedReview.status, 0, stagedReview.stderr || stagedReview.stdout || stagedReview.error?.message);
55
+ const stagedReviewJson = JSON.parse(stagedReview.stdout);
56
+ assert.deepEqual(stagedReviewJson.changed_files, ['src/auth.ts']);
57
+ assert(stagedReviewJson.risk_signals.some((risk) => risk.id === 'authentication'));
58
+
59
+ const human = run(['inspect', '--root', root]);
60
+ assert.equal(human.status, 0, human.stderr || human.stdout);
61
+ for (const heading of ['Workspace', 'Projects', 'Languages', 'Coverage']) assert(human.stdout.includes(heading));
62
+ assert(!/\u001b\[/.test(human.stdout));
63
+
64
+ const missing = run(['inspect', '--root', path.join(root, 'missing'), '--json']);
65
+ assert.notEqual(missing.status, 0);
66
+ assert.match(missing.stderr, /does not exist/i);
67
+
68
+ const nonGitRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'codexgpt-analysis-cli-non-git-'));
69
+ try {
70
+ const nonGitReview = run(['review', '--root', nonGitRoot, '--json']);
71
+ assert.notEqual(nonGitReview.status, 0);
72
+ assert.match(nonGitReview.stderr, /Unable to read Git changes/i);
73
+ } finally {
74
+ await fs.rm(nonGitRoot, { recursive: true, force: true });
75
+ }
76
+
77
+ console.log('✓ analysis CLI smoke test passed');
78
+ } finally {
79
+ await fs.rm(root, { recursive: true, force: true });
80
+ await fs.rm(home, { recursive: true, force: true });
81
+ }