@jingyi0605/codingns4dsh 0.2.1-beta.12 → 0.2.1-beta.13
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.en.md +3 -3
- package/README.md +3 -3
- package/data/build/dist/client/account-bar.d.ts.map +1 -1
- package/data/build/dist/client/account-bar.js +24 -70
- package/data/build/dist/client/account-bar.js.map +1 -1
- package/data/build/dist/client/adapter-catalog-watch.d.ts +1 -1
- package/data/build/dist/client/adapter-catalog-watch.d.ts.map +1 -1
- package/data/build/dist/client/adapter-catalog-watch.js +2 -2
- package/data/build/dist/client/adapter-catalog-watch.js.map +1 -1
- package/data/build/dist/client/bundle.js +30007 -15931
- package/data/build/dist/client/bundle.js.map +1 -1
- package/data/build/dist/client/cli-management-dialog.d.ts +21 -0
- package/data/build/dist/client/cli-management-dialog.d.ts.map +1 -0
- package/data/build/dist/client/cli-management-dialog.js +215 -0
- package/data/build/dist/client/cli-management-dialog.js.map +1 -0
- package/data/build/dist/client/cli-management-terminal.d.ts +9 -0
- package/data/build/dist/client/cli-management-terminal.d.ts.map +1 -0
- package/data/build/dist/client/cli-management-terminal.js +30 -0
- package/data/build/dist/client/cli-management-terminal.js.map +1 -0
- package/data/build/dist/client/cli-settings-dialog.d.ts +9 -0
- package/data/build/dist/client/cli-settings-dialog.d.ts.map +1 -0
- package/data/build/dist/client/cli-settings-dialog.js +45 -0
- package/data/build/dist/client/cli-settings-dialog.js.map +1 -0
- package/data/build/dist/client/cli-settings-rpc.js +1 -1
- package/data/build/dist/client/cli-settings-rpc.js.map +1 -1
- package/data/build/dist/client/cli-slots.d.ts +4 -0
- package/data/build/dist/client/cli-slots.d.ts.map +1 -1
- package/data/build/dist/client/cli-slots.js +15 -7
- package/data/build/dist/client/cli-slots.js.map +1 -1
- package/data/build/dist/client/client.editor-engine.js +4 -1
- package/data/build/dist/client/client.editor-engine.js.map +1 -1
- package/data/build/dist/client/client.native-workspace-store.js +1 -1
- package/data/build/dist/client/client.native-workspace-store.js.map +1 -1
- package/data/build/dist/client/client.primitives-adapter.js +53 -0
- package/data/build/dist/client/client.primitives-adapter.js.map +1 -1
- package/data/build/dist/client/client.session-translation.js +16 -0
- package/data/build/dist/client/client.session-translation.js.map +1 -1
- package/data/build/dist/client/client.transport.js +459 -44
- package/data/build/dist/client/client.transport.js.map +1 -1
- package/data/build/dist/client/conversation-translation-settings.d.ts +2 -1
- package/data/build/dist/client/conversation-translation-settings.d.ts.map +1 -1
- package/data/build/dist/client/conversation-translation-settings.js +7 -5
- package/data/build/dist/client/conversation-translation-settings.js.map +1 -1
- package/data/build/dist/client/desktop-assistant.js +457 -42
- package/data/build/dist/client/editor-engine.d.ts +1 -1
- package/data/build/dist/client/editor-engine.d.ts.map +1 -1
- package/data/build/dist/client/editor-engine.js +4 -1
- package/data/build/dist/client/editor-engine.js.map +1 -1
- package/data/build/dist/client/features/cli-adapters.d.ts +3 -1
- package/data/build/dist/client/features/cli-adapters.d.ts.map +1 -1
- package/data/build/dist/client/features/cli-adapters.js +181 -105
- package/data/build/dist/client/features/cli-adapters.js.map +1 -1
- package/data/build/dist/client/features/file-management.d.ts.map +1 -1
- package/data/build/dist/client/features/file-management.js +2 -0
- package/data/build/dist/client/features/file-management.js.map +1 -1
- package/data/build/dist/client/features/index.d.ts.map +1 -1
- package/data/build/dist/client/features/index.js +2 -0
- package/data/build/dist/client/features/index.js.map +1 -1
- package/data/build/dist/client/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/client/features/peer-host.js +3 -0
- package/data/build/dist/client/features/peer-host.js.map +1 -1
- package/data/build/dist/client/features/quick-apps.d.ts +3 -0
- package/data/build/dist/client/features/quick-apps.d.ts.map +1 -0
- package/data/build/dist/client/features/quick-apps.js +14 -0
- package/data/build/dist/client/features/quick-apps.js.map +1 -0
- package/data/build/dist/client/html-workspace-files.d.ts +4 -0
- package/data/build/dist/client/html-workspace-files.d.ts.map +1 -0
- package/data/build/dist/client/html-workspace-files.js +114 -0
- package/data/build/dist/client/html-workspace-files.js.map +1 -0
- package/data/build/dist/client/locale.d.ts.map +1 -1
- package/data/build/dist/client/locale.js +6 -0
- package/data/build/dist/client/locale.js.map +1 -1
- package/data/build/dist/client/locales/cliManagement.d.ts +3 -0
- package/data/build/dist/client/locales/cliManagement.d.ts.map +1 -0
- package/data/build/dist/client/locales/cliManagement.js +139 -0
- package/data/build/dist/client/locales/cliManagement.js.map +1 -0
- package/data/build/dist/client/locales/fileWorkspace.d.ts.map +1 -1
- package/data/build/dist/client/locales/fileWorkspace.js +4 -0
- package/data/build/dist/client/locales/fileWorkspace.js.map +1 -1
- package/data/build/dist/client/locales/panels.js +2 -2
- package/data/build/dist/client/locales/panels.js.map +1 -1
- package/data/build/dist/client/locales/quickApps.d.ts +130 -0
- package/data/build/dist/client/locales/quickApps.d.ts.map +1 -0
- package/data/build/dist/client/locales/quickApps.js +150 -0
- package/data/build/dist/client/locales/quickApps.js.map +1 -0
- package/data/build/dist/client/native-model-translation-menu.d.ts.map +1 -1
- package/data/build/dist/client/native-model-translation-menu.js +3 -1
- package/data/build/dist/client/native-model-translation-menu.js.map +1 -1
- package/data/build/dist/client/quick-apps/client.d.ts +29 -0
- package/data/build/dist/client/quick-apps/client.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/client.js +68 -0
- package/data/build/dist/client/quick-apps/client.js.map +1 -0
- package/data/build/dist/client/quick-apps/document.d.ts +26 -0
- package/data/build/dist/client/quick-apps/document.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/document.js +110 -0
- package/data/build/dist/client/quick-apps/document.js.map +1 -0
- package/data/build/dist/client/quick-apps/file-picker.d.ts +14 -0
- package/data/build/dist/client/quick-apps/file-picker.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/file-picker.js +51 -0
- package/data/build/dist/client/quick-apps/file-picker.js.map +1 -0
- package/data/build/dist/client/quick-apps/launcher.d.ts +7 -0
- package/data/build/dist/client/quick-apps/launcher.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/launcher.js +252 -0
- package/data/build/dist/client/quick-apps/launcher.js.map +1 -0
- package/data/build/dist/client/quick-apps/presentation.d.ts +16 -0
- package/data/build/dist/client/quick-apps/presentation.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/presentation.js +31 -0
- package/data/build/dist/client/quick-apps/presentation.js.map +1 -0
- package/data/build/dist/client/quick-apps/reorder-animation.d.ts +6 -0
- package/data/build/dist/client/quick-apps/reorder-animation.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/reorder-animation.js +50 -0
- package/data/build/dist/client/quick-apps/reorder-animation.js.map +1 -0
- package/data/build/dist/client/quick-apps/reorder.d.ts +26 -0
- package/data/build/dist/client/quick-apps/reorder.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/reorder.js +128 -0
- package/data/build/dist/client/quick-apps/reorder.js.map +1 -0
- package/data/build/dist/client/quick-apps/styles.d.ts +3 -0
- package/data/build/dist/client/quick-apps/styles.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/styles.js +143 -0
- package/data/build/dist/client/quick-apps/styles.js.map +1 -0
- package/data/build/dist/client/quick-apps/ui.d.ts +20 -0
- package/data/build/dist/client/quick-apps/ui.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/ui.js +21 -0
- package/data/build/dist/client/quick-apps/ui.js.map +1 -0
- package/data/build/dist/client/quick-apps/viewer.d.ts +16 -0
- package/data/build/dist/client/quick-apps/viewer.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/viewer.js +155 -0
- package/data/build/dist/client/quick-apps/viewer.js.map +1 -0
- package/data/build/dist/client/quick-apps/workspace-picker.d.ts +19 -0
- package/data/build/dist/client/quick-apps/workspace-picker.d.ts.map +1 -0
- package/data/build/dist/client/quick-apps/workspace-picker.js +30 -0
- package/data/build/dist/client/quick-apps/workspace-picker.js.map +1 -0
- package/data/build/dist/client/session-translation-chat.d.ts +1 -1
- package/data/build/dist/client/session-translation-chat.d.ts.map +1 -1
- package/data/build/dist/client/session-translation-chat.js +26 -22
- package/data/build/dist/client/session-translation-chat.js.map +1 -1
- package/data/build/dist/client/sidebar-footer-style.d.ts +13 -0
- package/data/build/dist/client/sidebar-footer-style.d.ts.map +1 -0
- package/data/build/dist/client/sidebar-footer-style.js +54 -0
- package/data/build/dist/client/sidebar-footer-style.js.map +1 -0
- package/data/build/dist/client/terminal/model.d.ts.map +1 -1
- package/data/build/dist/client/terminal/model.js +2 -1
- package/data/build/dist/client/terminal/model.js.map +1 -1
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts +4 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js +8 -0
- package/data/build/dist/dsh-capabilities/client/composer-slot-selectors.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +18 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +21 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js.map +1 -1
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts +18 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js +11 -0
- package/data/build/dist/dsh-capabilities/client/quick-app-footer-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts +8 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js +100 -0
- package/data/build/dist/dsh-capabilities/client/session-performance-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts +3 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js +22 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-footer-icon-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts +11 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js +97 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-credentials.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts +36 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js +164 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-https-provider.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts +44 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js +240 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-lan-ports.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts +37 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js +35 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-origin-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts +13 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js +30 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts +21 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js +132 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-proxy-provider.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.js +33 -0
- package/data/build/dist/dsh-capabilities/host/quick-app-transport.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts +7 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js +18 -0
- package/data/build/dist/dsh-capabilities/host/session-performance-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts +13 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.d.ts.map +1 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js +24 -0
- package/data/build/dist/dsh-capabilities/host/workspace-directory-adapter.js.map +1 -0
- package/data/build/dist/dsh-capabilities/matrix.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/matrix.js +7 -1
- package/data/build/dist/dsh-capabilities/matrix.js.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.d.ts +1 -0
- package/data/build/dist/dsh-capabilities/routes.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/routes.js +16 -0
- package/data/build/dist/dsh-capabilities/routes.js.map +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts +1 -1
- package/data/build/dist/dsh-capabilities/types.d.ts.map +1 -1
- package/data/build/dist/dsh-capabilities/types.js.map +1 -1
- package/data/build/dist/host/cli-adapters/binary-detection.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/binary-detection.js +7 -3
- package/data/build/dist/host/cli-adapters/binary-detection.js.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts +1 -0
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/claude-driver.js +179 -20
- package/data/build/dist/host/cli-adapters/claude-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts +18 -0
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-driver.js +97 -5
- package/data/build/dist/host/cli-adapters/codex-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts +91 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.js +8 -0
- package/data/build/dist/host/cli-adapters/codex-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance.d.ts +16 -0
- package/data/build/dist/host/cli-adapters/codex-performance.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/codex-performance.js +81 -0
- package/data/build/dist/host/cli-adapters/codex-performance.js.map +1 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js +17 -4
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/feature.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/feature.js +37 -8
- package/data/build/dist/host/cli-adapters/feature.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/grok-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-driver.js +161 -25
- package/data/build/dist/host/cli-adapters/grok-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts +123 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js +47 -0
- package/data/build/dist/host/cli-adapters/grok-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-usage.d.ts +45 -0
- package/data/build/dist/host/cli-adapters/grok-usage.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/grok-usage.js +197 -0
- package/data/build/dist/host/cli-adapters/grok-usage.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-installation.d.ts +5 -0
- package/data/build/dist/host/cli-adapters/management-installation.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-installation.js +131 -0
- package/data/build/dist/host/cli-adapters/management-installation.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-methods.d.ts +32 -0
- package/data/build/dist/host/cli-adapters/management-methods.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-methods.js +135 -0
- package/data/build/dist/host/cli-adapters/management-methods.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management-process.d.ts +7 -0
- package/data/build/dist/host/cli-adapters/management-process.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management-process.js +51 -0
- package/data/build/dist/host/cli-adapters/management-process.js.map +1 -0
- package/data/build/dist/host/cli-adapters/management.d.ts +32 -0
- package/data/build/dist/host/cli-adapters/management.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/management.js +172 -0
- package/data/build/dist/host/cli-adapters/management.js.map +1 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts +1 -0
- package/data/build/dist/host/cli-adapters/model-catalog.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/model-catalog.js +62 -0
- package/data/build/dist/host/cli-adapters/model-catalog.js.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +22 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/opencode-driver.js +105 -17
- package/data/build/dist/host/cli-adapters/opencode-driver.js.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/process-utils.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/process-utils.js +16 -11
- package/data/build/dist/host/cli-adapters/process-utils.js.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/registry.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/registry.js +33 -5
- package/data/build/dist/host/cli-adapters/registry.js.map +1 -1
- package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts +74 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.js +83 -0
- package/data/build/dist/host/cli-adapters/session-performance-projection.js.map +1 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +3 -1
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts.map +1 -1
- package/data/build/dist/host/cli-adapters/stream-normalizer.js +2 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.js.map +1 -1
- package/data/build/dist/host/cli-adapters/update-check.d.ts +34 -0
- package/data/build/dist/host/cli-adapters/update-check.d.ts.map +1 -0
- package/data/build/dist/host/cli-adapters/update-check.js +263 -0
- package/data/build/dist/host/cli-adapters/update-check.js.map +1 -0
- package/data/build/dist/host/features/file-management.d.ts.map +1 -1
- package/data/build/dist/host/features/file-management.js +8 -0
- package/data/build/dist/host/features/file-management.js.map +1 -1
- package/data/build/dist/host/features/index.d.ts.map +1 -1
- package/data/build/dist/host/features/index.js +2 -0
- package/data/build/dist/host/features/index.js.map +1 -1
- package/data/build/dist/host/features/lan-access-dsh.js +1 -1
- package/data/build/dist/host/features/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/features/peer-host.d.ts.map +1 -1
- package/data/build/dist/host/features/peer-host.js +7 -0
- package/data/build/dist/host/features/peer-host.js.map +1 -1
- package/data/build/dist/host/features/quick-apps.d.ts +4 -0
- package/data/build/dist/host/features/quick-apps.d.ts.map +1 -0
- package/data/build/dist/host/features/quick-apps.js +158 -0
- package/data/build/dist/host/features/quick-apps.js.map +1 -0
- package/data/build/dist/host/features/session-prompt-translation.d.ts +1 -1
- package/data/build/dist/host/features/session-prompt-translation.d.ts.map +1 -1
- package/data/build/dist/host/features/session-prompt-translation.js +2 -1
- package/data/build/dist/host/features/session-prompt-translation.js.map +1 -1
- package/data/build/dist/host/features/session-translation-protection.d.ts +6 -0
- package/data/build/dist/host/features/session-translation-protection.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-protection.js +21 -0
- package/data/build/dist/host/features/session-translation-protection.js.map +1 -1
- package/data/build/dist/host/features/session-translation-recovery.d.ts +3 -2
- package/data/build/dist/host/features/session-translation-recovery.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-recovery.js +6 -3
- package/data/build/dist/host/features/session-translation-recovery.js.map +1 -1
- package/data/build/dist/host/features/session-translation-service.d.ts +3 -0
- package/data/build/dist/host/features/session-translation-service.d.ts.map +1 -1
- package/data/build/dist/host/features/session-translation-service.js +14 -8
- package/data/build/dist/host/features/session-translation-service.js.map +1 -1
- package/data/build/dist/host/features/types.d.ts +10 -0
- package/data/build/dist/host/features/types.d.ts.map +1 -1
- package/data/build/dist/host/html-workspace-files.d.ts +3 -0
- package/data/build/dist/host/html-workspace-files.d.ts.map +1 -0
- package/data/build/dist/host/html-workspace-files.js +135 -0
- package/data/build/dist/host/html-workspace-files.js.map +1 -0
- package/data/build/dist/host/index.d.ts.map +1 -1
- package/data/build/dist/host/index.js +27 -2
- package/data/build/dist/host/index.js.map +1 -1
- package/data/build/dist/host/lan-access-dsh.d.ts +5 -1
- package/data/build/dist/host/lan-access-dsh.d.ts.map +1 -1
- package/data/build/dist/host/lan-access-dsh.js +43 -2
- package/data/build/dist/host/lan-access-dsh.js.map +1 -1
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts +5 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.d.ts.map +1 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.js +27 -0
- package/data/build/dist/host/modules/peer-host/quick-app-gateway.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/browse.d.ts +5 -0
- package/data/build/dist/host/modules/quick-apps/browse.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/browse.js +37 -0
- package/data/build/dist/host/modules/quick-apps/browse.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.d.ts +4 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.js +39 -0
- package/data/build/dist/host/modules/quick-apps/code-revision.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/documents.d.ts +14 -0
- package/data/build/dist/host/modules/quick-apps/documents.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/documents.js +87 -0
- package/data/build/dist/host/modules/quick-apps/documents.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/errors.d.ts +8 -0
- package/data/build/dist/host/modules/quick-apps/errors.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/errors.js +15 -0
- package/data/build/dist/host/modules/quick-apps/errors.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/file-api.d.ts +30 -0
- package/data/build/dist/host/modules/quick-apps/file-api.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/file-api.js +149 -0
- package/data/build/dist/host/modules/quick-apps/file-api.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/launches.d.ts +35 -0
- package/data/build/dist/host/modules/quick-apps/launches.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/launches.js +80 -0
- package/data/build/dist/host/modules/quick-apps/launches.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/paths.d.ts +14 -0
- package/data/build/dist/host/modules/quick-apps/paths.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/paths.js +72 -0
- package/data/build/dist/host/modules/quick-apps/paths.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/registry.d.ts +30 -0
- package/data/build/dist/host/modules/quick-apps/registry.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/registry.js +186 -0
- package/data/build/dist/host/modules/quick-apps/registry.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/remote.d.ts +38 -0
- package/data/build/dist/host/modules/quick-apps/remote.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/remote.js +237 -0
- package/data/build/dist/host/modules/quick-apps/remote.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/service.d.ts +27 -0
- package/data/build/dist/host/modules/quick-apps/service.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/service.js +170 -0
- package/data/build/dist/host/modules/quick-apps/service.js.map +1 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts +8 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.d.ts.map +1 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.js +181 -0
- package/data/build/dist/host/modules/quick-apps/static-handler.js.map +1 -0
- package/data/build/dist/host/native-session-bridge.d.ts +5 -0
- package/data/build/dist/host/native-session-bridge.d.ts.map +1 -1
- package/data/build/dist/host/native-session-bridge.js +3 -0
- package/data/build/dist/host/native-session-bridge.js.map +1 -1
- package/data/build/dist/host/rpc.d.ts.map +1 -1
- package/data/build/dist/host/rpc.js +8 -3
- package/data/build/dist/host/rpc.js.map +1 -1
- package/data/build/dist/host/settings.d.ts.map +1 -1
- package/data/build/dist/host/settings.js +13 -0
- package/data/build/dist/host/settings.js.map +1 -1
- package/data/build/dist/host/workspace-file-mutations.d.ts +2 -0
- package/data/build/dist/host/workspace-file-mutations.d.ts.map +1 -0
- package/data/build/dist/host/workspace-file-mutations.js +15 -0
- package/data/build/dist/host/workspace-file-mutations.js.map +1 -0
- package/data/build/dist/shared/codex-performance.d.ts +3 -0
- package/data/build/dist/shared/codex-performance.d.ts.map +1 -0
- package/data/build/dist/shared/codex-performance.js +2 -0
- package/data/build/dist/shared/codex-performance.js.map +1 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +25 -0
- package/data/build/dist/shared/contracts/cli-adapter.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/cli-management.d.ts +29 -0
- package/data/build/dist/shared/contracts/cli-management.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/cli-management.js +2 -0
- package/data/build/dist/shared/contracts/cli-management.js.map +1 -0
- package/data/build/dist/shared/contracts/config.d.ts +2 -0
- package/data/build/dist/shared/contracts/config.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/config.js.map +1 -1
- package/data/build/dist/shared/contracts/quick-apps.d.ts +68 -0
- package/data/build/dist/shared/contracts/quick-apps.d.ts.map +1 -0
- package/data/build/dist/shared/contracts/quick-apps.js +4 -0
- package/data/build/dist/shared/contracts/quick-apps.js.map +1 -0
- package/data/build/dist/shared/contracts/session-translation.d.ts +8 -3
- package/data/build/dist/shared/contracts/session-translation.d.ts.map +1 -1
- package/data/build/dist/shared/contracts/session-translation.js +14 -0
- package/data/build/dist/shared/contracts/session-translation.js.map +1 -1
- package/data/build/dist/shared/contracts/version.d.ts +1 -1
- package/data/build/dist/shared/contracts/version.js +1 -1
- package/data/build/dist/shared/peer-host-http-routes.d.ts +4 -0
- package/data/build/dist/shared/peer-host-http-routes.d.ts.map +1 -1
- package/data/build/dist/shared/peer-host-http-routes.js +4 -0
- package/data/build/dist/shared/peer-host-http-routes.js.map +1 -1
- package/data/build/dist/shared/quick-app-proxy-path.d.ts +6 -0
- package/data/build/dist/shared/quick-app-proxy-path.d.ts.map +1 -0
- package/data/build/dist/shared/quick-app-proxy-path.js +18 -0
- package/data/build/dist/shared/quick-app-proxy-path.js.map +1 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts +7 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.d.ts.map +1 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.js +10 -0
- package/data/build/dist/shared/quick-apps-bootstrap-locale.js.map +1 -0
- package/data/build/dist/shared/request-performance.d.ts +15 -0
- package/data/build/dist/shared/request-performance.d.ts.map +1 -0
- package/data/build/dist/shared/request-performance.js +3 -0
- package/data/build/dist/shared/request-performance.js.map +1 -0
- package/package.json +1 -1
- package/profile/README.md +2 -2
- package/profile/package.json +2 -2
- package/profile/version.json +1 -1
- package/version.json +1 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const grokPerformanceProjection: {
|
|
3
|
+
key: string;
|
|
4
|
+
stateVersion: number;
|
|
5
|
+
stateSchema: z.ZodObject<{
|
|
6
|
+
turns: z.ZodNumber;
|
|
7
|
+
steps: z.ZodNumber;
|
|
8
|
+
llmMs: z.ZodNumber;
|
|
9
|
+
toolMs: z.ZodNumber;
|
|
10
|
+
ttftMs: z.ZodNumber;
|
|
11
|
+
ttftSteps: z.ZodNumber;
|
|
12
|
+
decodeMs: z.ZodNumber;
|
|
13
|
+
decodeTokens: z.ZodNumber;
|
|
14
|
+
lastTurn: z.ZodNullable<z.ZodNumber>;
|
|
15
|
+
lastRequestId: z.ZodNullable<z.ZodString>;
|
|
16
|
+
pendingCalls: z.ZodRecord<z.ZodString, z.ZodNumber>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
init: () => {
|
|
19
|
+
turns: number;
|
|
20
|
+
steps: number;
|
|
21
|
+
llmMs: number;
|
|
22
|
+
toolMs: number;
|
|
23
|
+
ttftMs: number;
|
|
24
|
+
ttftSteps: number;
|
|
25
|
+
decodeMs: number;
|
|
26
|
+
decodeTokens: number;
|
|
27
|
+
lastTurn: number | null;
|
|
28
|
+
lastRequestId: string | null;
|
|
29
|
+
pendingCalls: Record<string, number>;
|
|
30
|
+
};
|
|
31
|
+
apply(state: {
|
|
32
|
+
turns: number;
|
|
33
|
+
steps: number;
|
|
34
|
+
llmMs: number;
|
|
35
|
+
toolMs: number;
|
|
36
|
+
ttftMs: number;
|
|
37
|
+
ttftSteps: number;
|
|
38
|
+
decodeMs: number;
|
|
39
|
+
decodeTokens: number;
|
|
40
|
+
lastTurn: number | null;
|
|
41
|
+
lastRequestId: string | null;
|
|
42
|
+
pendingCalls: Record<string, number>;
|
|
43
|
+
}, event: import("./session-performance-projection.js").RequestPerformanceEvent): {
|
|
44
|
+
turns: number;
|
|
45
|
+
steps: number;
|
|
46
|
+
llmMs: number;
|
|
47
|
+
toolMs: number;
|
|
48
|
+
ttftMs: number;
|
|
49
|
+
ttftSteps: number;
|
|
50
|
+
decodeMs: number;
|
|
51
|
+
decodeTokens: number;
|
|
52
|
+
lastTurn: number | null;
|
|
53
|
+
lastRequestId: string | null;
|
|
54
|
+
pendingCalls: Record<string, number>;
|
|
55
|
+
};
|
|
56
|
+
wire: {
|
|
57
|
+
viewSchema: z.ZodObject<{
|
|
58
|
+
turns: z.ZodNumber;
|
|
59
|
+
steps: z.ZodNumber;
|
|
60
|
+
llmMs: z.ZodNumber;
|
|
61
|
+
toolMs: z.ZodNumber;
|
|
62
|
+
ttftMs: z.ZodNumber;
|
|
63
|
+
ttftSteps: z.ZodNumber;
|
|
64
|
+
decodeMs: z.ZodNumber;
|
|
65
|
+
decodeTokens: z.ZodNumber;
|
|
66
|
+
}, z.core.$strict>;
|
|
67
|
+
view: ({ lastTurn: _turn, lastRequestId: _request, pendingCalls: _calls, ...totals }: {
|
|
68
|
+
turns: number;
|
|
69
|
+
steps: number;
|
|
70
|
+
llmMs: number;
|
|
71
|
+
toolMs: number;
|
|
72
|
+
ttftMs: number;
|
|
73
|
+
ttftSteps: number;
|
|
74
|
+
decodeMs: number;
|
|
75
|
+
decodeTokens: number;
|
|
76
|
+
lastTurn: number | null;
|
|
77
|
+
lastRequestId: string | null;
|
|
78
|
+
pendingCalls: Record<string, number>;
|
|
79
|
+
}) => {
|
|
80
|
+
turns: number;
|
|
81
|
+
steps: number;
|
|
82
|
+
llmMs: number;
|
|
83
|
+
toolMs: number;
|
|
84
|
+
ttftMs: number;
|
|
85
|
+
ttftSteps: number;
|
|
86
|
+
decodeMs: number;
|
|
87
|
+
decodeTokens: number;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
declare const contextStateSchema: z.ZodObject<{
|
|
92
|
+
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
93
|
+
pressureTokens: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
model: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strict>;
|
|
96
|
+
type ContextState = z.infer<typeof contextStateSchema>;
|
|
97
|
+
/** Grok's current context is not the sum of the prompts billed during its tool loop. */
|
|
98
|
+
export declare const grokContextProjection: {
|
|
99
|
+
key: string;
|
|
100
|
+
stateVersion: number;
|
|
101
|
+
stateSchema: z.ZodObject<{
|
|
102
|
+
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
103
|
+
pressureTokens: z.ZodOptional<z.ZodNumber>;
|
|
104
|
+
model: z.ZodOptional<z.ZodString>;
|
|
105
|
+
}, z.core.$strict>;
|
|
106
|
+
init: () => ContextState;
|
|
107
|
+
apply(state: ContextState, event: {
|
|
108
|
+
type: string;
|
|
109
|
+
data: any;
|
|
110
|
+
}): ContextState;
|
|
111
|
+
wire: {
|
|
112
|
+
viewSchema: z.ZodObject<{
|
|
113
|
+
contextWindow: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
pressureTokens: z.ZodOptional<z.ZodNumber>;
|
|
115
|
+
}, z.core.$strict>;
|
|
116
|
+
view: ({ model: _model, ...pressure }: ContextState) => {
|
|
117
|
+
contextWindow?: number | undefined;
|
|
118
|
+
pressureTokens?: number | undefined;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=grok-performance-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-performance-projection.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/grok-performance-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGpC,CAAA;AAMF,QAAA,MAAM,kBAAkB;;;;kBAA0D,CAAA;AAClF,KAAK,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAEtD,wFAAwF;AACxF,eAAO,MAAM,qBAAqB;;;;;;;;gBAEtB,YAAY;iBACT,YAAY,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,YAAY;;;;;;+CAsBD,YAAY;;;;;CACxF,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { GROK_CONTEXT_PROJECTION, GROK_PERFORMANCE_PROJECTION } from '../../shared/request-performance.js';
|
|
3
|
+
import { createSessionPerformanceProjection } from './session-performance-projection.js';
|
|
4
|
+
export const grokPerformanceProjection = createSessionPerformanceProjection(GROK_PERFORMANCE_PROJECTION, chunk => {
|
|
5
|
+
const batch = chunk.codingnsRequestPerformance;
|
|
6
|
+
return Array.isArray(batch?.samples) ? batch : undefined;
|
|
7
|
+
});
|
|
8
|
+
const pressureSchema = z.object({
|
|
9
|
+
contextWindow: z.number().int().positive().optional(),
|
|
10
|
+
pressureTokens: z.number().int().nonnegative().optional(),
|
|
11
|
+
}).strict();
|
|
12
|
+
const contextStateSchema = pressureSchema.extend({ model: z.string().optional() });
|
|
13
|
+
/** Grok's current context is not the sum of the prompts billed during its tool loop. */
|
|
14
|
+
export const grokContextProjection = {
|
|
15
|
+
key: GROK_CONTEXT_PROJECTION, stateVersion: 1, stateSchema: contextStateSchema,
|
|
16
|
+
init: () => ({}),
|
|
17
|
+
apply(state, event) {
|
|
18
|
+
if (event.type === 'request/context') {
|
|
19
|
+
if (event.data.provider !== 'grok')
|
|
20
|
+
return {};
|
|
21
|
+
// Step placeholders and the legacy meter's capacity anchor cannot replace
|
|
22
|
+
// a live provider observation, including a resized window on the same model.
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
if (event.type !== 'assistant/attempt' || !Array.isArray(event.data.stream))
|
|
26
|
+
return state;
|
|
27
|
+
for (const record of event.data.stream) {
|
|
28
|
+
if (record?.type !== 'chunk' || record.chunk?.type !== 'usage')
|
|
29
|
+
continue;
|
|
30
|
+
const usage = record.chunk.codingnsContextObservation;
|
|
31
|
+
if (usage === undefined)
|
|
32
|
+
continue;
|
|
33
|
+
if (typeof usage.contextModelId === 'string' && usage.contextModelId !== state.model)
|
|
34
|
+
state = { model: usage.contextModelId };
|
|
35
|
+
const parsed = pressureSchema.safeParse({ contextWindow: usage.contextWindow, pressureTokens: usage.contextTokens });
|
|
36
|
+
if (parsed.success)
|
|
37
|
+
state = {
|
|
38
|
+
...state,
|
|
39
|
+
...(parsed.data.contextWindow === undefined ? {} : { contextWindow: parsed.data.contextWindow }),
|
|
40
|
+
...(parsed.data.pressureTokens === undefined ? {} : { pressureTokens: parsed.data.pressureTokens }),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return state;
|
|
44
|
+
},
|
|
45
|
+
wire: { viewSchema: pressureSchema, view: ({ model: _model, ...pressure }) => pressure },
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=grok-performance-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-performance-projection.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/grok-performance-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { CodingNsAgentEvent } from '../../shared/contracts/cli-adapter.js';
|
|
2
|
+
import type { JsonRpcMessage } from './json-rpc-process.js';
|
|
3
|
+
type Usage = Extract<CodingNsAgentEvent, {
|
|
4
|
+
type: 'usage';
|
|
5
|
+
}>;
|
|
6
|
+
type Observation = Extract<CodingNsAgentEvent, {
|
|
7
|
+
type: 'usage-observation';
|
|
8
|
+
}>;
|
|
9
|
+
/** Model capacity belongs to the provider session, not to a billed request total. */
|
|
10
|
+
export declare class GrokContextUsage {
|
|
11
|
+
modelId: string | undefined;
|
|
12
|
+
private readonly windows;
|
|
13
|
+
observe(value: unknown): void;
|
|
14
|
+
get contextWindow(): number | undefined;
|
|
15
|
+
setWindow(window: number): void;
|
|
16
|
+
}
|
|
17
|
+
/** Observe the RPC reader while DSH consumers and translation may be suspended. */
|
|
18
|
+
export declare class GrokPromptUsage {
|
|
19
|
+
private readonly id;
|
|
20
|
+
private readonly context;
|
|
21
|
+
private readonly now;
|
|
22
|
+
private aggregate;
|
|
23
|
+
private responseUsage;
|
|
24
|
+
private readonly requests;
|
|
25
|
+
private readonly samples;
|
|
26
|
+
private readonly completedStreams;
|
|
27
|
+
private readonly signatures;
|
|
28
|
+
private active;
|
|
29
|
+
private startedAt;
|
|
30
|
+
private contextTokens;
|
|
31
|
+
private responseContextTokens;
|
|
32
|
+
private contextWindow;
|
|
33
|
+
private observedSamples;
|
|
34
|
+
private lastContext;
|
|
35
|
+
constructor(id: string, context: GrokContextUsage, now?: () => number);
|
|
36
|
+
observe(message: JsonRpcMessage): void;
|
|
37
|
+
observeResponse(value: unknown): void;
|
|
38
|
+
finish(): Usage | undefined;
|
|
39
|
+
/** Drain each measurement once into the notification queue, before a consumer can block it. */
|
|
40
|
+
takeObservation(): Observation | undefined;
|
|
41
|
+
private contextFields;
|
|
42
|
+
private completeRequest;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=grok-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-usage.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/grok-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAE/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAG3D,KAAK,KAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAC3D,KAAK,WAAW,GAAG,OAAO,CAAC,kBAAkB,EAAE;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAA;AAE7E,qFAAqF;AACrF,qBAAa,gBAAgB;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAkB7B,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAEtC;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAGhC;AAED,mFAAmF;AACnF,qBAAa,eAAe;IAed,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAU,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAoB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAdzG,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,MAAM,CAAyD;IACvE,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,WAAW,CAAqF;gBAE3E,EAAE,EAAE,MAAM,EAAmB,OAAO,EAAE,gBAAgB,EAAmB,GAAG,GAAE,MAAM,MAAiB;IAIlI,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA+CtC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAWrC,MAAM,IAAI,KAAK,GAAG,SAAS;IAY3B,+FAA+F;IAC/F,eAAe,IAAI,WAAW,GAAG,SAAS;IAc1C,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,eAAe;CASxB"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { isRecord, usageChunk } from './rpc-driver-utils.js';
|
|
2
|
+
/** Model capacity belongs to the provider session, not to a billed request total. */
|
|
3
|
+
export class GrokContextUsage {
|
|
4
|
+
modelId;
|
|
5
|
+
windows = new Map();
|
|
6
|
+
observe(value) {
|
|
7
|
+
if (!isRecord(value))
|
|
8
|
+
return;
|
|
9
|
+
const params = isRecord(value.params) ? value.params : value;
|
|
10
|
+
const meta = isRecord(params._meta) ? params._meta : {};
|
|
11
|
+
if (meta.isReplay === true)
|
|
12
|
+
return;
|
|
13
|
+
const models = [params.models, meta.modelState, params].find(item => isRecord(item) && Array.isArray(item.availableModels));
|
|
14
|
+
if (isRecord(models)) {
|
|
15
|
+
for (const model of models.availableModels) {
|
|
16
|
+
if (!isRecord(model))
|
|
17
|
+
continue;
|
|
18
|
+
const id = model.modelId ?? model.id;
|
|
19
|
+
const window = token(model._meta?.totalContextTokens);
|
|
20
|
+
if (typeof id === 'string' && window !== undefined && window > 0)
|
|
21
|
+
this.windows.set(id, window);
|
|
22
|
+
}
|
|
23
|
+
if (typeof models.currentModelId === 'string')
|
|
24
|
+
this.modelId = models.currentModelId;
|
|
25
|
+
}
|
|
26
|
+
if (typeof meta.modelId === 'string')
|
|
27
|
+
this.modelId = meta.modelId;
|
|
28
|
+
}
|
|
29
|
+
get contextWindow() {
|
|
30
|
+
return this.modelId === undefined ? undefined : this.windows.get(this.modelId);
|
|
31
|
+
}
|
|
32
|
+
setWindow(window) {
|
|
33
|
+
if (this.modelId !== undefined && window > 0)
|
|
34
|
+
this.windows.set(this.modelId, window);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/** Observe the RPC reader while DSH consumers and translation may be suspended. */
|
|
38
|
+
export class GrokPromptUsage {
|
|
39
|
+
id;
|
|
40
|
+
context;
|
|
41
|
+
now;
|
|
42
|
+
aggregate;
|
|
43
|
+
responseUsage;
|
|
44
|
+
requests = [];
|
|
45
|
+
samples = [];
|
|
46
|
+
completedStreams = new Set();
|
|
47
|
+
signatures = new Set();
|
|
48
|
+
active;
|
|
49
|
+
startedAt;
|
|
50
|
+
contextTokens;
|
|
51
|
+
responseContextTokens;
|
|
52
|
+
contextWindow;
|
|
53
|
+
observedSamples = 0;
|
|
54
|
+
lastContext;
|
|
55
|
+
constructor(id, context, now = Date.now) {
|
|
56
|
+
this.id = id;
|
|
57
|
+
this.context = context;
|
|
58
|
+
this.now = now;
|
|
59
|
+
this.startedAt = now();
|
|
60
|
+
}
|
|
61
|
+
observe(message) {
|
|
62
|
+
const params = isRecord(message.params) ? message.params : message;
|
|
63
|
+
const update = isRecord(params.update) ? params.update : params;
|
|
64
|
+
const meta = isRecord(params._meta) ? params._meta : {};
|
|
65
|
+
if (meta.isReplay === true)
|
|
66
|
+
return;
|
|
67
|
+
this.context.observe(message);
|
|
68
|
+
const time = this.now();
|
|
69
|
+
const streamStart = token(meta.streamStartMs);
|
|
70
|
+
if (streamStart !== undefined && !this.completedStreams.has(streamStart)
|
|
71
|
+
&& this.active?.firstTokenAt !== streamStart) {
|
|
72
|
+
// Native stream start includes hidden reasoning that precedes visible text.
|
|
73
|
+
const start = this.samples.length === 0 ? token(meta.turnStartMs) ?? this.startedAt : this.startedAt;
|
|
74
|
+
this.active = { startedAt: Math.min(start, streamStart), firstTokenAt: streamStart };
|
|
75
|
+
}
|
|
76
|
+
this.contextTokens = token(meta.totalTokens) ?? this.contextTokens;
|
|
77
|
+
const type = String(update.sessionUpdate ?? update.type ?? '').toLowerCase();
|
|
78
|
+
if (type === 'usage_update' || type === 'usage-update') {
|
|
79
|
+
this.aggregate = readUsage(update) ?? this.aggregate;
|
|
80
|
+
this.contextTokens = token(update.used ?? update.contextTokens) ?? this.contextTokens;
|
|
81
|
+
const size = token(update.size ?? update.contextWindow);
|
|
82
|
+
if (size !== undefined && size > 0) {
|
|
83
|
+
this.contextWindow = size;
|
|
84
|
+
this.context.setWindow(size);
|
|
85
|
+
}
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (type === 'response_completed') {
|
|
89
|
+
const signature = typeof update.signature === 'string' ? update.signature : undefined;
|
|
90
|
+
if (signature !== undefined && this.signatures.has(signature))
|
|
91
|
+
return;
|
|
92
|
+
if (signature !== undefined)
|
|
93
|
+
this.signatures.add(signature);
|
|
94
|
+
const usage = readUsage(update);
|
|
95
|
+
if (usage !== undefined) {
|
|
96
|
+
this.requests.push(usage);
|
|
97
|
+
this.completeRequest(usage.outputTokens, time);
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (type === 'tool_call_update' && ['completed', 'failed'].includes(String(update.status).toLowerCase()))
|
|
102
|
+
this.startedAt = time;
|
|
103
|
+
if (['turn_completed', 'turn_complete', 'prompt_complete', 'completed', 'done'].includes(type)) {
|
|
104
|
+
this.aggregate = readUsage(update) ?? this.aggregate;
|
|
105
|
+
// A turn total may span many calls; it cannot be paired with the last stream.
|
|
106
|
+
if (update.usage?.modelCalls === 1 && this.requests.length === 0 && this.aggregate !== undefined) {
|
|
107
|
+
this.completeRequest(this.aggregate.outputTokens, time);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
observeResponse(value) {
|
|
112
|
+
if (!isRecord(value) || !isRecord(value._meta))
|
|
113
|
+
return;
|
|
114
|
+
this.context.observe(value);
|
|
115
|
+
const meta = value._meta;
|
|
116
|
+
this.responseUsage = readUsage({ usage: meta.usage });
|
|
117
|
+
this.responseContextTokens = token(meta.totalTokens);
|
|
118
|
+
// Some versions omit response_completed but retain the last call's usage here.
|
|
119
|
+
const lastOutput = token(meta.outputTokens);
|
|
120
|
+
if (lastOutput !== undefined)
|
|
121
|
+
this.completeRequest(lastOutput, this.now());
|
|
122
|
+
}
|
|
123
|
+
finish() {
|
|
124
|
+
const usage = this.responseUsage ?? this.aggregate ?? sumRequests(this.requests);
|
|
125
|
+
const context = this.contextFields();
|
|
126
|
+
const { contextTokens } = context;
|
|
127
|
+
if (usage === undefined && contextTokens === undefined)
|
|
128
|
+
return undefined;
|
|
129
|
+
return {
|
|
130
|
+
type: 'usage', inputTokens: 0, outputTokens: 0, ...usage,
|
|
131
|
+
...context,
|
|
132
|
+
...(this.samples.length === 0 ? {} : { requestPerformance: { id: this.id, samples: [...this.samples] } }),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Drain each measurement once into the notification queue, before a consumer can block it. */
|
|
136
|
+
takeObservation() {
|
|
137
|
+
const context = this.contextFields();
|
|
138
|
+
const samples = this.samples.slice(this.observedSamples);
|
|
139
|
+
if (samples.length === 0 && context.contextTokens === this.lastContext?.contextTokens
|
|
140
|
+
&& context.contextWindow === this.lastContext?.contextWindow && context.contextModelId === this.lastContext?.contextModelId)
|
|
141
|
+
return undefined;
|
|
142
|
+
if (samples.length === 0 && context.contextTokens === undefined && context.contextWindow === undefined)
|
|
143
|
+
return undefined;
|
|
144
|
+
this.observedSamples = this.samples.length;
|
|
145
|
+
this.lastContext = context;
|
|
146
|
+
return {
|
|
147
|
+
type: 'usage-observation', ...context,
|
|
148
|
+
...(samples.length === 0 ? {} : { requestPerformance: { id: samples.at(-1).id, samples } }),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
contextFields() {
|
|
152
|
+
const contextTokens = this.responseContextTokens ?? this.contextTokens;
|
|
153
|
+
const contextWindow = this.contextWindow ?? this.context.contextWindow;
|
|
154
|
+
return {
|
|
155
|
+
...(contextTokens === undefined ? {} : { contextTokens }),
|
|
156
|
+
...(contextWindow === undefined ? {} : { contextWindow }),
|
|
157
|
+
...(contextTokens === undefined || contextWindow === undefined ? {} : {
|
|
158
|
+
contextUsageRatio: Number(Math.min(1, contextTokens / contextWindow).toFixed(6)),
|
|
159
|
+
}),
|
|
160
|
+
...(this.context.modelId === undefined ? {} : { contextModelId: this.context.modelId }),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
completeRequest(outputTokens, time) {
|
|
164
|
+
const active = this.active;
|
|
165
|
+
this.active = undefined;
|
|
166
|
+
this.startedAt = time;
|
|
167
|
+
if (active === undefined)
|
|
168
|
+
return;
|
|
169
|
+
this.completedStreams.add(active.firstTokenAt);
|
|
170
|
+
if (outputTokens <= 0 || time <= active.firstTokenAt)
|
|
171
|
+
return;
|
|
172
|
+
this.samples.push({ id: `${this.id}:${active.firstTokenAt}`, ...active, completedAt: time, outputTokens });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function readUsage(value) {
|
|
176
|
+
const event = usageChunk(value);
|
|
177
|
+
return event?.type === 'usage' ? event : undefined;
|
|
178
|
+
}
|
|
179
|
+
function sumRequests(requests) {
|
|
180
|
+
if (requests.length === 0)
|
|
181
|
+
return undefined;
|
|
182
|
+
let inputTokens = 0, outputTokens = 0, cacheReadTokens = 0, cacheWriteTokens = 0;
|
|
183
|
+
let cached = false;
|
|
184
|
+
for (const usage of requests) {
|
|
185
|
+
const cache = (usage.cacheReadTokens ?? 0) + (usage.cacheWriteTokens ?? 0);
|
|
186
|
+
inputTokens += usage.uncachedInputTokens === undefined ? usage.inputTokens : usage.uncachedInputTokens + cache;
|
|
187
|
+
outputTokens += usage.outputTokens;
|
|
188
|
+
cacheReadTokens += usage.cacheReadTokens ?? 0;
|
|
189
|
+
cacheWriteTokens += usage.cacheWriteTokens ?? 0;
|
|
190
|
+
cached ||= usage.cacheReadTokens !== undefined || usage.cacheWriteTokens !== undefined;
|
|
191
|
+
}
|
|
192
|
+
return readUsage({ inputTokens, outputTokens, ...(cached ? { cacheReadTokens, cacheWriteTokens } : {}) });
|
|
193
|
+
}
|
|
194
|
+
function token(value) {
|
|
195
|
+
return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=grok-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grok-usage.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/grok-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Recognize the official standalone layout without treating arbitrary binaries as owned installs. */
|
|
2
|
+
export declare function codexStandaloneDirectory(command: string, platform: NodeJS.Platform, environment?: NodeJS.ProcessEnv): string | undefined;
|
|
3
|
+
/** Retain the npm owner when its launcher resolves into a separate binary package. */
|
|
4
|
+
export declare function resolveManagementInstallation(command: string, packageName?: string, environment?: NodeJS.ProcessEnv): Promise<string | null>;
|
|
5
|
+
//# sourceMappingURL=management-installation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management-installation.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/management-installation.ts"],"names":[],"mappings":"AAKA,sGAAsG;AACtG,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAUrJ;AAED,sFAAsF;AACtF,wBAAsB,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAE/J"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { open, readFile, realpath, stat } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
|
|
4
|
+
import { resolveCommandPath } from './process-utils.js';
|
|
5
|
+
/** Recognize the official standalone layout without treating arbitrary binaries as owned installs. */
|
|
6
|
+
export function codexStandaloneDirectory(command, platform, environment = process.env) {
|
|
7
|
+
if (platform !== 'darwin' && platform !== 'linux')
|
|
8
|
+
return undefined;
|
|
9
|
+
const directory = environment.CODEX_INSTALL_DIR || join(homedir(), '.local', 'bin');
|
|
10
|
+
const home = environment.CODEX_HOME || join(homedir(), '.codex');
|
|
11
|
+
if (!isAbsolute(directory) || !isAbsolute(home))
|
|
12
|
+
return undefined;
|
|
13
|
+
if (command === join(directory, 'codex'))
|
|
14
|
+
return directory;
|
|
15
|
+
const release = relative(join(home, 'packages', 'standalone', 'releases'), command);
|
|
16
|
+
// Current packages use <version>-<target>/bin/codex; older releases contain codex directly.
|
|
17
|
+
if (/^(?:rust-v)?\d+\.\d+\.\d+(?:-[\w.-]+)?\/(?:bin\/)?codex$/u.test(release))
|
|
18
|
+
return directory;
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
/** Retain the npm owner when its launcher resolves into a separate binary package. */
|
|
22
|
+
export async function resolveManagementInstallation(command, packageName, environment = process.env) {
|
|
23
|
+
return resolveInstallation(command, packageName, environment, new Set());
|
|
24
|
+
}
|
|
25
|
+
async function resolveInstallation(command, packageName, environment, visited) {
|
|
26
|
+
const launcher = await resolveCommandPath(command);
|
|
27
|
+
if (launcher === null)
|
|
28
|
+
return null;
|
|
29
|
+
const target = await realpath(launcher).catch(() => launcher);
|
|
30
|
+
if (visited.has(target) || visited.size >= 8)
|
|
31
|
+
return null;
|
|
32
|
+
visited.add(target);
|
|
33
|
+
if (!packageName)
|
|
34
|
+
return target;
|
|
35
|
+
const normalizedTarget = target.replaceAll('\\', '/');
|
|
36
|
+
const brewPackage = normalizedTarget.match(/\/(?:Cellar|Caskroom)\/([^/]+)\//u)?.[1];
|
|
37
|
+
if ((brewPackage && !/^node(?:@\d+)?$/u.test(brewPackage)) || /\.app\/Contents\/|\/resources\/app(?:\.asar)?\//iu.test(normalizedTarget))
|
|
38
|
+
return target;
|
|
39
|
+
const roots = new Set();
|
|
40
|
+
for (const path of [launcher, target]) {
|
|
41
|
+
const normalized = path.replaceAll('\\', '/');
|
|
42
|
+
if (/\/(?:\.bun|\.pnpm|scoop|WinGet)\//iu.test(normalized))
|
|
43
|
+
return target;
|
|
44
|
+
const marker = process.platform === 'win32' ? '/node_modules/' : '/lib/node_modules/';
|
|
45
|
+
const index = normalized.indexOf(marker);
|
|
46
|
+
if (index > 0)
|
|
47
|
+
roots.add(join(normalized.slice(0, index), marker.slice(1), packageName));
|
|
48
|
+
}
|
|
49
|
+
// npm's global launchers live in <prefix>/bin on POSIX and <prefix> on Windows.
|
|
50
|
+
roots.add(process.platform === 'win32'
|
|
51
|
+
? join(dirname(launcher), 'node_modules', packageName)
|
|
52
|
+
: join(dirname(launcher), '..', 'lib', 'node_modules', packageName));
|
|
53
|
+
for (const root of roots) {
|
|
54
|
+
try {
|
|
55
|
+
const metadata = JSON.parse(await readSmallFile(join(root, 'package.json')));
|
|
56
|
+
if (metadata.name !== packageName)
|
|
57
|
+
continue;
|
|
58
|
+
const bins = typeof metadata.bin === 'string' ? { [packageName.split('/').at(-1)]: metadata.bin } : metadata.bin;
|
|
59
|
+
if (!bins || typeof bins !== 'object' || Array.isArray(bins))
|
|
60
|
+
continue;
|
|
61
|
+
for (const [name, value] of Object.entries(bins)) {
|
|
62
|
+
if (typeof value !== 'string' || isAbsolute(value))
|
|
63
|
+
continue;
|
|
64
|
+
const entry = resolve(root, value);
|
|
65
|
+
const within = relative(root, entry);
|
|
66
|
+
if (within === '..' || within.startsWith(`..${sep}`) || isAbsolute(within))
|
|
67
|
+
continue;
|
|
68
|
+
const binary = await realpath(entry).catch(() => null);
|
|
69
|
+
if (binary === null)
|
|
70
|
+
continue;
|
|
71
|
+
if (binary === target)
|
|
72
|
+
return entry;
|
|
73
|
+
if (process.platform === 'win32' && /\.(?:cmd|ps1)$/iu.test(launcher) && basename(launcher).replace(/\.(?:cmd|ps1)$/iu, '') === name) {
|
|
74
|
+
const shim = (await readSmallFile(launcher)).replaceAll('\\', '/');
|
|
75
|
+
const suffix = `/node_modules/${packageName}/${value.replaceAll('\\', '/').replace(/^\.\//u, '')}`;
|
|
76
|
+
if (['%dp0%', '$basedir'].some(base => shim.includes(`${base}${suffix}`)))
|
|
77
|
+
return entry;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch { /* Missing or unrelated metadata is not evidence of package ownership. */ }
|
|
82
|
+
}
|
|
83
|
+
if (packageName === '@openai/codex' && process.platform !== 'win32') {
|
|
84
|
+
try {
|
|
85
|
+
const script = await readExecutableScript(target);
|
|
86
|
+
if (script !== undefined) {
|
|
87
|
+
const wrapped = codexWrapperTarget(script);
|
|
88
|
+
return wrapped ? resolveInstallation(wrapped, packageName, environment, visited) : null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const directory = codexStandaloneDirectory(target, process.platform, environment);
|
|
95
|
+
const entry = directory && join(directory, 'codex');
|
|
96
|
+
// Keep the active launcher only if it points to this release. Never redirect a custom installation.
|
|
97
|
+
if (entry && await realpath(entry).catch(() => null) === target)
|
|
98
|
+
return entry;
|
|
99
|
+
}
|
|
100
|
+
// A wrapper needs verified ownership; an arbitrary exec target must not select an updater.
|
|
101
|
+
return visited.size === 1 ? target : null;
|
|
102
|
+
}
|
|
103
|
+
/** Inspect a literal terminal exec without evaluating the wrapper or sourcing its environment files. */
|
|
104
|
+
function codexWrapperTarget(script) {
|
|
105
|
+
if (!/^#![ \t]*(?:\/bin\/(?:ba|da|k|z)?sh|\/usr\/bin\/env[ \t]+(?:ba|da|k|z)?sh)[ \t]*\r?\n/u.test(script))
|
|
106
|
+
return undefined;
|
|
107
|
+
const lines = script.split(/\r?\n/u).map(line => line.trim()).filter(line => line && !line.startsWith('#'));
|
|
108
|
+
if (lines.filter(line => /^exec[ \t]/u.test(line)).length !== 1)
|
|
109
|
+
return undefined;
|
|
110
|
+
const match = lines.at(-1)?.match(/^exec[ \t]+(?:'([^']+)'|"([^"$`\\]+)"|([/\w@+=,:.-]+))(?:[ \t]+--[\w-]+(?:=[\w.-]+)?)*[ \t]+"\$@"$/u);
|
|
111
|
+
const target = match?.[1] ?? match?.[2] ?? match?.[3];
|
|
112
|
+
return target && isAbsolute(target) && /^(?:codex|codex\.js)$/u.test(basename(target)) ? target : undefined;
|
|
113
|
+
}
|
|
114
|
+
async function readExecutableScript(path) {
|
|
115
|
+
const file = await open(path, 'r');
|
|
116
|
+
try {
|
|
117
|
+
const header = Buffer.alloc(2);
|
|
118
|
+
await file.read(header, 0, header.length, 0);
|
|
119
|
+
return header.toString() === '#!' ? await readSmallFile(path) : undefined;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
await file.close();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function readSmallFile(path) {
|
|
126
|
+
const info = await stat(path);
|
|
127
|
+
if (!info.isFile() || info.size > 65_536)
|
|
128
|
+
throw new Error('Installation metadata is not a small regular file.');
|
|
129
|
+
return readFile(path, 'utf8');
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=management-installation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management-installation.js","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/management-installation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { CodingNsCliAdapterDescriptor } from '../../shared/contracts/cli-adapter.js';
|
|
2
|
+
import type { CliManagementAction, CliManagementMethod } from '../../shared/contracts/cli-management.js';
|
|
3
|
+
export interface ManagementCommand {
|
|
4
|
+
readonly file: string;
|
|
5
|
+
readonly args: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
export interface ManagementMethod extends CliManagementMethod {
|
|
8
|
+
readonly invocation?: ManagementCommand;
|
|
9
|
+
}
|
|
10
|
+
interface Definition {
|
|
11
|
+
readonly sourceUrl: string;
|
|
12
|
+
readonly npm?: string;
|
|
13
|
+
readonly npmArgs?: readonly string[];
|
|
14
|
+
readonly script?: string;
|
|
15
|
+
readonly powershell?: string;
|
|
16
|
+
readonly scriptShell?: 'bash' | 'sh';
|
|
17
|
+
readonly update?: readonly string[];
|
|
18
|
+
readonly brew?: readonly string[];
|
|
19
|
+
readonly note?: string;
|
|
20
|
+
readonly manual?: boolean;
|
|
21
|
+
readonly windowsManual?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const AGENT_MANAGEMENT_DEFINITIONS: Readonly<Record<string, Definition>>;
|
|
24
|
+
export declare function managementNpmPackage(adapter: CodingNsCliAdapterDescriptor): string | undefined;
|
|
25
|
+
export declare function managementMethods(adapter: CodingNsCliAdapterDescriptor, action: CliManagementAction, platform: NodeJS.Platform, arch: string): {
|
|
26
|
+
sourceUrl: string;
|
|
27
|
+
methods: ManagementMethod[];
|
|
28
|
+
};
|
|
29
|
+
/** Select only a matching package owner or an official self-updater. */
|
|
30
|
+
export declare function automaticUpdateMethod(adapter: CodingNsCliAdapterDescriptor, methods: ManagementMethod[], platform: NodeJS.Platform): string | undefined;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=management-methods.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"management-methods.d.ts","sourceRoot":"","sources":["../../../../../src/host/cli-adapters/management-methods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAA;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAGxG,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CACxC;AAED,UAAU,UAAU;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CACjC;AAGD,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAmB7E,CAAA;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS,CAG9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAwCjM;AAMD,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAkDvJ"}
|