@te-river/opencode-team-mode 1.6.2 → 1.7.1
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/README.md +114 -118
- package/README.zh-CN.md +95 -100
- package/dist/agents.d.ts.map +1 -1
- package/dist/agents.js +89 -79
- package/dist/agents.js.map +1 -1
- package/dist/approval-gate.d.ts +8 -9
- package/dist/approval-gate.d.ts.map +1 -1
- package/dist/approval-gate.js +13 -14
- package/dist/approval-gate.js.map +1 -1
- package/dist/capabilities.d.ts +11 -37
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +11 -141
- package/dist/capabilities.js.map +1 -1
- package/dist/commands.js +1 -1
- package/dist/envprotect/hook.d.ts +12 -31
- package/dist/envprotect/hook.d.ts.map +1 -1
- package/dist/envprotect/hook.js +13 -91
- package/dist/envprotect/hook.js.map +1 -1
- package/dist/envprotect/patterns.d.ts +6 -4
- package/dist/envprotect/patterns.d.ts.map +1 -1
- package/dist/envprotect/patterns.js +6 -4
- package/dist/envprotect/patterns.js.map +1 -1
- package/dist/envprotect.d.ts +1 -1
- package/dist/envprotect.d.ts.map +1 -1
- package/dist/envprotect.js +1 -1
- package/dist/envprotect.js.map +1 -1
- package/dist/host/v2-browser-gate.d.ts +19 -1
- package/dist/host/v2-browser-gate.d.ts.map +1 -1
- package/dist/host/v2-browser-gate.js +47 -6
- package/dist/host/v2-browser-gate.js.map +1 -1
- package/dist/host/v2-capabilities.d.ts +16 -0
- package/dist/host/v2-capabilities.d.ts.map +1 -1
- package/dist/host/v2-capabilities.js +22 -1
- package/dist/host/v2-capabilities.js.map +1 -1
- package/dist/host/v2-default-agent.d.ts +37 -0
- package/dist/host/v2-default-agent.d.ts.map +1 -0
- package/dist/host/v2-default-agent.js +128 -0
- package/dist/host/v2-default-agent.js.map +1 -0
- package/dist/host/v2-events.d.ts +1 -0
- package/dist/host/v2-events.d.ts.map +1 -1
- package/dist/host/v2-events.js +14 -0
- package/dist/host/v2-events.js.map +1 -1
- package/dist/host/v2-guard.d.ts +178 -0
- package/dist/host/v2-guard.d.ts.map +1 -1
- package/dist/host/v2-guard.js +324 -8
- package/dist/host/v2-guard.js.map +1 -1
- package/dist/host/v2-offload.d.ts +1 -1
- package/dist/host/v2-offload.js +2 -2
- package/dist/host/v2-permissions.d.ts +45 -44
- package/dist/host/v2-permissions.d.ts.map +1 -1
- package/dist/host/v2-permissions.js +48 -49
- package/dist/host/v2-permissions.js.map +1 -1
- package/dist/host/v2-probe-chain.d.ts +93 -0
- package/dist/host/v2-probe-chain.d.ts.map +1 -0
- package/dist/host/v2-probe-chain.js +146 -0
- package/dist/host/v2-probe-chain.js.map +1 -0
- package/dist/host/v2-prune.d.ts +157 -0
- package/dist/host/v2-prune.d.ts.map +1 -0
- package/dist/host/v2-prune.js +507 -0
- package/dist/host/v2-prune.js.map +1 -0
- package/dist/host/v2-retry.d.ts +143 -0
- package/dist/host/v2-retry.d.ts.map +1 -0
- package/dist/host/v2-retry.js +315 -0
- package/dist/host/v2-retry.js.map +1 -0
- package/dist/host/v2-scope.d.ts.map +1 -1
- package/dist/host/v2-scope.js +14 -7
- package/dist/host/v2-scope.js.map +1 -1
- package/dist/host/v2-session-client.d.ts +24 -0
- package/dist/host/v2-session-client.d.ts.map +1 -1
- package/dist/host/v2-session-client.js +243 -3
- package/dist/host/v2-session-client.js.map +1 -1
- package/dist/host/v2-session.d.ts +72 -1
- package/dist/host/v2-session.d.ts.map +1 -1
- package/dist/host/v2-session.js +154 -10
- package/dist/host/v2-session.js.map +1 -1
- package/dist/host/v2-tool.d.ts +2 -3
- package/dist/host/v2-tool.d.ts.map +1 -1
- package/dist/host/v2-tool.js +2 -3
- package/dist/host/v2-tool.js.map +1 -1
- package/dist/host/v2-types.d.ts +30 -0
- package/dist/host/v2-types.d.ts.map +1 -1
- package/dist/host/v2-usage.d.ts +50 -0
- package/dist/host/v2-usage.d.ts.map +1 -0
- package/dist/host/v2-usage.js +82 -0
- package/dist/host/v2-usage.js.map +1 -0
- package/dist/host/v2.d.ts +14 -12
- package/dist/host/v2.d.ts.map +1 -1
- package/dist/host/v2.js +430 -73
- package/dist/host/v2.js.map +1 -1
- package/dist/identity.d.ts +27 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +34 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +9 -24
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -27
- package/dist/index.js.map +1 -1
- package/dist/prompts/lead.d.ts +1 -1
- package/dist/prompts/lead.d.ts.map +1 -1
- package/dist/prompts/lead.js +38 -25
- package/dist/prompts/lead.js.map +1 -1
- package/dist/prompts/shared.d.ts +2 -2
- package/dist/prompts/shared.d.ts.map +1 -1
- package/dist/prompts/shared.js +66 -56
- package/dist/prompts/shared.js.map +1 -1
- package/dist/prompts/specialists.d.ts +2 -2
- package/dist/prompts/specialists.d.ts.map +1 -1
- package/dist/prompts/specialists.js +53 -83
- package/dist/prompts/specialists.js.map +1 -1
- package/dist/tm/args-schema.d.ts +7 -32
- package/dist/tm/args-schema.d.ts.map +1 -1
- package/dist/tm/args-schema.js +12 -153
- package/dist/tm/args-schema.js.map +1 -1
- package/dist/tm/board.d.ts +10 -9
- package/dist/tm/board.d.ts.map +1 -1
- package/dist/tm/board.js +11 -10
- package/dist/tm/board.js.map +1 -1
- package/dist/tm/config-files.d.ts +81 -0
- package/dist/tm/config-files.d.ts.map +1 -0
- package/dist/tm/config-files.js +209 -0
- package/dist/tm/config-files.js.map +1 -0
- package/dist/tm/config-layers.d.ts +117 -0
- package/dist/tm/config-layers.d.ts.map +1 -0
- package/dist/tm/config-layers.js +317 -0
- package/dist/tm/config-layers.js.map +1 -0
- package/dist/tm/config.d.ts +10 -101
- package/dist/tm/config.d.ts.map +1 -1
- package/dist/tm/config.js +17 -71
- package/dist/tm/config.js.map +1 -1
- package/dist/tm/dispatch.d.ts +115 -21
- package/dist/tm/dispatch.d.ts.map +1 -1
- package/dist/tm/dispatch.js +424 -67
- package/dist/tm/dispatch.js.map +1 -1
- package/dist/tm/egress.d.ts +19 -7
- package/dist/tm/egress.d.ts.map +1 -1
- package/dist/tm/egress.js +21 -9
- package/dist/tm/egress.js.map +1 -1
- package/dist/tm/index.d.ts +23 -20
- package/dist/tm/index.d.ts.map +1 -1
- package/dist/tm/index.js +117 -116
- package/dist/tm/index.js.map +1 -1
- package/dist/tm/ledger.d.ts +9 -2
- package/dist/tm/ledger.d.ts.map +1 -1
- package/dist/tm/ledger.js +4 -1
- package/dist/tm/ledger.js.map +1 -1
- package/dist/tm/perm-ask.d.ts +3 -3
- package/dist/tm/perm-ask.d.ts.map +1 -1
- package/dist/tm/perm-ask.js +3 -3
- package/dist/tm/perm-ask.js.map +1 -1
- package/dist/tm/pipelines.d.ts +12 -11
- package/dist/tm/pipelines.d.ts.map +1 -1
- package/dist/tm/pipelines.js +40 -207
- package/dist/tm/pipelines.js.map +1 -1
- package/dist/tm/preview.d.ts +1 -1
- package/dist/tm/preview.js +3 -3
- package/dist/tm/preview.js.map +1 -1
- package/dist/tm/refs.d.ts +31 -4
- package/dist/tm/refs.d.ts.map +1 -1
- package/dist/tm/refs.js +48 -4
- package/dist/tm/refs.js.map +1 -1
- package/dist/tm/result.d.ts +1 -1
- package/dist/tm/result.d.ts.map +1 -1
- package/dist/tm/result.js +4 -3
- package/dist/tm/result.js.map +1 -1
- package/dist/tm/search.d.ts +2 -2
- package/dist/tm/search.js +7 -7
- package/dist/tm/search.js.map +1 -1
- package/dist/tm/serp-loop.d.ts +19 -7
- package/dist/tm/serp-loop.d.ts.map +1 -1
- package/dist/tm/serp-loop.js +24 -9
- package/dist/tm/serp-loop.js.map +1 -1
- package/dist/tm/stats.d.ts +12 -27
- package/dist/tm/stats.d.ts.map +1 -1
- package/dist/tm/stats.js +43 -45
- package/dist/tm/stats.js.map +1 -1
- package/dist/tm/store.d.ts +18 -5
- package/dist/tm/store.d.ts.map +1 -1
- package/dist/tm/store.js +39 -9
- package/dist/tm/store.js.map +1 -1
- package/dist/tm/tools.d.ts +7 -5
- package/dist/tm/tools.d.ts.map +1 -1
- package/dist/tm/tools.js +10 -41
- package/dist/tm/tools.js.map +1 -1
- package/dist/tm/webfetch.d.ts +1 -1
- package/dist/tm/webfetch.d.ts.map +1 -1
- package/dist/tm/webfetch.js +38 -23
- package/dist/tm/webfetch.js.map +1 -1
- package/dist/types.d.ts +40 -123
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +7 -21
- package/dist/types.js.map +1 -1
- package/docs/installation-v2.md +133 -33
- package/docs/installation.md +9 -0
- package/docs/research/browser-pane.md +5 -0
- package/docs/v2-port-notes.md +133 -0
- package/package.json +1 -1
- package/scripts/gen-v2-config.mjs +246 -94
- package/scripts/lib/fake-ctx.mjs +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-prune.js","sourceRoot":"","sources":["../../src/host/v2-prune.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAIvD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA;AAEtC,mFAAmF;AACnF,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AAEnF,MAAM,WAAW,GAAG,kBAAkB,CAAA;AACtC,MAAM,gBAAgB,GAAG,oCAAoC,CAAA;AAC7D,MAAM,gBAAgB,GAAG,oDAAoD,CAAA;AAC7E,MAAM,SAAS,GAAG,sFAAsF,CAAA;AAUxG,MAAM,KAAK,GAAG,CAAC,CAAqB,EAAW,EAAE,CAC/C,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;AAEvF,SAAS,YAAY,CAAC,GAAuB,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAW;IACvF,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAA;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA0C,OAAO,CAAC,GAAG;IACtF,OAAO;QACL,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7B,4EAA4E;QAC5E,4EAA4E;QAC5E,uCAAuC;QACvC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5D,eAAe,EAAE,YAAY,CAAC,GAAG,CAAC,0BAA0B,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;KACzE,CAAA;AACH,CAAC;AAUD;;;;;;;;;;;GAWG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAElF;;;;;;GAMG;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAE9C,yDAAyD;AACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAA;AAE9E;;;;;;;;GAQG;AACH,SAAS,WAAW,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACjF,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAA;IAC5B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3B,IAAI,CAAC,IAAI,CAAC,CAAA;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAgC,CAAA;QAC1C,KAAK,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YACtF,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;gBACxC,IAAI,CAAC;oBAAE,OAAO,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QACD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1C,MAAM,KAAK,GAAe,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAM;QAC/B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAA+C,CAAA;YAC5D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,SAAQ;YAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACzF,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YAChE,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACxD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACpC,IAAI,IAAI;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;SACvC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SAChD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5F,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAY;IAC3C,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;IAC1F,IAAI,CAAC,GAAG;QAAE,OAAO,CAAC,CAAA;IAClB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,CAA+C,CAAA;QAC5D,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1G,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAClD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA;IACtC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,KAAK,MAAM,CAAC,IAAI,QAAQ;QAAE,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,MAAM,CAAC,GAAG,GAAiD,CAAA;IAC3D,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAC1C,MAAM,IAAI,GAAG,CAAC,CAAC,IAA2C,CAAA;IAC1D,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAA;IACjC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAC3D,CAAC;AAED,iDAAiD;AAEjD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC9C,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAA;IACpD,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5D,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACzE,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5C,kFAAkF;IAClF,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACvE,OAAO,KAAK,CAAA;AACd,CAAC;AAkBD,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAA;AAEzF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB;IACnD,MAAM,IAAI,GAAG,GAAG,cAAc,MAAM,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAA;IAC7E,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,GAAG,IAAI,4BAA4B,KAAK,CAAC,MAAM,CAAC,GAAG,oBAAoB,KAAK,CAAC,MAAM,CAAC,WAAW,gBAAgB,KAAK,CAAC,MAAM,CAAC,QAAQ,8BAA8B,CAAA;IAC3K,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,GAAG,IAAI,QAAQ,KAAK,CAAC,OAAO,iBAAiB,KAAK,CAAC,UAAU,IAAI,WAAW,2BAA2B,KAAK,CAAC,OAAO,UAAU,CAAA;IACvI,CAAC;IACD,OAAO,GAAG,IAAI,iEAAiE,CAAA;AACjF,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW,CAAA;IAC7D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,MAAc;IAC7C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;IAChH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAA;IACjJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;AAC1F,CAAC;AAyBD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,QAAiB,EAAE,OAAyB,EAAE;IACtE,MAAM,IAAI,GAAc,EAAE,KAAK,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAA;IACtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAClE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,MAAM,CAAC,iBAAiB,CAAA;IAElE,6EAA6E;IAC7E,+EAA+E;IAC/E,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC/B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACpC,IAAI,GAAG,GAAG,CAAC,GAAG,cAAc;YAAE,MAAK;QACnC,GAAG,IAAI,CAAC,CAAA;QACR,SAAS,GAAG,CAAC,CAAA;IACf,CAAC;IACD,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEpD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAA;YACrB,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,GAAG,KAAK,IAAI,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAA;YAChB,SAAQ;QACV,CAAC;QACD,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,KAAK,IAAI,KAAK,CAAA;IAChB,CAAC;IACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,cAAc,CAAC,QAAiB,EAAE,IAAe;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAM;IACpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,SAAQ;QAC3B,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAA;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;IAC9E,CAAC;AACH,CAAC;AAsCD;sFACsF;AACtF,SAAS,mBAAmB,CAAC,GAAc;IACzC,IAAI,MAAM,GAA+B,IAAI,CAAA;IAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAA;IACtC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8C,CAAA;IAE5E,KAAK,UAAU,UAAU,CAAC,KAAK,GAAG,KAAK;QACrC,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAA;YACtC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAmC,CAAA;gBAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBACtD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,CAAwB,CAAA;oBACpC,MAAM,UAAU,GAAG,OAAO,GAAG,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;oBACnH,MAAM,EAAE,GAAG,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;oBACrG,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,CAAA;oBACjC,IAAI,UAAU,IAAI,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC;wBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;gBACxG,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qDAAqD;YACvD,CAAC;YACD,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,SAAS,iBAAiB,CAAC,QAAmB;QAC5C,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,SAAiB;QAC3C,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,GAAmE,CAAA;YAC5F,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAyC,CAAC,CAAC,CAAC,SAAS,CAAA;YACnH,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,KAAK;gBAAE,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YAC/C,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;QAC5E,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAA;QACvB,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,EAAE,CAAA;QAC7C,IAAI,KAAK,GAAG,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACrB,KAAK,GAAG,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,KAAK,IAAI,IAAI,CAAA;IACtB,CAAC,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAc,EAAE,QAAoB,EAAE;IAC9E,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,kBAAkB,EAAE,CAAA;IACnD,MAAM,MAAM,GAAgB;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,OAAO,EAAE,CAAC;QACV,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,CAAC;QACnB,KAAK,EAAE,CAAC;QACR,OAAO,EAAE,CAAC;QACV,UAAU,EAAE,CAAC;QACb,cAAc,EAAE,CAAC;QACjB,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,CAAC;QACd,QAAQ,EAAE,CAAC;QACX,SAAS,EAAE,CAAC;KACb,CAAA;IACD,MAAM,aAAa,GAAqB,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACnE,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,MAA+B,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;IACH,CAAC,CAAA;IAED,aAAa,CAAC,IAAI,CAChB,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAuB,EAAE,EAAE;QAC9D,IAAI,CAAC;YACH,uEAAuE;YACvE,wEAAwE;YACxE,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC3E,MAAM,CAAC,cAAc,EAAE,CAAA;gBACvB,OAAM;YACR,CAAC;YACD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAG,KAAiC,EAAE,SAAS,CAAC,CAAA;YAC/E,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAA;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,UAAU,EAAE,CAAA;gBACnB,OAAM;YACR,CAAC;YACD,MAAM,CAAC,OAAO,EAAE,CAAA;YAChB,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAA;YACrD,MAAM,SAAS,GAAG,MAAM,CAAE,KAAiC,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;YAC7E,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;YACrD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,OAAO,EAAE,CAAA;gBAChB,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;gBAC/B,OAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAClC,MAAM,CAAC,WAAW,GAAG,GAAG,CAAA;YACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;YACtB,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;YACxB,IAAI,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,KAAK,EAAE,CAAA;gBACd,OAAM;YACR,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAA;YACjE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,CAAA;YACzE,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAA;YAClE,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;YAC9B,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;YAC1C,MAAM,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAA;YACvC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAA;YAC9C,IAAI,CAAC,OAAO,EAAE;gBACZ,SAAS;gBACT,OAAO,EAAE,GAAG;gBACZ,IAAI;gBACJ,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACzB,KAAK,EAAE,IAAI,CAAC,WAAW;gBACvB,SAAS,EAAE,IAAI,CAAC,cAAc;gBAC9B,OAAO,EAAE,MAAM,CAAC,YAAY;aAC7B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAE,GAAa,EAAE,OAAO,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QAChF,CAAC;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;AAClC,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 错峰重试 (#49 feature 3) �?the honest half of "back off when the provider
|
|
3
|
+
* throttles us".
|
|
4
|
+
*
|
|
5
|
+
* THE HONEST BOUNDARY, stated first because everything below is shaped by it:
|
|
6
|
+
* a plugin has NO seam that intercepts the model's own retry. We cannot delay a
|
|
7
|
+
* request the model decides to send, and we must not pretend to. So this layer
|
|
8
|
+
* does exactly three things, and says so:
|
|
9
|
+
*
|
|
10
|
+
* 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
|
|
11
|
+
* matching explicit signatures only �?never by guessing. A text that does
|
|
12
|
+
* not carry a known signature classifies as `unknown` and changes nothing.
|
|
13
|
+
* 2. COMPUTE an exact wait (backoff × jitter, capped) and inject it into the
|
|
14
|
+
* NEXT request's system prompt as an actionable sentence ("�?N 秒再�?),
|
|
15
|
+
* not a vague "try later". The directive is consumed once, so a host that
|
|
16
|
+
* replays the hook in-process cannot duplicate it.
|
|
17
|
+
* 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
|
|
18
|
+
* trips and new `subagent` dispatches are DENIED for `cooldownMs`, on the
|
|
19
|
+
* same `permission.evaluate` seam the concurrency cap uses. Both only ever
|
|
20
|
+
* make a rule stricter, so they compose without fighting.
|
|
21
|
+
*
|
|
22
|
+
* Discipline (the same as every other v2 layer): Team-scoped, never throws (a
|
|
23
|
+
* failure allows the call through and is counted), never rewrites args, and
|
|
24
|
+
* idempotent under the host's in-process hook replay.
|
|
25
|
+
*/
|
|
26
|
+
import type { TeamScope } from "./v2-scope.js";
|
|
27
|
+
import type { V2Context, V2Registration } from "./v2-types.js";
|
|
28
|
+
/** The stable prefix a human (and a test) can recognise the injected line by. */
|
|
29
|
+
export declare const RETRY_MARKER = "## Team Retry";
|
|
30
|
+
export type ProviderErrorKind = "quota" | "rate" | "transient" | "unknown";
|
|
31
|
+
export interface ProviderErrorClass {
|
|
32
|
+
kind: ProviderErrorKind;
|
|
33
|
+
/** A `Retry-After`-style hint parsed out of the text, in ms; 0 when absent. */
|
|
34
|
+
retryAfterMs: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Classify a provider error from its TEXT alone. Explicit signatures only:
|
|
38
|
+
* a text with no known signature is `unknown` and must never trip anything �? * mislabelling an ordinary error as a quota error is the failure mode the plan
|
|
39
|
+
* names, and the way to avoid it is to require the signature.
|
|
40
|
+
*
|
|
41
|
+
* Order matters: quota before rate before transient, because a message can carry
|
|
42
|
+
* more than one token (e.g. "quota exceeded (429)") and the most specific class
|
|
43
|
+
* is the useful one.
|
|
44
|
+
*/
|
|
45
|
+
export declare function classifyProviderError(text: unknown): ProviderErrorClass;
|
|
46
|
+
export interface RetryConfig {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
baseMs: number;
|
|
49
|
+
maxMs: number;
|
|
50
|
+
jitter: number;
|
|
51
|
+
breakAfter: number;
|
|
52
|
+
cooldownMs: number;
|
|
53
|
+
}
|
|
54
|
+
export declare const RETRY_DEFAULTS: RetryConfig;
|
|
55
|
+
/**
|
|
56
|
+
* Resolve the knobs. An ILLEGAL value falls back to its default �?it never
|
|
57
|
+
* silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
|
|
58
|
+
* `TM_RETRY=off` turns it off.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveRetryConfig(env?: Record<string, string | undefined>): RetryConfig;
|
|
61
|
+
/**
|
|
62
|
+
* `delay = min(base * 2^attempt, max) * (1 ± jitter)`, rounded to ms and never
|
|
63
|
+
* negative. `attempt` is 0-based, so the first error waits `base`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function backoffMs(attempt: number, baseMs: number, maxMs: number, jitter: number, random: () => number): number;
|
|
66
|
+
export interface RetryReport {
|
|
67
|
+
enabled: boolean;
|
|
68
|
+
quotaSeen: number;
|
|
69
|
+
rateSeen: number;
|
|
70
|
+
transientSeen: number;
|
|
71
|
+
unknownSeen: number;
|
|
72
|
+
/** times the consecutive-error streak reached `breakAfter` and the breaker tripped */
|
|
73
|
+
breakTrips: number;
|
|
74
|
+
/** cooldown windows entered (a trip enters one; an error during a cooldown extends it) */
|
|
75
|
+
cooldowns: number;
|
|
76
|
+
lastDelayMs: number;
|
|
77
|
+
directivesInjected: number;
|
|
78
|
+
cooldownDenied: number;
|
|
79
|
+
foreignSkipped: number;
|
|
80
|
+
threw: number;
|
|
81
|
+
}
|
|
82
|
+
export interface RetryDirective {
|
|
83
|
+
text: string;
|
|
84
|
+
delayMs: number;
|
|
85
|
+
}
|
|
86
|
+
export interface RetryGovernor {
|
|
87
|
+
observe(text: unknown): ProviderErrorClass & {
|
|
88
|
+
delayMs: number;
|
|
89
|
+
};
|
|
90
|
+
observeEvent(raw: unknown): void;
|
|
91
|
+
/** Peek at the pending directive without consuming it. */
|
|
92
|
+
directive(): RetryDirective | null;
|
|
93
|
+
/** Consume the pending directive (the injection hook's one-shot read). */
|
|
94
|
+
takeDirective(): RetryDirective | null;
|
|
95
|
+
inCooldown(): boolean;
|
|
96
|
+
/** ms left in the current cooldown window (0 when not cooling down). */
|
|
97
|
+
cooldownRemainingMs(): number;
|
|
98
|
+
/** The configured consecutive-error threshold, for the refusal wording. */
|
|
99
|
+
readonly breakAfter: number;
|
|
100
|
+
readonly report: RetryReport;
|
|
101
|
+
reset(): void;
|
|
102
|
+
}
|
|
103
|
+
export interface RetryGovernorOptions extends Partial<RetryConfig> {
|
|
104
|
+
now?: () => number;
|
|
105
|
+
random?: () => number;
|
|
106
|
+
/** Fired for each classification / breaker outcome (the trajectory sink). */
|
|
107
|
+
onEvent?: (row: Record<string, unknown>) => void;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The state machine. Pure except for the injected `now`/`random`, so a test can
|
|
111
|
+
* pin the backoff sequence, the jitter band and the breaker deterministically.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createRetryGovernor(opts?: RetryGovernorOptions): RetryGovernor;
|
|
114
|
+
/**
|
|
115
|
+
* Pull the error text out of whatever the event feed handed us. Defensive by
|
|
116
|
+
* design: the `session.error` payload shape is not a promised interface, so we
|
|
117
|
+
* read the known keys and fall back to a bounded JSON stringify rather than
|
|
118
|
+
* assuming one shape.
|
|
119
|
+
*/
|
|
120
|
+
export declare function errorTextOf(raw: unknown): string;
|
|
121
|
+
export interface RetryLayerInput {
|
|
122
|
+
scope?: TeamScope;
|
|
123
|
+
governor: RetryGovernor;
|
|
124
|
+
/** Fired for each observable outcome so the personality can write the
|
|
125
|
+
* `step_id:"v2-retry"` trajectory line — the layer owns no store. */
|
|
126
|
+
onEvent?: (row: Record<string, unknown>) => void;
|
|
127
|
+
}
|
|
128
|
+
export interface RetryLayer {
|
|
129
|
+
registrations: V2Registration[];
|
|
130
|
+
report: RetryReport;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Register the two hooks the retry layer owns:
|
|
134
|
+
* · `session.hook("context")` �?inject the pending directive (exact seconds)
|
|
135
|
+
* into the NEXT request's system prompt, once, Team-scoped.
|
|
136
|
+
* · `permission.hook("evaluate")` �?deny a `subagent` dispatch while the
|
|
137
|
+
* breaker's cooldown is active, Team-scoped, only ever stricter.
|
|
138
|
+
*
|
|
139
|
+
* Nothing here throws into a hook: a failure is counted and the call is allowed
|
|
140
|
+
* through (a throughput guard that fails OPEN is the honest failure mode).
|
|
141
|
+
*/
|
|
142
|
+
export declare function applyV2RetryGovernor(ctx: V2Context, input: RetryLayerInput): Promise<RetryLayer>;
|
|
143
|
+
//# sourceMappingURL=v2-retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 错峰重试 (#49 feature 3) �?the honest half of "back off when the provider
|
|
3
|
+
* throttles us".
|
|
4
|
+
*
|
|
5
|
+
* THE HONEST BOUNDARY, stated first because everything below is shaped by it:
|
|
6
|
+
* a plugin has NO seam that intercepts the model's own retry. We cannot delay a
|
|
7
|
+
* request the model decides to send, and we must not pretend to. So this layer
|
|
8
|
+
* does exactly three things, and says so:
|
|
9
|
+
*
|
|
10
|
+
* 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
|
|
11
|
+
* matching explicit signatures only �?never by guessing. A text that does
|
|
12
|
+
* not carry a known signature classifies as `unknown` and changes nothing.
|
|
13
|
+
* 2. COMPUTE an exact wait (backoff × jitter, capped) and inject it into the
|
|
14
|
+
* NEXT request's system prompt as an actionable sentence ("�?N 秒再�?),
|
|
15
|
+
* not a vague "try later". The directive is consumed once, so a host that
|
|
16
|
+
* replays the hook in-process cannot duplicate it.
|
|
17
|
+
* 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
|
|
18
|
+
* trips and new `subagent` dispatches are DENIED for `cooldownMs`, on the
|
|
19
|
+
* same `permission.evaluate` seam the concurrency cap uses. Both only ever
|
|
20
|
+
* make a rule stricter, so they compose without fighting.
|
|
21
|
+
*
|
|
22
|
+
* Discipline (the same as every other v2 layer): Team-scoped, never throws (a
|
|
23
|
+
* failure allows the call through and is counted), never rewrites args, and
|
|
24
|
+
* idempotent under the host's in-process hook replay.
|
|
25
|
+
*/
|
|
26
|
+
/** The stable prefix a human (and a test) can recognise the injected line by. */
|
|
27
|
+
export const RETRY_MARKER = "## Team Retry";
|
|
28
|
+
/**
|
|
29
|
+
* Classify a provider error from its TEXT alone. Explicit signatures only:
|
|
30
|
+
* a text with no known signature is `unknown` and must never trip anything �? * mislabelling an ordinary error as a quota error is the failure mode the plan
|
|
31
|
+
* names, and the way to avoid it is to require the signature.
|
|
32
|
+
*
|
|
33
|
+
* Order matters: quota before rate before transient, because a message can carry
|
|
34
|
+
* more than one token (e.g. "quota exceeded (429)") and the most specific class
|
|
35
|
+
* is the useful one.
|
|
36
|
+
*/
|
|
37
|
+
export function classifyProviderError(text) {
|
|
38
|
+
const s = typeof text === "string" ? text : "";
|
|
39
|
+
if (!s.trim())
|
|
40
|
+
return { kind: "unknown", retryAfterMs: 0 };
|
|
41
|
+
const lower = s.toLowerCase();
|
|
42
|
+
const retryAfterMs = parseRetryAfter(s);
|
|
43
|
+
if (/allocated quota exceeded|quota exceeded|insufficient_quota|exceeded.*quota|quota.*exceed|配额|余额不足/.test(lower)) {
|
|
44
|
+
return { kind: "quota", retryAfterMs };
|
|
45
|
+
}
|
|
46
|
+
if (/\b429\b|too many requests|rate[ _-]?limit|rate_limit_exceeded|限流|请求过于频繁/.test(lower)) {
|
|
47
|
+
return { kind: "rate", retryAfterMs };
|
|
48
|
+
}
|
|
49
|
+
if (/\b50[0-4]\b|overloaded|temporarily unavailable|service unavailable|bad gateway|gateway timeout|timed? ?out|timeout|econnreset|etimedout|socket hang up/.test(lower)) {
|
|
50
|
+
return { kind: "transient", retryAfterMs };
|
|
51
|
+
}
|
|
52
|
+
return { kind: "unknown", retryAfterMs };
|
|
53
|
+
}
|
|
54
|
+
/** `Retry-After: 30` / `retry after 30 seconds` �?30 000 ms. Absent �?0. */
|
|
55
|
+
function parseRetryAfter(s) {
|
|
56
|
+
const m = /retry[-_ ]?after["'\s:=]+(\d+)/i.exec(s);
|
|
57
|
+
if (!m)
|
|
58
|
+
return 0;
|
|
59
|
+
const n = Number(m[1]);
|
|
60
|
+
return Number.isFinite(n) && n >= 0 ? n * 1000 : 0;
|
|
61
|
+
}
|
|
62
|
+
export const RETRY_DEFAULTS = {
|
|
63
|
+
enabled: true,
|
|
64
|
+
baseMs: 5000,
|
|
65
|
+
maxMs: 60000,
|
|
66
|
+
jitter: 0.3,
|
|
67
|
+
breakAfter: 5,
|
|
68
|
+
cooldownMs: 60000,
|
|
69
|
+
};
|
|
70
|
+
const isOff = (raw) => /^(off|false|0|no)$/i.test(String(raw ?? "").trim());
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the knobs. An ILLEGAL value falls back to its default �?it never
|
|
73
|
+
* silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
|
|
74
|
+
* `TM_RETRY=off` turns it off.
|
|
75
|
+
*/
|
|
76
|
+
export function resolveRetryConfig(env = process.env) {
|
|
77
|
+
const enabled = !isOff(env.TM_RETRY);
|
|
78
|
+
const num = (raw, fallback, min, max) => {
|
|
79
|
+
const n = Number(raw);
|
|
80
|
+
return Number.isFinite(n) && n >= min && n <= max ? n : fallback;
|
|
81
|
+
};
|
|
82
|
+
const baseMs = num(env.TM_RETRY_BASE_MS, RETRY_DEFAULTS.baseMs, 1, 3_600_000);
|
|
83
|
+
const maxMs = num(env.TM_RETRY_MAX_MS, RETRY_DEFAULTS.maxMs, 1, 3_600_000);
|
|
84
|
+
const jitter = num(env.TM_RETRY_JITTER, RETRY_DEFAULTS.jitter, 0, 0.95);
|
|
85
|
+
const breakAfter = Math.round(num(env.TM_RETRY_BREAK_AFTER, RETRY_DEFAULTS.breakAfter, 1, 1000));
|
|
86
|
+
const cooldownMs = num(env.TM_RETRY_COOLDOWN_MS, RETRY_DEFAULTS.cooldownMs, 0, 3_600_000);
|
|
87
|
+
return { enabled, baseMs, maxMs, jitter, breakAfter, cooldownMs };
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* `delay = min(base * 2^attempt, max) * (1 ± jitter)`, rounded to ms and never
|
|
91
|
+
* negative. `attempt` is 0-based, so the first error waits `base`.
|
|
92
|
+
*/
|
|
93
|
+
export function backoffMs(attempt, baseMs, maxMs, jitter, random) {
|
|
94
|
+
const a = Number.isFinite(attempt) && attempt > 0 ? Math.floor(attempt) : 0;
|
|
95
|
+
const raw = Math.min(baseMs * Math.pow(2, a), maxMs);
|
|
96
|
+
const j = Number.isFinite(jitter) && jitter > 0 ? Math.min(jitter, 0.95) : 0;
|
|
97
|
+
const factor = 1 + (random() * 2 - 1) * j;
|
|
98
|
+
return Math.max(0, Math.round(raw * factor));
|
|
99
|
+
}
|
|
100
|
+
const isThrottle = (kind) => kind === "quota" || kind === "rate";
|
|
101
|
+
const kindLabel = (kind) => kind === "quota" ? "配额" : kind === "rate" ? "限流" : kind === "transient" ? "临时" : "未知";
|
|
102
|
+
/**
|
|
103
|
+
* The state machine. Pure except for the injected `now`/`random`, so a test can
|
|
104
|
+
* pin the backoff sequence, the jitter band and the breaker deterministically.
|
|
105
|
+
*/
|
|
106
|
+
export function createRetryGovernor(opts = {}) {
|
|
107
|
+
const cfg = { ...RETRY_DEFAULTS, ...opts };
|
|
108
|
+
const now = opts.now ?? (() => Date.now());
|
|
109
|
+
const random = opts.random ?? (() => Math.random());
|
|
110
|
+
const emit = (row) => {
|
|
111
|
+
try {
|
|
112
|
+
opts.onEvent?.(row);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
/* the trajectory line is an extra, never a reason to fail the call */
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
const report = {
|
|
119
|
+
enabled: cfg.enabled,
|
|
120
|
+
quotaSeen: 0,
|
|
121
|
+
rateSeen: 0,
|
|
122
|
+
transientSeen: 0,
|
|
123
|
+
unknownSeen: 0,
|
|
124
|
+
breakTrips: 0,
|
|
125
|
+
cooldowns: 0,
|
|
126
|
+
lastDelayMs: 0,
|
|
127
|
+
directivesInjected: 0,
|
|
128
|
+
cooldownDenied: 0,
|
|
129
|
+
foreignSkipped: 0,
|
|
130
|
+
threw: 0,
|
|
131
|
+
};
|
|
132
|
+
let streak = 0;
|
|
133
|
+
let cooldownUntil = 0;
|
|
134
|
+
let pending = null;
|
|
135
|
+
const inCooldown = () => now() < cooldownUntil;
|
|
136
|
+
const buildDirective = (kind, delayMs) => {
|
|
137
|
+
const secs = Math.max(1, Math.round(delayMs / 1000));
|
|
138
|
+
const text = inCooldown()
|
|
139
|
+
? `${RETRY_MARKER}(配额保护,不是故障)\n连续 ${cfg.breakAfter} 次配�?限流错误,已进入冷却:请等待 ${secs} 秒后再发下一次请求,期间新的子代理派发会被拒绝。这是配额保护,不是插件故障;可�?TM_RETRY=off 关闭。`
|
|
140
|
+
: `${RETRY_MARKER}(配额保护,不是故障)\n检测到 provider ${kindLabel(kind)} 错误:请等待 ${secs} 秒后再发下一次请求。这是配额保护,不是插件故障;可�?TM_RETRY=off 关闭。`;
|
|
141
|
+
return { text, delayMs };
|
|
142
|
+
};
|
|
143
|
+
const observe = (text) => {
|
|
144
|
+
const cls = classifyProviderError(text);
|
|
145
|
+
if (cls.kind === "unknown") {
|
|
146
|
+
report.unknownSeen++;
|
|
147
|
+
return { ...cls, delayMs: 0 };
|
|
148
|
+
}
|
|
149
|
+
if (cls.kind === "quota")
|
|
150
|
+
report.quotaSeen++;
|
|
151
|
+
else if (cls.kind === "rate")
|
|
152
|
+
report.rateSeen++;
|
|
153
|
+
else
|
|
154
|
+
report.transientSeen++;
|
|
155
|
+
streak++;
|
|
156
|
+
const delayMs = Math.max(backoffMs(streak - 1, cfg.baseMs, cfg.maxMs, cfg.jitter, random), cls.retryAfterMs);
|
|
157
|
+
report.lastDelayMs = delayMs;
|
|
158
|
+
emit({ event: "classified", kind: cls.kind, delay_ms: delayMs, streak });
|
|
159
|
+
// The breaker: consecutive errors, and the current one is a throttle class.
|
|
160
|
+
if (isThrottle(cls.kind) && streak >= cfg.breakAfter) {
|
|
161
|
+
const wasIn = inCooldown();
|
|
162
|
+
cooldownUntil = now() + cfg.cooldownMs;
|
|
163
|
+
report.cooldowns++;
|
|
164
|
+
if (!wasIn)
|
|
165
|
+
report.breakTrips++;
|
|
166
|
+
streak = 0;
|
|
167
|
+
emit({ event: "cooldown", break_trips: report.breakTrips, cooldowns: report.cooldowns, cooldown_ms: cfg.cooldownMs });
|
|
168
|
+
}
|
|
169
|
+
pending = buildDirective(cls.kind, delayMs);
|
|
170
|
+
return { ...cls, delayMs };
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
observe,
|
|
174
|
+
observeEvent(raw) {
|
|
175
|
+
const text = errorTextOf(raw);
|
|
176
|
+
if (text)
|
|
177
|
+
observe(text);
|
|
178
|
+
},
|
|
179
|
+
directive: () => pending,
|
|
180
|
+
takeDirective() {
|
|
181
|
+
const d = pending;
|
|
182
|
+
pending = null;
|
|
183
|
+
return d;
|
|
184
|
+
},
|
|
185
|
+
inCooldown,
|
|
186
|
+
cooldownRemainingMs: () => Math.max(0, cooldownUntil - now()),
|
|
187
|
+
breakAfter: cfg.breakAfter,
|
|
188
|
+
report,
|
|
189
|
+
reset() {
|
|
190
|
+
streak = 0;
|
|
191
|
+
cooldownUntil = 0;
|
|
192
|
+
pending = null;
|
|
193
|
+
},
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Pull the error text out of whatever the event feed handed us. Defensive by
|
|
198
|
+
* design: the `session.error` payload shape is not a promised interface, so we
|
|
199
|
+
* read the known keys and fall back to a bounded JSON stringify rather than
|
|
200
|
+
* assuming one shape.
|
|
201
|
+
*/
|
|
202
|
+
export function errorTextOf(raw) {
|
|
203
|
+
if (typeof raw === "string")
|
|
204
|
+
return raw;
|
|
205
|
+
if (!raw || typeof raw !== "object")
|
|
206
|
+
return "";
|
|
207
|
+
const o = raw;
|
|
208
|
+
const parts = [];
|
|
209
|
+
const push = (v) => {
|
|
210
|
+
if (typeof v === "string" && v)
|
|
211
|
+
parts.push(v);
|
|
212
|
+
};
|
|
213
|
+
push(o.message);
|
|
214
|
+
push(o.text);
|
|
215
|
+
push(o.name);
|
|
216
|
+
push(o.error);
|
|
217
|
+
const props = (o.properties ?? o.payload ?? o.data);
|
|
218
|
+
if (props && typeof props === "object") {
|
|
219
|
+
push(props.message);
|
|
220
|
+
push(props.text);
|
|
221
|
+
push(props.error);
|
|
222
|
+
push(props.name);
|
|
223
|
+
const err = props.error;
|
|
224
|
+
if (err && typeof err === "object") {
|
|
225
|
+
push(err.message);
|
|
226
|
+
push(err.name);
|
|
227
|
+
push(err.type);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (!parts.length) {
|
|
231
|
+
try {
|
|
232
|
+
parts.push(JSON.stringify(raw));
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
/* an unserializable payload carries no text we can classify */
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return parts.join(" ");
|
|
239
|
+
}
|
|
240
|
+
const rank = { allow: 0, ask: 1, deny: 2 };
|
|
241
|
+
/**
|
|
242
|
+
* Register the two hooks the retry layer owns:
|
|
243
|
+
* · `session.hook("context")` �?inject the pending directive (exact seconds)
|
|
244
|
+
* into the NEXT request's system prompt, once, Team-scoped.
|
|
245
|
+
* · `permission.hook("evaluate")` �?deny a `subagent` dispatch while the
|
|
246
|
+
* breaker's cooldown is active, Team-scoped, only ever stricter.
|
|
247
|
+
*
|
|
248
|
+
* Nothing here throws into a hook: a failure is counted and the call is allowed
|
|
249
|
+
* through (a throughput guard that fails OPEN is the honest failure mode).
|
|
250
|
+
*/
|
|
251
|
+
export async function applyV2RetryGovernor(ctx, input) {
|
|
252
|
+
const { scope, governor } = input;
|
|
253
|
+
const report = governor.report;
|
|
254
|
+
const registrations = [];
|
|
255
|
+
const session = ctx.session;
|
|
256
|
+
if (session && typeof session.hook === "function") {
|
|
257
|
+
registrations.push(await session.hook("context", (event) => {
|
|
258
|
+
try {
|
|
259
|
+
if (scope && scope.count(scope.decide(event)) !== "ours")
|
|
260
|
+
return;
|
|
261
|
+
scope?.learn(event?.agent, event.sessionID);
|
|
262
|
+
if (!Array.isArray(event?.system))
|
|
263
|
+
return;
|
|
264
|
+
const d = governor.takeDirective();
|
|
265
|
+
if (!d)
|
|
266
|
+
return;
|
|
267
|
+
event.system.push({ type: "text", text: d.text });
|
|
268
|
+
report.directivesInjected++;
|
|
269
|
+
try {
|
|
270
|
+
input.onEvent?.({ event: "injected", delay_ms: d.delayMs });
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
/* the trajectory line is an extra */
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
report.threw++;
|
|
278
|
+
}
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
const permission = ctx.permission;
|
|
282
|
+
if (permission && typeof permission.hook === "function") {
|
|
283
|
+
registrations.push(await permission.hook("evaluate", (event) => {
|
|
284
|
+
try {
|
|
285
|
+
if (String(event?.action ?? "") !== "subagent")
|
|
286
|
+
return;
|
|
287
|
+
if (scope && scope.count(scope.decide(event)) !== "ours") {
|
|
288
|
+
report.foreignSkipped++;
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
if (!governor.inCooldown())
|
|
292
|
+
return;
|
|
293
|
+
report.cooldownDenied++;
|
|
294
|
+
try {
|
|
295
|
+
input.onEvent?.({ event: "denied", remaining_ms: governor.cooldownRemainingMs() });
|
|
296
|
+
}
|
|
297
|
+
catch {
|
|
298
|
+
/* the trajectory line is an extra */
|
|
299
|
+
}
|
|
300
|
+
const secs = Math.max(1, Math.round(governor.cooldownRemainingMs() / 1000));
|
|
301
|
+
const message = `配额保护:连�?${governor.breakAfter} 次配�?限流错误,已进入冷却(剩余约 ${secs} 秒)。期间不派发新的子代理;这是配额保护,不是故障。可�?TM_RETRY=off 关闭。`;
|
|
302
|
+
// Only ever stricter: a host that already denied keeps its decision.
|
|
303
|
+
if (rank.deny <= rank[event.effect ?? "allow"])
|
|
304
|
+
return;
|
|
305
|
+
event.effect = "deny";
|
|
306
|
+
event.message = message;
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
report.threw++;
|
|
310
|
+
}
|
|
311
|
+
}));
|
|
312
|
+
}
|
|
313
|
+
return { registrations, report };
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=v2-retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"v2-retry.js","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-scope.d.ts","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"v2-scope.d.ts","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAEzD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAA;IACZ,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf;gEAC4D;IAC5D,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAA;IAC/B,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAAA;IACxF,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,iFAAiF;IACjF,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,CAAA;CAC3C;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CA+BlE"}
|
package/dist/host/v2-scope.js
CHANGED
|
@@ -25,23 +25,30 @@
|
|
|
25
25
|
* pair and a later `execute.after` for the same session resolves even if the host
|
|
26
26
|
* left `agent` off that event.
|
|
27
27
|
*/
|
|
28
|
+
import { normalizeAgentName } from "../identity.js";
|
|
28
29
|
export function createTeamScope(names) {
|
|
29
|
-
|
|
30
|
+
// #38: normalize every name to lower case so `team` and `Team` are the same
|
|
31
|
+
// role. The set is the canonical (normalized) form; lookups normalize too.
|
|
32
|
+
const set = new Set([...names].map(normalizeAgentName).filter(Boolean));
|
|
30
33
|
const bySession = new Map();
|
|
31
34
|
const report = { ours: 0, foreign: 0, unknown: 0 };
|
|
32
35
|
const scope = {
|
|
33
36
|
names: set,
|
|
34
|
-
isOurs: (agent) =>
|
|
37
|
+
isOurs: (agent) => {
|
|
38
|
+
const n = normalizeAgentName(agent);
|
|
39
|
+
return n !== "" && set.has(n);
|
|
40
|
+
},
|
|
35
41
|
learn(agent, sessionID) {
|
|
36
42
|
if (typeof sessionID !== "string" || !sessionID)
|
|
37
43
|
return;
|
|
38
|
-
|
|
39
|
-
|
|
44
|
+
const n = normalizeAgentName(agent);
|
|
45
|
+
if (n !== "" && set.has(n))
|
|
46
|
+
bySession.set(sessionID, n);
|
|
40
47
|
},
|
|
41
48
|
decide(event) {
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
return set.has(
|
|
49
|
+
const n = normalizeAgentName(event?.agent);
|
|
50
|
+
if (n !== "")
|
|
51
|
+
return set.has(n) ? "ours" : "foreign";
|
|
45
52
|
const sid = event?.sessionID;
|
|
46
53
|
if (typeof sid === "string" && bySession.has(sid))
|
|
47
54
|
return "ours";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-scope.js","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"v2-scope.js","sourceRoot":"","sources":["../../src/host/v2-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAwBnD,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IACvE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC3C,MAAM,MAAM,GAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IACjE,MAAM,KAAK,GAAc;QACvB,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,OAAO,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,SAAS;YACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS;gBAAE,OAAM;YACvD,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;YACnC,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QACzD,CAAC;QACD,MAAM,CAAC,KAAK;YACV,MAAM,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC1C,IAAI,CAAC,KAAK,EAAE;gBAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YACpD,MAAM,GAAG,GAAG,KAAK,EAAE,SAAS,CAAA;YAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,MAAM,CAAA;YAChE,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YACjB,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,MAAM;KACP,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
@@ -70,6 +70,30 @@ export interface V2SessionReaderReport {
|
|
|
70
70
|
/** the SHAPE of the last list the seam answered with — names and counts only, and the
|
|
71
71
|
* reason a `child_body_missing` row can be checked later (`contextShapeEvidence`). */
|
|
72
72
|
contextShape?: string;
|
|
73
|
+
/** #steer — `tm_join { steer }` calls. The three outcomes are counted separately because
|
|
74
|
+
* the reply may only say 已受理 for the first one: the host admitting the input is an
|
|
75
|
+
* observation (it named the inbox item), the host answering without an id is not. */
|
|
76
|
+
promptTried: number;
|
|
77
|
+
/** the answer carried a `^msg_` inbox id — the only evidence of acceptance */
|
|
78
|
+
promptConfirmed: number;
|
|
79
|
+
/** the call worked and no inbox id came back, or the host refused */
|
|
80
|
+
promptUnconfirmed: number;
|
|
81
|
+
promptError?: string;
|
|
82
|
+
/** the KEY NAMES the prompt/synthetic answer returned (names only, never values) */
|
|
83
|
+
promptKeys: string[];
|
|
84
|
+
/** which seam carried the steering input: `session.prompt` or `session.synthetic` */
|
|
85
|
+
steerSeamUsed?: string;
|
|
86
|
+
/** `session.inbox.list` / `session.inbox.cancel` calls (unread / unsend) */
|
|
87
|
+
inboxListTried: number;
|
|
88
|
+
inboxListOk: number;
|
|
89
|
+
inboxCancelTried: number;
|
|
90
|
+
/** the host named the item it removed */
|
|
91
|
+
inboxCancelConfirmed: number;
|
|
92
|
+
/** the host answered and named nothing — the documented no-op for an unavailable item */
|
|
93
|
+
inboxCancelNoop: number;
|
|
94
|
+
inboxError?: string;
|
|
95
|
+
/** which SPELLING of each inbox op answered (names only) */
|
|
96
|
+
inboxSpellings: string[];
|
|
73
97
|
}
|
|
74
98
|
export interface V2SessionReader {
|
|
75
99
|
/** a `{session:{get,messages}}` object safe to hand to code written for the v1 client */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-session-client.d.ts","sourceRoot":"","sources":["../../src/host/v2-session-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB;2FACuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"v2-session-client.d.ts","sourceRoot":"","sources":["../../src/host/v2-session-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAA;IAChB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAA;IACtB,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAA;IACxB,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,2EAA2E;IAC3E,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB;2FACuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;0FAEsF;IACtF,WAAW,EAAE,MAAM,CAAA;IACnB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,CAAA;IACvB,qEAAqE;IACrE,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,oFAAoF;IACpF,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,yCAAyC;IACzC,oBAAoB,EAAE,MAAM,CAAA;IAC5B,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,yFAAyF;IACzF,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,qBAAqB,CAAA;CAC9B;AA6KD;;;;;;;;;;;;;;;wBAewB;AACxB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CA2B/D;AAED;;;;;;iEAMiE;AACjE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAyB1D;AAMD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAkVnE"}
|