@humain/terminal 0.0.2 → 0.0.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +241 -24
- package/README.md +143 -119
- package/dist/cli/args.d.ts +4 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +37 -39
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts +19 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +50 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +24 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +103 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +2 -2
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts +5 -15
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +42 -83
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +130 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/pi.d.ts +15 -0
- package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/pi.js +28 -0
- package/dist/cli/experimental/commands/pi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/list-models.d.ts +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +2 -2
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +2 -2
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +1 -0
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +1 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -10
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +72 -70
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts +25 -9
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +237 -39
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +60 -41
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +2 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +3 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +27 -4
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +5 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +45 -5
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-config.d.ts +29 -5
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +4 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +5 -3
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +13 -10
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +4 -3
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +42 -10
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +30 -13
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +233 -73
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/models-store.d.ts +12 -7
- package/dist/core/models-store.d.ts.map +1 -1
- package/dist/core/models-store.js +83 -14
- package/dist/core/models-store.js.map +1 -1
- package/dist/core/package-manager.d.ts +6 -3
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +80 -61
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts +8 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +28 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/provider-composer.d.ts +4 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +36 -15
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +73 -67
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +2 -2
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +5 -5
- package/dist/core/runtime-credentials.d.ts.map +1 -1
- package/dist/core/runtime-credentials.js +11 -8
- package/dist/core/runtime-credentials.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +2 -2
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +3 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +12 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +40 -16
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +8 -0
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts +5 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +16 -15
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts +4 -0
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +11 -7
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts +7 -0
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +16 -19
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +4 -0
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +5 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/ls.d.ts +4 -0
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +5 -1
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts +4 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +7 -3
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/write.d.ts +4 -0
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +6 -2
- package/dist/core/tools/write.js.map +1 -1
- package/dist/extensions/llama/index.d.ts.map +1 -1
- package/dist/extensions/llama/index.js +11 -2
- package/dist/extensions/llama/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +21 -7
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/humain/agent-execution-protocol.d.ts +218 -0
- package/dist/humain/agent-execution-protocol.d.ts.map +1 -0
- package/dist/humain/agent-execution-protocol.js +204 -0
- package/dist/humain/agent-execution-protocol.js.map +1 -0
- package/dist/humain/agent-execution-runtime.d.ts +35 -0
- package/dist/humain/agent-execution-runtime.d.ts.map +1 -0
- package/dist/humain/agent-execution-runtime.js +170 -0
- package/dist/humain/agent-execution-runtime.js.map +1 -0
- package/dist/humain/index.d.ts.map +1 -1
- package/dist/humain/index.js +8 -7
- package/dist/humain/index.js.map +1 -1
- package/dist/humain/mcp-adapter/vendor/CHANGELOG.md +660 -0
- package/dist/humain/mcp-adapter/vendor/LICENSE +21 -0
- package/dist/humain/mcp-adapter/vendor/README.md +733 -0
- package/dist/humain/mcp-adapter/vendor/abort.ts +34 -0
- package/dist/humain/mcp-adapter/vendor/agent-dir.ts +60 -0
- package/dist/humain/mcp-adapter/vendor/agent-plugin-loader.ts +377 -0
- package/dist/humain/mcp-adapter/vendor/app-bridge.bundle.js +67 -0
- package/dist/humain/mcp-adapter/vendor/banner.png +0 -0
- package/dist/humain/mcp-adapter/vendor/cli.js +209 -0
- package/dist/humain/mcp-adapter/vendor/commands.ts +627 -0
- package/dist/humain/mcp-adapter/vendor/config.ts +1226 -0
- package/dist/humain/mcp-adapter/vendor/consent-manager.ts +64 -0
- package/dist/humain/mcp-adapter/vendor/direct-tools.ts +604 -0
- package/dist/humain/mcp-adapter/vendor/elicitation-handler.ts +348 -0
- package/dist/humain/mcp-adapter/vendor/error-signal.ts +21 -0
- package/dist/humain/mcp-adapter/vendor/errors.ts +223 -0
- package/dist/humain/mcp-adapter/vendor/glimpse-ui.ts +80 -0
- package/dist/humain/mcp-adapter/vendor/host-html-template.ts +461 -0
- package/dist/humain/mcp-adapter/vendor/index.bundle.d.mts +4 -0
- package/dist/humain/mcp-adapter/vendor/index.bundle.mjs +15923 -0
- package/dist/humain/mcp-adapter/vendor/index.ts +898 -0
- package/dist/humain/mcp-adapter/vendor/init.ts +649 -0
- package/dist/humain/mcp-adapter/vendor/json-schema-validator.ts +69 -0
- package/dist/humain/mcp-adapter/vendor/lifecycle.ts +147 -0
- package/dist/humain/mcp-adapter/vendor/logger.ts +169 -0
- package/dist/humain/mcp-adapter/vendor/mcp-auth-flow.ts +993 -0
- package/dist/humain/mcp-adapter/vendor/mcp-auth.ts +1000 -0
- package/dist/humain/mcp-adapter/vendor/mcp-callback-server.ts +510 -0
- package/dist/humain/mcp-adapter/vendor/mcp-code.ts +354 -0
- package/dist/humain/mcp-adapter/vendor/mcp-keyring-helper.cjs +89 -0
- package/dist/humain/mcp-adapter/vendor/mcp-oauth-provider.ts +616 -0
- package/dist/humain/mcp-adapter/vendor/mcp-output-guard.ts +408 -0
- package/dist/humain/mcp-adapter/vendor/mcp-panel.ts +1015 -0
- package/dist/humain/mcp-adapter/vendor/mcp-probe.ts +187 -0
- package/dist/humain/mcp-adapter/vendor/mcp-script-worker.mjs +130 -0
- package/dist/humain/mcp-adapter/vendor/mcp-setup-panel.ts +666 -0
- package/dist/humain/mcp-adapter/vendor/mcp-status.ts +109 -0
- package/dist/humain/mcp-adapter/vendor/mcp-trace.ts +306 -0
- package/dist/humain/mcp-adapter/vendor/metadata-cache.ts +353 -0
- package/dist/humain/mcp-adapter/vendor/npx-resolver.ts +543 -0
- package/dist/humain/mcp-adapter/vendor/oauth-handler.ts +30 -0
- package/dist/humain/mcp-adapter/vendor/oauth.ts +48 -0
- package/dist/humain/mcp-adapter/vendor/onboarding-state.ts +76 -0
- package/dist/humain/mcp-adapter/vendor/package.json +178 -0
- package/dist/humain/mcp-adapter/vendor/panel-keys.ts +53 -0
- package/dist/humain/mcp-adapter/vendor/prompts.ts +353 -0
- package/dist/humain/mcp-adapter/vendor/proxy-modes.ts +1331 -0
- package/dist/humain/mcp-adapter/vendor/resource-tools.ts +17 -0
- package/dist/humain/mcp-adapter/vendor/runtime-owner.ts +91 -0
- package/dist/humain/mcp-adapter/vendor/sampling-handler.ts +284 -0
- package/dist/humain/mcp-adapter/vendor/search-ranking.ts +206 -0
- package/dist/humain/mcp-adapter/vendor/server-manager.ts +1124 -0
- package/dist/humain/mcp-adapter/vendor/session-recovery.ts +151 -0
- package/dist/humain/mcp-adapter/vendor/skills/mcp-scripting/SKILL.md +38 -0
- package/dist/humain/mcp-adapter/vendor/state.ts +62 -0
- package/dist/humain/mcp-adapter/vendor/tool-approval.ts +182 -0
- package/dist/humain/mcp-adapter/vendor/tool-metadata.ts +276 -0
- package/dist/humain/mcp-adapter/vendor/tool-registrar.ts +253 -0
- package/dist/humain/mcp-adapter/vendor/tool-result-renderer.ts +423 -0
- package/dist/humain/mcp-adapter/vendor/ts-shape.ts +149 -0
- package/dist/humain/mcp-adapter/vendor/types.ts +859 -0
- package/dist/humain/mcp-adapter/vendor/ui-app-bridge-helpers.ts +40 -0
- package/dist/humain/mcp-adapter/vendor/ui-resource-handler.ts +250 -0
- package/dist/humain/mcp-adapter/vendor/ui-server.ts +866 -0
- package/dist/humain/mcp-adapter/vendor/ui-session.ts +570 -0
- package/dist/humain/mcp-adapter/vendor/ui-stream-types.ts +89 -0
- package/dist/humain/mcp-adapter/vendor/ui-tool-visibility.ts +25 -0
- package/dist/humain/mcp-adapter/vendor/unix-socket-transport.ts +85 -0
- package/dist/humain/mcp-adapter/vendor/utils.ts +310 -0
- package/dist/humain/mcp-adapter.d.ts +3 -0
- package/dist/humain/mcp-adapter.d.ts.map +1 -0
- package/dist/humain/mcp-adapter.js +5 -0
- package/dist/humain/mcp-adapter.js.map +1 -0
- package/dist/humain/pi-agent-execution-host.d.ts +34 -0
- package/dist/humain/pi-agent-execution-host.d.ts.map +1 -0
- package/dist/humain/pi-agent-execution-host.js +77 -0
- package/dist/humain/pi-agent-execution-host.js.map +1 -0
- package/dist/humain/web-access/host.d.ts +4 -0
- package/dist/humain/web-access/host.d.ts.map +1 -0
- package/dist/humain/web-access/host.js +3 -0
- package/dist/humain/web-access/host.js.map +1 -0
- package/dist/humain/web-access/index.d.ts +3 -0
- package/dist/humain/web-access/index.d.ts.map +1 -0
- package/dist/humain/web-access/index.js +5 -0
- package/dist/humain/web-access/index.js.map +1 -0
- package/dist/humain/web-access/vendor/activity.d.ts +34 -0
- package/dist/humain/web-access/vendor/activity.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/activity.js +68 -0
- package/dist/humain/web-access/vendor/activity.js.map +1 -0
- package/dist/humain/web-access/vendor/anysearch.d.ts +8 -0
- package/dist/humain/web-access/vendor/anysearch.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/anysearch.js +167 -0
- package/dist/humain/web-access/vendor/anysearch.js.map +1 -0
- package/dist/humain/web-access/vendor/bocha.d.ts +4 -0
- package/dist/humain/web-access/vendor/bocha.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/bocha.js +219 -0
- package/dist/humain/web-access/vendor/bocha.js.map +1 -0
- package/dist/humain/web-access/vendor/brave.d.ts +4 -0
- package/dist/humain/web-access/vendor/brave.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/brave.js +194 -0
- package/dist/humain/web-access/vendor/brave.js.map +1 -0
- package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts +12 -0
- package/dist/humain/web-access/vendor/brightdata-unlocker.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/brightdata-unlocker.js +230 -0
- package/dist/humain/web-access/vendor/brightdata-unlocker.js.map +1 -0
- package/dist/humain/web-access/vendor/brightdata.d.ts +8 -0
- package/dist/humain/web-access/vendor/brightdata.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/brightdata.js +519 -0
- package/dist/humain/web-access/vendor/brightdata.js.map +1 -0
- package/dist/humain/web-access/vendor/chrome-cookies.d.ts +10 -0
- package/dist/humain/web-access/vendor/chrome-cookies.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/chrome-cookies.js +438 -0
- package/dist/humain/web-access/vendor/chrome-cookies.js.map +1 -0
- package/dist/humain/web-access/vendor/content-find.d.ts +11 -0
- package/dist/humain/web-access/vendor/content-find.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/content-find.js +117 -0
- package/dist/humain/web-access/vendor/content-find.js.map +1 -0
- package/dist/humain/web-access/vendor/credential-source.d.ts +28 -0
- package/dist/humain/web-access/vendor/credential-source.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/credential-source.js +151 -0
- package/dist/humain/web-access/vendor/credential-source.js.map +1 -0
- package/dist/humain/web-access/vendor/curator-page.d.ts +29 -0
- package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/curator-page.js +3554 -0
- package/dist/humain/web-access/vendor/curator-page.js.map +1 -0
- package/dist/humain/web-access/vendor/curator-server.d.ts +93 -0
- package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/curator-server.js +688 -0
- package/dist/humain/web-access/vendor/curator-server.js.map +1 -0
- package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts +60 -0
- package/dist/humain/web-access/vendor/datalab-pdf-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/datalab-pdf-extract.js +416 -0
- package/dist/humain/web-access/vendor/datalab-pdf-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/declared-web-links.d.ts +16 -0
- package/dist/humain/web-access/vendor/declared-web-links.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/declared-web-links.js +168 -0
- package/dist/humain/web-access/vendor/declared-web-links.js.map +1 -0
- package/dist/humain/web-access/vendor/duckduckgo.d.ts +4 -0
- package/dist/humain/web-access/vendor/duckduckgo.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/duckduckgo.js +123 -0
- package/dist/humain/web-access/vendor/duckduckgo.js.map +1 -0
- package/dist/humain/web-access/vendor/exa.d.ts +10 -0
- package/dist/humain/web-access/vendor/exa.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/exa.js +426 -0
- package/dist/humain/web-access/vendor/exa.js.map +1 -0
- package/dist/humain/web-access/vendor/extract.d.ts +46 -0
- package/dist/humain/web-access/vendor/extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/extract.js +1064 -0
- package/dist/humain/web-access/vendor/extract.js.map +1 -0
- package/dist/humain/web-access/vendor/feature-config.d.ts +3 -0
- package/dist/humain/web-access/vendor/feature-config.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/feature-config.js +27 -0
- package/dist/humain/web-access/vendor/feature-config.js.map +1 -0
- package/dist/humain/web-access/vendor/fetch-params.d.ts +25 -0
- package/dist/humain/web-access/vendor/fetch-params.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/fetch-params.js +57 -0
- package/dist/humain/web-access/vendor/fetch-params.js.map +1 -0
- package/dist/humain/web-access/vendor/firecrawl.d.ts +12 -0
- package/dist/humain/web-access/vendor/firecrawl.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/firecrawl.js +239 -0
- package/dist/humain/web-access/vendor/firecrawl.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-api.d.ts +27 -0
- package/dist/humain/web-access/vendor/gemini-api.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-api.js +230 -0
- package/dist/humain/web-access/vendor/gemini-api.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts +9 -0
- package/dist/humain/web-access/vendor/gemini-pdf-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-pdf-extract.js +85 -0
- package/dist/humain/web-access/vendor/gemini-pdf-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-search.d.ts +40 -0
- package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-search.js +814 -0
- package/dist/humain/web-access/vendor/gemini-search.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-url-context.d.ts +4 -0
- package/dist/humain/web-access/vendor/gemini-url-context.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-url-context.js +101 -0
- package/dist/humain/web-access/vendor/gemini-url-context.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-web-config.d.ts +4 -0
- package/dist/humain/web-access/vendor/gemini-web-config.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-web-config.js +42 -0
- package/dist/humain/web-access/vendor/gemini-web-config.js.map +1 -0
- package/dist/humain/web-access/vendor/gemini-web.d.ts +18 -0
- package/dist/humain/web-access/vendor/gemini-web.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/gemini-web.js +385 -0
- package/dist/humain/web-access/vendor/gemini-web.js.map +1 -0
- package/dist/humain/web-access/vendor/github-api.d.ts +7 -0
- package/dist/humain/web-access/vendor/github-api.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/github-api.js +160 -0
- package/dist/humain/web-access/vendor/github-api.js.map +1 -0
- package/dist/humain/web-access/vendor/github-extract.d.ts +13 -0
- package/dist/humain/web-access/vendor/github-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/github-extract.js +635 -0
- package/dist/humain/web-access/vendor/github-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/index.d.ts +4 -0
- package/dist/humain/web-access/vendor/index.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/index.js +3002 -0
- package/dist/humain/web-access/vendor/index.js.map +1 -0
- package/dist/humain/web-access/vendor/jina-search.d.ts +8 -0
- package/dist/humain/web-access/vendor/jina-search.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/jina-search.js +255 -0
- package/dist/humain/web-access/vendor/jina-search.js.map +1 -0
- package/dist/humain/web-access/vendor/kagi.d.ts +15 -0
- package/dist/humain/web-access/vendor/kagi.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/kagi.js +262 -0
- package/dist/humain/web-access/vendor/kagi.js.map +1 -0
- package/dist/humain/web-access/vendor/ollama.d.ts +15 -0
- package/dist/humain/web-access/vendor/ollama.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/ollama.js +216 -0
- package/dist/humain/web-access/vendor/ollama.js.map +1 -0
- package/dist/humain/web-access/vendor/openai-search.d.ts +15 -0
- package/dist/humain/web-access/vendor/openai-search.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/openai-search.js +459 -0
- package/dist/humain/web-access/vendor/openai-search.js.map +1 -0
- package/dist/humain/web-access/vendor/page-query.d.ts +16 -0
- package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/page-query.js +79 -0
- package/dist/humain/web-access/vendor/page-query.js.map +1 -0
- package/dist/humain/web-access/vendor/parallel.d.ts +12 -0
- package/dist/humain/web-access/vendor/parallel.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/parallel.js +343 -0
- package/dist/humain/web-access/vendor/parallel.js.map +1 -0
- package/dist/humain/web-access/vendor/pdf-extract.d.ts +44 -0
- package/dist/humain/web-access/vendor/pdf-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/pdf-extract.js +298 -0
- package/dist/humain/web-access/vendor/pdf-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/perplexity.d.ts +20 -0
- package/dist/humain/web-access/vendor/perplexity.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/perplexity.js +159 -0
- package/dist/humain/web-access/vendor/perplexity.js.map +1 -0
- package/dist/humain/web-access/vendor/querit.d.ts +10 -0
- package/dist/humain/web-access/vendor/querit.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/querit.js +335 -0
- package/dist/humain/web-access/vendor/querit.js.map +1 -0
- package/dist/humain/web-access/vendor/render-search-error.d.ts +57 -0
- package/dist/humain/web-access/vendor/render-search-error.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/render-search-error.js +130 -0
- package/dist/humain/web-access/vendor/render-search-error.js.map +1 -0
- package/dist/humain/web-access/vendor/rsc-extract.d.ts +12 -0
- package/dist/humain/web-access/vendor/rsc-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/rsc-extract.js +329 -0
- package/dist/humain/web-access/vendor/rsc-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/search1api.d.ts +10 -0
- package/dist/humain/web-access/vendor/search1api.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/search1api.js +251 -0
- package/dist/humain/web-access/vendor/search1api.js.map +1 -0
- package/dist/humain/web-access/vendor/searchinfinity.d.ts +8 -0
- package/dist/humain/web-access/vendor/searchinfinity.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/searchinfinity.js +229 -0
- package/dist/humain/web-access/vendor/searchinfinity.js.map +1 -0
- package/dist/humain/web-access/vendor/searxng.d.ts +4 -0
- package/dist/humain/web-access/vendor/searxng.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/searxng.js +238 -0
- package/dist/humain/web-access/vendor/searxng.js.map +1 -0
- package/dist/humain/web-access/vendor/serpbase.d.ts +4 -0
- package/dist/humain/web-access/vendor/serpbase.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/serpbase.js +211 -0
- package/dist/humain/web-access/vendor/serpbase.js.map +1 -0
- package/dist/humain/web-access/vendor/serpdive.d.ts +8 -0
- package/dist/humain/web-access/vendor/serpdive.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/serpdive.js +267 -0
- package/dist/humain/web-access/vendor/serpdive.js.map +1 -0
- package/dist/humain/web-access/vendor/source-check.d.ts +99 -0
- package/dist/humain/web-access/vendor/source-check.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/source-check.js +205 -0
- package/dist/humain/web-access/vendor/source-check.js.map +1 -0
- package/dist/humain/web-access/vendor/ssrf-protection.d.ts +50 -0
- package/dist/humain/web-access/vendor/ssrf-protection.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/ssrf-protection.js +466 -0
- package/dist/humain/web-access/vendor/ssrf-protection.js.map +1 -0
- package/dist/humain/web-access/vendor/storage.d.ts +55 -0
- package/dist/humain/web-access/vendor/storage.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/storage.js +485 -0
- package/dist/humain/web-access/vendor/storage.js.map +1 -0
- package/dist/humain/web-access/vendor/summary-model-scope.d.ts +25 -0
- package/dist/humain/web-access/vendor/summary-model-scope.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/summary-model-scope.js +98 -0
- package/dist/humain/web-access/vendor/summary-model-scope.js.map +1 -0
- package/dist/humain/web-access/vendor/summary-review.d.ts +24 -0
- package/dist/humain/web-access/vendor/summary-review.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/summary-review.js +341 -0
- package/dist/humain/web-access/vendor/summary-review.js.map +1 -0
- package/dist/humain/web-access/vendor/tavily.d.ts +8 -0
- package/dist/humain/web-access/vendor/tavily.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/tavily.js +194 -0
- package/dist/humain/web-access/vendor/tavily.js.map +1 -0
- package/dist/humain/web-access/vendor/tinyfish.d.ts +11 -0
- package/dist/humain/web-access/vendor/tinyfish.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/tinyfish.js +331 -0
- package/dist/humain/web-access/vendor/tinyfish.js.map +1 -0
- package/dist/humain/web-access/vendor/utils.d.ts +20 -0
- package/dist/humain/web-access/vendor/utils.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/utils.js +91 -0
- package/dist/humain/web-access/vendor/utils.js.map +1 -0
- package/dist/humain/web-access/vendor/video-extract.d.ts +16 -0
- package/dist/humain/web-access/vendor/video-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/video-extract.js +335 -0
- package/dist/humain/web-access/vendor/video-extract.js.map +1 -0
- package/dist/humain/web-access/vendor/xai-search.d.ts +13 -0
- package/dist/humain/web-access/vendor/xai-search.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/xai-search.js +331 -0
- package/dist/humain/web-access/vendor/xai-search.js.map +1 -0
- package/dist/humain/web-access/vendor/youtube-extract.d.ts +27 -0
- package/dist/humain/web-access/vendor/youtube-extract.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/youtube-extract.js +282 -0
- package/dist/humain/web-access/vendor/youtube-extract.js.map +1 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +169 -102
- package/dist/main.js.map +1 -1
- package/dist/modes/agent-exec-mode.d.ts +14 -0
- package/dist/modes/agent-exec-mode.d.ts.map +1 -0
- package/dist/modes/agent-exec-mode.js +92 -0
- package/dist/modes/agent-exec-mode.js.map +1 -0
- package/dist/modes/index.d.ts +4 -2
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js +2 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +5 -2
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +13 -4
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +7 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +1 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +16 -4
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +26 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +8 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +30 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +3 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +9 -2
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +45 -9
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +581 -211
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/dark.json +1 -0
- package/dist/modes/interactive/theme/light.json +1 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +10 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +5 -1
- package/dist/modes/interactive/theme/theme.d.ts +2 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +24 -6
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +28 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +12 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +12 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +12 -5
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +55 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +13 -3
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +15 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +11 -9
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/rpc-entry.js +3 -2
- package/dist/rpc-entry.js.map +1 -1
- package/dist/server/create-harness.d.ts +26 -0
- package/dist/server/create-harness.d.ts.map +1 -0
- package/dist/server/create-harness.js +104 -0
- package/dist/server/create-harness.js.map +1 -0
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +48 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/clipboard.d.ts +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +22 -2
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/management-http.d.ts +23 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +50 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/paths.d.ts +3 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +23 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +13 -25
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +4 -0
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +23 -5
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +2 -2
- package/docs/custom-provider.md +7 -5
- package/docs/extensions.md +30 -5
- package/docs/humain-terminal.md +21 -1
- package/docs/json.md +24 -19
- package/docs/keybindings.md +46 -14
- package/docs/models.md +32 -11
- package/docs/providers.md +9 -1
- package/docs/quickstart.md +39 -37
- package/docs/rpc.md +31 -11
- package/docs/sdk.md +21 -2
- package/docs/security.md +21 -21
- package/docs/session-format.md +14 -14
- package/docs/settings.md +4 -1
- package/docs/themes.md +5 -3
- package/docs/usage.md +7 -0
- package/examples/extensions/custom-compaction.ts +3 -18
- package/examples/extensions/custom-provider-anthropic/index.ts +5 -1
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +5 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/handoff.ts +4 -13
- package/examples/extensions/qna.ts +5 -9
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/summarize.ts +9 -20
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/rpc-extension-ui.ts +11 -2
- package/examples/sdk/02-custom-model.ts +2 -3
- package/examples/sdk/09-api-keys-and-oauth.ts +1 -1
- package/examples/sdk/12-full-control.ts +1 -1
- package/examples/sdk/README.md +1 -1
- package/npm-shrinkwrap.json +2771 -535
- package/package.json +40 -11
- package/src/humain/mcp-adapter/UPSTREAM.md +15 -0
- package/src/humain/mcp-adapter/upstream.json +7 -0
- package/src/humain/mcp-adapter/vendor/CHANGELOG.md +660 -0
- package/src/humain/mcp-adapter/vendor/LICENSE +21 -0
- package/src/humain/web-access/UPSTREAM.md +17 -0
- package/src/humain/web-access/upstream.json +23 -0
- package/src/humain/web-access/vendor/LICENSE +21 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { parseHumainAgentExecutionRequest, parseHumainAgentExecutionResponse, } from "./agent-execution-protocol.js";
|
|
2
|
+
const UNKNOWN_USAGE = { status: "unknown" };
|
|
3
|
+
export async function executeHumainAgentRequest(input, host, options = {}) {
|
|
4
|
+
const request = parseHumainAgentExecutionRequest(input);
|
|
5
|
+
if (request.mode === "workflow") {
|
|
6
|
+
return checkedResponse(request, {
|
|
7
|
+
schemaVersion: 1,
|
|
8
|
+
kind: "result",
|
|
9
|
+
mode: request.mode,
|
|
10
|
+
invocationId: request.invocationId,
|
|
11
|
+
batchId: request.batchId,
|
|
12
|
+
termination: "not-requested",
|
|
13
|
+
outcomes: request.claims.map((claim) => failedOutcome(claim, "incompatible_adapter_capability")),
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
const claim = request.claims[0];
|
|
17
|
+
if (!claim)
|
|
18
|
+
throw new Error("Parsed node execution request has no claim");
|
|
19
|
+
if (options.signal?.aborted) {
|
|
20
|
+
return cancelledResponse(request, claim, false);
|
|
21
|
+
}
|
|
22
|
+
const launchStartedAt = Date.now();
|
|
23
|
+
let cancelLaunch;
|
|
24
|
+
const launchCancellation = new Promise((resolve) => {
|
|
25
|
+
cancelLaunch = resolve;
|
|
26
|
+
});
|
|
27
|
+
const launchTimeout = setTimeout(() => cancelLaunch?.("execution timeout"), claim.controls.timeoutMs);
|
|
28
|
+
const onLaunchAbort = () => cancelLaunch?.("execution cancelled");
|
|
29
|
+
options.signal?.addEventListener("abort", onLaunchAbort, { once: true });
|
|
30
|
+
if (options.signal?.aborted)
|
|
31
|
+
onLaunchAbort();
|
|
32
|
+
let launchPromise;
|
|
33
|
+
try {
|
|
34
|
+
launchPromise = host.launch({
|
|
35
|
+
routeRef: claim.routeRef,
|
|
36
|
+
task: claim.task,
|
|
37
|
+
artifacts: claim.input.artifacts,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
clearTimeout(launchTimeout);
|
|
42
|
+
options.signal?.removeEventListener("abort", onLaunchAbort);
|
|
43
|
+
return singleOutcomeResponse(request, failedOutcome(claim, "adapter_execution_failed"));
|
|
44
|
+
}
|
|
45
|
+
const launchResult = await Promise.race([
|
|
46
|
+
launchPromise.then((handle) => ({ kind: "launched", handle }), () => ({ kind: "failed" })),
|
|
47
|
+
launchCancellation.then((reason) => ({ kind: "cancelled", reason })),
|
|
48
|
+
]);
|
|
49
|
+
clearTimeout(launchTimeout);
|
|
50
|
+
options.signal?.removeEventListener("abort", onLaunchAbort);
|
|
51
|
+
if (launchResult.kind === "cancelled") {
|
|
52
|
+
void launchPromise
|
|
53
|
+
.then(async (lateHandle) => {
|
|
54
|
+
if (!lateHandle)
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
await lateHandle.cancel(launchResult.reason);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// The correlated response remains honestly unconfirmed.
|
|
61
|
+
}
|
|
62
|
+
finally {
|
|
63
|
+
lateHandle.dispose();
|
|
64
|
+
}
|
|
65
|
+
})
|
|
66
|
+
.catch(() => { });
|
|
67
|
+
return cancelledResponse(request, claim, false);
|
|
68
|
+
}
|
|
69
|
+
if (launchResult.kind === "failed") {
|
|
70
|
+
return singleOutcomeResponse(request, failedOutcome(claim, "adapter_execution_failed"));
|
|
71
|
+
}
|
|
72
|
+
const handle = launchResult.handle;
|
|
73
|
+
if (!handle) {
|
|
74
|
+
return singleOutcomeResponse(request, failedOutcome(claim, "incompatible_adapter_capability"));
|
|
75
|
+
}
|
|
76
|
+
let timeout;
|
|
77
|
+
let removeAbortListener;
|
|
78
|
+
let cancellationInFlight;
|
|
79
|
+
let cancellationCompletion;
|
|
80
|
+
try {
|
|
81
|
+
const cancellation = new Promise((resolve) => {
|
|
82
|
+
const cancel = (reason) => {
|
|
83
|
+
if (cancellationInFlight)
|
|
84
|
+
return;
|
|
85
|
+
cancellationInFlight = (async () => {
|
|
86
|
+
let terminationConfirmed = false;
|
|
87
|
+
try {
|
|
88
|
+
terminationConfirmed = (await handle.cancel(reason)).terminationConfirmed;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
terminationConfirmed = false;
|
|
92
|
+
}
|
|
93
|
+
cancellationCompletion = { kind: "cancelled", terminationConfirmed, usage: UNKNOWN_USAGE };
|
|
94
|
+
resolve(cancellationCompletion);
|
|
95
|
+
})();
|
|
96
|
+
};
|
|
97
|
+
const remainingTimeoutMs = Math.max(1, claim.controls.timeoutMs - (Date.now() - launchStartedAt));
|
|
98
|
+
timeout = setTimeout(() => cancel("execution timeout"), remainingTimeoutMs);
|
|
99
|
+
if (options.signal) {
|
|
100
|
+
const onAbort = () => cancel("execution cancelled");
|
|
101
|
+
options.signal.addEventListener("abort", onAbort, { once: true });
|
|
102
|
+
removeAbortListener = () => options.signal?.removeEventListener("abort", onAbort);
|
|
103
|
+
if (options.signal.aborted)
|
|
104
|
+
onAbort();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
let completion = await Promise.race([handle.completion, cancellation]);
|
|
108
|
+
if (cancellationInFlight) {
|
|
109
|
+
await cancellationInFlight;
|
|
110
|
+
if (cancellationCompletion)
|
|
111
|
+
completion = cancellationCompletion;
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return singleOutcomeResponse(request, toOutcome(claim, completion));
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return singleOutcomeResponse(request, failedOutcome(claim, "invalid_adapter_result"));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
if (timeout)
|
|
122
|
+
clearTimeout(timeout);
|
|
123
|
+
removeAbortListener?.();
|
|
124
|
+
await cancellationInFlight;
|
|
125
|
+
try {
|
|
126
|
+
handle.dispose();
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
// Cleanup failure cannot replace the already-correlated protocol result.
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function toOutcome(claim, completion) {
|
|
134
|
+
return { ...claimIdentity(claim), ...completion };
|
|
135
|
+
}
|
|
136
|
+
function failedOutcome(claim, failureCode) {
|
|
137
|
+
return { ...claimIdentity(claim), kind: "failed", failureCode, usage: UNKNOWN_USAGE };
|
|
138
|
+
}
|
|
139
|
+
function claimIdentity(claim) {
|
|
140
|
+
return {
|
|
141
|
+
workUnitId: claim.workUnitId,
|
|
142
|
+
nodeId: claim.nodeId,
|
|
143
|
+
attemptNumber: claim.attemptNumber,
|
|
144
|
+
attemptFence: claim.attemptFence,
|
|
145
|
+
segmentFence: claim.segmentFence,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function singleOutcomeResponse(request, outcome) {
|
|
149
|
+
const termination = outcome.kind !== "cancelled" ? "not-requested" : outcome.terminationConfirmed ? "confirmed" : "unconfirmed";
|
|
150
|
+
return checkedResponse(request, {
|
|
151
|
+
schemaVersion: 1,
|
|
152
|
+
kind: "result",
|
|
153
|
+
mode: "node",
|
|
154
|
+
invocationId: request.invocationId,
|
|
155
|
+
termination,
|
|
156
|
+
outcomes: [outcome],
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
function cancelledResponse(request, claim, terminationConfirmed) {
|
|
160
|
+
return singleOutcomeResponse(request, {
|
|
161
|
+
...claimIdentity(claim),
|
|
162
|
+
kind: "cancelled",
|
|
163
|
+
terminationConfirmed,
|
|
164
|
+
usage: UNKNOWN_USAGE,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
function checkedResponse(request, response) {
|
|
168
|
+
return parseHumainAgentExecutionResponse(request, response);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=agent-execution-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-execution-runtime.js","sourceRoot":"","sources":["../../src/humain/agent-execution-runtime.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype HumainAgentArtifact,\n\ttype HumainAgentExecutionClaim,\n\ttype HumainAgentExecutionFailureCode,\n\ttype HumainAgentExecutionOutcome,\n\ttype HumainAgentExecutionRequest,\n\ttype HumainAgentExecutionResponse,\n\ttype HumainAgentRouteRef,\n\ttype HumainAgentUsage,\n\tparseHumainAgentExecutionRequest,\n\tparseHumainAgentExecutionResponse,\n} from \"./agent-execution-protocol.ts\";\n\nexport type HumainAgentHostCompletion =\n\t| {\n\t\t\tkind: \"succeeded\";\n\t\t\toutput: { summary: string; artifacts: HumainAgentArtifact[] };\n\t\t\tusage: HumainAgentUsage;\n\t }\n\t| { kind: \"failed\"; failureCode: \"adapter_execution_failed\" | \"invalid_adapter_result\"; usage: HumainAgentUsage }\n\t| { kind: \"cancelled\"; terminationConfirmed: boolean; usage: HumainAgentUsage };\n\nexport interface HumainAgentExecutionHandle {\n\tcompletion: Promise<HumainAgentHostCompletion>;\n\tcancel(reason: string): Promise<{ terminationConfirmed: boolean }>;\n\tdispose(): void;\n}\n\nexport interface HumainAgentExecutionHost {\n\tlaunch(request: {\n\t\trouteRef: HumainAgentRouteRef;\n\t\ttask: string;\n\t\tartifacts: HumainAgentArtifact[];\n\t}): Promise<HumainAgentExecutionHandle | null>;\n}\n\nconst UNKNOWN_USAGE = { status: \"unknown\" } as const;\n\nexport async function executeHumainAgentRequest(\n\tinput: unknown,\n\thost: HumainAgentExecutionHost,\n\toptions: { signal?: AbortSignal } = {},\n): Promise<HumainAgentExecutionResponse> {\n\tconst request = parseHumainAgentExecutionRequest(input);\n\tif (request.mode === \"workflow\") {\n\t\treturn checkedResponse(request, {\n\t\t\tschemaVersion: 1,\n\t\t\tkind: \"result\",\n\t\t\tmode: request.mode,\n\t\t\tinvocationId: request.invocationId,\n\t\t\tbatchId: request.batchId,\n\t\t\ttermination: \"not-requested\",\n\t\t\toutcomes: request.claims.map((claim) => failedOutcome(claim, \"incompatible_adapter_capability\")),\n\t\t});\n\t}\n\n\tconst claim = request.claims[0];\n\tif (!claim) throw new Error(\"Parsed node execution request has no claim\");\n\tif (options.signal?.aborted) {\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\n\tconst launchStartedAt = Date.now();\n\tlet cancelLaunch: ((reason: string) => void) | undefined;\n\tconst launchCancellation = new Promise<string>((resolve) => {\n\t\tcancelLaunch = resolve;\n\t});\n\tconst launchTimeout = setTimeout(() => cancelLaunch?.(\"execution timeout\"), claim.controls.timeoutMs);\n\tconst onLaunchAbort = () => cancelLaunch?.(\"execution cancelled\");\n\toptions.signal?.addEventListener(\"abort\", onLaunchAbort, { once: true });\n\tif (options.signal?.aborted) onLaunchAbort();\n\tlet launchPromise: ReturnType<HumainAgentExecutionHost[\"launch\"]>;\n\ttry {\n\t\tlaunchPromise = host.launch({\n\t\t\trouteRef: claim.routeRef,\n\t\t\ttask: claim.task,\n\t\t\tartifacts: claim.input.artifacts,\n\t\t});\n\t} catch {\n\t\tclearTimeout(launchTimeout);\n\t\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst launchResult = await Promise.race([\n\t\tlaunchPromise.then(\n\t\t\t(handle) => ({ kind: \"launched\" as const, handle }),\n\t\t\t() => ({ kind: \"failed\" as const }),\n\t\t),\n\t\tlaunchCancellation.then((reason) => ({ kind: \"cancelled\" as const, reason })),\n\t]);\n\tclearTimeout(launchTimeout);\n\toptions.signal?.removeEventListener(\"abort\", onLaunchAbort);\n\tif (launchResult.kind === \"cancelled\") {\n\t\tvoid launchPromise\n\t\t\t.then(async (lateHandle) => {\n\t\t\t\tif (!lateHandle) return;\n\t\t\t\ttry {\n\t\t\t\t\tawait lateHandle.cancel(launchResult.reason);\n\t\t\t\t} catch {\n\t\t\t\t\t// The correlated response remains honestly unconfirmed.\n\t\t\t\t} finally {\n\t\t\t\t\tlateHandle.dispose();\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {});\n\t\treturn cancelledResponse(request, claim, false);\n\t}\n\tif (launchResult.kind === \"failed\") {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"adapter_execution_failed\"));\n\t}\n\tconst handle = launchResult.handle;\n\tif (!handle) {\n\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"incompatible_adapter_capability\"));\n\t}\n\n\tlet timeout: ReturnType<typeof setTimeout> | undefined;\n\tlet removeAbortListener: (() => void) | undefined;\n\tlet cancellationInFlight: Promise<void> | undefined;\n\tlet cancellationCompletion: HumainAgentHostCompletion | undefined;\n\ttry {\n\t\tconst cancellation = new Promise<HumainAgentHostCompletion>((resolve) => {\n\t\t\tconst cancel = (reason: string) => {\n\t\t\t\tif (cancellationInFlight) return;\n\t\t\t\tcancellationInFlight = (async () => {\n\t\t\t\t\tlet terminationConfirmed = false;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tterminationConfirmed = (await handle.cancel(reason)).terminationConfirmed;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tterminationConfirmed = false;\n\t\t\t\t\t}\n\t\t\t\t\tcancellationCompletion = { kind: \"cancelled\", terminationConfirmed, usage: UNKNOWN_USAGE };\n\t\t\t\t\tresolve(cancellationCompletion);\n\t\t\t\t})();\n\t\t\t};\n\t\t\tconst remainingTimeoutMs = Math.max(1, claim.controls.timeoutMs - (Date.now() - launchStartedAt));\n\t\t\ttimeout = setTimeout(() => cancel(\"execution timeout\"), remainingTimeoutMs);\n\t\t\tif (options.signal) {\n\t\t\t\tconst onAbort = () => cancel(\"execution cancelled\");\n\t\t\t\toptions.signal.addEventListener(\"abort\", onAbort, { once: true });\n\t\t\t\tremoveAbortListener = () => options.signal?.removeEventListener(\"abort\", onAbort);\n\t\t\t\tif (options.signal.aborted) onAbort();\n\t\t\t}\n\t\t});\n\t\tlet completion = await Promise.race([handle.completion, cancellation]);\n\t\tif (cancellationInFlight) {\n\t\t\tawait cancellationInFlight;\n\t\t\tif (cancellationCompletion) completion = cancellationCompletion;\n\t\t}\n\t\ttry {\n\t\t\treturn singleOutcomeResponse(request, toOutcome(claim, completion));\n\t\t} catch {\n\t\t\treturn singleOutcomeResponse(request, failedOutcome(claim, \"invalid_adapter_result\"));\n\t\t}\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t\tremoveAbortListener?.();\n\t\tawait cancellationInFlight;\n\t\ttry {\n\t\t\thandle.dispose();\n\t\t} catch {\n\t\t\t// Cleanup failure cannot replace the already-correlated protocol result.\n\t\t}\n\t}\n}\n\nfunction toOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tcompletion: HumainAgentHostCompletion,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), ...completion };\n}\n\nfunction failedOutcome(\n\tclaim: HumainAgentExecutionClaim,\n\tfailureCode: HumainAgentExecutionFailureCode,\n): HumainAgentExecutionOutcome {\n\treturn { ...claimIdentity(claim), kind: \"failed\", failureCode, usage: UNKNOWN_USAGE };\n}\n\nfunction claimIdentity(claim: HumainAgentExecutionClaim) {\n\treturn {\n\t\tworkUnitId: claim.workUnitId,\n\t\tnodeId: claim.nodeId,\n\t\tattemptNumber: claim.attemptNumber,\n\t\tattemptFence: claim.attemptFence,\n\t\tsegmentFence: claim.segmentFence,\n\t};\n}\n\nfunction singleOutcomeResponse(\n\trequest: HumainAgentExecutionRequest,\n\toutcome: HumainAgentExecutionOutcome,\n): HumainAgentExecutionResponse {\n\tconst termination =\n\t\toutcome.kind !== \"cancelled\" ? \"not-requested\" : outcome.terminationConfirmed ? \"confirmed\" : \"unconfirmed\";\n\treturn checkedResponse(request, {\n\t\tschemaVersion: 1,\n\t\tkind: \"result\",\n\t\tmode: \"node\",\n\t\tinvocationId: request.invocationId,\n\t\ttermination,\n\t\toutcomes: [outcome],\n\t});\n}\n\nfunction cancelledResponse(\n\trequest: HumainAgentExecutionRequest,\n\tclaim: HumainAgentExecutionClaim,\n\tterminationConfirmed: boolean,\n): HumainAgentExecutionResponse {\n\treturn singleOutcomeResponse(request, {\n\t\t...claimIdentity(claim),\n\t\tkind: \"cancelled\",\n\t\tterminationConfirmed,\n\t\tusage: UNKNOWN_USAGE,\n\t});\n}\n\nfunction checkedResponse(\n\trequest: HumainAgentExecutionRequest,\n\tresponse: HumainAgentExecutionResponse,\n): HumainAgentExecutionResponse {\n\treturn parseHumainAgentExecutionResponse(request, response);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAmHhE,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAIvG;AA8LD,wBAAgB,8BAA8B,IAAI,aAAa,EAAE,CAOhE;AAED,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,aAAa,GAAE,MAAkB,GAC/B,gBAAgB,CAWlB;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAE7F","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [\n\t\t\"npm:@quintinshaw/pi-dynamic-workflows@^3.5.0\",\n\t\t\"npm:pi-web-access@^0.18.0\",\n\t\t\"npm:pi-mcp-adapter@^2.19.0\",\n\t\t\"npm:@dhruv2mars/pi-queue@^0.0.6\",\n\t];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [createHumainProviderExtensionFactory(env)];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAKjE,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAClD,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAChD,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAmHhE,wBAAsB,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAIvG;AA8LD,wBAAgB,8BAA8B,IAAI,aAAa,EAAE,CAEhE;AAED,wBAAgB,oCAAoC,CACnD,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,aAAa,GAAE,MAAkB,GAC/B,gBAAgB,CAWlB;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,gBAAgB,EAAE,CAM7F","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\nimport { createHumainMcpAdapterExtensionFactory } from \"./mcp-adapter.ts\";\nimport { createHumainWebAccessExtensionFactory } from \"./web-access/index.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [\n\t\tcreateHumainProviderExtensionFactory(env),\n\t\tcreateHumainWebAccessExtensionFactory(),\n\t\tcreateHumainMcpAdapterExtensionFactory(),\n\t];\n}\n"]}
|
package/dist/humain/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from "./legacy-workflow-tiers.js";
|
|
3
|
+
import { createHumainMcpAdapterExtensionFactory } from "./mcp-adapter.js";
|
|
4
|
+
import { createHumainWebAccessExtensionFactory } from "./web-access/index.js";
|
|
3
5
|
export const HUMAIN_LOCAL_PROVIDER = "humain-local";
|
|
4
6
|
export const HUMAIN_CODE_PROVIDER = "humain-code";
|
|
5
7
|
export const HUMAIN_SSO_PROVIDER = "humain-sso";
|
|
@@ -267,12 +269,7 @@ async function registerHumainProviders(pi, env) {
|
|
|
267
269
|
});
|
|
268
270
|
}
|
|
269
271
|
export function getHumainDefaultPackageSources() {
|
|
270
|
-
return [
|
|
271
|
-
"npm:@quintinshaw/pi-dynamic-workflows@^3.5.0",
|
|
272
|
-
"npm:pi-web-access@^0.18.0",
|
|
273
|
-
"npm:pi-mcp-adapter@^2.19.0",
|
|
274
|
-
"npm:@dhruv2mars/pi-queue@^0.0.6",
|
|
275
|
-
];
|
|
272
|
+
return [];
|
|
276
273
|
}
|
|
277
274
|
export function createHumainProviderExtensionFactory(env, homeDirectory = homedir()) {
|
|
278
275
|
return async (pi) => {
|
|
@@ -286,6 +283,10 @@ export function createHumainProviderExtensionFactory(env, homeDirectory = homedi
|
|
|
286
283
|
};
|
|
287
284
|
}
|
|
288
285
|
export function getHumainBundledExtensionFactories(env) {
|
|
289
|
-
return [
|
|
286
|
+
return [
|
|
287
|
+
createHumainProviderExtensionFactory(env),
|
|
288
|
+
createHumainWebAccessExtensionFactory(),
|
|
289
|
+
createHumainMcpAdapterExtensionFactory(),
|
|
290
|
+
];
|
|
290
291
|
}
|
|
291
292
|
//# sourceMappingURL=index.js.map
|
package/dist/humain/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [\n\t\t\"npm:@quintinshaw/pi-dynamic-workflows@^3.5.0\",\n\t\t\"npm:pi-web-access@^0.18.0\",\n\t\t\"npm:pi-mcp-adapter@^2.19.0\",\n\t\t\"npm:@dhruv2mars/pi-queue@^0.0.6\",\n\t];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [createHumainProviderExtensionFactory(env)];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/humain/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { homedir } from \"node:os\";\nimport type { Api, OAuthCredentials } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI, ExtensionFactory, ProviderModelConfig } from \"../core/extensions/types.ts\";\nimport type { PackageSource } from \"../core/settings-manager.ts\";\nimport { cleanupLegacyWorkflowTiers, getLegacyWorkflowTierPaths } from \"./legacy-workflow-tiers.ts\";\nimport { createHumainMcpAdapterExtensionFactory } from \"./mcp-adapter.ts\";\nimport { createHumainWebAccessExtensionFactory } from \"./web-access/index.ts\";\n\nexport const HUMAIN_LOCAL_PROVIDER = \"humain-local\";\nexport const HUMAIN_CODE_PROVIDER = \"humain-code\";\nexport const HUMAIN_SSO_PROVIDER = \"humain-sso\";\nexport const HUMAIN_FORGE_CWD_ENV = \"HUMAIN_TERMINAL_FORGE_CWD\";\n\nconst LOCAL_MODELS_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS\";\nconst LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_LOCAL_BASE_URL\";\nconst LEGACY_LOCAL_BASE_URL_ENV = \"HUMAIN_TERMINAL_AI_BASE_URL\";\nconst LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_LOCAL_API_KEY\";\nconst LEGACY_LOCAL_API_KEY_ENV = \"HUMAIN_TERMINAL_AI_API_KEY\";\nconst LOCAL_DISCOVERY_TIMEOUT_ENV = \"HUMAIN_TERMINAL_LOCAL_MODELS_DISCOVERY_TIMEOUT_MS\";\nconst HC_BASE_URL_ENV = \"HUMAIN_TERMINAL_HC_BASE_URL\";\nconst HC_API_KEY_ENV = \"HUMAIN_TERMINAL_HC_API_KEY\";\nconst HC_MODELS_ENV = \"HUMAIN_TERMINAL_HC_MODELS\";\nconst HUMAIN_CODE_BASE_URL_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_BASE_URL\";\nconst HUMAIN_CODE_API_KEY_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_API_KEY\";\nconst HUMAIN_CODE_MODELS_ENV = \"HUMAIN_TERMINAL_HUMAIN_CODE_MODELS\";\nconst DEPLOYNOW_PROXY_SENTINEL = \"deploynow-proxy\";\nconst DEPLOYNOW_BROKER_SENTINEL = \"deploynow-broker\";\nconst DEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL = \"not-a-real-key-routed-via-proxy\";\nconst DEPLOYNOW_PROXY_SENTINELS = new Set([\n\tDEPLOYNOW_PROXY_SENTINEL,\n\tDEPLOYNOW_BROKER_SENTINEL,\n\tDEPLOYNOW_ANTHROPIC_LEGACY_SENTINEL,\n]);\nconst DEPLOYNOW_BEDROCK_BASE_URL_ENV = \"ANTHROPIC_BEDROCK_BASE_URL\";\nconst DEPLOYNOW_ANTHROPIC_BASE_URL_ENV = \"ANTHROPIC_BASE_URL\";\nconst DEPLOYNOW_OPENAI_BASE_URL_ENV = \"OPENAI_BASE_URL\";\nconst AWS_REGION_ENV = \"AWS_REGION\";\nconst AWS_ACCESS_KEY_ID_ENV = \"AWS_ACCESS_KEY_ID\";\nconst AWS_SECRET_ACCESS_KEY_ENV = \"AWS_SECRET_ACCESS_KEY\";\nconst AWS_SESSION_TOKEN_ENV = \"AWS_SESSION_TOKEN\";\nconst ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\nconst OPENAI_API_KEY_ENV = \"OPENAI_API_KEY\";\nconst BEDROCK_MODEL_ID_ENV = \"BEDROCK_MODEL_ID\";\nconst OPENAI_MODEL_ID_ENV = \"OPENAI_MODEL_ID\";\nconst ANTHROPIC_MODEL_ID_ENV = \"ANTHROPIC_MODEL_ID\";\nconst FORGE_RUNTIME_MODEL_PROVIDER_ENV = \"FORGE_RUNTIME_MODEL_PROVIDER\";\nconst FORGE_RUNTIME_MODEL_ID_ENV = \"FORGE_RUNTIME_MODEL_ID\";\nconst DEFAULT_LOCAL_CONTEXT_WINDOW = 128000;\nconst DEFAULT_LOCAL_MAX_TOKENS = 16384;\nconst DEFAULT_LOCAL_MODEL_COST = { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 };\nconst AMAZON_BEDROCK_PROVIDER = \"amazon-bedrock\";\nconst ANTHROPIC_PROVIDER = \"anthropic\";\nconst OPENAI_PROVIDER = \"openai\";\nconst HUMAIN_SSO_UNSUPPORTED_MESSAGE = \"HUMAIN SSO is not supported yet.\";\n\ninterface DiscoveryModelList {\n\tdata?: Array<{ id?: unknown }>;\n}\n\nconst DEFAULT_HUMAIN_CODE_MODELS = [\"humain-planning\", \"humain-code\", \"humain-review\", \"humain-long-context\"];\n\nfunction readCsvEnv(env: NodeJS.ProcessEnv, key: string): string[] {\n\tconst raw = env[key];\n\tif (!raw) return [];\n\treturn raw\n\t\t.split(\",\")\n\t\t.map((item) => item.trim())\n\t\t.filter((item) => item.length > 0);\n}\n\nfunction readNonEmptyEnv(env: NodeJS.ProcessEnv, key: string): string | undefined {\n\tconst value = env[key]?.trim();\n\treturn value ? value : undefined;\n}\n\nfunction toModelConfig(id: string, api: Api = \"openai-completions\"): ProviderModelConfig {\n\tconst config: ProviderModelConfig = {\n\t\tid,\n\t\tname: id,\n\t\tapi,\n\t\treasoning: false,\n\t\tinput: [\"text\"],\n\t\tcost: DEFAULT_LOCAL_MODEL_COST,\n\t\tcontextWindow: DEFAULT_LOCAL_CONTEXT_WINDOW,\n\t\tmaxTokens: DEFAULT_LOCAL_MAX_TOKENS,\n\t};\n\n\tif (api === \"openai-completions\") {\n\t\tconfig.compat = {\n\t\t\tsupportsStore: false,\n\t\t\tsupportsDeveloperRole: false,\n\t\t\tsupportsReasoningEffort: false,\n\t\t\tsupportsUsageInStreaming: false,\n\t\t\tmaxTokensField: \"max_tokens\",\n\t\t\tsupportsStrictMode: false,\n\t\t\tsupportsLongCacheRetention: false,\n\t\t};\n\t}\n\n\treturn config;\n}\n\nasync function discoverLocalModelIds(env: NodeJS.ProcessEnv): Promise<string[]> {\n\tconst baseUrl = getLocalBaseUrl(env);\n\tif (!baseUrl) return [];\n\tconst timeoutMs = Number(env[LOCAL_DISCOVERY_TIMEOUT_ENV] ?? \"750\");\n\tconst controller = new AbortController();\n\tconst timeout = setTimeout(() => controller.abort(), Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : 750);\n\tconst apiKey = getLocalApiKey(env);\n\ttry {\n\t\tconst response = await fetch(new URL(\"models\", baseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`), {\n\t\t\tsignal: controller.signal,\n\t\t\theaders: apiKey ? { Authorization: `Bearer ${apiKey}` } : undefined,\n\t\t});\n\t\tif (!response.ok) return [];\n\t\tconst payload = (await response.json()) as DiscoveryModelList;\n\t\treturn (payload.data ?? [])\n\t\t\t.map((model) => (typeof model.id === \"string\" ? model.id.trim() : \"\"))\n\t\t\t.filter((id) => id.length > 0);\n\t} catch {\n\t\treturn [];\n\t} finally {\n\t\tclearTimeout(timeout);\n\t}\n}\n\nexport async function getHumainLocalModelConfigs(env: NodeJS.ProcessEnv): Promise<ProviderModelConfig[]> {\n\tconst envModelIds = readCsvEnv(env, LOCAL_MODELS_ENV);\n\tconst modelIds = envModelIds.length > 0 ? envModelIds : await discoverLocalModelIds(env);\n\treturn [...new Set(modelIds)].map((id) => toModelConfig(id));\n}\n\nfunction getLocalBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_BASE_URL_ENV] ?? env[LEGACY_LOCAL_BASE_URL_ENV];\n}\n\nfunction getLocalApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[LOCAL_API_KEY_ENV] ?? env[LEGACY_LOCAL_API_KEY_ENV];\n}\n\nfunction getHumainCodeBaseUrl(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_BASE_URL_ENV] ?? env[HC_BASE_URL_ENV];\n}\n\nfunction getHumainCodeApiKey(env: NodeJS.ProcessEnv): string | undefined {\n\treturn env[HUMAIN_CODE_API_KEY_ENV] ?? env[HC_API_KEY_ENV];\n}\n\nfunction isDeployNowProxyCredential(value: string | undefined): boolean {\n\treturn value !== undefined && DEPLOYNOW_PROXY_SENTINELS.has(value);\n}\n\nfunction getDeployNowCredential(env: NodeJS.ProcessEnv, key: string): string {\n\treturn readNonEmptyEnv(env, key) ?? DEPLOYNOW_PROXY_SENTINEL;\n}\n\nfunction getDeployNowBedrockRequestEnv(env: NodeJS.ProcessEnv): Record<string, string> {\n\tconst requestEnv: Record<string, string> = {\n\t\t[AWS_ACCESS_KEY_ID_ENV]: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t[AWS_SECRET_ACCESS_KEY_ENV]: getDeployNowCredential(env, AWS_SECRET_ACCESS_KEY_ENV),\n\t\t[AWS_REGION_ENV]: readNonEmptyEnv(env, AWS_REGION_ENV) ?? \"\",\n\t};\n\tconst sessionToken = readNonEmptyEnv(env, AWS_SESSION_TOKEN_ENV);\n\tif (sessionToken) {\n\t\trequestEnv[AWS_SESSION_TOKEN_ENV] = sessionToken;\n\t}\n\treturn requestEnv;\n}\n\nfunction hasDeployNowBedrockBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV) &&\n\t\t\treadNonEmptyEnv(env, AWS_REGION_ENV) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_ACCESS_KEY_ID_ENV]) &&\n\t\t\tisDeployNowProxyCredential(env[AWS_SECRET_ACCESS_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowAnthropicBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV) && isDeployNowProxyCredential(env[ANTHROPIC_API_KEY_ENV]),\n\t);\n}\n\nfunction hasDeployNowOpenAiBindingConfig(env: NodeJS.ProcessEnv): boolean {\n\treturn Boolean(\n\t\treadNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV) && isDeployNowProxyCredential(env[OPENAI_API_KEY_ENV]),\n\t);\n}\n\nfunction getDeployNowBedrockModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(isForgeRuntimeBedrockProvider(env) ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, BEDROCK_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowOpenAiModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"openai\" ? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV) : undefined) ??\n\t\treadNonEmptyEnv(env, OPENAI_MODEL_ID_ENV)\n\t);\n}\n\nfunction getDeployNowAnthropicModelId(env: NodeJS.ProcessEnv): string | undefined {\n\treturn (\n\t\t(getForgeRuntimeModelProvider(env) === \"anthropic\"\n\t\t\t? readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_ID_ENV)\n\t\t\t: undefined) ?? readNonEmptyEnv(env, ANTHROPIC_MODEL_ID_ENV)\n\t);\n}\n\nfunction getForgeRuntimeModelProvider(env: NodeJS.ProcessEnv): string | undefined {\n\treturn readNonEmptyEnv(env, FORGE_RUNTIME_MODEL_PROVIDER_ENV)?.toLowerCase();\n}\n\nfunction isForgeRuntimeBedrockProvider(env: NodeJS.ProcessEnv): boolean {\n\tconst runtimeProvider = getForgeRuntimeModelProvider(env);\n\treturn runtimeProvider === \"bedrock\" || runtimeProvider === AMAZON_BEDROCK_PROVIDER;\n}\n\nfunction createUnsupportedHumainSsoProvider() {\n\treturn {\n\t\tname: \"HUMAIN SSO\",\n\t\tasync login(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tasync refreshToken(): Promise<OAuthCredentials> {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t\tgetApiKey(): string {\n\t\t\tthrow new Error(HUMAIN_SSO_UNSUPPORTED_MESSAGE);\n\t\t},\n\t};\n}\n\nfunction getHumainCodeModelIds(env: NodeJS.ProcessEnv): string[] {\n\tconst configuredModels = readCsvEnv(env, HUMAIN_CODE_MODELS_ENV);\n\tconst shorthandModels = configuredModels.length > 0 ? configuredModels : readCsvEnv(env, HC_MODELS_ENV);\n\treturn shorthandModels.length > 0 ? shorthandModels : DEFAULT_HUMAIN_CODE_MODELS;\n}\n\nfunction getHumainCodeModels(env: NodeJS.ProcessEnv): ProviderModelConfig[] {\n\treturn getHumainCodeModelIds(env).map((id) => toModelConfig(id));\n}\n\nfunction registerDeployNowBindingProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): void {\n\tconst bedrockBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_BEDROCK_BASE_URL_ENV);\n\tconst bedrockModel = getDeployNowBedrockModelId(env);\n\tif (bedrockBaseUrl && hasDeployNowBedrockBindingConfig(env)) {\n\t\tpi.registerProvider(AMAZON_BEDROCK_PROVIDER, {\n\t\t\tname: \"DeployNow Bedrock Binding\",\n\t\t\tbaseUrl: bedrockBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, AWS_ACCESS_KEY_ID_ENV),\n\t\t\tenv: getDeployNowBedrockRequestEnv(env),\n\t\t\tapi: \"bedrock-converse-stream\",\n\t\t\t...(bedrockModel ? { models: [toModelConfig(bedrockModel, \"bedrock-converse-stream\")] } : {}),\n\t\t});\n\t}\n\n\tconst anthropicBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_ANTHROPIC_BASE_URL_ENV);\n\tconst anthropicModel = getDeployNowAnthropicModelId(env);\n\tif (anthropicBaseUrl && hasDeployNowAnthropicBindingConfig(env)) {\n\t\tpi.registerProvider(ANTHROPIC_PROVIDER, {\n\t\t\tname: \"DeployNow Anthropic Binding\",\n\t\t\tbaseUrl: anthropicBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, ANTHROPIC_API_KEY_ENV),\n\t\t\tapi: \"anthropic-messages\",\n\t\t\t...(anthropicModel ? { models: [toModelConfig(anthropicModel, \"anthropic-messages\")] } : {}),\n\t\t});\n\t}\n\n\tconst openAiBaseUrl = readNonEmptyEnv(env, DEPLOYNOW_OPENAI_BASE_URL_ENV);\n\tconst openAiModel = getDeployNowOpenAiModelId(env);\n\tif (openAiBaseUrl && hasDeployNowOpenAiBindingConfig(env)) {\n\t\tpi.registerProvider(OPENAI_PROVIDER, {\n\t\t\tname: \"DeployNow OpenAI Binding\",\n\t\t\tbaseUrl: openAiBaseUrl,\n\t\t\tapiKey: getDeployNowCredential(env, OPENAI_API_KEY_ENV),\n\t\t\tapi: \"openai-completions\",\n\t\t\t...(openAiModel ? { models: [toModelConfig(openAiModel, \"openai-completions\")] } : {}),\n\t\t});\n\t}\n}\n\nasync function registerHumainProviders(pi: ExtensionAPI, env: NodeJS.ProcessEnv): Promise<void> {\n\tconst localBaseUrl = getLocalBaseUrl(env);\n\tconst localModels = await getHumainLocalModelConfigs(env);\n\tif (localBaseUrl && localModels.length > 0) {\n\t\tpi.registerProvider(HUMAIN_LOCAL_PROVIDER, {\n\t\t\tname: \"HUMAIN Local\",\n\t\t\tbaseUrl: localBaseUrl,\n\t\t\tapiKey: getLocalApiKey(env) ?? \"local\",\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: Boolean(getLocalApiKey(env)),\n\t\t\tmodels: localModels,\n\t\t});\n\t}\n\n\tconst humainCodeBaseUrl = getHumainCodeBaseUrl(env);\n\tconst humainCodeApiKey = getHumainCodeApiKey(env);\n\tif (humainCodeBaseUrl && humainCodeApiKey) {\n\t\tpi.registerProvider(HUMAIN_CODE_PROVIDER, {\n\t\t\tname: \"HUMAIN Code\",\n\t\t\tbaseUrl: humainCodeBaseUrl,\n\t\t\tapiKey: humainCodeApiKey,\n\t\t\tapi: \"openai-completions\",\n\t\t\tauthHeader: true,\n\t\t\tmodels: getHumainCodeModels(env),\n\t\t});\n\t}\n\n\tregisterDeployNowBindingProviders(pi, env);\n\n\tpi.registerProvider(HUMAIN_SSO_PROVIDER, {\n\t\tname: \"HUMAIN SSO\",\n\t\toauth: createUnsupportedHumainSsoProvider(),\n\t});\n}\n\nexport function getHumainDefaultPackageSources(): PackageSource[] {\n\treturn [];\n}\n\nexport function createHumainProviderExtensionFactory(\n\tenv: NodeJS.ProcessEnv,\n\thomeDirectory: string = homedir(),\n): ExtensionFactory {\n\treturn async (pi) => {\n\t\tawait registerHumainProviders(pi, env);\n\n\t\tpi.on(\"session_start\", (event, ctx) => {\n\t\t\tif (event.reason === \"startup\") {\n\t\t\t\tctx.ui.setTheme(\"humain-dark\");\n\t\t\t\tcleanupLegacyWorkflowTiers(getLegacyWorkflowTierPaths(homeDirectory));\n\t\t\t}\n\t\t});\n\t};\n}\n\nexport function getHumainBundledExtensionFactories(env: NodeJS.ProcessEnv): ExtensionFactory[] {\n\treturn [\n\t\tcreateHumainProviderExtensionFactory(env),\n\t\tcreateHumainWebAccessExtensionFactory(),\n\t\tcreateHumainMcpAdapterExtensionFactory(),\n\t];\n}\n"]}
|