@qwen-code/qwen-code 0.23.5-dev.codemode-responses.20260915.f024b37689 → 0.23.5-preview.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.
- package/bundled/computer-use/SKILL.md +24 -3
- package/bundled/qc-helper/docs/configuration/model-providers.md +43 -0
- package/bundled/qc-helper/docs/configuration/settings.md +10 -9
- package/bundled/qc-helper/docs/extension/agent-plugins.md +1 -0
- package/bundled/qc-helper/docs/extension/introduction.md +49 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +39 -4
- package/bundled/qc-helper/docs/features/channels/overview.md +12 -0
- package/bundled/qc-helper/docs/features/commands.md +57 -52
- package/bundled/qc-helper/docs/features/computer-use.md +1 -1
- package/bundled/qc-helper/docs/features/goals.md +8 -0
- package/bundled/qc-helper/docs/features/hooks.md +16 -0
- package/bundled/qc-helper/docs/qwen-serve.md +3 -1
- package/bundled/workflow-authoring/SKILL.md +48 -22
- package/chunks/{MaxSizedBox-BFMIFJWT.js → MaxSizedBox-FCF6M53W.js} +40 -43
- package/chunks/{StandaloneSessionPicker-4ZH7MOVG.js → StandaloneSessionPicker-V635V72I.js} +60 -63
- package/chunks/{acp-startup-profiler-RUQNTNU5.js → acp-startup-profiler-MOOU37VM.js} +2 -2
- package/chunks/{acp-subagent-executor-AHMVA4P3.js → acp-subagent-executor-TND6W2O5.js} +46 -47
- package/chunks/{acpAgent-UMAJ3XR3.js → acpAgent-3DPWZTNC.js} +954 -322
- package/chunks/{agent-CXB2CCQN.js → agent-KIHGINKN.js} +27 -30
- package/chunks/{agent-headless-7D5ZC736.js → agent-headless-EJ4QOUSM.js} +27 -30
- package/chunks/{anthropicContentGenerator-H5YPXIDE.js → anthropicContentGenerator-4FGOM5LK.js} +46 -64
- package/chunks/{artifact-tool-MFGORTWZ.js → artifact-tool-MUTNH4NI.js} +1 -1
- package/chunks/{askUserQuestion-WS4GUT7C.js → askUserQuestion-AKIRLVB5.js} +1 -1
- package/chunks/bareMode-QWKZPLPX.js +14 -0
- package/chunks/{bridge-A2WKX6IK.js → bridge-MUX5YJZT.js} +46 -49
- package/chunks/{ca-GZ4FDJU2.js → ca-WC3A5B3Q.js} +12 -1
- package/chunks/{channel-management-service-AFVIT4VH.js → channel-management-service-RRILWSXX.js} +4 -4
- package/chunks/{channel-settings-store-AXJIN7HG.js → channel-settings-store-7CBIRZER.js} +51 -54
- package/chunks/{channel-worker-group-JR6JOELM.js → channel-worker-group-3DUJFZJR.js} +8 -8
- package/chunks/{channel-worker-manager-AVKJEZFL.js → channel-worker-manager-E5UW2VLA.js} +8 -8
- package/chunks/{channel-worker-supervisor-OOYY7BAQ.js → channel-worker-supervisor-VN33GSEC.js} +5 -5
- package/chunks/{chunk-2YMRRI2C.js → chunk-2C5TR6HN.js} +82 -9
- package/chunks/{chunk-YDFOHRS5.js → chunk-2GP6BQ2J.js} +1 -1
- package/chunks/{chunk-RN6BU77T.js → chunk-347O2YZJ.js} +158 -290
- package/chunks/{chunk-LTINUI3O.js → chunk-36NRLIR6.js} +10 -8
- package/chunks/{chunk-AXZMWAJV.js → chunk-36SDZ2Q4.js} +8 -0
- package/chunks/{chunk-QR4Q425T.js → chunk-3BZI5GDP.js} +1 -1
- package/chunks/{chunk-C3YMBSLR.js → chunk-3HTUE6ZR.js} +3 -3
- package/chunks/{chunk-QS5Q5F42.js → chunk-3LLEB5CU.js} +2 -2
- package/chunks/{chunk-FPPG5Y3W.js → chunk-3UGMLA4V.js} +10 -8
- package/chunks/{chunk-66N6C4EH.js → chunk-3WILPKTJ.js} +2 -2
- package/chunks/{chunk-SROLVJFY.js → chunk-3WWPEFMX.js} +1 -1
- package/chunks/{chunk-ZKIAGIGH.js → chunk-3XBUCOWS.js} +1 -1
- package/chunks/{chunk-6RQFMGN2.js → chunk-43Y26NPF.js} +3 -3
- package/chunks/{chunk-INGBUYL6.js → chunk-4FLUQWJ4.js} +1 -1
- package/chunks/{chunk-S77FFY67.js → chunk-4JFLRHNE.js} +1 -1
- package/chunks/{chunk-MJHLKWGJ.js → chunk-4QPVZA5J.js} +70 -23
- package/chunks/{chunk-XX5HQLCZ.js → chunk-6OTF7TTE.js} +32 -1
- package/chunks/{chunk-4Y2I3CI3.js → chunk-6USYH3EU.js} +99 -6
- package/chunks/{chunk-Q3TFRP5G.js → chunk-7D4CV7JH.js} +102 -9
- package/chunks/{chunk-EWJTAP3Y.js → chunk-7O5PYQ3M.js} +20 -1
- package/chunks/chunk-ADN5KESB.js +28 -0
- package/chunks/chunk-AKRSSKUT.js +229 -0
- package/chunks/{chunk-54YUXX7X.js → chunk-AQP3H22J.js} +1 -1
- package/chunks/{chunk-EQWKIA72.js → chunk-AUX2FL5T.js} +24 -7
- package/chunks/{chunk-YGFJ6BRT.js → chunk-AZCTY64Z.js} +1 -1
- package/chunks/{chunk-QLX4D55R.js → chunk-B5TJK7B3.js} +1 -1
- package/chunks/{chunk-HXMDDII6.js → chunk-B6RMK4ED.js} +4 -4
- package/chunks/{chunk-UCKM6KCJ.js → chunk-BHG3H6OZ.js} +1 -1
- package/chunks/{chunk-JLF2AQAL.js → chunk-BHVF3R6B.js} +7 -5
- package/chunks/{chunk-HFJSQ4GL.js → chunk-BTICBRPL.js} +1 -1
- package/chunks/{chunk-KZCK5JUN.js → chunk-C3T6HPNM.js} +1 -1
- package/chunks/{chunk-FCLMJS6N.js → chunk-CDDP4ONL.js} +164 -27
- package/chunks/{chunk-Y3ZXDBUL.js → chunk-CQPM66MG.js} +4 -4
- package/chunks/{chunk-WKVZES7O.js → chunk-CXONOVBN.js} +1 -1
- package/chunks/{chunk-TYBRGFYL.js → chunk-CXY6BICQ.js} +501 -479
- package/chunks/{chunk-W23HOFDK.js → chunk-D3KVGQUV.js} +1 -1
- package/chunks/{chunk-LMJSPC55.js → chunk-D7JMO2GP.js} +3 -7
- package/chunks/{chunk-CXXAZ2LZ.js → chunk-DC4ZNGH4.js} +1 -1
- package/chunks/{chunk-FMLBBXHB.js → chunk-DRAX5YAI.js} +2 -2
- package/chunks/{chunk-DOTF2PF2.js → chunk-DRD6VBNH.js} +1 -1
- package/chunks/chunk-DX6JTDMR.js +105 -0
- package/chunks/{chunk-MNRK6MIH.js → chunk-E2VSBAFA.js} +53 -11
- package/chunks/{chunk-QJKR2P2K.js → chunk-EIBECN2J.js} +3 -3
- package/chunks/{chunk-LWWRJRCD.js → chunk-ESBYWATJ.js} +1 -1
- package/chunks/{chunk-3544ZEGZ.js → chunk-FASYATAZ.js} +5 -7
- package/chunks/{chunk-6YUS5JCV.js → chunk-FBY32737.js} +4 -4
- package/chunks/{chunk-LBWIJ5T7.js → chunk-FCPJXKDG.js} +10 -7
- package/chunks/{chunk-FX6GJIPZ.js → chunk-FEDFZBGR.js} +3 -3
- package/chunks/{chunk-DQ4LBRZN.js → chunk-FIJODK52.js} +3 -3
- package/chunks/{chunk-HVSRWLOW.js → chunk-FX6PZBOV.js} +3 -3
- package/chunks/{chunk-L6DIANLD.js → chunk-G45B3INR.js} +1 -1
- package/chunks/{chunk-EYLUKEYW.js → chunk-GI7SLDOI.js} +2 -2
- package/chunks/chunk-GJKP6XOB.js +1092 -0
- package/chunks/{chunk-I6YJZGHS.js → chunk-GSAOVDTH.js} +9 -9
- package/chunks/{chunk-XK4UQSIR.js → chunk-H6L4NEAT.js} +1 -1
- package/chunks/{chunk-GMCEFKNR.js → chunk-HNFKYKHH.js} +103 -22
- package/chunks/{chunk-6XDB3FR4.js → chunk-HX4WXX3H.js} +301 -138
- package/chunks/{chunk-HG46TTAG.js → chunk-HXUI5D4H.js} +1 -1
- package/chunks/{chunk-QI4WBHPF.js → chunk-HYHSMTRA.js} +4 -4
- package/chunks/{chunk-ZUKC5J6Q.js → chunk-IKBEIDOH.js} +14 -14
- package/chunks/{chunk-LCAJ63TF.js → chunk-INN5ORKX.js} +1 -1
- package/chunks/{chunk-GNV2SFO7.js → chunk-IVFTLUZD.js} +26 -1
- package/chunks/{chunk-GNKSR3FU.js → chunk-IXO2OCIP.js} +2 -2
- package/chunks/{chunk-SNT634Q6.js → chunk-K4XMAIRX.js} +30 -33
- package/chunks/{chunk-WBP64MZR.js → chunk-KAYC5FBN.js} +5269 -2785
- package/chunks/chunk-KEM7MWS7.js +3541 -0
- package/chunks/{chunk-ADQUK6WA.js → chunk-KVC7HZWK.js} +1 -1
- package/chunks/{chunk-UQXURNLM.js → chunk-KVQ3QL4K.js} +3 -3
- package/chunks/{chunk-7U5G6JXI.js → chunk-KWYTSSTJ.js} +105 -6
- package/chunks/{chunk-Q4G2YPI4.js → chunk-L2A5VBDL.js} +3019 -2352
- package/chunks/{chunk-WD6YQI5M.js → chunk-L3SNMEDW.js} +1 -1
- package/chunks/{chunk-BYUAT5OC.js → chunk-L7TJUPNR.js} +19 -3
- package/chunks/{chunk-ABNX6E6K.js → chunk-LFKXIOGC.js} +1 -1
- package/chunks/{chunk-GFAK6DYU.js → chunk-LO2UWNO5.js} +2 -2
- package/chunks/{chunk-67ZDP7UX.js → chunk-M22WLKLI.js} +5 -5
- package/chunks/{chunk-54B2LTKP.js → chunk-M23GFJ5B.js} +24 -5
- package/chunks/{chunk-VGY2RGXL.js → chunk-M4U2LTD2.js} +1 -1
- package/chunks/{chunk-ZNI3YJHS.js → chunk-MFDKHGTD.js} +1 -1
- package/chunks/{chunk-R7OO56VZ.js → chunk-MMRGG6R4.js} +1 -1
- package/chunks/{chunk-E6IR653O.js → chunk-MO4XID7S.js} +1 -1
- package/chunks/{chunk-NJ4ZNDVP.js → chunk-NKTMUPHJ.js} +3 -6
- package/chunks/{chunk-4DTFTPTU.js → chunk-NQ272MQG.js} +1 -1
- package/chunks/{chunk-DWKFTUGI.js → chunk-OALXNGUA.js} +6 -6
- package/chunks/{chunk-FBDHP23D.js → chunk-OSG23MR3.js} +1 -1
- package/chunks/{chunk-NJ2OFVUX.js → chunk-P42KMMU6.js} +860 -1
- package/chunks/{chunk-5KJ54DY3.js → chunk-PF7GAP6K.js} +60 -58
- package/chunks/{chunk-MQRLLBMQ.js → chunk-PPJSG2PU.js} +2 -2
- package/chunks/{chunk-EPVEPTI3.js → chunk-PZRXWQUA.js} +753 -18
- package/chunks/{chunk-VI5UVPOB.js → chunk-Q54O3EIA.js} +30 -28
- package/chunks/{chunk-QTUQV33C.js → chunk-QGEISOJ2.js} +4 -4
- package/chunks/{chunk-XKRYQOHS.js → chunk-QHSOINX6.js} +2 -2
- package/chunks/{chunk-Z6Q7I37O.js → chunk-QIPLWW6Q.js} +1 -1
- package/chunks/chunk-QMENOK5T.js +1246 -0
- package/chunks/chunk-QT6Z2IBF.js +347 -0
- package/chunks/{chunk-TBSCTWKF.js → chunk-RN6A53UJ.js} +25 -0
- package/chunks/{chunk-E7ZTAOJZ.js → chunk-RRI764F7.js} +21 -19
- package/chunks/{chunk-YI2YCNSP.js → chunk-SENYKRII.js} +1 -1
- package/chunks/chunk-SFHX5G2S.js +2796 -0
- package/chunks/chunk-SK3RZOPS.js +34 -0
- package/chunks/{chunk-SKYOAH4Z.js → chunk-SOLRBF7L.js} +13 -9
- package/chunks/{chunk-5WLF44DS.js → chunk-SSWTA7CH.js} +12 -12
- package/chunks/{chunk-IAS753HG.js → chunk-SYMXYRM5.js} +11 -2
- package/chunks/{chunk-FGROOEKM.js → chunk-TDKUXSJO.js} +34 -6
- package/chunks/{chunk-ZJ7JQUGY.js → chunk-TKF4JINY.js} +1 -1
- package/chunks/{chunk-ZOQ6HC7U.js → chunk-TPY6HW55.js} +4 -4
- package/chunks/{chunk-EDB556X7.js → chunk-TRZ22SG5.js} +1 -1
- package/chunks/{chunk-FHSOZSBO.js → chunk-TXTCM3TC.js} +4 -4
- package/chunks/{chunk-5ODRE7E5.js → chunk-U4AASWUQ.js} +28 -12
- package/chunks/{chunk-PPE7VUMD.js → chunk-UQGRJTDK.js} +2 -2
- package/chunks/{chunk-JO67LVXW.js → chunk-UZSB57EV.js} +6 -8
- package/chunks/{chunk-UY4OCBX4.js → chunk-V4JJAVHQ.js} +2 -2
- package/chunks/chunk-VEXUA6DX.js +1026 -0
- package/chunks/{chunk-ME4JBHSB.js → chunk-VQDWCQOE.js} +2 -0
- package/chunks/{chunk-ZC75SULX.js → chunk-VU3XMZ5I.js} +23 -4
- package/chunks/{chunk-A2UYI473.js → chunk-WL36KHUQ.js} +6 -6
- package/chunks/{chunk-IWOJ2FHG.js → chunk-WNQIJTOP.js} +8 -8
- package/chunks/{chunk-IANIY25T.js → chunk-WSJI6ODG.js} +99 -30
- package/chunks/{chunk-3CKAOJ4L.js → chunk-WZWTY7SG.js} +6 -6
- package/chunks/{chunk-EKMJR7M3.js → chunk-X7AYIXC7.js} +1 -1
- package/chunks/{chunk-IBRQG2MP.js → chunk-XAJZFGD2.js} +11 -11
- package/chunks/{chunk-VRQZESKP.js → chunk-XICCGDWF.js} +2 -2
- package/chunks/{chunk-L5R4D5T4.js → chunk-Y2KJC55Y.js} +12 -7
- package/chunks/{chunk-2S2WIGCM.js → chunk-Y4NNIGYO.js} +1 -1
- package/chunks/{chunk-J7LBAKDH.js → chunk-YL3UJML3.js} +7 -7
- package/chunks/{chunk-GSS4SZNG.js → chunk-YP2K3WOS.js} +40 -56
- package/chunks/{chunk-ZZUXUBEB.js → chunk-YQQ2U7AS.js} +8 -5
- package/chunks/{chunk-FAWTMDX7.js → chunk-YXHY6BKS.js} +15 -0
- package/chunks/{chunk-FIP5QS2U.js → chunk-YZXSDPOQ.js} +140 -39
- package/chunks/{chunk-WATHOB6X.js → chunk-ZFHKUQZ4.js} +3 -3
- package/chunks/{chunk-R5OA3ONY.js → chunk-ZMYKNKET.js} +6 -6
- package/chunks/{codex-subagent-executor-LANZAZPH.js → codex-subagent-executor-AEAIQZDC.js} +48 -49
- package/chunks/{config-utils-CRK2LQPA.js → config-utils-KX2YS725.js} +43 -46
- package/chunks/{contextCommand-GY5X3LIY.js → contextCommand-RV6Y5LNJ.js} +41 -44
- package/chunks/{core-runtime-IJIV2LHP.js → core-runtime-ZI4RTOJQ.js} +45 -48
- package/chunks/{create-sub-session-MNIVRHGB.js → create-sub-session-BBWFQARJ.js} +46 -48
- package/chunks/{daemon-NJB4PWZ7.js → daemon-INCM4VBX.js} +3 -1
- package/chunks/{daemon-git-worktree-guard-W6Z2BGDH.js → daemon-git-worktree-guard-KECEMV6A.js} +39 -42
- package/chunks/{daemon-status-provider-TJF3APU3.js → daemon-status-provider-NULJNAEV.js} +53 -56
- package/chunks/{daemon-trust-policy-6INCISDU.js → daemon-trust-policy-S4KWGPV3.js} +47 -50
- package/chunks/{daemon-trust-policy-monitor-JRTAQG54.js → daemon-trust-policy-monitor-546N5ZVL.js} +47 -50
- package/chunks/{de-VGY3VNBU.js → de-6AVKPTXQ.js} +11 -0
- package/chunks/{deferred-core-runtime-2JRTPTNM.js → deferred-core-runtime-T23ZT443.js} +39 -42
- package/chunks/{dist-NIOJXMGY.js → dist-4P3ZJYGI.js} +1 -1
- package/chunks/{dist-VDLSBCLM.js → dist-7MGRENQ5.js} +1 -1
- package/chunks/{dist-SE4J6Z4O.js → dist-BNW423XT.js} +326 -77
- package/chunks/{dist-TFGETXFN.js → dist-CESMUYGN.js} +4 -4
- package/chunks/{dist-MPUZZOG5.js → dist-DBBOFWSC.js} +1 -1
- package/chunks/{dist-T6DDPDLQ.js → dist-G5UMXIGF.js} +1 -1
- package/chunks/{dist-PA7WPFVE.js → dist-UXVNLQHG.js} +3 -3
- package/chunks/{dist-GUB7QRYA.js → dist-VA4LREAQ.js} +2 -2
- package/chunks/{dist-2QYIVNS6.js → dist-XDRTR4QP.js} +1 -1
- package/chunks/{edit-JDIXXCYB.js → edit-CMSQB7NP.js} +27 -30
- package/chunks/{en-E5ZO5TZW.js → en-56QLKXS2.js} +23 -1
- package/chunks/{enter-worktree-CAARFWBI.js → enter-worktree-DA6A4XC5.js} +3 -3
- package/chunks/{enterPlanMode-YTNTBZBN.js → enterPlanMode-UDPMNESD.js} +27 -30
- package/chunks/{environment-UAI5L52V.js → environment-TSQJUTPV.js} +42 -45
- package/chunks/{errors-J4UCDCW5.js → errors-RIVYJS6T.js} +41 -44
- package/chunks/{exit-worktree-JXGGUOBP.js → exit-worktree-4H6Z2VQI.js} +3 -3
- package/chunks/{exitPlanMode-YMWJ2EO7.js → exitPlanMode-BYBBFN2T.js} +27 -30
- package/chunks/{fast-path-MBAN7TK3.js → fast-path-F2CYDDZ4.js} +4 -4
- package/chunks/{fast-path-settings-XDYX7X5Z.js → fast-path-settings-N2VGRGDJ.js} +2 -2
- package/chunks/{fr-UAZJJH5N.js → fr-EBUDHJL3.js} +11 -0
- package/chunks/{glob-YEM24E3Z.js → glob-Z2JMJKKN.js} +27 -30
- package/chunks/{goal-tools-LJIVH5T6.js → goal-tools-HXVVLGCV.js} +27 -30
- package/chunks/{handleAutoUpdate-DYCSYDYL.js → handleAutoUpdate-FZP45KOR.js} +43 -46
- package/chunks/{i18n-PTAV7SN3.js → i18n-OTB62AKW.js} +40 -43
- package/chunks/{image-gen-5G2TQ3DY.js → image-gen-HIAZCB5T.js} +6 -7
- package/chunks/{initializer-MPXTKQA4.js → initializer-4JXZEC4B.js} +47 -50
- package/chunks/{installationInfo-U5EFA3OL.js → installationInfo-2IJV5QKC.js} +39 -42
- package/chunks/{ja-2RITCMAJ.js → ja-NCDT4CGV.js} +11 -0
- package/chunks/{list-YOE25QUI.js → list-KQSQ4A5G.js} +50 -53
- package/chunks/{llm-ZZ2WNQMC.js → llm-LSUBOJAR.js} +154 -974
- package/chunks/{llm-content-generator-CG2HRJZC.js → llm-content-generator-MLIONRXE.js} +17 -12
- package/chunks/{loadedSettingsAdapter-NPGWGURF.js → loadedSettingsAdapter-TZTTNRHI.js} +47 -50
- package/chunks/{loggingContentGenerator-TUL6SJVL.js → loggingContentGenerator-TUPEXFMM.js} +31 -34
- package/chunks/{loop-wakeup-VG6CGBQA.js → loop-wakeup-ZBVRI6VH.js} +1 -1
- package/chunks/{managed-npm-update-YUDSCJP3.js → managed-npm-update-WEA5XMFZ.js} +40 -43
- package/chunks/{mcp-EX3GDQVO.js → mcp-TFDTUPIA.js} +47 -50
- package/chunks/{model-configuration-6DEKTXJI.js → model-configuration-ZCAKKIOF.js} +48 -51
- package/chunks/{modelConfigUtils-4NA2MHEE.js → modelConfigUtils-J3ZPW7ZK.js} +41 -44
- package/chunks/{monitor-PPUGNAWR.js → monitor-CI7YE7MT.js} +29 -32
- package/chunks/{nonInteractiveCli-6TW2XYP5.js → nonInteractiveCli-GPT3TVOK.js} +96 -98
- package/chunks/{notebook-edit-4MUXHZHT.js → notebook-edit-3WCVRNGL.js} +27 -30
- package/chunks/{openaiContentGenerator-5J73W5XZ.js → openaiContentGenerator-OGILGUZE.js} +12 -17
- package/chunks/{openaiResponsesContentGenerator-AWRYZLJU.js → openaiResponsesContentGenerator-NXOXUPFM.js} +45 -13
- package/chunks/{pidfile-M7WELKBB.js → pidfile-GBTBIGHF.js} +39 -42
- package/chunks/{process-registry-X6ZCASEN.js → process-registry-7LAPI3ZB.js} +1 -1
- package/chunks/{processUtils-SPRINFNY.js → processUtils-O4II3RYH.js} +2 -2
- package/chunks/{prompt-terminal-ledger-25BRD7FX.js → prompt-terminal-ledger-ILIXZI3E.js} +40 -43
- package/chunks/{pt-5ZF7ZQUV.js → pt-FYYFWYUC.js} +11 -0
- package/chunks/{qwenContentGenerator-H5AAKXPC.js → qwenContentGenerator-I4LRYADV.js} +33 -36
- package/chunks/{qwenOAuth2-WIEUEFEY.js → qwenOAuth2-3J66TOT5.js} +6 -7
- package/chunks/{read-file-ILGEFPB3.js → read-file-G4XKW2CS.js} +5 -9
- package/chunks/{record-artifact-PXMNP7GZ.js → record-artifact-L3CFJOMA.js} +2 -2
- package/chunks/{report-findings-W6GR7SYZ.js → report-findings-LY5HQY4K.js} +3 -3
- package/chunks/{resumeHistoryUtils-RB52QOCH.js → resumeHistoryUtils-YPJU4XFE.js} +44 -47
- package/chunks/{ripGrep-O6QAFHQK.js → ripGrep-AAKMALLM.js} +7 -11
- package/chunks/{ru-7BNZFQKG.js → ru-RHEB3RNS.js} +11 -0
- package/chunks/{run-qwen-serve-5NO3TKUL.js → run-qwen-serve-ZVEKGS7Y.js} +177 -98
- package/chunks/{runtime-G2YUYMSZ.js → runtime-SJCRYNPA.js} +52 -55
- package/chunks/safe-mode-KLGUG54M.js +11 -0
- package/chunks/sandbox-UIXL423Z.js +146 -0
- package/chunks/sandboxConfig-CY343YNJ.js +114 -0
- package/chunks/{scheduled-tasks-HDHV3URA.js → scheduled-tasks-5UGBEVNZ.js} +50 -53
- package/chunks/{scheduler-6MDJX2ZK.js → scheduler-GCZYLZ2P.js} +41 -44
- package/chunks/{sdk-exporters-http-3R2TRQHE.js → sdk-exporters-http-DR4G663K.js} +1 -1
- package/chunks/{sdk-impl-4WF3VZ2F.js → sdk-impl-SJR26MQF.js} +3 -3
- package/chunks/{send-message-UMJKN27Q.js → send-message-DN76MXDX.js} +6 -6
- package/chunks/{serve-Z2EJQYKB.js → serve-2XXQLVK2.js} +48 -51
- package/chunks/{server-JTNBK3LH.js → server-UHMKPCAZ.js} +408 -211
- package/chunks/{session-5YK2BXH4.js → session-ZLUK7E4P.js} +108 -108
- package/chunks/{session-attachments-root-QO3VFJS6.js → session-attachments-root-DHQM5IEZ.js} +39 -42
- package/chunks/{session-pr-refresh-OTK3HCJZ.js → session-pr-refresh-3OMTQWCZ.js} +48 -51
- package/chunks/{settings-2VKLACYV.js → settings-P4DHIIUP.js} +50 -53
- package/chunks/{shell-64NAVGMS.js → shell-IMFUVQQ5.js} +27 -30
- package/chunks/{skill-R3ALMLLM.js → skill-NB5RJGZW.js} +7 -11
- package/chunks/{skill-settings-HZ34TUMP.js → skill-settings-IXG5CTQO.js} +47 -50
- package/chunks/{spawnChannel-XGFWHEIK.js → spawnChannel-Q3YALTCJ.js} +44 -45
- package/chunks/{standalone-update-R32Y3XRR.js → standalone-update-H5OJ7MM7.js} +41 -44
- package/chunks/{start-opentui-ui-YGJOUE2H.js → start-opentui-ui-JKAIWGF7.js} +733 -386
- package/chunks/{startInteractiveUI-5ZEVKSFF.js → startInteractiveUI-YRPOT6GH.js} +370 -337
- package/chunks/task-create-75HVPEAH.js +1 -1
- package/chunks/{team-create-GCVUXJLE.js → team-create-2XTBYRJF.js} +31 -34
- package/chunks/{team-plan-approval-NOL62FJD.js → team-plan-approval-CFNWW7ZQ.js} +27 -30
- package/chunks/{terminal-image-renderer-WG5TLPGC.js → terminal-image-renderer-UDPJPGPQ.js} +39 -42
- package/chunks/{theme-manager-HDS4YFPW.js → theme-manager-SK57EKMO.js} +39 -42
- package/chunks/{tool-search-HMT5GYUR.js → tool-search-ZHTJU2MV.js} +5 -9
- package/chunks/{total-session-admission-Y5RCHEXO.js → total-session-admission-UUZBDQCG.js} +47 -50
- package/chunks/{tree-sitter-LSORDVZ3.js → tree-sitter-4D7QS7F6.js} +1 -1
- package/chunks/{tree-sitter-bash-UARELQ6C.js → tree-sitter-bash-VEJGF5XF.js} +1 -1
- package/chunks/{trustedFolders-3Y2WCXMR.js → trustedFolders-4LDBLNTS.js} +40 -43
- package/chunks/{update-relaunch-MTJ32SLF.js → update-relaunch-LI7GRP36.js} +5 -5
- package/chunks/{updateCheck-YFX3VY6O.js → updateCheck-PKSSORPO.js} +43 -46
- package/chunks/{useAutoAcceptIndicator-FCHNQPMD.js → useAutoAcceptIndicator-I32UEQPI.js} +50 -53
- package/chunks/{validateNonInterActiveAuth-HUFQKCGG.js → validateNonInterActiveAuth-YFPCYYNL.js} +93 -95
- package/chunks/{version-S5TGWCA3.js → version-4MTL4JVU.js} +1 -1
- package/chunks/{web-fetch-23M7BYHB.js → web-fetch-O6RG6ISB.js} +9 -13
- package/chunks/{web-search-F5PNIQUA.js → web-search-JHAXVEMD.js} +9 -14
- package/chunks/{web-shell-static-T7UGLVE4.js → web-shell-static-FFWCUUZS.js} +8 -4
- package/chunks/{workflow-BLJLID2C.js → workflow-O7L6VDYU.js} +396 -113
- package/chunks/{workspace-providers-status-UH7KLZDT.js → workspace-providers-status-WRX6CJM4.js} +53 -56
- package/chunks/{workspace-registration-store-3SA3V7BA.js → workspace-registration-store-7G4E7YPY.js} +1 -1
- package/chunks/{workspace-registry-C6C6EKQ5.js → workspace-registry-SXIMGT4D.js} +47 -50
- package/chunks/{workspace-runtime-coordinator-RAI6XDJB.js → workspace-runtime-coordinator-7DOEHXYT.js} +47 -50
- package/chunks/{workspace-service-H7UTJYJU.js → workspace-service-HDXOZMYC.js} +53 -56
- package/chunks/{workspace-skills-status-FPVC7XXK.js → workspace-skills-status-VN4L37CA.js} +50 -53
- package/chunks/{workspace-trust-reconciler-JS7A6UIF.js → workspace-trust-reconciler-XEBW5FUL.js} +57 -60
- package/chunks/{write-file-GQGG7NBQ.js → write-file-LKX4ETIO.js} +29 -32
- package/chunks/{zh-V2EYTYJP.js → zh-F76MZTL3.js} +23 -1
- package/chunks/{zh-TW-7PRVUGLW.js → zh-TW-S3YTQ4DS.js} +23 -1
- package/chunks/{zoom-image-EC43KL4H.js → zoom-image-RDPRTP4B.js} +5 -9
- package/cli.js +19 -15
- package/export-transcript-document.css +1 -1
- package/export-transcript-document.js +151 -150
- package/locales/ca.js +19 -2
- package/locales/de.js +18 -0
- package/locales/en.js +33 -2
- package/locales/fr.js +18 -0
- package/locales/ja.js +18 -0
- package/locales/pt.js +18 -0
- package/locales/ru.js +18 -0
- package/locales/zh-TW.js +33 -2
- package/locales/zh.js +33 -2
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-BtpzKw3A.js → abnfDiagram-VCTEODGH-RxykUDmi.js} +1 -1
- package/web-shell/assets/{arc-CQiVKZJP.js → arc-CZpgGCJC.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-ekIPBb2d.js → architectureDiagram-5GKGNRK7-BHSMzNDT.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-BrRWkWri.js → blockDiagram-NRAW4CY4-Bn4mF9SZ.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-qYS8CYZ3.js → c4Diagram-UCG6FXSJ-CBM-Bj6t.js} +1 -1
- package/web-shell/assets/channel-DFYs_LlK.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-ZasyyEZm.js → chunk-2Q5K7J3B-D5Fin58O.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-C_IzCGeA.js → chunk-5VM5RSS4-CY05weF7.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-C25NZOyD.js → chunk-F27PBJKO-3neZnj5Y.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-XPOHNSGX.js → chunk-G27WJ6UU-Cd7EU4BE.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-BQBh0Xni.js → chunk-JWPE2WC7-DwK1mqFw.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-CoShjpX7.js → chunk-LCL6LL3I-Sl7vY22C.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-BwRmCDSz.js → chunk-POPQ4Y6H-BXNzpbVg.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-DSzE5-Mw.js → chunk-SVP7TREG-DjjButcp.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-BQSQv30h.js → chunk-XXDRQBXY-DNOiCjOJ.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DnGrKXoM.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DnGrKXoM.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-XVUVTHVo.js → cose-bilkent-JH36ORCC-BUnker7a.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-CrsKx4lQ.js → cynefin-OW5HDTMX-DcUgdWE5.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BPeZEuHw.js → cynefinDiagram-5FMLGOSQ-CvDKsZsL.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-D31cQ2Qs.js → dagre-3AP2YEHR-jpCmUbr1.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-zyiG097Q.js → diagram-S7CK7UJ4-DBe_bKE5.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-Br3vtfsy.js → diagram-UQ7AKVKN-oXvPpDgs.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-Bxkhjx4u.js → diagram-VSXAHHWV-BD7-_SGh.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-BQH8QiDk.js → diagram-VX7I27RA-DOJL0wub.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-B_aQ1cw0.js → diagram-Z3DM3KII-DRIiodDD.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-B9N7BRQE.js → ebnfDiagram-PWID7BFC-Db31Ulmb.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-Cx6Hb1Re.js → erDiagram-SSCWMZ5O-CVHhwI2_.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-DTuLP7GU.js → flowDiagram-A5DVABFB-DWOFy1FK.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DYS3d-sL.js → ganttDiagram-EL5Y4UJY-C0sxQtPd.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Cp0EGx04.js → gitGraphDiagram-WWUBYQGX-CNituBYC.js} +1 -1
- package/web-shell/assets/index-B15NlwB8.js +2213 -0
- package/web-shell/assets/index-BSrS0tQ6.css +36 -0
- package/web-shell/assets/{index-45-LkPDB.js → index-gm9tLk7h.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-9--kukiT.js → infoDiagram-RXCK75RN-CxhJYtIR.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CGBdsDLD.js → ishikawaDiagram-5VMMS53U-By2mchUy.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-DeXhcscd.js → journeyDiagram-EYS64GPL-CVH-OweI.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-CFdvsU3b.js → kanban-definition-3QL26DDD-Cc9dQXLy.js} +1 -1
- package/web-shell/assets/knowledge-Dg9788h4.svg +1 -0
- package/web-shell/assets/{layout-DAnwQ3KB.js → layout-C_60ysHw.js} +1 -1
- package/web-shell/assets/{linear-CTo7v7Nh.js → linear-BvAVfqwu.js} +1 -1
- package/web-shell/assets/{mermaid.core-jggSxF1i.js → mermaid.core-C3CoBKAc.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzIepvlJ.js → mindmap-definition-FBJOCRG2-Cuu8Q8LM.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BFGS9GJv.js → pegDiagram-XKGWAZYB-DmAeyDO2.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-B2UUcNIT.js → pieDiagram-E7YTZNPT-B7vbB_xv.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-BgM6htrX.js → quadrantDiagram-AXDQQJYC-BqOBkRR7.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-Dk9cS7N-.js → railroadDiagram-O6MQD6OU-sI06lZIu.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C9oRg7xi.js → requirementDiagram-EFPCY7ZU-Bg13d10S.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-B-_c7GzI.js → sankeyDiagram-P5KCCOFB-WFOzZHrR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-R0M-347u.js → sequenceDiagram-WJ2MYXX4-CCdRbA4E.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-Df0f8UAW.js → sizeCapture-X5ZJPWSS-BH5F3bGg.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-CsUEfAA-.js → stateDiagram-HBIQ2CUA-NwS2X3QB.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-1aU2JZXO.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-9OGHVSrx.js → swimlanes-XN3QIQJK-Bm38pM28.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Dp-u6kQG.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-DAfGqS2B.js → timeline-definition-24CTP7MA-Do-agLSo.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-CKATpwHi.js → vennDiagram-4TSXK5OY-aggLfZzl.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CQHdhTrm.js → wardleyDiagram-VM6X3IG4-D5JR3mXX.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-5k9NLqlY.js → xychartDiagram-S5SC5T6Z-DhtLDuXs.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-4OQSG35W.js +0 -1416
- package/chunks/chunk-7MIBD3LG.js +0 -137
- package/chunks/chunk-ARDHE6MM.js +0 -235
- package/chunks/chunk-C75BXMPM.js +0 -169
- package/chunks/chunk-ERU3SDXT.js +0 -27
- package/chunks/chunk-FPGTNKCP.js +0 -251
- package/chunks/chunk-JIJ65YKA.js +0 -2812
- package/chunks/chunk-JL6APGBX.js +0 -43
- package/chunks/chunk-SGXJQP5Q.js +0 -4172
- package/chunks/chunk-TPEV2QHG.js +0 -514
- package/chunks/chunk-YVWS4SLL.js +0 -137
- package/web-shell/assets/channel-DSQQnOZj.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-V94ta08R.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-V94ta08R.js +0 -1
- package/web-shell/assets/index-H8um-iEl.js +0 -2207
- package/web-shell/assets/index-n6N-2a3v.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-CnSuTPJ2.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-Bb7TcWQw.js +0 -8
- package/chunks/{chunk-QZW6WRB7.js → chunk-5NUKK2DT.js} +2 -2
- package/chunks/{chunk-JS73NNWF.js → chunk-FUSEMYFX.js} +0 -0
- package/chunks/{chunk-SVWWF5TZ.js → chunk-WVURIAEE.js} +3 -3
- package/chunks/{task-update-RI7QNVDP.js → task-update-3LSYQDRW.js} +4 -4
|
@@ -6,6 +6,10 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
stringifyGenAiJson
|
|
8
8
|
} from "./chunk-KFFCDLKV.js";
|
|
9
|
+
import {
|
|
10
|
+
GOAL_STATE_EVENT_CAUSES,
|
|
11
|
+
makeGoalStateEvent
|
|
12
|
+
} from "./chunk-CDDP4ONL.js";
|
|
9
13
|
import {
|
|
10
14
|
atomicWriteJSON
|
|
11
15
|
} from "./chunk-XFFRI3WM.js";
|
|
@@ -16,7 +20,7 @@ import {
|
|
|
16
20
|
getMeter,
|
|
17
21
|
isTelemetrySdkInitialized,
|
|
18
22
|
isValidSensitiveSpanAttributeMaxLength
|
|
19
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-6USYH3EU.js";
|
|
20
24
|
import {
|
|
21
25
|
FatalConfigError,
|
|
22
26
|
QWEN_DIR,
|
|
@@ -7615,6 +7619,801 @@ init_esbuild_shims();
|
|
|
7615
7619
|
// packages/core/src/telemetry/index.ts
|
|
7616
7620
|
init_esbuild_shims();
|
|
7617
7621
|
|
|
7622
|
+
// packages/core/src/telemetry/goal-events.ts
|
|
7623
|
+
init_esbuild_shims();
|
|
7624
|
+
|
|
7625
|
+
// packages/core/src/goals/goal-reducer.ts
|
|
7626
|
+
init_esbuild_shims();
|
|
7627
|
+
|
|
7628
|
+
// packages/core/src/goals/goal-protocol.ts
|
|
7629
|
+
init_esbuild_shims();
|
|
7630
|
+
|
|
7631
|
+
// packages/core/src/utils/terminalSafe.ts
|
|
7632
|
+
init_esbuild_shims();
|
|
7633
|
+
var TERMINAL_OSC_REGEX = /\x1b\][^\x07\x1b]*(?:\x07|\x1b\\)/g;
|
|
7634
|
+
var TERMINAL_CSI_REGEX = /\x1b\[[\d;?]*[a-zA-Z]/g;
|
|
7635
|
+
var TERMINAL_SHIFT_DCS_REGEX = /\x1b[NOP]/g;
|
|
7636
|
+
function stripTerminalControlSequences(s) {
|
|
7637
|
+
return s.replace(TERMINAL_OSC_REGEX, " ").replace(TERMINAL_CSI_REGEX, " ").replace(TERMINAL_SHIFT_DCS_REGEX, " ").replace(/[\x00-\x1f\x7f-\x9f]/g, " ");
|
|
7638
|
+
}
|
|
7639
|
+
__name(stripTerminalControlSequences, "stripTerminalControlSequences");
|
|
7640
|
+
function isBidiControlChar(code) {
|
|
7641
|
+
return code >= 8234 && code <= 8238 || code >= 8294 && code <= 8297;
|
|
7642
|
+
}
|
|
7643
|
+
__name(isBidiControlChar, "isBidiControlChar");
|
|
7644
|
+
function stripDisplayControlChars(text) {
|
|
7645
|
+
let out = "";
|
|
7646
|
+
for (let i = 0; i < text.length; i++) {
|
|
7647
|
+
const code = text.charCodeAt(i);
|
|
7648
|
+
if (code === 9) {
|
|
7649
|
+
out += text[i];
|
|
7650
|
+
continue;
|
|
7651
|
+
}
|
|
7652
|
+
if (code < 32) continue;
|
|
7653
|
+
if (code >= 128 && code <= 159) continue;
|
|
7654
|
+
if (isBidiControlChar(code)) continue;
|
|
7655
|
+
out += text[i];
|
|
7656
|
+
}
|
|
7657
|
+
return out;
|
|
7658
|
+
}
|
|
7659
|
+
__name(stripDisplayControlChars, "stripDisplayControlChars");
|
|
7660
|
+
var NOTIFICATION_LABEL_MAX_LENGTH = 80;
|
|
7661
|
+
function truncateNotificationLabel(label) {
|
|
7662
|
+
const normalized = stripDisplayControlChars(label).replace(/\s+/g, " ").trim();
|
|
7663
|
+
const codePoints = [...normalized];
|
|
7664
|
+
if (codePoints.length <= NOTIFICATION_LABEL_MAX_LENGTH) {
|
|
7665
|
+
return normalized;
|
|
7666
|
+
}
|
|
7667
|
+
return codePoints.slice(0, NOTIFICATION_LABEL_MAX_LENGTH - 3).join("") + "...";
|
|
7668
|
+
}
|
|
7669
|
+
__name(truncateNotificationLabel, "truncateNotificationLabel");
|
|
7670
|
+
|
|
7671
|
+
// packages/core/src/goals/goal-protocol.ts
|
|
7672
|
+
var GOAL_STATE_VERSION = 2;
|
|
7673
|
+
var GOAL_PROPOSAL_REASON_MAX_CHARACTERS = 8e3;
|
|
7674
|
+
var GOAL_PROPOSAL_REASON_MAX_BYTES = 16e3;
|
|
7675
|
+
var GOAL_CHECKPOINT_CLAIM_LIMIT = 32;
|
|
7676
|
+
var GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS = 2e3;
|
|
7677
|
+
var GOAL_CHECKPOINT_CLAIM_MAX_BYTES = 16e3;
|
|
7678
|
+
var GOAL_CHECKPOINT_SOURCE_REFERENCE_LIMIT = 32;
|
|
7679
|
+
var GOAL_EVIDENCE_CATALOG_EXHAUSTED_REASON = "The current Goal revision exceeded the bounded evidence catalog. Automatic retries cannot recover. Edit or replace the Goal before resuming it.";
|
|
7680
|
+
var GOAL_CHECKPOINT_REQUEST_TOO_LARGE_REASON = "The current Goal revision exceeded the checkpoint verifier request limit. Automatic retries cannot recover. Edit or replace the Goal before resuming it.";
|
|
7681
|
+
var GOAL_CHECKPOINT_STALL_LIMIT = 3;
|
|
7682
|
+
var GOAL_NO_PROGRESS_TURN_LIMIT = 3;
|
|
7683
|
+
var GOAL_CHECKPOINT_STALLED_REASON = "The current Goal revision ran three consecutive evidence checkpoints without relief: the evidence window overflowed every time, and the last check could not fit it within the checkpoint claim bounds, so every turn paid a checkpoint call and lost uncatalogued evidence. Automatic retries cannot recover. Edit or replace the Goal with a narrower objective before resuming it.";
|
|
7684
|
+
var GOAL_CHECKPOINT_UNUSABLE_REASON = "The current Goal revision ran three consecutive evidence checkpoints without relief: the evidence window overflowed every time, and the last check answered with output that could not be folded into claims. Narrowing the objective does not fix this. Check that the checkpoint model returns the structured JSON it is asked for, or switch models, then resume the Goal; resuming starts a fresh evidence window.";
|
|
7685
|
+
var GOAL_CHECKPOINT_UNREACHABLE_REASON = "The current Goal revision ran three consecutive evidence checkpoints without relief: the evidence window overflowed every time, and the last check failed before the checkpoint verifier returned an answer. The recorded checkpoint failure says why: an unreachable or rate-limited provider, a check that did not finish within model.goalCheckpointTimeoutSeconds, or an error in the check itself. Fix the provider, raise that timeout, or narrow the objective so the window checkpoints in time, then resume the Goal; resuming starts a fresh evidence window.";
|
|
7686
|
+
function goalCheckpointStalledReason(shape) {
|
|
7687
|
+
switch (shape) {
|
|
7688
|
+
case "capacity":
|
|
7689
|
+
return GOAL_CHECKPOINT_STALLED_REASON;
|
|
7690
|
+
case "unusable":
|
|
7691
|
+
return GOAL_CHECKPOINT_UNUSABLE_REASON;
|
|
7692
|
+
case "unreachable":
|
|
7693
|
+
return GOAL_CHECKPOINT_UNREACHABLE_REASON;
|
|
7694
|
+
default: {
|
|
7695
|
+
const exhaustive = shape;
|
|
7696
|
+
return exhaustive;
|
|
7697
|
+
}
|
|
7698
|
+
}
|
|
7699
|
+
}
|
|
7700
|
+
__name(goalCheckpointStalledReason, "goalCheckpointStalledReason");
|
|
7701
|
+
var GOAL_CHECKPOINT_FAILURE_MAX_CHARACTERS = 500;
|
|
7702
|
+
function capGoalCheckpointFailure(text) {
|
|
7703
|
+
const oneLine = stripDisplayControlChars(stripTerminalControlSequences(text)).replace(/\s+/g, " ").trim();
|
|
7704
|
+
const codePoints = [...oneLine];
|
|
7705
|
+
return codePoints.length <= GOAL_CHECKPOINT_FAILURE_MAX_CHARACTERS ? oneLine : `${codePoints.slice(0, GOAL_CHECKPOINT_FAILURE_MAX_CHARACTERS - 1).join("")}\u2026`;
|
|
7706
|
+
}
|
|
7707
|
+
__name(capGoalCheckpointFailure, "capGoalCheckpointFailure");
|
|
7708
|
+
function goalCheckpointHealthVisible(goal) {
|
|
7709
|
+
if (goal.status === "complete") return false;
|
|
7710
|
+
if ((goal.checkpointStalls ?? 0) > 0) return true;
|
|
7711
|
+
const failed = Boolean(goal.lastCheckpointFailure?.trim());
|
|
7712
|
+
if (goal.limitKind === "checkpoint_request") return failed;
|
|
7713
|
+
return (goal.status ?? "active") === "active" && failed;
|
|
7714
|
+
}
|
|
7715
|
+
__name(goalCheckpointHealthVisible, "goalCheckpointHealthVisible");
|
|
7716
|
+
function goalCheckpointHealthLine(goal, clean = (text) => text) {
|
|
7717
|
+
if (!goalCheckpointHealthVisible(goal)) return void 0;
|
|
7718
|
+
const stalls = goal.checkpointStalls ?? 0;
|
|
7719
|
+
return [
|
|
7720
|
+
stalls > 0 ? `${stalls}/${GOAL_CHECKPOINT_STALL_LIMIT} stalled` : "last check failed",
|
|
7721
|
+
clean(goal.lastCheckpointFailure ?? "").trim()
|
|
7722
|
+
].filter(Boolean).join(" \xB7 ");
|
|
7723
|
+
}
|
|
7724
|
+
__name(goalCheckpointHealthLine, "goalCheckpointHealthLine");
|
|
7725
|
+
var GOAL_DEFAULT_TOKEN_BUDGET = 3e7;
|
|
7726
|
+
function goalTokenBudgetReason(tokenBudget) {
|
|
7727
|
+
return `The Goal spent its autonomous token budget (${tokenBudget.toLocaleString("en-US")} tokens). Resume the Goal to authorize another budget window, or clear it.`;
|
|
7728
|
+
}
|
|
7729
|
+
__name(goalTokenBudgetReason, "goalTokenBudgetReason");
|
|
7730
|
+
function isGoalTokenBudgetSpent(goal) {
|
|
7731
|
+
return goal.tokenBudget !== void 0 && goal.tokensUsed >= goal.tokenBudget;
|
|
7732
|
+
}
|
|
7733
|
+
__name(isGoalTokenBudgetSpent, "isGoalTokenBudgetSpent");
|
|
7734
|
+
function goalTurnBudgetReason(turnBudget) {
|
|
7735
|
+
return `The Goal ran its Goal-turn budget (${turnBudget.toLocaleString("en-US")} ${turnBudget === 1 ? "turn" : "turns"}). Resume the Goal to authorize another window of turns, or clear it.`;
|
|
7736
|
+
}
|
|
7737
|
+
__name(goalTurnBudgetReason, "goalTurnBudgetReason");
|
|
7738
|
+
function isGoalTurnBudgetSpent(goal) {
|
|
7739
|
+
return goal.turnBudget !== void 0 && goal.turnCount >= goal.turnBudget;
|
|
7740
|
+
}
|
|
7741
|
+
__name(isGoalTurnBudgetSpent, "isGoalTurnBudgetSpent");
|
|
7742
|
+
function formatGoalActiveTimeBudget(activeTimeBudgetMs) {
|
|
7743
|
+
const minutes = activeTimeBudgetMs / 6e4;
|
|
7744
|
+
if (minutes >= 1) {
|
|
7745
|
+
const rounded = Math.round(minutes);
|
|
7746
|
+
return `${rounded.toLocaleString("en-US")} ${rounded === 1 ? "minute" : "minutes"}`;
|
|
7747
|
+
}
|
|
7748
|
+
const seconds = Math.max(1, Math.round(activeTimeBudgetMs / 1e3));
|
|
7749
|
+
return `${seconds.toLocaleString("en-US")} ${seconds === 1 ? "second" : "seconds"}`;
|
|
7750
|
+
}
|
|
7751
|
+
__name(formatGoalActiveTimeBudget, "formatGoalActiveTimeBudget");
|
|
7752
|
+
function goalActiveTimeBudgetReason(activeTimeBudgetMs) {
|
|
7753
|
+
return `The Goal ran its active-time budget (${formatGoalActiveTimeBudget(activeTimeBudgetMs)}). Resume the Goal to authorize another window of time, or clear it.`;
|
|
7754
|
+
}
|
|
7755
|
+
__name(goalActiveTimeBudgetReason, "goalActiveTimeBudgetReason");
|
|
7756
|
+
function isGoalActiveTimeBudgetSpent(goal, elapsedActiveMs) {
|
|
7757
|
+
return goal.activeTimeBudgetMs !== void 0 && elapsedActiveMs >= goal.activeTimeBudgetMs;
|
|
7758
|
+
}
|
|
7759
|
+
__name(isGoalActiveTimeBudgetSpent, "isGoalActiveTimeBudgetSpent");
|
|
7760
|
+
function isGoalLimitKind(value) {
|
|
7761
|
+
return value === "evidence_catalog" || value === "checkpoint_request" || isGoalBudgetLimitKind(value);
|
|
7762
|
+
}
|
|
7763
|
+
__name(isGoalLimitKind, "isGoalLimitKind");
|
|
7764
|
+
function isGoalBudgetLimitKind(value) {
|
|
7765
|
+
return value === "token_budget" || value === "turn_budget" || value === "time_budget";
|
|
7766
|
+
}
|
|
7767
|
+
__name(isGoalBudgetLimitKind, "isGoalBudgetLimitKind");
|
|
7768
|
+
function goalLimitKindForReason(reason) {
|
|
7769
|
+
if (reason === GOAL_EVIDENCE_CATALOG_EXHAUSTED_REASON) {
|
|
7770
|
+
return "evidence_catalog";
|
|
7771
|
+
}
|
|
7772
|
+
if (reason === GOAL_CHECKPOINT_REQUEST_TOO_LARGE_REASON) {
|
|
7773
|
+
return "checkpoint_request";
|
|
7774
|
+
}
|
|
7775
|
+
return void 0;
|
|
7776
|
+
}
|
|
7777
|
+
__name(goalLimitKindForReason, "goalLimitKindForReason");
|
|
7778
|
+
var PAUSED_GOAL_SYSTEM_REMINDER = "<system-reminder>\nThe Goal is paused. Do not continue its objective unless the user resumes it. Treat this message as ordinary conversation.\n</system-reminder>";
|
|
7779
|
+
function isGoalEvidenceProofKind(value) {
|
|
7780
|
+
return value === "user_input" || value === "delivered_output" || value === "external_fact";
|
|
7781
|
+
}
|
|
7782
|
+
__name(isGoalEvidenceProofKind, "isGoalEvidenceProofKind");
|
|
7783
|
+
function emptyGoalSnapshot() {
|
|
7784
|
+
return { v: GOAL_STATE_VERSION, goal: null, activity: "idle" };
|
|
7785
|
+
}
|
|
7786
|
+
__name(emptyGoalSnapshot, "emptyGoalSnapshot");
|
|
7787
|
+
function goalRequiresExactPermit(snapshot) {
|
|
7788
|
+
return snapshot.goal !== null && (snapshot.goal.status === "active" || snapshot.activity === "running");
|
|
7789
|
+
}
|
|
7790
|
+
__name(goalRequiresExactPermit, "goalRequiresExactPermit");
|
|
7791
|
+
function isRepeatedBlockerProposal(proposal) {
|
|
7792
|
+
return proposal.status === "blocked" && proposal.blockerKind !== "authority" && proposal.blockerKind !== "external" && proposal.blockerKind !== "infeasible";
|
|
7793
|
+
}
|
|
7794
|
+
__name(isRepeatedBlockerProposal, "isRepeatedBlockerProposal");
|
|
7795
|
+
var GOAL_INFEASIBLE_NEXT_STEP = "The objective cannot be satisfied as written; edit or replace the Goal with an objective the evidence allows before resuming it.";
|
|
7796
|
+
function validateGoalProposalReason(reason) {
|
|
7797
|
+
if (!reason.trim()) return "Goal proposal reason must not be empty";
|
|
7798
|
+
if ([...reason].length > GOAL_PROPOSAL_REASON_MAX_CHARACTERS) {
|
|
7799
|
+
return `Goal proposal reason exceeds ${GOAL_PROPOSAL_REASON_MAX_CHARACTERS} characters`;
|
|
7800
|
+
}
|
|
7801
|
+
if (new TextEncoder().encode(reason).byteLength > GOAL_PROPOSAL_REASON_MAX_BYTES) {
|
|
7802
|
+
return `Goal proposal reason exceeds ${GOAL_PROPOSAL_REASON_MAX_BYTES} UTF-8 bytes`;
|
|
7803
|
+
}
|
|
7804
|
+
return null;
|
|
7805
|
+
}
|
|
7806
|
+
__name(validateGoalProposalReason, "validateGoalProposalReason");
|
|
7807
|
+
var GOAL_PAUSE_REASON_MAX_CHARACTERS = 500;
|
|
7808
|
+
function validateGoalPauseReason(reason) {
|
|
7809
|
+
if (!reason.trim()) return "Goal pause reason must not be empty";
|
|
7810
|
+
if (reason.length > GOAL_PAUSE_REASON_MAX_CHARACTERS) {
|
|
7811
|
+
let codePoints = 0;
|
|
7812
|
+
for (const _codePoint of reason) {
|
|
7813
|
+
if (++codePoints > GOAL_PAUSE_REASON_MAX_CHARACTERS) {
|
|
7814
|
+
return `Goal pause reason exceeds ${GOAL_PAUSE_REASON_MAX_CHARACTERS} characters`;
|
|
7815
|
+
}
|
|
7816
|
+
}
|
|
7817
|
+
}
|
|
7818
|
+
return null;
|
|
7819
|
+
}
|
|
7820
|
+
__name(validateGoalPauseReason, "validateGoalPauseReason");
|
|
7821
|
+
var GOAL_PAUSE_REASON_USER_INTERRUPT = "Interrupted by the user. Run /goal resume to continue.";
|
|
7822
|
+
var GOAL_PAUSE_REASON_COMMAND = "Paused with /goal pause.";
|
|
7823
|
+
var GOAL_PAUSE_REASON_SESSION_TOKEN_LIMIT = "The session token limit was exceeded before the model request. Start a new session or increase sessionTokenLimit in settings.json before resuming the Goal.";
|
|
7824
|
+
var GOAL_PAUSE_REASON_STOP_HOOK_CAP = "A Stop hook blocked this session too many times in a row. Run /goal resume to continue.";
|
|
7825
|
+
var GOAL_PAUSE_REASON_SESSION_DISPOSED = "The session started closing before the turn finished. Run /goal resume to continue.";
|
|
7826
|
+
var GOAL_PAUSE_REASON_HEADLESS_RUN_ENDED = "The headless run finished before the Goal did. Resume the Goal in a later run.";
|
|
7827
|
+
var GOAL_PAUSE_REASON_NO_PROGRESS = "Three Goal turns in a row recorded nothing to judge and no proposal. Resume the Goal to try again, or edit its objective into one the model can act on and then resume it.";
|
|
7828
|
+
function truncateGoalPauseReason(reason) {
|
|
7829
|
+
const codePoints = [...reason];
|
|
7830
|
+
return codePoints.length <= GOAL_PAUSE_REASON_MAX_CHARACTERS ? reason : `${codePoints.slice(0, GOAL_PAUSE_REASON_MAX_CHARACTERS - 1).join("")}\u2026`;
|
|
7831
|
+
}
|
|
7832
|
+
__name(truncateGoalPauseReason, "truncateGoalPauseReason");
|
|
7833
|
+
function goalPauseReasonForFailure(message) {
|
|
7834
|
+
const detail = message.trim();
|
|
7835
|
+
return truncateGoalPauseReason(
|
|
7836
|
+
detail ? `The Goal turn could not finish: ${detail}. Run /goal resume to continue.` : "The Goal turn could not finish. Run /goal resume to continue."
|
|
7837
|
+
);
|
|
7838
|
+
}
|
|
7839
|
+
__name(goalPauseReasonForFailure, "goalPauseReasonForFailure");
|
|
7840
|
+
function goalPauseReasonForHeadlessFailure(message) {
|
|
7841
|
+
const detail = message.trim();
|
|
7842
|
+
return truncateGoalPauseReason(
|
|
7843
|
+
detail ? `The headless run stopped: ${detail}. Resume the Goal in a later run.` : "The headless run stopped before the Goal turn finished. Resume the Goal in a later run."
|
|
7844
|
+
);
|
|
7845
|
+
}
|
|
7846
|
+
__name(goalPauseReasonForHeadlessFailure, "goalPauseReasonForHeadlessFailure");
|
|
7847
|
+
function goalPauseReasonForRunBudget(budget) {
|
|
7848
|
+
const detail = budget.trim();
|
|
7849
|
+
return truncateGoalPauseReason(
|
|
7850
|
+
detail ? `The headless run stopped at its ${detail} budget. Resume the Goal in a later run.` : "The headless run stopped at a budget. Resume the Goal in a later run."
|
|
7851
|
+
);
|
|
7852
|
+
}
|
|
7853
|
+
__name(goalPauseReasonForRunBudget, "goalPauseReasonForRunBudget");
|
|
7854
|
+
|
|
7855
|
+
// packages/core/src/goals/goal-reducer.ts
|
|
7856
|
+
var MAX_BLOCKED_AUDIT_COUNT = 3;
|
|
7857
|
+
var GoalConflictError = class extends Error {
|
|
7858
|
+
constructor(current) {
|
|
7859
|
+
super("Goal version does not match the current session Goal");
|
|
7860
|
+
this.current = current;
|
|
7861
|
+
this.name = "GoalConflictError";
|
|
7862
|
+
}
|
|
7863
|
+
static {
|
|
7864
|
+
__name(this, "GoalConflictError");
|
|
7865
|
+
}
|
|
7866
|
+
};
|
|
7867
|
+
var GoalInvalidTransitionError = class extends Error {
|
|
7868
|
+
constructor(message, current) {
|
|
7869
|
+
super(message);
|
|
7870
|
+
this.current = current;
|
|
7871
|
+
this.name = "GoalInvalidTransitionError";
|
|
7872
|
+
}
|
|
7873
|
+
static {
|
|
7874
|
+
__name(this, "GoalInvalidTransitionError");
|
|
7875
|
+
}
|
|
7876
|
+
};
|
|
7877
|
+
function elapsedActiveTime(goal, now) {
|
|
7878
|
+
return goal.activeTimeMs + (goal.status === "active" ? Math.max(0, now - goal.updatedAt) : 0);
|
|
7879
|
+
}
|
|
7880
|
+
__name(elapsedActiveTime, "elapsedActiveTime");
|
|
7881
|
+
function reduceGoalControl(current, transition) {
|
|
7882
|
+
const { request } = transition;
|
|
7883
|
+
if (request.action === "create") {
|
|
7884
|
+
if (current) throw new GoalConflictError(snapshotOf(current));
|
|
7885
|
+
return createGoal(
|
|
7886
|
+
transition.nextGoalId,
|
|
7887
|
+
normalizeObjective(request.objective, snapshotOf(null)),
|
|
7888
|
+
transition.now,
|
|
7889
|
+
transition.cursor,
|
|
7890
|
+
transition
|
|
7891
|
+
);
|
|
7892
|
+
}
|
|
7893
|
+
assertExpectedVersion(
|
|
7894
|
+
current,
|
|
7895
|
+
request.expectedGoalId,
|
|
7896
|
+
request.expectedRevision
|
|
7897
|
+
);
|
|
7898
|
+
if (request.action === "clear") return null;
|
|
7899
|
+
if (request.action === "replace") {
|
|
7900
|
+
return createGoal(
|
|
7901
|
+
transition.nextGoalId,
|
|
7902
|
+
normalizeObjective(request.objective, snapshotOf(current)),
|
|
7903
|
+
transition.now,
|
|
7904
|
+
transition.cursor,
|
|
7905
|
+
transition
|
|
7906
|
+
);
|
|
7907
|
+
}
|
|
7908
|
+
if (request.action === "edit") {
|
|
7909
|
+
if (current.status === "complete") {
|
|
7910
|
+
throw new GoalInvalidTransitionError(
|
|
7911
|
+
"A completed Goal cannot be edited",
|
|
7912
|
+
snapshotOf(current)
|
|
7913
|
+
);
|
|
7914
|
+
}
|
|
7915
|
+
return transitionGoal(current, transition.now, {
|
|
7916
|
+
revision: current.revision + 1,
|
|
7917
|
+
objective: normalizeObjective(request.objective, snapshotOf(current)),
|
|
7918
|
+
evidenceCursor: copyCursor(transition.cursor),
|
|
7919
|
+
evidenceCheckpoint: void 0,
|
|
7920
|
+
checkpointStalls: void 0,
|
|
7921
|
+
lastCheckpointFailure: void 0,
|
|
7922
|
+
noProgressTurns: void 0,
|
|
7923
|
+
...rearmedBudgets(current, transition.now, transition),
|
|
7924
|
+
lastReason: void 0,
|
|
7925
|
+
limitKind: void 0
|
|
7926
|
+
});
|
|
7927
|
+
}
|
|
7928
|
+
if (request.action === "pause") {
|
|
7929
|
+
if (current.status !== "active") {
|
|
7930
|
+
throw new GoalInvalidTransitionError(
|
|
7931
|
+
"Only an active Goal can be paused",
|
|
7932
|
+
snapshotOf(current)
|
|
7933
|
+
);
|
|
7934
|
+
}
|
|
7935
|
+
return transitionGoal(current, transition.now, {
|
|
7936
|
+
status: "paused",
|
|
7937
|
+
lastReason: request.reason
|
|
7938
|
+
});
|
|
7939
|
+
}
|
|
7940
|
+
if (current.status === "complete") {
|
|
7941
|
+
throw new GoalInvalidTransitionError(
|
|
7942
|
+
"A completed Goal cannot be resumed",
|
|
7943
|
+
snapshotOf(current)
|
|
7944
|
+
);
|
|
7945
|
+
}
|
|
7946
|
+
if (current.status === "active") {
|
|
7947
|
+
throw new GoalInvalidTransitionError(
|
|
7948
|
+
"An active Goal cannot be resumed",
|
|
7949
|
+
snapshotOf(current)
|
|
7950
|
+
);
|
|
7951
|
+
}
|
|
7952
|
+
if (request.action === "resume" && current.status === "usage_limited" && isGoalBudgetLimitKind(current.limitKind)) {
|
|
7953
|
+
return transitionGoal(current, transition.now, {
|
|
7954
|
+
status: "active",
|
|
7955
|
+
noProgressTurns: void 0,
|
|
7956
|
+
...rearmedBudgets(current, transition.now, transition),
|
|
7957
|
+
lastReason: void 0,
|
|
7958
|
+
limitKind: void 0
|
|
7959
|
+
});
|
|
7960
|
+
}
|
|
7961
|
+
if (request.action !== "resume") {
|
|
7962
|
+
return assertNever(request, snapshotOf(current));
|
|
7963
|
+
}
|
|
7964
|
+
if (current.status === "usage_limited" && isEvidenceLimited(current)) {
|
|
7965
|
+
return transitionGoal(current, transition.now, {
|
|
7966
|
+
status: "active",
|
|
7967
|
+
evidenceCursor: copyCursor(transition.cursor),
|
|
7968
|
+
evidenceCheckpoint: void 0,
|
|
7969
|
+
// The streak counts checkpoints against one window; this resume starts
|
|
7970
|
+
// a different one, so carrying it over would spend the new window's
|
|
7971
|
+
// allowance on the old window's failures.
|
|
7972
|
+
checkpointStalls: void 0,
|
|
7973
|
+
lastCheckpointFailure: void 0,
|
|
7974
|
+
noProgressTurns: void 0,
|
|
7975
|
+
...rearmedBudgets(current, transition.now, transition),
|
|
7976
|
+
lastReason: void 0,
|
|
7977
|
+
limitKind: void 0
|
|
7978
|
+
});
|
|
7979
|
+
}
|
|
7980
|
+
return transitionGoal(current, transition.now, {
|
|
7981
|
+
status: "active",
|
|
7982
|
+
noProgressTurns: void 0,
|
|
7983
|
+
...rearmedBudgets(current, transition.now, transition),
|
|
7984
|
+
...current.status === "paused" ? { lastReason: void 0 } : {}
|
|
7985
|
+
});
|
|
7986
|
+
}
|
|
7987
|
+
__name(reduceGoalControl, "reduceGoalControl");
|
|
7988
|
+
function reduceGoalTurnFinished(current, transition) {
|
|
7989
|
+
if (current.status !== "active" && current.status !== "paused") {
|
|
7990
|
+
throw new GoalInvalidTransitionError(
|
|
7991
|
+
"Only an active or paused Goal can finish a turn",
|
|
7992
|
+
snapshotOf(current)
|
|
7993
|
+
);
|
|
7994
|
+
}
|
|
7995
|
+
return transitionGoal(current, transition.now, {
|
|
7996
|
+
turnCount: current.turnCount + 1,
|
|
7997
|
+
tokensUsed: current.tokensUsed + Math.max(0, transition.tokensUsed ?? 0),
|
|
7998
|
+
...transition.lastReason === void 0 ? {} : { lastReason: transition.lastReason },
|
|
7999
|
+
...transition.windDownTurnId === void 0 ? {} : { windDownTurnId: transition.windDownTurnId },
|
|
8000
|
+
// Zero is spelled as no field, the same way the record persists it.
|
|
8001
|
+
...transition.noProgressTurns === void 0 ? {} : {
|
|
8002
|
+
noProgressTurns: transition.noProgressTurns > 0 ? transition.noProgressTurns : void 0
|
|
8003
|
+
}
|
|
8004
|
+
});
|
|
8005
|
+
}
|
|
8006
|
+
__name(reduceGoalTurnFinished, "reduceGoalTurnFinished");
|
|
8007
|
+
function parseGoalControlRequest(value) {
|
|
8008
|
+
if (!isRecord(value) || typeof value["action"] !== "string") {
|
|
8009
|
+
return void 0;
|
|
8010
|
+
}
|
|
8011
|
+
switch (value["action"]) {
|
|
8012
|
+
case "create":
|
|
8013
|
+
if (!hasOnlyKeys(value, ["action", "objective"])) return void 0;
|
|
8014
|
+
return typeof value["objective"] === "string" ? parseObjectiveRequest(value["action"], value["objective"]) : void 0;
|
|
8015
|
+
case "replace":
|
|
8016
|
+
case "edit":
|
|
8017
|
+
if (!hasOnlyKeys(value, [
|
|
8018
|
+
"action",
|
|
8019
|
+
"objective",
|
|
8020
|
+
"expectedGoalId",
|
|
8021
|
+
"expectedRevision"
|
|
8022
|
+
]) || typeof value["objective"] !== "string" || !isExpectedVersion(value)) {
|
|
8023
|
+
return void 0;
|
|
8024
|
+
}
|
|
8025
|
+
return parseObjectiveVersionedRequest(
|
|
8026
|
+
value["action"],
|
|
8027
|
+
value["objective"],
|
|
8028
|
+
value["expectedGoalId"],
|
|
8029
|
+
value["expectedRevision"]
|
|
8030
|
+
);
|
|
8031
|
+
case "pause": {
|
|
8032
|
+
if (!hasOnlyKeys(value, [
|
|
8033
|
+
"action",
|
|
8034
|
+
"expectedGoalId",
|
|
8035
|
+
"expectedRevision",
|
|
8036
|
+
"reason"
|
|
8037
|
+
]) || !isExpectedVersion(value)) {
|
|
8038
|
+
return void 0;
|
|
8039
|
+
}
|
|
8040
|
+
const reason = value["reason"];
|
|
8041
|
+
if (reason !== void 0) {
|
|
8042
|
+
if (typeof reason !== "string" || validateGoalPauseReason(reason)) {
|
|
8043
|
+
return void 0;
|
|
8044
|
+
}
|
|
8045
|
+
}
|
|
8046
|
+
return {
|
|
8047
|
+
action: "pause",
|
|
8048
|
+
expectedGoalId: value["expectedGoalId"],
|
|
8049
|
+
expectedRevision: value["expectedRevision"],
|
|
8050
|
+
...reason === void 0 ? {} : { reason }
|
|
8051
|
+
};
|
|
8052
|
+
}
|
|
8053
|
+
case "resume":
|
|
8054
|
+
case "clear":
|
|
8055
|
+
if (!hasOnlyKeys(value, ["action", "expectedGoalId", "expectedRevision"]) || !isExpectedVersion(value)) {
|
|
8056
|
+
return void 0;
|
|
8057
|
+
}
|
|
8058
|
+
return {
|
|
8059
|
+
action: value["action"],
|
|
8060
|
+
expectedGoalId: value["expectedGoalId"],
|
|
8061
|
+
expectedRevision: value["expectedRevision"]
|
|
8062
|
+
};
|
|
8063
|
+
default:
|
|
8064
|
+
return void 0;
|
|
8065
|
+
}
|
|
8066
|
+
}
|
|
8067
|
+
__name(parseGoalControlRequest, "parseGoalControlRequest");
|
|
8068
|
+
function parseGoalStateRecordPayloadV2(value) {
|
|
8069
|
+
if (!isRecord(value) || !hasOnlyKeys(value, [
|
|
8070
|
+
"v",
|
|
8071
|
+
"cause",
|
|
8072
|
+
"snapshot",
|
|
8073
|
+
"checkpointPending",
|
|
8074
|
+
"blockedAudit"
|
|
8075
|
+
]) || value["v"] !== GOAL_STATE_VERSION || !isGoalStateCause(value["cause"]) || !isCheckpointPending(value["checkpointPending"]) || !isBlockedAudit(value["blockedAudit"])) {
|
|
8076
|
+
return void 0;
|
|
8077
|
+
}
|
|
8078
|
+
const parsedSnapshot = parseGoalSnapshotV2(value["snapshot"]);
|
|
8079
|
+
if (parsedSnapshot?.activity !== "idle") return void 0;
|
|
8080
|
+
const checkpointPending = value["checkpointPending"];
|
|
8081
|
+
if (checkpointPending && (parsedSnapshot.goal?.status !== "active" || checkpointPending.permit.goalId !== parsedSnapshot.goal.goalId || checkpointPending.permit.revision !== parsedSnapshot.goal.revision || checkpointPending.recordUuid === parsedSnapshot.goal.evidenceCursor.recordId || value["cause"] !== "turn_finished" && value["cause"] !== "verifier_reject")) {
|
|
8082
|
+
return void 0;
|
|
8083
|
+
}
|
|
8084
|
+
return {
|
|
8085
|
+
v: GOAL_STATE_VERSION,
|
|
8086
|
+
cause: value["cause"],
|
|
8087
|
+
snapshot: parsedSnapshot,
|
|
8088
|
+
...checkpointPending ? { checkpointPending: structuredClone(checkpointPending) } : {},
|
|
8089
|
+
...value["blockedAudit"] ? { blockedAudit: structuredClone(value["blockedAudit"]) } : {}
|
|
8090
|
+
};
|
|
8091
|
+
}
|
|
8092
|
+
__name(parseGoalStateRecordPayloadV2, "parseGoalStateRecordPayloadV2");
|
|
8093
|
+
function parseGoalSnapshotV2(value) {
|
|
8094
|
+
if (!isRecord(value) || !hasOnlyKeys(value, ["v", "goal", "activity", "clearedGoal"]) || value["v"] !== GOAL_STATE_VERSION || !isGoalActivity(value["activity"])) {
|
|
8095
|
+
return void 0;
|
|
8096
|
+
}
|
|
8097
|
+
if (value["goal"] === null) {
|
|
8098
|
+
const clearedGoal = parseGoalOrder(value["clearedGoal"]);
|
|
8099
|
+
if (value["clearedGoal"] !== void 0 && !clearedGoal) return void 0;
|
|
8100
|
+
return {
|
|
8101
|
+
v: GOAL_STATE_VERSION,
|
|
8102
|
+
goal: null,
|
|
8103
|
+
activity: value["activity"],
|
|
8104
|
+
...clearedGoal ? { clearedGoal } : {}
|
|
8105
|
+
};
|
|
8106
|
+
}
|
|
8107
|
+
if (value["clearedGoal"] !== void 0) return void 0;
|
|
8108
|
+
const goal = parseGoalRecord(value["goal"]);
|
|
8109
|
+
return goal ? { v: GOAL_STATE_VERSION, goal, activity: value["activity"] } : void 0;
|
|
8110
|
+
}
|
|
8111
|
+
__name(parseGoalSnapshotV2, "parseGoalSnapshotV2");
|
|
8112
|
+
function parseGoalOrder(value) {
|
|
8113
|
+
if (!isRecord(value) || !hasOnlyKeys(value, ["goalId", "revision", "updatedAt"]) || typeof value["goalId"] !== "string" || !value["goalId"] || !isNonNegativeInteger(value["revision"]) || value["revision"] === 0 || !isFiniteNumber(value["updatedAt"])) {
|
|
8114
|
+
return void 0;
|
|
8115
|
+
}
|
|
8116
|
+
return {
|
|
8117
|
+
goalId: value["goalId"],
|
|
8118
|
+
revision: value["revision"],
|
|
8119
|
+
updatedAt: value["updatedAt"]
|
|
8120
|
+
};
|
|
8121
|
+
}
|
|
8122
|
+
__name(parseGoalOrder, "parseGoalOrder");
|
|
8123
|
+
function parseGoalStateCause(value) {
|
|
8124
|
+
return isGoalStateCause(value) ? value : void 0;
|
|
8125
|
+
}
|
|
8126
|
+
__name(parseGoalStateCause, "parseGoalStateCause");
|
|
8127
|
+
function createGoal(goalId, objective, now, cursor, grants) {
|
|
8128
|
+
return {
|
|
8129
|
+
goalId,
|
|
8130
|
+
revision: 1,
|
|
8131
|
+
objective,
|
|
8132
|
+
status: "active",
|
|
8133
|
+
evidenceCursor: copyCursor(cursor),
|
|
8134
|
+
turnCount: 0,
|
|
8135
|
+
activeTimeMs: 0,
|
|
8136
|
+
tokensUsed: 0,
|
|
8137
|
+
...armedBudget("tokenBudget", grants.tokenBudgetGrant),
|
|
8138
|
+
...armedBudget("turnBudget", grants.turnBudgetGrant),
|
|
8139
|
+
...armedBudget("activeTimeBudgetMs", grants.activeTimeBudgetGrantMs),
|
|
8140
|
+
createdAt: now,
|
|
8141
|
+
updatedAt: now
|
|
8142
|
+
};
|
|
8143
|
+
}
|
|
8144
|
+
__name(createGoal, "createGoal");
|
|
8145
|
+
function armedBudget(field, grant) {
|
|
8146
|
+
return grant !== void 0 && Number.isFinite(grant) ? { [field]: grant } : {};
|
|
8147
|
+
}
|
|
8148
|
+
__name(armedBudget, "armedBudget");
|
|
8149
|
+
function assertExpectedVersion(current, expectedGoalId, expectedRevision) {
|
|
8150
|
+
if (!current || current.goalId !== expectedGoalId || current.revision !== expectedRevision) {
|
|
8151
|
+
throw new GoalConflictError(snapshotOf(current));
|
|
8152
|
+
}
|
|
8153
|
+
}
|
|
8154
|
+
__name(assertExpectedVersion, "assertExpectedVersion");
|
|
8155
|
+
function normalizeObjective(objective, current) {
|
|
8156
|
+
const normalized = objective.trim();
|
|
8157
|
+
if (!normalized) {
|
|
8158
|
+
throw new GoalInvalidTransitionError(
|
|
8159
|
+
"Goal objective must not be empty",
|
|
8160
|
+
current
|
|
8161
|
+
);
|
|
8162
|
+
}
|
|
8163
|
+
return normalized;
|
|
8164
|
+
}
|
|
8165
|
+
__name(normalizeObjective, "normalizeObjective");
|
|
8166
|
+
function isEvidenceLimited(goal) {
|
|
8167
|
+
return goal.limitKind === "evidence_catalog" || goal.limitKind === "checkpoint_request" || goal.lastReason !== void 0 && goalLimitKindForReason(goal.lastReason) !== void 0;
|
|
8168
|
+
}
|
|
8169
|
+
__name(isEvidenceLimited, "isEvidenceLimited");
|
|
8170
|
+
function rearmedTokenBudget(current, grant) {
|
|
8171
|
+
if (grant === void 0 || !isGoalTokenBudgetSpent(current)) {
|
|
8172
|
+
return {};
|
|
8173
|
+
}
|
|
8174
|
+
return Number.isFinite(grant) ? { tokenBudget: current.tokensUsed + grant, windDownTurnId: void 0 } : { tokenBudget: void 0, windDownTurnId: void 0 };
|
|
8175
|
+
}
|
|
8176
|
+
__name(rearmedTokenBudget, "rearmedTokenBudget");
|
|
8177
|
+
function rearmedTurnBudget(current, grant) {
|
|
8178
|
+
if (grant === void 0 || !isGoalTurnBudgetSpent(current)) {
|
|
8179
|
+
return {};
|
|
8180
|
+
}
|
|
8181
|
+
return Number.isFinite(grant) ? { turnBudget: current.turnCount + grant, windDownTurnId: void 0 } : { turnBudget: void 0, windDownTurnId: void 0 };
|
|
8182
|
+
}
|
|
8183
|
+
__name(rearmedTurnBudget, "rearmedTurnBudget");
|
|
8184
|
+
function rearmedActiveTimeBudget(current, now, grant) {
|
|
8185
|
+
const elapsed = elapsedActiveTime(current, now);
|
|
8186
|
+
if (grant === void 0 || !isGoalActiveTimeBudgetSpent(current, elapsed)) {
|
|
8187
|
+
return {};
|
|
8188
|
+
}
|
|
8189
|
+
return Number.isFinite(grant) ? { activeTimeBudgetMs: elapsed + grant, windDownTurnId: void 0 } : { activeTimeBudgetMs: void 0, windDownTurnId: void 0 };
|
|
8190
|
+
}
|
|
8191
|
+
__name(rearmedActiveTimeBudget, "rearmedActiveTimeBudget");
|
|
8192
|
+
function rearmedBudgets(current, now, grants) {
|
|
8193
|
+
return {
|
|
8194
|
+
...rearmedTokenBudget(current, grants.tokenBudgetGrant),
|
|
8195
|
+
...rearmedTurnBudget(current, grants.turnBudgetGrant),
|
|
8196
|
+
...rearmedActiveTimeBudget(current, now, grants.activeTimeBudgetGrantMs)
|
|
8197
|
+
};
|
|
8198
|
+
}
|
|
8199
|
+
__name(rearmedBudgets, "rearmedBudgets");
|
|
8200
|
+
function transitionGoal(goal, now, changes) {
|
|
8201
|
+
const transitioned = {
|
|
8202
|
+
...goal,
|
|
8203
|
+
...changes,
|
|
8204
|
+
activeTimeMs: elapsedActiveTime(goal, now),
|
|
8205
|
+
updatedAt: now
|
|
8206
|
+
};
|
|
8207
|
+
if ("tokenBudget" in changes && changes.tokenBudget === void 0) {
|
|
8208
|
+
delete transitioned.tokenBudget;
|
|
8209
|
+
}
|
|
8210
|
+
if ("turnBudget" in changes && changes.turnBudget === void 0) {
|
|
8211
|
+
delete transitioned.turnBudget;
|
|
8212
|
+
}
|
|
8213
|
+
if ("activeTimeBudgetMs" in changes && changes.activeTimeBudgetMs === void 0) {
|
|
8214
|
+
delete transitioned.activeTimeBudgetMs;
|
|
8215
|
+
}
|
|
8216
|
+
if ("windDownTurnId" in changes && changes.windDownTurnId === void 0) {
|
|
8217
|
+
delete transitioned.windDownTurnId;
|
|
8218
|
+
}
|
|
8219
|
+
if ("noProgressTurns" in changes && changes.noProgressTurns === void 0) {
|
|
8220
|
+
delete transitioned.noProgressTurns;
|
|
8221
|
+
}
|
|
8222
|
+
return transitioned;
|
|
8223
|
+
}
|
|
8224
|
+
__name(transitionGoal, "transitionGoal");
|
|
8225
|
+
function snapshotOf(goal) {
|
|
8226
|
+
return { v: GOAL_STATE_VERSION, goal, activity: "idle" };
|
|
8227
|
+
}
|
|
8228
|
+
__name(snapshotOf, "snapshotOf");
|
|
8229
|
+
function copyCursor(cursor) {
|
|
8230
|
+
return { recordId: cursor.recordId };
|
|
8231
|
+
}
|
|
8232
|
+
__name(copyCursor, "copyCursor");
|
|
8233
|
+
function parseObjectiveRequest(action, objective) {
|
|
8234
|
+
const normalized = objective.trim();
|
|
8235
|
+
return normalized ? { action, objective: normalized } : void 0;
|
|
8236
|
+
}
|
|
8237
|
+
__name(parseObjectiveRequest, "parseObjectiveRequest");
|
|
8238
|
+
function parseObjectiveVersionedRequest(action, objective, expectedGoalId, expectedRevision) {
|
|
8239
|
+
const normalized = objective.trim();
|
|
8240
|
+
return normalized ? { action, objective: normalized, expectedGoalId, expectedRevision } : void 0;
|
|
8241
|
+
}
|
|
8242
|
+
__name(parseObjectiveVersionedRequest, "parseObjectiveVersionedRequest");
|
|
8243
|
+
function parseGoalRecord(value) {
|
|
8244
|
+
if (!isRecord(value) || !hasOnlyKeys(value, [
|
|
8245
|
+
"goalId",
|
|
8246
|
+
"revision",
|
|
8247
|
+
"objective",
|
|
8248
|
+
"status",
|
|
8249
|
+
"evidenceCursor",
|
|
8250
|
+
"turnCount",
|
|
8251
|
+
"activeTimeMs",
|
|
8252
|
+
"tokensUsed",
|
|
8253
|
+
"tokenBudget",
|
|
8254
|
+
"turnBudget",
|
|
8255
|
+
"activeTimeBudgetMs",
|
|
8256
|
+
"windDownTurnId",
|
|
8257
|
+
"createdAt",
|
|
8258
|
+
"updatedAt",
|
|
8259
|
+
"evidenceCheckpoint",
|
|
8260
|
+
"checkpointStalls",
|
|
8261
|
+
"lastCheckpointFailure",
|
|
8262
|
+
"noProgressTurns",
|
|
8263
|
+
"lastReason",
|
|
8264
|
+
"limitKind"
|
|
8265
|
+
]) || typeof value["goalId"] !== "string" || !value["goalId"] || !isNonNegativeInteger(value["revision"]) || value["revision"] === 0 || typeof value["objective"] !== "string" || !value["objective"].trim() || !isGoalStatus(value["status"]) || !isTranscriptCursor(value["evidenceCursor"]) || !isNonNegativeInteger(value["turnCount"]) || !isNonNegativeNumber(value["activeTimeMs"]) || value["tokensUsed"] !== void 0 && !isNonNegativeNumber(value["tokensUsed"]) || value["tokenBudget"] !== void 0 && !isNonNegativeNumber(value["tokenBudget"]) || value["turnBudget"] !== void 0 && !isNonNegativeInteger(value["turnBudget"]) || value["activeTimeBudgetMs"] !== void 0 && !isNonNegativeNumber(value["activeTimeBudgetMs"]) || value["windDownTurnId"] !== void 0 && (typeof value["windDownTurnId"] !== "string" || !value["windDownTurnId"]) || !isFiniteNumber(value["createdAt"]) || !isFiniteNumber(value["updatedAt"]) || !isGoalEvidenceCheckpoint(value["evidenceCheckpoint"]) || value["checkpointStalls"] !== void 0 && !isNonNegativeInteger(value["checkpointStalls"]) || value["lastCheckpointFailure"] !== void 0 && (typeof value["lastCheckpointFailure"] !== "string" || !value["lastCheckpointFailure"]) || value["noProgressTurns"] !== void 0 && !isNonNegativeInteger(value["noProgressTurns"]) || value["lastReason"] !== void 0 && typeof value["lastReason"] !== "string" || value["limitKind"] !== void 0 && (!isGoalLimitKind(value["limitKind"]) || value["status"] !== "usage_limited")) {
|
|
8266
|
+
return void 0;
|
|
8267
|
+
}
|
|
8268
|
+
if (value["evidenceCheckpoint"] && value["evidenceCursor"].recordId !== value["evidenceCheckpoint"].checkpointId) {
|
|
8269
|
+
return void 0;
|
|
8270
|
+
}
|
|
8271
|
+
return {
|
|
8272
|
+
goalId: value["goalId"],
|
|
8273
|
+
revision: value["revision"],
|
|
8274
|
+
objective: value["objective"],
|
|
8275
|
+
status: value["status"],
|
|
8276
|
+
evidenceCursor: copyCursor(value["evidenceCursor"]),
|
|
8277
|
+
turnCount: value["turnCount"],
|
|
8278
|
+
activeTimeMs: value["activeTimeMs"],
|
|
8279
|
+
// Goals persisted before `tokensUsed` existed carry no spend to restore.
|
|
8280
|
+
tokensUsed: value["tokensUsed"] ?? 0,
|
|
8281
|
+
// And no budget: a Goal from before budgets existed stays unbounded.
|
|
8282
|
+
...value["tokenBudget"] === void 0 ? {} : { tokenBudget: value["tokenBudget"] },
|
|
8283
|
+
...value["turnBudget"] === void 0 ? {} : { turnBudget: value["turnBudget"] },
|
|
8284
|
+
...value["activeTimeBudgetMs"] === void 0 ? {} : { activeTimeBudgetMs: value["activeTimeBudgetMs"] },
|
|
8285
|
+
...value["windDownTurnId"] === void 0 ? {} : { windDownTurnId: value["windDownTurnId"] },
|
|
8286
|
+
createdAt: value["createdAt"],
|
|
8287
|
+
updatedAt: value["updatedAt"],
|
|
8288
|
+
...value["evidenceCheckpoint"] === void 0 ? {} : {
|
|
8289
|
+
evidenceCheckpoint: structuredClone(value["evidenceCheckpoint"])
|
|
8290
|
+
},
|
|
8291
|
+
// Zero is spelled as no field; a persisted 0 restores the same way.
|
|
8292
|
+
...value["checkpointStalls"] ? { checkpointStalls: value["checkpointStalls"] } : {},
|
|
8293
|
+
...value["lastCheckpointFailure"] === void 0 ? {} : { lastCheckpointFailure: value["lastCheckpointFailure"] },
|
|
8294
|
+
...value["noProgressTurns"] ? { noProgressTurns: value["noProgressTurns"] } : {},
|
|
8295
|
+
...value["lastReason"] === void 0 ? {} : { lastReason: value["lastReason"] },
|
|
8296
|
+
...value["limitKind"] === void 0 ? {} : { limitKind: value["limitKind"] }
|
|
8297
|
+
};
|
|
8298
|
+
}
|
|
8299
|
+
__name(parseGoalRecord, "parseGoalRecord");
|
|
8300
|
+
function isExpectedVersion(value) {
|
|
8301
|
+
return typeof value["expectedGoalId"] === "string" && value["expectedGoalId"].length > 0 && isNonNegativeInteger(value["expectedRevision"]) && value["expectedRevision"] > 0;
|
|
8302
|
+
}
|
|
8303
|
+
__name(isExpectedVersion, "isExpectedVersion");
|
|
8304
|
+
function isTranscriptCursor(value) {
|
|
8305
|
+
return isRecord(value) && hasOnlyKeys(value, ["recordId"]) && (typeof value["recordId"] === "string" || value["recordId"] === null);
|
|
8306
|
+
}
|
|
8307
|
+
__name(isTranscriptCursor, "isTranscriptCursor");
|
|
8308
|
+
function isGoalStatus(value) {
|
|
8309
|
+
return value === "active" || value === "paused" || value === "blocked" || value === "usage_limited" || value === "complete";
|
|
8310
|
+
}
|
|
8311
|
+
__name(isGoalStatus, "isGoalStatus");
|
|
8312
|
+
function isGoalActivity(value) {
|
|
8313
|
+
return value === "idle" || value === "running" || value === "verifying";
|
|
8314
|
+
}
|
|
8315
|
+
__name(isGoalActivity, "isGoalActivity");
|
|
8316
|
+
function isGoalStateCause(value) {
|
|
8317
|
+
return value === "create" || value === "replace" || value === "edit" || value === "pause" || value === "resume" || value === "turn_finished" || value === "checkpoint" || value === "verifier_accept" || value === "verifier_reject" || value === "complete" || value === "blocked" || value === "usage_limited" || value === "clear" || value === "migrated";
|
|
8318
|
+
}
|
|
8319
|
+
__name(isGoalStateCause, "isGoalStateCause");
|
|
8320
|
+
function isGoalEvidenceCheckpoint(value) {
|
|
8321
|
+
if (value === void 0) return true;
|
|
8322
|
+
if (!isRecord(value) || !hasOnlyKeys(value, ["checkpointId", "createdAt", "claims"]) || typeof value["checkpointId"] !== "string" || value["checkpointId"].length === 0 || !isFiniteNumber(value["createdAt"]) || !Array.isArray(value["claims"]) || value["claims"].length === 0 || value["claims"].length > GOAL_CHECKPOINT_CLAIM_LIMIT) {
|
|
8323
|
+
return false;
|
|
8324
|
+
}
|
|
8325
|
+
let checkpointBytes = 0;
|
|
8326
|
+
for (const [index, claim] of value["claims"].entries()) {
|
|
8327
|
+
if (!isRecord(claim) || !hasOnlyKeys(claim, ["id", "proofKind", "claim", "sourceRefs"]) || claim["id"] !== `${value["checkpointId"]}:${index + 1}` || !isGoalEvidenceProofKind(claim["proofKind"]) || typeof claim["claim"] !== "string" || claim["claim"].trim().length === 0 || [...claim["claim"]].length > GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS || !Array.isArray(claim["sourceRefs"]) || claim["sourceRefs"].length === 0 || claim["sourceRefs"].length > GOAL_CHECKPOINT_SOURCE_REFERENCE_LIMIT || new Set(claim["sourceRefs"]).size !== claim["sourceRefs"].length || claim["sourceRefs"].some(
|
|
8328
|
+
(reference) => typeof reference !== "string" || reference.length === 0
|
|
8329
|
+
)) {
|
|
8330
|
+
return false;
|
|
8331
|
+
}
|
|
8332
|
+
checkpointBytes += new TextEncoder().encode(claim["claim"]).byteLength;
|
|
8333
|
+
if (checkpointBytes > GOAL_CHECKPOINT_CLAIM_MAX_BYTES) return false;
|
|
8334
|
+
}
|
|
8335
|
+
return true;
|
|
8336
|
+
}
|
|
8337
|
+
__name(isGoalEvidenceCheckpoint, "isGoalEvidenceCheckpoint");
|
|
8338
|
+
function isCheckpointPending(value) {
|
|
8339
|
+
return value === void 0 || isRecord(value) && hasOnlyKeys(value, ["permit", "recordUuid"]) && isGoalTurnPermit(value["permit"]) && typeof value["recordUuid"] === "string" && value["recordUuid"].length > 0;
|
|
8340
|
+
}
|
|
8341
|
+
__name(isCheckpointPending, "isCheckpointPending");
|
|
8342
|
+
function isGoalTurnPermit(value) {
|
|
8343
|
+
return isRecord(value) && hasOnlyKeys(value, ["goalId", "revision", "turnId"]) && typeof value["goalId"] === "string" && value["goalId"].length > 0 && isNonNegativeInteger(value["revision"]) && value["revision"] > 0 && typeof value["turnId"] === "string" && value["turnId"].length > 0;
|
|
8344
|
+
}
|
|
8345
|
+
__name(isGoalTurnPermit, "isGoalTurnPermit");
|
|
8346
|
+
function isBlockedAudit(value) {
|
|
8347
|
+
return value === void 0 || isRecord(value) && hasOnlyKeys(value, ["fingerprint", "count", "turnIds"]) && typeof value["fingerprint"] === "string" && value["fingerprint"].length > 0 && isNonNegativeInteger(value["count"]) && value["count"] > 0 && value["count"] <= MAX_BLOCKED_AUDIT_COUNT && Array.isArray(value["turnIds"]) && value["turnIds"].length === value["count"] && value["turnIds"].every(
|
|
8348
|
+
(turnId) => typeof turnId === "string" && turnId.length > 0
|
|
8349
|
+
);
|
|
8350
|
+
}
|
|
8351
|
+
__name(isBlockedAudit, "isBlockedAudit");
|
|
8352
|
+
function isRecord(value) {
|
|
8353
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
8354
|
+
}
|
|
8355
|
+
__name(isRecord, "isRecord");
|
|
8356
|
+
function hasOnlyKeys(value, keys) {
|
|
8357
|
+
return Object.keys(value).every((key) => keys.includes(key));
|
|
8358
|
+
}
|
|
8359
|
+
__name(hasOnlyKeys, "hasOnlyKeys");
|
|
8360
|
+
function isNonNegativeInteger(value) {
|
|
8361
|
+
return typeof value === "number" && Number.isInteger(value) && value >= 0;
|
|
8362
|
+
}
|
|
8363
|
+
__name(isNonNegativeInteger, "isNonNegativeInteger");
|
|
8364
|
+
function isNonNegativeNumber(value) {
|
|
8365
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0;
|
|
8366
|
+
}
|
|
8367
|
+
__name(isNonNegativeNumber, "isNonNegativeNumber");
|
|
8368
|
+
function isFiniteNumber(value) {
|
|
8369
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
8370
|
+
}
|
|
8371
|
+
__name(isFiniteNumber, "isFiniteNumber");
|
|
8372
|
+
function assertNever(value, snapshot) {
|
|
8373
|
+
throw new GoalInvalidTransitionError(
|
|
8374
|
+
`Unsupported Goal control action: ${String(value)}`,
|
|
8375
|
+
snapshot
|
|
8376
|
+
);
|
|
8377
|
+
}
|
|
8378
|
+
__name(assertNever, "assertNever");
|
|
8379
|
+
|
|
8380
|
+
// packages/core/src/telemetry/goal-events.ts
|
|
8381
|
+
var REPORTED_CAUSES = new Set(
|
|
8382
|
+
GOAL_STATE_EVENT_CAUSES
|
|
8383
|
+
);
|
|
8384
|
+
function isGoalStateEventCause(cause) {
|
|
8385
|
+
return cause !== void 0 && REPORTED_CAUSES.has(cause);
|
|
8386
|
+
}
|
|
8387
|
+
__name(isGoalStateEventCause, "isGoalStateEventCause");
|
|
8388
|
+
function goalStateEventFromSnapshot(snapshot, cause, now = Date.now()) {
|
|
8389
|
+
if (!isGoalStateEventCause(cause)) return void 0;
|
|
8390
|
+
const goal = snapshot.goal;
|
|
8391
|
+
if (!goal) {
|
|
8392
|
+
const cleared = snapshot.clearedGoal;
|
|
8393
|
+
return cause === "clear" && cleared ? makeGoalStateEvent({
|
|
8394
|
+
cause,
|
|
8395
|
+
goal_id: cleared.goalId,
|
|
8396
|
+
revision: cleared.revision
|
|
8397
|
+
}) : void 0;
|
|
8398
|
+
}
|
|
8399
|
+
return makeGoalStateEvent({
|
|
8400
|
+
cause,
|
|
8401
|
+
goal_id: goal.goalId,
|
|
8402
|
+
revision: goal.revision,
|
|
8403
|
+
status: goal.status,
|
|
8404
|
+
limit_kind: goal.limitKind,
|
|
8405
|
+
turn_count: goal.turnCount,
|
|
8406
|
+
tokens_used: goal.tokensUsed,
|
|
8407
|
+
no_progress_turns: goal.noProgressTurns,
|
|
8408
|
+
token_budget: goal.tokenBudget,
|
|
8409
|
+
turn_budget: goal.turnBudget,
|
|
8410
|
+
active_time_ms: elapsedActiveTime(goal, now),
|
|
8411
|
+
active_time_budget_ms: goal.activeTimeBudgetMs,
|
|
8412
|
+
objective_length: [...goal.objective].length
|
|
8413
|
+
});
|
|
8414
|
+
}
|
|
8415
|
+
__name(goalStateEventFromSnapshot, "goalStateEventFromSnapshot");
|
|
8416
|
+
|
|
7618
8417
|
// packages/core/src/telemetry/daemon-metrics.ts
|
|
7619
8418
|
init_esbuild_shims();
|
|
7620
8419
|
init_esm();
|
|
@@ -9568,6 +10367,61 @@ __name(restoreArchivedAutoSkill, "restoreArchivedAutoSkill");
|
|
|
9568
10367
|
export {
|
|
9569
10368
|
parseBooleanEnvFlag,
|
|
9570
10369
|
resolveTelemetrySettings,
|
|
10370
|
+
TERMINAL_OSC_REGEX,
|
|
10371
|
+
TERMINAL_CSI_REGEX,
|
|
10372
|
+
TERMINAL_SHIFT_DCS_REGEX,
|
|
10373
|
+
stripTerminalControlSequences,
|
|
10374
|
+
isBidiControlChar,
|
|
10375
|
+
stripDisplayControlChars,
|
|
10376
|
+
truncateNotificationLabel,
|
|
10377
|
+
GOAL_STATE_VERSION,
|
|
10378
|
+
GOAL_PROPOSAL_REASON_MAX_CHARACTERS,
|
|
10379
|
+
GOAL_CHECKPOINT_CLAIM_LIMIT,
|
|
10380
|
+
GOAL_CHECKPOINT_CLAIM_MAX_CHARACTERS,
|
|
10381
|
+
GOAL_CHECKPOINT_CLAIM_MAX_BYTES,
|
|
10382
|
+
GOAL_CHECKPOINT_SOURCE_REFERENCE_LIMIT,
|
|
10383
|
+
GOAL_EVIDENCE_CATALOG_EXHAUSTED_REASON,
|
|
10384
|
+
GOAL_CHECKPOINT_REQUEST_TOO_LARGE_REASON,
|
|
10385
|
+
GOAL_CHECKPOINT_STALL_LIMIT,
|
|
10386
|
+
GOAL_NO_PROGRESS_TURN_LIMIT,
|
|
10387
|
+
goalCheckpointStalledReason,
|
|
10388
|
+
capGoalCheckpointFailure,
|
|
10389
|
+
goalCheckpointHealthVisible,
|
|
10390
|
+
goalCheckpointHealthLine,
|
|
10391
|
+
GOAL_DEFAULT_TOKEN_BUDGET,
|
|
10392
|
+
goalTokenBudgetReason,
|
|
10393
|
+
isGoalTokenBudgetSpent,
|
|
10394
|
+
goalTurnBudgetReason,
|
|
10395
|
+
isGoalTurnBudgetSpent,
|
|
10396
|
+
goalActiveTimeBudgetReason,
|
|
10397
|
+
isGoalActiveTimeBudgetSpent,
|
|
10398
|
+
PAUSED_GOAL_SYSTEM_REMINDER,
|
|
10399
|
+
isGoalEvidenceProofKind,
|
|
10400
|
+
emptyGoalSnapshot,
|
|
10401
|
+
goalRequiresExactPermit,
|
|
10402
|
+
isRepeatedBlockerProposal,
|
|
10403
|
+
GOAL_INFEASIBLE_NEXT_STEP,
|
|
10404
|
+
validateGoalProposalReason,
|
|
10405
|
+
GOAL_PAUSE_REASON_USER_INTERRUPT,
|
|
10406
|
+
GOAL_PAUSE_REASON_COMMAND,
|
|
10407
|
+
GOAL_PAUSE_REASON_SESSION_TOKEN_LIMIT,
|
|
10408
|
+
GOAL_PAUSE_REASON_STOP_HOOK_CAP,
|
|
10409
|
+
GOAL_PAUSE_REASON_SESSION_DISPOSED,
|
|
10410
|
+
GOAL_PAUSE_REASON_HEADLESS_RUN_ENDED,
|
|
10411
|
+
GOAL_PAUSE_REASON_NO_PROGRESS,
|
|
10412
|
+
goalPauseReasonForFailure,
|
|
10413
|
+
goalPauseReasonForHeadlessFailure,
|
|
10414
|
+
goalPauseReasonForRunBudget,
|
|
10415
|
+
GoalConflictError,
|
|
10416
|
+
GoalInvalidTransitionError,
|
|
10417
|
+
elapsedActiveTime,
|
|
10418
|
+
reduceGoalControl,
|
|
10419
|
+
reduceGoalTurnFinished,
|
|
10420
|
+
parseGoalControlRequest,
|
|
10421
|
+
parseGoalStateRecordPayloadV2,
|
|
10422
|
+
parseGoalSnapshotV2,
|
|
10423
|
+
parseGoalStateCause,
|
|
10424
|
+
goalStateEventFromSnapshot,
|
|
9571
10425
|
initializeDaemonMetrics,
|
|
9572
10426
|
registerDaemonGaugeCallbacks,
|
|
9573
10427
|
recordDaemonHttpRequest,
|
|
@@ -9617,6 +10471,11 @@ export {
|
|
|
9617
10471
|
getAutoSkillCuratorStatus,
|
|
9618
10472
|
restoreArchivedAutoSkill
|
|
9619
10473
|
};
|
|
10474
|
+
/**
|
|
10475
|
+
* @license
|
|
10476
|
+
* Copyright 2025 Qwen Code
|
|
10477
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
10478
|
+
*/
|
|
9620
10479
|
/**
|
|
9621
10480
|
* @license
|
|
9622
10481
|
* Copyright 2026 Qwen Team
|