@straiffi/archon 1.11.12 → 1.11.16

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 (104) hide show
  1. package/dist/client/assets/{ActivityView-D0YxLUqI.js → ActivityView-TwJeVDII.js} +1 -1
  2. package/dist/client/assets/{GitHubActionsDialog-hUHzJXrR.js → GitHubActionsDialog-Umiz7hRS.js} +1 -1
  3. package/dist/client/assets/VerificationDialog-BVaLckVH.js +4 -0
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-CK9xwJva.js → architectureDiagram-3BPJPVTR-DG6n6a9N.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-f-jooSU5.js → blockDiagram-GPEHLZMM-fpqlAUZA.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-Dw8tFXqU.js → c4Diagram-AAUBKEIU-DD-BA8Fj.js} +1 -1
  7. package/dist/client/assets/channel-BvWs2-ry.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-Dz9sx1mJ.js → chunk-2J33WTMH-BcwQlxYR.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-DHxSlFck.js → chunk-3OPIFGDE-DCbOiRKI.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-BexTYm2L.js → chunk-5ZQYHXKU-BAgSocEO.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-BgHp49jV.js → chunk-727SXJPM-0NBz7Bl7.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-CBB0Kg-W.js → chunk-AQP2D5EJ-BgLpjpch.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-DyP7XTU4.js → chunk-CSCIHK7Q-CFV8R2WL.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-DmaAlkHd.js → chunk-KSCS5N6A-B-5OABYB.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-BbCJcuw8.js → chunk-L5ZTLDWV-BEakyLfX.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-CO4dUZ7T.js → chunk-LZXEDZCA-k1JqO5jl.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-DdIScoxN.js → chunk-ND2GUHAM-CAvkgbq4.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-CSayat4N.js → chunk-NZK2D7GU-B1XxeNv6.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-DQ6-KxSx.js → chunk-O5CBEL6O-xsxGQlBc.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-Bn4PvIOT.js → chunk-WU5MYG2G-D2RTcS5J.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-CXujfiH2.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BpQoPe_W.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-DF2DH2PP.js → dagre-BM42HDAG-DQRkT0rW.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-h2YnBn5e.js → diagram-2AECGRRQ-DLxnmFG_.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-CGIA2jQw.js → diagram-5GNKFQAL-Cu1nMouP.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-DK3VRNEP.js → diagram-KO2AKTUF-BCpHrNi4.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-CkCAtpdf.js → diagram-LMA3HP47-CIM0-geo.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-DaLX4wzh.js → diagram-OG6HWLK6-DV8jDGdy.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-CkDWu9VZ.js → erDiagram-TEJ5UH35-C-5Pkrkl.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-DKzshKa9.js → flowDiagram-I6XJVG4X-CDPh9OIS.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CfcOUVzd.js → ganttDiagram-6RSMTGT7-jncsu8xZ.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-CveUq_fP.js → gitGraphDiagram-PVQCEYII-DGWMJkfX.js} +1 -1
  33. package/dist/client/assets/{index-D_brbG-0.css → index-C1ZNfkTu.css} +1 -1
  34. package/dist/client/assets/index-C8n_tSJG.js +293 -0
  35. package/dist/client/assets/{infoDiagram-5YYISTIA-CTBxib6d.js → infoDiagram-5YYISTIA-B4xDH_w0.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH--DkW1thK.js → ishikawaDiagram-YF4QCWOH-DVdd9VXs.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-JHISSGLW-BBXicnFC.js → journeyDiagram-JHISSGLW-nOtumTZv.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-UN3LZRKU-BquOM7W0.js → kanban-definition-UN3LZRKU-DDOXGouj.js} +1 -1
  39. package/dist/client/assets/{line-DrikE93F.js → line-Bv23U4ui.js} +1 -1
  40. package/dist/client/assets/{mermaid-parser.core-DcxGTRm1.js → mermaid-parser.core-G9FbMuHU.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-CRFw0uO2.js → mermaid.core-B3CWAqqw.js} +3 -3
  42. package/dist/client/assets/{mindmap-definition-RKZ34NQL-FFNhybFW.js → mindmap-definition-RKZ34NQL-DjSz56M7.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-4H26LBE5-i6cMYse5.js → pieDiagram-4H26LBE5-DSWgdOVl.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-BYZQjQaz.js → quadrantDiagram-W4KKPZXB-DEupU1aE.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-4Y6WPE33-B4wEb1VZ.js → requirementDiagram-4Y6WPE33-BhBfAL0L.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-CT8mTepY.js → sankeyDiagram-5OEKKPKP-CbjG9Vw2.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-C6RFM__N.js → sequenceDiagram-3UESZ5HK-1Q4xZQSJ.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-AJRCARHV-ew8CGdEw.js → stateDiagram-AJRCARHV-OtJd_YEY.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Bkxwy8iL.js +1 -0
  50. package/dist/client/assets/{timeline-definition-PNZ67QCA-BOIWKsvL.js → timeline-definition-PNZ67QCA-CABkNCpN.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-CIIHVFJN--dj48T5C.js → vennDiagram-CIIHVFJN-BC2gbfhD.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-Bpu8yneZ.js → wardleyDiagram-YWT4CUSO-Bkh5qr4Q.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-2RQKCTM6-CuqF6K-6.js → xychartDiagram-2RQKCTM6-BWDBD0AE.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/server/index.js +2 -0
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/lib/agent.js +43 -10
  58. package/dist/server/lib/agent.js.map +1 -1
  59. package/dist/server/lib/agentProvider.js.map +1 -1
  60. package/dist/server/lib/codexUpgrade.js +193 -0
  61. package/dist/server/lib/codexUpgrade.js.map +1 -0
  62. package/dist/server/lib/i18n/resources.js +3 -0
  63. package/dist/server/lib/i18n/resources.js.map +1 -1
  64. package/dist/server/lib/opencodeAgentProvider.js +11 -1
  65. package/dist/server/lib/opencodeAgentProvider.js.map +1 -1
  66. package/dist/server/lib/opencodeApprovalContext.js +38 -0
  67. package/dist/server/lib/opencodeApprovalContext.js.map +1 -0
  68. package/dist/server/lib/opencodeApprovalLifecycle.js +49 -0
  69. package/dist/server/lib/opencodeApprovalLifecycle.js.map +1 -0
  70. package/dist/server/lib/opencodeApprovalRoutes.js +51 -0
  71. package/dist/server/lib/opencodeApprovalRoutes.js.map +1 -0
  72. package/dist/server/lib/opencodeApprovalSchema.js +31 -0
  73. package/dist/server/lib/opencodeApprovalSchema.js.map +1 -0
  74. package/dist/server/lib/opencodeApprovalTransport.js +713 -0
  75. package/dist/server/lib/opencodeApprovalTransport.js.map +1 -0
  76. package/dist/server/lib/opencodeApprovalTypes.js +2 -0
  77. package/dist/server/lib/opencodeApprovalTypes.js.map +1 -0
  78. package/dist/server/lib/opencodeToolApprovals.js +371 -0
  79. package/dist/server/lib/opencodeToolApprovals.js.map +1 -0
  80. package/dist/server/lib/planModeQuestions.js +4 -0
  81. package/dist/server/lib/planModeQuestions.js.map +1 -1
  82. package/dist/server/lib/restrictedFilePrompt.js +11 -3
  83. package/dist/server/lib/restrictedFilePrompt.js.map +1 -1
  84. package/dist/server/lib/reviewAgentWatchdog.js +5 -5
  85. package/dist/server/lib/reviewAgentWatchdog.js.map +1 -1
  86. package/dist/server/lib/reviewPromptContext.js +5 -3
  87. package/dist/server/lib/reviewPromptContext.js.map +1 -1
  88. package/dist/server/lib/specArtifact.js +29 -0
  89. package/dist/server/lib/specArtifact.js.map +1 -1
  90. package/dist/server/lib/toolUpgrade.js +4 -1
  91. package/dist/server/lib/toolUpgrade.js.map +1 -1
  92. package/dist/server/workers/plan.js +47 -41
  93. package/dist/server/workers/plan.js.map +1 -1
  94. package/dist/server/workers/specArtifactContract.js +40 -0
  95. package/dist/server/workers/specArtifactContract.js.map +1 -0
  96. package/dist/server/workers/specSession.js +1 -37
  97. package/dist/server/workers/specSession.js.map +1 -1
  98. package/package.json +1 -1
  99. package/dist/client/assets/VerificationDialog-D6Sr1Hpi.js +0 -4
  100. package/dist/client/assets/channel-CRzDiEyE.js +0 -1
  101. package/dist/client/assets/classDiagram-4FO5ZUOK-ydg4crE2.js +0 -1
  102. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-C8542ymn.js +0 -1
  103. package/dist/client/assets/index-DRMy2cc2.js +0 -293
  104. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DkUI5gTZ.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentProvider.js","sourceRoot":"","sources":["../../../server/lib/agentProvider.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iCAAiC,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AACjH,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,mCAAmC,EACnC,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AAgFjC,MAAM,mBAAmB,GAAG,CAC1B,aAA4B,EAC5B,iBAA+C,EAC/C,OAA4B,EAC5B,gBAAyC,EACxB,EAAE;IACnB,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IACvD,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAEzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAA2D,CAAA;QAC/D,IAAI,CAAC;YACH,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC;gBACjC,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,gBAAgB,CAAC,MAAM;gBAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB;gBACzD,kBAAkB,EAAE,gBAAgB,CAAC,kBAAkB;gBACvD,QAAQ,EAAE,KAAK;gBACf,uBAAuB,EAAE,gBAAgB,CAAC,uBAAuB;gBACjE,wBAAwB,EAAE,gBAAgB,CAAC,wBAAwB;aACpE,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAA;YACrD,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAa,EAAE,CAAA;QACjC,MAAM,YAAY,GAAa,EAAE,CAAA;QACjC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,qBAAqB,GAAG,KAAK,CAAA;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAEjF,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACtF,MAAM,YAAY,GAAG,CAAC,KAAsB,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACtF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YACrD,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;YAC3D,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC/C,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC/C,UAAU,EAAE,OAAO,EAAE,CAAA;QACvB,CAAC,CAAA;QACD,MAAM,UAAU,GAAG,CAAC,KAAc,EAAE,EAAE;YACpC,IAAI,OAAO,IAAI,qBAAqB,EAAE,CAAC;gBACrC,OAAM;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,OAAO,IAAI,qBAAqB,EAAE,CAAC;gBACrC,OAAM;YACR,CAAC;YACD,qBAAqB,GAAG,IAAI,CAAA;YAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,MAAqB,CAAC,CAAA;YAC5D,KAAK,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAG,UAA6C,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC/G,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAM;gBACR,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,MAAM,CAAC,CAAA;YAChB,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAM;gBACR,CAAC;gBACD,OAAO,GAAG,IAAI,CAAA;gBACd,OAAO,EAAE,CAAA;gBACT,MAAM,CAAC,IAAI,mCAAmC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;YAC3E,CAAC,CAAC,CAAA;QACJ,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,CAAC,IAAmB,EAAE,EAAE;YACtC,IAAI,OAAO,IAAI,qBAAqB,EAAE,CAAC;gBACrC,OAAM;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,EAAE,CAAA;YAET,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAA;YAC5D,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAA;YACnG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,0BAA0B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;oBACpE,CAAC,CAAC,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC;oBACjD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YAED,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;gBACtB,OAAM;YACR,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,4BAA4B,IAAI,EAAE,CAAA;YAClG,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,IAAI,aAAa,CAAC,CAAA;YACjE,MAAM,CAAC,OAAO,CAAC,0BAA0B,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBACpE,CAAC,CAAC,iCAAiC,CAAC,KAAK,CAAC;gBAC1C,CAAC,CAAC,KAAK,CAAC,CAAA;QACZ,CAAC,CAAA;QACD,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAA;QAE3F,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACjC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACjC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAClE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAA;QACX,CAAC;QAED,KAAK,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1C,IAAI,OAAO,EAAE,CAAC;gBACZ,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;YAC7D,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,aAA4B,EAC5B,iBAA+C,EAC/C,OAA4B,EAC5B,gBAAyC,EACxB,EAAE;IACnB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAA;IAClG,OAAO,OAAO,CAAC,0BAA0B;QACvC,CAAC,CAAC,0BAA0B,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC7D,CAAC,CAAC,GAAG,EAAE,CAAA;AACX,CAAC,CAAA"}
@@ -0,0 +1,193 @@
1
+ import { spawn } from 'child_process';
2
+ import { constants } from 'fs';
3
+ import { access, readFile, realpath, stat } from 'fs/promises';
4
+ import { delimiter, dirname, join, resolve, sep } from 'path';
5
+ const VERSION_RE = /^\d+\.\d+\.\d+(?:-(?:alpha|beta)(?:\.\d+){0,2})?$/;
6
+ const parseVersion = (output) => {
7
+ const version = output.trim().match(/^codex(?:-cli)?\s+(\S+)$/)?.[1];
8
+ if (!version || !VERSION_RE.test(version)) {
9
+ throw new Error('Could not verify the active Codex version.');
10
+ }
11
+ return version;
12
+ };
13
+ // A separate process group lets the timeout stop installer descendants as well.
14
+ export const runCodexUpgradeCommand = (command, args, env = process.env) => new Promise((resolveResult, reject) => {
15
+ let settled = false;
16
+ let stdout = '';
17
+ let stderr = '';
18
+ let outputBytes = 0;
19
+ let timer;
20
+ const child = spawn(command, [...args], {
21
+ env, stdio: ['ignore', 'pipe', 'pipe'],
22
+ detached: process.platform !== 'win32', windowsHide: true,
23
+ });
24
+ const stop = () => {
25
+ if (child.pid && process.platform !== 'win32') {
26
+ try {
27
+ process.kill(-child.pid, 'SIGKILL');
28
+ return;
29
+ }
30
+ catch {
31
+ // The process may already have exited.
32
+ }
33
+ }
34
+ child.kill('SIGKILL');
35
+ };
36
+ const fail = (error, code = null) => {
37
+ if (settled) {
38
+ return;
39
+ }
40
+ settled = true;
41
+ clearTimeout(timer);
42
+ stop();
43
+ reject(Object.assign(error, { code, stdout, stderr }));
44
+ };
45
+ const append = (stream, chunk) => {
46
+ if (settled) {
47
+ return;
48
+ }
49
+ outputBytes += Buffer.byteLength(chunk);
50
+ if (outputBytes > 4 * 1024 * 1024) {
51
+ fail(new Error('Codex updater exceeded the output limit.'));
52
+ return;
53
+ }
54
+ if (stream === 'stdout') {
55
+ stdout += chunk;
56
+ }
57
+ else {
58
+ stderr += chunk;
59
+ }
60
+ };
61
+ child.stdout?.setEncoding('utf8');
62
+ child.stderr?.setEncoding('utf8');
63
+ child.stdout?.on('data', (chunk) => append('stdout', chunk));
64
+ child.stderr?.on('data', (chunk) => append('stderr', chunk));
65
+ child.stdout?.on('error', error => fail(error));
66
+ child.stderr?.on('error', error => fail(error));
67
+ child.on('error', error => fail(error));
68
+ child.on('close', (code, signal) => {
69
+ if (settled) {
70
+ return;
71
+ }
72
+ if (code !== 0) {
73
+ fail(new Error(`Codex update command failed (${signal ?? code ?? 'unknown exit'}).`), code);
74
+ return;
75
+ }
76
+ settled = true;
77
+ clearTimeout(timer);
78
+ resolveResult({ stdout, stderr });
79
+ });
80
+ timer = setTimeout(() => fail(new Error('Codex update command timed out after 5 minutes.')), 5 * 60 * 1000);
81
+ });
82
+ export const inspectCodexInstallation = async (path = process.env.PATH ?? '') => {
83
+ if (process.platform === 'win32') {
84
+ throw new Error('Update Codex externally on Windows, then restart Archon.');
85
+ }
86
+ for (const directory of path.split(delimiter)) {
87
+ const executablePath = resolve(directory, 'codex');
88
+ try {
89
+ await access(executablePath, constants.X_OK);
90
+ if (!(await stat(executablePath)).isFile()) {
91
+ continue;
92
+ }
93
+ }
94
+ catch {
95
+ continue;
96
+ }
97
+ const realPath = await realpath(executablePath);
98
+ const installation = { executablePath, realPath, method: 'unsupported' };
99
+ const standalone = realPath.match(/^(.*)\/packages\/standalone\/releases\/[^/]+\/(?:bin\/)?codex$/);
100
+ if (standalone && executablePath !== realPath && !executablePath.startsWith(`${standalone[1]}/packages/`)) {
101
+ return { ...installation, method: 'standalone', codexHome: standalone[1] };
102
+ }
103
+ if (realPath.endsWith(`${sep}@openai${sep}codex${sep}bin${sep}codex.js`)) {
104
+ try {
105
+ const packageDirectory = dirname(dirname(realPath));
106
+ const manifest = JSON.parse(await readFile(join(packageDirectory, 'package.json'), 'utf8'));
107
+ if (manifest.name === '@openai/codex') {
108
+ return { ...installation, method: 'npm', npmRoot: dirname(dirname(packageDirectory)) };
109
+ }
110
+ }
111
+ catch {
112
+ // Unrecognized wrappers and package managers require an external update.
113
+ }
114
+ }
115
+ return installation;
116
+ }
117
+ throw new Error('Codex is no longer available on the Archon host PATH.');
118
+ };
119
+ const nativeTarget = async (run) => {
120
+ for (const url of ['https://releases.openai.com/codex/channels/latest', 'https://api.github.com/repos/openai/codex/releases/latest']) {
121
+ try {
122
+ const { stdout } = await run('curl', ['-fsSL', '--connect-timeout', '10', '--max-time', '30', url]);
123
+ const metadata = JSON.parse(stdout);
124
+ const version = metadata.tag_name?.replace(/^rust-v/, '');
125
+ if (version && VERSION_RE.test(version)) {
126
+ return version;
127
+ }
128
+ }
129
+ catch {
130
+ // Use the same metadata fallback as the official standalone installer.
131
+ }
132
+ }
133
+ throw new Error('Could not determine the latest standalone Codex release; no update was attempted.');
134
+ };
135
+ export const upgradeInstalledCodex = async ({ inspect = inspectCodexInstallation, run = runCodexUpgradeCommand } = {}) => {
136
+ let output = '';
137
+ let failureReason = 'unsupported_installation';
138
+ try {
139
+ const before = await inspect();
140
+ output = `Active Codex: ${before.executablePath} -> ${before.realPath}\n`;
141
+ if (before.method === 'unsupported') {
142
+ throw new Error('This Codex installation is not managed by the standalone installer or this npm. Update it with its original package manager, then restart Archon if PATH changed.');
143
+ }
144
+ let npmPrefix;
145
+ if (before.method === 'npm') {
146
+ const root = (await run('npm', ['root', '--global'])).stdout.trim();
147
+ if (!root || await realpath(root) !== await realpath(before.npmRoot)) {
148
+ throw new Error('The active Codex is not owned by the npm on Archon\'s PATH. Use the owning package manager to update it.');
149
+ }
150
+ npmPrefix = dirname(root);
151
+ if (npmPrefix.endsWith(`${sep}lib`)) {
152
+ npmPrefix = dirname(npmPrefix);
153
+ }
154
+ }
155
+ failureReason = 'verification_failed';
156
+ const previousVersion = parseVersion((await run(before.executablePath, ['--version'])).stdout);
157
+ const target = before.method === 'standalone'
158
+ ? await nativeTarget(run)
159
+ : JSON.parse((await run('npm', ['view', '@openai/codex', 'dist-tags.latest', '--json'])).stdout);
160
+ if (typeof target !== 'string' || !VERSION_RE.test(target)) {
161
+ throw new Error('Could not determine the target Codex version; no update was attempted.');
162
+ }
163
+ output += `Target Codex version: ${target}\n`;
164
+ let updated;
165
+ if (before.method === 'standalone') {
166
+ const installer = await run('curl', ['-fsSL', '--connect-timeout', '10', '--max-time', '30', 'https://chatgpt.com/codex/install.sh']);
167
+ if (!installer.stdout.startsWith('#!/bin/sh')) {
168
+ throw new Error('The Codex installer response was not a shell script; no update was attempted.');
169
+ }
170
+ updated = await run('sh', ['-c', installer.stdout, 'codex-installer', '--release', target], {
171
+ ...process.env, CODEX_NON_INTERACTIVE: '1', CODEX_HOME: before.codexHome,
172
+ CODEX_INSTALL_DIR: dirname(before.executablePath), CODEX_INSTALL_DAEMON_ONLY: '0', CODEX_INSTALL_DEFER_SELECTION: '0',
173
+ });
174
+ }
175
+ else {
176
+ updated = await run('npm', ['install', '--global', '--prefix', npmPrefix, `@openai/codex@${target}`]);
177
+ }
178
+ output += updated.stdout + updated.stderr;
179
+ const after = await inspect();
180
+ output += `\nAfter update: ${after.executablePath} -> ${after.realPath}\n`;
181
+ const version = parseVersion((await run(after.executablePath, ['--version'])).stdout);
182
+ if (after.executablePath !== before.executablePath || after.method !== before.method || after.codexHome !== before.codexHome || after.npmRoot !== before.npmRoot || version !== target) {
183
+ throw new Error(`Codex update verification failed: expected ${target}, active version is ${version}. Check for multiple installations and PATH differences between Archon and your terminal.`);
184
+ }
185
+ return { ok: true, exitCode: 0, output: output.slice(-2000), version, upToDate: previousVersion === target };
186
+ }
187
+ catch (error) {
188
+ const details = error;
189
+ output += `\n${details.stdout ?? ''}${details.stderr ?? ''}${details.message}`;
190
+ return { ok: false, exitCode: typeof details.code === 'number' ? details.code : null, output: output.slice(-2000), version: null, upToDate: false, failureReason };
191
+ }
192
+ };
193
+ //# sourceMappingURL=codexUpgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codexUpgrade.js","sourceRoot":"","sources":["../../../server/lib/codexUpgrade.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@ export const serverResources = {
4
4
  common: {
5
5
  appName: 'Archon',
6
6
  requestFailed: 'Request failed.',
7
+ specArtifact: {
8
+ invalidDependency: 'Spec artifact dependencies[{{index}}] is invalid. Each dependency must contain distinct, non-empty string fields "blocker_key" (the prerequisite ticket key) and "dependent_key" (the ticket waiting for it)',
9
+ },
7
10
  attachments: {
8
11
  emptyResponse: 'I reviewed the attachments, but I could not produce a textual response. Please try again with a short note about what you want me to focus on.',
9
12
  onlyTitle: 'Attachments only',
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../server/lib/i18n/resources.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE;QACF,MAAM,EAAE;YACN,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,iBAAiB;YAChC,WAAW,EAAE;gBACX,aAAa,EAAE,gJAAgJ;gBAC/J,SAAS,EAAE,kBAAkB;gBAC7B,eAAe,EAAE,wJAAwJ;gBACzK,IAAI,EAAE,mFAAmF;gBACzF,MAAM,EAAE,wGAAwG;gBAChH,aAAa,EAAE,oGAAoG;gBACnH,aAAa,EAAE,uGAAuG;gBACtH,SAAS,EAAE,wCAAwC;gBACnD,UAAU,EAAE,wCAAwC;gBACpD,SAAS,EAAE,yFAAyF;gBACpG,aAAa,EAAE,4DAA4D;gBAC3E,UAAU,EAAE,sCAAsC;gBAClD,YAAY,EAAE,gDAAgD;gBAC9D,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,sEAAsE;gBAChF,QAAQ,EAAE,sEAAsE;gBAChF,YAAY,EAAE,6DAA6D;gBAC3E,SAAS,EAAE,+CAA+C;gBAC1D,QAAQ,EAAE,iDAAiD;gBAC3D,WAAW,EAAE,qEAAqE;gBAClF,QAAQ,EAAE,6CAA6C;gBACvD,aAAa,EAAE,2EAA2E;gBAC1F,WAAW,EAAE,kFAAkF;gBAC/F,aAAa,EAAE,kDAAkD;gBACjE,QAAQ,EAAE,uDAAuD;gBACjE,cAAc,EAAE,6BAA6B;aAC9C;YACD,aAAa,EAAE;gBACb,QAAQ,EAAE,uBAAuB;gBACjC,MAAM,EAAE,2DAA2D;gBACnE,aAAa,EAAE,uEAAuE;gBACtF,eAAe,EAAE,uEAAuE;gBACxF,aAAa,EAAE,kDAAkD;gBACjE,SAAS,EAAE,wBAAwB;gBACnC,iBAAiB,EAAE,kFAAkF;gBACrG,qBAAqB,EAAE,4EAA4E;aACpG;SACF;KACF;CACO,CAAA"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../server/lib/i18n/resources.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE;QACF,MAAM,EAAE;YACN,OAAO,EAAE,QAAQ;YACjB,aAAa,EAAE,iBAAiB;YAChC,YAAY,EAAE;gBACZ,iBAAiB,EAAE,8MAA8M;aAClO;YACD,WAAW,EAAE;gBACX,aAAa,EAAE,gJAAgJ;gBAC/J,SAAS,EAAE,kBAAkB;gBAC7B,eAAe,EAAE,wJAAwJ;gBACzK,IAAI,EAAE,mFAAmF;gBACzF,MAAM,EAAE,wGAAwG;gBAChH,aAAa,EAAE,oGAAoG;gBACnH,aAAa,EAAE,uGAAuG;gBACtH,SAAS,EAAE,wCAAwC;gBACnD,UAAU,EAAE,wCAAwC;gBACpD,SAAS,EAAE,yFAAyF;gBACpG,aAAa,EAAE,4DAA4D;gBAC3E,UAAU,EAAE,sCAAsC;gBAClD,YAAY,EAAE,gDAAgD;gBAC9D,QAAQ,EAAE,gCAAgC;gBAC1C,QAAQ,EAAE,sEAAsE;gBAChF,QAAQ,EAAE,sEAAsE;gBAChF,YAAY,EAAE,6DAA6D;gBAC3E,SAAS,EAAE,+CAA+C;gBAC1D,QAAQ,EAAE,iDAAiD;gBAC3D,WAAW,EAAE,qEAAqE;gBAClF,QAAQ,EAAE,6CAA6C;gBACvD,aAAa,EAAE,2EAA2E;gBAC1F,WAAW,EAAE,kFAAkF;gBAC/F,aAAa,EAAE,kDAAkD;gBACjE,QAAQ,EAAE,uDAAuD;gBACjE,cAAc,EAAE,6BAA6B;aAC9C;YACD,aAAa,EAAE;gBACb,QAAQ,EAAE,uBAAuB;gBACjC,MAAM,EAAE,2DAA2D;gBACnE,aAAa,EAAE,uEAAuE;gBACtF,eAAe,EAAE,uEAAuE;gBACxF,aAAa,EAAE,kDAAkD;gBACjE,SAAS,EAAE,wBAAwB;gBACnC,iBAAiB,EAAE,kFAAkF;gBACrG,qBAAqB,EAAE,4EAA4E;aACpG;SACF;KACF;CACO,CAAA"}
@@ -3,6 +3,7 @@ import { OpencodeModelResolutionError, OpencodePermissionRejectedError, parseOpe
3
3
  import { extractOpencodePromptOutput } from './opencodePromptOutput.js';
4
4
  import { parseOpencodeError } from './opencodeErrors.js';
5
5
  import { buildOpencodeRunInvocation, getOpencodeCliCompatibility, inspectOpencodeRelease, requireSupportedOpencodeCompatibility, } from './opencodeCli.js';
6
+ import { buildOpencodeApprovalInvocation, connectOpencodeStreamingInvocation } from './opencodeApprovalTransport.js';
6
7
  const resolveCompatibility = (runtimeIdentity, observedCompatibility) => {
7
8
  if (observedCompatibility) {
8
9
  if (runtimeIdentity && (observedCompatibility.runtimeIdentity.version !== runtimeIdentity.version
@@ -29,8 +30,12 @@ const buildInvocation = ({ model, variant, planAgent, prompt, opencodeRuntimeIde
29
30
  variant,
30
31
  });
31
32
  };
32
- const buildStreamingInvocation = ({ prompt, files = [], model, variant, mode, resumeSessionId, opencodeRuntimeIdentity, opencodeCompatibility, }) => {
33
+ const buildStreamingInvocation = (request) => {
34
+ const { prompt, files = [], model, variant, mode, resumeSessionId, opencodeRuntimeIdentity, opencodeCompatibility, } = request;
33
35
  const compatibility = resolveCompatibility(opencodeRuntimeIdentity, opencodeCompatibility);
36
+ if (request.opencodeApprovalContext) {
37
+ return buildOpencodeApprovalInvocation(compatibility, request.mode);
38
+ }
34
39
  return {
35
40
  ...buildOpencodeRunInvocation(compatibility, {
36
41
  prompt,
@@ -142,6 +147,10 @@ const classifyExecutionFailure = (failure) => {
142
147
  ? failure.code === 'unavailable-executable'
143
148
  : failure?.code === 'ENOENT';
144
149
  if (unavailable) {
150
+ const executable = failure?.path;
151
+ if (executable === 'node' || (failure instanceof Error && failure.message.includes('executable "node"'))) {
152
+ return new Error('OpenCode approval streaming requires Node.js 18 or newer in the execution environment for the guest stdio relay.', { cause: failure });
153
+ }
145
154
  return new Error('OpenCode CLI is not available.');
146
155
  }
147
156
  return failure instanceof Error ? failure : new Error(String(failure));
@@ -149,6 +158,7 @@ const classifyExecutionFailure = (failure) => {
149
158
  export const opencodeAgentProvider = {
150
159
  buildInvocation,
151
160
  buildStreamingInvocation,
161
+ connectStreamingInvocation: connectOpencodeStreamingInvocation,
152
162
  interpretOneShotOutput,
153
163
  classifyExecutionFailure,
154
164
  };
@@ -1 +1 @@
1
- {"version":3,"file":"opencodeAgentProvider.js","sourceRoot":"","sources":["../../../server/lib/opencodeAgentProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencodeAgentProvider.js","sourceRoot":"","sources":["../../../server/lib/opencodeAgentProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import db from '../db.js';
2
+ import { getOpencodeApprovalWaitMilliseconds, isOpencodeApprovalPending } from './opencodeToolApprovals.js';
3
+ import { appendRestrictedFilePrompt } from './restrictedFilePrompt.js';
4
+ import { PLAN_MODE_RUNTIME_PROMPT_RULES, OPENCODE_APPROVAL_PLAN_RUNTIME_PROMPT_RULES } from './planModeQuestions.js';
5
+ import { buildReviewAccessPromptBlock } from './reviewPromptContext.js';
6
+ export const resolveOpencodeApprovalContext = ({ tool, parentKind, parentId, executionContext, io }) => {
7
+ if (tool !== 'opencode' || !parentId || !['ticket', 'chat', 'spec'].includes(parentKind)) {
8
+ return undefined;
9
+ }
10
+ const tables = { ticket: 'tickets', chat: 'chat_sessions', spec: 'spec_sessions' };
11
+ const kind = parentKind;
12
+ const owner = db.prepare(`SELECT project_id FROM ${tables[kind]} WHERE id = ?`).get(parentId);
13
+ const projectId = owner?.project_id ?? executionContext?.projectId;
14
+ if (!projectId || (owner && executionContext && owner.project_id !== executionContext.projectId)) {
15
+ return undefined;
16
+ }
17
+ return { projectId, parentKind: kind, parentId, executionRunId: executionContext?.runId, io: io };
18
+ };
19
+ // Only scoped transcript launches can relax the legacy headless restrictions.
20
+ export const prepareOpencodeApprovalPrompt = (prompt, context) => {
21
+ if (!context) {
22
+ return prompt;
23
+ }
24
+ const reviewBlock = prompt.match(/<review_access_boundaries>\nReview working directory: (.+)\n[\s\S]*?<\/review_access_boundaries>/);
25
+ let prepared = prompt.replaceAll(PLAN_MODE_RUNTIME_PROMPT_RULES, OPENCODE_APPROVAL_PLAN_RUNTIME_PROMPT_RULES);
26
+ if (reviewBlock) {
27
+ prepared = prepared.replace(reviewBlock[0], buildReviewAccessPromptBlock(JSON.parse(reviewBlock[1]), true));
28
+ }
29
+ return appendRestrictedFilePrompt(prepared, true);
30
+ };
31
+ export const createOpencodeApprovalClock = (context) => {
32
+ const baseline = context ? getOpencodeApprovalWaitMilliseconds(context) : 0;
33
+ return {
34
+ isPending: () => Boolean(context && isOpencodeApprovalPending(context)),
35
+ now: () => Date.now() - (context ? Math.max(0, getOpencodeApprovalWaitMilliseconds(context) - baseline) : 0),
36
+ };
37
+ };
38
+ //# sourceMappingURL=opencodeApprovalContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeApprovalContext.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAA;AAGzB,OAAO,EAAE,mCAAmC,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AAC3G,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,8BAA8B,EAAE,2CAA2C,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AAUvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAW,EAAuC,EAAE;IACnJ,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;IAClF,MAAM,IAAI,GAAG,UAAmD,CAAA;IAChE,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAuC,CAAA;IACnI,MAAM,SAAS,GAAG,KAAK,EAAE,UAAU,IAAI,gBAAgB,EAAE,SAAS,CAAA;IAClE,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,IAAI,gBAAgB,IAAI,KAAK,CAAC,UAAU,KAAK,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACjG,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,EAAmC,EAAE,CAAA;AACpI,CAAC,CAAA;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,MAAc,EAAE,OAAiC,EAAE,EAAE;IACjG,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAA;IACf,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,kGAAkG,CAAC,CAAA;IACpI,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,EAAE,2CAA2C,CAAC,CAAA;IAC7G,IAAI,WAAW,EAAE,CAAC;QAChB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAW,EAAE,IAAI,CAAC,CAAC,CAAA;IACvH,CAAC;IACD,OAAO,0BAA0B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAiC,EAAE,EAAE;IAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3E,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,CAAC;QACvE,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,mCAAmC,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7G,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { appendLifecycleEvent, getExecutionRun } from './executionRuns.js';
2
+ // Lifecycle metadata is capped at 16 KiB, including JSON escaping and UTF-8 bytes.
3
+ // Only copy the broker's safe persisted projection, never the provider's raw metadata.
4
+ const fitMetadata = (metadata) => {
5
+ while (Buffer.byteLength(JSON.stringify({ opencode_approval: metadata }), 'utf8') > 16 * 1024) {
6
+ metadata.evidenceTruncated = true;
7
+ if (metadata.patterns.length > 0) {
8
+ metadata.patterns.pop();
9
+ }
10
+ else if (metadata.command) {
11
+ metadata.command = metadata.command.slice(0, Math.floor(metadata.command.length / 2));
12
+ }
13
+ else if (metadata.description) {
14
+ metadata.description = metadata.description.slice(0, Math.floor(metadata.description.length / 2));
15
+ }
16
+ else {
17
+ throw new Error('OpenCode approval lifecycle identity exceeds metadata limit');
18
+ }
19
+ }
20
+ return metadata;
21
+ };
22
+ // Call inside the approval update transaction with a deferred realtime broadcaster.
23
+ // Unowned approvals remain audited in opencode_tool_approvals: the lifecycle API
24
+ // requires a real run, so neither a synthetic agent run nor an inferred owner is used.
25
+ export const appendOpencodeApprovalLifecycleEvent = (approval, nativeRequestId, reason, emitter) => {
26
+ if (!approval.executionRunId || !getExecutionRun(approval.projectId, approval.executionRunId)) {
27
+ return null;
28
+ }
29
+ if (!approval.resolvedAt || approval.status === 'pending') {
30
+ throw new Error('OpenCode approval lifecycle events require a resolved approval');
31
+ }
32
+ const source = reason === 'operator_decision' ? 'operator' : reason === 'native_reply' ? 'native' : 'system';
33
+ const eventType = reason === 'approval_expired' ? 'opencode_approval_expired'
34
+ : approval.status === 'invalidated' ? 'opencode_approval_invalidated'
35
+ : approval.status === 'cancelled' ? 'opencode_approval_cancelled' : 'opencode_approval_decided';
36
+ const metadata = fitMetadata({
37
+ id: approval.id, permission: approval.permission, patterns: [...approval.patterns],
38
+ command: approval.command ?? null, description: approval.description ?? null,
39
+ parentKind: approval.parentKind, parentId: approval.parentId,
40
+ nativeSessionId: approval.nativeSessionId, nativeRequestId,
41
+ decision: approval.decision ?? null, status: approval.status, source,
42
+ createdAt: approval.createdAt, resolvedAt: approval.resolvedAt, reason,
43
+ });
44
+ return appendLifecycleEvent({
45
+ projectId: approval.projectId, runId: approval.executionRunId, eventType,
46
+ metadataSchemaVersion: 1, metadata: { opencode_approval: metadata },
47
+ }, emitter);
48
+ };
49
+ //# sourceMappingURL=opencodeApprovalLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeApprovalLifecycle.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalLifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { getProjectById } from './projects.js';
2
+ import { decideOpencodeToolApproval, getOpencodeToolApproval, listOpencodeToolApprovals, OpencodeApprovalConflictError } from './opencodeToolApprovals.js';
3
+ const parameter = (value) => Array.isArray(value) ? value[0] : value;
4
+ export const registerOpencodeApprovalRoutes = (app, options = {}) => {
5
+ // The host serves /projects directly; /api is also supported for shared frontend clients.
6
+ for (const base of ['/projects/:projectId/opencode-approvals', '/api/projects/:projectId/opencode-approvals']) {
7
+ app.get(base, (req, res) => {
8
+ const projectId = parameter(req.params.projectId);
9
+ if (!getProjectById(projectId)) {
10
+ return res.status(404).json({ error: 'Not found', reason: 'project_not_found' });
11
+ }
12
+ const { parentKind, parentId, status } = req.query;
13
+ if ((parentKind !== undefined && !['ticket', 'chat', 'spec'].includes(parentKind))
14
+ || (parentId !== undefined && (typeof parentId !== 'string' || parentId.length === 0 || parentId.length > 256))
15
+ || (status !== undefined && !['pending', 'approved', 'rejected', 'cancelled', 'invalidated'].includes(status))) {
16
+ return res.status(400).json({ error: 'Invalid approval filter', reason: 'invalid_filter' });
17
+ }
18
+ res.setHeader('Cache-Control', 'no-store');
19
+ return res.json({ approvals: listOpencodeToolApprovals({ projectId, parentKind, parentId, status }) });
20
+ });
21
+ app.post(`${base}/:id/decision`, (req, res) => {
22
+ const projectId = parameter(req.params.projectId);
23
+ if (!getProjectById(projectId)) {
24
+ return res.status(404).json({ error: 'Not found', reason: 'project_not_found' });
25
+ }
26
+ const body = req.body;
27
+ if (!body || typeof body !== 'object' || Array.isArray(body)
28
+ || Object.keys(body).some(key => key !== 'decision' && key !== 'expectedRevision')
29
+ || !['once', 'session', 'reject'].includes(body.decision)
30
+ || !Number.isSafeInteger(body.expectedRevision) || body.expectedRevision < 1) {
31
+ return res.status(400).json({ error: 'Invalid approval decision', reason: 'invalid_decision_request' });
32
+ }
33
+ const id = parameter(req.params.id);
34
+ if (!getOpencodeToolApproval(projectId, id)) {
35
+ return res.status(404).json({ error: 'Not found', reason: 'approval_not_found' });
36
+ }
37
+ try {
38
+ const approval = decideOpencodeToolApproval({ projectId, id, decision: body.decision, expectedRevision: body.expectedRevision }, options.emitter);
39
+ res.setHeader('Cache-Control', 'no-store');
40
+ return res.json({ approval });
41
+ }
42
+ catch (error) {
43
+ if (error instanceof OpencodeApprovalConflictError) {
44
+ return res.status(409).json({ error: error.message, reason: error.reason });
45
+ }
46
+ throw error;
47
+ }
48
+ });
49
+ }
50
+ };
51
+ //# sourceMappingURL=opencodeApprovalRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeApprovalRoutes.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export const initializeOpencodeApprovalSchema = (db) => {
2
+ db.exec(`
3
+ CREATE TABLE IF NOT EXISTS opencode_tool_approvals (
4
+ id TEXT PRIMARY KEY,
5
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
6
+ parent_kind TEXT NOT NULL CHECK (parent_kind IN ('ticket', 'chat', 'spec')),
7
+ parent_id TEXT NOT NULL,
8
+ execution_run_id TEXT REFERENCES execution_runs(id) ON DELETE CASCADE,
9
+ native_session_id TEXT NOT NULL,
10
+ native_request_id TEXT NOT NULL,
11
+ projection_json TEXT NOT NULL,
12
+ status TEXT NOT NULL CHECK (status IN ('pending', 'approved', 'rejected', 'cancelled', 'invalidated')),
13
+ revision INTEGER NOT NULL DEFAULT 1,
14
+ created_at TEXT NOT NULL,
15
+ resolved_at TEXT,
16
+ consumed_at TEXT,
17
+ resolution_reason TEXT,
18
+ UNIQUE (project_id, parent_kind, parent_id, native_session_id, native_request_id)
19
+ );
20
+ CREATE INDEX IF NOT EXISTS opencode_tool_approvals_parent
21
+ ON opencode_tool_approvals(project_id, parent_kind, parent_id, created_at);
22
+ CREATE INDEX IF NOT EXISTS opencode_tool_approvals_pending_run
23
+ ON opencode_tool_approvals(execution_run_id, status);
24
+ CREATE TABLE IF NOT EXISTS opencode_approval_waits (
25
+ execution_run_id TEXT PRIMARY KEY REFERENCES execution_runs(id) ON DELETE CASCADE,
26
+ project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
27
+ previous_domain_status TEXT
28
+ );
29
+ `);
30
+ };
31
+ //# sourceMappingURL=opencodeApprovalSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencodeApprovalSchema.js","sourceRoot":"","sources":["../../../server/lib/opencodeApprovalSchema.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,EAAqB,EAAE,EAAE;IACxE,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BP,CAAC,CAAA;AACJ,CAAC,CAAA"}