@celljs/ta-web 0.0.0-stage → 4.6.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 +83 -2
- package/esm/browser/assistant/assistant-export.d.ts +13 -0
- package/esm/browser/assistant/assistant-export.js +33 -0
- package/esm/browser/assistant/assistant-export.js.map +1 -0
- package/esm/browser/assistant/assistant-extension.d.ts +20 -0
- package/esm/browser/assistant/assistant-extension.js +153 -0
- package/esm/browser/assistant/assistant-extension.js.map +1 -0
- package/esm/browser/assistant/assistant-hooks.d.ts +8 -0
- package/esm/browser/assistant/assistant-hooks.js +55 -0
- package/esm/browser/assistant/assistant-hooks.js.map +1 -0
- package/esm/browser/assistant/assistant-protocol.d.ts +51 -0
- package/esm/browser/assistant/assistant-protocol.js +2 -0
- package/esm/browser/assistant/assistant-protocol.js.map +1 -0
- package/esm/browser/assistant/assistant-tasks.d.ts +48 -0
- package/esm/browser/assistant/assistant-tasks.js +115 -0
- package/esm/browser/assistant/assistant-tasks.js.map +1 -0
- package/esm/browser/assistant/assistant-view.d.ts +21 -0
- package/esm/browser/assistant/assistant-view.js +324 -0
- package/esm/browser/assistant/assistant-view.js.map +1 -0
- package/esm/browser/assistant/assistant.d.ts +51 -0
- package/esm/browser/assistant/assistant.js +302 -0
- package/esm/browser/assistant/assistant.js.map +1 -0
- package/esm/browser/assistant/voice.d.ts +14 -0
- package/esm/browser/assistant/voice.js +72 -0
- package/esm/browser/assistant/voice.js.map +1 -0
- package/esm/browser/avatar/dino-avatar.d.ts +139 -0
- package/esm/browser/avatar/dino-avatar.js +420 -0
- package/esm/browser/avatar/dino-avatar.js.map +1 -0
- package/esm/browser/avatar/dino-motion.d.ts +24 -0
- package/esm/browser/avatar/dino-motion.js +295 -0
- package/esm/browser/avatar/dino-motion.js.map +1 -0
- package/esm/browser/chat/chat-protocol.d.ts +46 -0
- package/esm/browser/chat/chat-protocol.js +2 -0
- package/esm/browser/chat/chat-protocol.js.map +1 -0
- package/esm/browser/chat/chat-view.d.ts +15 -0
- package/esm/browser/chat/chat-view.js +87 -0
- package/esm/browser/chat/chat-view.js.map +1 -0
- package/esm/browser/chat/chat.d.ts +69 -0
- package/esm/browser/chat/chat.js +343 -0
- package/esm/browser/chat/chat.js.map +1 -0
- package/esm/browser/components/account-menu.d.ts +8 -0
- package/esm/browser/components/account-menu.js +82 -0
- package/esm/browser/components/account-menu.js.map +1 -0
- package/esm/browser/components/agent-settings-view.d.ts +23 -0
- package/esm/browser/components/agent-settings-view.js +105 -0
- package/esm/browser/components/agent-settings-view.js.map +1 -0
- package/esm/browser/components/app-view.d.ts +9 -0
- package/esm/browser/components/app-view.js +405 -0
- package/esm/browser/components/app-view.js.map +1 -0
- package/esm/browser/components/auth-pictures.d.ts +6 -0
- package/esm/browser/components/auth-pictures.js +37 -0
- package/esm/browser/components/auth-pictures.js.map +1 -0
- package/esm/browser/components/auth-view.d.ts +54 -0
- package/esm/browser/components/auth-view.js +300 -0
- package/esm/browser/components/auth-view.js.map +1 -0
- package/esm/browser/components/callout.d.ts +18 -0
- package/esm/browser/components/callout.js +17 -0
- package/esm/browser/components/callout.js.map +1 -0
- package/esm/browser/components/chat-list.d.ts +52 -0
- package/esm/browser/components/chat-list.js +189 -0
- package/esm/browser/components/chat-list.js.map +1 -0
- package/esm/browser/components/code-editor.d.ts +7 -0
- package/esm/browser/components/code-editor.js +85 -0
- package/esm/browser/components/code-editor.js.map +1 -0
- package/esm/browser/components/composer-box.d.ts +73 -0
- package/esm/browser/components/composer-box.js +297 -0
- package/esm/browser/components/composer-box.js.map +1 -0
- package/esm/browser/components/composer-menu.d.ts +17 -0
- package/esm/browser/components/composer-menu.js +18 -0
- package/esm/browser/components/composer-menu.js.map +1 -0
- package/esm/browser/components/composer.d.ts +37 -0
- package/esm/browser/components/composer.js +99 -0
- package/esm/browser/components/composer.js.map +1 -0
- package/esm/browser/components/connection-bar.d.ts +6 -0
- package/esm/browser/components/connection-bar.js +73 -0
- package/esm/browser/components/connection-bar.js.map +1 -0
- package/esm/browser/components/context-menu.d.ts +12 -0
- package/esm/browser/components/context-menu.js +68 -0
- package/esm/browser/components/context-menu.js.map +1 -0
- package/esm/browser/components/conversation-scroll.d.ts +13 -0
- package/esm/browser/components/conversation-scroll.js +121 -0
- package/esm/browser/components/conversation-scroll.js.map +1 -0
- package/esm/browser/components/dialog-view.d.ts +9 -0
- package/esm/browser/components/dialog-view.js +41 -0
- package/esm/browser/components/dialog-view.js.map +1 -0
- package/esm/browser/components/diff-editor.d.ts +10 -0
- package/esm/browser/components/diff-editor.js +101 -0
- package/esm/browser/components/diff-editor.js.map +1 -0
- package/esm/browser/components/diff-view.d.ts +4 -0
- package/esm/browser/components/diff-view.js +11 -0
- package/esm/browser/components/diff-view.js.map +1 -0
- package/esm/browser/components/dino.d.ts +8 -0
- package/esm/browser/components/dino.js +14 -0
- package/esm/browser/components/dino.js.map +1 -0
- package/esm/browser/components/editor-area.d.ts +28 -0
- package/esm/browser/components/editor-area.js +134 -0
- package/esm/browser/components/editor-area.js.map +1 -0
- package/esm/browser/components/folder-picker.d.ts +28 -0
- package/esm/browser/components/folder-picker.js +106 -0
- package/esm/browser/components/folder-picker.js.map +1 -0
- package/esm/browser/components/fork-view.d.ts +14 -0
- package/esm/browser/components/fork-view.js +43 -0
- package/esm/browser/components/fork-view.js.map +1 -0
- package/esm/browser/components/hero-cards.d.ts +20 -0
- package/esm/browser/components/hero-cards.js +109 -0
- package/esm/browser/components/hero-cards.js.map +1 -0
- package/esm/browser/components/icon.d.ts +29 -0
- package/esm/browser/components/icon.js +23 -0
- package/esm/browser/components/icon.js.map +1 -0
- package/esm/browser/components/link-dialog.d.ts +3 -0
- package/esm/browser/components/link-dialog.js +45 -0
- package/esm/browser/components/link-dialog.js.map +1 -0
- package/esm/browser/components/link.d.ts +19 -0
- package/esm/browser/components/link.js +56 -0
- package/esm/browser/components/link.js.map +1 -0
- package/esm/browser/components/manage-menu.d.ts +13 -0
- package/esm/browser/components/manage-menu.js +96 -0
- package/esm/browser/components/manage-menu.js.map +1 -0
- package/esm/browser/components/markdown.d.ts +9 -0
- package/esm/browser/components/markdown.js +98 -0
- package/esm/browser/components/markdown.js.map +1 -0
- package/esm/browser/components/math.d.ts +10 -0
- package/esm/browser/components/math.js +21 -0
- package/esm/browser/components/math.js.map +1 -0
- package/esm/browser/components/media.d.ts +11 -0
- package/esm/browser/components/media.js +76 -0
- package/esm/browser/components/media.js.map +1 -0
- package/esm/browser/components/mermaid-view.d.ts +10 -0
- package/esm/browser/components/mermaid-view.js +84 -0
- package/esm/browser/components/mermaid-view.js.map +1 -0
- package/esm/browser/components/message-actions.d.ts +12 -0
- package/esm/browser/components/message-actions.js +78 -0
- package/esm/browser/components/message-actions.js.map +1 -0
- package/esm/browser/components/message-footer.d.ts +29 -0
- package/esm/browser/components/message-footer.js +86 -0
- package/esm/browser/components/message-footer.js.map +1 -0
- package/esm/browser/components/message-list.d.ts +37 -0
- package/esm/browser/components/message-list.js +216 -0
- package/esm/browser/components/message-list.js.map +1 -0
- package/esm/browser/components/notice-center.d.ts +3 -0
- package/esm/browser/components/notice-center.js +114 -0
- package/esm/browser/components/notice-center.js.map +1 -0
- package/esm/browser/components/relay-view.d.ts +5 -0
- package/esm/browser/components/relay-view.js +114 -0
- package/esm/browser/components/relay-view.js.map +1 -0
- package/esm/browser/components/run-status.d.ts +9 -0
- package/esm/browser/components/run-status.js +54 -0
- package/esm/browser/components/run-status.js.map +1 -0
- package/esm/browser/components/session-settings.d.ts +37 -0
- package/esm/browser/components/session-settings.js +84 -0
- package/esm/browser/components/session-settings.js.map +1 -0
- package/esm/browser/components/session-view.d.ts +24 -0
- package/esm/browser/components/session-view.js +84 -0
- package/esm/browser/components/session-view.js.map +1 -0
- package/esm/browser/components/settings-controls.d.ts +40 -0
- package/esm/browser/components/settings-controls.js +28 -0
- package/esm/browser/components/settings-controls.js.map +1 -0
- package/esm/browser/components/settings-view.d.ts +22 -0
- package/esm/browser/components/settings-view.js +357 -0
- package/esm/browser/components/settings-view.js.map +1 -0
- package/esm/browser/components/split-pane.d.ts +24 -0
- package/esm/browser/components/split-pane.js +75 -0
- package/esm/browser/components/split-pane.js.map +1 -0
- package/esm/browser/components/ta-avatar.d.ts +13 -0
- package/esm/browser/components/ta-avatar.js +185 -0
- package/esm/browser/components/ta-avatar.js.map +1 -0
- package/esm/browser/components/tool-view.d.ts +18 -0
- package/esm/browser/components/tool-view.js +110 -0
- package/esm/browser/components/tool-view.js.map +1 -0
- package/esm/browser/components/trusted-domains.d.ts +3 -0
- package/esm/browser/components/trusted-domains.js +39 -0
- package/esm/browser/components/trusted-domains.js.map +1 -0
- package/esm/browser/components/web-composer.d.ts +14 -0
- package/esm/browser/components/web-composer.js +22 -0
- package/esm/browser/components/web-composer.js.map +1 -0
- package/esm/browser/components/web-dialog.d.ts +4 -0
- package/esm/browser/components/web-dialog.js +22 -0
- package/esm/browser/components/web-dialog.js.map +1 -0
- package/esm/browser/components/workbench-toggle.d.ts +12 -0
- package/esm/browser/components/workbench-toggle.js +17 -0
- package/esm/browser/components/workbench-toggle.js.map +1 -0
- package/esm/browser/components/workbench-view.d.ts +8 -0
- package/esm/browser/components/workbench-view.js +62 -0
- package/esm/browser/components/workbench-view.js.map +1 -0
- package/esm/browser/components/working-directory.d.ts +5 -0
- package/esm/browser/components/working-directory.js +25 -0
- package/esm/browser/components/working-directory.js.map +1 -0
- package/esm/browser/editor/monaco-loader.d.ts +60 -0
- package/esm/browser/editor/monaco-loader.js +135 -0
- package/esm/browser/editor/monaco-loader.js.map +1 -0
- package/esm/browser/editor/monaco.d.ts +45 -0
- package/esm/browser/editor/monaco.js +54 -0
- package/esm/browser/editor/monaco.js.map +1 -0
- package/esm/browser/extension/extension-view.d.ts +35 -0
- package/esm/browser/extension/extension-view.js +53 -0
- package/esm/browser/extension/extension-view.js.map +1 -0
- package/esm/browser/extension/icons.d.ts +3 -0
- package/esm/browser/extension/icons.js +82 -0
- package/esm/browser/extension/icons.js.map +1 -0
- package/esm/browser/extension/web-extension-api.d.ts +362 -0
- package/esm/browser/extension/web-extension-api.js +2 -0
- package/esm/browser/extension/web-extension-api.js.map +1 -0
- package/esm/browser/extension/web-extension-protocol.d.ts +132 -0
- package/esm/browser/extension/web-extension-protocol.js +10 -0
- package/esm/browser/extension/web-extension-protocol.js.map +1 -0
- package/esm/browser/extension/web-extensions.d.ts +118 -0
- package/esm/browser/extension/web-extensions.js +654 -0
- package/esm/browser/extension/web-extensions.js.map +1 -0
- package/esm/browser/hooks.d.ts +21 -0
- package/esm/browser/hooks.js +65 -0
- package/esm/browser/hooks.js.map +1 -0
- package/esm/browser/i18n/locales.d.ts +435 -0
- package/esm/browser/i18n/locales.js +35 -0
- package/esm/browser/i18n/locales.js.map +1 -0
- package/esm/browser/i18n/messages.d.ts +427 -0
- package/esm/browser/i18n/messages.js +858 -0
- package/esm/browser/i18n/messages.js.map +1 -0
- package/esm/browser/i18n/use-t.d.ts +7 -0
- package/esm/browser/i18n/use-t.js +18 -0
- package/esm/browser/i18n/use-t.js.map +1 -0
- package/esm/browser/index.d.ts +52 -0
- package/esm/browser/index.js +53 -0
- package/esm/browser/index.js.map +1 -0
- package/esm/browser/links/links-protocol.d.ts +35 -0
- package/esm/browser/links/links-protocol.js +2 -0
- package/esm/browser/links/links-protocol.js.map +1 -0
- package/esm/browser/links/links.d.ts +32 -0
- package/esm/browser/links/links.js +141 -0
- package/esm/browser/links/links.js.map +1 -0
- package/esm/browser/markdown/hooks.d.ts +6 -0
- package/esm/browser/markdown/hooks.js +21 -0
- package/esm/browser/markdown/hooks.js.map +1 -0
- package/esm/browser/markdown/lazy.d.ts +21 -0
- package/esm/browser/markdown/lazy.js +39 -0
- package/esm/browser/markdown/lazy.js.map +1 -0
- package/esm/browser/markdown/math.d.ts +18 -0
- package/esm/browser/markdown/math.js +30 -0
- package/esm/browser/markdown/math.js.map +1 -0
- package/esm/browser/markdown/mermaid.d.ts +20 -0
- package/esm/browser/markdown/mermaid.js +84 -0
- package/esm/browser/markdown/mermaid.js.map +1 -0
- package/esm/browser/module.d.ts +4 -0
- package/esm/browser/module.js +6 -0
- package/esm/browser/module.js.map +1 -0
- package/esm/browser/notices/notices-protocol.d.ts +82 -0
- package/esm/browser/notices/notices-protocol.js +2 -0
- package/esm/browser/notices/notices-protocol.js.map +1 -0
- package/esm/browser/notices/notices.d.ts +47 -0
- package/esm/browser/notices/notices.js +162 -0
- package/esm/browser/notices/notices.js.map +1 -0
- package/esm/browser/pwa/pwa-protocol.d.ts +20 -0
- package/esm/browser/pwa/pwa-protocol.js +2 -0
- package/esm/browser/pwa/pwa-protocol.js.map +1 -0
- package/esm/browser/pwa/pwa.d.ts +39 -0
- package/esm/browser/pwa/pwa.js +120 -0
- package/esm/browser/pwa/pwa.js.map +1 -0
- package/esm/browser/settings/agent-settings.d.ts +33 -0
- package/esm/browser/settings/agent-settings.js +85 -0
- package/esm/browser/settings/agent-settings.js.map +1 -0
- package/esm/browser/settings/settings-protocol.d.ts +44 -0
- package/esm/browser/settings/settings-protocol.js +35 -0
- package/esm/browser/settings/settings-protocol.js.map +1 -0
- package/esm/browser/settings/settings.d.ts +31 -0
- package/esm/browser/settings/settings.js +102 -0
- package/esm/browser/settings/settings.js.map +1 -0
- package/esm/browser/state/state-protocol.d.ts +48 -0
- package/esm/browser/state/state-protocol.js +32 -0
- package/esm/browser/state/state-protocol.js.map +1 -0
- package/esm/browser/state/state.d.ts +39 -0
- package/esm/browser/state/state.js +210 -0
- package/esm/browser/state/state.js.map +1 -0
- package/esm/browser/style/base.d.ts +2 -0
- package/esm/browser/style/base.js +140 -0
- package/esm/browser/style/base.js.map +1 -0
- package/esm/browser/style/conversation.d.ts +2 -0
- package/esm/browser/style/conversation.js +201 -0
- package/esm/browser/style/conversation.js.map +1 -0
- package/esm/browser/style/layout.d.ts +2 -0
- package/esm/browser/style/layout.js +371 -0
- package/esm/browser/style/layout.js.map +1 -0
- package/esm/browser/style/pages.d.ts +2 -0
- package/esm/browser/style/pages.js +75 -0
- package/esm/browser/style/pages.js.map +1 -0
- package/esm/browser/style/shell.d.ts +2 -0
- package/esm/browser/style/shell.js +236 -0
- package/esm/browser/style/shell.js.map +1 -0
- package/esm/browser/style.d.ts +5 -0
- package/esm/browser/style.js +11 -0
- package/esm/browser/style.js.map +1 -0
- package/esm/browser/util/composer.d.ts +85 -0
- package/esm/browser/util/composer.js +121 -0
- package/esm/browser/util/composer.js.map +1 -0
- package/esm/browser/util/diff.d.ts +17 -0
- package/esm/browser/util/diff.js +29 -0
- package/esm/browser/util/diff.js.map +1 -0
- package/esm/browser/util/frame.d.ts +32 -0
- package/esm/browser/util/frame.js +47 -0
- package/esm/browser/util/frame.js.map +1 -0
- package/esm/browser/util/layout.d.ts +26 -0
- package/esm/browser/util/layout.js +54 -0
- package/esm/browser/util/layout.js.map +1 -0
- package/esm/browser/util/link.d.ts +53 -0
- package/esm/browser/util/link.js +229 -0
- package/esm/browser/util/link.js.map +1 -0
- package/esm/browser/util/markdown.d.ts +86 -0
- package/esm/browser/util/markdown.js +330 -0
- package/esm/browser/util/markdown.js.map +1 -0
- package/esm/browser/util/message.d.ts +74 -0
- package/esm/browser/util/message.js +143 -0
- package/esm/browser/util/message.js.map +1 -0
- package/esm/browser/util/process.d.ts +73 -0
- package/esm/browser/util/process.js +135 -0
- package/esm/browser/util/process.js.map +1 -0
- package/esm/browser/util/progress.d.ts +50 -0
- package/esm/browser/util/progress.js +143 -0
- package/esm/browser/util/progress.js.map +1 -0
- package/esm/browser/util/qr-code.d.ts +37 -0
- package/esm/browser/util/qr-code.js +349 -0
- package/esm/browser/util/qr-code.js.map +1 -0
- package/esm/browser/util/tool.d.ts +41 -0
- package/esm/browser/util/tool.js +151 -0
- package/esm/browser/util/tool.js.map +1 -0
- package/esm/browser/view.d.ts +3 -0
- package/esm/browser/view.js +16 -0
- package/esm/browser/view.js.map +1 -0
- package/esm/browser/workbench-protocol.d.ts +50 -0
- package/esm/browser/workbench-protocol.js +2 -0
- package/esm/browser/workbench-protocol.js.map +1 -0
- package/esm/browser/workbench.d.ts +63 -0
- package/esm/browser/workbench.js +278 -0
- package/esm/browser/workbench.js.map +1 -0
- package/esm/package.json +3 -0
- package/lib/browser/assistant/assistant-export.d.ts +14 -0
- package/lib/browser/assistant/assistant-export.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-export.js +36 -0
- package/lib/browser/assistant/assistant-export.js.map +1 -0
- package/lib/browser/assistant/assistant-export.spec.d.ts +2 -0
- package/lib/browser/assistant/assistant-export.spec.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-export.spec.js +27 -0
- package/lib/browser/assistant/assistant-export.spec.js.map +1 -0
- package/lib/browser/assistant/assistant-extension.d.ts +21 -0
- package/lib/browser/assistant/assistant-extension.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-extension.js +189 -0
- package/lib/browser/assistant/assistant-extension.js.map +1 -0
- package/lib/browser/assistant/assistant-extension.spec.d.ts +2 -0
- package/lib/browser/assistant/assistant-extension.spec.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-extension.spec.js +121 -0
- package/lib/browser/assistant/assistant-extension.spec.js.map +1 -0
- package/lib/browser/assistant/assistant-hooks.d.ts +9 -0
- package/lib/browser/assistant/assistant-hooks.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-hooks.js +94 -0
- package/lib/browser/assistant/assistant-hooks.js.map +1 -0
- package/lib/browser/assistant/assistant-protocol.d.ts +52 -0
- package/lib/browser/assistant/assistant-protocol.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-protocol.js +5 -0
- package/lib/browser/assistant/assistant-protocol.js.map +1 -0
- package/lib/browser/assistant/assistant-tasks.d.ts +49 -0
- package/lib/browser/assistant/assistant-tasks.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-tasks.js +158 -0
- package/lib/browser/assistant/assistant-tasks.js.map +1 -0
- package/lib/browser/assistant/assistant-view.d.ts +22 -0
- package/lib/browser/assistant/assistant-view.d.ts.map +1 -0
- package/lib/browser/assistant/assistant-view.js +365 -0
- package/lib/browser/assistant/assistant-view.js.map +1 -0
- package/lib/browser/assistant/assistant.d.ts +52 -0
- package/lib/browser/assistant/assistant.d.ts.map +1 -0
- package/lib/browser/assistant/assistant.js +305 -0
- package/lib/browser/assistant/assistant.js.map +1 -0
- package/lib/browser/assistant/assistant.spec.d.ts +2 -0
- package/lib/browser/assistant/assistant.spec.d.ts.map +1 -0
- package/lib/browser/assistant/assistant.spec.js +80 -0
- package/lib/browser/assistant/assistant.spec.js.map +1 -0
- package/lib/browser/assistant/voice.d.ts +15 -0
- package/lib/browser/assistant/voice.d.ts.map +1 -0
- package/lib/browser/assistant/voice.js +75 -0
- package/lib/browser/assistant/voice.js.map +1 -0
- package/lib/browser/assistant/voice.spec.d.ts +2 -0
- package/lib/browser/assistant/voice.spec.d.ts.map +1 -0
- package/lib/browser/assistant/voice.spec.js +10 -0
- package/lib/browser/assistant/voice.spec.js.map +1 -0
- package/lib/browser/avatar/dino-avatar.d.ts +140 -0
- package/lib/browser/avatar/dino-avatar.d.ts.map +1 -0
- package/lib/browser/avatar/dino-avatar.js +429 -0
- package/lib/browser/avatar/dino-avatar.js.map +1 -0
- package/lib/browser/avatar/dino-avatar.spec.d.ts +2 -0
- package/lib/browser/avatar/dino-avatar.spec.d.ts.map +1 -0
- package/lib/browser/avatar/dino-avatar.spec.js +143 -0
- package/lib/browser/avatar/dino-avatar.spec.js.map +1 -0
- package/lib/browser/avatar/dino-motion.d.ts +25 -0
- package/lib/browser/avatar/dino-motion.d.ts.map +1 -0
- package/lib/browser/avatar/dino-motion.js +298 -0
- package/lib/browser/avatar/dino-motion.js.map +1 -0
- package/lib/browser/chat/chat-protocol.d.ts +47 -0
- package/lib/browser/chat/chat-protocol.d.ts.map +1 -0
- package/lib/browser/chat/chat-protocol.js +5 -0
- package/lib/browser/chat/chat-protocol.js.map +1 -0
- package/lib/browser/chat/chat-view.d.ts +16 -0
- package/lib/browser/chat/chat-view.d.ts.map +1 -0
- package/lib/browser/chat/chat-view.js +125 -0
- package/lib/browser/chat/chat-view.js.map +1 -0
- package/lib/browser/chat/chat.d.ts +70 -0
- package/lib/browser/chat/chat.d.ts.map +1 -0
- package/lib/browser/chat/chat.js +346 -0
- package/lib/browser/chat/chat.js.map +1 -0
- package/lib/browser/chat/chat.spec.d.ts +2 -0
- package/lib/browser/chat/chat.spec.d.ts.map +1 -0
- package/lib/browser/chat/chat.spec.js +185 -0
- package/lib/browser/chat/chat.spec.js.map +1 -0
- package/lib/browser/components/account-menu.d.ts +9 -0
- package/lib/browser/components/account-menu.d.ts.map +1 -0
- package/lib/browser/components/account-menu.js +119 -0
- package/lib/browser/components/account-menu.js.map +1 -0
- package/lib/browser/components/agent-settings-view.d.ts +24 -0
- package/lib/browser/components/agent-settings-view.d.ts.map +1 -0
- package/lib/browser/components/agent-settings-view.js +143 -0
- package/lib/browser/components/agent-settings-view.js.map +1 -0
- package/lib/browser/components/app-view.d.ts +10 -0
- package/lib/browser/components/app-view.d.ts.map +1 -0
- package/lib/browser/components/app-view.js +441 -0
- package/lib/browser/components/app-view.js.map +1 -0
- package/lib/browser/components/auth-pictures.d.ts +7 -0
- package/lib/browser/components/auth-pictures.d.ts.map +1 -0
- package/lib/browser/components/auth-pictures.js +73 -0
- package/lib/browser/components/auth-pictures.js.map +1 -0
- package/lib/browser/components/auth-view.d.ts +55 -0
- package/lib/browser/components/auth-view.d.ts.map +1 -0
- package/lib/browser/components/auth-view.js +340 -0
- package/lib/browser/components/auth-view.js.map +1 -0
- package/lib/browser/components/callout.d.ts +19 -0
- package/lib/browser/components/callout.d.ts.map +1 -0
- package/lib/browser/components/callout.js +54 -0
- package/lib/browser/components/callout.js.map +1 -0
- package/lib/browser/components/chat-list.d.ts +53 -0
- package/lib/browser/components/chat-list.d.ts.map +1 -0
- package/lib/browser/components/chat-list.js +226 -0
- package/lib/browser/components/chat-list.js.map +1 -0
- package/lib/browser/components/chat-list.spec.d.ts +2 -0
- package/lib/browser/components/chat-list.spec.d.ts.map +1 -0
- package/lib/browser/components/chat-list.spec.js +61 -0
- package/lib/browser/components/chat-list.spec.js.map +1 -0
- package/lib/browser/components/code-editor.d.ts +8 -0
- package/lib/browser/components/code-editor.d.ts.map +1 -0
- package/lib/browser/components/code-editor.js +121 -0
- package/lib/browser/components/code-editor.js.map +1 -0
- package/lib/browser/components/composer-box.d.ts +74 -0
- package/lib/browser/components/composer-box.d.ts.map +1 -0
- package/lib/browser/components/composer-box.js +334 -0
- package/lib/browser/components/composer-box.js.map +1 -0
- package/lib/browser/components/composer-menu.d.ts +18 -0
- package/lib/browser/components/composer-menu.d.ts.map +1 -0
- package/lib/browser/components/composer-menu.js +54 -0
- package/lib/browser/components/composer-menu.js.map +1 -0
- package/lib/browser/components/composer.d.ts +38 -0
- package/lib/browser/components/composer.d.ts.map +1 -0
- package/lib/browser/components/composer.js +135 -0
- package/lib/browser/components/composer.js.map +1 -0
- package/lib/browser/components/composer.spec.d.ts +2 -0
- package/lib/browser/components/composer.spec.d.ts.map +1 -0
- package/lib/browser/components/composer.spec.js +129 -0
- package/lib/browser/components/composer.spec.js.map +1 -0
- package/lib/browser/components/connection-bar.d.ts +7 -0
- package/lib/browser/components/connection-bar.d.ts.map +1 -0
- package/lib/browser/components/connection-bar.js +109 -0
- package/lib/browser/components/connection-bar.js.map +1 -0
- package/lib/browser/components/context-menu.d.ts +13 -0
- package/lib/browser/components/context-menu.d.ts.map +1 -0
- package/lib/browser/components/context-menu.js +104 -0
- package/lib/browser/components/context-menu.js.map +1 -0
- package/lib/browser/components/conversation-scroll.d.ts +14 -0
- package/lib/browser/components/conversation-scroll.d.ts.map +1 -0
- package/lib/browser/components/conversation-scroll.js +158 -0
- package/lib/browser/components/conversation-scroll.js.map +1 -0
- package/lib/browser/components/dialog-view.d.ts +10 -0
- package/lib/browser/components/dialog-view.d.ts.map +1 -0
- package/lib/browser/components/dialog-view.js +77 -0
- package/lib/browser/components/dialog-view.js.map +1 -0
- package/lib/browser/components/diff-editor.d.ts +11 -0
- package/lib/browser/components/diff-editor.d.ts.map +1 -0
- package/lib/browser/components/diff-editor.js +137 -0
- package/lib/browser/components/diff-editor.js.map +1 -0
- package/lib/browser/components/diff-view.d.ts +5 -0
- package/lib/browser/components/diff-view.d.ts.map +1 -0
- package/lib/browser/components/diff-view.js +47 -0
- package/lib/browser/components/diff-view.js.map +1 -0
- package/lib/browser/components/dino.d.ts +9 -0
- package/lib/browser/components/dino.d.ts.map +1 -0
- package/lib/browser/components/dino.js +52 -0
- package/lib/browser/components/dino.js.map +1 -0
- package/lib/browser/components/editor-area.d.ts +29 -0
- package/lib/browser/components/editor-area.d.ts.map +1 -0
- package/lib/browser/components/editor-area.js +171 -0
- package/lib/browser/components/editor-area.js.map +1 -0
- package/lib/browser/components/folder-picker.d.ts +29 -0
- package/lib/browser/components/folder-picker.d.ts.map +1 -0
- package/lib/browser/components/folder-picker.js +144 -0
- package/lib/browser/components/folder-picker.js.map +1 -0
- package/lib/browser/components/folder-picker.spec.d.ts +2 -0
- package/lib/browser/components/folder-picker.spec.d.ts.map +1 -0
- package/lib/browser/components/folder-picker.spec.js +28 -0
- package/lib/browser/components/folder-picker.spec.js.map +1 -0
- package/lib/browser/components/fork-view.d.ts +15 -0
- package/lib/browser/components/fork-view.d.ts.map +1 -0
- package/lib/browser/components/fork-view.js +79 -0
- package/lib/browser/components/fork-view.js.map +1 -0
- package/lib/browser/components/hero-cards.d.ts +21 -0
- package/lib/browser/components/hero-cards.d.ts.map +1 -0
- package/lib/browser/components/hero-cards.js +146 -0
- package/lib/browser/components/hero-cards.js.map +1 -0
- package/lib/browser/components/icon.d.ts +30 -0
- package/lib/browser/components/icon.d.ts.map +1 -0
- package/lib/browser/components/icon.js +61 -0
- package/lib/browser/components/icon.js.map +1 -0
- package/lib/browser/components/link-dialog.d.ts +4 -0
- package/lib/browser/components/link-dialog.d.ts.map +1 -0
- package/lib/browser/components/link-dialog.js +81 -0
- package/lib/browser/components/link-dialog.js.map +1 -0
- package/lib/browser/components/link.d.ts +20 -0
- package/lib/browser/components/link.d.ts.map +1 -0
- package/lib/browser/components/link.js +94 -0
- package/lib/browser/components/link.js.map +1 -0
- package/lib/browser/components/manage-menu.d.ts +14 -0
- package/lib/browser/components/manage-menu.d.ts.map +1 -0
- package/lib/browser/components/manage-menu.js +132 -0
- package/lib/browser/components/manage-menu.js.map +1 -0
- package/lib/browser/components/markdown.d.ts +10 -0
- package/lib/browser/components/markdown.d.ts.map +1 -0
- package/lib/browser/components/markdown.js +135 -0
- package/lib/browser/components/markdown.js.map +1 -0
- package/lib/browser/components/markdown.spec.d.ts +2 -0
- package/lib/browser/components/markdown.spec.d.ts.map +1 -0
- package/lib/browser/components/markdown.spec.js +72 -0
- package/lib/browser/components/markdown.spec.js.map +1 -0
- package/lib/browser/components/math.d.ts +11 -0
- package/lib/browser/components/math.d.ts.map +1 -0
- package/lib/browser/components/math.js +57 -0
- package/lib/browser/components/math.js.map +1 -0
- package/lib/browser/components/media.d.ts +12 -0
- package/lib/browser/components/media.d.ts.map +1 -0
- package/lib/browser/components/media.js +113 -0
- package/lib/browser/components/media.js.map +1 -0
- package/lib/browser/components/mermaid-view.d.ts +11 -0
- package/lib/browser/components/mermaid-view.d.ts.map +1 -0
- package/lib/browser/components/mermaid-view.js +120 -0
- package/lib/browser/components/mermaid-view.js.map +1 -0
- package/lib/browser/components/message-actions.d.ts +13 -0
- package/lib/browser/components/message-actions.d.ts.map +1 -0
- package/lib/browser/components/message-actions.js +114 -0
- package/lib/browser/components/message-actions.js.map +1 -0
- package/lib/browser/components/message-footer.d.ts +30 -0
- package/lib/browser/components/message-footer.d.ts.map +1 -0
- package/lib/browser/components/message-footer.js +124 -0
- package/lib/browser/components/message-footer.js.map +1 -0
- package/lib/browser/components/message-list.d.ts +38 -0
- package/lib/browser/components/message-list.d.ts.map +1 -0
- package/lib/browser/components/message-list.js +257 -0
- package/lib/browser/components/message-list.js.map +1 -0
- package/lib/browser/components/message-list.spec.d.ts +2 -0
- package/lib/browser/components/message-list.spec.d.ts.map +1 -0
- package/lib/browser/components/message-list.spec.js +269 -0
- package/lib/browser/components/message-list.spec.js.map +1 -0
- package/lib/browser/components/notice-center.d.ts +4 -0
- package/lib/browser/components/notice-center.d.ts.map +1 -0
- package/lib/browser/components/notice-center.js +150 -0
- package/lib/browser/components/notice-center.js.map +1 -0
- package/lib/browser/components/relay-view.d.ts +6 -0
- package/lib/browser/components/relay-view.d.ts.map +1 -0
- package/lib/browser/components/relay-view.js +150 -0
- package/lib/browser/components/relay-view.js.map +1 -0
- package/lib/browser/components/run-status.d.ts +10 -0
- package/lib/browser/components/run-status.d.ts.map +1 -0
- package/lib/browser/components/run-status.js +90 -0
- package/lib/browser/components/run-status.js.map +1 -0
- package/lib/browser/components/session-settings.d.ts +38 -0
- package/lib/browser/components/session-settings.d.ts.map +1 -0
- package/lib/browser/components/session-settings.js +121 -0
- package/lib/browser/components/session-settings.js.map +1 -0
- package/lib/browser/components/session-settings.spec.d.ts +2 -0
- package/lib/browser/components/session-settings.spec.d.ts.map +1 -0
- package/lib/browser/components/session-settings.spec.js +47 -0
- package/lib/browser/components/session-settings.spec.js.map +1 -0
- package/lib/browser/components/session-view.d.ts +25 -0
- package/lib/browser/components/session-view.d.ts.map +1 -0
- package/lib/browser/components/session-view.js +120 -0
- package/lib/browser/components/session-view.js.map +1 -0
- package/lib/browser/components/settings-controls.d.ts +41 -0
- package/lib/browser/components/settings-controls.d.ts.map +1 -0
- package/lib/browser/components/settings-controls.js +68 -0
- package/lib/browser/components/settings-controls.js.map +1 -0
- package/lib/browser/components/settings-view.d.ts +23 -0
- package/lib/browser/components/settings-view.d.ts.map +1 -0
- package/lib/browser/components/settings-view.js +394 -0
- package/lib/browser/components/settings-view.js.map +1 -0
- package/lib/browser/components/split-pane.d.ts +25 -0
- package/lib/browser/components/split-pane.d.ts.map +1 -0
- package/lib/browser/components/split-pane.js +113 -0
- package/lib/browser/components/split-pane.js.map +1 -0
- package/lib/browser/components/ta-avatar.d.ts +14 -0
- package/lib/browser/components/ta-avatar.d.ts.map +1 -0
- package/lib/browser/components/ta-avatar.js +221 -0
- package/lib/browser/components/ta-avatar.js.map +1 -0
- package/lib/browser/components/ta-avatar.spec.d.ts +2 -0
- package/lib/browser/components/ta-avatar.spec.d.ts.map +1 -0
- package/lib/browser/components/ta-avatar.spec.js +60 -0
- package/lib/browser/components/ta-avatar.spec.js.map +1 -0
- package/lib/browser/components/tool-view.d.ts +19 -0
- package/lib/browser/components/tool-view.d.ts.map +1 -0
- package/lib/browser/components/tool-view.js +146 -0
- package/lib/browser/components/tool-view.js.map +1 -0
- package/lib/browser/components/trusted-domains.d.ts +4 -0
- package/lib/browser/components/trusted-domains.d.ts.map +1 -0
- package/lib/browser/components/trusted-domains.js +75 -0
- package/lib/browser/components/trusted-domains.js.map +1 -0
- package/lib/browser/components/web-composer.d.ts +15 -0
- package/lib/browser/components/web-composer.d.ts.map +1 -0
- package/lib/browser/components/web-composer.js +58 -0
- package/lib/browser/components/web-composer.js.map +1 -0
- package/lib/browser/components/web-dialog.d.ts +5 -0
- package/lib/browser/components/web-dialog.d.ts.map +1 -0
- package/lib/browser/components/web-dialog.js +58 -0
- package/lib/browser/components/web-dialog.js.map +1 -0
- package/lib/browser/components/workbench-toggle.d.ts +13 -0
- package/lib/browser/components/workbench-toggle.d.ts.map +1 -0
- package/lib/browser/components/workbench-toggle.js +54 -0
- package/lib/browser/components/workbench-toggle.js.map +1 -0
- package/lib/browser/components/workbench-toggle.spec.d.ts +2 -0
- package/lib/browser/components/workbench-toggle.spec.d.ts.map +1 -0
- package/lib/browser/components/workbench-toggle.spec.js +64 -0
- package/lib/browser/components/workbench-toggle.spec.js.map +1 -0
- package/lib/browser/components/workbench-view.d.ts +9 -0
- package/lib/browser/components/workbench-view.d.ts.map +1 -0
- package/lib/browser/components/workbench-view.js +99 -0
- package/lib/browser/components/workbench-view.js.map +1 -0
- package/lib/browser/components/working-directory.d.ts +6 -0
- package/lib/browser/components/working-directory.d.ts.map +1 -0
- package/lib/browser/components/working-directory.js +61 -0
- package/lib/browser/components/working-directory.js.map +1 -0
- package/lib/browser/editor/monaco-loader.d.ts +61 -0
- package/lib/browser/editor/monaco-loader.d.ts.map +1 -0
- package/lib/browser/editor/monaco-loader.js +138 -0
- package/lib/browser/editor/monaco-loader.js.map +1 -0
- package/lib/browser/editor/monaco-loader.spec.d.ts +2 -0
- package/lib/browser/editor/monaco-loader.spec.d.ts.map +1 -0
- package/lib/browser/editor/monaco-loader.spec.js +39 -0
- package/lib/browser/editor/monaco-loader.spec.js.map +1 -0
- package/lib/browser/editor/monaco.d.ts +46 -0
- package/lib/browser/editor/monaco.d.ts.map +1 -0
- package/lib/browser/editor/monaco.js +93 -0
- package/lib/browser/editor/monaco.js.map +1 -0
- package/lib/browser/extension/extension-view.d.ts +36 -0
- package/lib/browser/extension/extension-view.d.ts.map +1 -0
- package/lib/browser/extension/extension-view.js +91 -0
- package/lib/browser/extension/extension-view.js.map +1 -0
- package/lib/browser/extension/icons.d.ts +4 -0
- package/lib/browser/extension/icons.d.ts.map +1 -0
- package/lib/browser/extension/icons.js +85 -0
- package/lib/browser/extension/icons.js.map +1 -0
- package/lib/browser/extension/web-extension-api.d.ts +363 -0
- package/lib/browser/extension/web-extension-api.d.ts.map +1 -0
- package/lib/browser/extension/web-extension-api.js +3 -0
- package/lib/browser/extension/web-extension-api.js.map +1 -0
- package/lib/browser/extension/web-extension-protocol.d.ts +133 -0
- package/lib/browser/extension/web-extension-protocol.d.ts.map +1 -0
- package/lib/browser/extension/web-extension-protocol.js +13 -0
- package/lib/browser/extension/web-extension-protocol.js.map +1 -0
- package/lib/browser/extension/web-extensions.d.ts +119 -0
- package/lib/browser/extension/web-extensions.d.ts.map +1 -0
- package/lib/browser/extension/web-extensions.js +690 -0
- package/lib/browser/extension/web-extensions.js.map +1 -0
- package/lib/browser/extension/web-extensions.spec.d.ts +2 -0
- package/lib/browser/extension/web-extensions.spec.d.ts.map +1 -0
- package/lib/browser/extension/web-extensions.spec.js +617 -0
- package/lib/browser/extension/web-extensions.spec.js.map +1 -0
- package/lib/browser/hooks.d.ts +22 -0
- package/lib/browser/hooks.d.ts.map +1 -0
- package/lib/browser/hooks.js +109 -0
- package/lib/browser/hooks.js.map +1 -0
- package/lib/browser/i18n/locales.d.ts +436 -0
- package/lib/browser/i18n/locales.d.ts.map +1 -0
- package/lib/browser/i18n/locales.js +38 -0
- package/lib/browser/i18n/locales.js.map +1 -0
- package/lib/browser/i18n/messages.d.ts +428 -0
- package/lib/browser/i18n/messages.d.ts.map +1 -0
- package/lib/browser/i18n/messages.js +862 -0
- package/lib/browser/i18n/messages.js.map +1 -0
- package/lib/browser/i18n/use-t.d.ts +8 -0
- package/lib/browser/i18n/use-t.d.ts.map +1 -0
- package/lib/browser/i18n/use-t.js +54 -0
- package/lib/browser/i18n/use-t.js.map +1 -0
- package/lib/browser/index.d.ts +53 -0
- package/lib/browser/index.d.ts.map +1 -0
- package/lib/browser/index.js +69 -0
- package/lib/browser/index.js.map +1 -0
- package/lib/browser/links/links-protocol.d.ts +36 -0
- package/lib/browser/links/links-protocol.d.ts.map +1 -0
- package/lib/browser/links/links-protocol.js +5 -0
- package/lib/browser/links/links-protocol.js.map +1 -0
- package/lib/browser/links/links.d.ts +33 -0
- package/lib/browser/links/links.d.ts.map +1 -0
- package/lib/browser/links/links.js +144 -0
- package/lib/browser/links/links.js.map +1 -0
- package/lib/browser/links/links.spec.d.ts +2 -0
- package/lib/browser/links/links.spec.d.ts.map +1 -0
- package/lib/browser/links/links.spec.js +123 -0
- package/lib/browser/links/links.spec.js.map +1 -0
- package/lib/browser/markdown/hooks.d.ts +7 -0
- package/lib/browser/markdown/hooks.d.ts.map +1 -0
- package/lib/browser/markdown/hooks.js +58 -0
- package/lib/browser/markdown/hooks.js.map +1 -0
- package/lib/browser/markdown/lazy.d.ts +22 -0
- package/lib/browser/markdown/lazy.d.ts.map +1 -0
- package/lib/browser/markdown/lazy.js +44 -0
- package/lib/browser/markdown/lazy.js.map +1 -0
- package/lib/browser/markdown/lazy.spec.d.ts +2 -0
- package/lib/browser/markdown/lazy.spec.d.ts.map +1 -0
- package/lib/browser/markdown/lazy.spec.js +35 -0
- package/lib/browser/markdown/lazy.spec.js.map +1 -0
- package/lib/browser/markdown/math.d.ts +19 -0
- package/lib/browser/markdown/math.d.ts.map +1 -0
- package/lib/browser/markdown/math.js +33 -0
- package/lib/browser/markdown/math.js.map +1 -0
- package/lib/browser/markdown/math.spec.d.ts +2 -0
- package/lib/browser/markdown/math.spec.d.ts.map +1 -0
- package/lib/browser/markdown/math.spec.js +24 -0
- package/lib/browser/markdown/math.spec.js.map +1 -0
- package/lib/browser/markdown/mermaid.d.ts +21 -0
- package/lib/browser/markdown/mermaid.d.ts.map +1 -0
- package/lib/browser/markdown/mermaid.js +87 -0
- package/lib/browser/markdown/mermaid.js.map +1 -0
- package/lib/browser/markdown/mermaid.spec.d.ts +2 -0
- package/lib/browser/markdown/mermaid.spec.d.ts.map +1 -0
- package/lib/browser/markdown/mermaid.spec.js +21 -0
- package/lib/browser/markdown/mermaid.spec.js.map +1 -0
- package/lib/browser/module.d.ts +5 -0
- package/lib/browser/module.d.ts.map +1 -0
- package/lib/browser/module.js +8 -0
- package/lib/browser/module.js.map +1 -0
- package/lib/browser/notices/notices-protocol.d.ts +83 -0
- package/lib/browser/notices/notices-protocol.d.ts.map +1 -0
- package/lib/browser/notices/notices-protocol.js +5 -0
- package/lib/browser/notices/notices-protocol.js.map +1 -0
- package/lib/browser/notices/notices.d.ts +48 -0
- package/lib/browser/notices/notices.d.ts.map +1 -0
- package/lib/browser/notices/notices.js +165 -0
- package/lib/browser/notices/notices.js.map +1 -0
- package/lib/browser/notices/notices.spec.d.ts +2 -0
- package/lib/browser/notices/notices.spec.d.ts.map +1 -0
- package/lib/browser/notices/notices.spec.js +96 -0
- package/lib/browser/notices/notices.spec.js.map +1 -0
- package/lib/browser/pwa/pwa-protocol.d.ts +21 -0
- package/lib/browser/pwa/pwa-protocol.d.ts.map +1 -0
- package/lib/browser/pwa/pwa-protocol.js +5 -0
- package/lib/browser/pwa/pwa-protocol.js.map +1 -0
- package/lib/browser/pwa/pwa.d.ts +40 -0
- package/lib/browser/pwa/pwa.d.ts.map +1 -0
- package/lib/browser/pwa/pwa.js +123 -0
- package/lib/browser/pwa/pwa.js.map +1 -0
- package/lib/browser/pwa/pwa.spec.d.ts +2 -0
- package/lib/browser/pwa/pwa.spec.d.ts.map +1 -0
- package/lib/browser/pwa/pwa.spec.js +134 -0
- package/lib/browser/pwa/pwa.spec.js.map +1 -0
- package/lib/browser/settings/agent-settings.d.ts +34 -0
- package/lib/browser/settings/agent-settings.d.ts.map +1 -0
- package/lib/browser/settings/agent-settings.js +88 -0
- package/lib/browser/settings/agent-settings.js.map +1 -0
- package/lib/browser/settings/agent-settings.spec.d.ts +2 -0
- package/lib/browser/settings/agent-settings.spec.d.ts.map +1 -0
- package/lib/browser/settings/agent-settings.spec.js +53 -0
- package/lib/browser/settings/agent-settings.spec.js.map +1 -0
- package/lib/browser/settings/settings-protocol.d.ts +45 -0
- package/lib/browser/settings/settings-protocol.d.ts.map +1 -0
- package/lib/browser/settings/settings-protocol.js +38 -0
- package/lib/browser/settings/settings-protocol.js.map +1 -0
- package/lib/browser/settings/settings.d.ts +32 -0
- package/lib/browser/settings/settings.d.ts.map +1 -0
- package/lib/browser/settings/settings.js +105 -0
- package/lib/browser/settings/settings.js.map +1 -0
- package/lib/browser/settings/settings.spec.d.ts +2 -0
- package/lib/browser/settings/settings.spec.d.ts.map +1 -0
- package/lib/browser/settings/settings.spec.js +32 -0
- package/lib/browser/settings/settings.spec.js.map +1 -0
- package/lib/browser/state/state-protocol.d.ts +49 -0
- package/lib/browser/state/state-protocol.d.ts.map +1 -0
- package/lib/browser/state/state-protocol.js +35 -0
- package/lib/browser/state/state-protocol.js.map +1 -0
- package/lib/browser/state/state.d.ts +40 -0
- package/lib/browser/state/state.d.ts.map +1 -0
- package/lib/browser/state/state.js +213 -0
- package/lib/browser/state/state.js.map +1 -0
- package/lib/browser/state/state.spec.d.ts +2 -0
- package/lib/browser/state/state.spec.d.ts.map +1 -0
- package/lib/browser/state/state.spec.js +201 -0
- package/lib/browser/state/state.spec.js.map +1 -0
- package/lib/browser/style/base.d.ts +3 -0
- package/lib/browser/style/base.d.ts.map +1 -0
- package/lib/browser/style/base.js +143 -0
- package/lib/browser/style/base.js.map +1 -0
- package/lib/browser/style/conversation.d.ts +3 -0
- package/lib/browser/style/conversation.d.ts.map +1 -0
- package/lib/browser/style/conversation.js +204 -0
- package/lib/browser/style/conversation.js.map +1 -0
- package/lib/browser/style/layout.d.ts +3 -0
- package/lib/browser/style/layout.d.ts.map +1 -0
- package/lib/browser/style/layout.js +374 -0
- package/lib/browser/style/layout.js.map +1 -0
- package/lib/browser/style/pages.d.ts +3 -0
- package/lib/browser/style/pages.d.ts.map +1 -0
- package/lib/browser/style/pages.js +78 -0
- package/lib/browser/style/pages.js.map +1 -0
- package/lib/browser/style/shell.d.ts +3 -0
- package/lib/browser/style/shell.d.ts.map +1 -0
- package/lib/browser/style/shell.js +239 -0
- package/lib/browser/style/shell.js.map +1 -0
- package/lib/browser/style.d.ts +6 -0
- package/lib/browser/style.d.ts.map +1 -0
- package/lib/browser/style.js +14 -0
- package/lib/browser/style.js.map +1 -0
- package/lib/browser/util/composer.d.ts +86 -0
- package/lib/browser/util/composer.d.ts.map +1 -0
- package/lib/browser/util/composer.js +124 -0
- package/lib/browser/util/composer.js.map +1 -0
- package/lib/browser/util/composer.spec.d.ts +2 -0
- package/lib/browser/util/composer.spec.d.ts.map +1 -0
- package/lib/browser/util/composer.spec.js +66 -0
- package/lib/browser/util/composer.spec.js.map +1 -0
- package/lib/browser/util/diff.d.ts +18 -0
- package/lib/browser/util/diff.d.ts.map +1 -0
- package/lib/browser/util/diff.js +32 -0
- package/lib/browser/util/diff.js.map +1 -0
- package/lib/browser/util/diff.spec.d.ts +2 -0
- package/lib/browser/util/diff.spec.d.ts.map +1 -0
- package/lib/browser/util/diff.spec.js +21 -0
- package/lib/browser/util/diff.spec.js.map +1 -0
- package/lib/browser/util/frame.d.ts +33 -0
- package/lib/browser/util/frame.d.ts.map +1 -0
- package/lib/browser/util/frame.js +50 -0
- package/lib/browser/util/frame.js.map +1 -0
- package/lib/browser/util/frame.spec.d.ts +2 -0
- package/lib/browser/util/frame.spec.d.ts.map +1 -0
- package/lib/browser/util/frame.spec.js +60 -0
- package/lib/browser/util/frame.spec.js.map +1 -0
- package/lib/browser/util/layout.d.ts +27 -0
- package/lib/browser/util/layout.d.ts.map +1 -0
- package/lib/browser/util/layout.js +57 -0
- package/lib/browser/util/layout.js.map +1 -0
- package/lib/browser/util/layout.spec.d.ts +2 -0
- package/lib/browser/util/layout.spec.d.ts.map +1 -0
- package/lib/browser/util/layout.spec.js +35 -0
- package/lib/browser/util/layout.spec.js.map +1 -0
- package/lib/browser/util/link.d.ts +54 -0
- package/lib/browser/util/link.d.ts.map +1 -0
- package/lib/browser/util/link.js +232 -0
- package/lib/browser/util/link.js.map +1 -0
- package/lib/browser/util/link.spec.d.ts +2 -0
- package/lib/browser/util/link.spec.d.ts.map +1 -0
- package/lib/browser/util/link.spec.js +101 -0
- package/lib/browser/util/link.spec.js.map +1 -0
- package/lib/browser/util/markdown.d.ts +87 -0
- package/lib/browser/util/markdown.d.ts.map +1 -0
- package/lib/browser/util/markdown.js +333 -0
- package/lib/browser/util/markdown.js.map +1 -0
- package/lib/browser/util/markdown.spec.d.ts +2 -0
- package/lib/browser/util/markdown.spec.d.ts.map +1 -0
- package/lib/browser/util/markdown.spec.js +124 -0
- package/lib/browser/util/markdown.spec.js.map +1 -0
- package/lib/browser/util/message.d.ts +75 -0
- package/lib/browser/util/message.d.ts.map +1 -0
- package/lib/browser/util/message.js +146 -0
- package/lib/browser/util/message.js.map +1 -0
- package/lib/browser/util/message.spec.d.ts +2 -0
- package/lib/browser/util/message.spec.d.ts.map +1 -0
- package/lib/browser/util/message.spec.js +59 -0
- package/lib/browser/util/message.spec.js.map +1 -0
- package/lib/browser/util/process.d.ts +74 -0
- package/lib/browser/util/process.d.ts.map +1 -0
- package/lib/browser/util/process.js +138 -0
- package/lib/browser/util/process.js.map +1 -0
- package/lib/browser/util/process.spec.d.ts +2 -0
- package/lib/browser/util/process.spec.d.ts.map +1 -0
- package/lib/browser/util/process.spec.js +106 -0
- package/lib/browser/util/process.spec.js.map +1 -0
- package/lib/browser/util/progress.d.ts +51 -0
- package/lib/browser/util/progress.d.ts.map +1 -0
- package/lib/browser/util/progress.js +146 -0
- package/lib/browser/util/progress.js.map +1 -0
- package/lib/browser/util/progress.spec.d.ts +2 -0
- package/lib/browser/util/progress.spec.d.ts.map +1 -0
- package/lib/browser/util/progress.spec.js +77 -0
- package/lib/browser/util/progress.spec.js.map +1 -0
- package/lib/browser/util/qr-code.d.ts +38 -0
- package/lib/browser/util/qr-code.d.ts.map +1 -0
- package/lib/browser/util/qr-code.js +353 -0
- package/lib/browser/util/qr-code.js.map +1 -0
- package/lib/browser/util/qr-code.spec.d.ts +2 -0
- package/lib/browser/util/qr-code.spec.d.ts.map +1 -0
- package/lib/browser/util/qr-code.spec.js +48 -0
- package/lib/browser/util/qr-code.spec.js.map +1 -0
- package/lib/browser/util/tool.d.ts +42 -0
- package/lib/browser/util/tool.d.ts.map +1 -0
- package/lib/browser/util/tool.js +154 -0
- package/lib/browser/util/tool.js.map +1 -0
- package/lib/browser/util/tool.spec.d.ts +2 -0
- package/lib/browser/util/tool.spec.d.ts.map +1 -0
- package/lib/browser/util/tool.spec.js +73 -0
- package/lib/browser/util/tool.spec.js.map +1 -0
- package/lib/browser/view.d.ts +4 -0
- package/lib/browser/view.d.ts.map +1 -0
- package/lib/browser/view.js +19 -0
- package/lib/browser/view.js.map +1 -0
- package/lib/browser/workbench-protocol.d.ts +51 -0
- package/lib/browser/workbench-protocol.d.ts.map +1 -0
- package/lib/browser/workbench-protocol.js +5 -0
- package/lib/browser/workbench-protocol.js.map +1 -0
- package/lib/browser/workbench.d.ts +64 -0
- package/lib/browser/workbench.d.ts.map +1 -0
- package/lib/browser/workbench.js +281 -0
- package/lib/browser/workbench.js.map +1 -0
- package/lib/browser/workbench.spec.d.ts +2 -0
- package/lib/browser/workbench.spec.d.ts.map +1 -0
- package/lib/browser/workbench.spec.js +34 -0
- package/lib/browser/workbench.spec.js.map +1 -0
- package/package.json +81 -4
- package/src/browser/assistant/assistant-export.spec.ts +30 -0
- package/src/browser/assistant/assistant-export.ts +41 -0
- package/src/browser/assistant/assistant-extension.spec.ts +122 -0
- package/src/browser/assistant/assistant-extension.ts +137 -0
- package/src/browser/assistant/assistant-hooks.ts +63 -0
- package/src/browser/assistant/assistant-protocol.ts +55 -0
- package/src/browser/assistant/assistant-tasks.tsx +194 -0
- package/src/browser/assistant/assistant-view.tsx +453 -0
- package/src/browser/assistant/assistant.spec.ts +80 -0
- package/src/browser/assistant/assistant.ts +315 -0
- package/src/browser/assistant/voice.spec.ts +8 -0
- package/src/browser/assistant/voice.ts +87 -0
- package/src/browser/avatar/dino-avatar.spec.ts +151 -0
- package/src/browser/avatar/dino-avatar.ts +541 -0
- package/src/browser/avatar/dino-motion.ts +313 -0
- package/src/browser/chat/chat-protocol.ts +47 -0
- package/src/browser/chat/chat-view.tsx +155 -0
- package/src/browser/chat/chat.spec.ts +194 -0
- package/src/browser/chat/chat.ts +335 -0
- package/src/browser/components/account-menu.tsx +114 -0
- package/src/browser/components/agent-settings-view.tsx +196 -0
- package/src/browser/components/app-view.tsx +553 -0
- package/src/browser/components/auth-pictures.tsx +55 -0
- package/src/browser/components/auth-view.tsx +421 -0
- package/src/browser/components/callout.tsx +33 -0
- package/src/browser/components/chat-list.spec.ts +66 -0
- package/src/browser/components/chat-list.tsx +276 -0
- package/src/browser/components/code-editor.tsx +114 -0
- package/src/browser/components/composer-box.tsx +475 -0
- package/src/browser/components/composer-menu.tsx +49 -0
- package/src/browser/components/composer.spec.tsx +130 -0
- package/src/browser/components/composer.tsx +170 -0
- package/src/browser/components/connection-bar.tsx +85 -0
- package/src/browser/components/context-menu.tsx +100 -0
- package/src/browser/components/conversation-scroll.ts +126 -0
- package/src/browser/components/dialog-view.tsx +82 -0
- package/src/browser/components/diff-editor.tsx +131 -0
- package/src/browser/components/diff-view.tsx +19 -0
- package/src/browser/components/dino.tsx +19 -0
- package/src/browser/components/editor-area.tsx +234 -0
- package/src/browser/components/folder-picker.spec.ts +30 -0
- package/src/browser/components/folder-picker.tsx +177 -0
- package/src/browser/components/fork-view.tsx +65 -0
- package/src/browser/components/hero-cards.tsx +189 -0
- package/src/browser/components/icon.tsx +62 -0
- package/src/browser/components/link-dialog.tsx +66 -0
- package/src/browser/components/link.tsx +77 -0
- package/src/browser/components/manage-menu.tsx +165 -0
- package/src/browser/components/markdown.spec.tsx +46 -0
- package/src/browser/components/markdown.tsx +155 -0
- package/src/browser/components/math.tsx +21 -0
- package/src/browser/components/media.tsx +91 -0
- package/src/browser/components/mermaid-view.tsx +105 -0
- package/src/browser/components/message-actions.tsx +89 -0
- package/src/browser/components/message-footer.tsx +128 -0
- package/src/browser/components/message-list.spec.tsx +321 -0
- package/src/browser/components/message-list.tsx +328 -0
- package/src/browser/components/notice-center.tsx +187 -0
- package/src/browser/components/relay-view.tsx +146 -0
- package/src/browser/components/run-status.tsx +70 -0
- package/src/browser/components/session-settings.spec.tsx +49 -0
- package/src/browser/components/session-settings.tsx +119 -0
- package/src/browser/components/session-view.tsx +153 -0
- package/src/browser/components/settings-controls.tsx +94 -0
- package/src/browser/components/settings-view.tsx +573 -0
- package/src/browser/components/split-pane.tsx +108 -0
- package/src/browser/components/ta-avatar.spec.tsx +27 -0
- package/src/browser/components/ta-avatar.tsx +251 -0
- package/src/browser/components/tool-view.tsx +186 -0
- package/src/browser/components/trusted-domains.tsx +60 -0
- package/src/browser/components/web-composer.tsx +47 -0
- package/src/browser/components/web-dialog.tsx +29 -0
- package/src/browser/components/workbench-toggle.spec.tsx +35 -0
- package/src/browser/components/workbench-toggle.tsx +24 -0
- package/src/browser/components/workbench-view.tsx +77 -0
- package/src/browser/components/working-directory.tsx +22 -0
- package/src/browser/editor/monaco-loader.spec.ts +39 -0
- package/src/browser/editor/monaco-loader.ts +139 -0
- package/src/browser/editor/monaco.ts +55 -0
- package/src/browser/editor/worker-modules.d.ts +5 -0
- package/src/browser/extension/extension-view.tsx +78 -0
- package/src/browser/extension/icons.ts +161 -0
- package/src/browser/extension/web-extension-api.ts +346 -0
- package/src/browser/extension/web-extension-protocol.ts +154 -0
- package/src/browser/extension/web-extensions.spec.ts +597 -0
- package/src/browser/extension/web-extensions.ts +717 -0
- package/src/browser/hooks.ts +102 -0
- package/src/browser/i18n/locales.ts +20 -0
- package/src/browser/i18n/messages.ts +864 -0
- package/src/browser/i18n/use-t.ts +21 -0
- package/src/browser/index.ts +52 -0
- package/src/browser/links/links-protocol.ts +41 -0
- package/src/browser/links/links.spec.ts +132 -0
- package/src/browser/links/links.ts +127 -0
- package/src/browser/markdown/hooks.ts +32 -0
- package/src/browser/markdown/lazy.spec.ts +34 -0
- package/src/browser/markdown/lazy.ts +46 -0
- package/src/browser/markdown/math.spec.ts +20 -0
- package/src/browser/markdown/math.ts +33 -0
- package/src/browser/markdown/mermaid.spec.ts +21 -0
- package/src/browser/markdown/mermaid.ts +89 -0
- package/src/browser/markdown/style-modules.d.ts +2 -0
- package/src/browser/module.ts +6 -0
- package/src/browser/notices/notices-protocol.ts +92 -0
- package/src/browser/notices/notices.spec.ts +99 -0
- package/src/browser/notices/notices.ts +173 -0
- package/src/browser/public/icons/apple-touch-icon.png +0 -0
- package/src/browser/public/icons/icon-192.png +0 -0
- package/src/browser/public/icons/icon-512.png +0 -0
- package/src/browser/public/icons/icon.svg +1 -0
- package/src/browser/public/icons/maskable-512.png +0 -0
- package/src/browser/public/manifest.webmanifest +40 -0
- package/src/browser/public/sw.js +78 -0
- package/src/browser/pwa/pwa-protocol.ts +22 -0
- package/src/browser/pwa/pwa.spec.ts +143 -0
- package/src/browser/pwa/pwa.ts +123 -0
- package/src/browser/settings/agent-settings.spec.ts +56 -0
- package/src/browser/settings/agent-settings.ts +96 -0
- package/src/browser/settings/settings-protocol.ts +75 -0
- package/src/browser/settings/settings.spec.ts +31 -0
- package/src/browser/settings/settings.ts +89 -0
- package/src/browser/state/state-protocol.ts +71 -0
- package/src/browser/state/state.spec.ts +214 -0
- package/src/browser/state/state.ts +217 -0
- package/src/browser/style/base.ts +139 -0
- package/src/browser/style/conversation.ts +200 -0
- package/src/browser/style/layout.ts +370 -0
- package/src/browser/style/pages.ts +74 -0
- package/src/browser/style/shell.ts +235 -0
- package/src/browser/style.ts +11 -0
- package/src/browser/util/composer.spec.ts +71 -0
- package/src/browser/util/composer.ts +157 -0
- package/src/browser/util/diff.spec.ts +20 -0
- package/src/browser/util/diff.ts +33 -0
- package/src/browser/util/frame.spec.ts +62 -0
- package/src/browser/util/frame.ts +54 -0
- package/src/browser/util/layout.spec.ts +37 -0
- package/src/browser/util/layout.ts +71 -0
- package/src/browser/util/link.spec.ts +104 -0
- package/src/browser/util/link.ts +237 -0
- package/src/browser/util/markdown.spec.ts +133 -0
- package/src/browser/util/markdown.ts +347 -0
- package/src/browser/util/message.spec.ts +63 -0
- package/src/browser/util/message.ts +188 -0
- package/src/browser/util/process.spec.ts +133 -0
- package/src/browser/util/process.ts +166 -0
- package/src/browser/util/progress.spec.ts +86 -0
- package/src/browser/util/progress.ts +170 -0
- package/src/browser/util/qr-code.spec.ts +49 -0
- package/src/browser/util/qr-code.ts +371 -0
- package/src/browser/util/tool.spec.ts +78 -0
- package/src/browser/util/tool.ts +190 -0
- package/src/browser/view.ts +6 -0
- package/src/browser/workbench-protocol.ts +66 -0
- package/src/browser/workbench.spec.ts +37 -0
- package/src/browser/workbench.ts +297 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { SessionMessage, SessionState } from '@celljs/ta-client';
|
|
2
|
+
import { MessageUtil } from './message';
|
|
3
|
+
import { type ToolSummary, ToolUtil } from './tool';
|
|
4
|
+
|
|
5
|
+
/** What ta does now, in a word or a line: what the loading line says. */
|
|
6
|
+
export type Phase =
|
|
7
|
+
| { kind: 'waiting' }
|
|
8
|
+
| { kind: 'thinking' }
|
|
9
|
+
| { kind: 'writing' }
|
|
10
|
+
/** The model writes a tool call: its arguments are not whole yet. */
|
|
11
|
+
| { kind: 'calling'; tool: string }
|
|
12
|
+
| { kind: 'tool'; summary: ToolSummary }
|
|
13
|
+
| { kind: 'clientTool'; tool: string }
|
|
14
|
+
| { kind: 'attention' }
|
|
15
|
+
| { kind: 'compacting' }
|
|
16
|
+
| { kind: 'retrying'; attempt: number; maxAttempts: number; seconds: number };
|
|
17
|
+
|
|
18
|
+
/** Tokens of the run of now: sent to the model (each request counts its whole context) and received from it. */
|
|
19
|
+
export interface RunTokens {
|
|
20
|
+
input: number;
|
|
21
|
+
output: number;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface Usage {
|
|
25
|
+
input?: number;
|
|
26
|
+
output?: number;
|
|
27
|
+
cacheRead?: number;
|
|
28
|
+
cacheWrite?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** pi's estimate, for what a model has not counted yet: four characters a token. */
|
|
32
|
+
const CHARS_PER_TOKEN = 4;
|
|
33
|
+
|
|
34
|
+
function usageOf(message: SessionMessage): Usage | undefined {
|
|
35
|
+
return (message as { role: string; usage?: Usage }).role === 'assistant' ? (message as { usage?: Usage }).usage : undefined;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function contextOf(usage: Usage | undefined): number {
|
|
39
|
+
return usage ? (usage.input ?? 0) + (usage.cacheRead ?? 0) + (usage.cacheWrite ?? 0) : 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function role(message: SessionMessage | undefined): string | undefined {
|
|
43
|
+
return (message as { role?: string } | undefined)?.role;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export namespace ProgressUtil {
|
|
47
|
+
/** What ta does now, the most pressing first: a question for the user, then pi's own work, then the model's. */
|
|
48
|
+
export function phase(state: SessionState): Phase {
|
|
49
|
+
if (state.pendingUi.length > 0) {
|
|
50
|
+
return { kind: 'attention' };
|
|
51
|
+
}
|
|
52
|
+
if (state.compacting) {
|
|
53
|
+
return { kind: 'compacting' };
|
|
54
|
+
}
|
|
55
|
+
if (state.retry) {
|
|
56
|
+
const { attempt, maxAttempts, delayMs } = state.retry;
|
|
57
|
+
return { kind: 'retrying', attempt, maxAttempts, seconds: Math.max(1, Math.round(delayMs / 1000)) };
|
|
58
|
+
}
|
|
59
|
+
const [request] = state.pendingClientTools;
|
|
60
|
+
if (request) {
|
|
61
|
+
return { kind: 'clientTool', tool: request.toolName };
|
|
62
|
+
}
|
|
63
|
+
const run = ToolUtil.current(state.tools);
|
|
64
|
+
if (run) {
|
|
65
|
+
return { kind: 'tool', summary: ToolUtil.summary(run.toolName, (run.args as Record<string, unknown>) ?? {}) };
|
|
66
|
+
}
|
|
67
|
+
const last = state.messages[state.messages.length - 1];
|
|
68
|
+
if (role(last) !== 'assistant' || (last as { stopReason?: string }).stopReason === 'toolUse') {
|
|
69
|
+
// Sent, or a tool has answered: the model has not begun.
|
|
70
|
+
return { kind: 'waiting' };
|
|
71
|
+
}
|
|
72
|
+
const blocks = MessageUtil.blocks(last);
|
|
73
|
+
const block = blocks[blocks.length - 1];
|
|
74
|
+
switch (block?.type) {
|
|
75
|
+
case 'thinking':
|
|
76
|
+
return { kind: 'thinking' };
|
|
77
|
+
case 'text':
|
|
78
|
+
return { kind: 'writing' };
|
|
79
|
+
case 'toolCall':
|
|
80
|
+
return { kind: 'calling', tool: block.name ?? '' };
|
|
81
|
+
default:
|
|
82
|
+
return { kind: 'waiting' };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Where the run of now starts: as the store saw it start, else after the last message of the user. */
|
|
87
|
+
export function runStart(state: SessionState): number {
|
|
88
|
+
if (state.runStart !== undefined && state.runStart <= state.messages.length) {
|
|
89
|
+
return state.runStart;
|
|
90
|
+
}
|
|
91
|
+
for (let index = state.messages.length - 1; index >= 0; index--) {
|
|
92
|
+
if (role(state.messages[index]) === 'user') {
|
|
93
|
+
return index;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The tokens of the run so far. A request the model has answered counts what it says; one it has not
|
|
101
|
+
* counted yet is estimated as pi does: the context of the last counted request and the characters
|
|
102
|
+
* since. While the model has not answered the latest request, it counts as sent. Before the model has
|
|
103
|
+
* counted any request of the session, the system prompt and the tools are unknown: nothing is sent yet.
|
|
104
|
+
*/
|
|
105
|
+
export function tokens(state: SessionState): RunTokens {
|
|
106
|
+
const { messages } = state;
|
|
107
|
+
const start = runStart(state);
|
|
108
|
+
let input = 0;
|
|
109
|
+
let output = 0;
|
|
110
|
+
// The context of the latest counted request, and the index after its answer.
|
|
111
|
+
let known = 0;
|
|
112
|
+
let knownAt = 0;
|
|
113
|
+
const estimateSince = (end: number) => (known ? known + Math.ceil(chars(messages.slice(knownAt, end)) / CHARS_PER_TOKEN) : 0);
|
|
114
|
+
for (let index = 0; index < messages.length; index++) {
|
|
115
|
+
const usage = usageOf(messages[index]);
|
|
116
|
+
if (!usage) {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const counted = contextOf(usage);
|
|
120
|
+
if (index >= start) {
|
|
121
|
+
input += counted || estimateSince(index);
|
|
122
|
+
const estimate = Math.ceil(chars([messages[index]]) / CHARS_PER_TOKEN);
|
|
123
|
+
const streaming = state.working && index === messages.length - 1;
|
|
124
|
+
output += streaming ? Math.max(usage.output ?? 0, estimate) : usage.output || estimate;
|
|
125
|
+
}
|
|
126
|
+
if (counted) {
|
|
127
|
+
known = counted + (usage.output ?? 0);
|
|
128
|
+
knownAt = index + 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Sent, and the model has not begun its answer: the loop above has not counted this request.
|
|
132
|
+
if (state.working && messages.length > start && role(messages[messages.length - 1]) !== 'assistant' && phase(state).kind === 'waiting') {
|
|
133
|
+
input += estimateSince(messages.length);
|
|
134
|
+
}
|
|
135
|
+
return { input, output };
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** 1234 is 1.2k, 23456 is 23.5k, 123456 is 123k: short enough for one line. */
|
|
139
|
+
export function format(count: number): string {
|
|
140
|
+
if (count < 1000) {
|
|
141
|
+
return String(count);
|
|
142
|
+
}
|
|
143
|
+
if (count < 100_000) {
|
|
144
|
+
return `${trim((count / 1000).toFixed(1))}k`;
|
|
145
|
+
}
|
|
146
|
+
if (count < 1_000_000) {
|
|
147
|
+
return `${Math.round(count / 1000)}k`;
|
|
148
|
+
}
|
|
149
|
+
return `${trim((count / 1_000_000).toFixed(1))}M`;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function trim(value: string): string {
|
|
153
|
+
return value.replace(/\.0$/, '');
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** The characters a model reads or writes of these messages: text, thoughts, tool calls and results. */
|
|
157
|
+
function chars(messages: SessionMessage[]): number {
|
|
158
|
+
let count = 0;
|
|
159
|
+
for (const message of messages) {
|
|
160
|
+
for (const block of MessageUtil.blocks(message)) {
|
|
161
|
+
const { text, thinking, arguments: args, partialJson } = block as typeof block & { partialJson?: string };
|
|
162
|
+
count += (text?.length ?? 0) + (thinking?.length ?? 0);
|
|
163
|
+
if (block.type === 'toolCall') {
|
|
164
|
+
count += partialJson?.length ?? JSON.stringify(args ?? {}).length;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return count;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import { QrCode } from './qr-code';
|
|
3
|
+
|
|
4
|
+
/** The 7×7 finder pattern at a corner: a dark ring, a light ring, a dark 3×3 middle. */
|
|
5
|
+
function hasFinder(code: QrCode, left: number, top: number): boolean {
|
|
6
|
+
for (let dy = 0; dy < 7; dy++) {
|
|
7
|
+
for (let dx = 0; dx < 7; dx++) {
|
|
8
|
+
const ring = Math.max(Math.abs(dx - 3), Math.abs(dy - 3));
|
|
9
|
+
if (code.isDark(left + dx, top + dy) !== (ring !== 2)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
describe('QrCode', () => {
|
|
18
|
+
it('takes the smallest version that holds the text', () => {
|
|
19
|
+
expect(QrCode.encode('hi').version).toBe(1);
|
|
20
|
+
expect(QrCode.encode('x'.repeat(60)).version).toBe(4);
|
|
21
|
+
// A pairing link of ta pair.
|
|
22
|
+
expect(QrCode.encode(`https://relay.cellbang.com/pair#v=1&h=${'h'.repeat(22)}&d=${'d'.repeat(22)}&k=${'k'.repeat(43)}&n=MacBook`).version).toBe(8);
|
|
23
|
+
expect(() => QrCode.encode('z'.repeat(3000))).toThrow();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('has the finder patterns and the timing lines in place', () => {
|
|
27
|
+
const code = QrCode.encode('https://example.com');
|
|
28
|
+
expect(code.size).toBe(code.version * 4 + 17);
|
|
29
|
+
expect(hasFinder(code, 0, 0)).toBe(true);
|
|
30
|
+
expect(hasFinder(code, code.size - 7, 0)).toBe(true);
|
|
31
|
+
expect(hasFinder(code, 0, code.size - 7)).toBe(true);
|
|
32
|
+
for (let i = 8; i < code.size - 8; i++) {
|
|
33
|
+
expect(code.isDark(i, 6)).toBe(i % 2 === 0);
|
|
34
|
+
}
|
|
35
|
+
// The dark module beside the lower finder.
|
|
36
|
+
expect(code.isDark(8, code.size - 8)).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it('draws each dark module once in its path', () => {
|
|
40
|
+
const code = QrCode.encode('ta');
|
|
41
|
+
let dark = 0;
|
|
42
|
+
for (let y = 0; y < code.size; y++) {
|
|
43
|
+
for (let x = 0; x < code.size; x++) {
|
|
44
|
+
dark += code.isDark(x, y) ? 1 : 0;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
expect(code.path().split('M').length - 1).toBe(dark);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A QR code (ISO/IEC 18004) of a text, in byte mode with the error correction level M, in the smallest
|
|
3
|
+
* version that holds it. Enough for a link a phone scans; written here rather than taken from a package.
|
|
4
|
+
* The steps and tables follow the standard, as does the well-known reference implementation by Nayuki.
|
|
5
|
+
*/
|
|
6
|
+
export class QrCode {
|
|
7
|
+
/** Codewords for error correction per block, and blocks, at level M, by version (index 0 unused). */
|
|
8
|
+
protected static readonly ECC_PER_BLOCK = [
|
|
9
|
+
-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
|
|
10
|
+
28, 28, 28,
|
|
11
|
+
];
|
|
12
|
+
protected static readonly BLOCKS = [
|
|
13
|
+
-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49,
|
|
14
|
+
];
|
|
15
|
+
/** Level M in the format bits. */
|
|
16
|
+
protected static readonly ECC_FORMAT = 0;
|
|
17
|
+
|
|
18
|
+
readonly size: number;
|
|
19
|
+
protected readonly modules: boolean[][];
|
|
20
|
+
protected readonly reserved: boolean[][];
|
|
21
|
+
|
|
22
|
+
protected constructor(
|
|
23
|
+
readonly version: number,
|
|
24
|
+
data: number[],
|
|
25
|
+
) {
|
|
26
|
+
this.size = version * 4 + 17;
|
|
27
|
+
this.modules = Array.from({ length: this.size }, () => new Array<boolean>(this.size).fill(false));
|
|
28
|
+
this.reserved = Array.from({ length: this.size }, () => new Array<boolean>(this.size).fill(false));
|
|
29
|
+
this.drawPatterns();
|
|
30
|
+
this.drawCodewords(this.withEcc(data));
|
|
31
|
+
let best = 0;
|
|
32
|
+
let lowest = Number.POSITIVE_INFINITY;
|
|
33
|
+
for (let mask = 0; mask < 8; mask++) {
|
|
34
|
+
this.applyMask(mask);
|
|
35
|
+
this.drawFormat(mask);
|
|
36
|
+
const penalty = this.penalty();
|
|
37
|
+
if (penalty < lowest) {
|
|
38
|
+
best = mask;
|
|
39
|
+
lowest = penalty;
|
|
40
|
+
}
|
|
41
|
+
this.applyMask(mask);
|
|
42
|
+
}
|
|
43
|
+
this.applyMask(best);
|
|
44
|
+
this.drawFormat(best);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Throws when the text is too long for any version. */
|
|
48
|
+
static encode(text: string): QrCode {
|
|
49
|
+
const bytes = [...new TextEncoder().encode(text)];
|
|
50
|
+
for (let version = 1; version <= 40; version++) {
|
|
51
|
+
const capacity = QrCode.dataCodewords(version) * 8;
|
|
52
|
+
const countBits = version <= 9 ? 8 : 16;
|
|
53
|
+
const used = 4 + countBits + bytes.length * 8;
|
|
54
|
+
if (used <= capacity) {
|
|
55
|
+
const bits: number[] = [];
|
|
56
|
+
const push = (value: number, length: number) => {
|
|
57
|
+
for (let i = length - 1; i >= 0; i--) {
|
|
58
|
+
bits.push((value >>> i) & 1);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
push(0b0100, 4);
|
|
62
|
+
push(bytes.length, countBits);
|
|
63
|
+
for (const byte of bytes) {
|
|
64
|
+
push(byte, 8);
|
|
65
|
+
}
|
|
66
|
+
push(0, Math.min(4, capacity - bits.length));
|
|
67
|
+
push(0, (8 - (bits.length % 8)) % 8);
|
|
68
|
+
for (let pad = 0xec; bits.length < capacity; pad ^= 0xec ^ 0x11) {
|
|
69
|
+
push(pad, 8);
|
|
70
|
+
}
|
|
71
|
+
const data: number[] = [];
|
|
72
|
+
for (let i = 0; i < bits.length; i += 8) {
|
|
73
|
+
data.push(bits.slice(i, i + 8).reduce((byte, bit) => (byte << 1) | bit, 0));
|
|
74
|
+
}
|
|
75
|
+
return new QrCode(version, data);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw new Error('The text is too long for a QR code.');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
isDark(x: number, y: number): boolean {
|
|
82
|
+
return this.modules[y][x];
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** The code as an SVG path of its dark modules, one unit each, without the quiet zone. */
|
|
86
|
+
path(): string {
|
|
87
|
+
let d = '';
|
|
88
|
+
for (let y = 0; y < this.size; y++) {
|
|
89
|
+
for (let x = 0; x < this.size; x++) {
|
|
90
|
+
if (this.modules[y][x]) {
|
|
91
|
+
d += `M${x} ${y}h1v1h-1z`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return d;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
protected static rawModules(version: number): number {
|
|
99
|
+
let result = (16 * version + 128) * version + 64;
|
|
100
|
+
if (version >= 2) {
|
|
101
|
+
const align = Math.floor(version / 7) + 2;
|
|
102
|
+
result -= (25 * align - 10) * align - 55;
|
|
103
|
+
if (version >= 7) {
|
|
104
|
+
result -= 36;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
protected static dataCodewords(version: number): number {
|
|
111
|
+
return Math.floor(QrCode.rawModules(version) / 8) - QrCode.ECC_PER_BLOCK[version] * QrCode.BLOCKS[version];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
protected alignmentPositions(): number[] {
|
|
115
|
+
if (this.version === 1) {
|
|
116
|
+
return [];
|
|
117
|
+
}
|
|
118
|
+
const count = Math.floor(this.version / 7) + 2;
|
|
119
|
+
const step = this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (count * 2 - 2)) * 2;
|
|
120
|
+
const result = [6];
|
|
121
|
+
for (let position = this.size - 7; result.length < count; position -= step) {
|
|
122
|
+
result.splice(1, 0, position);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
protected set(x: number, y: number, dark: boolean): void {
|
|
128
|
+
this.modules[y][x] = dark;
|
|
129
|
+
this.reserved[y][x] = true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
protected drawPatterns(): void {
|
|
133
|
+
for (let i = 0; i < this.size; i++) {
|
|
134
|
+
this.set(6, i, i % 2 === 0);
|
|
135
|
+
this.set(i, 6, i % 2 === 0);
|
|
136
|
+
}
|
|
137
|
+
const finder = (cx: number, cy: number) => {
|
|
138
|
+
for (let dy = -4; dy <= 4; dy++) {
|
|
139
|
+
for (let dx = -4; dx <= 4; dx++) {
|
|
140
|
+
const x = cx + dx;
|
|
141
|
+
const y = cy + dy;
|
|
142
|
+
if (x >= 0 && x < this.size && y >= 0 && y < this.size) {
|
|
143
|
+
const distance = Math.max(Math.abs(dx), Math.abs(dy));
|
|
144
|
+
this.set(x, y, distance !== 2 && distance !== 4);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
finder(3, 3);
|
|
150
|
+
finder(this.size - 4, 3);
|
|
151
|
+
finder(3, this.size - 4);
|
|
152
|
+
const positions = this.alignmentPositions();
|
|
153
|
+
for (let i = 0; i < positions.length; i++) {
|
|
154
|
+
for (let j = 0; j < positions.length; j++) {
|
|
155
|
+
const corner = (i === 0 && j === 0) || (i === 0 && j === positions.length - 1) || (i === positions.length - 1 && j === 0);
|
|
156
|
+
if (!corner) {
|
|
157
|
+
for (let dy = -2; dy <= 2; dy++) {
|
|
158
|
+
for (let dx = -2; dx <= 2; dx++) {
|
|
159
|
+
this.set(positions[i] + dx, positions[j] + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Reserved now, drawn with each mask.
|
|
166
|
+
this.drawFormat(0);
|
|
167
|
+
if (this.version >= 7) {
|
|
168
|
+
let rem = this.version;
|
|
169
|
+
for (let i = 0; i < 12; i++) {
|
|
170
|
+
rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);
|
|
171
|
+
}
|
|
172
|
+
const bits = (this.version << 12) | rem;
|
|
173
|
+
for (let i = 0; i < 18; i++) {
|
|
174
|
+
const dark = ((bits >>> i) & 1) !== 0;
|
|
175
|
+
const a = this.size - 11 + (i % 3);
|
|
176
|
+
const b = Math.floor(i / 3);
|
|
177
|
+
this.set(a, b, dark);
|
|
178
|
+
this.set(b, a, dark);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
protected drawFormat(mask: number): void {
|
|
184
|
+
const data = (QrCode.ECC_FORMAT << 3) | mask;
|
|
185
|
+
let rem = data;
|
|
186
|
+
for (let i = 0; i < 10; i++) {
|
|
187
|
+
rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
|
|
188
|
+
}
|
|
189
|
+
const bits = ((data << 10) | rem) ^ 0x5412;
|
|
190
|
+
const bit = (i: number) => ((bits >>> i) & 1) !== 0;
|
|
191
|
+
for (let i = 0; i <= 5; i++) {
|
|
192
|
+
this.set(8, i, bit(i));
|
|
193
|
+
}
|
|
194
|
+
this.set(8, 7, bit(6));
|
|
195
|
+
this.set(8, 8, bit(7));
|
|
196
|
+
this.set(7, 8, bit(8));
|
|
197
|
+
for (let i = 9; i < 15; i++) {
|
|
198
|
+
this.set(14 - i, 8, bit(i));
|
|
199
|
+
}
|
|
200
|
+
for (let i = 0; i < 8; i++) {
|
|
201
|
+
this.set(this.size - 1 - i, 8, bit(i));
|
|
202
|
+
}
|
|
203
|
+
for (let i = 8; i < 15; i++) {
|
|
204
|
+
this.set(8, this.size - 15 + i, bit(i));
|
|
205
|
+
}
|
|
206
|
+
this.set(8, this.size - 8, true);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** The data split into blocks, each with its Reed-Solomon codewords, interleaved. */
|
|
210
|
+
protected withEcc(data: number[]): number[] {
|
|
211
|
+
const blocks = QrCode.BLOCKS[this.version];
|
|
212
|
+
const eccLength = QrCode.ECC_PER_BLOCK[this.version];
|
|
213
|
+
const raw = Math.floor(QrCode.rawModules(this.version) / 8);
|
|
214
|
+
const shortBlocks = blocks - (raw % blocks);
|
|
215
|
+
const shortLength = Math.floor(raw / blocks);
|
|
216
|
+
const divisor = QrCode.reedSolomonDivisor(eccLength);
|
|
217
|
+
const all: number[][] = [];
|
|
218
|
+
for (let i = 0, k = 0; i < blocks; i++) {
|
|
219
|
+
const dataLength = shortLength - eccLength + (i < shortBlocks ? 0 : 1);
|
|
220
|
+
const block = data.slice(k, k + dataLength);
|
|
221
|
+
k += dataLength;
|
|
222
|
+
const ecc = QrCode.reedSolomonRemainder(block, divisor);
|
|
223
|
+
if (i < shortBlocks) {
|
|
224
|
+
block.push(0);
|
|
225
|
+
}
|
|
226
|
+
all.push([...block, ...ecc]);
|
|
227
|
+
}
|
|
228
|
+
const result: number[] = [];
|
|
229
|
+
for (let i = 0; i < all[0].length; i++) {
|
|
230
|
+
for (let j = 0; j < all.length; j++) {
|
|
231
|
+
// The padding byte of a short block is not sent.
|
|
232
|
+
if (i !== shortLength - eccLength || j >= shortBlocks) {
|
|
233
|
+
result.push(all[j][i]);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
protected drawCodewords(codewords: number[]): void {
|
|
241
|
+
let i = 0;
|
|
242
|
+
for (let right = this.size - 1; right >= 1; right -= 2) {
|
|
243
|
+
if (right === 6) {
|
|
244
|
+
right = 5;
|
|
245
|
+
}
|
|
246
|
+
for (let vertical = 0; vertical < this.size; vertical++) {
|
|
247
|
+
for (let j = 0; j < 2; j++) {
|
|
248
|
+
const x = right - j;
|
|
249
|
+
const upward = ((right + 1) & 2) === 0;
|
|
250
|
+
const y = upward ? this.size - 1 - vertical : vertical;
|
|
251
|
+
if (!this.reserved[y][x] && i < codewords.length * 8) {
|
|
252
|
+
this.modules[y][x] = ((codewords[i >>> 3] >>> (7 - (i & 7))) & 1) !== 0;
|
|
253
|
+
i++;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
protected applyMask(mask: number): void {
|
|
261
|
+
for (let y = 0; y < this.size; y++) {
|
|
262
|
+
for (let x = 0; x < this.size; x++) {
|
|
263
|
+
if (this.reserved[y][x]) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
const flip = [
|
|
267
|
+
(x + y) % 2,
|
|
268
|
+
y % 2,
|
|
269
|
+
x % 3,
|
|
270
|
+
(x + y) % 3,
|
|
271
|
+
(Math.floor(x / 3) + Math.floor(y / 2)) % 2,
|
|
272
|
+
((x * y) % 2) + ((x * y) % 3),
|
|
273
|
+
(((x * y) % 2) + ((x * y) % 3)) % 2,
|
|
274
|
+
(((x + y) % 2) + ((x * y) % 3)) % 2,
|
|
275
|
+
][mask];
|
|
276
|
+
if (flip === 0) {
|
|
277
|
+
this.modules[y][x] = !this.modules[y][x];
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** How hard the code is to read with a mask: long runs, blocks, finder-like patterns, imbalance. */
|
|
284
|
+
protected penalty(): number {
|
|
285
|
+
let result = 0;
|
|
286
|
+
const line = (get: (i: number, j: number) => boolean) => {
|
|
287
|
+
for (let i = 0; i < this.size; i++) {
|
|
288
|
+
let run = 1;
|
|
289
|
+
const seen: boolean[] = [];
|
|
290
|
+
for (let j = 0; j < this.size; j++) {
|
|
291
|
+
const dark = get(i, j);
|
|
292
|
+
if (j > 0 && dark === get(i, j - 1)) {
|
|
293
|
+
run++;
|
|
294
|
+
if (run === 5) {
|
|
295
|
+
result += 3;
|
|
296
|
+
} else if (run > 5) {
|
|
297
|
+
result++;
|
|
298
|
+
}
|
|
299
|
+
} else {
|
|
300
|
+
run = 1;
|
|
301
|
+
}
|
|
302
|
+
seen.push(dark);
|
|
303
|
+
}
|
|
304
|
+
const text = seen.map(dark => (dark ? '1' : '0')).join('');
|
|
305
|
+
for (const pattern of ['10111010000', '00001011101']) {
|
|
306
|
+
for (let at = text.indexOf(pattern); at >= 0; at = text.indexOf(pattern, at + 1)) {
|
|
307
|
+
result += 40;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
line((i, j) => this.modules[i][j]);
|
|
313
|
+
line((i, j) => this.modules[j][i]);
|
|
314
|
+
let dark = 0;
|
|
315
|
+
for (let y = 0; y < this.size; y++) {
|
|
316
|
+
for (let x = 0; x < this.size; x++) {
|
|
317
|
+
const value = this.modules[y][x];
|
|
318
|
+
dark += value ? 1 : 0;
|
|
319
|
+
if (
|
|
320
|
+
x < this.size - 1 &&
|
|
321
|
+
y < this.size - 1 &&
|
|
322
|
+
value === this.modules[y][x + 1] &&
|
|
323
|
+
value === this.modules[y + 1][x] &&
|
|
324
|
+
value === this.modules[y + 1][x + 1]
|
|
325
|
+
) {
|
|
326
|
+
result += 3;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
const total = this.size * this.size;
|
|
331
|
+
result += Math.floor(Math.abs(dark * 20 - total * 10) / total) * 10;
|
|
332
|
+
return result;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
protected static multiply(x: number, y: number): number {
|
|
336
|
+
let z = 0;
|
|
337
|
+
for (let i = 7; i >= 0; i--) {
|
|
338
|
+
z = (z << 1) ^ ((z >>> 7) * 0x11d);
|
|
339
|
+
z ^= ((y >>> i) & 1) * x;
|
|
340
|
+
}
|
|
341
|
+
return z & 0xff;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
protected static reedSolomonDivisor(degree: number): number[] {
|
|
345
|
+
const result = new Array<number>(degree).fill(0);
|
|
346
|
+
result[degree - 1] = 1;
|
|
347
|
+
let root = 1;
|
|
348
|
+
for (let i = 0; i < degree; i++) {
|
|
349
|
+
for (let j = 0; j < result.length; j++) {
|
|
350
|
+
result[j] = QrCode.multiply(result[j], root);
|
|
351
|
+
if (j + 1 < result.length) {
|
|
352
|
+
result[j] ^= result[j + 1];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
root = QrCode.multiply(root, 0x02);
|
|
356
|
+
}
|
|
357
|
+
return result;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
protected static reedSolomonRemainder(data: number[], divisor: number[]): number[] {
|
|
361
|
+
const result = new Array<number>(divisor.length).fill(0);
|
|
362
|
+
for (const byte of data) {
|
|
363
|
+
const factor = byte ^ (result.shift() as number);
|
|
364
|
+
result.push(0);
|
|
365
|
+
divisor.forEach((coefficient, i) => {
|
|
366
|
+
result[i] ^= QrCode.multiply(coefficient, factor);
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { describe, expect, it } from 'bun:test';
|
|
2
|
+
import type { ToolRun } from '@celljs/ta-client';
|
|
3
|
+
import { ToolUtil } from './tool';
|
|
4
|
+
|
|
5
|
+
describe('ToolUtil', () => {
|
|
6
|
+
it('says what a call does in one line', () => {
|
|
7
|
+
expect(ToolUtil.summary('bash', { command: 'npm test\nnpm run lint' })).toEqual({
|
|
8
|
+
verb: 'ta.tool.verb.bash',
|
|
9
|
+
name: 'bash',
|
|
10
|
+
target: 'npm test',
|
|
11
|
+
code: true,
|
|
12
|
+
});
|
|
13
|
+
expect(ToolUtil.summary('read', { path: 'a.ts', offset: 10, limit: 5 }).target).toBe('a.ts:10-14');
|
|
14
|
+
expect(ToolUtil.summary('start_task', { title: 'Fix the build', instructions: 'long' }).target).toBe('Fix the build');
|
|
15
|
+
expect(ToolUtil.summary('mcp_search', { limit: 3, query: 'cats' })).toEqual({ verb: undefined, name: 'mcp_search', target: 'cats', code: false });
|
|
16
|
+
expect(ToolUtil.scriptTitle('// @options: {}\n// read the config\nawait tools.read({})')).toBe('read the config');
|
|
17
|
+
expect(ToolUtil.scriptTitle('const a = 1;\nreturn a')).toBe('const a = 1;');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('joins the record of a script with its live runs, and falls back to the record on the result message', () => {
|
|
21
|
+
const runs: Record<string, ToolRun> = {
|
|
22
|
+
'c1/1': { toolName: 'read', args: { path: 'a.ts' }, status: 'done', parentToolCallId: 'c1' },
|
|
23
|
+
'c1/2': { toolName: 'bash', args: { command: 'ls' }, status: 'running', parentToolCallId: 'c1' },
|
|
24
|
+
};
|
|
25
|
+
const details = {
|
|
26
|
+
calls: [
|
|
27
|
+
{ id: 'c1/1', name: 'read', args: '{"path":"a.ts"}', status: 'ok', durationMs: 3 },
|
|
28
|
+
{ id: 'c1/?', name: 'bash', args: '{"command":"ls"}', status: 'running' },
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
const calls = ToolUtil.nestedCalls('c1', { details }, runs);
|
|
32
|
+
expect(calls.map(call => [call.key, call.status, call.run === runs[call.key]])).toEqual([
|
|
33
|
+
['c1/1', 'done', true],
|
|
34
|
+
['c1#1', 'running', false],
|
|
35
|
+
]);
|
|
36
|
+
expect(calls[1].run).toBe(runs['c1/2']);
|
|
37
|
+
const kept = ToolUtil.nestedCalls(
|
|
38
|
+
'c1',
|
|
39
|
+
{ nestedCalls: { calls: [{ id: 'c1/1', name: 'edit', arguments: { path: 'b.ts' }, status: 'error', error: 'no match' }] } } as never,
|
|
40
|
+
{},
|
|
41
|
+
);
|
|
42
|
+
expect(kept).toEqual([{ key: 'c1/1', name: 'edit', args: { path: 'b.ts' }, status: 'error', durationMs: undefined, error: 'no match' }]);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('counts the calls of a script as steps, and a script that failed on its own as a failed one', () => {
|
|
46
|
+
const results = new Map([
|
|
47
|
+
[
|
|
48
|
+
's1',
|
|
49
|
+
{
|
|
50
|
+
details: {
|
|
51
|
+
calls: [
|
|
52
|
+
{ name: 'read', status: 'ok' },
|
|
53
|
+
{ name: 'edit', status: 'error' },
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
['s2', { isError: true, details: { calls: [{ name: 'read', status: 'ok' }] } }],
|
|
59
|
+
['b1', { content: [] }],
|
|
60
|
+
]);
|
|
61
|
+
const calls = [
|
|
62
|
+
{ type: 'toolCall', id: 's1', name: 'codemode' },
|
|
63
|
+
{ type: 'toolCall', id: 's2', name: 'codemode' },
|
|
64
|
+
{ type: 'toolCall', id: 'b1', name: 'bash' },
|
|
65
|
+
];
|
|
66
|
+
expect(ToolUtil.count(calls, results, {})).toEqual({ steps: 4, failed: 2 });
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('finds the call a session runs now: the latest started', () => {
|
|
70
|
+
const runs: Record<string, ToolRun> = {
|
|
71
|
+
c1: { toolName: 'codemode', args: {}, status: 'running' },
|
|
72
|
+
'c1/1': { toolName: 'bash', args: {}, status: 'running', parentToolCallId: 'c1' },
|
|
73
|
+
c0: { toolName: 'read', args: {}, status: 'done' },
|
|
74
|
+
};
|
|
75
|
+
expect(ToolUtil.current(runs)?.toolName).toBe('bash');
|
|
76
|
+
expect(ToolUtil.current({})).toBeUndefined();
|
|
77
|
+
});
|
|
78
|
+
});
|