longer-agent 0.1.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/LICENSE +21 -0
- package/README.md +227 -0
- package/README.zh-CN.md +227 -0
- package/agent_templates/executor/agent.yaml +22 -0
- package/agent_templates/executor/system_prompt.md +17 -0
- package/agent_templates/explorer/agent.yaml +13 -0
- package/agent_templates/explorer/system_prompt.md +19 -0
- package/agent_templates/main/agent.yaml +7 -0
- package/agent_templates/main/system_prompt.md +45 -0
- package/configExample.yaml +83 -0
- package/dist/agents/agent.d.ts +79 -0
- package/dist/agents/agent.d.ts.map +1 -0
- package/dist/agents/agent.js +156 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/tool-loop.d.ts +140 -0
- package/dist/agents/tool-loop.d.ts.map +1 -0
- package/dist/agents/tool-loop.js +465 -0
- package/dist/agents/tool-loop.js.map +1 -0
- package/dist/ask.d.ts +81 -0
- package/dist/ask.d.ts.map +1 -0
- package/dist/ask.js +34 -0
- package/dist/ask.js.map +1 -0
- package/dist/auth/openai-oauth.d.ts +66 -0
- package/dist/auth/openai-oauth.d.ts.map +1 -0
- package/dist/auth/openai-oauth.js +640 -0
- package/dist/auth/openai-oauth.js.map +1 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +254 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands.d.ts +118 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +862 -0
- package/dist/commands.js.map +1 -0
- package/dist/config.d.ts +130 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +648 -0
- package/dist/config.js.map +1 -0
- package/dist/context-rendering.d.ts +69 -0
- package/dist/context-rendering.d.ts.map +1 -0
- package/dist/context-rendering.js +250 -0
- package/dist/context-rendering.js.map +1 -0
- package/dist/document-projection.d.ts +12 -0
- package/dist/document-projection.d.ts.map +1 -0
- package/dist/document-projection.js +75 -0
- package/dist/document-projection.js.map +1 -0
- package/dist/ephemeral-log.d.ts +15 -0
- package/dist/ephemeral-log.d.ts.map +1 -0
- package/dist/ephemeral-log.js +173 -0
- package/dist/ephemeral-log.js.map +1 -0
- package/dist/file-attach.d.ts +89 -0
- package/dist/file-attach.d.ts.map +1 -0
- package/dist/file-attach.js +571 -0
- package/dist/file-attach.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/init-wizard.d.ts +13 -0
- package/dist/init-wizard.d.ts.map +1 -0
- package/dist/init-wizard.js +328 -0
- package/dist/init-wizard.js.map +1 -0
- package/dist/log-entry.d.ts +104 -0
- package/dist/log-entry.d.ts.map +1 -0
- package/dist/log-entry.js +292 -0
- package/dist/log-entry.js.map +1 -0
- package/dist/log-projection.d.ts +73 -0
- package/dist/log-projection.d.ts.map +1 -0
- package/dist/log-projection.js +651 -0
- package/dist/log-projection.js.map +1 -0
- package/dist/mcp-client.d.ts +55 -0
- package/dist/mcp-client.d.ts.map +1 -0
- package/dist/mcp-client.js +402 -0
- package/dist/mcp-client.js.map +1 -0
- package/dist/model-selection.d.ts +16 -0
- package/dist/model-selection.d.ts.map +1 -0
- package/dist/model-selection.js +181 -0
- package/dist/model-selection.js.map +1 -0
- package/dist/network-retry.d.ts +38 -0
- package/dist/network-retry.d.ts.map +1 -0
- package/dist/network-retry.js +140 -0
- package/dist/network-retry.js.map +1 -0
- package/dist/persistence.d.ts +104 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/persistence.js +644 -0
- package/dist/persistence.js.map +1 -0
- package/dist/primitives/context.d.ts +29 -0
- package/dist/primitives/context.d.ts.map +1 -0
- package/dist/primitives/context.js +85 -0
- package/dist/primitives/context.js.map +1 -0
- package/dist/progress.d.ts +51 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +229 -0
- package/dist/progress.js.map +1 -0
- package/dist/provider-presets.d.ts +34 -0
- package/dist/provider-presets.d.ts.map +1 -0
- package/dist/provider-presets.js +181 -0
- package/dist/provider-presets.js.map +1 -0
- package/dist/providers/anthropic.d.ts +32 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +450 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +135 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +104 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/glm.d.ts +18 -0
- package/dist/providers/glm.d.ts.map +1 -0
- package/dist/providers/glm.js +59 -0
- package/dist/providers/glm.js.map +1 -0
- package/dist/providers/kimi.d.ts +23 -0
- package/dist/providers/kimi.d.ts.map +1 -0
- package/dist/providers/kimi.js +89 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/minimax.d.ts +20 -0
- package/dist/providers/minimax.d.ts.map +1 -0
- package/dist/providers/minimax.js +192 -0
- package/dist/providers/minimax.js.map +1 -0
- package/dist/providers/openai-chat.d.ts +33 -0
- package/dist/providers/openai-chat.d.ts.map +1 -0
- package/dist/providers/openai-chat.js +543 -0
- package/dist/providers/openai-chat.js.map +1 -0
- package/dist/providers/openai-responses.d.ts +26 -0
- package/dist/providers/openai-responses.d.ts.map +1 -0
- package/dist/providers/openai-responses.js +443 -0
- package/dist/providers/openai-responses.js.map +1 -0
- package/dist/providers/openrouter.d.ts +24 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +177 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/registry.d.ts +7 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +38 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/security/path.d.ts +51 -0
- package/dist/security/path.d.ts.map +1 -0
- package/dist/security/path.js +187 -0
- package/dist/security/path.js.map +1 -0
- package/dist/security/sensitive-files.d.ts +3 -0
- package/dist/security/sensitive-files.d.ts.map +1 -0
- package/dist/security/sensitive-files.js +41 -0
- package/dist/security/sensitive-files.js.map +1 -0
- package/dist/session.d.ts +446 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +4595 -0
- package/dist/session.js.map +1 -0
- package/dist/settings.d.ts +46 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +134 -0
- package/dist/settings.js.map +1 -0
- package/dist/show-context.d.ts +35 -0
- package/dist/show-context.d.ts.map +1 -0
- package/dist/show-context.js +320 -0
- package/dist/show-context.js.map +1 -0
- package/dist/skills/loader.d.ts +49 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +166 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/summarize-context.d.ts +29 -0
- package/dist/summarize-context.d.ts.map +1 -0
- package/dist/summarize-context.js +247 -0
- package/dist/summarize-context.js.map +1 -0
- package/dist/templates/loader.d.ts +104 -0
- package/dist/templates/loader.d.ts.map +1 -0
- package/dist/templates/loader.js +514 -0
- package/dist/templates/loader.js.map +1 -0
- package/dist/tools/basic.d.ts +29 -0
- package/dist/tools/basic.d.ts.map +1 -0
- package/dist/tools/basic.js +2079 -0
- package/dist/tools/basic.js.map +1 -0
- package/dist/tools/comm.d.ts +17 -0
- package/dist/tools/comm.d.ts.map +1 -0
- package/dist/tools/comm.js +192 -0
- package/dist/tools/comm.js.map +1 -0
- package/dist/tools/web-fetch.d.ts +11 -0
- package/dist/tools/web-fetch.d.ts.map +1 -0
- package/dist/tools/web-fetch.js +237 -0
- package/dist/tools/web-fetch.js.map +1 -0
- package/dist/tools/web-search.d.ts +24 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +51 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tui/app.d.ts +35 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +1042 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/checkbox-picker.d.ts +35 -0
- package/dist/tui/checkbox-picker.d.ts.map +1 -0
- package/dist/tui/checkbox-picker.js +85 -0
- package/dist/tui/checkbox-picker.js.map +1 -0
- package/dist/tui/command-picker.d.ts +31 -0
- package/dist/tui/command-picker.d.ts.map +1 -0
- package/dist/tui/command-picker.js +113 -0
- package/dist/tui/command-picker.js.map +1 -0
- package/dist/tui/components/ask-panel.d.ts +21 -0
- package/dist/tui/components/ask-panel.d.ts.map +1 -0
- package/dist/tui/components/ask-panel.js +81 -0
- package/dist/tui/components/ask-panel.js.map +1 -0
- package/dist/tui/components/conversation-panel.d.ts +68 -0
- package/dist/tui/components/conversation-panel.d.ts.map +1 -0
- package/dist/tui/components/conversation-panel.js +611 -0
- package/dist/tui/components/conversation-panel.js.map +1 -0
- package/dist/tui/components/input-panel.d.ts +27 -0
- package/dist/tui/components/input-panel.d.ts.map +1 -0
- package/dist/tui/components/input-panel.js +725 -0
- package/dist/tui/components/input-panel.js.map +1 -0
- package/dist/tui/components/logo-panel.d.ts +14 -0
- package/dist/tui/components/logo-panel.d.ts.map +1 -0
- package/dist/tui/components/logo-panel.js +37 -0
- package/dist/tui/components/logo-panel.js.map +1 -0
- package/dist/tui/components/plan-panel.d.ts +10 -0
- package/dist/tui/components/plan-panel.d.ts.map +1 -0
- package/dist/tui/components/plan-panel.js +8 -0
- package/dist/tui/components/plan-panel.js.map +1 -0
- package/dist/tui/components/status-bar.d.ts +24 -0
- package/dist/tui/components/status-bar.d.ts.map +1 -0
- package/dist/tui/components/status-bar.js +80 -0
- package/dist/tui/components/status-bar.js.map +1 -0
- package/dist/tui/input/editor-state.d.ts +22 -0
- package/dist/tui/input/editor-state.d.ts.map +1 -0
- package/dist/tui/input/editor-state.js +157 -0
- package/dist/tui/input/editor-state.js.map +1 -0
- package/dist/tui/input/keymap.d.ts +3 -0
- package/dist/tui/input/keymap.d.ts.map +1 -0
- package/dist/tui/input/keymap.js +72 -0
- package/dist/tui/input/keymap.js.map +1 -0
- package/dist/tui/input/paste-slots.d.ts +17 -0
- package/dist/tui/input/paste-slots.d.ts.map +1 -0
- package/dist/tui/input/paste-slots.js +46 -0
- package/dist/tui/input/paste-slots.js.map +1 -0
- package/dist/tui/input/paste.d.ts +15 -0
- package/dist/tui/input/paste.d.ts.map +1 -0
- package/dist/tui/input/paste.js +35 -0
- package/dist/tui/input/paste.js.map +1 -0
- package/dist/tui/input/protocol.d.ts +9 -0
- package/dist/tui/input/protocol.d.ts.map +1 -0
- package/dist/tui/input/protocol.js +387 -0
- package/dist/tui/input/protocol.js.map +1 -0
- package/dist/tui/input/sanitize.d.ts +6 -0
- package/dist/tui/input/sanitize.d.ts.map +1 -0
- package/dist/tui/input/sanitize.js +20 -0
- package/dist/tui/input/sanitize.js.map +1 -0
- package/dist/tui/input/types.d.ts +18 -0
- package/dist/tui/input/types.d.ts.map +1 -0
- package/dist/tui/input/types.js +2 -0
- package/dist/tui/input/types.js.map +1 -0
- package/dist/tui/launch.d.ts +23 -0
- package/dist/tui/launch.d.ts.map +1 -0
- package/dist/tui/launch.js +104 -0
- package/dist/tui/launch.js.map +1 -0
- package/dist/tui/theme.d.ts +20 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +29 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/tui/types.d.ts +136 -0
- package/dist/tui/types.d.ts.map +1 -0
- package/dist/tui/types.js +9 -0
- package/dist/tui/types.js.map +1 -0
- package/package.json +76 -0
- package/prompts/sections/agents_md.md +23 -0
- package/prompts/sections/important_log.md +16 -0
- package/prompts/sections/system_mechanisms.md +18 -0
- package/prompts/tools/apply_patch.md +31 -0
- package/prompts/tools/ask.md +18 -0
- package/prompts/tools/bash.md +13 -0
- package/prompts/tools/bash_background.md +9 -0
- package/prompts/tools/bash_output.md +9 -0
- package/prompts/tools/check_status.md +3 -0
- package/prompts/tools/diff.md +5 -0
- package/prompts/tools/edit_file.md +11 -0
- package/prompts/tools/glob.md +7 -0
- package/prompts/tools/grep.md +20 -0
- package/prompts/tools/kill_agent.md +3 -0
- package/prompts/tools/kill_shell.md +5 -0
- package/prompts/tools/list_dir.md +5 -0
- package/prompts/tools/plan.md +252 -0
- package/prompts/tools/read_file.md +9 -0
- package/prompts/tools/show_context.md +12 -0
- package/prompts/tools/skill.md +7 -0
- package/prompts/tools/spawn_agent.md +195 -0
- package/prompts/tools/summarize_context.md +122 -0
- package/prompts/tools/test.md +5 -0
- package/prompts/tools/wait.md +17 -0
- package/prompts/tools/web_fetch.md +9 -0
- package/prompts/tools/web_search.md +5 -0
- package/prompts/tools/write_file.md +11 -0
- package/skills/.staging/.gitkeep +0 -0
- package/skills/explain-code/SKILL.md +15 -0
- package/skills/skill-manager/SKILL.md +83 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AA+C9E,qEAAqE;AACrE,4BAA4B;AAC5B,qEAAqE;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,wBAAwB;IACxB,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,OAAO;IACxB,SAAS,EAAE,SAAS;IACpB,YAAY;IACZ,0BAA0B,EAAE,OAAO;IACnC,4BAA4B,EAAE,OAAO;IACrC,2BAA2B,EAAE,OAAO;IACpC,kBAAkB,EAAE,OAAO;IAC3B,0BAA0B,EAAE,OAAO;IACnC,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,+BAA+B;IAC/B,kBAAkB,EAAE,OAAO;IAC3B,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,OAAO;IACP,WAAW,EAAE,OAAO;IACpB,kBAAkB,EAAE,OAAO;IAC3B,kBAAkB,EAAE,OAAO;IAC3B,iBAAiB;IACjB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,OAAO;IACxB,UAAU;IACV,cAAc,EAAE,OAAO;IACvB,cAAc,EAAE,OAAO;IACvB,wBAAwB,EAAE,OAAO;IACjC,gBAAgB,EAAE,SAAS;IAC3B,gBAAgB,EAAE,SAAS;IAC3B,mFAAmF;IACnF,cAAc,EAAE,OAAO;IACvB,cAAc,EAAE,OAAO;IACvB,YAAY,EAAE,SAAS;CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAgB,IAAI,GAAG,CAAC;IAC1D,SAAS;IACT,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS;IACtD,YAAY;IACZ,0BAA0B,EAAE,4BAA4B,EAAE,2BAA2B;IACrF,kBAAkB;IAClB,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB;IAClE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB;IAC1D,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAgB,IAAI,GAAG,CAAC;IACxD,SAAS;IACT,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS;IACtD,YAAY;IACZ,0BAA0B,EAAE,4BAA4B,EAAE,2BAA2B;IACrF,kBAAkB;IAClB,0BAA0B,EAAE,iBAAiB,EAAE,mBAAmB;IAClE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB;IAC1D,OAAO;IACP,WAAW,EAAE,kBAAkB;IAC/B,MAAM;IACN,OAAO,EAAE,SAAS,EAAE,eAAe;IACnC,UAAU;IACV,cAAc,EAAE,wBAAwB,EAAE,cAAc;IACxD,gBAAgB,EAAE,gBAAgB;IAClC,6CAA6C;IAC7C,cAAc,EAAE,cAAc,EAAE,YAAY;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAgB,IAAI,GAAG,CAAC;IAC7D,8CAA8C;IAC9C,gBAAgB,EAAE,gBAAgB;CACnC,CAAC,CAAC;AAEH,qEAAqE;AACrE,8BAA8B;AAC9B,qEAAqE;AAErE,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,wBAAwB;IACxB,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,OAAO;IACxB,eAAe,EAAE,OAAO;IACxB,SAAS,EAAE,OAAO;IAClB,yBAAyB;IACzB,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,MAAM;IAC3B,yBAAyB;IACzB,0BAA0B,EAAE,MAAM;IAClC,4BAA4B,EAAE,MAAM;IACpC,2BAA2B,EAAE,MAAM;IACnC,kBAAkB,EAAE,MAAM;IAC1B,yBAAyB;IACzB,0BAA0B,EAAE,MAAM;IAClC,iCAAiC;IACjC,kBAAkB,EAAE,MAAM;IAC1B,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,MAAM;IAC3B,OAAO;IACP,WAAW,EAAE,MAAM;IACnB,kBAAkB,EAAE,MAAM;IAC1B,kBAAkB,EAAE,MAAM;IAC1B,iBAAiB;IACjB,OAAO,EAAE,OAAO;IAChB,SAAS,EAAE,OAAO;IAClB,eAAe,EAAE,OAAO;IACxB,UAAU;IACV,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,OAAO;IACvB,wBAAwB,EAAE,OAAO;IACjC,gBAAgB,EAAE,MAAM;IACxB,gBAAgB,EAAE,MAAM;IACxB,6CAA6C;IAC7C,cAAc,EAAE,KAAK;IACrB,cAAc,EAAE,OAAO;IACvB,YAAY,EAAE,MAAM;CACrB,CAAC;AAEF,yGAAyG;AACzG,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAO,uBAAuB,CAAC,KAAK,CAAC;WAChC,uBAAuB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,qEAAqE;AACrE,4BAA4B;AAC5B,qEAAqE;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,SAAS;IACT,SAAS,EAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACvD,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACnD,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACnD,SAAS,EAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACvD,sCAAsC;IACtC,iBAAiB,EAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5D,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5D,iBAAiB,EAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5D,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC;IAC5D,yDAAyD;IACzD,0BAA0B,EAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,4BAA4B,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,2BAA2B,EAAG,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpD,kBAAkB,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IACpD,0BAA0B,EAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC;IAC9D,MAAM;IACN,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;IAChF,OAAO;IACP,WAAW,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,kBAAkB,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC;IAC7D,6BAA6B;IAC7B,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE,CAAC,IAAI,CAAC;IACxD,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC;IAC1E,6CAA6C;IAC7C,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC;CACrE,CAAC;AAEF,4FAA4F;AAC5F,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,qBAAqB,CAAC,KAAK,CAAC;WAC9B,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;WAC9C,EAAE,CAAC;AACV,CAAC;AAED,qEAAqE;AACrE,mBAAmB;AACnB,qEAAqE;AAErE;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjD,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,sBAAsB,CAAC,QAA4B,EAAE,KAAyB;IAC5F,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,YAAY,CAAC;IACpC,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,cAAc,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CAAC,QAA4B,EAAE,KAAyB;IAC3F,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,YAAY;QAAE,OAAO,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,YAAY,CAAC;IACpC,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,cAAc,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,YAAY,IAAI,SAAS,EAAE,CAAC;AACxC,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,aAAa,GAAG,CAAC;IAC/D,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,aAAa,CAAC;IAC5C,OAAO,qBAAqB,CAAC,KAAK,CAAC;WAC9B,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;WAC9C,CAAC,CAAC;AACT,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,QAAkB;IACpE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC;WACpC,uBAAuB,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,QAAkB;IAClE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;WAClC,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAkB,EAAE,QAAiB;IACtF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,6DAA6D;IAC7D,uEAAuE;IACvE,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC;WACpC,0BAA0B,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qEAAqE;AACrE,kCAAkC;AAClC,qEAAqE;AAErE,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/E,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,cAAc,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IACnE,oBAAoB;IACpB,IAAI,KAAK,KAAK,oBAAoB;QAAE,OAAO,cAAc,EAAE,CAAC;IAC5D,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,eAAuB,EACvB,GAA4B,EAC5B,KAAa;IAEb,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,yBAAyB,eAAe,qCAAqC,KAAK,GAAG,CACtF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAChC,eAAuB,EACvB,GAA4B,EAC5B,KAAa;IAEb,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yBAAyB,eAAe,aAAa,KAAK,oBAAoB,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,yBAAyB,CAChC,eAAuB,EACvB,GAA4B,EAC5B,KAAa;IAEb,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,yBAAyB,eAAe,aAAa,KAAK,oBAAoB,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,0BAA0B,CACjC,eAAuB,EACvB,GAA4B,EAC5B,KAAa;IAEb,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,OAAO,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,yBAAyB,eAAe,aAAa,KAAK,qBAAqB,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,qEAAqE;AACrE,yBAAyB;AACzB,qEAAqE;AAErE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAUnD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAGlC;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;IAEnD,iBAAiB;IACjB,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QACrB,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;aAAM,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,IAAI,EAAE,aAAa,EAAE,CAAC;QACxB,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACzB,aAAa,GAAG,aAAa,CAAC;QAChC,CAAC;aAAM,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/B,aAAa,GAAG,YAAY,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,aAAa,EAAE,CAAC;QAClB,mDAAmD;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1B,WAAW,GAAG,cAAc,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,WAAW,GAAG,WAAW,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,WAAW,GAAG,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,aAAa,EAAE,CAAC;QAClB,kDAAkD;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YACzB,UAAU,GAAG,aAAa,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;aAAM,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/E,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,sBAAsB;AACtB,qEAAqE;AAErE,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB;IACjC,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,qEAAqE;AACrE,6BAA6B;AAC7B,qEAAqE;AAErE,MAAM,aAAa,GAA2B;IAC5C,cAAc,EAAE,uCAAuC;IACvD,MAAM,EAAE,4BAA4B;IACpC,SAAS,EAAE,4BAA4B;IACvC,SAAS,EAAE,4BAA4B;IACvC,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,sCAAsC;IAC7C,UAAU,EAAE,8BAA8B;IAC1C,UAAU,EAAE,6CAA6C;IACzD,eAAe,EAAE,qCAAqC;IACtD,SAAS,EAAE,2BAA2B;IACtC,YAAY,EAAE,6BAA6B;IAC3C,YAAY,EAAE,8BAA8B;CAC7C,CAAC;AAEF,qEAAqE;AACrE,eAAe;AACf,qEAAqE;AAErE,MAAM,OAAO,MAAM;IACT,KAAK,CAA0B;IAC/B,UAAU,CAA0C;IACpD,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,WAAW,CAAoB;IAEvC,YAAY,IAAuD;QACjE,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;YACd,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,UAAU,GAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA6C,IAAI,EAAE,CAAC;QAC1F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAA6B,IAAI,EAAE,CAAC;IAC/D,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,GAA4B;QAC5D,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,wBAAwB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC5F,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YAC3B,yBAAyB;YACzB,IAAI,SAAS,KAAK,oBAAoB,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC;gBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CACb,yCAAyC,IAAI,MAAM,QAAQ,IAAI,SAAS,KAAK;wBAC7E,uCAAuC;wBACvC,8DAA8D,CAC/D,CAAC;gBACJ,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,CAAC,SAAS;gBAAE,OAAO,SAAS,CAAC;YACjC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,MAAM,IAAI,KAAK,CACb,qCAAqC,IAAI,MAAM,QAAQ,IAAI,SAAS,KAAK;gBACzE,yBAAyB,SAAS,iBAAiB;gBACnD,kFAAkF,CACnF,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;YACxB,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU;YAC1C,aAAa,EAAE,YAAY,EAAE,gBAAgB;YAC7C,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB;YAC7D,qBAAqB;SACtB,CAAC,CAAC;QACH,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;QAC/E,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC;QAC/E,MAAM,cAAc,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,0BAA0B,GAAG,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAChG,MAAM,wBAAwB,GAAG,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAC5F,MAAM,yBAAyB,GAAG,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,qBAAqB,CAAC,CAAC;QAE/F,OAAO;YACL,IAAI;YACJ,QAAQ;YACR,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,cAAc;YACtB,OAAO;YACP,WAAW;YACX,SAAS;YACT,aAAa,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC;YAC1D,kBAAkB,EAAE,oBAAoB,CACtC,SAAS,EACT,0BAA0B,CAC3B;YACD,gBAAgB,EAAE,kBAAkB,CAClC,SAAS,EACT,wBAAwB,CACzB;YACD,cAAc;YACd,iBAAiB,EAAE,mBAAmB,CACpC,SAAS,EACT,yBAAyB,EACzB,QAAQ,CACT;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,2BAA2B,SAAS,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,gBAAgB;QACd,MAAM,GAAG,GAAuB,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5E,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI;gBACJ,QAAQ;gBACR,KAAK;gBACL,SAAS;gBACT,iBAAiB,EAAE,mBAAmB,CAAC,SAAS,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,6EAA6E;IAC7E,mBAAmB,CAAC,QAAgB,EAAE,KAAa;QACjD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC3D,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAY,EAAE,GAA4B;QACvD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC5B,CAAC;QACA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA6C,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACd,yBAAyB;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAuB,CAAC;QACnE,IAAI,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,QAAQ,CAAC;QAE7D,yCAAyC;QACzC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAI,GAAG,CAAC,SAAS,CAAY,IAAI,EAAE,CAAC;YACnD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3F,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,OAAO,IAAI,CAAC;YACxC,CAAC;iBAAM,IAAI,SAAS,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC,CAAC,gCAAgC;YAC/C,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC;IAED,uEAAuE;IACvE,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAuB,CAAC;IAC7D,CAAC;IAED,+DAA+D;IAC/D,IAAI,aAAa;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuC,CAAC;QACtE,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAyB,EAAE,CAAC;QACxC,IAAI,GAAG,CAAC,cAAc,CAAC;YAAE,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC;QAClE,IAAI,GAAG,CAAC,mBAAmB,CAAC;YAAE,MAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjF,IAAI,GAAG,CAAC,aAAa,CAAC;YAAE,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qEAAqE;IACrE,2BAA2B;IAC3B,qEAAqE;IAE7D,gBAAgB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAwD,CAAC;QAC7F,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QAEpB,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,GAA2B,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAuC,CAAC;YAChE,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI;gBACJ,SAAS,EAAG,GAAG,CAAC,WAAW,CAAqB,IAAI,OAAO;gBAC3D,OAAO,EAAG,GAAG,CAAC,SAAS,CAAY,IAAI,EAAE;gBACzC,IAAI,EAAG,GAAG,CAAC,MAAM,CAAc,IAAI,EAAE;gBACrC,GAAG,EAAG,GAAG,CAAC,KAAK,CAAY,IAAI,EAAE;gBACjC,GAAG;gBACH,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC/C,CAAC,CAAE,GAAG,CAAC,eAAe,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC3D,CAAC,CAAC,SAAS;gBACb,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBACnD,CAAC,CAAE,GAAG,CAAC,iBAAiB,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAC7D,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;QACL,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-tag and message-shaping utilities shared by the log-native runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Compact marker constants and type guards
|
|
6
|
+
* - Context ID injection utilities
|
|
7
|
+
* - Consecutive same-role merging for provider-specific alternation rules
|
|
8
|
+
*/
|
|
9
|
+
/** Sentinel role used for compact markers in the conversation array. */
|
|
10
|
+
export declare const COMPACT_MARKER_ROLE = "__compact_marker";
|
|
11
|
+
/** Shape of a compact marker in provider-message-like projections. */
|
|
12
|
+
export interface CompactMarker {
|
|
13
|
+
role: typeof COMPACT_MARKER_ROLE;
|
|
14
|
+
marker_type: "plan_advance" | "auto_compact" | "context_reset";
|
|
15
|
+
timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
/** Type guard: is this message a compact marker? */
|
|
18
|
+
export declare function isCompactMarker(msg: Record<string, unknown>): boolean;
|
|
19
|
+
/** Metadata field name for context IDs stored on messages. */
|
|
20
|
+
export declare const CONTEXT_ID_KEY = "_context_id";
|
|
21
|
+
/**
|
|
22
|
+
* Allocate a unique random hex context ID (4 hex chars).
|
|
23
|
+
* Retries on collision (up to 10 times), then falls back to 6 hex chars.
|
|
24
|
+
*/
|
|
25
|
+
export declare function allocateContextId(usedIds: Set<string>): string;
|
|
26
|
+
/** Format a context ID into the injection tag: `§{contextId}§` */
|
|
27
|
+
export declare function formatContextTag(contextId: string): string;
|
|
28
|
+
/** Regex matching any `§{...}§` context tag, plus optional trailing newline (global). */
|
|
29
|
+
export declare const CONTEXT_TAG_REGEX: RegExp;
|
|
30
|
+
/** Strip all `§{...}§` context tags (and their trailing newline) from text. */
|
|
31
|
+
export declare function stripContextTags(text: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Buffers streaming text to strip `§{...}§` context tags that the model
|
|
34
|
+
* may produce. When `§` is encountered, buffering starts. If the buffer
|
|
35
|
+
* completes a `§{...}§` pattern, it's discarded. Otherwise the buffer
|
|
36
|
+
* is flushed downstream.
|
|
37
|
+
*/
|
|
38
|
+
export declare class ContextTagStripBuffer {
|
|
39
|
+
private _downstream;
|
|
40
|
+
private _buffer;
|
|
41
|
+
private _buffering;
|
|
42
|
+
private _swallowNewline;
|
|
43
|
+
constructor(downstream: (chunk: string) => void);
|
|
44
|
+
feed(chunk: string): void;
|
|
45
|
+
/** Flush any remaining buffered content. */
|
|
46
|
+
flush(): void;
|
|
47
|
+
private _flush;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Inject a context tag at the beginning of message content.
|
|
51
|
+
*
|
|
52
|
+
* Handles both string content and Anthropic-style array content
|
|
53
|
+
* (array of content blocks with `{type, text, ...}`).
|
|
54
|
+
*/
|
|
55
|
+
export declare function injectContextIdTag(content: string | Array<Record<string, unknown>>, contextId: number | string): string | Array<Record<string, unknown>>;
|
|
56
|
+
/**
|
|
57
|
+
* Role-aware merge for consecutive same-role messages.
|
|
58
|
+
*
|
|
59
|
+
* For providers that require strictly alternating user/assistant turns.
|
|
60
|
+
*
|
|
61
|
+
* Rules:
|
|
62
|
+
* - system messages: never merged
|
|
63
|
+
* - tool_result messages: never merged (each has its own tool_call_id)
|
|
64
|
+
* - assistant with tool_calls: never merged, but absorbs preceding pure-text assistant
|
|
65
|
+
* - user + user: block concat (concatAsContentBlocks)
|
|
66
|
+
* - assistant(text) + assistant(text): text concat via \n\n
|
|
67
|
+
*/
|
|
68
|
+
export declare function mergeConsecutiveSameRole(messages: Array<Record<string, unknown>>): Array<Record<string, unknown>>;
|
|
69
|
+
//# sourceMappingURL=context-rendering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-rendering.d.ts","sourceRoot":"","sources":["../src/context-rendering.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AAEtD,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,mBAAmB,CAAC;IACjC,WAAW,EAAE,cAAc,GAAG,cAAc,GAAG,eAAe,CAAC;IAC/D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAErE;AAMD,8DAA8D;AAC9D,eAAO,MAAM,cAAc,gBAAgB,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAY9D;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AAEnD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAMD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAS;gBAEpB,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAI/C,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAiCzB,4CAA4C;IAC5C,KAAK,IAAI,IAAI;IAQb,OAAO,CAAC,MAAM;CAKf;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAChD,SAAS,EAAE,MAAM,GAAG,MAAM,GACzB,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0BzC;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0EhC"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context-tag and message-shaping utilities shared by the log-native runtime.
|
|
3
|
+
*
|
|
4
|
+
* Provides:
|
|
5
|
+
* - Compact marker constants and type guards
|
|
6
|
+
* - Context ID injection utilities
|
|
7
|
+
* - Consecutive same-role merging for provider-specific alternation rules
|
|
8
|
+
*/
|
|
9
|
+
import { randomBytes } from "node:crypto";
|
|
10
|
+
// ------------------------------------------------------------------
|
|
11
|
+
// Compact marker
|
|
12
|
+
// ------------------------------------------------------------------
|
|
13
|
+
/** Sentinel role used for compact markers in the conversation array. */
|
|
14
|
+
export const COMPACT_MARKER_ROLE = "__compact_marker";
|
|
15
|
+
/** Type guard: is this message a compact marker? */
|
|
16
|
+
export function isCompactMarker(msg) {
|
|
17
|
+
return msg["role"] === COMPACT_MARKER_ROLE;
|
|
18
|
+
}
|
|
19
|
+
// ------------------------------------------------------------------
|
|
20
|
+
// Context ID
|
|
21
|
+
// ------------------------------------------------------------------
|
|
22
|
+
/** Metadata field name for context IDs stored on messages. */
|
|
23
|
+
export const CONTEXT_ID_KEY = "_context_id";
|
|
24
|
+
/**
|
|
25
|
+
* Allocate a unique random hex context ID (4 hex chars).
|
|
26
|
+
* Retries on collision (up to 10 times), then falls back to 6 hex chars.
|
|
27
|
+
*/
|
|
28
|
+
export function allocateContextId(usedIds) {
|
|
29
|
+
for (let attempt = 0; attempt < 10; attempt++) {
|
|
30
|
+
const id = randomBytes(2).toString("hex");
|
|
31
|
+
if (!usedIds.has(id)) {
|
|
32
|
+
usedIds.add(id);
|
|
33
|
+
return id;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Fallback to 6 hex chars
|
|
37
|
+
const id = randomBytes(3).toString("hex");
|
|
38
|
+
usedIds.add(id);
|
|
39
|
+
return id;
|
|
40
|
+
}
|
|
41
|
+
/** Format a context ID into the injection tag: `§{contextId}§` */
|
|
42
|
+
export function formatContextTag(contextId) {
|
|
43
|
+
return `§{${contextId}}§`;
|
|
44
|
+
}
|
|
45
|
+
/** Regex matching any `§{...}§` context tag, plus optional trailing newline (global). */
|
|
46
|
+
export const CONTEXT_TAG_REGEX = /§\{[^}]*\}§\n?/g;
|
|
47
|
+
/** Strip all `§{...}§` context tags (and their trailing newline) from text. */
|
|
48
|
+
export function stripContextTags(text) {
|
|
49
|
+
return text.replace(CONTEXT_TAG_REGEX, "");
|
|
50
|
+
}
|
|
51
|
+
// ------------------------------------------------------------------
|
|
52
|
+
// ContextTagStripBuffer — streaming strip for §{...}§ tags
|
|
53
|
+
// ------------------------------------------------------------------
|
|
54
|
+
/**
|
|
55
|
+
* Buffers streaming text to strip `§{...}§` context tags that the model
|
|
56
|
+
* may produce. When `§` is encountered, buffering starts. If the buffer
|
|
57
|
+
* completes a `§{...}§` pattern, it's discarded. Otherwise the buffer
|
|
58
|
+
* is flushed downstream.
|
|
59
|
+
*/
|
|
60
|
+
export class ContextTagStripBuffer {
|
|
61
|
+
_downstream;
|
|
62
|
+
_buffer = "";
|
|
63
|
+
_buffering = false;
|
|
64
|
+
_swallowNewline = false; // eat one \n after a matched tag
|
|
65
|
+
constructor(downstream) {
|
|
66
|
+
this._downstream = downstream;
|
|
67
|
+
}
|
|
68
|
+
feed(chunk) {
|
|
69
|
+
for (const ch of chunk) {
|
|
70
|
+
if (this._swallowNewline) {
|
|
71
|
+
this._swallowNewline = false;
|
|
72
|
+
if (ch === "\n")
|
|
73
|
+
continue; // consumed
|
|
74
|
+
// Not a newline — fall through to normal processing
|
|
75
|
+
}
|
|
76
|
+
if (this._buffering) {
|
|
77
|
+
this._buffer += ch;
|
|
78
|
+
if (ch === "§" && this._buffer.length >= 4) {
|
|
79
|
+
// Check if we completed a §{...}§ pattern
|
|
80
|
+
if (this._buffer.startsWith("§{") && this._buffer.endsWith("}§")) {
|
|
81
|
+
// Discard the matched tag, and swallow the next \n if present
|
|
82
|
+
this._buffer = "";
|
|
83
|
+
this._buffering = false;
|
|
84
|
+
this._swallowNewline = true;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Not a valid tag — flush buffer
|
|
88
|
+
this._flush();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else if (this._buffer.length > 50) {
|
|
92
|
+
// Safety: if buffer gets too long without closing, flush
|
|
93
|
+
this._flush();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (ch === "§") {
|
|
97
|
+
this._buffering = true;
|
|
98
|
+
this._buffer = ch;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this._downstream(ch);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Flush any remaining buffered content. */
|
|
106
|
+
flush() {
|
|
107
|
+
if (this._buffer) {
|
|
108
|
+
this._downstream(this._buffer);
|
|
109
|
+
this._buffer = "";
|
|
110
|
+
}
|
|
111
|
+
this._buffering = false;
|
|
112
|
+
}
|
|
113
|
+
_flush() {
|
|
114
|
+
this._downstream(this._buffer);
|
|
115
|
+
this._buffer = "";
|
|
116
|
+
this._buffering = false;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Inject a context tag at the beginning of message content.
|
|
121
|
+
*
|
|
122
|
+
* Handles both string content and Anthropic-style array content
|
|
123
|
+
* (array of content blocks with `{type, text, ...}`).
|
|
124
|
+
*/
|
|
125
|
+
export function injectContextIdTag(content, contextId) {
|
|
126
|
+
const tag = formatContextTag(String(contextId));
|
|
127
|
+
if (typeof content === "string") {
|
|
128
|
+
return `${tag}\n${content}`;
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(content)) {
|
|
131
|
+
// Find first text block and prepend the tag
|
|
132
|
+
const copy = content.map((block) => ({ ...block }));
|
|
133
|
+
let injected = false;
|
|
134
|
+
for (const block of copy) {
|
|
135
|
+
if (block["type"] === "text" && typeof block["text"] === "string") {
|
|
136
|
+
block["text"] = `${tag}\n${block["text"]}`;
|
|
137
|
+
injected = true;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
if (!injected) {
|
|
142
|
+
// No text block found — insert one at the beginning
|
|
143
|
+
copy.unshift({ type: "text", text: tag });
|
|
144
|
+
}
|
|
145
|
+
return copy;
|
|
146
|
+
}
|
|
147
|
+
return content;
|
|
148
|
+
}
|
|
149
|
+
// ------------------------------------------------------------------
|
|
150
|
+
// Consecutive same-role merging
|
|
151
|
+
// ------------------------------------------------------------------
|
|
152
|
+
/**
|
|
153
|
+
* Role-aware merge for consecutive same-role messages.
|
|
154
|
+
*
|
|
155
|
+
* For providers that require strictly alternating user/assistant turns.
|
|
156
|
+
*
|
|
157
|
+
* Rules:
|
|
158
|
+
* - system messages: never merged
|
|
159
|
+
* - tool_result messages: never merged (each has its own tool_call_id)
|
|
160
|
+
* - assistant with tool_calls: never merged, but absorbs preceding pure-text assistant
|
|
161
|
+
* - user + user: block concat (concatAsContentBlocks)
|
|
162
|
+
* - assistant(text) + assistant(text): text concat via \n\n
|
|
163
|
+
*/
|
|
164
|
+
export function mergeConsecutiveSameRole(messages) {
|
|
165
|
+
if (messages.length === 0)
|
|
166
|
+
return [];
|
|
167
|
+
const result = [];
|
|
168
|
+
for (const msg of messages) {
|
|
169
|
+
const role = msg["role"];
|
|
170
|
+
// Never merge these — but handle adjacent assistant edge case
|
|
171
|
+
if (role === "system" ||
|
|
172
|
+
role === "tool_result") {
|
|
173
|
+
result.push(msg);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (role === "assistant" && msg["tool_calls"]) {
|
|
177
|
+
// If the previous message is a pure-text assistant (e.g. a summary
|
|
178
|
+
// inserted by summarize_context), merge its text into this message
|
|
179
|
+
// to avoid consecutive model turns that violate strict
|
|
180
|
+
// role-alternation requirements.
|
|
181
|
+
const prev = result.length > 0 ? result[result.length - 1] : null;
|
|
182
|
+
if (prev &&
|
|
183
|
+
prev["role"] === "assistant" &&
|
|
184
|
+
!prev["tool_calls"]) {
|
|
185
|
+
const prevText = (typeof prev["content"] === "string" ? prev["content"] : "") ||
|
|
186
|
+
(typeof prev["text"] === "string" ? prev["text"] : "");
|
|
187
|
+
if (prevText) {
|
|
188
|
+
const merged = { ...msg };
|
|
189
|
+
const curText = (typeof merged["text"] === "string" ? merged["text"] : "") ||
|
|
190
|
+
(typeof merged["content"] === "string" ? merged["content"] : "");
|
|
191
|
+
merged["text"] = curText ? `${prevText}\n\n${curText}` : prevText;
|
|
192
|
+
result.pop();
|
|
193
|
+
result.push(merged);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// prev is empty — just remove it
|
|
197
|
+
result.pop();
|
|
198
|
+
result.push(msg);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
result.push(msg);
|
|
203
|
+
}
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
const prev = result.length > 0 ? result[result.length - 1] : null;
|
|
207
|
+
if (!prev || prev["role"] !== role) {
|
|
208
|
+
result.push(msg);
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
// Previous message also shouldn't be a "never merge" type
|
|
212
|
+
if (prev["role"] === "system" ||
|
|
213
|
+
prev["role"] === "tool_result" ||
|
|
214
|
+
(prev["role"] === "assistant" && prev["tool_calls"])) {
|
|
215
|
+
result.push(msg);
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
// Merge into previous
|
|
219
|
+
const prevContent = prev["content"];
|
|
220
|
+
const curContent = msg["content"];
|
|
221
|
+
prev["content"] = mergeContent(prevContent, curContent);
|
|
222
|
+
}
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Merge two message content values together.
|
|
227
|
+
* Handles string + string, array + array, string + array, array + string.
|
|
228
|
+
*/
|
|
229
|
+
function mergeContent(a, b) {
|
|
230
|
+
const aIsString = typeof a === "string";
|
|
231
|
+
const bIsString = typeof b === "string";
|
|
232
|
+
const aIsArray = Array.isArray(a);
|
|
233
|
+
const bIsArray = Array.isArray(b);
|
|
234
|
+
if (aIsString && bIsString) {
|
|
235
|
+
return `${a}\n\n${b}`;
|
|
236
|
+
}
|
|
237
|
+
// Convert strings to text blocks for array merging
|
|
238
|
+
const aBlocks = aIsArray
|
|
239
|
+
? a
|
|
240
|
+
: aIsString
|
|
241
|
+
? [{ type: "text", text: a }]
|
|
242
|
+
: [{ type: "text", text: String(a) }];
|
|
243
|
+
const bBlocks = bIsArray
|
|
244
|
+
? b
|
|
245
|
+
: bIsString
|
|
246
|
+
? [{ type: "text", text: b }]
|
|
247
|
+
: [{ type: "text", text: String(b) }];
|
|
248
|
+
return [...aBlocks, ...bBlocks];
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=context-rendering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-rendering.js","sourceRoot":"","sources":["../src/context-rendering.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const PROJECTED_DOCUMENT_EXTENSIONS: Set<string>;
|
|
2
|
+
export interface ProjectedDocumentView {
|
|
3
|
+
sourcePath: string;
|
|
4
|
+
sourceExt: string;
|
|
5
|
+
text: string;
|
|
6
|
+
sizeBytes: number;
|
|
7
|
+
mtimeMs: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function isProjectedDocumentPath(filePath: string): boolean;
|
|
10
|
+
export declare function projectedDocumentLabel(filePath: string): string;
|
|
11
|
+
export declare function loadProjectedDocumentView(filePath: string, artifactsDir?: string): Promise<ProjectedDocumentView>;
|
|
12
|
+
//# sourceMappingURL=document-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-projection.d.ts","sourceRoot":"","sources":["../src/document-projection.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,aAA+C,CAAC;AAO1F,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC,CA+ChC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
export const PROJECTED_DOCUMENT_EXTENSIONS = new Set([".pdf", ".docx", ".xlsx", ".pptx"]);
|
|
5
|
+
const PROJECTION_CACHE_DIR = ".document-projections";
|
|
6
|
+
let markItDownPromise = null;
|
|
7
|
+
function normalizeDocBaseName(filePath) {
|
|
8
|
+
const base = path.basename(filePath, path.extname(filePath)) || "document";
|
|
9
|
+
return base.replace(/[^A-Za-z0-9._-]+/g, "-").replace(/-+/g, "-").slice(0, 64) || "document";
|
|
10
|
+
}
|
|
11
|
+
function buildCachePath(filePath, artifactsDir, sizeBytes, mtimeMs) {
|
|
12
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
13
|
+
const safeBase = normalizeDocBaseName(filePath);
|
|
14
|
+
const hash = createHash("sha256")
|
|
15
|
+
.update(`${filePath}:${sizeBytes}:${mtimeMs}`)
|
|
16
|
+
.digest("hex")
|
|
17
|
+
.slice(0, 10);
|
|
18
|
+
return path.join(artifactsDir, PROJECTION_CACHE_DIR, `${safeBase}-${hash}${ext}.md`);
|
|
19
|
+
}
|
|
20
|
+
async function getMarkItDown() {
|
|
21
|
+
if (!markItDownPromise) {
|
|
22
|
+
markItDownPromise = import("markitdown-ts").then((mod) => new mod.MarkItDown());
|
|
23
|
+
}
|
|
24
|
+
return markItDownPromise;
|
|
25
|
+
}
|
|
26
|
+
export function isProjectedDocumentPath(filePath) {
|
|
27
|
+
return PROJECTED_DOCUMENT_EXTENSIONS.has(path.extname(filePath).toLowerCase());
|
|
28
|
+
}
|
|
29
|
+
export function projectedDocumentLabel(filePath) {
|
|
30
|
+
return path.extname(filePath).toLowerCase().slice(1).toUpperCase() || "document";
|
|
31
|
+
}
|
|
32
|
+
export async function loadProjectedDocumentView(filePath, artifactsDir) {
|
|
33
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
34
|
+
if (!PROJECTED_DOCUMENT_EXTENSIONS.has(ext)) {
|
|
35
|
+
throw new Error(`Unsupported projected document type: ${ext || "(no extension)"}`);
|
|
36
|
+
}
|
|
37
|
+
if (ext === ".pptx") {
|
|
38
|
+
throw new Error("PPTX projection is not yet available in this runtime.");
|
|
39
|
+
}
|
|
40
|
+
const stat = statSync(filePath);
|
|
41
|
+
if (!stat.isFile()) {
|
|
42
|
+
throw new Error(`Not a file: ${filePath}`);
|
|
43
|
+
}
|
|
44
|
+
let cachePath = null;
|
|
45
|
+
if (artifactsDir) {
|
|
46
|
+
cachePath = buildCachePath(filePath, artifactsDir, stat.size, stat.mtimeMs);
|
|
47
|
+
if (existsSync(cachePath)) {
|
|
48
|
+
return {
|
|
49
|
+
sourcePath: filePath,
|
|
50
|
+
sourceExt: ext,
|
|
51
|
+
text: readFileSync(cachePath, "utf-8"),
|
|
52
|
+
sizeBytes: stat.size,
|
|
53
|
+
mtimeMs: Math.trunc(stat.mtimeMs),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const markItDown = await getMarkItDown();
|
|
58
|
+
const result = await markItDown.convert(filePath);
|
|
59
|
+
const markdown = result?.markdown?.trim();
|
|
60
|
+
if (!markdown) {
|
|
61
|
+
throw new Error(`${projectedDocumentLabel(filePath)} conversion produced no text.`);
|
|
62
|
+
}
|
|
63
|
+
if (cachePath) {
|
|
64
|
+
mkdirSync(path.dirname(cachePath), { recursive: true });
|
|
65
|
+
writeFileSync(cachePath, markdown, "utf-8");
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
sourcePath: filePath,
|
|
69
|
+
sourceExt: ext,
|
|
70
|
+
text: markdown,
|
|
71
|
+
sizeBytes: stat.size,
|
|
72
|
+
mtimeMs: Math.trunc(stat.mtimeMs),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=document-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-projection.js","sourceRoot":"","sources":["../src/document-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LogEntry } from "./log-entry.js";
|
|
2
|
+
import { type InternalMessage } from "./log-projection.js";
|
|
3
|
+
export interface EphemeralLogState {
|
|
4
|
+
entries: LogEntry[];
|
|
5
|
+
getMessages: () => InternalMessage[];
|
|
6
|
+
appendEntry: (entry: LogEntry) => void;
|
|
7
|
+
allocId: (type: LogEntry["type"]) => string;
|
|
8
|
+
allocateContextId: () => string;
|
|
9
|
+
computeNextRoundIndex: () => number;
|
|
10
|
+
}
|
|
11
|
+
export declare function createEphemeralLogState(initialMessages: InternalMessage[], opts?: {
|
|
12
|
+
requiresAlternatingRoles?: boolean;
|
|
13
|
+
turnIndex?: number;
|
|
14
|
+
}): EphemeralLogState;
|
|
15
|
+
//# sourceMappingURL=ephemeral-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ephemeral-log.d.ts","sourceRoot":"","sources":["../src/ephemeral-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY/C,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,eAAe,EAAE,CAAC;IACrC,WAAW,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;IAC5C,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,qBAAqB,EAAE,MAAM,MAAM,CAAC;CACrC;AAED,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,eAAe,EAAE,EAClC,IAAI,CAAC,EAAE;IACL,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,iBAAiB,CAsLnB"}
|