indusagi 0.13.7 → 0.13.8
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/dist/agent.js +28713 -0
- package/dist/ai.js +19964 -0
- package/dist/capabilities.js +2730 -0
- package/dist/cli.js +9 -0
- package/dist/connectors-saas.js +3355 -0
- package/dist/index.js +18211 -0
- package/dist/interop.js +3247 -0
- package/dist/llmgateway.js +3343 -0
- package/dist/mcp.js +2448 -0
- package/dist/memory.js +0 -0
- package/dist/react-host/index.js +101 -0
- package/dist/react-host/ink.js +97 -0
- package/dist/react-host/jsx-runtime.js +95 -0
- package/dist/react-ink.js +3834 -0
- package/dist/runtime.js +4521 -0
- package/dist/sarvam-mcp.js +960 -0
- package/dist/shell-app.js +12435 -0
- package/dist/smithy.js +8133 -0
- package/dist/swarm.js +8918 -0
- package/dist/tracing.js +761 -0
- package/dist/tui.js +2213 -0
- package/dist/types/capabilities/backends/index.d.ts +10 -0
- package/dist/types/capabilities/backends/node-backends.d.ts +30 -0
- package/dist/types/capabilities/capabilities.test.d.ts +14 -0
- package/dist/types/capabilities/files/diff.d.ts +49 -0
- package/dist/types/capabilities/files/edit.d.ts +21 -0
- package/dist/types/capabilities/files/ls.d.ts +16 -0
- package/dist/types/capabilities/files/read-state-gate.d.ts +69 -0
- package/dist/types/capabilities/files/read-state-gate.test.d.ts +14 -0
- package/dist/types/capabilities/files/read.d.ts +15 -0
- package/dist/types/capabilities/files/write.d.ts +16 -0
- package/dist/types/capabilities/index.d.ts +29 -0
- package/dist/types/capabilities/kernel/backends.d.ts +119 -0
- package/dist/types/capabilities/kernel/context.d.ts +52 -0
- package/dist/types/capabilities/kernel/index.d.ts +24 -0
- package/dist/types/capabilities/kernel/output.d.ts +40 -0
- package/dist/types/capabilities/kernel/registry.d.ts +61 -0
- package/dist/types/capabilities/kernel/spec.d.ts +168 -0
- package/dist/types/capabilities/planning/todo.d.ts +62 -0
- package/dist/types/capabilities/registry.d.ts +44 -0
- package/dist/types/capabilities/search/find.d.ts +33 -0
- package/dist/types/capabilities/search/grep.d.ts +30 -0
- package/dist/types/capabilities/shell/bash.d.ts +18 -0
- package/dist/types/capabilities/shell/process.d.ts +33 -0
- package/dist/types/capabilities/web/webfetch.d.ts +25 -0
- package/dist/types/capabilities/web/websearch.d.ts +23 -0
- package/dist/types/connectors-saas/connectors-saas.test.d.ts +12 -0
- package/dist/types/connectors-saas/index.d.ts +16 -0
- package/dist/types/connectors-saas/saas/adapter/composio-backend.d.ts +60 -0
- package/dist/types/connectors-saas/saas/control/connect.d.ts +114 -0
- package/dist/types/connectors-saas/saas/control/tools.d.ts +67 -0
- package/dist/types/connectors-saas/saas/core/builder.d.ts +86 -0
- package/dist/types/connectors-saas/saas/core/cache.d.ts +53 -0
- package/dist/types/connectors-saas/saas/core/index.d.ts +14 -0
- package/dist/types/connectors-saas/saas/core/port.d.ts +157 -0
- package/dist/types/connectors-saas/saas/core/scope-planner.d.ts +74 -0
- package/dist/types/connectors-saas/saas/gateway.d.ts +133 -0
- package/dist/types/connectors-saas/saas/render/format.d.ts +54 -0
- package/dist/types/connectors-saas/saas/render/index.d.ts +19 -0
- package/dist/types/connectors-saas/saas/render/summarizers.d.ts +58 -0
- package/dist/types/connectors-sarvam/connect.d.ts +14 -0
- package/dist/types/connectors-sarvam/connectors-sarvam.test.d.ts +14 -0
- package/dist/types/connectors-sarvam/index.d.ts +14 -0
- package/dist/types/connectors-sarvam/toolbox.d.ts +19 -0
- package/dist/types/connectors-sarvam/types.d.ts +49 -0
- package/dist/types/connectors-zoho/connect.d.ts +22 -0
- package/dist/types/connectors-zoho/connectors-zoho.test.d.ts +10 -0
- package/dist/types/connectors-zoho/index.d.ts +13 -0
- package/dist/types/connectors-zoho/toolbox.d.ts +19 -0
- package/dist/types/connectors-zoho/types.d.ts +56 -0
- package/dist/types/facade/agent.d.ts +1 -0
- package/dist/types/facade/ai.d.ts +1 -0
- package/dist/types/facade/bot/actions/bash.d.ts +71 -0
- package/dist/types/facade/bot/actions/bash.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/checkpoint.d.ts +49 -0
- package/dist/types/facade/bot/actions/checkpoint.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/composio/accounts.d.ts +22 -0
- package/dist/types/facade/bot/actions/composio/client.d.ts +39 -0
- package/dist/types/facade/bot/actions/composio/connect.d.ts +19 -0
- package/dist/types/facade/bot/actions/composio/enable.d.ts +25 -0
- package/dist/types/facade/bot/actions/composio/execute.d.ts +26 -0
- package/dist/types/facade/bot/actions/composio/helpers.d.ts +16 -0
- package/dist/types/facade/bot/actions/composio/index.d.ts +9 -0
- package/dist/types/facade/bot/actions/composio/provider.d.ts +8 -0
- package/dist/types/facade/bot/actions/composio/toolkits.d.ts +22 -0
- package/dist/types/facade/bot/actions/composio/tools.d.ts +28 -0
- package/dist/types/facade/bot/actions/composio/types.d.ts +137 -0
- package/dist/types/facade/bot/actions/crew/activity-tracker.d.ts +65 -0
- package/dist/types/facade/bot/actions/crew/cleanup.d.ts +50 -0
- package/dist/types/facade/bot/actions/crew/fs-lock.d.ts +11 -0
- package/dist/types/facade/bot/actions/crew/index.d.ts +11 -0
- package/dist/types/facade/bot/actions/crew/mailbox.d.ts +20 -0
- package/dist/types/facade/bot/actions/crew/model-policy.d.ts +22 -0
- package/dist/types/facade/bot/actions/crew/names.d.ts +27 -0
- package/dist/types/facade/bot/actions/crew/protocol.d.ts +74 -0
- package/dist/types/facade/bot/actions/crew/task-store.d.ts +88 -0
- package/dist/types/facade/bot/actions/crew/team-attach-claim.d.ts +35 -0
- package/dist/types/facade/bot/actions/crew/team-config.d.ts +54 -0
- package/dist/types/facade/bot/actions/crew/worktree.d.ts +39 -0
- package/dist/types/facade/bot/actions/edit-diff.d.ts +66 -0
- package/dist/types/facade/bot/actions/edit-utils.d.ts +86 -0
- package/dist/types/facade/bot/actions/edit.d.ts +59 -0
- package/dist/types/facade/bot/actions/edit.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/find.d.ts +27 -0
- package/dist/types/facade/bot/actions/find.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/grep.d.ts +53 -0
- package/dist/types/facade/bot/actions/grep.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/index.d.ts +316 -0
- package/dist/types/facade/bot/actions/kit/hook-runner.d.ts +12 -0
- package/dist/types/facade/bot/actions/kit/image-resize.d.ts +19 -0
- package/dist/types/facade/bot/actions/kit/mime.d.ts +1 -0
- package/dist/types/facade/bot/actions/kit/shell.d.ts +12 -0
- package/dist/types/facade/bot/actions/ls.d.ts +41 -0
- package/dist/types/facade/bot/actions/path-utils.d.ts +8 -0
- package/dist/types/facade/bot/actions/process-controller.d.ts +14 -0
- package/dist/types/facade/bot/actions/process-manager.d.ts +59 -0
- package/dist/types/facade/bot/actions/process-types.d.ts +73 -0
- package/dist/types/facade/bot/actions/process.d.ts +37 -0
- package/dist/types/facade/bot/actions/read-state.d.ts +83 -0
- package/dist/types/facade/bot/actions/read-state.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/read.d.ts +43 -0
- package/dist/types/facade/bot/actions/read.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/registry.d.ts +20 -0
- package/dist/types/facade/bot/actions/sandbox-backend.d.ts +99 -0
- package/dist/types/facade/bot/actions/sandbox-backend.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/todo-store.d.ts +76 -0
- package/dist/types/facade/bot/actions/todo-types.d.ts +72 -0
- package/dist/types/facade/bot/actions/todo.d.ts +76 -0
- package/dist/types/facade/bot/actions/truncate.d.ts +78 -0
- package/dist/types/facade/bot/actions/webfetch.d.ts +35 -0
- package/dist/types/facade/bot/actions/websearch.d.ts +37 -0
- package/dist/types/facade/bot/actions/websearch.test.d.ts +1 -0
- package/dist/types/facade/bot/actions/write.d.ts +45 -0
- package/dist/types/facade/bot/agent-loop.d.ts +30 -0
- package/dist/types/facade/bot/agent-loop.test.d.ts +1 -0
- package/dist/types/facade/bot/agent.d.ts +140 -0
- package/dist/types/facade/bot/error-handler.d.ts +7 -0
- package/dist/types/facade/bot/event-bus.d.ts +8 -0
- package/dist/types/facade/bot/index.d.ts +7 -0
- package/dist/types/facade/bot/messages.d.ts +83 -0
- package/dist/types/facade/bot/permission-gate.test.d.ts +1 -0
- package/dist/types/facade/bot/proxy.d.ts +70 -0
- package/dist/types/facade/bot/session-manager.d.ts +409 -0
- package/dist/types/facade/bot/state-manager.d.ts +21 -0
- package/dist/types/facade/bot/telemetry.d.ts +6 -0
- package/dist/types/facade/bot/types.d.ts +267 -0
- package/dist/types/facade/mcp-core/client-pool.d.ts +105 -0
- package/dist/types/facade/mcp-core/client.d.ts +245 -0
- package/dist/types/facade/mcp-core/client.test.d.ts +18 -0
- package/dist/types/facade/mcp-core/config.d.ts +60 -0
- package/dist/types/facade/mcp-core/errors.d.ts +103 -0
- package/dist/types/facade/mcp-core/index.d.ts +59 -0
- package/dist/types/facade/mcp-core/oauth/flow.d.ts +72 -0
- package/dist/types/facade/mcp-core/oauth/index.d.ts +18 -0
- package/dist/types/facade/mcp-core/oauth/oauth.test.d.ts +8 -0
- package/dist/types/facade/mcp-core/oauth/provider.d.ts +51 -0
- package/dist/types/facade/mcp-core/oauth/token-store.d.ts +31 -0
- package/dist/types/facade/mcp-core/oauth/types.d.ts +96 -0
- package/dist/types/facade/mcp-core/schema-converter.d.ts +67 -0
- package/dist/types/facade/mcp-core/server.d.ts +110 -0
- package/dist/types/facade/mcp-core/tool-factory.d.ts +62 -0
- package/dist/types/facade/mcp-core/toolbox-bridge.d.ts +46 -0
- package/dist/types/facade/mcp-core/toolbox-bridge.test.d.ts +8 -0
- package/dist/types/facade/mcp-core/types.d.ts +298 -0
- package/dist/types/facade/mcp.d.ts +1 -0
- package/dist/types/facade/memory.d.ts +1 -0
- package/dist/types/facade/ml/adapters/amazon-bedrock.d.ts +32 -0
- package/dist/types/facade/ml/adapters/anthropic-retry.test.d.ts +1 -0
- package/dist/types/facade/ml/adapters/anthropic.d.ts +78 -0
- package/dist/types/facade/ml/adapters/azure-openai-responses.d.ts +14 -0
- package/dist/types/facade/ml/adapters/google-shared.d.ts +99 -0
- package/dist/types/facade/ml/adapters/google-vertex.d.ts +14 -0
- package/dist/types/facade/ml/adapters/google.d.ts +15 -0
- package/dist/types/facade/ml/adapters/kimi.d.ts +21 -0
- package/dist/types/facade/ml/adapters/mock.d.ts +9 -0
- package/dist/types/facade/ml/adapters/nvidia.d.ts +12 -0
- package/dist/types/facade/ml/adapters/openai-codex-responses.d.ts +8 -0
- package/dist/types/facade/ml/adapters/openai-completions.d.ts +24 -0
- package/dist/types/facade/ml/adapters/openai-responses-shared.d.ts +25 -0
- package/dist/types/facade/ml/adapters/openai-responses.d.ts +12 -0
- package/dist/types/facade/ml/adapters/openai-scaffold.d.ts +3 -0
- package/dist/types/facade/ml/adapters/register-builtins.d.ts +2 -0
- package/dist/types/facade/ml/adapters/simple-options.d.ts +39 -0
- package/dist/types/facade/ml/adapters/simple-options.test.d.ts +1 -0
- package/dist/types/facade/ml/adapters/transform-messages.d.ts +23 -0
- package/dist/types/facade/ml/api-registry.d.ts +49 -0
- package/dist/types/facade/ml/cli.d.ts +2 -0
- package/dist/types/facade/ml/env-api-keys.d.ts +19 -0
- package/dist/types/facade/ml/index.d.ts +27 -0
- package/dist/types/facade/ml/kit/auth/anthropic.d.ts +17 -0
- package/dist/types/facade/ml/kit/auth/github-copilot.d.ts +22 -0
- package/dist/types/facade/ml/kit/auth/index.d.ts +50 -0
- package/dist/types/facade/ml/kit/auth/kimi.d.ts +23 -0
- package/dist/types/facade/ml/kit/auth/oauth-page.d.ts +2 -0
- package/dist/types/facade/ml/kit/auth/openai-codex.d.ts +36 -0
- package/dist/types/facade/ml/kit/auth/pkce.d.ts +12 -0
- package/dist/types/facade/ml/kit/auth/types.d.ts +67 -0
- package/dist/types/facade/ml/kit/base-stream-handler.d.ts +30 -0
- package/dist/types/facade/ml/kit/event-stream.d.ts +63 -0
- package/dist/types/facade/ml/kit/index.d.ts +14 -0
- package/dist/types/facade/ml/kit/json-parse.d.ts +23 -0
- package/dist/types/facade/ml/kit/message-transform.d.ts +32 -0
- package/dist/types/facade/ml/kit/output-factory.d.ts +8 -0
- package/dist/types/facade/ml/kit/overflow.d.ts +9 -0
- package/dist/types/facade/ml/kit/provider-adapter.d.ts +56 -0
- package/dist/types/facade/ml/kit/provider-client-builder.d.ts +36 -0
- package/dist/types/facade/ml/kit/provider-consolidation.d.ts +3 -0
- package/dist/types/facade/ml/kit/provider-constants.d.ts +34 -0
- package/dist/types/facade/ml/kit/provider-errors.d.ts +52 -0
- package/dist/types/facade/ml/kit/sanitize-unicode.d.ts +2 -0
- package/dist/types/facade/ml/kit/stream-event-helper.d.ts +38 -0
- package/dist/types/facade/ml/kit/stream-handler-types.d.ts +46 -0
- package/dist/types/facade/ml/kit/streaming-state-manager.d.ts +42 -0
- package/dist/types/facade/ml/kit/tool-converter.d.ts +49 -0
- package/dist/types/facade/ml/kit/typebox-helpers.d.ts +24 -0
- package/dist/types/facade/ml/kit/validation.d.ts +26 -0
- package/dist/types/facade/ml/models.d.ts +41 -0
- package/dist/types/facade/ml/models.generated.d.ts +12405 -0
- package/dist/types/facade/ml/stream.d.ts +27 -0
- package/dist/types/facade/ml/types.d.ts +269 -0
- package/dist/types/index.d.ts +18 -0
- package/dist/types/interop/index.d.ts +12 -0
- package/dist/types/interop/interop.test.d.ts +19 -0
- package/dist/types/interop/protocol-bridge/bridge.d.ts +52 -0
- package/dist/types/interop/protocol-bridge/contract.d.ts +249 -0
- package/dist/types/interop/protocol-bridge/endpoint.d.ts +124 -0
- package/dist/types/interop/protocol-bridge/fleet.d.ts +92 -0
- package/dist/types/interop/protocol-bridge/host.d.ts +61 -0
- package/dist/types/interop/protocol-bridge/index.d.ts +16 -0
- package/dist/types/interop/protocol-bridge/schema.d.ts +29 -0
- package/dist/types/llmgateway/catalog/cards.d.ts +18 -0
- package/dist/types/llmgateway/catalog/cost.d.ts +15 -0
- package/dist/types/llmgateway/catalog/index.d.ts +7 -0
- package/dist/types/llmgateway/catalog/query.d.ts +40 -0
- package/dist/types/llmgateway/connectors/anthropic.d.ts +35 -0
- package/dist/types/llmgateway/connectors/azure-openai.d.ts +33 -0
- package/dist/types/llmgateway/connectors/bedrock.d.ts +113 -0
- package/dist/types/llmgateway/connectors/google-vertex.d.ts +38 -0
- package/dist/types/llmgateway/connectors/google.d.ts +40 -0
- package/dist/types/llmgateway/connectors/index.d.ts +26 -0
- package/dist/types/llmgateway/connectors/kimi.d.ts +28 -0
- package/dist/types/llmgateway/connectors/mock.d.ts +37 -0
- package/dist/types/llmgateway/connectors/nvidia.d.ts +27 -0
- package/dist/types/llmgateway/connectors/ollama.d.ts +45 -0
- package/dist/types/llmgateway/connectors/openai-chat.d.ts +25 -0
- package/dist/types/llmgateway/connectors/openai-responses.d.ts +49 -0
- package/dist/types/llmgateway/contract/connector.d.ts +32 -0
- package/dist/types/llmgateway/contract/conversation.d.ts +86 -0
- package/dist/types/llmgateway/contract/emission.d.ts +55 -0
- package/dist/types/llmgateway/contract/errors.d.ts +27 -0
- package/dist/types/llmgateway/contract/index.d.ts +13 -0
- package/dist/types/llmgateway/contract/model-card.d.ts +42 -0
- package/dist/types/llmgateway/contract/options.d.ts +31 -0
- package/dist/types/llmgateway/contract/reply.d.ts +33 -0
- package/dist/types/llmgateway/conversion/index.d.ts +10 -0
- package/dist/types/llmgateway/conversion/mappers.d.ts +65 -0
- package/dist/types/llmgateway/conversion/openai-compatible.d.ts +46 -0
- package/dist/types/llmgateway/conversion/reduce.d.ts +20 -0
- package/dist/types/llmgateway/credentials/oauth.d.ts +73 -0
- package/dist/types/llmgateway/credentials/pkce.d.ts +52 -0
- package/dist/types/llmgateway/credentials/secrets.d.ts +76 -0
- package/dist/types/llmgateway/gateway.d.ts +34 -0
- package/dist/types/llmgateway/gateway.test.d.ts +14 -0
- package/dist/types/llmgateway/index.d.ts +11 -0
- package/dist/types/llmgateway/streaming/channel.d.ts +24 -0
- package/dist/types/llmgateway/streaming/index.d.ts +10 -0
- package/dist/types/llmgateway/streaming/ndjson.d.ts +17 -0
- package/dist/types/llmgateway/streaming/sse.d.ts +31 -0
- package/dist/types/react-host/index.d.ts +9 -0
- package/dist/types/react-host/ink.d.ts +5 -0
- package/dist/types/react-host/jsx-runtime.d.ts +4 -0
- package/dist/types/react-host/loader.d.ts +3 -0
- package/dist/types/react-ink/components/ChangelogBlock.d.ts +8 -0
- package/dist/types/react-ink/components/DisplayBlockView.d.ts +8 -0
- package/dist/types/react-ink/components/Footer.d.ts +11 -0
- package/dist/types/react-ink/components/MessageList.d.ts +14 -0
- package/dist/types/react-ink/components/MessageRow.d.ts +13 -0
- package/dist/types/react-ink/components/StatusLine.d.ts +18 -0
- package/dist/types/react-ink/components/TaskPanel.d.ts +11 -0
- package/dist/types/react-ink/components/ToolEventBlock.d.ts +48 -0
- package/dist/types/react-ink/components/ToolEventBlock.test.d.ts +1 -0
- package/dist/types/react-ink/components/dialogs/DialogFrame.d.ts +8 -0
- package/dist/types/react-ink/components/dialogs/LoginDialog.d.ts +14 -0
- package/dist/types/react-ink/components/dialogs/ModelDialog.d.ts +9 -0
- package/dist/types/react-ink/components/dialogs/OAuthDialog.d.ts +9 -0
- package/dist/types/react-ink/components/dialogs/ScopedModelsDialog.d.ts +9 -0
- package/dist/types/react-ink/components/dialogs/SelectableDialog.d.ts +22 -0
- package/dist/types/react-ink/components/dialogs/SessionDialog.d.ts +13 -0
- package/dist/types/react-ink/components/dialogs/SettingsDialog.d.ts +14 -0
- package/dist/types/react-ink/components/dialogs/StartupSessionPicker.d.ts +9 -0
- package/dist/types/react-ink/components/dialogs/ThemeDialog.d.ts +26 -0
- package/dist/types/react-ink/components/dialogs/TreeDialog.d.ts +8 -0
- package/dist/types/react-ink/components/dialogs/UserMessageDialog.d.ts +8 -0
- package/dist/types/react-ink/components/messages/AssistantMessage.d.ts +12 -0
- package/dist/types/react-ink/components/messages/BashMessage.d.ts +8 -0
- package/dist/types/react-ink/components/messages/BranchSummaryMessage.d.ts +8 -0
- package/dist/types/react-ink/components/messages/CompactionMessage.d.ts +8 -0
- package/dist/types/react-ink/components/messages/CustomMessage.d.ts +9 -0
- package/dist/types/react-ink/components/messages/SkillInvocationMessage.d.ts +7 -0
- package/dist/types/react-ink/components/messages/ToolCallMessage.d.ts +8 -0
- package/dist/types/react-ink/components/messages/ToolResultBlock.d.ts +12 -0
- package/dist/types/react-ink/components/messages/UserMessage.d.ts +9 -0
- package/dist/types/react-ink/diff/Diff.d.ts +22 -0
- package/dist/types/react-ink/diff/diff.test.d.ts +1 -0
- package/dist/types/react-ink/diff/structured.d.ts +41 -0
- package/dist/types/react-ink/diff/word-diff.d.ts +27 -0
- package/dist/types/react-ink/index.d.ts +42 -0
- package/dist/types/react-ink/markdown/Markdown.d.ts +23 -0
- package/dist/types/react-ink/markdown/MarkdownTable.d.ts +19 -0
- package/dist/types/react-ink/markdown/StreamingMarkdown.d.ts +34 -0
- package/dist/types/react-ink/markdown/format-token.d.ts +39 -0
- package/dist/types/react-ink/markdown/highlight.d.ts +31 -0
- package/dist/types/react-ink/theme-adapter.d.ts +66 -0
- package/dist/types/react-ink/types.d.ts +133 -0
- package/dist/types/react-ink/utils/message-groups.d.ts +25 -0
- package/dist/types/react-ink/utils/selection-dialog.d.ts +2 -0
- package/dist/types/react-ink/utils/session-browser.d.ts +27 -0
- package/dist/types/react-ink/utils/tool-display.d.ts +37 -0
- package/dist/types/runtime/cadence/cadence.test.d.ts +6 -0
- package/dist/types/runtime/cadence/fold.d.ts +48 -0
- package/dist/types/runtime/cadence/index.d.ts +12 -0
- package/dist/types/runtime/cadence/reducer.d.ts +44 -0
- package/dist/types/runtime/conductor/agent.d.ts +71 -0
- package/dist/types/runtime/conductor/index.d.ts +11 -0
- package/dist/types/runtime/contract/config.d.ts +44 -0
- package/dist/types/runtime/contract/effect.d.ts +41 -0
- package/dist/types/runtime/contract/errors.d.ts +22 -0
- package/dist/types/runtime/contract/events.d.ts +63 -0
- package/dist/types/runtime/contract/index.d.ts +18 -0
- package/dist/types/runtime/contract/run-state.d.ts +57 -0
- package/dist/types/runtime/contract/session.d.ts +42 -0
- package/dist/types/runtime/contract/signal.d.ts +49 -0
- package/dist/types/runtime/contract/tools.d.ts +45 -0
- package/dist/types/runtime/dispatch/index.d.ts +9 -0
- package/dist/types/runtime/dispatch/scheduler.d.ts +53 -0
- package/dist/types/runtime/index.d.ts +22 -0
- package/dist/types/runtime/ledger/accumulator.d.ts +44 -0
- package/dist/types/runtime/ledger/bus.d.ts +50 -0
- package/dist/types/runtime/ledger/index.d.ts +11 -0
- package/dist/types/runtime/memory/compactor.d.ts +56 -0
- package/dist/types/runtime/memory/estimate.d.ts +21 -0
- package/dist/types/runtime/memory/index.d.ts +8 -0
- package/dist/types/runtime/runtime.test.d.ts +15 -0
- package/dist/types/runtime/store/dag.d.ts +72 -0
- package/dist/types/runtime/store/hash.d.ts +18 -0
- package/dist/types/runtime/store/index.d.ts +12 -0
- package/dist/types/runtime/store/persist.d.ts +49 -0
- package/dist/types/runtime/turn/driver.d.ts +32 -0
- package/dist/types/runtime/turn/index.d.ts +8 -0
- package/dist/types/runtime/wire/index.d.ts +10 -0
- package/dist/types/runtime/wire/projectors.d.ts +53 -0
- package/dist/types/shell-app/auth-cli/index.d.ts +9 -0
- package/dist/types/shell-app/auth-cli/oauth-cli.d.ts +73 -0
- package/dist/types/shell-app/boot/context.d.ts +108 -0
- package/dist/types/shell-app/boot/index.d.ts +13 -0
- package/dist/types/shell-app/boot/pipeline.d.ts +66 -0
- package/dist/types/shell-app/boot/stages.d.ts +77 -0
- package/dist/types/shell-app/cli.d.ts +75 -0
- package/dist/types/shell-app/config/index.d.ts +11 -0
- package/dist/types/shell-app/config/locator.d.ts +85 -0
- package/dist/types/shell-app/config/settings.d.ts +91 -0
- package/dist/types/shell-app/index.d.ts +26 -0
- package/dist/types/shell-app/invocation/flags.d.ts +89 -0
- package/dist/types/shell-app/invocation/parse.d.ts +89 -0
- package/dist/types/shell-app/locate/brand.d.ts +71 -0
- package/dist/types/shell-app/locate/index.d.ts +12 -0
- package/dist/types/shell-app/locate/locator.d.ts +122 -0
- package/dist/types/shell-app/runners/contract.d.ts +116 -0
- package/dist/types/shell-app/runners/index.d.ts +15 -0
- package/dist/types/shell-app/runners/one-shot.d.ts +21 -0
- package/dist/types/shell-app/runners/registry.d.ts +34 -0
- package/dist/types/shell-app/runners/repl.d.ts +51 -0
- package/dist/types/shell-app/runners/wire.d.ts +34 -0
- package/dist/types/shell-app/shell-app.test.d.ts +14 -0
- package/dist/types/shell-app/upgrade/index.d.ts +9 -0
- package/dist/types/shell-app/upgrade/upgrades.d.ts +62 -0
- package/dist/types/smithy/config/flag-reader.d.ts +128 -0
- package/dist/types/smithy/config/index.d.ts +9 -0
- package/dist/types/smithy/forge.d.ts +135 -0
- package/dist/types/smithy/index.d.ts +36 -0
- package/dist/types/smithy/knowledge/index.d.ts +10 -0
- package/dist/types/smithy/knowledge/loader.d.ts +64 -0
- package/dist/types/smithy/persona/blueprint.d.ts +75 -0
- package/dist/types/smithy/persona/define-agent.d.ts +51 -0
- package/dist/types/smithy/persona/index.d.ts +14 -0
- package/dist/types/smithy/persona/profiles.d.ts +44 -0
- package/dist/types/smithy/runtime/index.d.ts +9 -0
- package/dist/types/smithy/runtime/tool-ledger.d.ts +130 -0
- package/dist/types/smithy/smithy.test.d.ts +20 -0
- package/dist/types/smithy/ui/index.d.ts +11 -0
- package/dist/types/smithy/ui/transcript.d.ts +183 -0
- package/dist/types/swarm/coordinator.d.ts +192 -0
- package/dist/types/swarm/index.d.ts +33 -0
- package/dist/types/swarm/isolation/index.d.ts +14 -0
- package/dist/types/swarm/isolation/runner.d.ts +61 -0
- package/dist/types/swarm/isolation/worktree.d.ts +142 -0
- package/dist/types/swarm/kernel/faults.d.ts +52 -0
- package/dist/types/swarm/kernel/ids.d.ts +25 -0
- package/dist/types/swarm/kernel/index.d.ts +26 -0
- package/dist/types/swarm/kernel/json-cell.d.ts +113 -0
- package/dist/types/swarm/kernel/jsonl-log.d.ts +81 -0
- package/dist/types/swarm/postbox/channel.d.ts +88 -0
- package/dist/types/swarm/postbox/codecs.d.ts +253 -0
- package/dist/types/swarm/postbox/index.d.ts +16 -0
- package/dist/types/swarm/roster/index.d.ts +16 -0
- package/dist/types/swarm/roster/manifest.d.ts +185 -0
- package/dist/types/swarm/swarm.test.d.ts +24 -0
- package/dist/types/swarm/telemetry/activity.d.ts +143 -0
- package/dist/types/swarm/workboard/board.d.ts +174 -0
- package/dist/types/swarm/workboard/dep-graph.d.ts +77 -0
- package/dist/types/swarm/workboard/index.d.ts +12 -0
- package/dist/types/tracing/adapter/index.d.ts +12 -0
- package/dist/types/tracing/adapter/runtime-trace.d.ts +54 -0
- package/dist/types/tracing/channel/index.d.ts +9 -0
- package/dist/types/tracing/channel/signal.d.ts +93 -0
- package/dist/types/tracing/index.d.ts +25 -0
- package/dist/types/tracing/recorder/index.d.ts +12 -0
- package/dist/types/tracing/recorder/recorder.d.ts +75 -0
- package/dist/types/tracing/recorder/sampling.d.ts +55 -0
- package/dist/types/tracing/redaction/index.d.ts +8 -0
- package/dist/types/tracing/redaction/secret-scrubber.d.ts +95 -0
- package/dist/types/tracing/registry/hub.d.ts +57 -0
- package/dist/types/tracing/registry/index.d.ts +7 -0
- package/dist/types/tracing/signal/handle.d.ts +73 -0
- package/dist/types/tracing/signal/index.d.ts +12 -0
- package/dist/types/tracing/signal/segment.d.ts +124 -0
- package/dist/types/tracing/sinks/base.d.ts +51 -0
- package/dist/types/tracing/sinks/console.d.ts +44 -0
- package/dist/types/tracing/sinks/file.d.ts +47 -0
- package/dist/types/tracing/sinks/index.d.ts +16 -0
- package/dist/types/tracing/sinks/stream.d.ts +46 -0
- package/dist/types/tracing/tracing.test.d.ts +7 -0
- package/dist/types/ui/autocomplete.d.ts +59 -0
- package/dist/types/ui/contracts.d.ts +38 -0
- package/dist/types/ui/editor-component.d.ts +100 -0
- package/dist/types/ui/fuzzy.d.ts +29 -0
- package/dist/types/ui/index.d.ts +8 -0
- package/dist/types/ui/keybindings.d.ts +62 -0
- package/dist/types/ui/keys.d.ts +171 -0
- package/dist/types/ui/theme-types.d.ts +36 -0
- package/dist/types/ui/utils.d.ts +101 -0
- package/dist/types/ui-bridge/InteractiveApp.d.ts +38 -0
- package/dist/types/ui-bridge/adapter.d.ts +90 -0
- package/dist/types/ui-bridge/index.d.ts +37 -0
- package/dist/zoho.js +1451 -0
- package/package.json +48 -48
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runner contract — the data-driven replacement for a mode if/else.
|
|
3
|
+
*
|
|
4
|
+
* A {@link Runner} is one self-describing way to drive the agent: it knows the
|
|
5
|
+
* single {@link Invocation} shape it {@link Runner.accepts | accepts} and how to
|
|
6
|
+
* {@link Runner.run | run} a fully-prepared {@link BootContext} to an exit code.
|
|
7
|
+
* Selection is a linear scan over a registry (see `registry.ts`) — the first
|
|
8
|
+
* runner that accepts an invocation wins — so adding a new way to run the agent
|
|
9
|
+
* is a matter of appending one entry, never editing a dispatch ladder.
|
|
10
|
+
*
|
|
11
|
+
* The interactive surface is kept behind the {@link InteractiveView} seam: the
|
|
12
|
+
* REPL runner drives the agent through a `view` it never has to know the shape
|
|
13
|
+
* of, so a richer terminal UI can be slotted in later by implementing the
|
|
14
|
+
* interface — without this layer importing any UI toolkit.
|
|
15
|
+
*/
|
|
16
|
+
import type { Agent, RunEvent, RunSnapshot } from "../../runtime";
|
|
17
|
+
import type { Settings } from "../config";
|
|
18
|
+
import type { Invocation } from "../invocation/parse";
|
|
19
|
+
/**
|
|
20
|
+
* The optional collaborators the boot module hands a runner.
|
|
21
|
+
*
|
|
22
|
+
* Re-declared here (rather than imported from `runtime`) so the runners layer
|
|
23
|
+
* owns its own seam vocabulary. It mirrors the runtime's `AgentDeps` loosely:
|
|
24
|
+
* the boot module is free to inject a scripted model, a store, or a ledger.
|
|
25
|
+
*/
|
|
26
|
+
export interface AgentDeps {
|
|
27
|
+
/** A model entrypoint override; absent uses the gateway default. */
|
|
28
|
+
readonly invokeModel?: unknown;
|
|
29
|
+
/** A durable session store; absent disables persistence. */
|
|
30
|
+
readonly store?: unknown;
|
|
31
|
+
/** An event ledger to publish on; absent uses a fresh internal one. */
|
|
32
|
+
readonly ledger?: unknown;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The fully-resolved context a runner needs, assembled by the boot module.
|
|
36
|
+
*
|
|
37
|
+
* Boot does the up-front work — parse the invocation, load settings, resolve the
|
|
38
|
+
* model id, probe the streams — and packages it here. A runner never re-derives
|
|
39
|
+
* any of it; it only builds an agent (via {@link makeAgent}) and drives it over
|
|
40
|
+
* the supplied streams.
|
|
41
|
+
*
|
|
42
|
+
* `view` is present only for the interactive runner; one-shot and wire runners
|
|
43
|
+
* talk to {@link output}/{@link input} directly and ignore it.
|
|
44
|
+
*/
|
|
45
|
+
export interface BootContext {
|
|
46
|
+
/** The parsed invocation this run was launched with. */
|
|
47
|
+
readonly invocation: Invocation;
|
|
48
|
+
/** The merged, normalized user settings. */
|
|
49
|
+
readonly settings: Settings;
|
|
50
|
+
/** The resolved model id every agent built here is bound to. */
|
|
51
|
+
readonly modelId: string;
|
|
52
|
+
/**
|
|
53
|
+
* Factory for the run's {@link Agent}. The boot module pre-binds the model,
|
|
54
|
+
* tools, and system prompt; a runner may pass optional {@link AgentDeps} to
|
|
55
|
+
* override the model entrypoint, store, or ledger.
|
|
56
|
+
*/
|
|
57
|
+
readonly makeAgent: (deps?: AgentDeps) => Agent;
|
|
58
|
+
/** Where a runner writes its output (stdout in production). */
|
|
59
|
+
readonly output: NodeJS.WritableStream;
|
|
60
|
+
/** Where a runner reads its input (stdin in production). */
|
|
61
|
+
readonly input: NodeJS.ReadableStream;
|
|
62
|
+
/** The interactive seam, supplied only when an interactive runner will run. */
|
|
63
|
+
readonly view?: InteractiveView;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* One self-describing way to drive the agent to an exit code.
|
|
67
|
+
*
|
|
68
|
+
* The registry holds many; {@link selectRunner} picks the first whose
|
|
69
|
+
* {@link accepts} returns true for an invocation. `run` resolves the process
|
|
70
|
+
* exit code (0 = success, non-zero = failure) — it must not call
|
|
71
|
+
* `process.exit` itself, so the boot module stays in control of teardown.
|
|
72
|
+
*/
|
|
73
|
+
export interface Runner {
|
|
74
|
+
/** A stable identifier, handy for logging and tests. */
|
|
75
|
+
readonly id: string;
|
|
76
|
+
/** Whether this runner handles the given invocation. */
|
|
77
|
+
accepts(invocation: Invocation): boolean;
|
|
78
|
+
/** Drive the prepared context to completion; resolves the exit code. */
|
|
79
|
+
run(ctx: BootContext): Promise<number>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The seam a real interactive UI implements.
|
|
83
|
+
*
|
|
84
|
+
* The REPL runner owns the read-submit-render loop but knows nothing about *how*
|
|
85
|
+
* a turn is presented: it pushes each {@link RunEvent} at {@link render}, asks
|
|
86
|
+
* {@link prompt} for the next line of user input, and calls {@link close} once
|
|
87
|
+
* on teardown. A minimal plain-text view ships in `repl.ts`; a richer terminal
|
|
88
|
+
* UI can satisfy the same three methods later without touching this layer.
|
|
89
|
+
*/
|
|
90
|
+
export interface InteractiveView {
|
|
91
|
+
/** Present one run event (a delta, a tool lifecycle marker, a settle…). */
|
|
92
|
+
render(event: RunEvent): void;
|
|
93
|
+
/**
|
|
94
|
+
* Ask the user for their next line of input and resolve the typed line.
|
|
95
|
+
*
|
|
96
|
+
* End-of-input (the stream closed, or the user pressed Ctrl-D) is signalled by
|
|
97
|
+
* *rejecting* with {@link EndOfInput} rather than resolving a sentinel, so an
|
|
98
|
+
* empty line stays a legitimate, submittable value. The loop catches it and
|
|
99
|
+
* leaves cleanly.
|
|
100
|
+
*/
|
|
101
|
+
prompt(): Promise<string>;
|
|
102
|
+
/** Release any resources (e.g. a readline interface). Called once. */
|
|
103
|
+
close(): void;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The rejection {@link InteractiveView.prompt} raises when input is exhausted.
|
|
107
|
+
*
|
|
108
|
+
* A typed marker (rather than a magic string return) keeps EOF distinguishable
|
|
109
|
+
* from a blank line and lets the REPL loop end on `instanceof` rather than value
|
|
110
|
+
* matching.
|
|
111
|
+
*/
|
|
112
|
+
export declare class EndOfInput extends Error {
|
|
113
|
+
constructor();
|
|
114
|
+
}
|
|
115
|
+
/** Re-exported for convenience so runner modules import from one site. */
|
|
116
|
+
export type { Agent, RunEvent, RunSnapshot, Invocation, Settings };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runners layer — public surface.
|
|
3
|
+
*
|
|
4
|
+
* One import site for the registry and its contract: the boot module selects a
|
|
5
|
+
* {@link Runner} with {@link selectRunner}, assembles a {@link BootContext}, and
|
|
6
|
+
* calls `run`. The {@link InteractiveView} seam (and its default {@link TextView}
|
|
7
|
+
* placeholder) lives here too so a richer UI can be slotted in later without
|
|
8
|
+
* touching the boot layer.
|
|
9
|
+
*/
|
|
10
|
+
export type { Runner, BootContext, AgentDeps, InteractiveView, } from "./contract";
|
|
11
|
+
export { EndOfInput } from "./contract";
|
|
12
|
+
export { OneShotRunner } from "./one-shot";
|
|
13
|
+
export { WireRunner } from "./wire";
|
|
14
|
+
export { ReplRunner, TextView } from "./repl";
|
|
15
|
+
export { RUNNERS, selectRunner, NoRunnerError } from "./registry";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one-shot runner.
|
|
3
|
+
*
|
|
4
|
+
* Drives a single prompt to settlement, streaming the assistant's prose to the
|
|
5
|
+
* output stream as plain text with no framing, then exits. This is the runner
|
|
6
|
+
* behind `--print`: pipe a question in, get the answer on stdout, suitable for
|
|
7
|
+
* scripting and composition with other tools.
|
|
8
|
+
*
|
|
9
|
+
* It subscribes to the agent's live {@link RunEvent} stream and forwards every
|
|
10
|
+
* incremental `text_delta` straight to {@link BootContext.output}, so output
|
|
11
|
+
* appears as it is generated rather than all at once at the end. A trailing
|
|
12
|
+
* newline is printed once the run settles so the final line is terminated. If
|
|
13
|
+
* the run faults, the failure is reported to stderr and the runner resolves a
|
|
14
|
+
* non-zero exit code.
|
|
15
|
+
*/
|
|
16
|
+
import type { Runner } from "./contract";
|
|
17
|
+
/**
|
|
18
|
+
* The single-shot, plain-text output runner. Accepts the `print` mode the
|
|
19
|
+
* invocation parser derives for a prompt-bearing, non-interactive launch.
|
|
20
|
+
*/
|
|
21
|
+
export declare const OneShotRunner: Runner;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runner registry — the data-driven replacement for a mode if/else.
|
|
3
|
+
*
|
|
4
|
+
* Every concrete {@link Runner} is listed once in {@link RUNNERS}; selecting the
|
|
5
|
+
* right one for an invocation is a linear scan that returns the first whose
|
|
6
|
+
* {@link Runner.accepts | accepts} is true. Adding a new way to drive the agent
|
|
7
|
+
* means appending an entry here — no dispatch ladder to edit.
|
|
8
|
+
*
|
|
9
|
+
* Note the registry covers only the *running* modes. The `help` and `version`
|
|
10
|
+
* modes are pure, output-only concerns the boot/CLI layer renders directly from
|
|
11
|
+
* the flag table and package metadata, so no runner accepts them and they never
|
|
12
|
+
* reach {@link selectRunner}.
|
|
13
|
+
*/
|
|
14
|
+
import type { Invocation, Runner } from "./contract";
|
|
15
|
+
/**
|
|
16
|
+
* The ordered list of runners. Order is significant only as a tie-break: the
|
|
17
|
+
* three modes are mutually exclusive, so at most one accepts any invocation, but
|
|
18
|
+
* the scan stops at the first match either way.
|
|
19
|
+
*/
|
|
20
|
+
export declare const RUNNERS: readonly Runner[];
|
|
21
|
+
/**
|
|
22
|
+
* Thrown when no registered runner can handle an invocation. This is a launcher
|
|
23
|
+
* bug (e.g. a non-running mode reached the registry), not a user error.
|
|
24
|
+
*/
|
|
25
|
+
export declare class NoRunnerError extends Error {
|
|
26
|
+
constructor(mode: string);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Pick the runner for an invocation: the first in {@link RUNNERS} that accepts
|
|
30
|
+
* it. Throws {@link NoRunnerError} if none match — which should only happen for
|
|
31
|
+
* the `help`/`version` modes the boot layer is expected to short-circuit before
|
|
32
|
+
* ever calling here.
|
|
33
|
+
*/
|
|
34
|
+
export declare function selectRunner(invocation: Invocation): Runner;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The REPL runner — a minimal interactive loop behind the {@link InteractiveView}
|
|
3
|
+
* seam.
|
|
4
|
+
*
|
|
5
|
+
* This is the runner behind the default interactive launch (`repl` mode): read a
|
|
6
|
+
* line, submit it to the agent, stream the answer back, repeat until the user
|
|
7
|
+
* leaves or input ends. It is deliberately *minimal* — a plain readline loop
|
|
8
|
+
* with line-oriented console output and no cursor tricks, colours, or layout.
|
|
9
|
+
*
|
|
10
|
+
* The presentation lives entirely behind the {@link InteractiveView} seam. This
|
|
11
|
+
* file ships one trivial implementation, {@link TextView}, that does plain text
|
|
12
|
+
* writes over a readline interface. THIS IS A PLACEHOLDER: a richer terminal UI
|
|
13
|
+
* is expected to implement the same `render`/`prompt`/`close` interface and be
|
|
14
|
+
* injected via {@link BootContext.view}, at which point this runner drives it
|
|
15
|
+
* unchanged. Keeping the loop UI-agnostic is the whole point — nothing here
|
|
16
|
+
* imports a UI toolkit, and nothing here will need to change when one arrives.
|
|
17
|
+
*/
|
|
18
|
+
import { type InteractiveView, type RunEvent, type Runner } from "./contract";
|
|
19
|
+
/**
|
|
20
|
+
* The default plain-text {@link InteractiveView}.
|
|
21
|
+
*
|
|
22
|
+
* A thin wrapper over `node:readline`: {@link prompt} asks for one line and
|
|
23
|
+
* resolves it (rejecting with {@link EndOfInput} on EOF / Ctrl-D), and
|
|
24
|
+
* {@link render} writes streamed text deltas inline and a single newline once a
|
|
25
|
+
* turn settles. It owns nothing the agent needs to know about — it is the
|
|
26
|
+
* stand-in the seam exists for.
|
|
27
|
+
*/
|
|
28
|
+
export declare class TextView implements InteractiveView {
|
|
29
|
+
private readonly input;
|
|
30
|
+
private readonly output;
|
|
31
|
+
private readonly rl;
|
|
32
|
+
/** Set once the underlying stream signals end-of-input. */
|
|
33
|
+
private ended;
|
|
34
|
+
/** True while we are mid-assistant-turn, so settle knows to break the line. */
|
|
35
|
+
private midTurn;
|
|
36
|
+
constructor(input: NodeJS.ReadableStream, output: NodeJS.WritableStream);
|
|
37
|
+
/** Present one run event as plain text. */
|
|
38
|
+
render(event: RunEvent): void;
|
|
39
|
+
/**
|
|
40
|
+
* Ask for one line of input, rejecting with {@link EndOfInput} once the input
|
|
41
|
+
* stream has closed.
|
|
42
|
+
*/
|
|
43
|
+
prompt(): Promise<string>;
|
|
44
|
+
/** Tear down the readline interface. Safe to call more than once. */
|
|
45
|
+
close(): void;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* The interactive runner. Accepts the `repl` mode the parser derives for an
|
|
49
|
+
* attended, prompt-less launch.
|
|
50
|
+
*/
|
|
51
|
+
export declare const ReplRunner: Runner;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The wire runner — a line-delimited JSON protocol over stdio.
|
|
3
|
+
*
|
|
4
|
+
* This is the machine-facing runner behind `--json` (a.k.a. `--rpc`/`--wire`):
|
|
5
|
+
* a host process speaks to the agent by writing one JSON request per line and
|
|
6
|
+
* reads back one JSON event per line. It is the integration seam for editors,
|
|
7
|
+
* orchestrators, and test harnesses that want structured access to the run
|
|
8
|
+
* rather than rendered prose.
|
|
9
|
+
*
|
|
10
|
+
* Protocol (every message is a single line of JSON, newline-terminated):
|
|
11
|
+
*
|
|
12
|
+
* Requests (host → runner):
|
|
13
|
+
* { "type": "submit", "input": "<prompt text>" }
|
|
14
|
+
*
|
|
15
|
+
* Responses (runner → host):
|
|
16
|
+
* { "type": "event", "event": <RunEvent> } — one per live run event
|
|
17
|
+
* { "type": "result", "snapshot": <RunSnapshot> } — once per settled submit
|
|
18
|
+
* { "type": "error", "message": "<why>" } — a protocol/parse failure
|
|
19
|
+
*
|
|
20
|
+
* The reader is robust to partial lines: bytes are accumulated into a buffer and
|
|
21
|
+
* only complete `\n`-delimited lines are parsed, so a request split across two
|
|
22
|
+
* chunks is handled correctly. Blank lines are ignored; a line that is not valid
|
|
23
|
+
* JSON, or not a recognised request, yields an `error` response and the loop
|
|
24
|
+
* continues rather than tearing down the connection.
|
|
25
|
+
*
|
|
26
|
+
* The runner resolves its exit code when the input stream ends (EOF): 0 in the
|
|
27
|
+
* normal case.
|
|
28
|
+
*/
|
|
29
|
+
import type { Runner } from "./contract";
|
|
30
|
+
/**
|
|
31
|
+
* The line-delimited JSON runner. Accepts the `wire` mode the parser derives
|
|
32
|
+
* from `--json`/`--rpc`/`--wire`.
|
|
33
|
+
*/
|
|
34
|
+
export declare const WireRunner: Runner;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Behavioural tests for the assembled shell application.
|
|
3
|
+
*
|
|
4
|
+
* Five scenarios cover the seams that turn a command line into a running agent,
|
|
5
|
+
* with no network anywhere: every model turn is a scripted {@link ModelInvoker}
|
|
6
|
+
* replayed as a {@link Channel}, injected through the agent factory's deps.
|
|
7
|
+
*
|
|
8
|
+
* 1. tokenizeInvocation — flag/mode derivation for the common spellings.
|
|
9
|
+
* 2. Locator + applyUpgrades — sandboxed path math and idempotent upgrades.
|
|
10
|
+
* 3. loadSettings — a project file overriding the built-in defaults.
|
|
11
|
+
* 4. OneShotRunner — a scripted "hello" streamed to a captured output stream.
|
|
12
|
+
* 5. WireRunner — one JSON submit line in, JSON event + result lines out.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shell-application startup upgrades — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Exposes the idempotent upgrade vocabulary ({@link Upgrade}), the declared set
|
|
5
|
+
* ({@link UPGRADES}), and the runner ({@link applyUpgrades}) the boot layer calls
|
|
6
|
+
* once on start-up.
|
|
7
|
+
*/
|
|
8
|
+
export { UPGRADES, applyUpgrades } from "./upgrades";
|
|
9
|
+
export type { Upgrade } from "./upgrades";
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Idempotent startup upgrades for the shell application.
|
|
3
|
+
*
|
|
4
|
+
* On boot the shell may need to perform one-time housekeeping: create a missing
|
|
5
|
+
* directory, move a file to a new location, rewrite a stale config shape. Each
|
|
6
|
+
* such chore is an {@link Upgrade} — a small object with a stable, human-chosen
|
|
7
|
+
* `id` and an `apply` step. The set is *keyed by id rather than by a sequential
|
|
8
|
+
* version number*: an upgrade runs at most once across the lifetime of an
|
|
9
|
+
* install, and adding, reordering, or removing entries never disturbs which
|
|
10
|
+
* other upgrades are considered "done".
|
|
11
|
+
*
|
|
12
|
+
* {@link applyUpgrades} reads a tiny marker file listing the ids that have
|
|
13
|
+
* already run, applies only the rest in declaration order, records each success,
|
|
14
|
+
* and returns the ids it applied this pass. Re-running it is a no-op once every
|
|
15
|
+
* upgrade is recorded, which is what makes startup cheap and safe to repeat.
|
|
16
|
+
*
|
|
17
|
+
* Failures are contained: if one upgrade throws, the ids that already succeeded
|
|
18
|
+
* this pass are still persisted, and the error propagates so the boot layer can
|
|
19
|
+
* decide how loud to be. The marker file itself is read forgivingly — a missing
|
|
20
|
+
* or corrupt marker is treated as "nothing has run yet".
|
|
21
|
+
*/
|
|
22
|
+
import type { Locator } from "../config/locator";
|
|
23
|
+
/**
|
|
24
|
+
* One idempotent boot-time chore.
|
|
25
|
+
*
|
|
26
|
+
* `id` is the identity used to remember whether this upgrade has run; it must be
|
|
27
|
+
* stable forever once shipped (renaming an id re-runs the upgrade). `description`
|
|
28
|
+
* is for logs and humans only. `apply` performs the work and must itself be safe
|
|
29
|
+
* to run on an already-upgraded install, since the marker file could be lost.
|
|
30
|
+
*/
|
|
31
|
+
export interface Upgrade {
|
|
32
|
+
/** Stable, unique identity used to record completion. Never renamed. */
|
|
33
|
+
readonly id: string;
|
|
34
|
+
/** Human-readable summary of what the upgrade does. */
|
|
35
|
+
readonly description: string;
|
|
36
|
+
/** Perform the upgrade. Should tolerate already-applied state. */
|
|
37
|
+
apply(locator: Locator): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The ordered set of upgrades this build knows about.
|
|
41
|
+
*
|
|
42
|
+
* Order matters only for upgrades within a single boot that have not yet run;
|
|
43
|
+
* completion is tracked per-id, so inserting a new upgrade anywhere is safe.
|
|
44
|
+
*
|
|
45
|
+
* Seeded with two trivial, self-evidently-idempotent examples:
|
|
46
|
+
* - `ensure-profile-dir` — guarantee the per-user profile directory exists.
|
|
47
|
+
* - `ensure-sessions-dir` — guarantee the sessions subdirectory exists.
|
|
48
|
+
*/
|
|
49
|
+
export declare const UPGRADES: readonly Upgrade[];
|
|
50
|
+
/**
|
|
51
|
+
* Run every upgrade that has not yet been applied, in declaration order.
|
|
52
|
+
*
|
|
53
|
+
* Reads the marker, applies each {@link UPGRADES} entry whose id is absent,
|
|
54
|
+
* records each success immediately into the in-memory set, and flushes the
|
|
55
|
+
* marker once at the end. Returns the ids applied during *this* call (empty when
|
|
56
|
+
* the install is already fully upgraded).
|
|
57
|
+
*
|
|
58
|
+
* If an upgrade throws, the marker is still flushed with whatever succeeded
|
|
59
|
+
* before the failure, then the error is re-thrown — so a retry will skip the
|
|
60
|
+
* work already done.
|
|
61
|
+
*/
|
|
62
|
+
export declare function applyUpgrades(locator: Locator): Promise<string[]>;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `FlagReader` — a token-consuming state machine for Smithy's own CLI flags.
|
|
3
|
+
*
|
|
4
|
+
* Smithy (the agent-builder meta-tool) is launched with its own small slice of
|
|
5
|
+
* command-line options: which starter profile to seed from, where the generated
|
|
6
|
+
* agent should be written, an explicit model override, a non-interactive switch,
|
|
7
|
+
* and any number of pre-supplied interview answers. This module turns the raw
|
|
8
|
+
* `argv` slice into a {@link SmithyConfig}.
|
|
9
|
+
*
|
|
10
|
+
* Unlike the shell-app's stateless cursor-walk parser, this reader is an
|
|
11
|
+
* *explicit finite-state machine*. It walks the argv one token at a time and
|
|
12
|
+
* lives in exactly one of three states:
|
|
13
|
+
*
|
|
14
|
+
* - `expectFlag` — the resting state. The next token must name a flag (or be a
|
|
15
|
+
* glued `--flag=value`, or a bare `--` terminator). A boolean
|
|
16
|
+
* flag is settled here and we stay in `expectFlag`; a
|
|
17
|
+
* value-taking flag with no glued value advances to
|
|
18
|
+
* `expectValue`.
|
|
19
|
+
* - `expectValue` — we have seen a value-taking flag and are owed its argument.
|
|
20
|
+
* The next token is consumed verbatim as that value and we
|
|
21
|
+
* fall back to `expectFlag`.
|
|
22
|
+
* - `done` — a bare `--` terminator was reached; every remaining token is
|
|
23
|
+
* ignored (Smithy takes no positionals).
|
|
24
|
+
*
|
|
25
|
+
* The set of recognised flags lives in one {@link FLAG_TABLE}, so adding a flag
|
|
26
|
+
* is a single table entry, never a new branch in the walk. The reader is pure: it
|
|
27
|
+
* reads only the array handed to it and never touches `process`, the
|
|
28
|
+
* environment, or the filesystem.
|
|
29
|
+
*/
|
|
30
|
+
/** The flags Smithy understands and how each one is shaped. */
|
|
31
|
+
export type SmithyFlagName = "profile" | "out" | "model" | "non-interactive" | "answer";
|
|
32
|
+
/** Whether a flag carries a value, and (if so) how its value is filed. */
|
|
33
|
+
type FlagKind =
|
|
34
|
+
/** A bare switch: present ⇒ true. */
|
|
35
|
+
"switch"
|
|
36
|
+
/** A single value that overwrites (last spelling wins). */
|
|
37
|
+
| "single"
|
|
38
|
+
/** A repeatable `key=value` pair folded into the answers map. */
|
|
39
|
+
| "pair";
|
|
40
|
+
/** One row of the recognised-flag table. */
|
|
41
|
+
interface FlagSpec {
|
|
42
|
+
/** The canonical flag name (without leading dashes). */
|
|
43
|
+
readonly name: SmithyFlagName;
|
|
44
|
+
/** Every spelling that selects this flag, e.g. `--out`, `-o`. */
|
|
45
|
+
readonly spellings: readonly string[];
|
|
46
|
+
/** Whether the flag takes a value and how it is recorded. */
|
|
47
|
+
readonly kind: FlagKind;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The single source of recognised flags. The walk below contains no per-flag
|
|
51
|
+
* branches — it only consults this table.
|
|
52
|
+
*/
|
|
53
|
+
declare const FLAG_TABLE: readonly FlagSpec[];
|
|
54
|
+
/**
|
|
55
|
+
* The resolved Smithy launch configuration.
|
|
56
|
+
*
|
|
57
|
+
* Every field is optional except by intent: a launch with no flags yields an
|
|
58
|
+
* empty record, and each consumer applies its own default. `answers` collects any
|
|
59
|
+
* `--answer key=value` pairs the user pre-supplied so a non-interactive run can
|
|
60
|
+
* skip the interview.
|
|
61
|
+
*/
|
|
62
|
+
export interface SmithyConfig {
|
|
63
|
+
/** The starter profile to seed the blueprint from (e.g. `coder`). */
|
|
64
|
+
profile?: string;
|
|
65
|
+
/** Destination path for the generated agent file. */
|
|
66
|
+
out?: string;
|
|
67
|
+
/** An explicit model id, overriding whatever the profile would pick. */
|
|
68
|
+
model?: string;
|
|
69
|
+
/** When true, run without prompting — rely on `answers` and defaults. */
|
|
70
|
+
nonInteractive?: boolean;
|
|
71
|
+
/** Pre-supplied interview answers, keyed by question name. */
|
|
72
|
+
answers?: Record<string, string>;
|
|
73
|
+
}
|
|
74
|
+
/** Thrown when an argv slice cannot be read into a valid {@link SmithyConfig}. */
|
|
75
|
+
export declare class FlagError extends Error {
|
|
76
|
+
constructor(message: string);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A token-consuming state machine that reads Smithy CLI flags.
|
|
80
|
+
*
|
|
81
|
+
* Construct one and call {@link read} with the argv slice (already stripped of
|
|
82
|
+
* the runtime and script names). The machine is single-use per `read` call —
|
|
83
|
+
* each call resets its internal state — and reports a malformed invocation by
|
|
84
|
+
* throwing {@link FlagError}.
|
|
85
|
+
*/
|
|
86
|
+
export declare class FlagReader {
|
|
87
|
+
/** Current position in the state machine. */
|
|
88
|
+
private state;
|
|
89
|
+
/** The flag awaiting its value while in `expectValue`. */
|
|
90
|
+
private pending;
|
|
91
|
+
/** The accumulating result, written as tokens are consumed. */
|
|
92
|
+
private config;
|
|
93
|
+
/**
|
|
94
|
+
* Read an argv slice into a {@link SmithyConfig}.
|
|
95
|
+
*
|
|
96
|
+
* Performs a single left-to-right pass, feeding each token to the active state.
|
|
97
|
+
* A trailing value-taking flag left without its argument is an error.
|
|
98
|
+
*/
|
|
99
|
+
read(argv: readonly string[]): SmithyConfig;
|
|
100
|
+
/** Clear all state so the reader can be reused. */
|
|
101
|
+
private reset;
|
|
102
|
+
/**
|
|
103
|
+
* Handle a token while resting in `expectFlag`.
|
|
104
|
+
*
|
|
105
|
+
* Recognises the bare `--` terminator, a glued `--flag=value`, a value-taking
|
|
106
|
+
* flag (which arms `expectValue`), and a switch (settled immediately).
|
|
107
|
+
*/
|
|
108
|
+
private onFlag;
|
|
109
|
+
/** Handle the token owed to the {@link pending} value-taking flag. */
|
|
110
|
+
private onValue;
|
|
111
|
+
/** Record a switch flag turning its slot on. */
|
|
112
|
+
private fileSwitch;
|
|
113
|
+
/** File a resolved value under the slot its spec names. */
|
|
114
|
+
private fileValue;
|
|
115
|
+
/**
|
|
116
|
+
* Fold one `key=value` interview answer into the answers map. A pair missing
|
|
117
|
+
* its `=` separator, or with an empty key, is rejected.
|
|
118
|
+
*/
|
|
119
|
+
private fileAnswer;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Convenience entry point: read an argv slice into a {@link SmithyConfig} with a
|
|
123
|
+
* fresh {@link FlagReader}. Pass `process.argv.slice(2)` from a launcher.
|
|
124
|
+
*/
|
|
125
|
+
export declare function readFlags(argv: readonly string[]): SmithyConfig;
|
|
126
|
+
/** Re-export the recognised-flag table for help rendering and tests. */
|
|
127
|
+
export { FLAG_TABLE };
|
|
128
|
+
export type { FlagSpec };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Smithy config layer — public surface.
|
|
3
|
+
*
|
|
4
|
+
* The flag state machine that reads Smithy's own CLI into a {@link SmithyConfig}.
|
|
5
|
+
* A launcher imports {@link FlagReader} (or the {@link readFlags} convenience) from
|
|
6
|
+
* here and nothing reaches into the module directly.
|
|
7
|
+
*/
|
|
8
|
+
export { FlagReader, FlagError, readFlags, FLAG_TABLE, } from "./flag-reader";
|
|
9
|
+
export type { SmithyConfig, SmithyFlagName, FlagSpec } from "./flag-reader";
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Forge` — the build session that assembles a new agent.
|
|
3
|
+
*
|
|
4
|
+
* The other Smithy layers are each one concern in isolation: the
|
|
5
|
+
* {@link FlagReader} reads a launch into a {@link SmithyConfig}, {@link defineAgent}
|
|
6
|
+
* merges a spec over a profile into a validated {@link AgentBlueprint},
|
|
7
|
+
* {@link toAgentConfig} bridges that blueprint into a runtime `AgentConfig`, the
|
|
8
|
+
* {@link ToolLedger} accounts for what the session did, and the
|
|
9
|
+
* {@link TranscriptModel} sanitizes the dialogue for display. The Forge is the
|
|
10
|
+
* conductor that wires them into a single, drivable build session.
|
|
11
|
+
*
|
|
12
|
+
* It runs in two modes:
|
|
13
|
+
*
|
|
14
|
+
* - {@link Forge.buildInteractive} — a short scripted *interview*. It asks the
|
|
15
|
+
* user, through the {@link ForgeView} seam, for the agent's name, purpose,
|
|
16
|
+
* tool needs, and model preference; folds the answers into a blueprint via
|
|
17
|
+
* {@link defineAgent}; records each interview step on a {@link ToolLedger}; and
|
|
18
|
+
* keeps the dialogue as a transcript a {@link TranscriptModel} can project.
|
|
19
|
+
* - {@link Forge.buildFromConfig} — the non-interactive path. It takes a
|
|
20
|
+
* {@link SmithyConfig} (a profile plus pre-supplied `answers`) and produces the
|
|
21
|
+
* same kind of blueprint with no I/O at all.
|
|
22
|
+
*
|
|
23
|
+
* Finally {@link Forge.instantiate} turns a finished blueprint into a runnable
|
|
24
|
+
* {@link Agent} by way of {@link toAgentConfig} and `createAgent`.
|
|
25
|
+
*
|
|
26
|
+
* The view (and its lone `ask`) is *injected*, never constructed here, so tests
|
|
27
|
+
* can script the entire interview with canned answers and assert against the
|
|
28
|
+
* recorded ledger and transcript without ever touching a terminal or the network.
|
|
29
|
+
*/
|
|
30
|
+
import type { Agent } from "../runtime";
|
|
31
|
+
import type { SmithyConfig } from "./config";
|
|
32
|
+
import type { AgentBlueprint } from "./persona";
|
|
33
|
+
import { ToolLedger } from "./runtime";
|
|
34
|
+
import type { ForgeView, RenderTranscript } from "./ui";
|
|
35
|
+
/**
|
|
36
|
+
* The injectable collaborators a {@link Forge} runs against.
|
|
37
|
+
*
|
|
38
|
+
* Both are optional. `view` is the full {@link ForgeView} seam; `ask` is a
|
|
39
|
+
* convenience override of just its prompt function — handy in tests that only
|
|
40
|
+
* care about scripting answers and not about captured `show` output. When neither
|
|
41
|
+
* is given, the Forge falls back to a {@link ConsoleForgeView} over stdio.
|
|
42
|
+
*/
|
|
43
|
+
export interface ForgeOptions {
|
|
44
|
+
/** The text view the interview reads from and writes to. */
|
|
45
|
+
readonly view?: ForgeView;
|
|
46
|
+
/** A prompt function overriding {@link ForgeView.ask} (the interview seam). */
|
|
47
|
+
readonly ask?: (question: string) => Promise<string>;
|
|
48
|
+
}
|
|
49
|
+
/** The answer keys the interview collects and {@link buildFromConfig} consumes. */
|
|
50
|
+
export type InterviewKey = "name" | "purpose" | "tools" | "model";
|
|
51
|
+
/** The collected interview answers, keyed by {@link InterviewKey}. */
|
|
52
|
+
export type InterviewAnswers = Partial<Record<InterviewKey, string>>;
|
|
53
|
+
/**
|
|
54
|
+
* The build session.
|
|
55
|
+
*
|
|
56
|
+
* Construct one with {@link createForge} (or directly), then call
|
|
57
|
+
* {@link buildInteractive} or {@link buildFromConfig} to obtain a validated
|
|
58
|
+
* {@link AgentBlueprint}, and {@link instantiate} to turn that blueprint into a
|
|
59
|
+
* runnable {@link Agent}. The {@link ledger} and {@link transcript} accessors
|
|
60
|
+
* expose what the most recent interactive build recorded.
|
|
61
|
+
*/
|
|
62
|
+
export declare class Forge {
|
|
63
|
+
/** The view the interview talks through; falls back to a console view. */
|
|
64
|
+
private readonly view;
|
|
65
|
+
/** The accountant for interview steps, one row per question asked. */
|
|
66
|
+
private readonly toolLedger;
|
|
67
|
+
/** The sanitizing projector for the recorded dialogue. */
|
|
68
|
+
private readonly transcriptModel;
|
|
69
|
+
/** The raw dialogue turns recorded during {@link buildInteractive}. */
|
|
70
|
+
private dialogue;
|
|
71
|
+
constructor(options?: ForgeOptions);
|
|
72
|
+
/**
|
|
73
|
+
* Run the scripted interview and return the resulting blueprint.
|
|
74
|
+
*
|
|
75
|
+
* Walks the {@link INTERVIEW} script: for each question it `show`s the prompt,
|
|
76
|
+
* `ask`s through the view, records the answer as a dialogue turn pair, and files
|
|
77
|
+
* one {@link ToolLedger} row noting the step. Once every answer is in, the
|
|
78
|
+
* answers are mapped through {@link defineAgent} (seeded by the profile the
|
|
79
|
+
* "tools" answer implies) into a validated {@link AgentBlueprint}.
|
|
80
|
+
*
|
|
81
|
+
* The session state — {@link ledger} and {@link transcript} — is reset at the
|
|
82
|
+
* start of each call so a reused Forge does not carry a prior interview's rows.
|
|
83
|
+
*
|
|
84
|
+
* @param seedProfile Optional starter profile name to seed defaults from.
|
|
85
|
+
*/
|
|
86
|
+
buildInteractive(seedProfile?: string): Promise<AgentBlueprint>;
|
|
87
|
+
/**
|
|
88
|
+
* Build a blueprint non-interactively from a resolved {@link SmithyConfig}.
|
|
89
|
+
*
|
|
90
|
+
* No view, no prompting: the answers are read straight from `cfg.answers`, the
|
|
91
|
+
* starter profile from `cfg.profile`, and an explicit `cfg.model` (if present)
|
|
92
|
+
* overrides whatever the answers or profile would choose. The same
|
|
93
|
+
* {@link assemble} mapping is used as the interactive path, so both routes
|
|
94
|
+
* produce blueprints of identical shape.
|
|
95
|
+
*
|
|
96
|
+
* @param cfg The launch configuration (typically from a {@link FlagReader}).
|
|
97
|
+
*/
|
|
98
|
+
buildFromConfig(cfg: SmithyConfig): AgentBlueprint;
|
|
99
|
+
/**
|
|
100
|
+
* Turn a finished blueprint into a runnable {@link Agent}.
|
|
101
|
+
*
|
|
102
|
+
* Projects the blueprint onto a runtime `AgentConfig` via {@link toAgentConfig}
|
|
103
|
+
* (resolving the named tool collection into a real toolbox) and hands it to
|
|
104
|
+
* `createAgent`. `cwd` roots the agent's tools at a working directory.
|
|
105
|
+
*
|
|
106
|
+
* @param blueprint A blueprint already validated by {@link defineAgent}.
|
|
107
|
+
* @param cwd Optional working directory for the agent's tools.
|
|
108
|
+
*/
|
|
109
|
+
instantiate(blueprint: AgentBlueprint, cwd?: string): Agent;
|
|
110
|
+
/** The ledger of steps recorded by the most recent interactive build. */
|
|
111
|
+
get ledger(): ToolLedger;
|
|
112
|
+
/** A sanitized, render-ready projection of the recorded dialogue. */
|
|
113
|
+
get transcript(): RenderTranscript;
|
|
114
|
+
/**
|
|
115
|
+
* Map a set of interview answers (plus an optional profile) into a validated
|
|
116
|
+
* {@link AgentBlueprint}.
|
|
117
|
+
*
|
|
118
|
+
* The "tools" answer, when it names a known tool collection, sets the
|
|
119
|
+
* blueprint's `toolCollection`; otherwise the profile/baseline default stands.
|
|
120
|
+
* The "model" answer, when non-empty, overrides the profile's model. `name` and
|
|
121
|
+
* `purpose` flow straight through to `name` and `description`. The single
|
|
122
|
+
* validation gate lives inside {@link defineAgent}.
|
|
123
|
+
*/
|
|
124
|
+
private assemble;
|
|
125
|
+
/** Append one speaker turn of plain text to the recorded dialogue. */
|
|
126
|
+
private recordTurn;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Construct a {@link Forge} build session.
|
|
130
|
+
*
|
|
131
|
+
* The thin factory mirrors the rest of the codebase's `create*` convention and
|
|
132
|
+
* keeps the injectable {@link ForgeOptions} (a scripted view or `ask`) at the call
|
|
133
|
+
* site, which is what lets tests drive the interview with no real I/O.
|
|
134
|
+
*/
|
|
135
|
+
export declare function createForge(options?: ForgeOptions): Forge;
|