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
@@ -0,0 +1,466 @@
1
+ import { AuthConfigurationError } from "../auth/errors.js";
2
+ import { riskLimits } from "../policy/approval.js";
3
+ import { ApprovalQueueError } from "../policy/pendingApprovals.js";
4
+ import { localControlRequestV3Schema, localControlResponseV3Schema, localServerIdSchema } from "./schemas.js";
5
+ function isOAuthAuditUnavailable(error) {
6
+ return error instanceof AuthConfigurationError && error.code === "OAUTH_AUDIT_FAILURE";
7
+ }
8
+ function delay(milliseconds) {
9
+ return new Promise((resolve) => {
10
+ const timer = setTimeout(resolve, milliseconds);
11
+ timer.unref?.();
12
+ });
13
+ }
14
+ function safeApproval(record, display) {
15
+ return {
16
+ approvalId: record.approvalId,
17
+ state: record.state,
18
+ riskClass: record.facts.riskClass,
19
+ createdAt: record.createdAt,
20
+ expiresAt: record.expiresAt,
21
+ grantId: record.grantId,
22
+ reservationId: record.reservationId,
23
+ summary: {
24
+ ...structuredClone(display ?? record.summary),
25
+ revealArguments: [...((display ?? record.summary).revealArguments ?? [])]
26
+ }
27
+ };
28
+ }
29
+ function contextFor(record, grantRevision, receivedAt) {
30
+ const local = record.facts.transportKind === "stdio";
31
+ return {
32
+ schemaVersion: 1,
33
+ requestId: `request_${record.approvalId.slice("approval_".length)}`,
34
+ transportKind: local ? "stdio" : "streamable_http",
35
+ transportSessionId: record.facts.transportSessionId,
36
+ identity: {
37
+ schemaVersion: 1,
38
+ kind: local ? "local_process" : record.facts.identitySubject ? "oauth_subject" : "shared_secret_bearer",
39
+ authenticationMode: local ? "stdio" : record.facts.identitySubject ? "oauth2" : "bearer",
40
+ credentialRef: record.facts.credentialRef,
41
+ subject: record.facts.identitySubject,
42
+ scopes: [],
43
+ assuranceLevel: local ? "local" : record.facts.identitySubject ? "strong" : "shared_secret"
44
+ },
45
+ workspaceId: record.facts.workspaceId,
46
+ runtimeProfileId: "runtime-v3",
47
+ permissionProfileId: "approval-v3",
48
+ policyRevision: record.facts.policyRevision,
49
+ sessionGrantRevision: grantRevision,
50
+ receivedAt
51
+ };
52
+ }
53
+ export function escapeTerminalText(value, maximum = 160) {
54
+ let output = "";
55
+ for (const character of value.normalize("NFC")) {
56
+ const code = character.codePointAt(0);
57
+ const printableAscii = code >= 0x20 && code <= 0x7e;
58
+ const safe = printableAscii && character !== "\\";
59
+ const encoded = safe ? character : `\\u{${code.toString(16).toUpperCase().padStart(4, "0")}}`;
60
+ if (output.length + encoded.length > maximum) {
61
+ output += "...";
62
+ break;
63
+ }
64
+ output += encoded;
65
+ }
66
+ return output;
67
+ }
68
+ export function renderApprovalSummary(record) {
69
+ const lines = [
70
+ `Approval: ${escapeTerminalText(record.approvalId)}`,
71
+ `State: ${escapeTerminalText(record.state)}`,
72
+ `Backend: ${escapeTerminalText(record.summary.backend)}`,
73
+ `Action: ${escapeTerminalText(record.summary.actionKind)}`,
74
+ `Arguments: ${record.summary.argumentCount}`,
75
+ `Scope: ${escapeTerminalText(record.summary.logicalScope)}`,
76
+ `Identity: ${escapeTerminalText(record.summary.identityLabel)}`,
77
+ `Authority: ${escapeTerminalText(record.summary.authoritySummary)}`,
78
+ `Risk: ${record.facts.riskClass}`,
79
+ `Expires: ${record.expiresAt}`,
80
+ `Digest: ${record.summary.digestPrefix}`
81
+ ];
82
+ return lines.join("\n");
83
+ }
84
+ export function renderLocalApprovalEntry(record, options = {}) {
85
+ const lines = [
86
+ `Approval: ${escapeTerminalText(record.approvalId)}`,
87
+ `State: ${escapeTerminalText(record.state)}`,
88
+ `Backend: ${escapeTerminalText(record.summary.backend)}`,
89
+ `Action: ${escapeTerminalText(record.summary.actionKind)}`,
90
+ `Arguments: ${record.summary.argumentCount}`,
91
+ `Scope: ${escapeTerminalText(record.summary.logicalScope)}`,
92
+ `Identity: ${escapeTerminalText(record.summary.identityLabel)}`,
93
+ `Authority: ${escapeTerminalText(record.summary.authoritySummary)}`,
94
+ `Risk: ${record.riskClass}`,
95
+ `Expires: ${record.expiresAt}`,
96
+ `Digest: ${record.summary.digestPrefix}`
97
+ ];
98
+ if (options.reveal) {
99
+ for (let index = 0; index < record.summary.revealArguments.length; index += 1) {
100
+ lines.push(`Arg ${index + 1}: ${escapeTerminalText(record.summary.revealArguments[index], 240)}`);
101
+ }
102
+ }
103
+ return lines.join("\n");
104
+ }
105
+ export class LocalApprovalServer {
106
+ serverId;
107
+ #approvals;
108
+ #grants;
109
+ #processes;
110
+ #now;
111
+ #prepareApproval;
112
+ #displayApproval;
113
+ #oauthAdminBootstrap;
114
+ #oauthBackups;
115
+ #oauthSigningKeys;
116
+ #oauthAuthorizations;
117
+ #oauthClients;
118
+ #oauthGrants;
119
+ #mutationTail = Promise.resolve();
120
+ constructor(options) {
121
+ this.serverId = localServerIdSchema.parse(options.serverId);
122
+ this.#approvals = options.approvals;
123
+ this.#grants = options.grants;
124
+ this.#processes = options.processes;
125
+ this.#now = options.now ?? Date.now;
126
+ this.#prepareApproval = options.prepareApproval;
127
+ this.#displayApproval = options.displayApproval;
128
+ this.#oauthAdminBootstrap = options.oauthAdminBootstrap;
129
+ this.#oauthBackups = options.oauthBackups;
130
+ this.#oauthSigningKeys = options.oauthSigningKeys;
131
+ this.#oauthAuthorizations = options.oauthAuthorizations;
132
+ this.#oauthClients = options.oauthClients;
133
+ this.#oauthGrants = options.oauthGrants;
134
+ }
135
+ setApprovalPreparation(callback, display) {
136
+ this.#prepareApproval = callback;
137
+ this.#displayApproval = display;
138
+ }
139
+ setProcessControl(processes) {
140
+ this.#processes = processes;
141
+ }
142
+ setOAuthAdminBootstrapControl(control) {
143
+ this.#oauthAdminBootstrap = control;
144
+ }
145
+ setOAuthBackupControl(control) {
146
+ this.#oauthBackups = control;
147
+ }
148
+ setOAuthSigningKeyControl(control) {
149
+ this.#oauthSigningKeys = control;
150
+ }
151
+ setOAuthAuthorizationControl(control) {
152
+ this.#oauthAuthorizations = control;
153
+ }
154
+ setOAuthClientControl(control) {
155
+ this.#oauthClients = control;
156
+ }
157
+ setOAuthGrantControl(control) {
158
+ this.#oauthGrants = control;
159
+ }
160
+ async handle(raw) {
161
+ const request = localControlRequestV3Schema.parse(raw);
162
+ if (request.serverId !== this.serverId)
163
+ throw new Error("CONTROL_SERVER_MISMATCH");
164
+ switch (request.operation) {
165
+ case "approvals.list":
166
+ await this.#approvals.expire(new Date(this.#now()).toISOString());
167
+ await this.#preparePendingApprovals();
168
+ return this.#response("CONTROL_OK", true, false);
169
+ case "approvals.watch":
170
+ return this.#watch(request);
171
+ case "approvals.approve":
172
+ return this.#mutate(() => this.#approve(request.approvalId));
173
+ case "approvals.deny":
174
+ return this.#mutate(() => this.#deny(request.approvalId));
175
+ case "processes.list":
176
+ return this.#processResponse("CONTROL_OK", false, await this.#processes?.list() ?? []);
177
+ case "processes.terminate": {
178
+ const changed = await this.#processes?.terminate(request.processId) ?? false;
179
+ return this.#processResponse(changed ? "PROCESS_TERMINATED" : "PROCESS_NOT_FOUND", changed, await this.#processes?.list() ?? []);
180
+ }
181
+ case "oauth.admin.bootstrap": {
182
+ const oauthAdminBootstrapUrl = await this.#oauthAdminBootstrap?.issue();
183
+ if (!oauthAdminBootstrapUrl)
184
+ return this.#oauthAdminBootstrapResponse("OAUTH_ADMIN_UNAVAILABLE", false, undefined);
185
+ return this.#oauthAdminBootstrapResponse("OAUTH_ADMIN_BOOTSTRAP_ISSUED", true, oauthAdminBootstrapUrl);
186
+ }
187
+ case "oauth.authorizations.list":
188
+ return this.#oauthAuthorizationResponse("CONTROL_OK", true, false);
189
+ case "oauth.authorizations.approve":
190
+ return this.#mutate(async () => {
191
+ try {
192
+ const changed = await this.#oauthAuthorizations?.approve(request.pendingId) ?? false;
193
+ return this.#oauthAuthorizationResponse(changed ? "OAUTH_AUTHORIZATION_APPROVED" : "OAUTH_AUTHORIZATION_NOT_FOUND", changed, changed);
194
+ }
195
+ catch (error) {
196
+ if (isOAuthAuditUnavailable(error))
197
+ return this.#oauthAuthorizationResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
198
+ throw error;
199
+ }
200
+ });
201
+ case "oauth.authorizations.deny":
202
+ return this.#mutate(async () => {
203
+ try {
204
+ const changed = await this.#oauthAuthorizations?.deny(request.pendingId) ?? false;
205
+ return this.#oauthAuthorizationResponse(changed ? "OAUTH_AUTHORIZATION_DENIED" : "OAUTH_AUTHORIZATION_NOT_FOUND", changed, changed);
206
+ }
207
+ catch (error) {
208
+ if (isOAuthAuditUnavailable(error))
209
+ return this.#oauthAuthorizationResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
210
+ throw error;
211
+ }
212
+ });
213
+ case "oauth.clients.list":
214
+ return this.#oauthClientResponse("CONTROL_OK", true, false);
215
+ case "oauth.clients.revoke":
216
+ return this.#mutate(async () => {
217
+ try {
218
+ await this.#oauthBackups?.create();
219
+ const changed = await this.#oauthClients?.revoke(request.clientId) ?? false;
220
+ return this.#oauthClientResponse(changed ? "OAUTH_CLIENT_REVOKED" : "OAUTH_CLIENT_NOT_FOUND", changed, changed);
221
+ }
222
+ catch (error) {
223
+ if (isOAuthAuditUnavailable(error))
224
+ return this.#oauthClientResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
225
+ throw error;
226
+ }
227
+ });
228
+ case "oauth.clients.prune_unapproved":
229
+ return this.#mutate(async () => {
230
+ try {
231
+ await this.#oauthBackups?.create();
232
+ const count = await this.#oauthClients?.pruneUnapproved() ?? 0;
233
+ return this.#oauthClientResponse(count > 0 ? "OAUTH_UNAPPROVED_CLIENTS_PRUNED" : "OAUTH_CLIENT_NOT_FOUND", true, count > 0);
234
+ }
235
+ catch (error) {
236
+ if (isOAuthAuditUnavailable(error))
237
+ return this.#oauthClientResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
238
+ throw error;
239
+ }
240
+ });
241
+ case "oauth.signing.rotate":
242
+ return this.#mutate(async () => {
243
+ try {
244
+ if (!this.#oauthSigningKeys)
245
+ return this.#oauthGrantResponse("OAUTH_SIGNING_CONTROL_UNAVAILABLE", false, false);
246
+ await this.#oauthBackups?.create();
247
+ if (request.revokeAll)
248
+ await this.#oauthGrants?.revokeOwner();
249
+ await this.#oauthSigningKeys.rotate({ revokeAll: request.revokeAll });
250
+ return this.#oauthGrantResponse(request.revokeAll ? "OAUTH_SIGNING_KEY_ROTATED_AND_GRANTS_REVOKED" : "OAUTH_SIGNING_KEY_ROTATED", true, true);
251
+ }
252
+ catch (error) {
253
+ if (isOAuthAuditUnavailable(error))
254
+ return this.#oauthGrantResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
255
+ throw error;
256
+ }
257
+ });
258
+ case "oauth.grants.list":
259
+ return this.#oauthGrantResponse("CONTROL_OK", true, false);
260
+ case "oauth.grants.revoke":
261
+ return this.#mutate(async () => {
262
+ try {
263
+ await this.#oauthBackups?.create();
264
+ const changed = await this.#oauthGrants?.revoke(request.grantId) ?? false;
265
+ return this.#oauthGrantResponse(changed ? "OAUTH_GRANT_REVOKED" : "OAUTH_GRANT_NOT_FOUND", changed, changed);
266
+ }
267
+ catch (error) {
268
+ if (isOAuthAuditUnavailable(error))
269
+ return this.#oauthGrantResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
270
+ throw error;
271
+ }
272
+ });
273
+ case "oauth.grants.revoke_owner":
274
+ return this.#mutate(async () => {
275
+ try {
276
+ await this.#oauthBackups?.create();
277
+ const count = await this.#oauthGrants?.revokeOwner() ?? 0;
278
+ return this.#oauthGrantResponse(count > 0 ? "OAUTH_OWNER_GRANTS_REVOKED" : "OAUTH_GRANT_NOT_FOUND", true, count > 0);
279
+ }
280
+ catch (error) {
281
+ if (isOAuthAuditUnavailable(error))
282
+ return this.#oauthGrantResponse("OAUTH_AUDIT_UNAVAILABLE_RUN_CODEXGPT_DOCTOR", false, false);
283
+ throw error;
284
+ }
285
+ });
286
+ }
287
+ }
288
+ async #watch(request) {
289
+ const deadline = this.#now() + request.timeoutMs;
290
+ while (this.#sequence() <= request.afterSequence && this.#now() < deadline) {
291
+ await delay(Math.min(25, Math.max(1, deadline - this.#now())));
292
+ await this.#approvals.expire(new Date(this.#now()).toISOString());
293
+ }
294
+ const changed = this.#sequence() > request.afterSequence;
295
+ await this.#preparePendingApprovals();
296
+ return this.#response(changed ? "CONTROL_CHANGED" : "CONTROL_TIMEOUT", true, changed);
297
+ }
298
+ async #preparePendingApprovals() {
299
+ if (!this.#prepareApproval)
300
+ return;
301
+ for (const record of this.#approvals.snapshot()) {
302
+ if (record.facts.serverId !== this.serverId || record.state !== "pending")
303
+ continue;
304
+ await this.#prepareApproval(record);
305
+ }
306
+ }
307
+ async #approve(approvalId) {
308
+ await this.#approvals.expire(new Date(this.#now()).toISOString());
309
+ const current = this.#requiredApproval(approvalId);
310
+ if (current.grantId)
311
+ return this.#response("APPROVAL_GRANTED", true, false, current.grantId);
312
+ if (current.state === "denied" || current.state === "expired" || current.state === "consumed" || current.state === "burned") {
313
+ return this.#response("APPROVAL_STATE_CONFLICT", false, false);
314
+ }
315
+ const nowMs = this.#now();
316
+ await this.#prepareApproval?.(current);
317
+ await this.#approvals.prepare(approvalId, new Date(nowMs).toISOString());
318
+ const expiresMs = Math.min(Date.parse(current.expiresAt), nowMs + riskLimits(current.facts.riskClass).maxTtlMs);
319
+ if (!Number.isFinite(expiresMs) || expiresMs <= nowMs)
320
+ return this.#response("APPROVAL_EXPIRED", false, false);
321
+ const grant = this.#grants.issue({
322
+ context: contextFor(current, this.#grants.revision(), new Date(nowMs).toISOString()),
323
+ operation: current.facts.operation,
324
+ resourceFingerprint: current.facts.resourceFingerprint,
325
+ inputDigest: current.facts.inputDigest,
326
+ riskClass: current.facts.riskClass,
327
+ toolContractVersion: current.facts.toolContractVersion,
328
+ issuedAt: new Date(nowMs).toISOString(),
329
+ expiresAt: new Date(expiresMs).toISOString(),
330
+ usesRemaining: riskLimits(current.facts.riskClass).uses
331
+ });
332
+ try {
333
+ await this.#approvals.approve(approvalId, grant.grantId, new Date(nowMs).toISOString());
334
+ }
335
+ catch (error) {
336
+ this.#grants.revokeGrant(grant.grantId);
337
+ throw error;
338
+ }
339
+ return this.#response("APPROVAL_GRANTED", true, true, grant.grantId);
340
+ }
341
+ async #deny(approvalId) {
342
+ await this.#approvals.expire(new Date(this.#now()).toISOString());
343
+ const current = this.#requiredApproval(approvalId);
344
+ if (current.state === "denied")
345
+ return this.#response("APPROVAL_DENIED", true, false);
346
+ try {
347
+ await this.#approvals.deny(approvalId, new Date(this.#now()).toISOString());
348
+ return this.#response("APPROVAL_DENIED", true, true);
349
+ }
350
+ catch (error) {
351
+ if (error instanceof ApprovalQueueError && error.code === "APPROVAL_STATE_CONFLICT") {
352
+ return this.#response(error.code, false, false);
353
+ }
354
+ throw error;
355
+ }
356
+ }
357
+ #requiredApproval(approvalId) {
358
+ const record = this.#approvals.get(approvalId);
359
+ if (!record || record.facts.serverId !== this.serverId)
360
+ throw new ApprovalQueueError("APPROVAL_NOT_FOUND", "Approval was not found on this server.");
361
+ return record;
362
+ }
363
+ #sequence() {
364
+ return this.#approvals.snapshot().reduce((maximum, record) => Math.max(maximum, record.transitionSequence), 0);
365
+ }
366
+ #response(code, ok, changed, grantId = null) {
367
+ const approvals = this.#approvals.snapshot()
368
+ .filter((record) => record.facts.serverId === this.serverId)
369
+ .map((record) => safeApproval(record, this.#displayApproval?.(record)));
370
+ return localControlResponseV3Schema.parse({
371
+ schemaVersion: 3,
372
+ contractVersion: 3,
373
+ serverId: this.serverId,
374
+ ok,
375
+ code,
376
+ sequence: this.#sequence(),
377
+ approvals,
378
+ processes: [],
379
+ grantId,
380
+ changed
381
+ });
382
+ }
383
+ #processResponse(code, changed, processes) {
384
+ return localControlResponseV3Schema.parse({
385
+ schemaVersion: 3,
386
+ contractVersion: 3,
387
+ serverId: this.serverId,
388
+ ok: code !== "PROCESS_NOT_FOUND",
389
+ code,
390
+ sequence: this.#sequence(),
391
+ approvals: [],
392
+ processes,
393
+ grantId: null,
394
+ changed
395
+ });
396
+ }
397
+ #oauthAdminBootstrapResponse(code, ok, oauthAdminBootstrapUrl) {
398
+ return localControlResponseV3Schema.parse({
399
+ schemaVersion: 3,
400
+ contractVersion: 3,
401
+ serverId: this.serverId,
402
+ ok,
403
+ code,
404
+ sequence: this.#sequence(),
405
+ approvals: [],
406
+ processes: [],
407
+ ...(oauthAdminBootstrapUrl ? { oauthAdminBootstrapUrl } : {}),
408
+ grantId: null,
409
+ changed: false
410
+ });
411
+ }
412
+ async #oauthAuthorizationResponse(code, ok, changed) {
413
+ const oauthAuthorizations = await this.#oauthAuthorizations?.list() ?? [];
414
+ return localControlResponseV3Schema.parse({
415
+ schemaVersion: 3,
416
+ contractVersion: 3,
417
+ serverId: this.serverId,
418
+ ok,
419
+ code,
420
+ sequence: this.#sequence(),
421
+ approvals: [],
422
+ processes: [],
423
+ oauthAuthorizations,
424
+ grantId: null,
425
+ changed
426
+ });
427
+ }
428
+ async #oauthClientResponse(code, ok, changed) {
429
+ const oauthClients = await this.#oauthClients?.list() ?? [];
430
+ return localControlResponseV3Schema.parse({
431
+ schemaVersion: 3,
432
+ contractVersion: 3,
433
+ serverId: this.serverId,
434
+ ok,
435
+ code,
436
+ sequence: this.#sequence(),
437
+ approvals: [],
438
+ processes: [],
439
+ oauthClients,
440
+ grantId: null,
441
+ changed
442
+ });
443
+ }
444
+ async #oauthGrantResponse(code, ok, changed) {
445
+ const oauthGrants = await this.#oauthGrants?.list() ?? [];
446
+ return localControlResponseV3Schema.parse({
447
+ schemaVersion: 3,
448
+ contractVersion: 3,
449
+ serverId: this.serverId,
450
+ ok,
451
+ code,
452
+ sequence: this.#sequence(),
453
+ approvals: [],
454
+ processes: [],
455
+ oauthGrants,
456
+ grantId: null,
457
+ changed
458
+ });
459
+ }
460
+ #mutate(action) {
461
+ const result = this.#mutationTail.then(action, action);
462
+ this.#mutationTail = result.then(() => undefined, () => undefined);
463
+ return result;
464
+ }
465
+ }
466
+ //# sourceMappingURL=localApprovalServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localApprovalServer.js","sourceRoot":"","sources":["../../src/control/localApprovalServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ import { createApprovalLifecycleSinkV3 } from "../audit/lifecycleV3.js";
2
+ import { SessionGrantStore } from "../policy/approval.js";
3
+ import { PendingApprovalStore } from "../policy/pendingApprovals.js";
4
+ import { LocalApprovalServer } from "./localApprovalServer.js";
5
+ import { WindowsLocalControlRuntime, localControlServerId } from "./windowsLocalControl.js";
6
+ export class LocalApprovalRuntimeV3 {
7
+ serverId;
8
+ approvals;
9
+ grants;
10
+ server;
11
+ #nativeControl = null;
12
+ #closed = false;
13
+ constructor(input) {
14
+ this.serverId = input.serverId;
15
+ this.approvals = input.approvals;
16
+ this.grants = input.grants;
17
+ this.server = input.server;
18
+ }
19
+ static async start(options) {
20
+ const runtime = LocalApprovalRuntimeV3.create({
21
+ ...options,
22
+ startNativeControl: false
23
+ });
24
+ if (options.startNativeControl !== false) {
25
+ await runtime.activateNativeControl(options.stateBaseRoot);
26
+ }
27
+ return runtime;
28
+ }
29
+ static create(options) {
30
+ const serverId = localControlServerId();
31
+ const approvals = new PendingApprovalStore({
32
+ ...options.pendingStoreOptions,
33
+ now: options.now,
34
+ lifecycleSink: createApprovalLifecycleSinkV3(options.auditStore)
35
+ });
36
+ const grants = new SessionGrantStore();
37
+ const server = new LocalApprovalServer({
38
+ serverId,
39
+ approvals,
40
+ grants,
41
+ processes: options.processes,
42
+ now: options.now
43
+ });
44
+ const runtime = new LocalApprovalRuntimeV3({ serverId, approvals, grants, server });
45
+ return runtime;
46
+ }
47
+ async activateNativeControl(stateBaseRoot) {
48
+ this.#assertOpen();
49
+ if (this.#nativeControl)
50
+ return;
51
+ this.#nativeControl = await WindowsLocalControlRuntime.start({
52
+ server: this.server,
53
+ stateBaseRoot
54
+ });
55
+ }
56
+ nativeControl() {
57
+ return this.#nativeControl;
58
+ }
59
+ setApprovalPreparation(callback, display) {
60
+ this.#assertOpen();
61
+ this.server.setApprovalPreparation(callback, display);
62
+ }
63
+ setProcessControl(processes) {
64
+ this.#assertOpen();
65
+ this.server.setProcessControl(processes);
66
+ }
67
+ setOAuthAdminBootstrapControl(control) {
68
+ this.#assertOpen();
69
+ this.server.setOAuthAdminBootstrapControl(control);
70
+ }
71
+ setOAuthBackupControl(control) {
72
+ this.#assertOpen();
73
+ this.server.setOAuthBackupControl(control);
74
+ }
75
+ setOAuthSigningKeyControl(control) {
76
+ this.#assertOpen();
77
+ this.server.setOAuthSigningKeyControl(control);
78
+ }
79
+ setOAuthAuthorizationControl(control) {
80
+ this.#assertOpen();
81
+ this.server.setOAuthAuthorizationControl(control);
82
+ }
83
+ setOAuthClientControl(control) {
84
+ this.#assertOpen();
85
+ this.server.setOAuthClientControl(control);
86
+ }
87
+ setOAuthGrantControl(control) {
88
+ this.#assertOpen();
89
+ this.server.setOAuthGrantControl(control);
90
+ }
91
+ async request(input) {
92
+ this.#assertOpen();
93
+ if (input.facts.serverId !== this.serverId)
94
+ throw new Error("CONTROL_SERVER_MISMATCH");
95
+ return await this.approvals.request(input);
96
+ }
97
+ async reserveMatching(input) {
98
+ this.#assertOpen();
99
+ const reservation = this.grants.reserveMatching(input);
100
+ if (!reservation)
101
+ return null;
102
+ try {
103
+ const existing = this.approvals.getByGrantId(reservation.grantId);
104
+ if (existing?.state === "consumed" && existing.facts.riskClass !== "R3") {
105
+ return { reservation, approval: existing };
106
+ }
107
+ const approval = await this.approvals.markReserved(reservation.grantId, reservation.reservationId, input.now);
108
+ if (!approval)
109
+ throw new Error("APPROVAL_GRANT_STATE_MISSING");
110
+ return { reservation, approval };
111
+ }
112
+ catch (error) {
113
+ this.grants.burnReservation(reservation.reservationId);
114
+ throw error;
115
+ }
116
+ }
117
+ async commitConsume(input, at) {
118
+ this.#assertOpen();
119
+ if (input.approval.state === "consumed" && input.approval.facts.riskClass !== "R3") {
120
+ if (!this.grants.commitConsume(input.reservation.reservationId)) {
121
+ throw new Error("APPROVAL_CONSUME_STATE_MISMATCH");
122
+ }
123
+ return;
124
+ }
125
+ try {
126
+ const approval = await this.approvals.markConsumed(input.reservation.grantId, input.reservation.reservationId, at);
127
+ if (!approval || !this.grants.commitConsume(input.reservation.reservationId)) {
128
+ throw new Error("APPROVAL_CONSUME_STATE_MISMATCH");
129
+ }
130
+ }
131
+ catch (error) {
132
+ this.grants.burnReservation(input.reservation.reservationId);
133
+ this.grants.revokeGrant(input.reservation.grantId);
134
+ try {
135
+ await this.approvals.markBurned(input.reservation.grantId, input.reservation.reservationId, at, "CONSUME_FAILED");
136
+ }
137
+ catch {
138
+ // Preserve the original required-audit/consume failure.
139
+ }
140
+ throw error;
141
+ }
142
+ }
143
+ async burn(input, resultCode, at) {
144
+ this.#assertOpen();
145
+ this.grants.burnReservation(input.reservation.reservationId);
146
+ if (input.approval.state === "consumed" && input.approval.facts.riskClass !== "R3")
147
+ return;
148
+ this.grants.revokeGrant(input.reservation.grantId);
149
+ await this.approvals.markBurned(input.reservation.grantId, input.reservation.reservationId, at, resultCode);
150
+ }
151
+ async close() {
152
+ if (this.#closed)
153
+ return;
154
+ this.#closed = true;
155
+ let failure;
156
+ try {
157
+ await this.approvals.closeServer(this.serverId);
158
+ }
159
+ catch (error) {
160
+ failure = error;
161
+ }
162
+ this.grants.clear();
163
+ try {
164
+ await this.#nativeControl?.close();
165
+ }
166
+ catch (error) {
167
+ failure ??= error;
168
+ }
169
+ this.#nativeControl = null;
170
+ if (failure)
171
+ throw failure;
172
+ }
173
+ #assertOpen() {
174
+ if (this.#closed)
175
+ throw new Error("CONTROL_SERVER_CLOSED");
176
+ }
177
+ }
178
+ //# sourceMappingURL=runtime.js.map