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/README_ZH.md ADDED
@@ -0,0 +1,747 @@
1
+ <p align="center">
2
+ <img src="docs/favicon.svg" width="72" height="72" alt="CodexGPT logo">
3
+ </p>
4
+
5
+ <h1 align="center">CodexGPT</h1>
6
+
7
+ <p align="center">
8
+ 让 ChatGPT Web 看见你的本地仓库,并像本地代码代理一样工作。
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/codexgpt"><img alt="npm" src="https://img.shields.io/npm/v/codexgpt?style=flat-square"></a>
13
+ <a href="https://github.com/chatGPT-10/codexgpt/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/chatGPT-10/codexgpt/ci.yml?branch=main&style=flat-square"></a>
14
+ <a href="https://github.com/chatGPT-10/codexgpt/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/chatGPT-10/codexgpt?style=flat-square"></a>
15
+ <a href="https://rebel0789.github.io/codexgpt/zh.html"><img alt="中文站点" src="https://img.shields.io/badge/site-%E4%B8%AD%E6%96%87%E6%96%87%E6%A1%A3-67e8f9?style=flat-square"></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="README.md">English</a>
20
+ ·
21
+ <a href="https://rebel0789.github.io/codexgpt/zh.html">中文网站</a>
22
+ ·
23
+ <a href="https://github.com/chatGPT-10/codexgpt">GitHub 点星</a>
24
+ ·
25
+ <a href="https://www.npmjs.com/package/codexgpt">npm</a>
26
+ ·
27
+ <a href="DOMAIN_SETUP.md">稳定 URL 指南</a>
28
+ ·
29
+ <a href="FAQ_ZH.md">中文 FAQ</a>
30
+ ·
31
+ <a href="SECURITY.md">安全说明</a>
32
+ </p>
33
+
34
+ ## 当前项目状态
35
+
36
+ - 首个稳定版本为 `codexgpt@1.0.0`;package metadata、runtime 自报版本、Git tag 与 npm `latest` 必须保持一致。
37
+ - Phase 5、Phase 6 和 Phase 7 Core 均已通过完整 Ubuntu/Windows Node 20/24 验证矩阵并正式关闭。Phase 7 Core 的关闭提交为 `a0b9f46e2297297959527f7570c9cb7942cc8fb3`,exact-head CI run 为 `30171313296`;Contract V5 仍是显式 `standard` opt-in,不是默认公开契约。
38
+ - Phase 8 Tasks 8A1–8A9 已在 source checkout 中实现并完成本地验证:Windows DPAPI CurrentUser 状态保护、物理分离的 public/local listener、受限 DCR + PKCE S256、ES256 access token、rotating refresh family、durable revoke/replay、request-local policy identity、精确 per-tool scope、受支持的 setup/本地管理/恢复、专用 Tunnel ownership 检查、迁移与回滚文档、package integration、合成端到端 OAuth/MCP 验证,以及完成态 runtime 对抗性修复。真实 Gate G8-U 已通过 Journeys U2–U7,STEP-470 也已通过修复后的 managed Node 20/24 ordinary 与 protected Smoke 完成本地 G8-X。U6 已通过 service/protocol 双路由回滚、重建 Legacy App 的真实读取、精确无参数 OAuth 恢复,以及恢复后现有 OAuth App 的真实读取;已删除的原 Legacy App 身份连续性不作宣称。U7 已证明 shared/unowned Tunnel config 在任何 mutation 前失败并保持字节不变,同时完成 live public-loopback/local-admin 边界验收。Phase 8 exact-head closure 已在 `55b2b5664aae322ec992968a41c87a289fb75282`、CI run `30274857996` 通过;`1.0.0` 打包这一已验证基线。
39
+
40
+ ## 安装
41
+
42
+ CodexGPT 需要 Node.js 20+,以及能使用 Apps / Developer Mode 的 ChatGPT 账号。可用性取决于账户计划、工作区设置和产品 rollout;请以 ChatGPT 当前界面显示的资格为准。
43
+
44
+ 先安装 CLI:
45
+
46
+ ```bash
47
+ npm install -g codexgpt
48
+ ```
49
+
50
+ npm badge 与 package metadata 均应显示 `1.0.0`;只有需要尚未发布的 `main` 行为时,才使用下面的 source checkout 方式。
51
+
52
+ 已有 source checkout 时,使用仓库脚本以保留公开入口层:
53
+
54
+ ```powershell
55
+ Set-Location D:\Dev\codexpro
56
+ npm install
57
+ npm run build
58
+ npm run connect:setup -- --root D:\Dev\your-repo
59
+ ```
60
+
61
+ 之后从该 source checkout 日常启动:
62
+
63
+ ```powershell
64
+ npm run connect -- --root D:\Dev\your-repo
65
+ ```
66
+
67
+ ## OAuth 一条命令设置
68
+
69
+ 迁移期间保留现有 Legacy App,并另外创建 OAuth App。所有 OAuth 命令都必须通过 `--root` 绑定到精确目标仓库。
70
+
71
+ 已发布的全局安装:
72
+
73
+ ```powershell
74
+ codexgpt auth setup `
75
+ --root D:\Dev\your-repo `
76
+ --hostname mcp.example.com `
77
+ --tunnel-name codexgpt
78
+ ```
79
+
80
+ 尚未发布的 source checkout:
81
+
82
+ ```powershell
83
+ Set-Location D:\Dev\codexpro
84
+ npm install
85
+ npm run build
86
+ node .\scripts\codexgpt-entry.mjs auth setup `
87
+ --root D:\Dev\your-repo `
88
+ --hostname mcp.example.com `
89
+ --tunnel-name codexgpt
90
+ ```
91
+
92
+ 该流程要求稳定的 named Cloudflare Tunnel。它只复用 owner marker 与当前 workspace/deployment 精确匹配的专用 Tunnel;setup journal 支持续跑;OAuth mode 只在 candidate listener 的公开 metadata、JWKS 和 health 完成外部探测后才提交。Cloudflare/DNS 变更会先打印并要求明确批准;使用 `--no-tunnel-changes` 可执行确定性的无外部变更预检。
93
+
94
+ ChatGPT Server URL 不含 token:
95
+
96
+ ```text
97
+ https://mcp.example.com/mcp
98
+ ```
99
+
100
+ 在 ChatGPT Web 中启用 Developer Mode,创建 custom App,粘贴该 URL,选择 OAuth(若界面显示),执行 **Scan Tools**,并完成浏览器授权。首次 grant 必须在 Windows PC 本地批准:
101
+
102
+ ```powershell
103
+ codexgpt auth pending --root D:\Dev\your-repo
104
+ codexgpt auth open --root D:\Dev\your-repo
105
+ # 或批准界面显示的 correlation code:
106
+ codexgpt auth approve <correlation-code> --root D:\Dev\your-repo
107
+ ```
108
+
109
+ 正常前台重启保持 issuer、binding、Tunnel、client 和 refresh family 不变:
110
+
111
+ ```powershell
112
+ codexgpt start --root D:\Dev\your-repo
113
+ ```
114
+
115
+ 仅 scope 改变不要求 **Scan Tools**。启用或移除 tool descriptor/capability 时,必须先针对精确 `--root` 重启;如果 App 工具快照发生变化,再执行一次 **Scan Tools**。旧 token 不会因为本地新增 capability 而自动获得权限。
116
+
117
+ 常用管理命令:
118
+
119
+ ```powershell
120
+ codexgpt auth status --root D:\Dev\your-repo
121
+ codexgpt auth clients --root D:\Dev\your-repo
122
+ codexgpt auth client remove <client-id> --root D:\Dev\your-repo
123
+ codexgpt auth revoke <grant-id> --root D:\Dev\your-repo
124
+ codexgpt auth rotate-signing-key --root D:\Dev\your-repo
125
+ codexgpt auth recover inspect --root D:\Dev\your-repo
126
+ ```
127
+
128
+ backup restore 与 `auth reinitialize --revoke-all` 会保留 stable binding 和专用 Tunnel,发布新的 incarnation/key authority,使全部旧 access/refresh credential 失效并强制 relink;它们不会复活旧 grant。DPAPI 只绑定当前 Windows user profile;其他用户、丢失的 profile,以及同一用户权限下的恶意进程不在其保护边界内。
129
+
130
+ ### 双 App 回滚与返回 OAuth
131
+
132
+ Phase 8 Core 迁移期间不得删除 Legacy App 或旧凭据。回滚时,先停止当前 OAuth 前台进程,只切换 workspace profile,重启后使用单独保留的 Legacy App:
133
+
134
+ ```powershell
135
+ codexgpt auth rollback --root D:\Dev\your-repo
136
+ codexgpt start --root D:\Dev\your-repo
137
+ ```
138
+
139
+ 服务重启不会自动让 ChatGPT 客户端回滚。OAuth App 不会获得 legacy query-token URL;OAuth state、key、grant、client、audit、Tunnel config 和 owner marker 均保留。
140
+
141
+ 使用保留的 OAuth App 幂等返回 OAuth:
142
+
143
+ ```powershell
144
+ codexgpt auth setup --root D:\Dev\your-repo
145
+ ```
146
+
147
+ 命令会推导已保存的 hostname、Tunnel、port 与 ownership marker,并在重新提交 OAuth mode 前探测 candidate public surface。Profile 现在分别保存不含凭据的 `authRoutes.legacy` 与 `authRoutes.oauth`,所以回滚会切换完整 route,而不是只改 `authMode` 后在 OAuth hostname 上运行 Legacy authentication。旧 profile 若缺少 retained Legacy route 会 fail closed,并要求一次显式 route migration;query token 不会被复制进 route selector。
148
+
149
+ 若环境变量覆盖 profile,先清除再重启:
150
+
151
+ ```powershell
152
+ Remove-Item Env:CODEXGPT_AUTH_MODE -ErrorAction SilentlyContinue
153
+ [Environment]::SetEnvironmentVariable('CODEXGPT_AUTH_MODE', $null, 'User')
154
+ ```
155
+
156
+ public listener 默认是 `127.0.0.1:8787`;owner administration 使用物理分离的 `127.0.0.1:8788`,不得通过 Cloudflare 暴露。Quick Tunnel 的 hostname 每次变化,因此不适用。项目不宣称 ChatGPT static Bearer、Cloudflare Access、mTLS、多 owner tenancy 或 OS isolation。
157
+
158
+ 截至 2026-07-26,OpenAI 官方说明要求在 ChatGPT Web 的 Apps/Developer Mode 中创建 custom App,并通过 **Scan Tools** 刷新工具;可用性取决于 plan/workspace。官方同时建议支持 refresh token,并对 OIDC provider 建议声明 `offline_access`。CodexGPT 是 OAuth authorization server 而不是 OIDC provider,并签发 rotating refresh token。Journeys U2–U4 已通过 DCR/连接、本地批准、scope reauthorization、descriptor refresh、post-restart refresh continuity 与本地 revoke/relink。Journey U5 已通过真实 denial、replay、bounded admission、环境变量覆盖与 verified-backup recovery;Recovery 仍是有意的 security reset:stable binding、hostname 与 Tunnel 保持不变,所有旧 client/grant/token authority 失效。U6 已通过 separate-route Legacy/OAuth round-trip、exact OAuth schemes、query-token denial、重建 Legacy App 的真实读取、精确 OAuth 返回,以及现有 OAuth App 的返回后读取;已删除的原 Legacy App 身份连续性不作宣称。U7 已通过 shared/unowned Tunnel config 的 fail-early 字节保持拒绝和 live public-loopback/local-admin 边界验收。Gate G8-U、本地 G8-X 与 exact-head Ubuntu/Windows Node 20/24 CI 均已完成,关闭基线为 `55b2b5664aae322ec992968a41c87a289fb75282` / run `30274857996`。
159
+
160
+ ## Legacy query-token 兼容设置
161
+
162
+ 进入你想让 ChatGPT 工作的仓库,然后运行 setup:
163
+
164
+ ```bash
165
+ cd /path/to/your/repo
166
+ codexgpt setup
167
+ ```
168
+
169
+ CodexGPT 会尝试复制包含 `codexgpt_token` query 凭据的完整 ChatGPT Server URL,但启动日志默认隐藏这个秘密 URL。剪贴板不可用时,在 CodexGPT 终端按 `u` 显式显示。在 ChatGPT 当前的 Apps / Plugins 连接管理页面创建连接;若界面提供 Developer Mode,先启用它。粘贴完整 URL;若表单显示 Authentication,选择 `No Authentication / None`。
170
+
171
+ 本节只描述保留的 Legacy App URL-token 流程,不要删除其中的 `codexgpt_token`。前文的 source-checkout OAuth 路径已有独立真实 G8-U 证据,并使用另一个保留的 App 与 token-free URL;不要混用两种模式,也不要改成手动 static Bearer。请把 Legacy App 的完整 URL 当成等同密码的秘密:它可能泄露到浏览器历史、剪贴板、截图、日志和复制的链接中。不要分享、发布或提交这个 URL。
172
+
173
+ 以后同一个仓库日常启动只需要:
174
+
175
+ ```bash
176
+ codexgpt start
177
+ ```
178
+
179
+ CodexGPT 把 ChatGPT Developer Mode 变成本地仓库的 MCP 代码代理。ChatGPT 可以读取文件、搜索代码、查看 git 状态、写入或精确编辑文件,并运行安全范围内的验证命令。
180
+
181
+ CodexGPT 不是速率限制绕过工具。它不会绕过、提升、合并、转售或修改 ChatGPT、Codex、OpenAI 或第三方模型的限制。它只是通过官方 Developer Mode / MCP App 路径,把你自己的 ChatGPT 会话连接到你自己的本地仓库。
182
+
183
+ 如果 Codex 当前工作流暂时不可用,而你的 ChatGPT 页面仍然可用,CodexGPT 可以让你继续在同一个本地仓库上工作。反过来也一样:ChatGPT 负责高上下文规划,Codex、OpenCode、Pi 或其他本地执行器负责终端里的实际执行。
184
+
185
+ ## 适合谁
186
+
187
+ CodexGPT 适合已经有 ChatGPT Apps / Developer Mode 权限并希望做本地开发的人:
188
+
189
+ - 想让 ChatGPT Web 直接读取本地代码,而不是反复复制文件片段。
190
+ - 想把 `AGENTS.md`、`.ai-bridge`、git diff、源码文件这些 Codex 风格上下文给 ChatGPT。
191
+ - 想在 ChatGPT 里完成规划、审查、改小文件、跑安全验证。
192
+ - 想在某些模型不能调用工具时,导出一个持久上下文包给它做规划。
193
+ - 想把 ChatGPT 的计划交给 Codex、OpenCode、Pi 或自定义本地代理执行。
194
+
195
+ 请以 ChatGPT 当前界面是否显示 Apps / Developer Mode 或连接管理入口为准。可用性会受账号、工作区策略和 rollout 影响,CodexGPT 不会解锁这些能力。
196
+
197
+ ## 它能做什么
198
+
199
+ ```text
200
+ ChatGPT Web 可以看到:
201
+ AGENTS.md
202
+ .ai-bridge 计划、状态和执行记录
203
+ git status
204
+ show_changes 审查摘要和可选 diff
205
+ 文件树、搜索结果、指定源码文件
206
+
207
+ ChatGPT Web 可以操作:
208
+ read 读取文件
209
+ search 搜索代码
210
+ write 在工作区内写文件
211
+ edit 精确替换文本
212
+ bash 运行安全验证命令
213
+ show_changes 查看当前改动摘要
214
+
215
+ 本地执行器仍然有价值:
216
+ Codex / OpenCode / Pi 执行计划
217
+ 终端重任务留在本地
218
+ ChatGPT 回看执行结果和 diff
219
+ ```
220
+
221
+ 默认 `CODEXGPT_TOOL_MODE=standard`,只暴露常用编码循环、`codexgpt_self_test`、`show_changes`、上下文导出和 handoff。演示时可以用 `--tool-mode minimal`,需要完整兼容工具时用 `--tool-mode full`。
222
+
223
+ 默认工具数量较少是故意的:ChatGPT 面对少量高信号工具时更稳定。Phase 6 项目指导现在默认启用,直接运行 `codexgpt start` 即可。首次 workspace open 会自动返回有界的根 `AGENTS.md` 正文和仅含 implicit-eligible workspace Skill 的 catalog;首次修改前,ChatGPT 必须调用 `codex_context(target_path)` 获取精确的 root-to-target 指令链和 target-scoped `.agents/skills`,再用返回的同一个 `target_path` 最多加载一个匹配 Skill。Skill 正文及 `references/`、`scripts/`、`assets/` 文本按需加载,任何脚本、依赖或 metadata 都不会自动执行。user/plugin Skills 默认不暴露,只有显式 `include_global_skills=true` 才扫描。
224
+
225
+ Phase 6 更新前创建的 App 可能保留冻结的旧工具快照;此时需要执行一次 **Scan Tools** 或重建该 App,不宣称透明自动刷新。若旧快照中已有稳定的 `codexgpt` supertool,它仍可兼容调用 `open` 和 `codex_context`。同一二进制回滚只需设置 `$env:CODEXGPT_GUIDANCE_MODE = "legacy"` 并重启。`codexgpt doctor` 会报告 readiness、无效 metadata、命名冲突及 scan/catalog 截断。省略该变量时现在使用 `standard`;由于 `minimal` 不暴露 `codex_context`,省略 guidance 配置的 `--tool-mode minimal` 会使用精确的 legacy 兼容投影,显式 `standard + minimal` 则在启动时失败。
226
+
227
+ ### Phase 7 Core 语义导航
228
+
229
+ Phase 7 Core 新增显式 `standard` 的 Contract V5,并通过一个零配置 `semantic` 工具为 JavaScript/TypeScript 提供定义、引用、单文件诊断和重命名预览。只有符号唯一时才允许省略路径;名称有歧义时返回有界候选,不会猜测。结果只显示工作区相对路径,并明确返回 `actual_provider` 与 `result_quality`,因此 lexical fallback 不会伪装成语义结果。
230
+
231
+ 为当前工作区启用 builtin engine 后重启;已有 51 工具快照的 ChatGPT App 需要执行一次 **Scan Tools(扫描工具)** 或重建 App:
232
+
233
+ ```powershell
234
+ codexgpt semantic use builtin
235
+ codexgpt start
236
+ ```
237
+
238
+ 本地查看健康状态、engine 版本和有界 worker 参数:
239
+
240
+ ```powershell
241
+ codexgpt semantic status
242
+ codexgpt semantic status --verbose
243
+ ```
244
+
245
+ 重命名分为两个明确步骤。`semantic` 的 `rename_preview` 只生成完整、绑定文件 hash 与稳定 identity 的内存计划,不写文件;随后 V5 `apply_patch` 使用一次性 `semantic_preview_id`,通过现有审批、原子事务、audit、change set、review 和 undo 路径整体提交。预览不是审批,Provider 也不能获得工作区或 mutation 权限。
246
+
247
+ 同一 binary 的回滚只需禁用并重启,普通 read/search/edit 不受影响:
248
+
249
+ ```powershell
250
+ codexgpt semantic disable
251
+ codexgpt start
252
+ ```
253
+
254
+ builtin worker 仍以当前 Windows 用户权限运行,不是 execution、filesystem、credential 或 network sandbox。Serena 与直接 LSP 仍是未实现、未捆绑的 post-Core 扩展,本功能不会安装它们。
255
+
256
+ CodexGPT 默认给 ChatGPT 暴露纯 MCP 工具描述,不附带 widget/card metadata。需要紧凑 v9 卡片时用 `CODEXGPT_TOOL_CARDS=1` 启动;server config、自测、workspace 摘要、读写 diff、bash 验证、git/tree/search/context 和 handoff/export 都有结构化视图。git、skills、tree、terminal 输出、context 和 raw diff 会折叠或截断,避免在聊天里刷出大段原始数据。`CODEXGPT_WIDGET_DOMAIN` 用于设置 ChatGPT widget iframe 的专用 HTTPS origin,正式提交 app 前应换成你控制的独立域名。
257
+
258
+ ## 其他启动方式
259
+
260
+ 不想全局安装时,也可以用:
261
+
262
+ ```bash
263
+ npx codexgpt@latest start --root /absolute/path/to/your/repo
264
+ ```
265
+
266
+ 但普通用户更推荐全局安装,这样命令就是固定的 `codexgpt setup` 和 `codexgpt start`。
267
+
268
+ ## ChatGPT 中的 App 设置
269
+
270
+ 打开 ChatGPT 当前的 Apps / Plugins 连接管理页面;若界面提供 Developer Mode,先启用它:
271
+
272
+ ```text
273
+ ChatGPT Settings -> Plugins / Apps -> + / Create
274
+ ```
275
+
276
+ 若当前 Developer Mode 页面显示 CSP 开关,保持开启。CodexGPT 的卡片和小组件就是按 CSP 开启的路径设计的,不需要远程脚本、外部字体、iframe 或第三方图片。
277
+
278
+ 在创建 Plugin 页面填写:
279
+
280
+ ```text
281
+ Name: CodexGPT
282
+ Description: Local workspace bridge for ChatGPT coding
283
+ Connection: Server URL
284
+ Server URL: 粘贴 CodexGPT 自动复制的完整地址,包括 codexgpt_token query string
285
+ Authentication: No Authentication / None(若显示该字段)
286
+ ```
287
+
288
+ 不要删除 URL 的 query string。这个完整 URL 就是当前个人 ChatGPT 兼容流程的凭据;ChatGPT Web 不需要、也不应按照本指南手动配置静态 Bearer header。
289
+
290
+ 保持终端里的 CodexGPT 进程运行。你停止它之后,ChatGPT 就无法继续连接本地仓库。Cloudflare quick tunnel 的 URL 也会失效。
291
+
292
+ ## 三种主要模式
293
+
294
+ ### 1. Normal coding
295
+
296
+ 默认模式。ChatGPT 可以在工作区内读取、搜索、写入、精确编辑文件,并运行安全验证命令。
297
+
298
+ ```bash
299
+ codexgpt start
300
+ ```
301
+
302
+ 适合小改动、文档更新、定位 bug、查看 diff、跑 lint/test/build。
303
+
304
+ 如果你正在另一个 Codex 会话里工作,不希望 ChatGPT 触发任何 shell 命令,用:
305
+
306
+ ```bash
307
+ codexgpt start --no-bash
308
+ ```
309
+
310
+ 如果想保留 bash,但要求 ChatGPT 明确命中你启动的这个 CodexGPT 终端会话标签,用:
311
+
312
+ ```bash
313
+ codexgpt start --bash-session main --require-bash-session
314
+ ```
315
+
316
+ 开启后,`bash` 工具调用必须带上 `session_id: "main"` 才会执行。
317
+
318
+ ### 2. Handoff
319
+
320
+ 规划模式。ChatGPT 不直接写源码,只写入:
321
+
322
+ ```text
323
+ .ai-bridge/current-plan.md
324
+ ```
325
+
326
+ 然后你在本地终端决定是否执行:
327
+
328
+ ```bash
329
+ codexgpt execute-handoff --agent opencode --model provider/model --dry-run
330
+ codexgpt execute-handoff --agent opencode --model provider/model
331
+ ```
332
+
333
+ 也可以启动监听器,让本地终端在计划变更后执行:
334
+
335
+ ```bash
336
+ codexgpt start --mode handoff
337
+ codexgpt start --mode handoff --no-bash
338
+ codexgpt watch-handoff --agent opencode --model provider/model --yes
339
+ ```
340
+
341
+ 执行结果会写回:
342
+
343
+ ```text
344
+ .ai-bridge/agent-status.md
345
+ .ai-bridge/implementation-diff.patch
346
+ .ai-bridge/execution-log.jsonl
347
+ ```
348
+
349
+ 然后让 ChatGPT 通过 `read_handoff` 或 `codex_context` 审查结果。
350
+
351
+ ### 3. Pro context fallback
352
+
353
+ 有些 ChatGPT 模型或产品界面不能直接调用 Developer Mode Apps、连接器或 MCP 工具。即使同一个符合条件的账号可以创建 CodexGPT app,某个具体模型界面仍然可能没有工具调用能力。
354
+
355
+ 这时不要强行让它调用工具。先导出一个持久上下文包:
356
+
357
+ ```bash
358
+ codexgpt pro-bundle --root /absolute/path/to/your/repo --copy
359
+ ```
360
+
361
+ 它会写入:
362
+
363
+ ```text
364
+ .ai-bridge/pro-context.md
365
+ ```
366
+
367
+ 把这个上下文粘贴给不能调用工具的模型,让它产出窄范围实现计划。然后保存计划并应用:
368
+
369
+ ```bash
370
+ codexgpt pro-apply --root /absolute/path/to/your/repo --file plan.md
371
+ ```
372
+
373
+ 这会写入 `.ai-bridge/current-plan.md`,再交给 Codex、OpenCode、Pi 或自定义本地代理执行。
374
+
375
+ 如果你的 ChatGPT 账号已经在 Web 产品里提供 GPT-5.5 或更强模型,并且该模型界面可以调用 Developer Mode Apps,CodexGPT 可以让它通过 MCP 使用本地仓库工具。CodexGPT 不提供、不代理、不转售、也不解锁模型。
376
+
377
+ ## 稳定 URL 怎么选
378
+
379
+ ChatGPT App 需要一个可访问的 Server URL。你有三个常用选择:
380
+
381
+ ```text
382
+ Cloudflare quick tunnel 最快演示路径。每次重启 URL 都变。
383
+ ngrok free dev domain 推荐给大多数用户。免费账号给一个稳定 dev domain。
384
+ Cloudflare named tunnel 适合已有自定义域名的用户。
385
+ ```
386
+
387
+ ### Cloudflare quick tunnel
388
+
389
+ 最适合录 demo 或临时试用:
390
+
391
+ ```bash
392
+ codexgpt start
393
+ ```
394
+
395
+ 缺点很明确:quick tunnel 的 URL 每次重启都会变。如果你把 quick URL 放进 ChatGPT App,下一次启动时需要重新编辑 ChatGPT App 的 Server URL。
396
+
397
+ ### ngrok free dev domain
398
+
399
+ 推荐给大多数用户。创建一个免费 ngrok 账号,在 ngrok Dashboard 的 Universal Gateway -> Domains 找到你的 dev domain,比如:
400
+
401
+ ```text
402
+ your-name.ngrok-free.dev
403
+ ```
404
+
405
+ 一次性认证 ngrok:
406
+
407
+ ```bash
408
+ ngrok config add-authtoken YOUR_NGROK_TOKEN
409
+ ```
410
+
411
+ 保存到 CodexGPT:
412
+
413
+ ```bash
414
+ codexgpt settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
415
+ ```
416
+
417
+ 以后启动:
418
+
419
+ ```bash
420
+ codexgpt start
421
+ ```
422
+
423
+ ChatGPT 里的 Server URL 可以保持不变。
424
+
425
+ ### Cloudflare named tunnel
426
+
427
+ 如果你有自己的域名,可以用 Cloudflare named tunnel:
428
+
429
+ ```bash
430
+ cloudflared tunnel login
431
+ cloudflared tunnel create codexgpt
432
+ cloudflared tunnel route dns codexgpt codexgpt.example.com
433
+ ```
434
+
435
+ 之后日常启动:
436
+
437
+ ```bash
438
+ codexgpt stable --hostname codexgpt.example.com --tunnel-name codexgpt
439
+ ```
440
+
441
+ 更多域名细节见 [DOMAIN_SETUP.md](DOMAIN_SETUP.md)。
442
+
443
+ ## Codex 风格上下文
444
+
445
+ CodexGPT 不读取 Codex 的隐藏运行时记忆。它给 ChatGPT 的是显式工作区上下文:
446
+
447
+ ```text
448
+ open_current_workspace 当前 root、安全模式、AGENTS 状态、git 状态
449
+ codex_context AGENTS 链、.ai-bridge 文件、可选 git status/diff
450
+ read_handoff 只读 .ai-bridge 文件
451
+ workspace_snapshot 更大的项目快照和 handoff 上下文
452
+ ```
453
+
454
+ `codex_context` 会读取从仓库根目录到目标路径上的指令文件:
455
+
456
+ ```text
457
+ AGENTS.override.md
458
+ AGENTS.md
459
+ agents.md
460
+ .agents.md
461
+ ```
462
+
463
+ 并加入:
464
+
465
+ ```text
466
+ .ai-bridge/current-plan.md
467
+ .ai-bridge/agent-status.md
468
+ .ai-bridge/implementation-diff.patch
469
+ .ai-bridge/codex-status.md
470
+ .ai-bridge/decisions.md
471
+ .ai-bridge/open-questions.md
472
+ .ai-bridge/execution-log.jsonl
473
+ git status
474
+ 可选 git diff
475
+ ```
476
+
477
+ 推荐流程:
478
+
479
+ ```text
480
+ 先调用 server_config 和 codexgpt_self_test
481
+ 如果 self-test 失败,先停下来报告失败项
482
+ 先调用 open_current_workspace,include_tree=false
483
+ 再调用 codex_context,target_path 指向要改的文件,include_diff=false
484
+ 然后只读取当前任务需要的文件
485
+ ```
486
+
487
+ 这样 ChatGPT 会更接近 Codex 的指令模型,同时不会依赖隐藏状态或大范围重复扫描。
488
+
489
+ ## Policy Kernel 迁移
490
+
491
+ Phase 2A 新增本地 Policy Kernel,并提供三个明确的迁移状态:
492
+
493
+ - `CODEXGPT_POLICY_ENGINE=legacy` 是当前迁移周期默认值,保持原有执行路径。
494
+ - `CODEXGPT_POLICY_ENGINE=shadow` 仍执行 legacy 路径,只生成经过脱敏的策略比较事实。
495
+ - `CODEXGPT_POLICY_ENGINE=enforce` 让编译后的 Policy Kernel 成为权威判断;策略、身份、审批或执行能力事实不可用时直接失败关闭。
496
+
497
+ 可选的 `CODEXGPT_PERMISSION_PROFILE=<id>` 会选择 `~/.codexgpt/permissions/<id>.json` 下的严格 JSON 权限文件。Runtime Profile 与 Permission Profile 是两个不同概念:`toolMode` 只控制工具是否可见;文件、Git、Shell、Process 和 Network 的权限上限由身份 scopes、immutable hard policy、Permission Profile、受限 SessionGrant 与已证明的执行能力共同决定。
498
+
499
+ Contract V1 与 V2 会精确保留原有行为,不会创建 pending approval。显式启用 Contract V3 后,confirmed root 与可信代码进程执行可使用仅限本机的审批 CLI;CodexGPT 不会向 MCP 暴露审批工具,也不会把远程客户端请求当作真人确认。Safe Bash 仍只是命令策略过滤器,不是操作系统沙箱。Cloudflare Tunnel 只保护入站路由,不负责本地授权或出站网络限制。
500
+
501
+ 迁移周期内只允许回滚到经过审查的 `legacy` 行为、生成的兼容 Permission Profile,或更窄的只读 profile。Policy 加载失败不会自动退回无策略执行。
502
+
503
+ ## 原子事务与持久审计
504
+
505
+ Phase 3 已把 transaction、change-set、persistent audit、recovery 与 move 后端接入真实的 HTTP 与 STDIO Server 生命周期:
506
+
507
+ - `CODEXGPT_FILE_TRANSACTIONS=legacy|atomic`;`legacy` 仍是兼容默认值。启用 `atomic` 后,受支持的工作区 writer 会先准备一个受保护事务,绝不会静默回退为直接写入。
508
+ - 可写 atomic 操作必须持久化终态审计;不能使用 `CODEXGPT_AUDIT_MODE=off`。审计或 participant 失败会先完成一致性协调或回滚已可见变化,而不是返回未经审计的成功。
509
+ - `CODEXGPT_AUDIT_MODE=auto|off|best_effort|required`;默认是 `auto`,Policy 使用 `enforce` 时也不能设为 `off`。
510
+ - `CODEXGPT_AUDIT_RETENTION_DAYS` 默认保留 30 天,`CODEXGPT_AUDIT_RETENTION_BYTES` 默认允许已闭合分段总计 100 MiB。
511
+ - 审计、经过认证的 change-set 与 transaction 状态位于工作区和 Git 之外,不记录原始文件内容、完整 diff、命令输出、凭据或规范工作区根路径。
512
+
513
+ Contract V1 仍是默认的精确 28 工具公开表面。显式选择 Contract V2(`CODEXGPT_TOOL_CONTRACT_VERSION=2`)时,必须同时启用 atomic transaction 与 persistent audit,并使用精确的 31 个子工具集合。standard/full 模式新增 `move_paths` 与 `undo_change_set`;只有 full 模式再新增 `query_audit_events`;minimal 与 connection-test 不暴露这三个工具。`move_paths` 最多处理同一工作区、同一卷内 64 个带 SHA-256 前置条件的普通文件,不覆盖无关目标;preview 只证明当前验证通过,不承诺稍后的 hard-link 执行一定成功。恢复、完整性、保留期、owner binding、undo 和信任边界详见 [SECURITY.md](SECURITY.md)。
514
+
515
+ ## 类型化本地 Git 与托管任务 Worktree(Contract V4)
516
+
517
+ Contract V4 需要显式启用,精确包含 51 个工具。它保留 V1/V2/V3,并新增类型化的纯本地 Git 读写与 owner-bound 托管任务 worktree。受支持的 STDIO/HTTP 启动路径会先验证唯一 Git 可执行文件并完成 Gate R 恢复,之后才接受 transport 连接。
518
+
519
+ ```powershell
520
+ $env:CODEXGPT_TOOL_CONTRACT_VERSION = "4"
521
+ $env:CODEXGPT_FILE_TRANSACTIONS = "atomic"
522
+ $env:CODEXGPT_AUDIT_MODE = "required"
523
+ $env:CODEXGPT_POLICY_ENGINE = "enforce"
524
+ $env:CODEXGPT_TOOL_MODE = "full"
525
+ $env:CODEXGPT_PERMISSION_PROFILE = "trusted-local" # 必须只授予所需 V4 Git/worktree scopes
526
+ $env:CODEXGPT_GIT_MODE = "local" # 设为 "read" 会禁用全部 Git mutation
527
+ $env:CODEXGPT_GIT_INTEGRATIONS = "off"
528
+ $env:CODEXGPT_TASK_WORKTREE_ROOT = "D:\CodexGPTTasks"
529
+ codexgpt start --root D:\Dev\your-repo --write workspace --bash off
530
+ ```
531
+
532
+ 安全 Git capsule 固定可执行文件身份、参数、环境、prompt、网络/lazy fetch 与 repository integration。它仍以当前 Windows 用户权限运行,是执行策略边界,不是操作系统 sandbox。CodexGPT lock 只协调 CodexGPT 自己的操作;外部 Git 进程仍可能制造竞态,此时系统会失败关闭或要求人工恢复。
533
+
534
+ 创建任务的第一次调用只返回不可变审查,不创建 branch、管理目录或任务根。通过本机一次性审批后的重试才会创建生成的 `codex/*` branch,并把精确本地 Git blob 原始物化到配置的托管根。任务 workspace handle 仅在当前 session 有效;owner-bound 任务记录、branch、commit、私有 stash 与 audit 可以跨重启保留。`remove_task_worktree` 只删除经过证明的干净 checkout 及其精确 CodexGPT registration,保留 branch、commit 和私有 stash。
535
+
536
+ Merge prepare 不更新 live target。fast-forward prepare 无副作用;divergent merge 先在 quarantine 内计算并完整扫描,再要求一次与 candidate 绑定的新本机审批,之后才提升 immutable object 和一个应用私有 candidate ref。Execute 会重新验证 plan、task/target/candidate OID、干净 checkout 或两次证明未 checkout 的 target、normalization 事实与一次性审批,再执行 file/index/ref CAS。候选检查通过不代表稍后的 live-target execute 必然成功。
537
+
538
+ 受支持默认值是 `CODEXGPT_GIT_INTEGRATIONS=off`:不会执行 hook、filter、signing program、merge helper、fsmonitor、editor、pager、credential helper 或 remote command。需要这些程序的仓库会返回 integration/normalization 错误,不会静默切换到 ambient execution。V4 类型化工具不提供 remote、credential、force、branch delete、reset、clean、GC、共享 stash stack 或调用者自选任意 Git command。
539
+
540
+ 只有同时显式设置 `CODEXGPT_GIT_INTEGRATIONS=approved_full_access`、本地 Git mutation mode 和 `full_access` execution profile,才能选择 Gate X。每次新鲜且精确的 R3 批准会绑定 repository/worktree、Git 可执行文件、已发现的 integration 身份、语义状态、tool 和 canonical action。运行时随后只允许四类固定类型化 builder:私有 index stage、shadow Git dir commit、quarantine 内 object-only merge,以及写入私有目标的 checkout。调用方不能传入 Git command、subcommand、参数向量、remote/credential/force 动作或 config mutation。其子进程仍具有当前用户的 ambient `full_access`;批准卡和公开结果都会明确显示不存在 filesystem、credential、registry、network 或 broker isolation。
541
+
542
+ 把配置回滚到 V3 只会隐藏 V4 工具,不会删除持久任务、`codex/*` branch、私有 stash、candidate recovery state 或 audit。删除状态前应使用同版本 binary 的 cleanup/recovery 路径。
543
+
544
+ ## 可信代码 Windows 执行(Contract V3)
545
+
546
+ Contract V3 需要显式启用,精确包含 39 个工具:继承 V2 中除 `bash` 外的工具,再加入 `open_full_access_workspace`、`run_command`、`start_process` 和六个类型化进程管理工具。它要求 atomic transaction、durable audit、Policy Kernel `enforce`、稳定会话身份和本机审批 runtime。
547
+
548
+ 在 Windows PowerShell 中,可按下面的最小配置为可信仓库启用:
549
+
550
+ ```powershell
551
+ $env:CODEXGPT_FILE_TRANSACTIONS = "atomic"
552
+ $env:CODEXGPT_AUDIT_MODE = "required"
553
+ $env:CODEXGPT_POLICY_ENGINE = "enforce"
554
+ $env:CODEXGPT_TOOL_CONTRACT_VERSION = "3"
555
+ $env:CODEXGPT_TOOL_MODE = "full"
556
+ $env:CODEXGPT_PERMISSION_PROFILE = "trusted-local"
557
+ $env:CODEXGPT_EXECUTION_PROFILE = "full_access"
558
+ $env:CODEXGPT_LOCAL_FILE_ACCESS = "confirmed_roots" # 可选
559
+ codexgpt start --root D:\Dev\your-repo --write workspace --bash off
560
+ ```
561
+
562
+ 启动前创建 `%USERPROFILE%\.codexgpt\permissions\trusted-local.json`。下面的 profile 明确接受当前 Windows 用户权限;请把 root 替换成你实际信任的精确目录:
563
+
564
+ ```json
565
+ {
566
+ "schemaVersion": 3,
567
+ "id": "trusted-local",
568
+ "description": "Trusted repositories on this Windows account",
569
+ "workspaceRoots": ["D:\\Dev\\your-repo"],
570
+ "shell": { "mode": "execute", "requireSandbox": false },
571
+ "process": { "manage": true, "persistent": true, "requireSandbox": false },
572
+ "network": {
573
+ "enabled": true,
574
+ "rules": [],
575
+ "allowLoopback": true,
576
+ "allowPrivate": true,
577
+ "allowLinkLocal": true,
578
+ "requireEnforcement": false
579
+ },
580
+ "fullAccess": {
581
+ "ambientFilesystem": true,
582
+ "ambientCredentials": true,
583
+ "ambientRegistry": true,
584
+ "unrestrictedNetwork": true,
585
+ "requireBlockedPathEnforcement": false,
586
+ "requireCredentialIsolation": false,
587
+ "requireRegistryIsolation": false,
588
+ "requireDeviceIsolation": false,
589
+ "requireNetworkEnforcement": false,
590
+ "requireSandbox": false
591
+ }
592
+ }
593
+ ```
594
+
595
+ ChatGPT 请求 V3 R3 操作时,CodexGPT 会返回 approval ID 和本机 server ID。你需要在另一个本机终端中检查并批准,然后让 ChatGPT 重试完全相同的 tool call:
596
+
597
+ ```powershell
598
+ codexgpt approvals list --server <server_id>
599
+ codexgpt approvals approve <approval_id> --server <server_id>
600
+ # 或:codexgpt approvals deny <approval_id> --server <server_id>
601
+ ```
602
+
603
+ 即使远程客户端不可用,持久进程仍可在本机列出和终止:
604
+
605
+ ```powershell
606
+ codexgpt processes list --server <server_id>
607
+ codexgpt processes terminate <process_id> --server <server_id>
608
+ ```
609
+
610
+ `full_access` 只适用于你信任的代码。进程拥有当前 Windows 用户的环境权限,**不会**隔离文件、凭据、registry、设备、COM/WMI/service broker 或网络。Job Object 只控制实际加入 Job 的进程;ConPTY 只提供终端输入输出;输出脱敏只识别已知模式,不是 DLP。保留的 `workspace` execution profile 当前不可用,也绝不会自动回退到 `full_access`。
611
+
612
+ ## 工作区会话
613
+
614
+ `workspace_id` 是只属于一个 MCP Server 会话的随机不透明句柄,不再由仓库路径哈希推导。同一活动会话重复打开同一 root 会复用本会话句柄;另一个 HTTP transport session 或 STDIO Server 进程会获得不同句柄,也不能使用或列出前一个会话的工作区。
615
+
616
+ 调用 `close_workspace` 可以立即使句柄失效。空闲句柄按 `CODEXGPT_WORKSPACE_TTL_MS` 过期;未设置时跟随 `CODEXGPT_HTTP_SESSION_TTL_MS`,通常为 30 分钟,成功使用会刷新空闲期限。
617
+
618
+ 为保留一个兼容周期,省略 `workspace_id` 的工具仍只会解析当前会话自己的默认 root,不会恢复跨会话共享。
619
+
620
+ ## 安全边界
621
+
622
+ CodexGPT 是本地开发桥,不是操作系统级沙箱。
623
+
624
+ 默认安全行为:
625
+
626
+ - 公网 tunnel 默认需要私有 CodexGPT token。
627
+ - 受支持的公开 CLI 默认使用个人 ChatGPT query-token 兼容流程;只有能主动发送 Bearer header 的高级兼容客户端才应显式设置 `CODEXGPT_ALLOW_QUERY_TOKEN=0`。
628
+ - 写入限制在配置的工作区 root 内。
629
+ - 常见敏感路径会被拒绝:`.env`、私钥、`.git`、`node_modules`、生成目录、缓存目录。
630
+ - symlink 逃逸会被阻止。
631
+ - safe bash 只允许常见检查、搜索、git、lint、test、typecheck、build 等命令。
632
+ - Bash 默认使用收窄后的子进程环境,不复制任意宿主变量。Windows 下会从 `USERPROFILE` 派生 `APPDATA`、`LOCALAPPDATA` 和 `GH_CONFIG_DIR`,让 GitHub CLI 等工具复用配置和系统 keyring,但不会复制 `GH_TOKEN` 或无关 API 变量。
633
+ - `CODEXGPT_INHERIT_ENV=1` 会改为继承完整宿主环境,只应在受信任的本地仓库中使用。
634
+ - Contract V3 默认 execution `off`;只有显式 V3 Permission Profile 和本机一次性审批才能启用 `full_access`。保留的 `workspace` sandbox profile 当前不可用。
635
+ - `codexgpt start --no-bash` 会完全关闭 ChatGPT 可调用的 bash 工具。
636
+ - `execute-handoff` 和 `watch-handoff` 是本地 CLI 命令,不是远程 MCP 工具。
637
+
638
+ 只有在你信任当前仓库和命令时,才考虑更宽的权限,例如 full bash、自定义执行器、额外 allow root。
639
+
640
+ ### Codex 会话边界
641
+
642
+ CodexGPT 不能绑定、读取或复用某一个 Codex App 会话 id。MCP 里的 session id 只是 ChatGPT 和 CodexGPT HTTP 服务器之间的传输会话,不代表 Codex 里的某个聊天或终端会话。
643
+
644
+ `bash` 工具属于你启动的 CodexGPT 本地服务器进程,并在配置的 workspace root 下运行。想并行处理另一个任务时,请为另一个仓库、端口或 tunnel profile 启动单独的 CodexGPT;不要把它理解成“远程控制当前 Codex 会话”。
645
+
646
+ 如果要减少误触发,可以给这个本地 CodexGPT 进程设置 bash session guard:
647
+
648
+ ```bash
649
+ codexgpt start --bash-session main --require-bash-session
650
+ ```
651
+
652
+ 这不是 Codex App 聊天会话 id,而是 CodexGPT 本地 bash 工具的显式匹配标签。
653
+
654
+ bash 结果默认使用紧凑 transcript,避免 ChatGPT 对话里突然铺开大段 stdout/stderr。完整 stdout/stderr 仍在结构化工具数据里,CodexGPT 卡片里的输出预览默认折叠。需要旧行为时可以显式打开:
655
+
656
+ ```bash
657
+ codexgpt start --bash-transcript full
658
+ ```
659
+
660
+ CodexGPT 也可以在 full tools 下显式开启只读的本地 Codex 会话列表:
661
+
662
+ ```bash
663
+ codexgpt start --tool-mode full --codex-sessions metadata
664
+ codexgpt start --tool-mode full --codex-sessions read
665
+ ```
666
+
667
+ `metadata` 会增加 `codex_sessions` 工具,从 `~/.codex/sessions` 和 `~/.codex/archived_sessions` 读取本地 JSONL 历史,列出 session id、标题、cwd、来源文件和 `codex resume <session-id>` 命令。`read` 还会增加 `read_codex_session`,用于有限长度的 transcript 读取。它类似本地 session manager 扫描 Codex 历史文件,但仍然不会附加到正在运行的 Codex App 聊天,也不会在那个会话里执行命令或绕过产品限制。
668
+
669
+ 如果 Codex 历史不在默认位置,可以用 `--codex-dir <dir>`。
670
+
671
+ 如果只想让 ChatGPT 规划、由你本地决定是否执行:
672
+
673
+ ```bash
674
+ codexgpt start --mode handoff --no-bash
675
+ ```
676
+
677
+ ## 常用命令
678
+
679
+ ```bash
680
+ codexgpt setup
681
+ codexgpt start
682
+ codexgpt doctor
683
+ codexgpt settings
684
+ codexgpt settings list
685
+ codexgpt settings set --tunnel ngrok --hostname your-name.ngrok-free.dev
686
+ codexgpt settings delete --yes
687
+ codexgpt pro-bundle --copy
688
+ codexgpt execute-handoff --agent opencode --model provider/model --dry-run
689
+ codexgpt watch-handoff --agent opencode --model provider/model --yes
690
+ ```
691
+
692
+ 终端控制键:
693
+
694
+ ```text
695
+ Enter 打开 ChatGPT connector 设置
696
+ c 再次复制 Server URL
697
+ u 显式显示秘密 Server URL
698
+ o 打开本地 admin dashboard
699
+ h 显示帮助
700
+ q 停止 CodexGPT
701
+ ```
702
+
703
+ 本地 admin dashboard 是带 token 保护的 setup/settings 页面。它会显示当前 workspace、local MCP endpoint、安全模式、安装/启动命令、ChatGPT 连接步骤、saved profile 设置和 allowed roots。
704
+
705
+ 页面也提供 GitHub、npm、docs 链接,以及 global install、guided setup、daily start、source checkout setup 和高级重启命令的复制按钮。它能修改下一次启动使用的 saved profile:tunnel provider、public hostname、port、mode、bash mode、transcript、Codex session 模式、write mode、tool mode、widget origin 和 tunnel config 路径。修改后需要重新运行 `codexgpt start` 才会生效。
706
+
707
+ 浏览器 admin 页面只负责 setup/settings/status 和 MCP endpoint;不能切换 ChatGPT 账号,不能直接保存原始 Cloudflare tunnel token,也不能把 CodexGPT 作为后台服务开关。Cloudflare dashboard-managed tunnel 请把 token 放在本地文件里,再填写 Cloudflare token file。
708
+
709
+ ## FAQ
710
+
711
+ 中文常见问题见 [FAQ_ZH.md](FAQ_ZH.md)。
712
+
713
+ 核心结论:
714
+
715
+ - 需要能访问 Apps / Developer Mode 的 ChatGPT 账号。
716
+ - 可用性以当前 Apps / Developer Mode 或连接管理入口为准,并受账号、工作区策略和 rollout 影响。
717
+ - CodexGPT 不绕过任何速率限制。
718
+ - 某些 Pro / planning 模型界面不能直接连接 MCP 工具,使用 `pro-bundle` 作为上下文回退。
719
+ - quick tunnel 每次重启 URL 会变。
720
+ - 想每天同一个 URL,用 ngrok free dev domain 或 Cloudflare named tunnel。
721
+
722
+ ## 开发
723
+
724
+ 测试和本地任务应使用带清理生命周期的正式入口:
725
+
726
+ ```bash
727
+ npm run test:focused -- test/example.test.mjs
728
+ npm run task:run -- node scripts/example.mjs
729
+ npm run task:runner -- start --kind example -- node scripts/example.mjs
730
+ npm run task:cleanup
731
+ ```
732
+
733
+ 这些入口会把 `TEMP`、`TMP`、`TMPDIR` 定向到带所有权标记的 CodexGPT 临时目录,并在任务成功、失败或可处理的中断后删除完整目录树。detached runner 默认保留按完成时间排序的前 20 个终态 run,并删除超过 14 天的终态证据;可用 `--retention-count` 和 `--retention-days` 调整。`task:cleanup` 只删除具有有效 marker、路径/身份校验通过且 owner 已失效的 `codexgpt-owned-v1-*` 目录;校验或删除不完整时返回非零。它不会删除未标记的其他程序临时文件、托管 task worktree、candidate、recovery state、凭据或受管 Node toolchain。Windows 强制终止无法执行 JavaScript `finally`,这类残留由下一次正式任务或 `task:cleanup` 精确回收。
734
+
735
+ ## 开源与贡献
736
+
737
+ 项目地址:[github.com/chatGPT-10/codexgpt](https://github.com/chatGPT-10/codexgpt)
738
+
739
+ 欢迎提 issue、补文档、补平台兼容性、补测试。提交 PR 前请至少运行:
740
+
741
+ ```bash
742
+ npm run build
743
+ npm run smoke
744
+ npm audit --omit=dev
745
+ ```
746
+
747
+ 如果 CodexGPT 对你有用,请在 GitHub 点星。这样其他使用 ChatGPT、Codex、OpenCode、Pi 和 MCP 的开发者更容易找到它。