@skaile/workspaces 6.2.0 → 6.4.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 (300) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/ai-sdk.d.ts +2 -0
  3. package/dist/ai-sdk.js +123 -0
  4. package/dist/ai-sdk.js.map +1 -0
  5. package/dist/app-sdk/index.js +1 -1
  6. package/dist/{asset-feeds-KPKCE64E.js → asset-feeds-UJSYGKCX.js} +20 -20
  7. package/dist/{asset-feeds-KPKCE64E.js.map → asset-feeds-UJSYGKCX.js.map} +1 -1
  8. package/dist/asset-manager/catalog-deployer.js +7 -7
  9. package/dist/asset-manager/index.js +12 -12
  10. package/dist/asset-manager/installer.js +8 -8
  11. package/dist/asset-manager/renderers.js +7 -7
  12. package/dist/asset-manager/src/index.d.ts +42 -15
  13. package/dist/asset-manager/src/index.d.ts.map +1 -1
  14. package/dist/asset-manager/src/install-instances.d.ts +2 -0
  15. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  16. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  17. package/dist/bridge/harnesses/claude-sdk.js +13 -12
  18. package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
  19. package/dist/bridge/harnesses/codex.js +12 -11
  20. package/dist/bridge/harnesses/codex.js.map +1 -1
  21. package/dist/bridge/harnesses/continue.js +11 -10
  22. package/dist/bridge/harnesses/continue.js.map +1 -1
  23. package/dist/bridge/harnesses/echo.js +6 -5
  24. package/dist/bridge/harnesses/echo.js.map +1 -1
  25. package/dist/bridge/harnesses/gemini.js +8 -7
  26. package/dist/bridge/harnesses/goose.js +11 -10
  27. package/dist/bridge/harnesses/goose.js.map +1 -1
  28. package/dist/bridge/harnesses/omp.js +8 -7
  29. package/dist/bridge/harnesses/omp.js.map +1 -1
  30. package/dist/bridge/harnesses/opencode.js +11 -10
  31. package/dist/bridge/harnesses/opencode.js.map +1 -1
  32. package/dist/bridge/harnesses/qwen.js +8 -7
  33. package/dist/bridge/harnesses/qwen.js.map +1 -1
  34. package/dist/bridge/index.js +18 -16
  35. package/dist/bridge/src/ai-sdk.d.ts +51 -0
  36. package/dist/bridge/src/ai-sdk.d.ts.map +1 -0
  37. package/dist/bridge/src/harness-model-check.d.ts +11 -7
  38. package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
  39. package/dist/bridge/src/index.d.ts +1 -0
  40. package/dist/bridge/src/index.d.ts.map +1 -1
  41. package/dist/bridge/src/provider-registry-load.d.ts +30 -0
  42. package/dist/bridge/src/provider-registry-load.d.ts.map +1 -0
  43. package/dist/{chunk-7DRFKAJZ.js → chunk-24D7IW5O.js} +8 -7
  44. package/dist/chunk-24D7IW5O.js.map +1 -0
  45. package/dist/{chunk-ITFCWMOY.js → chunk-2WOA3TKK.js} +12 -12
  46. package/dist/chunk-2WOA3TKK.js.map +1 -0
  47. package/dist/{chunk-QPWR3YMY.js → chunk-3ENE6ZOF.js} +4 -4
  48. package/dist/{chunk-QPWR3YMY.js.map → chunk-3ENE6ZOF.js.map} +1 -1
  49. package/dist/{chunk-ICSGNT5P.js → chunk-45KLCFQB.js} +8 -27
  50. package/dist/chunk-45KLCFQB.js.map +1 -0
  51. package/dist/{chunk-Q5RN4PWV.js → chunk-5NHBLKKU.js} +3 -3
  52. package/dist/{chunk-Q5RN4PWV.js.map → chunk-5NHBLKKU.js.map} +1 -1
  53. package/dist/{chunk-RQMIZONH.js → chunk-5T3DTK7A.js} +43 -24
  54. package/dist/chunk-5T3DTK7A.js.map +1 -0
  55. package/dist/{chunk-X37JUNEW.js → chunk-6UP2EDFN.js} +4 -313
  56. package/dist/chunk-6UP2EDFN.js.map +1 -0
  57. package/dist/{chunk-KJSC2ZD6.js → chunk-6WQGJF65.js} +18 -6
  58. package/dist/chunk-6WQGJF65.js.map +1 -0
  59. package/dist/{chunk-BOT64P3U.js → chunk-6X3GDPCB.js} +4 -3
  60. package/dist/chunk-6X3GDPCB.js.map +1 -0
  61. package/dist/{chunk-T2VBPVWZ.js → chunk-76WSWPOB.js} +15 -7
  62. package/dist/{chunk-T2VBPVWZ.js.map → chunk-76WSWPOB.js.map} +1 -1
  63. package/dist/{chunk-BRK5QZKI.js → chunk-ABVWUM2E.js} +27 -17
  64. package/dist/chunk-ABVWUM2E.js.map +1 -0
  65. package/dist/{chunk-MM4YO3EL.js → chunk-ACBL7X62.js} +3 -3
  66. package/dist/{chunk-MM4YO3EL.js.map → chunk-ACBL7X62.js.map} +1 -1
  67. package/dist/{chunk-VUJXZDCY.js → chunk-BOS7P2Y4.js} +3 -3
  68. package/dist/{chunk-VUJXZDCY.js.map → chunk-BOS7P2Y4.js.map} +1 -1
  69. package/dist/{chunk-PNUM7GUY.js → chunk-BUU2DLPC.js} +3 -3
  70. package/dist/{chunk-PNUM7GUY.js.map → chunk-BUU2DLPC.js.map} +1 -1
  71. package/dist/{chunk-BEYNH2LS.js → chunk-BX7PSWJA.js} +4 -4
  72. package/dist/{chunk-BEYNH2LS.js.map → chunk-BX7PSWJA.js.map} +1 -1
  73. package/dist/{chunk-URCJIV7T.js → chunk-C7TQARGC.js} +3 -3
  74. package/dist/{chunk-URCJIV7T.js.map → chunk-C7TQARGC.js.map} +1 -1
  75. package/dist/{chunk-E5NQRHEB.js → chunk-CK3CJSRY.js} +3 -3
  76. package/dist/{chunk-E5NQRHEB.js.map → chunk-CK3CJSRY.js.map} +1 -1
  77. package/dist/{chunk-GF5JXQIZ.js → chunk-DCJ4BION.js} +2 -2
  78. package/dist/{chunk-GF5JXQIZ.js.map → chunk-DCJ4BION.js.map} +1 -1
  79. package/dist/{chunk-5LQ62LNT.js → chunk-DF5WJC3Q.js} +4 -4
  80. package/dist/{chunk-5LQ62LNT.js.map → chunk-DF5WJC3Q.js.map} +1 -1
  81. package/dist/{chunk-QK7AG5AV.js → chunk-E237FGGX.js} +4 -4
  82. package/dist/{chunk-QK7AG5AV.js.map → chunk-E237FGGX.js.map} +1 -1
  83. package/dist/{chunk-K3R2UKG7.js → chunk-EXRQKOY6.js} +12 -12
  84. package/dist/{chunk-K3R2UKG7.js.map → chunk-EXRQKOY6.js.map} +1 -1
  85. package/dist/chunk-G63KOHFS.js +32 -0
  86. package/dist/chunk-G63KOHFS.js.map +1 -0
  87. package/dist/{chunk-6CYKTHNT.js → chunk-GBXQFJ4G.js} +8 -8
  88. package/dist/{chunk-6CYKTHNT.js.map → chunk-GBXQFJ4G.js.map} +1 -1
  89. package/dist/{chunk-6GWSDPBP.js → chunk-GTMANMBZ.js} +3 -3
  90. package/dist/{chunk-6GWSDPBP.js.map → chunk-GTMANMBZ.js.map} +1 -1
  91. package/dist/{chunk-JJJ2G4K2.js → chunk-HSF665NV.js} +5 -5
  92. package/dist/{chunk-JJJ2G4K2.js.map → chunk-HSF665NV.js.map} +1 -1
  93. package/dist/{chunk-I7LC5TDY.js → chunk-HTGTNN2B.js} +3 -3
  94. package/dist/{chunk-I7LC5TDY.js.map → chunk-HTGTNN2B.js.map} +1 -1
  95. package/dist/{chunk-PMWRM4EJ.js → chunk-HXZ3FQQN.js} +14 -14
  96. package/dist/{chunk-PMWRM4EJ.js.map → chunk-HXZ3FQQN.js.map} +1 -1
  97. package/dist/{chunk-2XM3ZH36.js → chunk-IYZAJ2J2.js} +16 -13
  98. package/dist/chunk-IYZAJ2J2.js.map +1 -0
  99. package/dist/{chunk-3HACK2Z7.js → chunk-IZV3HDVG.js} +5 -5
  100. package/dist/{chunk-3HACK2Z7.js.map → chunk-IZV3HDVG.js.map} +1 -1
  101. package/dist/{chunk-U673DB5U.js → chunk-JSWMRYLM.js} +4 -3
  102. package/dist/chunk-JSWMRYLM.js.map +1 -0
  103. package/dist/{chunk-TSTRH4SM.js → chunk-L45IHRDH.js} +3 -3
  104. package/dist/{chunk-TSTRH4SM.js.map → chunk-L45IHRDH.js.map} +1 -1
  105. package/dist/{chunk-27SXN33H.js → chunk-L4OYPFLB.js} +3 -3
  106. package/dist/{chunk-27SXN33H.js.map → chunk-L4OYPFLB.js.map} +1 -1
  107. package/dist/{chunk-QIHL3YPL.js → chunk-O7KAQQAI.js} +4 -4
  108. package/dist/{chunk-QIHL3YPL.js.map → chunk-O7KAQQAI.js.map} +1 -1
  109. package/dist/{chunk-Z3IRZBXB.js → chunk-P7EL7QRD.js} +14 -14
  110. package/dist/{chunk-Z3IRZBXB.js.map → chunk-P7EL7QRD.js.map} +1 -1
  111. package/dist/{chunk-QXKUFROW.js → chunk-PTBX55QF.js} +4 -4
  112. package/dist/{chunk-QXKUFROW.js.map → chunk-PTBX55QF.js.map} +1 -1
  113. package/dist/{chunk-5JPW27BI.js → chunk-Q4XWCVFA.js} +7 -7
  114. package/dist/{chunk-5JPW27BI.js.map → chunk-Q4XWCVFA.js.map} +1 -1
  115. package/dist/chunk-QJQQNBVT.js +315 -0
  116. package/dist/chunk-QJQQNBVT.js.map +1 -0
  117. package/dist/{chunk-M4OG2YN4.js → chunk-QSIFEHSN.js} +3 -3
  118. package/dist/{chunk-M4OG2YN4.js.map → chunk-QSIFEHSN.js.map} +1 -1
  119. package/dist/{chunk-7Y6S4XLL.js → chunk-RKI35EAN.js} +3 -3
  120. package/dist/{chunk-7Y6S4XLL.js.map → chunk-RKI35EAN.js.map} +1 -1
  121. package/dist/{chunk-OCQNUV4T.js → chunk-SISUT7VR.js} +7 -7
  122. package/dist/{chunk-OCQNUV4T.js.map → chunk-SISUT7VR.js.map} +1 -1
  123. package/dist/{chunk-7H6XRCPG.js → chunk-TDKZL5ZC.js} +3 -3
  124. package/dist/{chunk-7H6XRCPG.js.map → chunk-TDKZL5ZC.js.map} +1 -1
  125. package/dist/{chunk-LRBP3234.js → chunk-TF5CWJQZ.js} +5 -5
  126. package/dist/{chunk-LRBP3234.js.map → chunk-TF5CWJQZ.js.map} +1 -1
  127. package/dist/{chunk-PKBLJI23.js → chunk-TGB4E5Z6.js} +188 -52
  128. package/dist/chunk-TGB4E5Z6.js.map +1 -0
  129. package/dist/{chunk-KB56WBQ3.js → chunk-TPQKFX6X.js} +4 -4
  130. package/dist/{chunk-KB56WBQ3.js.map → chunk-TPQKFX6X.js.map} +1 -1
  131. package/dist/{chunk-TZERN27L.js → chunk-U3SXCVR7.js} +3 -3
  132. package/dist/{chunk-TZERN27L.js.map → chunk-U3SXCVR7.js.map} +1 -1
  133. package/dist/{chunk-KPKGWXUJ.js → chunk-U6S5CXKB.js} +3 -3
  134. package/dist/{chunk-KPKGWXUJ.js.map → chunk-U6S5CXKB.js.map} +1 -1
  135. package/dist/{chunk-JFLQICIU.js → chunk-UAOHR6AL.js} +4 -4
  136. package/dist/{chunk-JFLQICIU.js.map → chunk-UAOHR6AL.js.map} +1 -1
  137. package/dist/{chunk-KXJMQTOU.js → chunk-UBLZALKP.js} +3 -3
  138. package/dist/{chunk-KXJMQTOU.js.map → chunk-UBLZALKP.js.map} +1 -1
  139. package/dist/{chunk-BIRW3HOG.js → chunk-UUKCPPTQ.js} +3 -3
  140. package/dist/{chunk-BIRW3HOG.js.map → chunk-UUKCPPTQ.js.map} +1 -1
  141. package/dist/{chunk-BY5WIRCU.js → chunk-UVTN4O7N.js} +42 -17
  142. package/dist/chunk-UVTN4O7N.js.map +1 -0
  143. package/dist/{chunk-COAFAYBS.js → chunk-V4OXHEWY.js} +3 -3
  144. package/dist/{chunk-COAFAYBS.js.map → chunk-V4OXHEWY.js.map} +1 -1
  145. package/dist/{chunk-SJNZ4WPA.js → chunk-VSCLUPGZ.js} +31 -28
  146. package/dist/chunk-VSCLUPGZ.js.map +1 -0
  147. package/dist/{chunk-JMIKGAUA.js → chunk-VV2DJT4I.js} +15 -5
  148. package/dist/chunk-VV2DJT4I.js.map +1 -0
  149. package/dist/{chunk-JCPD4QRM.js → chunk-VZU67OKK.js} +2 -2
  150. package/dist/{chunk-JCPD4QRM.js.map → chunk-VZU67OKK.js.map} +1 -1
  151. package/dist/{chunk-MAZ3UXJK.js → chunk-WENTJ5KP.js} +4 -4
  152. package/dist/{chunk-MAZ3UXJK.js.map → chunk-WENTJ5KP.js.map} +1 -1
  153. package/dist/{chunk-ZWJCRHP3.js → chunk-YFGXYQW4.js} +3 -3
  154. package/dist/{chunk-ZWJCRHP3.js.map → chunk-YFGXYQW4.js.map} +1 -1
  155. package/dist/{chunk-S2H3RBK7.js → chunk-YJNE4V2M.js} +16 -9
  156. package/dist/chunk-YJNE4V2M.js.map +1 -0
  157. package/dist/{chunk-PJJSBZZP.js → chunk-ZWCGJYR7.js} +3 -3
  158. package/dist/{chunk-PJJSBZZP.js.map → chunk-ZWCGJYR7.js.map} +1 -1
  159. package/dist/{claude-code-BBMNVH2J.js → claude-code-UBT4ZME7.js} +4 -4
  160. package/dist/{claude-code-BBMNVH2J.js.map → claude-code-UBT4ZME7.js.map} +1 -1
  161. package/dist/cli/index.js +107 -91
  162. package/dist/cli/index.js.map +1 -1
  163. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  164. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  165. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  166. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  167. package/dist/cli/src/commands/providers.d.ts.map +1 -1
  168. package/dist/cli/src/helpers.d.ts +10 -2
  169. package/dist/cli/src/helpers.d.ts.map +1 -1
  170. package/dist/cli/src/plugin-store/index.d.ts +1 -1
  171. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  172. package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -1
  173. package/dist/cli/src/plugin-store/spec.d.ts +19 -14
  174. package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
  175. package/dist/cli/src/setup.d.ts.map +1 -1
  176. package/dist/connectors/config.js +4 -4
  177. package/dist/connectors/index.js +22 -20
  178. package/dist/{connectors-47EM6C2P.js → connectors-4WH32NK2.js} +25 -23
  179. package/dist/{connectors-47EM6C2P.js.map → connectors-4WH32NK2.js.map} +1 -1
  180. package/dist/connectors-shared/index.js +2 -2
  181. package/dist/core/index.js +6 -6
  182. package/dist/core/manifest.js +1 -1
  183. package/dist/core/publish-manifest.js +2 -2
  184. package/dist/core/runtime-assets.js +4 -4
  185. package/dist/core/src/index.d.ts +1 -1
  186. package/dist/core/src/index.d.ts.map +1 -1
  187. package/dist/core/src/lock.d.ts.map +1 -1
  188. package/dist/core/src/manifest.d.ts +9 -3
  189. package/dist/core/src/manifest.d.ts.map +1 -1
  190. package/dist/core/src/workspace-config.d.ts +15 -0
  191. package/dist/core/src/workspace-config.d.ts.map +1 -1
  192. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  193. package/dist/core/workspace-config.js +3 -3
  194. package/dist/deploy/index.js +6 -6
  195. package/dist/discovery/index.js +3 -3
  196. package/dist/{ensure-sources-K5EFNC3L.js → ensure-sources-UC2RBYMP.js} +27 -25
  197. package/dist/ensure-sources-UC2RBYMP.js.map +1 -0
  198. package/dist/factory-assets/connectors/box.js +22 -20
  199. package/dist/factory-assets/connectors/deploy.js +22 -20
  200. package/dist/factory-assets/connectors/devserver.js +22 -20
  201. package/dist/factory-assets/connectors/flow/adapter.js +22 -20
  202. package/dist/factory-assets/connectors/flow/engine.js +7 -7
  203. package/dist/factory-assets/connectors/flow/run-flow.js +24 -22
  204. package/dist/factory-assets/connectors/flow.js +22 -20
  205. package/dist/factory-assets/connectors/git.js +22 -20
  206. package/dist/factory-assets/connectors/gmail.js +22 -20
  207. package/dist/factory-assets/connectors/googledrive.js +22 -20
  208. package/dist/factory-assets/connectors/local.js +22 -20
  209. package/dist/factory-assets/connectors/mattermost.js +22 -20
  210. package/dist/factory-assets/connectors/memory.js +22 -20
  211. package/dist/factory-assets/connectors/minio.js +22 -20
  212. package/dist/factory-assets/connectors/postgres.js +22 -20
  213. package/dist/factory-assets/connectors/s3.js +22 -20
  214. package/dist/factory-assets/connectors/sharepoint.js +22 -20
  215. package/dist/factory-assets/connectors/sqlite.js +22 -20
  216. package/dist/factory-assets/connectors/static-server.js +22 -20
  217. package/dist/factory-assets/connectors/tunnel.js +22 -20
  218. package/dist/factory-assets/connectors/webdav.js +22 -20
  219. package/dist/factory-assets/connectors/xstate-store.js +22 -20
  220. package/dist/factory-assets/connectors/xstate.js +22 -20
  221. package/dist/{flows-KLBNSKLO.js → flows-LYTKNGKE.js} +11 -11
  222. package/dist/{flows-KLBNSKLO.js.map → flows-LYTKNGKE.js.map} +1 -1
  223. package/dist/{helpers-LUSV2ICC.js → helpers-SSSKT5XK.js} +27 -25
  224. package/dist/{helpers-LUSV2ICC.js.map → helpers-SSSKT5XK.js.map} +1 -1
  225. package/dist/library/index.js +9 -9
  226. package/dist/library/install.js +3 -3
  227. package/dist/{library-publish-XMRCKRNR.js → library-publish-GQMNTAKK.js} +52 -50
  228. package/dist/library-publish-GQMNTAKK.js.map +1 -0
  229. package/dist/model-endpoint/index.js +10 -9
  230. package/dist/open-library-XGUCUJYE.js +58 -0
  231. package/dist/{open-library-XBR46DJL.js.map → open-library-XGUCUJYE.js.map} +1 -1
  232. package/dist/{open-registry-W562DCDL.js → open-registry-DIFEPDF6.js} +13 -13
  233. package/dist/{open-registry-W562DCDL.js.map → open-registry-DIFEPDF6.js.map} +1 -1
  234. package/dist/{paths-2AZXB3QL.js → paths-G4GFJLE2.js} +9 -9
  235. package/dist/{paths-2AZXB3QL.js.map → paths-G4GFJLE2.js.map} +1 -1
  236. package/dist/{plugin-store-36SIL4TV.js → plugin-store-BBLDFD3L.js} +9 -9
  237. package/dist/{plugin-store-36SIL4TV.js.map → plugin-store-BBLDFD3L.js.map} +1 -1
  238. package/dist/{project-D7GN7WLS.js → project-LB745WVZ.js} +48 -46
  239. package/dist/{project-D7GN7WLS.js.map → project-LB745WVZ.js.map} +1 -1
  240. package/dist/resolver/index.js +7 -7
  241. package/dist/runner/index.js +38 -36
  242. package/dist/runner/src/capability-roundtrip.d.ts +4 -1
  243. package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
  244. package/dist/sdk/asset-manager.js +12 -12
  245. package/dist/sdk/bridge.js +18 -16
  246. package/dist/sdk/core.js +6 -6
  247. package/dist/sdk/flow.js +7 -7
  248. package/dist/sdk/index.js +38 -36
  249. package/dist/sdk/index.js.map +1 -1
  250. package/dist/sdk/resolver.js +7 -7
  251. package/dist/sdk/runner.js +38 -36
  252. package/dist/sdk/session.js +2 -2
  253. package/dist/sdk/transport/ws/server.js +7 -7
  254. package/dist/sdk/transport/ws.js +7 -7
  255. package/dist/sdk/transport.js +7 -7
  256. package/dist/sdk/types.js +1 -1
  257. package/dist/{serve-preflight-CGA5G3AE.js → serve-preflight-NPWI4MV6.js} +28 -26
  258. package/dist/serve-preflight-NPWI4MV6.js.map +1 -0
  259. package/dist/session/index.js +2 -2
  260. package/dist/{setup-IBDNJAOU.js → setup-X6ZYH2MW.js} +33 -28
  261. package/dist/setup-X6ZYH2MW.js.map +1 -0
  262. package/dist/{skills-CTTO7SZK.js → skills-62PXDBPJ.js} +12 -12
  263. package/dist/{skills-CTTO7SZK.js.map → skills-62PXDBPJ.js.map} +1 -1
  264. package/dist/{source-2DJ5KNOI.js → source-LAYCTRHP.js} +48 -46
  265. package/dist/{source-2DJ5KNOI.js.map → source-LAYCTRHP.js.map} +1 -1
  266. package/dist/{source-manifest-publish-IYWUMUCY.js → source-manifest-publish-3S6PJ25W.js} +50 -48
  267. package/dist/source-manifest-publish-3S6PJ25W.js.map +1 -0
  268. package/dist/transport/index.js +7 -7
  269. package/dist/transport/ws/server.js +7 -7
  270. package/dist/transport/ws.js +7 -7
  271. package/dist/tui/index.js +38 -36
  272. package/dist/tui/index.js.map +1 -1
  273. package/dist/types/index.js +1 -1
  274. package/dist/types/src/capabilities.d.ts +9 -1
  275. package/dist/types/src/capabilities.d.ts.map +1 -1
  276. package/dist/workspace-plugin/adapters/mcp.js +29 -27
  277. package/dist/workspace-plugin/adapters/omp.js +14 -14
  278. package/dist/workspace-plugin/index.js +1 -1
  279. package/package.json +27 -1
  280. package/dist/chunk-2XM3ZH36.js.map +0 -1
  281. package/dist/chunk-7DRFKAJZ.js.map +0 -1
  282. package/dist/chunk-BOT64P3U.js.map +0 -1
  283. package/dist/chunk-BRK5QZKI.js.map +0 -1
  284. package/dist/chunk-BY5WIRCU.js.map +0 -1
  285. package/dist/chunk-ICSGNT5P.js.map +0 -1
  286. package/dist/chunk-ITFCWMOY.js.map +0 -1
  287. package/dist/chunk-JMIKGAUA.js.map +0 -1
  288. package/dist/chunk-KJSC2ZD6.js.map +0 -1
  289. package/dist/chunk-PKBLJI23.js.map +0 -1
  290. package/dist/chunk-RQMIZONH.js.map +0 -1
  291. package/dist/chunk-S2H3RBK7.js.map +0 -1
  292. package/dist/chunk-SJNZ4WPA.js.map +0 -1
  293. package/dist/chunk-U673DB5U.js.map +0 -1
  294. package/dist/chunk-X37JUNEW.js.map +0 -1
  295. package/dist/ensure-sources-K5EFNC3L.js.map +0 -1
  296. package/dist/library-publish-XMRCKRNR.js.map +0 -1
  297. package/dist/open-library-XBR46DJL.js +0 -56
  298. package/dist/serve-preflight-CGA5G3AE.js.map +0 -1
  299. package/dist/setup-IBDNJAOU.js.map +0 -1
  300. package/dist/source-manifest-publish-IYWUMUCY.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { CONNECTOR_ERROR_KINDS } from './chunk-JCPD4QRM.js';
