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/dist/config.js ADDED
@@ -0,0 +1,733 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { DEFAULT_ANALYSIS_LIMITS } from "./analysis/types.js";
5
+ import { resolveGuidanceMode } from "./guidance/mode.js";
6
+ import { assertHttpAuthModeCompatibility, resolveHttpAuthMode, resolveOAuthDeploymentConfiguration, resolveOAuthRootSelection } from "./auth/configuration.js";
7
+ import { profileIdForRoot, readWorkspaceProfile } from "./profileStore.js";
8
+ export function persistedMutationContractVersion(version) {
9
+ return version === 4 || version === 5 ? 3 : version;
10
+ }
11
+ export function persistedV2ContractVersion(version) {
12
+ return version === 2 ? 2 : 3;
13
+ }
14
+ const DEFAULT_BLOCKED_GLOBS = [
15
+ ".git",
16
+ ".git/**",
17
+ "**/.git/**",
18
+ "node_modules",
19
+ "node_modules/**",
20
+ "**/node_modules/**",
21
+ ".env",
22
+ ".env/**",
23
+ ".env.*",
24
+ ".env.*/**",
25
+ "**/.env",
26
+ "**/.env/**",
27
+ "**/.env.*",
28
+ "**/.env.*/**",
29
+ "**/*.pem",
30
+ "**/*.key",
31
+ "**/id_rsa",
32
+ "**/id_rsa.*",
33
+ "**/id_ed25519",
34
+ "**/id_ed25519.*",
35
+ "**/.ssh/**",
36
+ "dist",
37
+ "dist/**",
38
+ "**/dist/**",
39
+ "build",
40
+ "build/**",
41
+ "**/build/**",
42
+ ".next",
43
+ ".next/**",
44
+ "**/.next/**",
45
+ "coverage",
46
+ "coverage/**",
47
+ "**/coverage/**",
48
+ ".cache",
49
+ ".cache/**",
50
+ "**/.cache/**"
51
+ ];
52
+ function parseArgs(argv) {
53
+ const out = {};
54
+ for (let i = 0; i < argv.length; i += 1) {
55
+ const raw = argv[i];
56
+ if (!raw.startsWith("--"))
57
+ continue;
58
+ const withoutPrefix = raw.slice(2);
59
+ const eqIndex = withoutPrefix.indexOf("=");
60
+ let key;
61
+ let value;
62
+ if (eqIndex >= 0) {
63
+ key = withoutPrefix.slice(0, eqIndex);
64
+ value = withoutPrefix.slice(eqIndex + 1);
65
+ }
66
+ else {
67
+ key = withoutPrefix;
68
+ const next = argv[i + 1];
69
+ if (next && !next.startsWith("--")) {
70
+ value = next;
71
+ i += 1;
72
+ }
73
+ else {
74
+ value = true;
75
+ }
76
+ }
77
+ if (key === "allow-root") {
78
+ const prev = out[key];
79
+ if (Array.isArray(prev))
80
+ prev.push(String(value));
81
+ else if (prev)
82
+ out[key] = [String(prev), String(value)];
83
+ else
84
+ out[key] = [String(value)];
85
+ }
86
+ else {
87
+ out[key] = value;
88
+ }
89
+ }
90
+ return out;
91
+ }
92
+ export function expandHome(input) {
93
+ if (!input || input === "~")
94
+ return os.homedir();
95
+ if (input.startsWith("~/"))
96
+ return path.join(os.homedir(), input.slice(2));
97
+ return input;
98
+ }
99
+ function splitList(value, delimiter = path.delimiter) {
100
+ if (!value)
101
+ return [];
102
+ return value
103
+ .split(delimiter)
104
+ .map((part) => part.trim())
105
+ .filter(Boolean);
106
+ }
107
+ function instructionFallbacksFrom(value) {
108
+ const names = value === undefined ? ["agents.md", ".agents.md"] : splitList(value, ",");
109
+ if (names.length > 8) {
110
+ throw new Error("CODEXGPT_INSTRUCTION_FALLBACKS accepts at most eight basenames.");
111
+ }
112
+ const seen = new Set();
113
+ for (const name of names) {
114
+ if (name !== path.basename(name) ||
115
+ name === "." ||
116
+ name === ".." ||
117
+ /[\\/:\u0000-\u001f\u007f]/.test(name) ||
118
+ name.endsWith(".") ||
119
+ name.endsWith(" ") ||
120
+ /^(?:CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(?:\..*)?$/i.test(name)) {
121
+ throw new Error("CODEXGPT_INSTRUCTION_FALLBACKS must contain safe basenames only.");
122
+ }
123
+ const key = name.toLocaleLowerCase("en-US");
124
+ if (seen.has(key)) {
125
+ throw new Error("CODEXGPT_INSTRUCTION_FALLBACKS must not contain case-insensitive duplicates.");
126
+ }
127
+ seen.add(key);
128
+ }
129
+ return names;
130
+ }
131
+ function splitRoots(value) {
132
+ return splitList(value, path.delimiter);
133
+ }
134
+ function toRealDir(input) {
135
+ const expanded = expandHome(input);
136
+ const resolved = path.resolve(expanded);
137
+ if (!fs.existsSync(resolved)) {
138
+ throw new Error(`Directory does not exist: ${resolved}`);
139
+ }
140
+ const stat = fs.statSync(resolved);
141
+ if (!stat.isDirectory()) {
142
+ throw new Error(`Not a directory: ${resolved}`);
143
+ }
144
+ return fs.realpathSync.native(resolved);
145
+ }
146
+ function toCanonicalPath(input) {
147
+ const resolved = path.resolve(expandHome(input));
148
+ return fs.existsSync(resolved) ? fs.realpathSync.native(resolved) : resolved;
149
+ }
150
+ function numberFrom(value, fallback, min, max) {
151
+ const parsed = Number(value);
152
+ if (!Number.isFinite(parsed))
153
+ return fallback;
154
+ return Math.max(min, Math.min(max, Math.floor(parsed)));
155
+ }
156
+ function bashModeFrom(value) {
157
+ if (value === "off" || value === "safe" || value === "full")
158
+ return value;
159
+ return "safe";
160
+ }
161
+ function bashTranscriptFrom(value) {
162
+ if (value === "compact" || value === "full")
163
+ return value;
164
+ return "compact";
165
+ }
166
+ function codexSessionsFrom(value) {
167
+ if (value === "metadata" || value === "read")
168
+ return value;
169
+ if (value === "1" || value === "true" || value === "yes" || value === "on")
170
+ return "metadata";
171
+ return "off";
172
+ }
173
+ function bashSessionIdFrom(value) {
174
+ const trimmed = value?.trim();
175
+ if (!trimmed)
176
+ return undefined;
177
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(trimmed)) {
178
+ throw new Error("CODEXGPT_BASH_SESSION_ID must be 1-64 characters using letters, numbers, dot, underscore, or dash, and must start with a letter or number.");
179
+ }
180
+ return trimmed;
181
+ }
182
+ function writeModeFrom(value) {
183
+ if (value === "off" || value === "handoff" || value === "workspace")
184
+ return value;
185
+ return "workspace";
186
+ }
187
+ function strictNumberFrom(name, value, fallback, min, max) {
188
+ if (value === undefined || value.trim() === "")
189
+ return fallback;
190
+ if (!/^\d+$/.test(value.trim())) {
191
+ throw new Error(`${name} must be an integer between ${min} and ${max}.`);
192
+ }
193
+ const parsed = Number(value);
194
+ if (!Number.isSafeInteger(parsed) || parsed < min || parsed > max) {
195
+ throw new Error(`${name} must be an integer between ${min} and ${max}.`);
196
+ }
197
+ return parsed;
198
+ }
199
+ function fileTransactionModeFrom(value) {
200
+ const normalized = value?.trim();
201
+ if (!normalized)
202
+ return "legacy";
203
+ if (normalized === "legacy" || normalized === "atomic")
204
+ return normalized;
205
+ throw new Error("CODEXGPT_FILE_TRANSACTIONS must be legacy or atomic.");
206
+ }
207
+ function toolContractVersionFrom(value) {
208
+ const normalized = value?.trim();
209
+ if (!normalized || normalized === "1")
210
+ return 1;
211
+ if (normalized === "2")
212
+ return 2;
213
+ if (normalized === "3")
214
+ return 3;
215
+ if (normalized === "4")
216
+ return 4;
217
+ if (normalized === "5")
218
+ return 5;
219
+ throw new Error("CODEXGPT_TOOL_CONTRACT_VERSION must be 1, 2, 3, 4, or 5.");
220
+ }
221
+ function semanticModeFrom(value) {
222
+ const normalized = value?.trim();
223
+ if (!normalized || normalized === "legacy")
224
+ return "legacy";
225
+ if (normalized === "standard")
226
+ return "standard";
227
+ throw new Error("CODEXGPT_SEMANTIC_MODE must be legacy or standard.");
228
+ }
229
+ function semanticProviderFrom(value) {
230
+ const normalized = value?.trim();
231
+ if (!normalized || normalized === "builtin")
232
+ return "builtin";
233
+ if (normalized === "none")
234
+ return "none";
235
+ throw new Error("CODEXGPT_SEMANTIC_PROVIDER must be builtin or none in Phase 7 Core.");
236
+ }
237
+ export function assertFileTransactionConfiguration(config, capabilities) {
238
+ if (config.fileTransactions === "atomic" &&
239
+ config.writeMode !== "off" &&
240
+ !capabilities.workspaceMutatorsAtomic) {
241
+ throw new Error("CODEXGPT_FILE_TRANSACTIONS=atomic requires transaction-backed workspace mutators; disable writes or use legacy when the runtime cannot provide them.");
242
+ }
243
+ }
244
+ function toolModeFrom(value) {
245
+ if (value === "minimal" || value === "standard" || value === "full")
246
+ return value;
247
+ return "standard";
248
+ }
249
+ function gitModeFrom(value) {
250
+ if (!value)
251
+ return "read";
252
+ if (value === "read" || value === "local")
253
+ return value;
254
+ throw new Error(`Invalid Git mode: ${value}`);
255
+ }
256
+ function gitIntegrationsFrom(value) {
257
+ if (!value)
258
+ return "off";
259
+ if (value === "off" || value === "approved_full_access")
260
+ return value;
261
+ throw new Error(`Invalid Git integrations mode: ${value}`);
262
+ }
263
+ function policyEngineModeFrom(value) {
264
+ const normalized = value?.trim();
265
+ if (!normalized)
266
+ return "legacy";
267
+ if (normalized === "legacy" || normalized === "shadow" || normalized === "enforce")
268
+ return normalized;
269
+ throw new Error("CODEXGPT_POLICY_ENGINE must be legacy, shadow, or enforce.");
270
+ }
271
+ function localFileAccessFrom(value) {
272
+ const normalized = value?.trim();
273
+ if (!normalized)
274
+ return "configured_roots";
275
+ if (normalized === "configured_roots" || normalized === "confirmed_roots")
276
+ return normalized;
277
+ throw new Error("CODEXGPT_LOCAL_FILE_ACCESS must be configured_roots or confirmed_roots.");
278
+ }
279
+ function executionProfileFrom(value) {
280
+ const normalized = value?.trim();
281
+ if (!normalized)
282
+ return "off";
283
+ if (normalized === "off" || normalized === "full_access" || normalized === "workspace")
284
+ return normalized;
285
+ throw new Error("CODEXGPT_EXECUTION_PROFILE must be off, full_access, or workspace.");
286
+ }
287
+ function executionDependenciesFrom(value) {
288
+ const normalized = value?.trim();
289
+ if (!normalized)
290
+ return "off";
291
+ if (normalized === "off" || normalized === "node_modules")
292
+ return normalized;
293
+ throw new Error("CODEXGPT_EXECUTION_DEPENDENCIES must be off or node_modules.");
294
+ }
295
+ export function assertToolContractConfiguration(config, capabilities) {
296
+ // Existing programmatic callers may omit the new field for one migration
297
+ // cycle. Missing remains contract V1, matching loadConfig's default.
298
+ if (config.toolContractVersion === undefined || config.toolContractVersion === 1)
299
+ return;
300
+ if (config.toolContractVersion !== 2 &&
301
+ config.toolContractVersion !== 3 &&
302
+ config.toolContractVersion !== 4 &&
303
+ config.toolContractVersion !== 5) {
304
+ throw new Error("Unsupported tool contract version.");
305
+ }
306
+ const contractLabel = `Contract V${config.toolContractVersion}`;
307
+ if (config.fileTransactions !== "atomic") {
308
+ throw new Error(`${contractLabel} requires CODEXGPT_FILE_TRANSACTIONS=atomic.`);
309
+ }
310
+ if (!capabilities.movePathsAvailable) {
311
+ throw new Error(`${contractLabel} is incomplete without the Phase 3D move_paths runtime.`);
312
+ }
313
+ if (config.auditMode === "off") {
314
+ throw new Error(`${contractLabel} requires persistent audit; CODEXGPT_AUDIT_MODE cannot be off.`);
315
+ }
316
+ if (!capabilities.durableAuditAvailable) {
317
+ throw new Error(`${contractLabel} requires an available persistent audit runtime.`);
318
+ }
319
+ if (!capabilities.stateRootAvailable) {
320
+ throw new Error(`${contractLabel} requires an available Phase 3 state root.`);
321
+ }
322
+ const exposesInheritedV3Actions = (config.toolContractVersion === 3 || config.toolContractVersion === 4 || config.toolContractVersion === 5) &&
323
+ config.connectionTest !== true &&
324
+ config.toolMode !== "minimal";
325
+ if (exposesInheritedV3Actions) {
326
+ if (config.policyEngineMode !== "enforce") {
327
+ throw new Error("Contract V3 requires Policy Kernel enforce mode.");
328
+ }
329
+ if (config.auditMode !== "auto" && config.auditMode !== "required") {
330
+ throw new Error("Contract V3 requires required durable audit semantics.");
331
+ }
332
+ if (!capabilities.stableSessionAvailable) {
333
+ throw new Error("Contract V3 requires a stable transport session and identity context.");
334
+ }
335
+ if (!capabilities.atomicStateReadersAvailable) {
336
+ throw new Error("Contract V3 requires the Phase 3 atomic mutation and persisted-state readers.");
337
+ }
338
+ if (!capabilities.contractV3MigrationAvailable) {
339
+ throw new Error("Contract V3 migration gate is not complete.");
340
+ }
341
+ }
342
+ const exposesV4Actions = (config.toolContractVersion === 4 || config.toolContractVersion === 5) &&
343
+ config.connectionTest !== true &&
344
+ config.toolMode !== "minimal";
345
+ if (exposesV4Actions) {
346
+ if (!capabilities.nativeHostIdentityAvailable) {
347
+ throw new Error("Contract V4 requires verified native host identity.");
348
+ }
349
+ if (!capabilities.localApprovalAvailable) {
350
+ throw new Error("Contract V4 requires the local approval runtime.");
351
+ }
352
+ if (!capabilities.gitCapabilityAvailable) {
353
+ throw new Error("Contract V4 requires successful Git capability evidence.");
354
+ }
355
+ if (!capabilities.contractV4MigrationAvailable) {
356
+ throw new Error("Contract V4 migration gate is not complete.");
357
+ }
358
+ }
359
+ const exposesV5Actions = config.toolContractVersion === 5 &&
360
+ config.connectionTest !== true &&
361
+ config.toolMode !== "minimal";
362
+ if (exposesV5Actions) {
363
+ if (!capabilities.semanticRuntimeAvailable) {
364
+ throw new Error("Contract V5 requires the builtin semantic runtime.");
365
+ }
366
+ if (!capabilities.contractV5MigrationAvailable) {
367
+ throw new Error("Contract V5 migration gate is not complete.");
368
+ }
369
+ }
370
+ }
371
+ function auditModeFrom(value) {
372
+ const normalized = value?.trim();
373
+ if (!normalized)
374
+ return "auto";
375
+ if (normalized === "auto" ||
376
+ normalized === "off" ||
377
+ normalized === "best_effort" ||
378
+ normalized === "required")
379
+ return normalized;
380
+ throw new Error("CODEXGPT_AUDIT_MODE must be auto, off, best_effort, or required.");
381
+ }
382
+ function riskRank(riskClass) {
383
+ return Number(riskClass.slice(1));
384
+ }
385
+ export function resolveAuditRequirement(config, riskClass, mutating) {
386
+ if (config.auditMode === "off")
387
+ return "disabled";
388
+ if (config.auditMode === "best_effort")
389
+ return "best_effort";
390
+ if (config.auditMode === "required")
391
+ return "required";
392
+ return config.policyEngineMode === "enforce" && mutating && riskRank(riskClass) >= 2
393
+ ? "required"
394
+ : "best_effort";
395
+ }
396
+ export function assertAuditConfiguration(config, capabilities) {
397
+ if (config.policyEngineMode === "enforce" && config.auditMode === "off") {
398
+ throw new Error("CODEXGPT_AUDIT_MODE cannot be off when CODEXGPT_POLICY_ENGINE=enforce.");
399
+ }
400
+ if (config.auditMode === "required" && !capabilities.durableStoreAvailable) {
401
+ throw new Error("CODEXGPT_AUDIT_MODE=required needs an available durable audit store.");
402
+ }
403
+ }
404
+ function permissionProfileIdFrom(value) {
405
+ const normalized = value?.trim();
406
+ if (!normalized)
407
+ return undefined;
408
+ if (!/^[a-z0-9][a-z0-9._-]{0,63}$/.test(normalized)) {
409
+ throw new Error("CODEXGPT_PERMISSION_PROFILE must be 1-64 lowercase characters using letters, numbers, dot, underscore, or dash.");
410
+ }
411
+ return normalized;
412
+ }
413
+ function widgetDomainFrom(value) {
414
+ const raw = value?.trim() || "https://rebel0789.github.io";
415
+ let parsed;
416
+ try {
417
+ parsed = new URL(raw);
418
+ }
419
+ catch {
420
+ throw new Error(`CODEXGPT_WIDGET_DOMAIN must be a valid origin URL, got: ${raw}`);
421
+ }
422
+ if (parsed.protocol !== "https:") {
423
+ throw new Error("CODEXGPT_WIDGET_DOMAIN must use https.");
424
+ }
425
+ if (parsed.pathname !== "/" || parsed.search || parsed.hash) {
426
+ throw new Error("CODEXGPT_WIDGET_DOMAIN must be an origin only, for example https://widgets.example.com.");
427
+ }
428
+ return parsed.origin;
429
+ }
430
+ function contextDirFrom(value) {
431
+ const raw = (value?.trim() || ".ai-bridge").replaceAll("\\", "/");
432
+ if (path.isAbsolute(raw) || path.win32.isAbsolute(raw)) {
433
+ throw new Error("CODEXGPT_CONTEXT_DIR must be a workspace-relative hidden directory, for example .ai-bridge.");
434
+ }
435
+ const normalized = path.posix.normalize(raw);
436
+ if (!normalized || normalized === "." || normalized === ".." || normalized.startsWith("../")) {
437
+ throw new Error("CODEXGPT_CONTEXT_DIR must stay inside the workspace.");
438
+ }
439
+ const parts = normalized.split("/");
440
+ if (parts.some((part) => !part || part === "." || part === "..")) {
441
+ throw new Error("CODEXGPT_CONTEXT_DIR must be a simple relative directory path.");
442
+ }
443
+ if (!parts[0].startsWith(".")) {
444
+ throw new Error("CODEXGPT_CONTEXT_DIR must start with a hidden directory such as .ai-bridge.");
445
+ }
446
+ const blocked = new Set([".git", ".ssh", ".gnupg", ".cache", "node_modules", "src", "dist", "build", ".next", "coverage"]);
447
+ if (parts.some((part) => blocked.has(part))) {
448
+ throw new Error("CODEXGPT_CONTEXT_DIR cannot point at source, dependency, build, cache, or credential directories.");
449
+ }
450
+ return normalized;
451
+ }
452
+ function boolFrom(value, fallback = false) {
453
+ if (value === undefined)
454
+ return fallback;
455
+ return ["1", "true", "yes", "y", "on"].includes(value.toLowerCase());
456
+ }
457
+ function isLoopbackHost(host) {
458
+ return host === "127.0.0.1" || host === "localhost" || host === "::1";
459
+ }
460
+ function normalizeAllowedHost(value) {
461
+ let raw = value.trim().toLowerCase();
462
+ if (!raw)
463
+ throw new Error("CODEXGPT_ALLOWED_HOSTS contains an empty host.");
464
+ if (raw.includes("://")) {
465
+ let parsed;
466
+ try {
467
+ parsed = new URL(raw);
468
+ }
469
+ catch {
470
+ throw new Error(`CODEXGPT_ALLOWED_HOSTS contains an invalid host: ${value}`);
471
+ }
472
+ raw = parsed.hostname.toLowerCase();
473
+ }
474
+ if (raw.startsWith("[") && raw.endsWith("]"))
475
+ raw = raw.slice(1, -1);
476
+ const portSeparator = raw.lastIndexOf(":");
477
+ if (portSeparator > 0 && raw.indexOf(":") === portSeparator && /^\d+$/.test(raw.slice(portSeparator + 1))) {
478
+ raw = raw.slice(0, portSeparator);
479
+ }
480
+ if (!raw || raw === "*" || /[\\/\s]/.test(raw)) {
481
+ throw new Error(`CODEXGPT_ALLOWED_HOSTS contains an invalid host: ${value}`);
482
+ }
483
+ return raw;
484
+ }
485
+ function allowedHostsFrom(value, bindHost) {
486
+ const hosts = ["127.0.0.1", "localhost", "::1", ...splitList(value, ",")];
487
+ if (bindHost !== "0.0.0.0" && bindHost !== "::")
488
+ hosts.push(bindHost);
489
+ return [...new Set(hosts.map(normalizeAllowedHost))];
490
+ }
491
+ function allowedOriginsFrom(value) {
492
+ return [...new Set(splitList(value, ",").map((origin) => {
493
+ let parsed;
494
+ try {
495
+ parsed = new URL(origin);
496
+ }
497
+ catch {
498
+ throw new Error(`CODEXGPT_ALLOWED_ORIGINS contains an invalid origin: ${origin}`);
499
+ }
500
+ if ((parsed.protocol !== "http:" && parsed.protocol !== "https:") || parsed.pathname !== "/" || parsed.search || parsed.hash) {
501
+ throw new Error(`CODEXGPT_ALLOWED_ORIGINS must contain HTTP(S) origins only: ${origin}`);
502
+ }
503
+ return parsed.origin;
504
+ }))];
505
+ }
506
+ export function loadConfig(argv = process.argv.slice(2), options = {}) {
507
+ const args = parseArgs(argv);
508
+ const rootFromArgs = typeof args.root === "string" ? args.root : undefined;
509
+ const root = rootFromArgs ?? process.env.CODEXGPT_ROOT ?? process.env.CODEBASE_BRIDGE_REPO_ROOT ?? process.cwd();
510
+ const defaultRoot = toRealDir(root);
511
+ const workspaceProfile = options.workspaceProfile ?? readWorkspaceProfile(defaultRoot);
512
+ const resolvedAuthMode = resolveHttpAuthMode({
513
+ currentProcess: process.env.CODEXGPT_AUTH_MODE,
514
+ persistedUser: options.persistedUserAuthMode,
515
+ profile: workspaceProfile.authMode
516
+ });
517
+ const allowRootArgs = Array.isArray(args["allow-root"])
518
+ ? args["allow-root"]
519
+ : typeof args["allow-root"] === "string"
520
+ ? [args["allow-root"]]
521
+ : [];
522
+ const envAllowedRoots = [
523
+ ...splitRoots(process.env.CODEXGPT_ALLOWED_ROOTS),
524
+ ...splitRoots(process.env.CODEBASE_BRIDGE_ALLOWED_ROOTS)
525
+ ];
526
+ const allowHome = process.env.CODEXGPT_ALLOW_HOME === "1" || args["allow-home"] === true;
527
+ const requestedAllowed = [defaultRoot, ...allowRootArgs, ...envAllowedRoots, ...(allowHome ? [os.homedir()] : [])];
528
+ const allowedRoots = [...new Set(requestedAllowed.map(toRealDir))];
529
+ const portArg = typeof args.port === "string" ? args.port : undefined;
530
+ const hostArg = typeof args.host === "string" ? args.host : undefined;
531
+ const bashArg = typeof args.bash === "string" ? args.bash : undefined;
532
+ const bashTranscriptArg = typeof args["bash-transcript"] === "string" ? args["bash-transcript"] : undefined;
533
+ const bashSessionArg = typeof args["bash-session"] === "string" ? args["bash-session"] : undefined;
534
+ const codexSessionsArg = typeof args["codex-sessions"] === "string" ? args["codex-sessions"] : undefined;
535
+ const codexDirArg = typeof args["codex-dir"] === "string" ? args["codex-dir"] : undefined;
536
+ const requireBashSessionArg = args["require-bash-session"] === true
537
+ ? "true"
538
+ : typeof args["require-bash-session"] === "string"
539
+ ? args["require-bash-session"]
540
+ : undefined;
541
+ const writeArg = typeof args.write === "string" ? args.write : undefined;
542
+ const fileTransactionsArg = typeof args["file-transactions"] === "string"
543
+ ? args["file-transactions"]
544
+ : undefined;
545
+ if (args["tool-contract-version"] === true) {
546
+ throw new Error("--tool-contract-version requires a value of 1, 2, 3, 4, or 5.");
547
+ }
548
+ const toolContractVersionArg = typeof args["tool-contract-version"] === "string"
549
+ ? args["tool-contract-version"]
550
+ : undefined;
551
+ const toolModeArg = typeof args["tool-mode"] === "string" ? args["tool-mode"] : undefined;
552
+ const toolMode = toolModeFrom(toolModeArg ?? process.env.CODEXGPT_TOOL_MODE);
553
+ const guidanceModeInput = process.env.CODEXGPT_GUIDANCE_MODE;
554
+ const guidanceMode = guidanceModeInput === undefined && toolMode === "minimal"
555
+ ? "legacy"
556
+ : resolveGuidanceMode(guidanceModeInput);
557
+ const semanticMode = semanticModeFrom(process.env.CODEXGPT_SEMANTIC_MODE);
558
+ const explicitToolContractVersion = toolContractVersionArg ?? process.env.CODEXGPT_TOOL_CONTRACT_VERSION;
559
+ if (semanticMode === "standard" && explicitToolContractVersion !== undefined && explicitToolContractVersion.trim() !== "5") {
560
+ throw new Error("CODEXGPT_SEMANTIC_MODE=standard contradicts an explicit tool contract other than V5.");
561
+ }
562
+ if (semanticMode === "legacy" && explicitToolContractVersion?.trim() === "5") {
563
+ throw new Error("CODEXGPT_TOOL_CONTRACT_VERSION=5 requires CODEXGPT_SEMANTIC_MODE=standard.");
564
+ }
565
+ const policyEngineArg = typeof args["policy-engine"] === "string" ? args["policy-engine"] : undefined;
566
+ const auditModeArg = typeof args["audit-mode"] === "string" ? args["audit-mode"] : undefined;
567
+ const permissionProfileArg = typeof args["permission-profile"] === "string" ? args["permission-profile"] : undefined;
568
+ const widgetDomainArg = typeof args["widget-domain"] === "string" ? args["widget-domain"] : undefined;
569
+ const toolCardsArg = args["tool-cards"] === true
570
+ ? "true"
571
+ : typeof args["tool-cards"] === "string"
572
+ ? args["tool-cards"]
573
+ : undefined;
574
+ const extraBlockedGlobs = splitList(process.env.CODEXGPT_BLOCKED_GLOBS, ",");
575
+ const host = hostArg ?? process.env.CODEXGPT_HOST ?? process.env.HOST ?? "127.0.0.1";
576
+ const authToken = process.env.CODEXGPT_HTTP_TOKEN ?? process.env.CODEBASE_BRIDGE_HTTP_TOKEN;
577
+ const allowNoToken = boolFrom(process.env.CODEXGPT_ALLOW_NO_HTTP_TOKEN, false) && isLoopbackHost(host);
578
+ const requireHttpToken = (!authToken && !allowNoToken) ||
579
+ boolFrom(process.env.CODEXGPT_REQUIRE_HTTP_TOKEN, false) ||
580
+ boolFrom(process.env.CODEXGPT_TUNNEL_MODE, false) ||
581
+ (!isLoopbackHost(host) && !allowNoToken);
582
+ const allowedHostHints = [
583
+ process.env.CODEXGPT_ALLOWED_HOSTS,
584
+ process.env.CODEXGPT_PUBLIC_HOSTNAME,
585
+ process.env.CODEXGPT_HOSTNAME,
586
+ process.env.NGROK_DOMAIN
587
+ ].filter((value) => Boolean(value));
588
+ const allowedHosts = allowedHostsFrom(allowedHostHints.join(","), host);
589
+ const allowedOrigins = allowedOriginsFrom(process.env.CODEXGPT_ALLOWED_ORIGINS);
590
+ const allowQueryToken = boolFrom(process.env.CODEXGPT_ALLOW_QUERY_TOKEN, false);
591
+ assertHttpAuthModeCompatibility({
592
+ mode: resolvedAuthMode.mode,
593
+ allowQueryToken,
594
+ allowNoHttpToken: allowNoToken,
595
+ legacyTokenPresent: Boolean(authToken)
596
+ });
597
+ if (resolvedAuthMode.mode === "oauth") {
598
+ resolveOAuthRootSelection({
599
+ explicitRoot: rootFromArgs ? defaultRoot : undefined,
600
+ currentDirectory: toRealDir(process.cwd()),
601
+ matchingProfileRoot: workspaceProfile.root,
602
+ platform: options.platform ?? process.platform
603
+ });
604
+ resolveOAuthDeploymentConfiguration({
605
+ canonicalRoot: defaultRoot,
606
+ profileId: profileIdForRoot(defaultRoot),
607
+ hostname: workspaceProfile.hostname ?? "",
608
+ issuer: workspaceProfile.oauthIssuer,
609
+ resource: workspaceProfile.oauthResource,
610
+ platform: options.platform ?? process.platform,
611
+ tunnel: workspaceProfile.tunnel ?? "",
612
+ tunnelName: workspaceProfile.tunnelName ?? "",
613
+ tunnelOwner: workspaceProfile.tunnelOwner ?? "",
614
+ publicHost: host,
615
+ publicPort: strictNumberFrom("OAuth public port", portArg ?? process.env.CODEXGPT_PORT ?? process.env.PORT ?? workspaceProfile.port, 8787, 1, 65535),
616
+ localAdminHost: "127.0.0.1",
617
+ localAdminPort: strictNumberFrom("OAuth local-admin port", workspaceProfile.localAdminPort, 8788, 1, 65535)
618
+ });
619
+ }
620
+ const bashSessionId = bashSessionIdFrom(bashSessionArg ?? process.env.CODEXGPT_BASH_SESSION_ID);
621
+ const requireBashSession = boolFrom(requireBashSessionArg ?? process.env.CODEXGPT_REQUIRE_BASH_SESSION, false);
622
+ if (requireBashSession && !bashSessionId) {
623
+ throw new Error("CODEXGPT_REQUIRE_BASH_SESSION requires CODEXGPT_BASH_SESSION_ID or --bash-session.");
624
+ }
625
+ const config = {
626
+ defaultRoot,
627
+ allowedRoots,
628
+ host,
629
+ port: numberFrom(portArg ?? process.env.CODEXGPT_PORT ?? process.env.PORT, 8787, 1, 65535),
630
+ widgetDomain: widgetDomainFrom(widgetDomainArg ?? process.env.CODEXGPT_WIDGET_DOMAIN),
631
+ authMode: resolvedAuthMode.mode,
632
+ authModeSource: resolvedAuthMode.source,
633
+ authToken,
634
+ requireHttpToken,
635
+ allowedHosts,
636
+ allowedOrigins,
637
+ allowQueryToken,
638
+ bashMode: bashModeFrom(bashArg ?? process.env.CODEXGPT_BASH_MODE),
639
+ bashTranscript: bashTranscriptFrom(bashTranscriptArg ?? process.env.CODEXGPT_BASH_TRANSCRIPT),
640
+ bashSessionId,
641
+ requireBashSession,
642
+ codexSessions: codexSessionsFrom(codexSessionsArg ?? process.env.CODEXGPT_CODEX_SESSIONS),
643
+ codexDir: toCanonicalPath(codexDirArg || process.env.CODEXGPT_CODEX_DIR || path.join(os.homedir(), ".codex")),
644
+ writeMode: writeModeFrom(writeArg ?? process.env.CODEXGPT_WRITE_MODE),
645
+ fileTransactions: fileTransactionModeFrom(fileTransactionsArg ?? process.env.CODEXGPT_FILE_TRANSACTIONS),
646
+ toolContractVersion: toolContractVersionFrom(semanticMode === "standard" ? "5" : explicitToolContractVersion),
647
+ toolMode,
648
+ policyEngineMode: policyEngineModeFrom(policyEngineArg ?? process.env.CODEXGPT_POLICY_ENGINE),
649
+ auditMode: auditModeFrom(auditModeArg ?? process.env.CODEXGPT_AUDIT_MODE),
650
+ auditRetention: {
651
+ maxAgeDays: numberFrom(process.env.CODEXGPT_AUDIT_RETENTION_DAYS, 30, 1, 365),
652
+ maxClosedBytes: numberFrom(process.env.CODEXGPT_AUDIT_RETENTION_BYTES, 100 * 1024 * 1024, 1024 * 1024, 2 * 1024 * 1024 * 1024)
653
+ },
654
+ changeSetRetention: {
655
+ maxPlaintextBytesPerChangeSet: strictNumberFrom("CODEXGPT_CHANGE_SET_MAX_PLAINTEXT_BYTES", process.env.CODEXGPT_CHANGE_SET_MAX_PLAINTEXT_BYTES, 8 * 1024 * 1024, 1024, 64 * 1024 * 1024),
656
+ maxInstallationCiphertextBytes: strictNumberFrom("CODEXGPT_CHANGE_SET_MAX_INSTALLATION_BYTES", process.env.CODEXGPT_CHANGE_SET_MAX_INSTALLATION_BYTES, 128 * 1024 * 1024, 1024 * 1024, 2 * 1024 * 1024 * 1024),
657
+ maxActivePerWorkspace: strictNumberFrom("CODEXGPT_CHANGE_SET_MAX_ACTIVE_PER_WORKSPACE", process.env.CODEXGPT_CHANGE_SET_MAX_ACTIVE_PER_WORKSPACE, 20, 1, 1000),
658
+ activeRetentionMs: strictNumberFrom("CODEXGPT_CHANGE_SET_RETENTION_MS", process.env.CODEXGPT_CHANGE_SET_RETENTION_MS, 24 * 60 * 60_000, 60_000, 30 * 24 * 60 * 60_000),
659
+ tombstoneRetentionMs: strictNumberFrom("CODEXGPT_CHANGE_SET_TOMBSTONE_RETENTION_MS", process.env.CODEXGPT_CHANGE_SET_TOMBSTONE_RETENTION_MS, 30 * 24 * 60 * 60_000, 24 * 60 * 60_000, 365 * 24 * 60 * 60_000)
660
+ },
661
+ permissionProfileId: permissionProfileIdFrom(permissionProfileArg ?? process.env.CODEXGPT_PERMISSION_PROFILE),
662
+ localFileAccess: localFileAccessFrom(process.env.CODEXGPT_LOCAL_FILE_ACCESS),
663
+ executionProfile: executionProfileFrom(process.env.CODEXGPT_EXECUTION_PROFILE),
664
+ executionDependencies: executionDependenciesFrom(process.env.CODEXGPT_EXECUTION_DEPENDENCIES),
665
+ gitMode: gitModeFrom(process.env.CODEXGPT_GIT_MODE),
666
+ gitIntegrations: gitIntegrationsFrom(process.env.CODEXGPT_GIT_INTEGRATIONS),
667
+ taskWorktreeRoot: path.resolve(process.env.CODEXGPT_TASK_WORKTREE_ROOT ??
668
+ path.join(process.env.LOCALAPPDATA ?? os.homedir(), "CodexGPT", "worktrees")),
669
+ taskWorktreeMaxCount: numberFrom(process.env.CODEXGPT_TASK_WORKTREE_MAX_COUNT, 32, 1, 128),
670
+ taskWorktreeMaxFiles: numberFrom(process.env.CODEXGPT_TASK_WORKTREE_MAX_FILES, 100_000, 1, 1_000_000),
671
+ taskWorktreeMaxBytes: numberFrom(process.env.CODEXGPT_TASK_WORKTREE_MAX_BYTES, 2 * 1024 * 1024 * 1024, 1024 * 1024, 16 * 1024 * 1024 * 1024),
672
+ inheritEnv: process.env.CODEXGPT_INHERIT_ENV === "1",
673
+ maxReadBytes: numberFrom(process.env.CODEXGPT_MAX_READ_BYTES, 250_000, 4_000, 2_000_000),
674
+ maxWriteBytes: numberFrom(process.env.CODEXGPT_MAX_WRITE_BYTES, 1_000_000, 1_000, 10_000_000),
675
+ moveMaxFileBytes: strictNumberFrom("CODEXGPT_MOVE_MAX_FILE_BYTES", process.env.CODEXGPT_MOVE_MAX_FILE_BYTES, 64 * 1024 * 1024, 1, 1024 * 1024 * 1024),
676
+ moveMaxTotalBytes: strictNumberFrom("CODEXGPT_MOVE_MAX_TOTAL_BYTES", process.env.CODEXGPT_MOVE_MAX_TOTAL_BYTES, 256 * 1024 * 1024, 1, 4 * 1024 * 1024 * 1024),
677
+ moveHashConcurrency: strictNumberFrom("CODEXGPT_MOVE_HASH_CONCURRENCY", process.env.CODEXGPT_MOVE_HASH_CONCURRENCY, 4, 1, 16),
678
+ maxOutputBytes: numberFrom(process.env.CODEXGPT_MAX_OUTPUT_BYTES, 120_000, 4_000, 2_000_000),
679
+ maxSearchResults: numberFrom(process.env.CODEXGPT_MAX_SEARCH_RESULTS, 200, 5, 2_000),
680
+ maxHttpSessions: numberFrom(process.env.CODEXGPT_MAX_HTTP_SESSIONS, 64, 1, 512),
681
+ httpSessionTtlMs: numberFrom(process.env.CODEXGPT_HTTP_SESSION_TTL_MS, 30 * 60_000, 60_000, 24 * 60 * 60_000),
682
+ workspaceTtlMs: numberFrom(process.env.CODEXGPT_WORKSPACE_TTL_MS, numberFrom(process.env.CODEXGPT_HTTP_SESSION_TTL_MS, 30 * 60_000, 60_000, 24 * 60 * 60_000), 60_000, 24 * 60 * 60_000),
683
+ blockedGlobs: [...DEFAULT_BLOCKED_GLOBS, ...extraBlockedGlobs],
684
+ contextDir: contextDirFrom(process.env.CODEXGPT_CONTEXT_DIR),
685
+ toolCards: boolFrom(toolCardsArg ?? process.env.CODEXGPT_TOOL_CARDS, false),
686
+ connectionTest: boolFrom(process.env.CODEXGPT_CONNECTION_TEST, false),
687
+ analysisEnabled: boolFrom(process.env.CODEXGPT_ANALYSIS, true),
688
+ analysisLimits: {
689
+ maxInventoryFiles: numberFrom(process.env.CODEXGPT_ANALYSIS_MAX_INVENTORY_FILES, DEFAULT_ANALYSIS_LIMITS.maxInventoryFiles, 100, 100_000),
690
+ maxAnalyzedFiles: numberFrom(process.env.CODEXGPT_ANALYSIS_MAX_ANALYZED_FILES, DEFAULT_ANALYSIS_LIMITS.maxAnalyzedFiles, 10, 50_000),
691
+ maxScannedBytes: numberFrom(process.env.CODEXGPT_ANALYSIS_MAX_SCANNED_BYTES, DEFAULT_ANALYSIS_LIMITS.maxScannedBytes, 1_000_000, 512 * 1024 * 1024),
692
+ maxSymbols: numberFrom(process.env.CODEXGPT_ANALYSIS_MAX_SYMBOLS, DEFAULT_ANALYSIS_LIMITS.maxSymbols, 100, 1_000_000),
693
+ maxRelationships: numberFrom(process.env.CODEXGPT_ANALYSIS_MAX_RELATIONSHIPS, DEFAULT_ANALYSIS_LIMITS.maxRelationships, 100, 2_000_000)
694
+ },
695
+ guidanceMode,
696
+ semanticMode,
697
+ semanticProvider: semanticMode === "standard"
698
+ ? semanticProviderFrom(process.env.CODEXGPT_SEMANTIC_PROVIDER)
699
+ : "builtin",
700
+ instructionFallbacks: instructionFallbacksFrom(process.env.CODEXGPT_INSTRUCTION_FALLBACKS),
701
+ maxInstructionTotalBytes: numberFrom(process.env.CODEXGPT_MAX_INSTRUCTION_TOTAL_BYTES, 32_768, 1_000, 200_000),
702
+ maxSkillCandidates: numberFrom(process.env.CODEXGPT_MAX_SKILL_CANDIDATES, 1_000, 1, 10_000),
703
+ maxSkillCatalogChars: numberFrom(process.env.CODEXGPT_MAX_SKILL_CATALOG_CHARS, 8_000, 1_000, 32_000)
704
+ };
705
+ if (config.toolContractVersion !== 3 &&
706
+ config.toolContractVersion !== 4 &&
707
+ config.toolContractVersion !== 5 &&
708
+ (config.localFileAccess !== "configured_roots" ||
709
+ config.executionProfile !== "off" ||
710
+ config.executionDependencies !== "off")) {
711
+ throw new Error("Contract V3 is required for confirmed roots, execution profiles, or execution dependency views.");
712
+ }
713
+ if (config.guidanceMode === "standard" && config.toolMode === "minimal") {
714
+ throw new Error("CODEXGPT_GUIDANCE_MODE=standard requires CODEXGPT_TOOL_MODE=standard or full.");
715
+ }
716
+ if (config.toolContractVersion !== 4 &&
717
+ config.toolContractVersion !== 5 &&
718
+ (config.gitMode !== "read" || config.gitIntegrations !== "off")) {
719
+ throw new Error("Contract V4 is required for local Git mutations or repository integrations.");
720
+ }
721
+ if (config.gitIntegrations === "approved_full_access" && config.gitMode !== "local") {
722
+ throw new Error("Approved Git integrations require local Git mutation mode.");
723
+ }
724
+ if (config.gitIntegrations === "approved_full_access" && config.executionProfile !== "full_access") {
725
+ throw new Error("Approved Git integrations require the explicit full_access execution profile.");
726
+ }
727
+ if (config.semanticMode === "standard" && config.toolMode === "minimal") {
728
+ throw new Error("CODEXGPT_SEMANTIC_MODE=standard requires CODEXGPT_TOOL_MODE=standard or full.");
729
+ }
730
+ assertAuditConfiguration(config, { durableStoreAvailable: true });
731
+ return config;
732
+ }
733
+ //# sourceMappingURL=config.js.map