1
+ import { CONNECTOR_ERROR_KINDS } from './chunk-VZU67OKK.js';
2
2
 
3
3
  // connectors/src/connect-error-kind.ts
4
4
  var CONNECT_ERROR_KIND_PROPERTY = "skaileConnectErrorKind";
@@ -28,5 +28,5 @@ var ClassifiedConnectError = class extends Error {
28
28
  };
29
29
 
30
30
  export { CONNECT_ERROR_KIND_PROPERTY, ClassifiedConnectError, declaredConnectErrorKind, withConnectErrorKind };
31
- //# sourceMappingURL=chunk-6GWSDPBP.js.map
32
- //# sourceMappingURL=chunk-6GWSDPBP.js.map
31
+ //# sourceMappingURL=chunk-GTMANMBZ.js.map
32
+ //# sourceMappingURL=chunk-GTMANMBZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../connectors/src/connect-error-kind.ts"],"names":[],"mappings":";;;AAuBO,IAAM,2BAAA,GAA8B;AAYpC,SAAS,yBAAyB,GAAA,EAA8C;AACrF,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAS,IAAgC,2BAA2B,CAAA;AAC1E,EAAA,OAAQ,qBAAA,CAA6C,QAAA,CAAS,KAAK,CAAA,GAC9D,KAAA,GACD,MAAA;AACN;AAOO,SAAS,oBAAA,CAAwB,KAAQ,IAAA,EAA6B;AAC3E,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,IAAI;AACF,MAAC,GAAA,CAAgC,2BAA2B,CAAA,GAAI,IAAA;AAAA,IAClE,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,CAAU,2BAA2B;AAAA,EACrC,WAAA,CAAY,SAAiB,IAAA,EAA0B;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,IAAA;AAAA,EACtC;AACF","file":"chunk-6GWSDPBP.js","sourcesContent":["/**\n * The driver-side contract for classifying a connect failure: how a thrower\n * says which {@link ConnectorErrorKind} its error is. Read by the manager's\n * `classifyConnectError` (`classify-connect-error.ts`) into the `errorKind`\n * field of `connector_status` error events.\n *\n * Depends on nothing but `types`, so the `connectors-shared` subpath can\n * re-export it to out-of-tree drivers.\n *\n * @docLink packages/connectors/concepts#connector-manager\n */\n\nimport { CONNECTOR_ERROR_KINDS, type ConnectorErrorKind } from \"@skaile/workspaces/types\";\n\n/**\n * The property a thrown error carries its kind on.\n *\n * Namespaced because it is read off any thrown object: a bare `errorKind` is\n * a name a library's own error may already use, and a value that happened to\n * read `\"config\"` would silently misroute the failure. A plain string key\n * rather than a symbol, so a driver with no import from this package can still\n * set it: `throw Object.assign(new Error(msg), { skaileConnectErrorKind: \"config\" })`.\n */\nexport const CONNECT_ERROR_KIND_PROPERTY = \"skaileConnectErrorKind\";\n\n/**\n * The shape of an error that declares its kind. For classes that must spell the\n * key out instead of computing it (see the git driver's `TokenMediatorError`):\n * `implements` keeps the literal tied to {@link CONNECT_ERROR_KIND_PROPERTY}.\n */\nexport type DeclaresConnectErrorKind = {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n};\n\n/** The kind `err` declares for itself, or `undefined` when it declares none (or an unknown one). */\nexport function declaredConnectErrorKind(err: unknown): ConnectorErrorKind | undefined {\n if (err === null || typeof err !== \"object\" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n return undefined;\n }\n const value = (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY];\n return (CONNECTOR_ERROR_KINDS as readonly unknown[]).includes(value)\n ? (value as ConnectorErrorKind)\n : undefined;\n}\n\n/**\n * Stamp `kind` onto `err` unless it already declares one, and return it for\n * rethrowing. For throw sites that know what a failure means but throw an\n * error they did not construct (a failed `git` child, say).\n */\nexport function withConnectErrorKind<T>(err: T, kind: ConnectorErrorKind): T {\n if (err !== null && typeof err === \"object\" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n try {\n (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY] = kind;\n } catch {\n // Frozen or sealed: unclassified beats replacing the real error with a TypeError.\n }\n }\n return err;\n}\n\n/**\n * An `Error` carrying an explicit {@link ConnectorErrorKind}, for throw sites\n * that build their own error.\n */\nexport class ClassifiedConnectError extends Error {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n constructor(message: string, kind: ConnectorErrorKind) {\n super(message);\n this.name = \"ClassifiedConnectError\";\n this[CONNECT_ERROR_KIND_PROPERTY] = kind;\n }\n}\n"]}
1
+ {"version":3,"sources":["../connectors/src/connect-error-kind.ts"],"names":[],"mappings":";;;AAuBO,IAAM,2BAAA,GAA8B;AAYpC,SAAS,yBAAyB,GAAA,EAA8C;AACrF,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAS,IAAgC,2BAA2B,CAAA;AAC1E,EAAA,OAAQ,qBAAA,CAA6C,QAAA,CAAS,KAAK,CAAA,GAC9D,KAAA,GACD,MAAA;AACN;AAOO,SAAS,oBAAA,CAAwB,KAAQ,IAAA,EAA6B;AAC3E,EAAA,IAAI,QAAQ,IAAA,IAAQ,OAAO,QAAQ,QAAA,IAAY,EAAE,+BAA+B,GAAA,CAAA,EAAM;AACpF,IAAA,IAAI;AACF,MAAC,GAAA,CAAgC,2BAA2B,CAAA,GAAI,IAAA;AAAA,IAClE,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAMO,IAAM,sBAAA,GAAN,cAAqC,KAAA,CAAM;AAAA,EAChD,CAAU,2BAA2B;AAAA,EACrC,WAAA,CAAY,SAAiB,IAAA,EAA0B;AACrD,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,wBAAA;AACZ,IAAA,IAAA,CAAK,2BAA2B,CAAA,GAAI,IAAA;AAAA,EACtC;AACF","file":"chunk-GTMANMBZ.js","sourcesContent":["/**\n * The driver-side contract for classifying a connect failure: how a thrower\n * says which {@link ConnectorErrorKind} its error is. Read by the manager's\n * `classifyConnectError` (`classify-connect-error.ts`) into the `errorKind`\n * field of `connector_status` error events.\n *\n * Depends on nothing but `types`, so the `connectors-shared` subpath can\n * re-export it to out-of-tree drivers.\n *\n * @docLink packages/connectors/concepts#connector-manager\n */\n\nimport { CONNECTOR_ERROR_KINDS, type ConnectorErrorKind } from \"@skaile/workspaces/types\";\n\n/**\n * The property a thrown error carries its kind on.\n *\n * Namespaced because it is read off any thrown object: a bare `errorKind` is\n * a name a library's own error may already use, and a value that happened to\n * read `\"config\"` would silently misroute the failure. A plain string key\n * rather than a symbol, so a driver with no import from this package can still\n * set it: `throw Object.assign(new Error(msg), { skaileConnectErrorKind: \"config\" })`.\n */\nexport const CONNECT_ERROR_KIND_PROPERTY = \"skaileConnectErrorKind\";\n\n/**\n * The shape of an error that declares its kind. For classes that must spell the\n * key out instead of computing it (see the git driver's `TokenMediatorError`):\n * `implements` keeps the literal tied to {@link CONNECT_ERROR_KIND_PROPERTY}.\n */\nexport type DeclaresConnectErrorKind = {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n};\n\n/** The kind `err` declares for itself, or `undefined` when it declares none (or an unknown one). */\nexport function declaredConnectErrorKind(err: unknown): ConnectorErrorKind | undefined {\n if (err === null || typeof err !== \"object\" || !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n return undefined;\n }\n const value = (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY];\n return (CONNECTOR_ERROR_KINDS as readonly unknown[]).includes(value)\n ? (value as ConnectorErrorKind)\n : undefined;\n}\n\n/**\n * Stamp `kind` onto `err` unless it already declares one, and return it for\n * rethrowing. For throw sites that know what a failure means but throw an\n * error they did not construct (a failed `git` child, say).\n */\nexport function withConnectErrorKind<T>(err: T, kind: ConnectorErrorKind): T {\n if (err !== null && typeof err === \"object\" && !(CONNECT_ERROR_KIND_PROPERTY in err)) {\n try {\n (err as Record<string, unknown>)[CONNECT_ERROR_KIND_PROPERTY] = kind;\n } catch {\n // Frozen or sealed: unclassified beats replacing the real error with a TypeError.\n }\n }\n return err;\n}\n\n/**\n * An `Error` carrying an explicit {@link ConnectorErrorKind}, for throw sites\n * that build their own error.\n */\nexport class ClassifiedConnectError extends Error {\n readonly [CONNECT_ERROR_KIND_PROPERTY]: ConnectorErrorKind;\n constructor(message: string, kind: ConnectorErrorKind) {\n super(message);\n this.name = \"ClassifiedConnectError\";\n this[CONNECT_ERROR_KIND_PROPERTY] = kind;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { flowKindProvider } from './chunk-PJJSBZZP.js';
2
- import { knowledgeKindProvider } from './chunk-6CYKTHNT.js';
3
- import { createDefaultKindRegistry } from './chunk-MAZ3UXJK.js';
1
+ import { flowKindProvider } from './chunk-ZWCGJYR7.js';
2
+ import { knowledgeKindProvider } from './chunk-GBXQFJ4G.js';
3
+ import { createDefaultKindRegistry } from './chunk-WENTJ5KP.js';
4
4
 
5
5
  // cli/src/open-registry.ts
6
6
  var registry;
@@ -13,5 +13,5 @@ function getKnownKinds() {
13
13
  }
14
14
 
15
15
  export { getKindRegistry, getKnownKinds };
16
- //# sourceMappingURL=chunk-JJJ2G4K2.js.map
17
- //# sourceMappingURL=chunk-JJJ2G4K2.js.map
16
+ //# sourceMappingURL=chunk-HSF665NV.js.map
17
+ //# sourceMappingURL=chunk-HSF665NV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/open-registry.ts"],"names":[],"mappings":";;;;;AAgBA,IAAI,QAAA;AAQG,SAAS,eAAA,GAAqC;AACnD,EAAA,QAAA,KAAa,yBAAA,CAA0B,CAAC,gBAAA,EAAkB,qBAAqB,CAAC,CAAA;AAChF,EAAA,OAAO,QAAA;AACT;AAGO,SAAS,aAAA,GAAqC;AACnD,EAAA,OAAO,IAAI,GAAA,CAAI,eAAA,EAAgB,CAAE,aAAa,CAAA;AAChD","file":"chunk-JJJ2G4K2.js","sourcesContent":["/**\n * open-registry.ts — the CLI's one AssetKindRegistry.\n *\n * The provider registry is the only authority on asset kinds. The CLI builds it\n * once per process with all built-in providers (from @skaile/workspaces/discovery)\n * plus the extension kinds (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from\n * @skaile/workspaces/library) and hands the same instance to every consumer\n * (catalog sources, the installer, validation, composition).\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\nlet registry: AssetKindRegistry | undefined;\n\n/**\n * The process-wide, fully-configured AssetKindRegistry.\n *\n * Registers every built-in kind plus flow and knowledge. Built lazily on first\n * call; every later call returns the same instance.\n */\nexport function getKindRegistry(): AssetKindRegistry {\n registry ??= createDefaultKindRegistry([flowKindProvider, knowledgeKindProvider]);\n return registry;\n}\n\n/** Registered kind names as a set — the `knownKinds` argument of the manifest scanners. */\nexport function getKnownKinds(): ReadonlySet<string> {\n return new Set(getKindRegistry().getAllKinds());\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/open-registry.ts"],"names":[],"mappings":";;;;;AAgBA,IAAI,QAAA;AAQG,SAAS,eAAA,GAAqC;AACnD,EAAA,QAAA,KAAa,yBAAA,CAA0B,CAAC,gBAAA,EAAkB,qBAAqB,CAAC,CAAA;AAChF,EAAA,OAAO,QAAA;AACT;AAGO,SAAS,aAAA,GAAqC;AACnD,EAAA,OAAO,IAAI,GAAA,CAAI,eAAA,EAAgB,CAAE,aAAa,CAAA;AAChD","file":"chunk-HSF665NV.js","sourcesContent":["/**\n * open-registry.ts — the CLI's one AssetKindRegistry.\n *\n * The provider registry is the only authority on asset kinds. The CLI builds it\n * once per process with all built-in providers (from @skaile/workspaces/discovery)\n * plus the extension kinds (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from\n * @skaile/workspaces/library) and hands the same instance to every consumer\n * (catalog sources, the installer, validation, composition).\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\nlet registry: AssetKindRegistry | undefined;\n\n/**\n * The process-wide, fully-configured AssetKindRegistry.\n *\n * Registers every built-in kind plus flow and knowledge. Built lazily on first\n * call; every later call returns the same instance.\n */\nexport function getKindRegistry(): AssetKindRegistry {\n registry ??= createDefaultKindRegistry([flowKindProvider, knowledgeKindProvider]);\n return registry;\n}\n\n/** Registered kind names as a set — the `knownKinds` argument of the manifest scanners. */\nexport function getKnownKinds(): ReadonlySet<string> {\n return new Set(getKindRegistry().getAllKinds());\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { CODEX_NATIVE_STATE_FORMAT, CodexNativeStateUnavailable } from './chunk-LOO5CB5M.js';
2
- import { openSqlite } from './chunk-DKXNKFKP.js';
3
2
  import { registryEntries, isEntryEnabled, parseCredentialRef } from './chunk-RXGPFAMN.js';
3
+ import { openSqlite } from './chunk-DKXNKFKP.js';
4
4
  import * as z from 'zod';
5
5
  import { createHash } from 'crypto';
6
6
  import { realpathSync, existsSync, lstatSync, chmodSync, rmSync, writeFileSync, renameSync, mkdirSync, readdirSync, readFileSync } from 'fs';
@@ -353,5 +353,5 @@ function allowsNativeApprovalPath(policy, path, access) {
353
353
  }
354
354
 
355
355
  export { activateNativeApprovalPolicy, allowsNativeApprovalPath, codexInstanceEnvironment, isNativeApprovalPolicyActive, managedCodexRegistryViolation, parseCodexCredential, parseCodexRefreshInput, parseCodexRefreshResult, prepareCodexInstance, prepareNativePolicy };
356
- //# sourceMappingURL=chunk-I7LC5TDY.js.map
357
- //# sourceMappingURL=chunk-I7LC5TDY.js.map
356
+ //# sourceMappingURL=chunk-HTGTNN2B.js.map
357
+ //# sourceMappingURL=chunk-HTGTNN2B.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../bridge/src/codex/credentials.ts","../bridge/src/codex/instance-state.ts","../bridge/src/codex/native-policy.ts"],"names":["source","invalid","within","relative","isAbsolute","directory","lstatSync","realpathSync"],"mappings":"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","file":"chunk-I7LC5TDY.js","sourcesContent":["import {\n type AIProviderLlmEntry,\n type AIProviderRegistry,\n isEntryEnabled,\n type MergedAIProviderRegistry,\n parseCredentialRef,\n registryEntries,\n} from \"@skaile/workspaces/core/provider-registry\";\nimport type {\n CodexCredentialDelivery,\n CodexSubscriptionRefreshInput,\n CodexSubscriptionRefreshResult,\n} from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nconst identifier = z.string().min(1).max(4096);\nconst timestamp = z.iso.datetime({ offset: true });\nconst common = {\n configId: identifier,\n credentialVersion: z.number().int().nonnegative().safe(),\n mintedAt: timestamp,\n};\nconst subscription = z.strictObject({\n ...common,\n kind: z.literal(\"codex-subscription\"),\n accessToken: z.string().min(1).max(65536),\n chatgptAccountId: identifier,\n chatgptPlanType: identifier.optional(),\n expiresAt: timestamp,\n});\nconst delivery = z.discriminatedUnion(\"kind\", [\n subscription,\n z.strictObject({\n ...common,\n kind: z.literal(\"openai-api-key\"),\n apiKey: z.string().min(1).max(65536),\n }),\n]);\n\n/** Validate credential shape and provenance without including input values in errors. */\nexport function parseCodexCredential(value: unknown, now = Date.now()): CodexCredentialDelivery {\n const parsed = delivery.safeParse(value);\n if (!parsed.success) throw new Error(\"Invalid managed AI credential\");\n const credential = parsed.data;\n const mintedAt = Date.parse(credential.mintedAt);\n // Issuer and runtime clocks may differ slightly; expiry remains strictly unexpired.\n if (\n mintedAt > now + 60_000 ||\n (credential.kind === \"codex-subscription\" &&\n (Date.parse(credential.expiresAt) <= now || Date.parse(credential.expiresAt) <= mintedAt))\n )\n throw new Error(\"Invalid managed AI credential timestamps\");\n return credential;\n}\n\n/** Validate runtime-only refresh input against the authenticated session's pinned delivery. */\nexport function parseCodexRefreshInput(\n value: unknown,\n pinned: Extract<CodexCredentialDelivery, { kind: \"codex-subscription\" }>,\n): CodexSubscriptionRefreshInput {\n const parsed = z\n .strictObject({\n kind: z.literal(\"codex-subscription\"),\n configId: identifier,\n credentialVersion: common.credentialVersion,\n reason: z.enum([\"initial\", \"refresh\", \"retry-401\"]),\n })\n .safeParse(value);\n if (\n !parsed.success ||\n parsed.data.configId !== pinned.configId ||\n parsed.data.credentialVersion !== pinned.credentialVersion\n )\n throw new Error(\"Invalid managed AI refresh binding\");\n return parsed.data;\n}\n\n/** Accept refreshed subscription credentials only within the existing config/account binding. */\nexport function parseCodexRefreshResult(\n value: unknown,\n pinned: Extract<CodexCredentialDelivery, { kind: \"codex-subscription\" }>,\n now = Date.now(),\n): CodexSubscriptionRefreshResult {\n const parsed = z\n .discriminatedUnion(\"ok\", [\n z.strictObject({ ok: z.literal(true), credential: subscription }),\n z.strictObject({\n ok: z.literal(false),\n code: z.enum([\"not-configured\", \"revoked\", \"provider-error\", \"backend-error\"]),\n message: z.string(),\n }),\n ])\n .safeParse(value);\n if (!parsed.success) throw new Error(\"Invalid managed AI refresh result\");\n if (!parsed.data.ok) return { ...parsed.data, message: \"Managed subscription refresh failed\" };\n const credential = parseCodexCredential(parsed.data.credential, now);\n if (\n credential.kind !== \"codex-subscription\" ||\n credential.configId !== pinned.configId ||\n credential.chatgptAccountId !== pinned.chatgptAccountId ||\n credential.credentialVersion < pinned.credentialVersion\n )\n throw new Error(\"Invalid managed AI refresh binding\");\n return { ok: true, credential };\n}\n\n/**\n * The AI provider registry a managed-codex session may carry (plan §2.2).\n *\n * Managed codex runs on a platform-minted, short-lived credential that the\n * host never writes to disk and never puts in the child environment. That\n * isolation is only meaningful if the session cannot *also* be told to talk\n * somewhere else, or to pick a credential up from the environment. Restated\n * on the registry, the admissible shape is exactly one enabled `llm` entry,\n * on codex's own OpenAI surface, whose credential is a platform-injected\n * `oauth` reference. A second entry, a different surface, or an `env:` /\n * `cmd:` / `keyring:` reference is an invalid AI profile.\n *\n * `surface` is read literally — no catalog-preset fallback. No preset\n * declares `openai-codex-responses`, so a preset-shaped entry reaching here\n * is a mis-provisioned session, not a terse one.\n *\n * An absent or empty registry is *not* a violation: nothing was configured,\n * and the credential the platform minted is the only one the session has.\n * Every configured entry is judged, whichever layer it came from — the\n * control-plane session layer, the user/workspace `providers.yml` files, or\n * a runtime override.\n *\n * @returns the reason the registry is inadmissible, or `undefined` when it is.\n */\nexport function managedCodexRegistryViolation(\n registry: AIProviderRegistry | MergedAIProviderRegistry | undefined,\n): string | undefined {\n if (!registry) return undefined;\n const entries = registryEntries(registry);\n if (entries.length === 0) return undefined;\n if (entries.length > 1)\n return `registry carries ${entries.length} entries; managed codex admits exactly one`;\n const [id, entry] = entries[0];\n if (!isEntryEnabled(entry)) return `entry '${id}' is disabled`;\n if (entry.kind !== \"llm\") return `entry '${id}' is a '${entry.kind}' endpoint, not an llm one`;\n const surface = (entry as AIProviderLlmEntry).surface;\n if (surface !== \"openai-codex-responses\")\n return `entry '${id}' declares surface '${surface ?? \"none\"}'; managed codex admits only openai-codex-responses`;\n const credential = entry.credential;\n if (credential?.kind !== \"oauth\")\n return `entry '${id}' carries a '${credential?.kind ?? \"none\"}' credential; managed codex admits only a platform-injected oauth credential`;\n const ref = credential.ref ? parseCredentialRef(credential.ref) : undefined;\n if (!ref || ref.form !== \"platform\")\n return `entry '${id}' resolves its credential outside the control plane; managed codex admits only a 'platform:' reference`;\n return undefined;\n}\n","import { createHash } from \"node:crypto\";\nimport {\n chmodSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n realpathSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { isAbsolute, join, relative } from \"node:path\";\nimport { openSqlite } from \"../../../core/src/logging/sinks/sqlite-runtime.js\";\nimport type { CodexCredentialDelivery } from \"@skaile/workspaces/types\";\nimport type { AgentConfig, CodexManagedRuntimeOptions } from \"../types.js\";\n\nimport { CODEX_NATIVE_STATE_FORMAT, CodexNativeStateUnavailable } from \"./native-state.js\";\n\nconst invalid = () => new Error(\"AI_PROFILE_INVALID\");\nconst within = (path: string, root: string) => {\n const rel = relative(root, path);\n return rel === \"\" || (!rel.startsWith(\"..\") && !isAbsolute(rel));\n};\nfunction directory(path: string): void {\n if (!existsSync(path)) mkdirSync(path, { mode: 0o700 });\n const stat = lstatSync(path);\n if (!stat.isDirectory() || stat.isSymbolicLink() || stat.mode & 0o077) throw invalid();\n}\nfunction readRegular(path: string, limit: number): Buffer {\n const stat = lstatSync(path);\n if (!stat.isFile() || stat.isSymbolicLink() || stat.size > limit) throw invalid();\n return readFileSync(path);\n}\n\n/** Session-owned state lock and account-bound native resume metadata; never stores credentials. */\nexport function prepareCodexInstance(\n config: AgentConfig,\n options: CodexManagedRuntimeOptions,\n credential: CodexCredentialDelivery,\n) {\n if (!isAbsolute(options.privateDirectory) || !isAbsolute(config.cwd) || !config.sessionId)\n throw invalid();\n directory(options.privateDirectory);\n const root = realpathSync(options.privateDirectory);\n const cwd = realpathSync(config.cwd);\n if (within(root, cwd) || within(cwd, root)) throw invalid();\n const lock = join(root, \".active\");\n const leasePath = join(root, \"lease.db\");\n if (existsSync(leasePath) && !lstatSync(leasePath).isFile()) throw invalid();\n const lease = openSqlite(leasePath);\n try {\n lease.exec(\"PRAGMA busy_timeout=0; BEGIN EXCLUSIVE\");\n chmodSync(leasePath, 0o600);\n // The OS releases the database lease on crashes; this marker never owns the lock.\n rmSync(lock, { force: true });\n writeFileSync(lock, \"active\", { flag: \"wx\", mode: 0o600 });\n } catch (error) {\n lease.close();\n throw error;\n }\n let released = false;\n const release = () => {\n if (released) return;\n released = true;\n try {\n rmSync(lock, { force: true });\n } finally {\n lease.close();\n }\n };\n try {\n const key = createHash(\"sha256\")\n .update(\n JSON.stringify({\n harness: \"codex-app-server-v1\",\n session: config.sessionId,\n config: credential.configId,\n kind: credential.kind,\n account: credential.kind === \"codex-subscription\" ? credential.chatgptAccountId : null,\n }),\n )\n .digest(\"hex\");\n const slots = join(root, CODEX_NATIVE_STATE_FORMAT);\n directory(slots);\n const stateRoot = join(slots, key);\n directory(stateRoot);\n for (const name of [\"instructions.new\", \"binding.new\"])\n rmSync(join(stateRoot, name), { force: true });\n const bindingPath = join(stateRoot, \"binding.json\");\n if (config.resumeSessionId && !existsSync(bindingPath)) throw new CodexNativeStateUnavailable();\n if (existsSync(bindingPath)) {\n // Filesystem authority failures (including symlinks) are fatal, not missing state.\n const bytes = readRegular(bindingPath, 4096);\n if (config.resumeSessionId) {\n let binding: unknown;\n try {\n binding = JSON.parse(bytes.toString(\"utf8\"));\n } catch {\n throw new CodexNativeStateUnavailable();\n }\n if (\n !binding ||\n typeof binding !== \"object\" ||\n Array.isArray(binding) ||\n Object.keys(binding).sort().join(\",\") !== \"format,key,threadId\" ||\n (binding as Record<string, unknown>).format !== CODEX_NATIVE_STATE_FORMAT ||\n (binding as Record<string, unknown>).key !== key ||\n (binding as Record<string, unknown>).threadId !== config.resumeSessionId\n )\n throw new CodexNativeStateUnavailable();\n }\n }\n const home = join(stateRoot, \"home\");\n if (config.resumeSessionId && !existsSync(home)) throw new CodexNativeStateUnavailable();\n directory(home);\n for (const subdir of [\"config\", \"cache\", \"data\", \"tmp\"]) directory(join(home, subdir));\n // Auth persistence is forbidden even if a previous external process left a carrier here.\n if ([\"auth.json\", \".credentials.json\"].some((name) => existsSync(join(home, name))))\n throw invalid();\n const instructionFile = join(stateRoot, \"instructions.md\");\n const instructions = [\n ...(options.instructionFiles ?? []).map((path) =>\n readRegular(path, 1024 * 1024).toString(\"utf8\"),\n ),\n ...(config.systemPrompt ? [config.systemPrompt] : []),\n ].join(\"\\n\\n---\\n\\n\");\n const temporary = join(stateRoot, \"instructions.new\");\n writeFileSync(temporary, instructions, { mode: 0o600, flag: \"wx\" });\n renameSync(temporary, instructionFile);\n const target = join(home, \"skills\");\n if (!options.skillsDirectory && existsSync(target)) rmSync(target, { recursive: true });\n if (options.skillsDirectory) {\n const source = realpathSync(options.skillsDirectory);\n if (within(target, source) || within(source, target)) throw invalid();\n if (existsSync(target)) rmSync(target, { recursive: true });\n let files = 0;\n let entries = 0;\n let bytes = 0;\n const copy = (source: string, destination: string) => {\n if (++entries > 1024) throw invalid();\n if (lstatSync(source).isSymbolicLink()) throw invalid();\n mkdirSync(destination, { mode: 0o700 });\n for (const entry of readdirSync(source, { withFileTypes: true })) {\n const src = join(source, entry.name);\n const dst = join(destination, entry.name);\n if (entry.isSymbolicLink()) throw invalid();\n if (entry.isDirectory()) copy(src, dst);\n else {\n const content = readRegular(src, 1024 * 1024);\n bytes += content.byteLength;\n if (++files > 512 || bytes > 8 * 1024 * 1024) throw invalid();\n writeFileSync(dst, content, { mode: 0o600, flag: \"wx\" });\n }\n }\n };\n copy(options.skillsDirectory, target);\n }\n const bindThread = (threadId: string) => {\n if (!threadId || threadId.length > 4096) throw invalid();\n const next = join(stateRoot, \"binding.new\");\n writeFileSync(next, JSON.stringify({ format: CODEX_NATIVE_STATE_FORMAT, key, threadId }), {\n mode: 0o600,\n flag: \"wx\",\n });\n renameSync(next, bindingPath);\n };\n const setToolInstructions = (text: string) => {\n writeFileSync(temporary, `${instructions}\\n\\n${text}`, { mode: 0o600, flag: \"wx\" });\n renameSync(temporary, instructionFile);\n };\n return {\n root,\n stateRoot,\n cwd,\n home,\n instructionFile,\n bindThread,\n release,\n setToolInstructions,\n };\n } catch (error) {\n release();\n throw error;\n }\n}\n\n/** A replacement environment; managed auth never reads or mutates ambient process.env. */\nexport function codexInstanceEnvironment(\n input: Record<string, string>,\n home: string,\n): Record<string, string> {\n const allowed = new Set([\n \"PATH\",\n \"LANG\",\n \"LC_ALL\",\n \"TZ\",\n \"SSL_CERT_FILE\",\n \"SSL_CERT_DIR\",\n \"HTTPS_PROXY\",\n \"HTTP_PROXY\",\n \"NO_PROXY\",\n ]);\n if (\n !input ||\n Object.entries(input).some(([key, value]) => !allowed.has(key) || typeof value !== \"string\")\n )\n throw invalid();\n return {\n ...input,\n HOME: home,\n CODEX_HOME: home,\n XDG_CONFIG_HOME: join(home, \"config\"),\n XDG_CACHE_HOME: join(home, \"cache\"),\n XDG_DATA_HOME: join(home, \"data\"),\n TMPDIR: join(home, \"tmp\"),\n };\n}\n","import { lstatSync, realpathSync } from \"node:fs\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\n\nconst invalid = () => new Error(\"AI_PROFILE_INVALID\");\nconst record = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === \"object\" && !Array.isArray(value);\nconst within = (child: string, parent: string) => {\n const rel = relative(parent, child);\n return rel === \"\" || (!rel.startsWith(\"../\") && rel !== \"..\" && !isAbsolute(rel));\n};\nconst hasControl = (path: string) =>\n [...path].some((character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127);\nconst directory = (path: string) => {\n if (!isAbsolute(path) || hasControl(path)) throw invalid();\n const stat = lstatSync(path);\n if (!stat.isDirectory() || stat.isSymbolicLink()) throw invalid();\n return realpathSync(path);\n};\n\n/** Fixed pinned-native policy. No caller-supplied profile or sandbox override is admitted. */\nexport function prepareNativePolicy(input: {\n cwd: string;\n privateRoot: string;\n privateDirectory: string;\n sandboxMode: \"read-only\" | \"workspace-write\";\n}) {\n const cwd = directory(input.cwd);\n const privateRoot = directory(input.privateRoot);\n const privateDirectory = directory(input.privateDirectory);\n if (\n within(cwd, privateRoot) ||\n within(privateRoot, cwd) ||\n !within(privateDirectory, privateRoot) ||\n privateDirectory === privateRoot ||\n (input.sandboxMode !== \"read-only\" && input.sandboxMode !== \"workspace-write\")\n )\n throw invalid();\n const stat = lstatSync(privateRoot);\n if (stat.mode & 0o077 || (process.getuid && stat.uid !== 0 && stat.uid !== process.getuid()))\n throw invalid();\n const filesystem = Object.freeze({\n [cwd]: input.sandboxMode === \"workspace-write\" ? \"write\" : \"read\",\n [privateRoot]: \"deny\",\n });\n const config = Object.freeze({\n default_permissions: \"managed\",\n features: Object.freeze({ use_legacy_landlock: false }),\n permissions: Object.freeze({\n managed: Object.freeze({\n extends: \":read-only\",\n filesystem,\n network: Object.freeze({ enabled: false }),\n }),\n }),\n });\n // Native -c parses TOML, not JSON objects. Quote paths as TOML basic strings.\n const profile = `{ managed = { extends = \":read-only\", filesystem = { ${Object.entries(filesystem)\n .map(([path, access]) => `${JSON.stringify(path)} = ${JSON.stringify(access)}`)\n .join(\", \")} }, network = { enabled = false } } }`;\n const policy = Object.freeze({\n config,\n cliArgs: Object.freeze([\n \"-c\",\n 'default_permissions=\"managed\"',\n \"-c\",\n \"features.use_legacy_landlock=false\",\n \"-c\",\n `permissions=${profile}`,\n ]),\n });\n prepared.set(policy, { cwd, privateRoot, writable: input.sandboxMode === \"workspace-write\" });\n return policy;\n}\n\ntype PreparedNativePolicy = ReturnType<typeof prepareNativePolicy>;\ntype Binding = { cwd: string; privateRoot: string; writable: boolean };\nconst prepared = new WeakMap<object, Binding>();\ndeclare const admissionBrand: unique symbol;\nexport type NativeApprovalPolicy = { readonly [admissionBrand]: true };\nconst active = new WeakMap<object, Binding & { threadId: string; signal: AbortSignal }>();\n\n/** Confirms composition and native selection, not live OS isolation (G1/G2 remain required). */\nexport function activateNativeApprovalPolicy(\n policy: PreparedNativePolicy,\n response: unknown,\n signal: AbortSignal,\n): NativeApprovalPolicy {\n const binding = prepared.get(policy);\n if (\n !binding ||\n signal.aborted ||\n !record(response) ||\n !record(response.thread) ||\n typeof response.thread.id !== \"string\" ||\n !response.thread.id ||\n response.cwd !== binding.cwd ||\n !record(response.activePermissionProfile) ||\n response.activePermissionProfile.id !== \"managed\" ||\n response.activePermissionProfile.extends !== \":read-only\"\n )\n throw invalid();\n const token = Object.freeze({}) as NativeApprovalPolicy;\n active.set(token, { ...binding, threadId: response.thread.id, signal });\n return token;\n}\n\nexport function isNativeApprovalPolicyActive(\n policy: unknown,\n threadId: string,\n): policy is NativeApprovalPolicy {\n if (!record(policy)) return false;\n const binding = active.get(policy);\n return Boolean(binding && !binding.signal.aborted && binding.threadId === threadId);\n}\n\n/** Resolve existing ancestors too, so new files cannot escape via a project symlink. */\nexport function allowsNativeApprovalPath(\n policy: NativeApprovalPolicy | undefined,\n path: string,\n access: \"read\" | \"write\",\n): boolean {\n if (!policy) return false;\n const binding = active.get(policy);\n if (\n !binding ||\n binding.signal.aborted ||\n !isAbsolute(path) ||\n hasControl(path) ||\n (access !== \"read\" && access !== \"write\") ||\n (access === \"write\" && !binding.writable)\n )\n return false;\n try {\n let existing = resolve(path);\n const suffix: string[] = [];\n while (true) {\n try {\n lstatSync(existing);\n break;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\" || dirname(existing) === existing)\n return false;\n suffix.unshift(existing.slice(dirname(existing).length + 1));\n existing = dirname(existing);\n }\n }\n const canonical = resolve(realpathSync(existing), ...suffix);\n return within(canonical, binding.cwd) && !within(canonical, binding.privateRoot);\n } catch {\n return false;\n }\n}\n"]}
1
+ {"version":3,"sources":["../bridge/src/codex/credentials.ts","../bridge/src/codex/instance-state.ts","../bridge/src/codex/native-policy.ts"],"names":["source","invalid","within","relative","isAbsolute","directory","lstatSync","realpathSync"],"mappings":"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","file":"chunk-HTGTNN2B.js","sourcesContent":["import {\n type AIProviderLlmEntry,\n type AIProviderRegistry,\n isEntryEnabled,\n type MergedAIProviderRegistry,\n parseCredentialRef,\n registryEntries,\n} from \"@skaile/workspaces/core/provider-registry\";\nimport type {\n CodexCredentialDelivery,\n CodexSubscriptionRefreshInput,\n CodexSubscriptionRefreshResult,\n} from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nconst identifier = z.string().min(1).max(4096);\nconst timestamp = z.iso.datetime({ offset: true });\nconst common = {\n configId: identifier,\n credentialVersion: z.number().int().nonnegative().safe(),\n mintedAt: timestamp,\n};\nconst subscription = z.strictObject({\n ...common,\n kind: z.literal(\"codex-subscription\"),\n accessToken: z.string().min(1).max(65536),\n chatgptAccountId: identifier,\n chatgptPlanType: identifier.optional(),\n expiresAt: timestamp,\n});\nconst delivery = z.discriminatedUnion(\"kind\", [\n subscription,\n z.strictObject({\n ...common,\n kind: z.literal(\"openai-api-key\"),\n apiKey: z.string().min(1).max(65536),\n }),\n]);\n\n/** Validate credential shape and provenance without including input values in errors. */\nexport function parseCodexCredential(value: unknown, now = Date.now()): CodexCredentialDelivery {\n const parsed = delivery.safeParse(value);\n if (!parsed.success) throw new Error(\"Invalid managed AI credential\");\n const credential = parsed.data;\n const mintedAt = Date.parse(credential.mintedAt);\n // Issuer and runtime clocks may differ slightly; expiry remains strictly unexpired.\n if (\n mintedAt > now + 60_000 ||\n (credential.kind === \"codex-subscription\" &&\n (Date.parse(credential.expiresAt) <= now || Date.parse(credential.expiresAt) <= mintedAt))\n )\n throw new Error(\"Invalid managed AI credential timestamps\");\n return credential;\n}\n\n/** Validate runtime-only refresh input against the authenticated session's pinned delivery. */\nexport function parseCodexRefreshInput(\n value: unknown,\n pinned: Extract<CodexCredentialDelivery, { kind: \"codex-subscription\" }>,\n): CodexSubscriptionRefreshInput {\n const parsed = z\n .strictObject({\n kind: z.literal(\"codex-subscription\"),\n configId: identifier,\n credentialVersion: common.credentialVersion,\n reason: z.enum([\"initial\", \"refresh\", \"retry-401\"]),\n })\n .safeParse(value);\n if (\n !parsed.success ||\n parsed.data.configId !== pinned.configId ||\n parsed.data.credentialVersion !== pinned.credentialVersion\n )\n throw new Error(\"Invalid managed AI refresh binding\");\n return parsed.data;\n}\n\n/** Accept refreshed subscription credentials only within the existing config/account binding. */\nexport function parseCodexRefreshResult(\n value: unknown,\n pinned: Extract<CodexCredentialDelivery, { kind: \"codex-subscription\" }>,\n now = Date.now(),\n): CodexSubscriptionRefreshResult {\n const parsed = z\n .discriminatedUnion(\"ok\", [\n z.strictObject({ ok: z.literal(true), credential: subscription }),\n z.strictObject({\n ok: z.literal(false),\n code: z.enum([\"not-configured\", \"revoked\", \"provider-error\", \"backend-error\"]),\n message: z.string(),\n }),\n ])\n .safeParse(value);\n if (!parsed.success) throw new Error(\"Invalid managed AI refresh result\");\n if (!parsed.data.ok) return { ...parsed.data, message: \"Managed subscription refresh failed\" };\n const credential = parseCodexCredential(parsed.data.credential, now);\n if (\n credential.kind !== \"codex-subscription\" ||\n credential.configId !== pinned.configId ||\n credential.chatgptAccountId !== pinned.chatgptAccountId ||\n credential.credentialVersion < pinned.credentialVersion\n )\n throw new Error(\"Invalid managed AI refresh binding\");\n return { ok: true, credential };\n}\n\n/**\n * The AI provider registry a managed-codex session may carry (plan §2.2).\n *\n * Managed codex runs on a platform-minted, short-lived credential that the\n * host never writes to disk and never puts in the child environment. That\n * isolation is only meaningful if the session cannot *also* be told to talk\n * somewhere else, or to pick a credential up from the environment. Restated\n * on the registry, the admissible shape is exactly one enabled `llm` entry,\n * on codex's own OpenAI surface, whose credential is a platform-injected\n * `oauth` reference. A second entry, a different surface, or an `env:` /\n * `cmd:` / `keyring:` reference is an invalid AI profile.\n *\n * `surface` is read literally — no catalog-preset fallback. No preset\n * declares `openai-codex-responses`, so a preset-shaped entry reaching here\n * is a mis-provisioned session, not a terse one.\n *\n * An absent or empty registry is *not* a violation: nothing was configured,\n * and the credential the platform minted is the only one the session has.\n * Every configured entry is judged, whichever layer it came from — the\n * control-plane session layer, the user/workspace `providers.yml` files, or\n * a runtime override.\n *\n * @returns the reason the registry is inadmissible, or `undefined` when it is.\n */\nexport function managedCodexRegistryViolation(\n registry: AIProviderRegistry | MergedAIProviderRegistry | undefined,\n): string | undefined {\n if (!registry) return undefined;\n const entries = registryEntries(registry);\n if (entries.length === 0) return undefined;\n if (entries.length > 1)\n return `registry carries ${entries.length} entries; managed codex admits exactly one`;\n const [id, entry] = entries[0];\n if (!isEntryEnabled(entry)) return `entry '${id}' is disabled`;\n if (entry.kind !== \"llm\") return `entry '${id}' is a '${entry.kind}' endpoint, not an llm one`;\n const surface = (entry as AIProviderLlmEntry).surface;\n if (surface !== \"openai-codex-responses\")\n return `entry '${id}' declares surface '${surface ?? \"none\"}'; managed codex admits only openai-codex-responses`;\n const credential = entry.credential;\n if (credential?.kind !== \"oauth\")\n return `entry '${id}' carries a '${credential?.kind ?? \"none\"}' credential; managed codex admits only a platform-injected oauth credential`;\n const ref = credential.ref ? parseCredentialRef(credential.ref) : undefined;\n if (!ref || ref.form !== \"platform\")\n return `entry '${id}' resolves its credential outside the control plane; managed codex admits only a 'platform:' reference`;\n return undefined;\n}\n","import { createHash } from \"node:crypto\";\nimport {\n chmodSync,\n existsSync,\n lstatSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n realpathSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from \"node:fs\";\nimport { isAbsolute, join, relative } from \"node:path\";\nimport { openSqlite } from \"../../../core/src/logging/sinks/sqlite-runtime.js\";\nimport type { CodexCredentialDelivery } from \"@skaile/workspaces/types\";\nimport type { AgentConfig, CodexManagedRuntimeOptions } from \"../types.js\";\n\nimport { CODEX_NATIVE_STATE_FORMAT, CodexNativeStateUnavailable } from \"./native-state.js\";\n\nconst invalid = () => new Error(\"AI_PROFILE_INVALID\");\nconst within = (path: string, root: string) => {\n const rel = relative(root, path);\n return rel === \"\" || (!rel.startsWith(\"..\") && !isAbsolute(rel));\n};\nfunction directory(path: string): void {\n if (!existsSync(path)) mkdirSync(path, { mode: 0o700 });\n const stat = lstatSync(path);\n if (!stat.isDirectory() || stat.isSymbolicLink() || stat.mode & 0o077) throw invalid();\n}\nfunction readRegular(path: string, limit: number): Buffer {\n const stat = lstatSync(path);\n if (!stat.isFile() || stat.isSymbolicLink() || stat.size > limit) throw invalid();\n return readFileSync(path);\n}\n\n/** Session-owned state lock and account-bound native resume metadata; never stores credentials. */\nexport function prepareCodexInstance(\n config: AgentConfig,\n options: CodexManagedRuntimeOptions,\n credential: CodexCredentialDelivery,\n) {\n if (!isAbsolute(options.privateDirectory) || !isAbsolute(config.cwd) || !config.sessionId)\n throw invalid();\n directory(options.privateDirectory);\n const root = realpathSync(options.privateDirectory);\n const cwd = realpathSync(config.cwd);\n if (within(root, cwd) || within(cwd, root)) throw invalid();\n const lock = join(root, \".active\");\n const leasePath = join(root, \"lease.db\");\n if (existsSync(leasePath) && !lstatSync(leasePath).isFile()) throw invalid();\n const lease = openSqlite(leasePath);\n try {\n lease.exec(\"PRAGMA busy_timeout=0; BEGIN EXCLUSIVE\");\n chmodSync(leasePath, 0o600);\n // The OS releases the database lease on crashes; this marker never owns the lock.\n rmSync(lock, { force: true });\n writeFileSync(lock, \"active\", { flag: \"wx\", mode: 0o600 });\n } catch (error) {\n lease.close();\n throw error;\n }\n let released = false;\n const release = () => {\n if (released) return;\n released = true;\n try {\n rmSync(lock, { force: true });\n } finally {\n lease.close();\n }\n };\n try {\n const key = createHash(\"sha256\")\n .update(\n JSON.stringify({\n harness: \"codex-app-server-v1\",\n session: config.sessionId,\n config: credential.configId,\n kind: credential.kind,\n account: credential.kind === \"codex-subscription\" ? credential.chatgptAccountId : null,\n }),\n )\n .digest(\"hex\");\n const slots = join(root, CODEX_NATIVE_STATE_FORMAT);\n directory(slots);\n const stateRoot = join(slots, key);\n directory(stateRoot);\n for (const name of [\"instructions.new\", \"binding.new\"])\n rmSync(join(stateRoot, name), { force: true });\n const bindingPath = join(stateRoot, \"binding.json\");\n if (config.resumeSessionId && !existsSync(bindingPath)) throw new CodexNativeStateUnavailable();\n if (existsSync(bindingPath)) {\n // Filesystem authority failures (including symlinks) are fatal, not missing state.\n const bytes = readRegular(bindingPath, 4096);\n if (config.resumeSessionId) {\n let binding: unknown;\n try {\n binding = JSON.parse(bytes.toString(\"utf8\"));\n } catch {\n throw new CodexNativeStateUnavailable();\n }\n if (\n !binding ||\n typeof binding !== \"object\" ||\n Array.isArray(binding) ||\n Object.keys(binding).sort().join(\",\") !== \"format,key,threadId\" ||\n (binding as Record<string, unknown>).format !== CODEX_NATIVE_STATE_FORMAT ||\n (binding as Record<string, unknown>).key !== key ||\n (binding as Record<string, unknown>).threadId !== config.resumeSessionId\n )\n throw new CodexNativeStateUnavailable();\n }\n }\n const home = join(stateRoot, \"home\");\n if (config.resumeSessionId && !existsSync(home)) throw new CodexNativeStateUnavailable();\n directory(home);\n for (const subdir of [\"config\", \"cache\", \"data\", \"tmp\"]) directory(join(home, subdir));\n // Auth persistence is forbidden even if a previous external process left a carrier here.\n if ([\"auth.json\", \".credentials.json\"].some((name) => existsSync(join(home, name))))\n throw invalid();\n const instructionFile = join(stateRoot, \"instructions.md\");\n const instructions = [\n ...(options.instructionFiles ?? []).map((path) =>\n readRegular(path, 1024 * 1024).toString(\"utf8\"),\n ),\n ...(config.systemPrompt ? [config.systemPrompt] : []),\n ].join(\"\\n\\n---\\n\\n\");\n const temporary = join(stateRoot, \"instructions.new\");\n writeFileSync(temporary, instructions, { mode: 0o600, flag: \"wx\" });\n renameSync(temporary, instructionFile);\n const target = join(home, \"skills\");\n if (!options.skillsDirectory && existsSync(target)) rmSync(target, { recursive: true });\n if (options.skillsDirectory) {\n const source = realpathSync(options.skillsDirectory);\n if (within(target, source) || within(source, target)) throw invalid();\n if (existsSync(target)) rmSync(target, { recursive: true });\n let files = 0;\n let entries = 0;\n let bytes = 0;\n const copy = (source: string, destination: string) => {\n if (++entries > 1024) throw invalid();\n if (lstatSync(source).isSymbolicLink()) throw invalid();\n mkdirSync(destination, { mode: 0o700 });\n for (const entry of readdirSync(source, { withFileTypes: true })) {\n const src = join(source, entry.name);\n const dst = join(destination, entry.name);\n if (entry.isSymbolicLink()) throw invalid();\n if (entry.isDirectory()) copy(src, dst);\n else {\n const content = readRegular(src, 1024 * 1024);\n bytes += content.byteLength;\n if (++files > 512 || bytes > 8 * 1024 * 1024) throw invalid();\n writeFileSync(dst, content, { mode: 0o600, flag: \"wx\" });\n }\n }\n };\n copy(options.skillsDirectory, target);\n }\n const bindThread = (threadId: string) => {\n if (!threadId || threadId.length > 4096) throw invalid();\n const next = join(stateRoot, \"binding.new\");\n writeFileSync(next, JSON.stringify({ format: CODEX_NATIVE_STATE_FORMAT, key, threadId }), {\n mode: 0o600,\n flag: \"wx\",\n });\n renameSync(next, bindingPath);\n };\n const setToolInstructions = (text: string) => {\n writeFileSync(temporary, `${instructions}\\n\\n${text}`, { mode: 0o600, flag: \"wx\" });\n renameSync(temporary, instructionFile);\n };\n return {\n root,\n stateRoot,\n cwd,\n home,\n instructionFile,\n bindThread,\n release,\n setToolInstructions,\n };\n } catch (error) {\n release();\n throw error;\n }\n}\n\n/** A replacement environment; managed auth never reads or mutates ambient process.env. */\nexport function codexInstanceEnvironment(\n input: Record<string, string>,\n home: string,\n): Record<string, string> {\n const allowed = new Set([\n \"PATH\",\n \"LANG\",\n \"LC_ALL\",\n \"TZ\",\n \"SSL_CERT_FILE\",\n \"SSL_CERT_DIR\",\n \"HTTPS_PROXY\",\n \"HTTP_PROXY\",\n \"NO_PROXY\",\n ]);\n if (\n !input ||\n Object.entries(input).some(([key, value]) => !allowed.has(key) || typeof value !== \"string\")\n )\n throw invalid();\n return {\n ...input,\n HOME: home,\n CODEX_HOME: home,\n XDG_CONFIG_HOME: join(home, \"config\"),\n XDG_CACHE_HOME: join(home, \"cache\"),\n XDG_DATA_HOME: join(home, \"data\"),\n TMPDIR: join(home, \"tmp\"),\n };\n}\n","import { lstatSync, realpathSync } from \"node:fs\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\n\nconst invalid = () => new Error(\"AI_PROFILE_INVALID\");\nconst record = (value: unknown): value is Record<string, unknown> =>\n value !== null && typeof value === \"object\" && !Array.isArray(value);\nconst within = (child: string, parent: string) => {\n const rel = relative(parent, child);\n return rel === \"\" || (!rel.startsWith(\"../\") && rel !== \"..\" && !isAbsolute(rel));\n};\nconst hasControl = (path: string) =>\n [...path].some((character) => character.charCodeAt(0) < 32 || character.charCodeAt(0) === 127);\nconst directory = (path: string) => {\n if (!isAbsolute(path) || hasControl(path)) throw invalid();\n const stat = lstatSync(path);\n if (!stat.isDirectory() || stat.isSymbolicLink()) throw invalid();\n return realpathSync(path);\n};\n\n/** Fixed pinned-native policy. No caller-supplied profile or sandbox override is admitted. */\nexport function prepareNativePolicy(input: {\n cwd: string;\n privateRoot: string;\n privateDirectory: string;\n sandboxMode: \"read-only\" | \"workspace-write\";\n}) {\n const cwd = directory(input.cwd);\n const privateRoot = directory(input.privateRoot);\n const privateDirectory = directory(input.privateDirectory);\n if (\n within(cwd, privateRoot) ||\n within(privateRoot, cwd) ||\n !within(privateDirectory, privateRoot) ||\n privateDirectory === privateRoot ||\n (input.sandboxMode !== \"read-only\" && input.sandboxMode !== \"workspace-write\")\n )\n throw invalid();\n const stat = lstatSync(privateRoot);\n if (stat.mode & 0o077 || (process.getuid && stat.uid !== 0 && stat.uid !== process.getuid()))\n throw invalid();\n const filesystem = Object.freeze({\n [cwd]: input.sandboxMode === \"workspace-write\" ? \"write\" : \"read\",\n [privateRoot]: \"deny\",\n });\n const config = Object.freeze({\n default_permissions: \"managed\",\n features: Object.freeze({ use_legacy_landlock: false }),\n permissions: Object.freeze({\n managed: Object.freeze({\n extends: \":read-only\",\n filesystem,\n network: Object.freeze({ enabled: false }),\n }),\n }),\n });\n // Native -c parses TOML, not JSON objects. Quote paths as TOML basic strings.\n const profile = `{ managed = { extends = \":read-only\", filesystem = { ${Object.entries(filesystem)\n .map(([path, access]) => `${JSON.stringify(path)} = ${JSON.stringify(access)}`)\n .join(\", \")} }, network = { enabled = false } } }`;\n const policy = Object.freeze({\n config,\n cliArgs: Object.freeze([\n \"-c\",\n 'default_permissions=\"managed\"',\n \"-c\",\n \"features.use_legacy_landlock=false\",\n \"-c\",\n `permissions=${profile}`,\n ]),\n });\n prepared.set(policy, { cwd, privateRoot, writable: input.sandboxMode === \"workspace-write\" });\n return policy;\n}\n\ntype PreparedNativePolicy = ReturnType<typeof prepareNativePolicy>;\ntype Binding = { cwd: string; privateRoot: string; writable: boolean };\nconst prepared = new WeakMap<object, Binding>();\ndeclare const admissionBrand: unique symbol;\nexport type NativeApprovalPolicy = { readonly [admissionBrand]: true };\nconst active = new WeakMap<object, Binding & { threadId: string; signal: AbortSignal }>();\n\n/** Confirms composition and native selection, not live OS isolation (G1/G2 remain required). */\nexport function activateNativeApprovalPolicy(\n policy: PreparedNativePolicy,\n response: unknown,\n signal: AbortSignal,\n): NativeApprovalPolicy {\n const binding = prepared.get(policy);\n if (\n !binding ||\n signal.aborted ||\n !record(response) ||\n !record(response.thread) ||\n typeof response.thread.id !== \"string\" ||\n !response.thread.id ||\n response.cwd !== binding.cwd ||\n !record(response.activePermissionProfile) ||\n response.activePermissionProfile.id !== \"managed\" ||\n response.activePermissionProfile.extends !== \":read-only\"\n )\n throw invalid();\n const token = Object.freeze({}) as NativeApprovalPolicy;\n active.set(token, { ...binding, threadId: response.thread.id, signal });\n return token;\n}\n\nexport function isNativeApprovalPolicyActive(\n policy: unknown,\n threadId: string,\n): policy is NativeApprovalPolicy {\n if (!record(policy)) return false;\n const binding = active.get(policy);\n return Boolean(binding && !binding.signal.aborted && binding.threadId === threadId);\n}\n\n/** Resolve existing ancestors too, so new files cannot escape via a project symlink. */\nexport function allowsNativeApprovalPath(\n policy: NativeApprovalPolicy | undefined,\n path: string,\n access: \"read\" | \"write\",\n): boolean {\n if (!policy) return false;\n const binding = active.get(policy);\n if (\n !binding ||\n binding.signal.aborted ||\n !isAbsolute(path) ||\n hasControl(path) ||\n (access !== \"read\" && access !== \"write\") ||\n (access === \"write\" && !binding.writable)\n )\n return false;\n try {\n let existing = resolve(path);\n const suffix: string[] = [];\n while (true) {\n try {\n lstatSync(existing);\n break;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code !== \"ENOENT\" || dirname(existing) === existing)\n return false;\n suffix.unshift(existing.slice(dirname(existing).length + 1));\n existing = dirname(existing);\n }\n }\n const canonical = resolve(realpathSync(existing), ...suffix);\n return within(canonical, binding.cwd) && !within(canonical, binding.privateRoot);\n } catch {\n return false;\n }\n}\n"]}
@@ -1,14 +1,14 @@
1
- import { requireValidPublisherOrExit } from './chunk-2XM3ZH36.js';
2
- import { openLibraryManager } from './chunk-BEYNH2LS.js';
3
- import { S, logErr, logWarn, logInfo, logOk } from './chunk-T2VBPVWZ.js';
4
- import { getKindRegistry, getKnownKinds } from './chunk-JJJ2G4K2.js';
5
- import { AssetManager } from './chunk-PKBLJI23.js';
6
- import { getStoreManifestsDir, storeManifestFile, LocalCatalogSource, curatedManifestOverlay, writeCuratedManifest, commitStoreManifest } from './chunk-6CYKTHNT.js';
7
- import { computeDeterministicHash, discoverAssetsInTree } from './chunk-MAZ3UXJK.js';
8
- import { WorkspaceYamlEditor } from './chunk-BRK5QZKI.js';
9
- import { findWorkspaceRoot, workspaceConfigFilename, sourceShortName, sourceCacheKey, getGlobalCacheDir, attachToBranch, resolveSourcePublisher, resolveSkWorkspaceConfig, priorSourceCacheKeys, buildProvenanceIndex, getRepoCommit } from './chunk-KJSC2ZD6.js';
1
+ import { requireValidPublisherOrExit } from './chunk-IYZAJ2J2.js';
2
+ import { openLibraryManager } from './chunk-BX7PSWJA.js';
3
+ import { getKindRegistry, getKnownKinds } from './chunk-HSF665NV.js';
4
+ import { S, logErr, logWarn, logInfo, logOk } from './chunk-76WSWPOB.js';
5
+ import { AssetManager } from './chunk-TGB4E5Z6.js';
6
+ import { getStoreManifestsDir, storeManifestFile, LocalCatalogSource, curatedManifestOverlay, writeCuratedManifest, commitStoreManifest } from './chunk-GBXQFJ4G.js';
7
+ import { computeDeterministicHash, discoverAssetsInTree } from './chunk-WENTJ5KP.js';
8
+ import { WorkspaceYamlEditor } from './chunk-ABVWUM2E.js';
9
+ import { findWorkspaceRoot, workspaceConfigFilename, sourceShortName, sourceCacheKey, getGlobalCacheDir, attachToBranch, resolveSourcePublisher, resolveSkWorkspaceConfig, priorSourceCacheKeys, buildProvenanceIndex, getRepoCommit } from './chunk-6WQGJF65.js';
10
10
  import { globalCacheRoot } from './chunk-L5VSIPQD.js';
11
- import { decodeSkaileManifest, encodeSkaileManifest } from './chunk-KPKGWXUJ.js';
11
+ import { decodeSkaileManifest, encodeSkaileManifest } from './chunk-U6S5CXKB.js';
12
12
  import { parseAssetRef } from './chunk-IZQOO6MN.js';
13
13
  import { spawnSync } from 'child_process';
14
14
  import { existsSync, realpathSync, rmSync, renameSync, mkdirSync, statSync, readdirSync, rmdirSync, readFileSync, writeFileSync } from 'fs';
@@ -380,12 +380,12 @@ function addSourceManifestCommands(src) {
380
380
  ).option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--publisher <name>", "Override the publisher (--overwrite only)").option("--dev", "Include assets under the source's dev_paths", false).option("--overwrite", "Discard curation and re-scan the full inventory", false).action((arg, opts) => runRebuild(arg, opts));
381
381
  manifest.command("verify <src>").description("Verify hashes, deps, and schema (read-only)").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--strict", "Fail on advisory checks (warnings force a nonzero exit)", false).action((arg, opts) => runVerify(arg, opts));
382
382
  manifest.command("publish <src>").description("Push the curated sidecar manifest and publish it to the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--as <namespace>", "Publisher namespace (default: your store username)").option("--sidecar-repo <url>", "Public GitHub repo you own to hold the curated manifest").option("--ref <gitref>", "Foreign source ref to ingest (branch/sha; default: main)").option("--dry-run", "Print the publish plan without pushing or calling the store", false).action(async (arg, opts) => {
383
- const { runPublish } = await import('./source-manifest-publish-IYWUMUCY.js');
383
+ const { runPublish } = await import('./source-manifest-publish-3S6PJ25W.js');
384
384
  await runPublish(arg, opts);
385
385
  });
386
386
  manifest.command("propose <src>").description("Open a PR to upstream with the sidecar manifest").action(() => notWired("propose"));
387
387
  manifest.command("yank <src>").description("Retract the source's published assets from the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--asset <ref>", "Yank only the asset matching this ref/name").action(async (arg, opts) => {
388
- const { runYank } = await import('./source-manifest-publish-IYWUMUCY.js');
388
+ const { runYank } = await import('./source-manifest-publish-3S6PJ25W.js');
389
389
  await runYank(arg, opts);
390
390
  });
391
391
  }
@@ -1073,5 +1073,5 @@ function makeSourceCommand() {
1073
1073
  }
1074
1074
 
1075
1075
  export { autoSyncForSearch, divergedSourceClones, ensureClone, findCacheKeyCollision, indexingHadFailures, legacySourceConfigHint, loadProjectEditor, localPathNotASource, makeSourceCommand, missingManifestMessage, normalizeSourceUrl, pullSourceClone, readProjectSources, resolveSource, resolveSourceArg, restoreSourceReaders, sourceClonePath, sourceLabel, sourceMatchesKey, syncProjectSources };
1076
- //# sourceMappingURL=chunk-PMWRM4EJ.js.map
1077
- //# sourceMappingURL=chunk-PMWRM4EJ.js.map
1076
+ //# sourceMappingURL=chunk-HXZ3FQQN.js.map
1077
+ //# sourceMappingURL=chunk-HXZ3FQQN.js.map