indusagi 0.13.6 → 0.13.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +7 -1
- package/dist/cli.js +114 -23
- package/package.json +54 -47
- package/dist/agent.js +0 -28713
- package/dist/ai.js +0 -19964
- package/dist/capabilities.js +0 -2730
- package/dist/connectors-saas.js +0 -3355
- package/dist/index.js +0 -16644
- package/dist/interop.js +0 -3247
- package/dist/knowledge/guides/authoring-an-agent.md +0 -53
- package/dist/knowledge/guides/choosing-tools.md +0 -49
- package/dist/knowledge/guides/model-selection.md +0 -51
- package/dist/knowledge/guides/writing-system-prompts.md +0 -53
- package/dist/knowledge/index.ts +0 -19
- package/dist/knowledge/loader.ts +0 -200
- package/dist/knowledge/manifest.json +0 -29
- package/dist/llmgateway.js +0 -3243
- package/dist/mcp.js +0 -1639
- package/dist/memory.js +0 -0
- package/dist/react-host/index.js +0 -101
- package/dist/react-host/ink.js +0 -97
- package/dist/react-host/jsx-runtime.js +0 -95
- package/dist/react-ink.js +0 -3834
- package/dist/runtime.js +0 -4421
- package/dist/shell-app.js +0 -12333
- package/dist/smithy.js +0 -8033
- package/dist/swarm.js +0 -8818
- package/dist/tracing.js +0 -724
- package/dist/tui.js +0 -2213
- package/dist/types/capabilities/backends/index.d.ts +0 -10
- package/dist/types/capabilities/backends/node-backends.d.ts +0 -30
- package/dist/types/capabilities/capabilities.test.d.ts +0 -14
- package/dist/types/capabilities/files/diff.d.ts +0 -49
- package/dist/types/capabilities/files/edit.d.ts +0 -21
- package/dist/types/capabilities/files/ls.d.ts +0 -16
- package/dist/types/capabilities/files/read-state-gate.d.ts +0 -69
- package/dist/types/capabilities/files/read-state-gate.test.d.ts +0 -14
- package/dist/types/capabilities/files/read.d.ts +0 -15
- package/dist/types/capabilities/files/write.d.ts +0 -16
- package/dist/types/capabilities/index.d.ts +0 -29
- package/dist/types/capabilities/kernel/backends.d.ts +0 -119
- package/dist/types/capabilities/kernel/context.d.ts +0 -52
- package/dist/types/capabilities/kernel/index.d.ts +0 -24
- package/dist/types/capabilities/kernel/output.d.ts +0 -40
- package/dist/types/capabilities/kernel/registry.d.ts +0 -61
- package/dist/types/capabilities/kernel/spec.d.ts +0 -168
- package/dist/types/capabilities/planning/todo.d.ts +0 -62
- package/dist/types/capabilities/registry.d.ts +0 -44
- package/dist/types/capabilities/search/find.d.ts +0 -33
- package/dist/types/capabilities/search/grep.d.ts +0 -30
- package/dist/types/capabilities/shell/bash.d.ts +0 -18
- package/dist/types/capabilities/shell/process.d.ts +0 -33
- package/dist/types/capabilities/web/webfetch.d.ts +0 -25
- package/dist/types/capabilities/web/websearch.d.ts +0 -23
- package/dist/types/connectors-saas/connectors-saas.test.d.ts +0 -12
- package/dist/types/connectors-saas/index.d.ts +0 -16
- package/dist/types/connectors-saas/saas/adapter/composio-backend.d.ts +0 -60
- package/dist/types/connectors-saas/saas/control/connect.d.ts +0 -114
- package/dist/types/connectors-saas/saas/control/tools.d.ts +0 -67
- package/dist/types/connectors-saas/saas/core/builder.d.ts +0 -86
- package/dist/types/connectors-saas/saas/core/cache.d.ts +0 -53
- package/dist/types/connectors-saas/saas/core/index.d.ts +0 -14
- package/dist/types/connectors-saas/saas/core/port.d.ts +0 -157
- package/dist/types/connectors-saas/saas/core/scope-planner.d.ts +0 -74
- package/dist/types/connectors-saas/saas/gateway.d.ts +0 -133
- package/dist/types/connectors-saas/saas/render/format.d.ts +0 -54
- package/dist/types/connectors-saas/saas/render/index.d.ts +0 -19
- package/dist/types/connectors-saas/saas/render/summarizers.d.ts +0 -58
- package/dist/types/facade/agent.d.ts +0 -1
- package/dist/types/facade/ai.d.ts +0 -1
- package/dist/types/facade/bot/actions/bash.d.ts +0 -71
- package/dist/types/facade/bot/actions/bash.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/checkpoint.d.ts +0 -49
- package/dist/types/facade/bot/actions/checkpoint.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/composio/accounts.d.ts +0 -22
- package/dist/types/facade/bot/actions/composio/client.d.ts +0 -39
- package/dist/types/facade/bot/actions/composio/connect.d.ts +0 -19
- package/dist/types/facade/bot/actions/composio/enable.d.ts +0 -25
- package/dist/types/facade/bot/actions/composio/execute.d.ts +0 -26
- package/dist/types/facade/bot/actions/composio/helpers.d.ts +0 -16
- package/dist/types/facade/bot/actions/composio/index.d.ts +0 -9
- package/dist/types/facade/bot/actions/composio/provider.d.ts +0 -8
- package/dist/types/facade/bot/actions/composio/toolkits.d.ts +0 -22
- package/dist/types/facade/bot/actions/composio/tools.d.ts +0 -28
- package/dist/types/facade/bot/actions/composio/types.d.ts +0 -137
- package/dist/types/facade/bot/actions/crew/activity-tracker.d.ts +0 -65
- package/dist/types/facade/bot/actions/crew/cleanup.d.ts +0 -50
- package/dist/types/facade/bot/actions/crew/fs-lock.d.ts +0 -11
- package/dist/types/facade/bot/actions/crew/index.d.ts +0 -11
- package/dist/types/facade/bot/actions/crew/mailbox.d.ts +0 -20
- package/dist/types/facade/bot/actions/crew/model-policy.d.ts +0 -22
- package/dist/types/facade/bot/actions/crew/names.d.ts +0 -27
- package/dist/types/facade/bot/actions/crew/protocol.d.ts +0 -74
- package/dist/types/facade/bot/actions/crew/task-store.d.ts +0 -88
- package/dist/types/facade/bot/actions/crew/team-attach-claim.d.ts +0 -35
- package/dist/types/facade/bot/actions/crew/team-config.d.ts +0 -54
- package/dist/types/facade/bot/actions/crew/worktree.d.ts +0 -39
- package/dist/types/facade/bot/actions/edit-diff.d.ts +0 -66
- package/dist/types/facade/bot/actions/edit-utils.d.ts +0 -86
- package/dist/types/facade/bot/actions/edit.d.ts +0 -59
- package/dist/types/facade/bot/actions/edit.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/find.d.ts +0 -27
- package/dist/types/facade/bot/actions/find.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/grep.d.ts +0 -53
- package/dist/types/facade/bot/actions/grep.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/index.d.ts +0 -316
- package/dist/types/facade/bot/actions/kit/hook-runner.d.ts +0 -12
- package/dist/types/facade/bot/actions/kit/image-resize.d.ts +0 -19
- package/dist/types/facade/bot/actions/kit/mime.d.ts +0 -1
- package/dist/types/facade/bot/actions/kit/shell.d.ts +0 -12
- package/dist/types/facade/bot/actions/ls.d.ts +0 -41
- package/dist/types/facade/bot/actions/path-utils.d.ts +0 -8
- package/dist/types/facade/bot/actions/process-controller.d.ts +0 -14
- package/dist/types/facade/bot/actions/process-manager.d.ts +0 -59
- package/dist/types/facade/bot/actions/process-types.d.ts +0 -73
- package/dist/types/facade/bot/actions/process.d.ts +0 -37
- package/dist/types/facade/bot/actions/read-state.d.ts +0 -83
- package/dist/types/facade/bot/actions/read-state.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/read.d.ts +0 -43
- package/dist/types/facade/bot/actions/read.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/registry.d.ts +0 -20
- package/dist/types/facade/bot/actions/sandbox-backend.d.ts +0 -99
- package/dist/types/facade/bot/actions/sandbox-backend.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/todo-store.d.ts +0 -76
- package/dist/types/facade/bot/actions/todo-types.d.ts +0 -72
- package/dist/types/facade/bot/actions/todo.d.ts +0 -76
- package/dist/types/facade/bot/actions/truncate.d.ts +0 -78
- package/dist/types/facade/bot/actions/webfetch.d.ts +0 -35
- package/dist/types/facade/bot/actions/websearch.d.ts +0 -37
- package/dist/types/facade/bot/actions/websearch.test.d.ts +0 -1
- package/dist/types/facade/bot/actions/write.d.ts +0 -45
- package/dist/types/facade/bot/agent-loop.d.ts +0 -30
- package/dist/types/facade/bot/agent-loop.test.d.ts +0 -1
- package/dist/types/facade/bot/agent.d.ts +0 -140
- package/dist/types/facade/bot/error-handler.d.ts +0 -7
- package/dist/types/facade/bot/event-bus.d.ts +0 -8
- package/dist/types/facade/bot/index.d.ts +0 -7
- package/dist/types/facade/bot/messages.d.ts +0 -83
- package/dist/types/facade/bot/permission-gate.test.d.ts +0 -1
- package/dist/types/facade/bot/proxy.d.ts +0 -70
- package/dist/types/facade/bot/session-manager.d.ts +0 -409
- package/dist/types/facade/bot/state-manager.d.ts +0 -21
- package/dist/types/facade/bot/telemetry.d.ts +0 -6
- package/dist/types/facade/bot/types.d.ts +0 -267
- package/dist/types/facade/mcp-core/client-pool.d.ts +0 -105
- package/dist/types/facade/mcp-core/client.d.ts +0 -213
- package/dist/types/facade/mcp-core/client.test.d.ts +0 -18
- package/dist/types/facade/mcp-core/config.d.ts +0 -60
- package/dist/types/facade/mcp-core/errors.d.ts +0 -103
- package/dist/types/facade/mcp-core/index.d.ts +0 -55
- package/dist/types/facade/mcp-core/schema-converter.d.ts +0 -67
- package/dist/types/facade/mcp-core/server.d.ts +0 -110
- package/dist/types/facade/mcp-core/tool-factory.d.ts +0 -62
- package/dist/types/facade/mcp-core/types.d.ts +0 -298
- package/dist/types/facade/mcp.d.ts +0 -1
- package/dist/types/facade/memory.d.ts +0 -1
- package/dist/types/facade/ml/adapters/amazon-bedrock.d.ts +0 -32
- package/dist/types/facade/ml/adapters/anthropic-retry.test.d.ts +0 -1
- package/dist/types/facade/ml/adapters/anthropic.d.ts +0 -78
- package/dist/types/facade/ml/adapters/azure-openai-responses.d.ts +0 -14
- package/dist/types/facade/ml/adapters/google-shared.d.ts +0 -99
- package/dist/types/facade/ml/adapters/google-vertex.d.ts +0 -14
- package/dist/types/facade/ml/adapters/google.d.ts +0 -15
- package/dist/types/facade/ml/adapters/kimi.d.ts +0 -21
- package/dist/types/facade/ml/adapters/mock.d.ts +0 -9
- package/dist/types/facade/ml/adapters/nvidia.d.ts +0 -12
- package/dist/types/facade/ml/adapters/openai-codex-responses.d.ts +0 -8
- package/dist/types/facade/ml/adapters/openai-completions.d.ts +0 -24
- package/dist/types/facade/ml/adapters/openai-responses-shared.d.ts +0 -25
- package/dist/types/facade/ml/adapters/openai-responses.d.ts +0 -12
- package/dist/types/facade/ml/adapters/openai-scaffold.d.ts +0 -3
- package/dist/types/facade/ml/adapters/register-builtins.d.ts +0 -2
- package/dist/types/facade/ml/adapters/simple-options.d.ts +0 -39
- package/dist/types/facade/ml/adapters/simple-options.test.d.ts +0 -1
- package/dist/types/facade/ml/adapters/transform-messages.d.ts +0 -23
- package/dist/types/facade/ml/api-registry.d.ts +0 -49
- package/dist/types/facade/ml/cli.d.ts +0 -2
- package/dist/types/facade/ml/env-api-keys.d.ts +0 -19
- package/dist/types/facade/ml/index.d.ts +0 -27
- package/dist/types/facade/ml/kit/auth/anthropic.d.ts +0 -17
- package/dist/types/facade/ml/kit/auth/github-copilot.d.ts +0 -22
- package/dist/types/facade/ml/kit/auth/index.d.ts +0 -50
- package/dist/types/facade/ml/kit/auth/kimi.d.ts +0 -23
- package/dist/types/facade/ml/kit/auth/oauth-page.d.ts +0 -2
- package/dist/types/facade/ml/kit/auth/openai-codex.d.ts +0 -36
- package/dist/types/facade/ml/kit/auth/pkce.d.ts +0 -12
- package/dist/types/facade/ml/kit/auth/types.d.ts +0 -67
- package/dist/types/facade/ml/kit/base-stream-handler.d.ts +0 -30
- package/dist/types/facade/ml/kit/event-stream.d.ts +0 -63
- package/dist/types/facade/ml/kit/index.d.ts +0 -14
- package/dist/types/facade/ml/kit/json-parse.d.ts +0 -23
- package/dist/types/facade/ml/kit/message-transform.d.ts +0 -32
- package/dist/types/facade/ml/kit/output-factory.d.ts +0 -8
- package/dist/types/facade/ml/kit/overflow.d.ts +0 -9
- package/dist/types/facade/ml/kit/provider-adapter.d.ts +0 -56
- package/dist/types/facade/ml/kit/provider-client-builder.d.ts +0 -36
- package/dist/types/facade/ml/kit/provider-consolidation.d.ts +0 -3
- package/dist/types/facade/ml/kit/provider-constants.d.ts +0 -34
- package/dist/types/facade/ml/kit/provider-errors.d.ts +0 -52
- package/dist/types/facade/ml/kit/sanitize-unicode.d.ts +0 -2
- package/dist/types/facade/ml/kit/stream-event-helper.d.ts +0 -38
- package/dist/types/facade/ml/kit/stream-handler-types.d.ts +0 -46
- package/dist/types/facade/ml/kit/streaming-state-manager.d.ts +0 -42
- package/dist/types/facade/ml/kit/tool-converter.d.ts +0 -49
- package/dist/types/facade/ml/kit/typebox-helpers.d.ts +0 -24
- package/dist/types/facade/ml/kit/validation.d.ts +0 -26
- package/dist/types/facade/ml/models.d.ts +0 -41
- package/dist/types/facade/ml/models.generated.d.ts +0 -12405
- package/dist/types/facade/ml/stream.d.ts +0 -27
- package/dist/types/facade/ml/types.d.ts +0 -269
- package/dist/types/index.d.ts +0 -16
- package/dist/types/interop/index.d.ts +0 -12
- package/dist/types/interop/interop.test.d.ts +0 -19
- package/dist/types/interop/protocol-bridge/bridge.d.ts +0 -52
- package/dist/types/interop/protocol-bridge/contract.d.ts +0 -249
- package/dist/types/interop/protocol-bridge/endpoint.d.ts +0 -124
- package/dist/types/interop/protocol-bridge/fleet.d.ts +0 -92
- package/dist/types/interop/protocol-bridge/host.d.ts +0 -61
- package/dist/types/interop/protocol-bridge/index.d.ts +0 -16
- package/dist/types/interop/protocol-bridge/schema.d.ts +0 -29
- package/dist/types/llmgateway/catalog/cards.d.ts +0 -18
- package/dist/types/llmgateway/catalog/cost.d.ts +0 -15
- package/dist/types/llmgateway/catalog/index.d.ts +0 -7
- package/dist/types/llmgateway/catalog/query.d.ts +0 -40
- package/dist/types/llmgateway/connectors/anthropic.d.ts +0 -35
- package/dist/types/llmgateway/connectors/azure-openai.d.ts +0 -33
- package/dist/types/llmgateway/connectors/bedrock.d.ts +0 -113
- package/dist/types/llmgateway/connectors/google-vertex.d.ts +0 -38
- package/dist/types/llmgateway/connectors/google.d.ts +0 -40
- package/dist/types/llmgateway/connectors/index.d.ts +0 -26
- package/dist/types/llmgateway/connectors/kimi.d.ts +0 -28
- package/dist/types/llmgateway/connectors/mock.d.ts +0 -37
- package/dist/types/llmgateway/connectors/nvidia.d.ts +0 -27
- package/dist/types/llmgateway/connectors/ollama.d.ts +0 -45
- package/dist/types/llmgateway/connectors/openai-chat.d.ts +0 -25
- package/dist/types/llmgateway/connectors/openai-responses.d.ts +0 -49
- package/dist/types/llmgateway/contract/connector.d.ts +0 -32
- package/dist/types/llmgateway/contract/conversation.d.ts +0 -86
- package/dist/types/llmgateway/contract/emission.d.ts +0 -55
- package/dist/types/llmgateway/contract/errors.d.ts +0 -27
- package/dist/types/llmgateway/contract/index.d.ts +0 -13
- package/dist/types/llmgateway/contract/model-card.d.ts +0 -42
- package/dist/types/llmgateway/contract/options.d.ts +0 -31
- package/dist/types/llmgateway/contract/reply.d.ts +0 -33
- package/dist/types/llmgateway/conversion/index.d.ts +0 -10
- package/dist/types/llmgateway/conversion/mappers.d.ts +0 -65
- package/dist/types/llmgateway/conversion/openai-compatible.d.ts +0 -46
- package/dist/types/llmgateway/conversion/reduce.d.ts +0 -20
- package/dist/types/llmgateway/credentials/oauth.d.ts +0 -73
- package/dist/types/llmgateway/credentials/pkce.d.ts +0 -52
- package/dist/types/llmgateway/credentials/secrets.d.ts +0 -74
- package/dist/types/llmgateway/gateway.d.ts +0 -34
- package/dist/types/llmgateway/gateway.test.d.ts +0 -14
- package/dist/types/llmgateway/index.d.ts +0 -11
- package/dist/types/llmgateway/streaming/channel.d.ts +0 -24
- package/dist/types/llmgateway/streaming/index.d.ts +0 -10
- package/dist/types/llmgateway/streaming/ndjson.d.ts +0 -17
- package/dist/types/llmgateway/streaming/sse.d.ts +0 -31
- package/dist/types/react-host/index.d.ts +0 -9
- package/dist/types/react-host/ink.d.ts +0 -5
- package/dist/types/react-host/jsx-runtime.d.ts +0 -4
- package/dist/types/react-host/loader.d.ts +0 -3
- package/dist/types/react-ink/components/ChangelogBlock.d.ts +0 -8
- package/dist/types/react-ink/components/DisplayBlockView.d.ts +0 -8
- package/dist/types/react-ink/components/Footer.d.ts +0 -11
- package/dist/types/react-ink/components/MessageList.d.ts +0 -14
- package/dist/types/react-ink/components/MessageRow.d.ts +0 -13
- package/dist/types/react-ink/components/StatusLine.d.ts +0 -18
- package/dist/types/react-ink/components/TaskPanel.d.ts +0 -11
- package/dist/types/react-ink/components/ToolEventBlock.d.ts +0 -48
- package/dist/types/react-ink/components/ToolEventBlock.test.d.ts +0 -1
- package/dist/types/react-ink/components/dialogs/DialogFrame.d.ts +0 -8
- package/dist/types/react-ink/components/dialogs/LoginDialog.d.ts +0 -14
- package/dist/types/react-ink/components/dialogs/ModelDialog.d.ts +0 -9
- package/dist/types/react-ink/components/dialogs/OAuthDialog.d.ts +0 -9
- package/dist/types/react-ink/components/dialogs/ScopedModelsDialog.d.ts +0 -9
- package/dist/types/react-ink/components/dialogs/SelectableDialog.d.ts +0 -22
- package/dist/types/react-ink/components/dialogs/SessionDialog.d.ts +0 -13
- package/dist/types/react-ink/components/dialogs/SettingsDialog.d.ts +0 -14
- package/dist/types/react-ink/components/dialogs/StartupSessionPicker.d.ts +0 -9
- package/dist/types/react-ink/components/dialogs/ThemeDialog.d.ts +0 -26
- package/dist/types/react-ink/components/dialogs/TreeDialog.d.ts +0 -8
- package/dist/types/react-ink/components/dialogs/UserMessageDialog.d.ts +0 -8
- package/dist/types/react-ink/components/messages/AssistantMessage.d.ts +0 -12
- package/dist/types/react-ink/components/messages/BashMessage.d.ts +0 -8
- package/dist/types/react-ink/components/messages/BranchSummaryMessage.d.ts +0 -8
- package/dist/types/react-ink/components/messages/CompactionMessage.d.ts +0 -8
- package/dist/types/react-ink/components/messages/CustomMessage.d.ts +0 -9
- package/dist/types/react-ink/components/messages/SkillInvocationMessage.d.ts +0 -7
- package/dist/types/react-ink/components/messages/ToolCallMessage.d.ts +0 -8
- package/dist/types/react-ink/components/messages/ToolResultBlock.d.ts +0 -12
- package/dist/types/react-ink/components/messages/UserMessage.d.ts +0 -9
- package/dist/types/react-ink/diff/Diff.d.ts +0 -22
- package/dist/types/react-ink/diff/diff.test.d.ts +0 -1
- package/dist/types/react-ink/diff/structured.d.ts +0 -41
- package/dist/types/react-ink/diff/word-diff.d.ts +0 -27
- package/dist/types/react-ink/index.d.ts +0 -42
- package/dist/types/react-ink/markdown/Markdown.d.ts +0 -23
- package/dist/types/react-ink/markdown/MarkdownTable.d.ts +0 -19
- package/dist/types/react-ink/markdown/StreamingMarkdown.d.ts +0 -34
- package/dist/types/react-ink/markdown/format-token.d.ts +0 -39
- package/dist/types/react-ink/markdown/highlight.d.ts +0 -31
- package/dist/types/react-ink/theme-adapter.d.ts +0 -66
- package/dist/types/react-ink/types.d.ts +0 -133
- package/dist/types/react-ink/utils/message-groups.d.ts +0 -25
- package/dist/types/react-ink/utils/selection-dialog.d.ts +0 -2
- package/dist/types/react-ink/utils/session-browser.d.ts +0 -27
- package/dist/types/react-ink/utils/tool-display.d.ts +0 -37
- package/dist/types/runtime/cadence/cadence.test.d.ts +0 -6
- package/dist/types/runtime/cadence/fold.d.ts +0 -48
- package/dist/types/runtime/cadence/index.d.ts +0 -12
- package/dist/types/runtime/cadence/reducer.d.ts +0 -44
- package/dist/types/runtime/conductor/agent.d.ts +0 -71
- package/dist/types/runtime/conductor/index.d.ts +0 -11
- package/dist/types/runtime/contract/config.d.ts +0 -44
- package/dist/types/runtime/contract/effect.d.ts +0 -41
- package/dist/types/runtime/contract/errors.d.ts +0 -22
- package/dist/types/runtime/contract/events.d.ts +0 -63
- package/dist/types/runtime/contract/index.d.ts +0 -18
- package/dist/types/runtime/contract/run-state.d.ts +0 -57
- package/dist/types/runtime/contract/session.d.ts +0 -42
- package/dist/types/runtime/contract/signal.d.ts +0 -49
- package/dist/types/runtime/contract/tools.d.ts +0 -45
- package/dist/types/runtime/dispatch/index.d.ts +0 -9
- package/dist/types/runtime/dispatch/scheduler.d.ts +0 -53
- package/dist/types/runtime/index.d.ts +0 -22
- package/dist/types/runtime/ledger/accumulator.d.ts +0 -44
- package/dist/types/runtime/ledger/bus.d.ts +0 -50
- package/dist/types/runtime/ledger/index.d.ts +0 -11
- package/dist/types/runtime/memory/compactor.d.ts +0 -56
- package/dist/types/runtime/memory/estimate.d.ts +0 -21
- package/dist/types/runtime/memory/index.d.ts +0 -8
- package/dist/types/runtime/runtime.test.d.ts +0 -15
- package/dist/types/runtime/store/dag.d.ts +0 -72
- package/dist/types/runtime/store/hash.d.ts +0 -18
- package/dist/types/runtime/store/index.d.ts +0 -12
- package/dist/types/runtime/store/persist.d.ts +0 -49
- package/dist/types/runtime/turn/driver.d.ts +0 -32
- package/dist/types/runtime/turn/index.d.ts +0 -8
- package/dist/types/runtime/wire/index.d.ts +0 -10
- package/dist/types/runtime/wire/projectors.d.ts +0 -53
- package/dist/types/shell-app/auth-cli/index.d.ts +0 -9
- package/dist/types/shell-app/auth-cli/oauth-cli.d.ts +0 -73
- package/dist/types/shell-app/boot/context.d.ts +0 -108
- package/dist/types/shell-app/boot/index.d.ts +0 -13
- package/dist/types/shell-app/boot/pipeline.d.ts +0 -66
- package/dist/types/shell-app/boot/stages.d.ts +0 -77
- package/dist/types/shell-app/cli.d.ts +0 -75
- package/dist/types/shell-app/config/index.d.ts +0 -11
- package/dist/types/shell-app/config/locator.d.ts +0 -85
- package/dist/types/shell-app/config/settings.d.ts +0 -91
- package/dist/types/shell-app/index.d.ts +0 -26
- package/dist/types/shell-app/invocation/flags.d.ts +0 -89
- package/dist/types/shell-app/invocation/parse.d.ts +0 -89
- package/dist/types/shell-app/locate/brand.d.ts +0 -71
- package/dist/types/shell-app/locate/index.d.ts +0 -12
- package/dist/types/shell-app/locate/locator.d.ts +0 -122
- package/dist/types/shell-app/runners/contract.d.ts +0 -116
- package/dist/types/shell-app/runners/index.d.ts +0 -15
- package/dist/types/shell-app/runners/one-shot.d.ts +0 -21
- package/dist/types/shell-app/runners/registry.d.ts +0 -34
- package/dist/types/shell-app/runners/repl.d.ts +0 -51
- package/dist/types/shell-app/runners/wire.d.ts +0 -34
- package/dist/types/shell-app/shell-app.test.d.ts +0 -14
- package/dist/types/shell-app/upgrade/index.d.ts +0 -9
- package/dist/types/shell-app/upgrade/upgrades.d.ts +0 -62
- package/dist/types/smithy/config/flag-reader.d.ts +0 -128
- package/dist/types/smithy/config/index.d.ts +0 -9
- package/dist/types/smithy/forge.d.ts +0 -135
- package/dist/types/smithy/index.d.ts +0 -36
- package/dist/types/smithy/knowledge/index.d.ts +0 -10
- package/dist/types/smithy/knowledge/loader.d.ts +0 -64
- package/dist/types/smithy/persona/blueprint.d.ts +0 -75
- package/dist/types/smithy/persona/define-agent.d.ts +0 -51
- package/dist/types/smithy/persona/index.d.ts +0 -14
- package/dist/types/smithy/persona/profiles.d.ts +0 -44
- package/dist/types/smithy/runtime/index.d.ts +0 -9
- package/dist/types/smithy/runtime/tool-ledger.d.ts +0 -130
- package/dist/types/smithy/smithy.test.d.ts +0 -20
- package/dist/types/smithy/ui/index.d.ts +0 -11
- package/dist/types/smithy/ui/transcript.d.ts +0 -183
- package/dist/types/swarm/coordinator.d.ts +0 -192
- package/dist/types/swarm/index.d.ts +0 -33
- package/dist/types/swarm/isolation/index.d.ts +0 -14
- package/dist/types/swarm/isolation/runner.d.ts +0 -61
- package/dist/types/swarm/isolation/worktree.d.ts +0 -142
- package/dist/types/swarm/kernel/faults.d.ts +0 -52
- package/dist/types/swarm/kernel/ids.d.ts +0 -25
- package/dist/types/swarm/kernel/index.d.ts +0 -26
- package/dist/types/swarm/kernel/json-cell.d.ts +0 -113
- package/dist/types/swarm/kernel/jsonl-log.d.ts +0 -81
- package/dist/types/swarm/postbox/channel.d.ts +0 -88
- package/dist/types/swarm/postbox/codecs.d.ts +0 -253
- package/dist/types/swarm/postbox/index.d.ts +0 -16
- package/dist/types/swarm/roster/index.d.ts +0 -16
- package/dist/types/swarm/roster/manifest.d.ts +0 -185
- package/dist/types/swarm/swarm.test.d.ts +0 -24
- package/dist/types/swarm/telemetry/activity.d.ts +0 -143
- package/dist/types/swarm/workboard/board.d.ts +0 -174
- package/dist/types/swarm/workboard/dep-graph.d.ts +0 -77
- package/dist/types/swarm/workboard/index.d.ts +0 -12
- package/dist/types/tracing/adapter/index.d.ts +0 -12
- package/dist/types/tracing/adapter/runtime-trace.d.ts +0 -54
- package/dist/types/tracing/channel/index.d.ts +0 -9
- package/dist/types/tracing/channel/signal.d.ts +0 -93
- package/dist/types/tracing/index.d.ts +0 -25
- package/dist/types/tracing/recorder/index.d.ts +0 -12
- package/dist/types/tracing/recorder/recorder.d.ts +0 -75
- package/dist/types/tracing/recorder/sampling.d.ts +0 -55
- package/dist/types/tracing/redaction/index.d.ts +0 -8
- package/dist/types/tracing/redaction/secret-scrubber.d.ts +0 -95
- package/dist/types/tracing/registry/hub.d.ts +0 -57
- package/dist/types/tracing/registry/index.d.ts +0 -7
- package/dist/types/tracing/signal/handle.d.ts +0 -73
- package/dist/types/tracing/signal/index.d.ts +0 -12
- package/dist/types/tracing/signal/segment.d.ts +0 -124
- package/dist/types/tracing/sinks/base.d.ts +0 -51
- package/dist/types/tracing/sinks/console.d.ts +0 -44
- package/dist/types/tracing/sinks/file.d.ts +0 -47
- package/dist/types/tracing/sinks/index.d.ts +0 -16
- package/dist/types/tracing/sinks/stream.d.ts +0 -46
- package/dist/types/tracing/tracing.test.d.ts +0 -7
- package/dist/types/ui/autocomplete.d.ts +0 -59
- package/dist/types/ui/contracts.d.ts +0 -38
- package/dist/types/ui/editor-component.d.ts +0 -100
- package/dist/types/ui/fuzzy.d.ts +0 -29
- package/dist/types/ui/index.d.ts +0 -8
- package/dist/types/ui/keybindings.d.ts +0 -62
- package/dist/types/ui/keys.d.ts +0 -171
- package/dist/types/ui/theme-types.d.ts +0 -36
- package/dist/types/ui/utils.d.ts +0 -101
- package/dist/types/ui-bridge/InteractiveApp.d.ts +0 -38
- package/dist/types/ui-bridge/adapter.d.ts +0 -90
- package/dist/types/ui-bridge/index.d.ts +0 -37
package/dist/tracing.js
DELETED
|
@@ -1,724 +0,0 @@
|
|
|
1
|
-
// src/tracing/signal/segment.ts
|
|
2
|
-
import { randomBytes } from "node:crypto";
|
|
3
|
-
function freshId(byteLength) {
|
|
4
|
-
return randomBytes(byteLength).toString("hex");
|
|
5
|
-
}
|
|
6
|
-
function freshTraceId() {
|
|
7
|
-
return freshId(16);
|
|
8
|
-
}
|
|
9
|
-
function freshSegmentId() {
|
|
10
|
-
return freshId(8);
|
|
11
|
-
}
|
|
12
|
-
function openSegment(input) {
|
|
13
|
-
const attributes = Object.freeze({ ...input.attributes ?? {} });
|
|
14
|
-
const segment = {
|
|
15
|
-
id: input.id ?? freshSegmentId(),
|
|
16
|
-
traceId: input.traceId ?? freshTraceId(),
|
|
17
|
-
parentId: input.parentId ?? null,
|
|
18
|
-
kind: input.kind,
|
|
19
|
-
name: input.name,
|
|
20
|
-
startedAt: input.startedAt ?? Date.now(),
|
|
21
|
-
endedAt: null,
|
|
22
|
-
status: "open",
|
|
23
|
-
attributes
|
|
24
|
-
};
|
|
25
|
-
return Object.freeze(segment);
|
|
26
|
-
}
|
|
27
|
-
function withAttributes(segment, patch) {
|
|
28
|
-
const attributes = Object.freeze({ ...segment.attributes, ...patch });
|
|
29
|
-
return Object.freeze({ ...segment, attributes });
|
|
30
|
-
}
|
|
31
|
-
function closeSegment(segment, status, options) {
|
|
32
|
-
const error = options?.error ?? segment.error;
|
|
33
|
-
const record = {
|
|
34
|
-
...segment,
|
|
35
|
-
endedAt: options?.endedAt ?? Date.now(),
|
|
36
|
-
status,
|
|
37
|
-
...status === "error" && error ? { error } : {}
|
|
38
|
-
};
|
|
39
|
-
return Object.freeze(record);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// src/tracing/signal/handle.ts
|
|
43
|
-
function toSegmentError(error) {
|
|
44
|
-
if (error instanceof Error) return { message: error.message };
|
|
45
|
-
if (typeof error === "string") return { message: error };
|
|
46
|
-
try {
|
|
47
|
-
return { message: String(error) };
|
|
48
|
-
} catch {
|
|
49
|
-
return { message: "unknown error" };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function openHandle(input, sink) {
|
|
53
|
-
let segment = openSegment({
|
|
54
|
-
kind: input.kind,
|
|
55
|
-
name: input.name,
|
|
56
|
-
traceId: input.traceId,
|
|
57
|
-
parentId: input.parentId ?? null,
|
|
58
|
-
attributes: input.attributes
|
|
59
|
-
});
|
|
60
|
-
let pendingError;
|
|
61
|
-
let done = false;
|
|
62
|
-
sink({ type: "open", segment });
|
|
63
|
-
const handle = {
|
|
64
|
-
traceId: segment.traceId,
|
|
65
|
-
id: segment.id,
|
|
66
|
-
active: true,
|
|
67
|
-
note(attributes) {
|
|
68
|
-
if (done) return;
|
|
69
|
-
segment = withAttributes(segment, attributes);
|
|
70
|
-
sink({ type: "update", id: segment.id, attributes });
|
|
71
|
-
},
|
|
72
|
-
child(kind, name) {
|
|
73
|
-
if (done) return NOOP_HANDLE;
|
|
74
|
-
return openHandle(
|
|
75
|
-
{ kind, name, traceId: segment.traceId, parentId: segment.id },
|
|
76
|
-
sink
|
|
77
|
-
);
|
|
78
|
-
},
|
|
79
|
-
fail(error) {
|
|
80
|
-
if (done) return;
|
|
81
|
-
pendingError = toSegmentError(error);
|
|
82
|
-
},
|
|
83
|
-
close(status) {
|
|
84
|
-
if (done) return;
|
|
85
|
-
done = true;
|
|
86
|
-
const finalStatus = status ?? (pendingError ? "error" : "ok");
|
|
87
|
-
const record = closeSegment(segment, finalStatus, {
|
|
88
|
-
error: pendingError
|
|
89
|
-
});
|
|
90
|
-
sink({ type: "close", record });
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
return handle;
|
|
94
|
-
}
|
|
95
|
-
var NOOP_HANDLE = Object.freeze({
|
|
96
|
-
traceId: "",
|
|
97
|
-
id: "",
|
|
98
|
-
active: false,
|
|
99
|
-
note() {
|
|
100
|
-
},
|
|
101
|
-
child() {
|
|
102
|
-
return NOOP_HANDLE;
|
|
103
|
-
},
|
|
104
|
-
fail() {
|
|
105
|
-
},
|
|
106
|
-
close() {
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
// src/tracing/channel/signal.ts
|
|
111
|
-
var SignalChannel = class {
|
|
112
|
-
/** Buffered signals awaiting a consumer, oldest first. */
|
|
113
|
-
buffer = [];
|
|
114
|
-
/** A parked consumer's resolver, set while a pull awaits the next signal. */
|
|
115
|
-
waiting = null;
|
|
116
|
-
/** Once true, no further signals are accepted and pulls drain then end. */
|
|
117
|
-
closed = false;
|
|
118
|
-
/** Upper bound on the unread buffer; `Infinity` means unbounded. */
|
|
119
|
-
bound;
|
|
120
|
-
constructor(options) {
|
|
121
|
-
this.bound = options?.bound !== void 0 && options.bound > 0 ? options.bound : Number.POSITIVE_INFINITY;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Publish a signal onto the stream.
|
|
125
|
-
*
|
|
126
|
-
* If a consumer is parked, the signal is handed to it directly; otherwise it
|
|
127
|
-
* is buffered (dropping the oldest entry past `bound`). A no-op once closed.
|
|
128
|
-
*/
|
|
129
|
-
emit(signal) {
|
|
130
|
-
if (this.closed) return;
|
|
131
|
-
if (this.waiting) {
|
|
132
|
-
const resolve = this.waiting;
|
|
133
|
-
this.waiting = null;
|
|
134
|
-
resolve({ value: signal, done: false });
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
this.buffer.push(signal);
|
|
138
|
-
if (this.buffer.length > this.bound) {
|
|
139
|
-
this.buffer.shift();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* End the stream.
|
|
144
|
-
*
|
|
145
|
-
* A parked consumer is completed immediately; a consumer that later pulls
|
|
146
|
-
* receives any still-buffered signals before the terminal `done`. Idempotent.
|
|
147
|
-
*/
|
|
148
|
-
close() {
|
|
149
|
-
if (this.closed) return;
|
|
150
|
-
this.closed = true;
|
|
151
|
-
if (this.waiting) {
|
|
152
|
-
const resolve = this.waiting;
|
|
153
|
-
this.waiting = null;
|
|
154
|
-
resolve({ value: void 0, done: true });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
/** Whether {@link close} has been called. */
|
|
158
|
-
get isClosed() {
|
|
159
|
-
return this.closed;
|
|
160
|
-
}
|
|
161
|
-
/** Count of signals buffered but not yet consumed. */
|
|
162
|
-
get pending() {
|
|
163
|
-
return this.buffer.length;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* The async-iteration entrypoint.
|
|
167
|
-
*
|
|
168
|
-
* Yields buffered signals immediately, then parks awaiting the next `emit`,
|
|
169
|
-
* and returns `{ done: true }` once the channel is closed and drained.
|
|
170
|
-
*/
|
|
171
|
-
[Symbol.asyncIterator]() {
|
|
172
|
-
const next = () => {
|
|
173
|
-
if (this.buffer.length > 0) {
|
|
174
|
-
const value = this.buffer.shift();
|
|
175
|
-
return Promise.resolve({ value, done: false });
|
|
176
|
-
}
|
|
177
|
-
if (this.closed) {
|
|
178
|
-
return Promise.resolve({ value: void 0, done: true });
|
|
179
|
-
}
|
|
180
|
-
return new Promise((resolve) => {
|
|
181
|
-
this.waiting = resolve;
|
|
182
|
-
});
|
|
183
|
-
};
|
|
184
|
-
const ret = () => {
|
|
185
|
-
this.close();
|
|
186
|
-
return Promise.resolve({ value: void 0, done: true });
|
|
187
|
-
};
|
|
188
|
-
return {
|
|
189
|
-
next,
|
|
190
|
-
return: ret
|
|
191
|
-
};
|
|
192
|
-
}
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
// src/tracing/redaction/secret-scrubber.ts
|
|
196
|
-
var REDACTION_TOKEN = "\u2039redacted\u203A";
|
|
197
|
-
var DEFAULT_SECRET_PATTERNS = Object.freeze([
|
|
198
|
-
// Key-name rules ----------------------------------------------------------
|
|
199
|
-
{
|
|
200
|
-
label: "credential-key-name",
|
|
201
|
-
// …secret / …password / passwd / passphrase / …token / api[_-]?key / apikey
|
|
202
|
-
key: /(?:secret|password|passwd|passphrase|token|api[_-]?key|apikey)/i
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
label: "authorization-header-name",
|
|
206
|
-
// authorization, proxy-authorization, x-…-key, x-…-token, cookie, set-cookie
|
|
207
|
-
key: /^(?:proxy-)?authorization$|^x-[\w-]*?(?:key|token|secret)$|^set-cookie$|^cookie$/i
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
label: "private-key-or-access-name",
|
|
211
|
-
// private_key, signing_key, client_secret, access_key, refresh_token, session_id
|
|
212
|
-
key: /(?:private[_-]?key|signing[_-]?key|client[_-]?secret|access[_-]?key|refresh[_-]?token|session[_-]?id)/i
|
|
213
|
-
},
|
|
214
|
-
// Value-shape rules -------------------------------------------------------
|
|
215
|
-
{
|
|
216
|
-
label: "bearer-token-value",
|
|
217
|
-
// an HTTP-style scheme prefix followed by an opaque blob
|
|
218
|
-
value: /\b(?:bearer|basic|token)\s+[A-Za-z0-9._~+/-]{8,}=*\b/i
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
label: "vendor-key-prefix-value",
|
|
222
|
-
// provider-style prefixed keys: sk-…, pk-…, rk-…, xoxb-…, ghp_…, AKIA…
|
|
223
|
-
value: /\b(?:sk|pk|rk|api|key)[-_][A-Za-z0-9]{12,}\b|\bxox[baprs]-[A-Za-z0-9-]{10,}\b|\bgh[pousr]_[A-Za-z0-9]{20,}\b|\bAKIA[0-9A-Z]{12,}\b/
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
label: "json-web-token-value",
|
|
227
|
-
// three base64url segments separated by dots (a JWT)
|
|
228
|
-
value: /\beyJ[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\.[A-Za-z0-9_-]{6,}\b/
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
label: "private-key-block-value",
|
|
232
|
-
// a PEM-armoured private key body
|
|
233
|
-
value: /-----BEGIN(?:[A-Z ]+)?PRIVATE KEY-----/
|
|
234
|
-
}
|
|
235
|
-
]);
|
|
236
|
-
function isContainer(value) {
|
|
237
|
-
return typeof value === "object" && value !== null;
|
|
238
|
-
}
|
|
239
|
-
var SecretScrubber = class {
|
|
240
|
-
patterns;
|
|
241
|
-
token;
|
|
242
|
-
/** Pre-split views so the hot loop never re-checks which rules have a key/value side. */
|
|
243
|
-
keyRules;
|
|
244
|
-
valueRules;
|
|
245
|
-
constructor(options = {}) {
|
|
246
|
-
this.patterns = options.patterns ?? DEFAULT_SECRET_PATTERNS;
|
|
247
|
-
this.token = options.token ?? REDACTION_TOKEN;
|
|
248
|
-
this.keyRules = this.patterns.filter((p) => p.key !== void 0);
|
|
249
|
-
this.valueRules = this.patterns.filter((p) => p.value !== void 0);
|
|
250
|
-
}
|
|
251
|
-
/** True when a field name matches any key-shaped rule. */
|
|
252
|
-
keyIsSecret(key) {
|
|
253
|
-
for (const rule of this.keyRules) {
|
|
254
|
-
if (rule.key.test(key)) return true;
|
|
255
|
-
}
|
|
256
|
-
return false;
|
|
257
|
-
}
|
|
258
|
-
/** True when a string leaf matches any value-shaped rule. */
|
|
259
|
-
valueIsSecret(value) {
|
|
260
|
-
for (const rule of this.valueRules) {
|
|
261
|
-
if (rule.value.test(value)) return true;
|
|
262
|
-
}
|
|
263
|
-
return false;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Decide a leaf's sanitized form given the key that points at it.
|
|
267
|
-
*
|
|
268
|
-
* Redacts when the key looks secret, or when a string value looks secret.
|
|
269
|
-
* Non-string leaves under an innocuous key pass through untouched.
|
|
270
|
-
*/
|
|
271
|
-
sanitizeLeaf(key, value) {
|
|
272
|
-
if (this.keyIsSecret(key)) return this.token;
|
|
273
|
-
if (typeof value === "string" && this.valueIsSecret(value)) return this.token;
|
|
274
|
-
return value;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Return a deep copy of `attributes` with secret-looking keys and values
|
|
278
|
-
* replaced by the redaction token.
|
|
279
|
-
*
|
|
280
|
-
* Walks the structure with a single explicit stack (no recursion). Containers
|
|
281
|
-
* are cloned shallowly up front and their children enqueued; leaves are
|
|
282
|
-
* resolved through {@link sanitizeLeaf}. The input — including nested objects
|
|
283
|
-
* and arrays — is never mutated. A key whose name is itself secret short-
|
|
284
|
-
* circuits the descent: the whole subtree under it collapses to the token,
|
|
285
|
-
* so credentials nested inside (e.g. `auth: { token: … }`) cannot leak.
|
|
286
|
-
*/
|
|
287
|
-
scrub(attributes) {
|
|
288
|
-
const root = {};
|
|
289
|
-
const stack = [{ node: attributes, clone: root }];
|
|
290
|
-
while (stack.length > 0) {
|
|
291
|
-
const { node, clone } = stack.pop();
|
|
292
|
-
if (Array.isArray(node)) {
|
|
293
|
-
const out2 = clone;
|
|
294
|
-
for (let i = 0; i < node.length; i++) {
|
|
295
|
-
const key = String(i);
|
|
296
|
-
const value = node[i];
|
|
297
|
-
if (isContainer(value) && !this.keyIsSecret(key)) {
|
|
298
|
-
const childClone = Array.isArray(value) ? [] : {};
|
|
299
|
-
out2[i] = childClone;
|
|
300
|
-
stack.push({ node: value, clone: childClone });
|
|
301
|
-
} else {
|
|
302
|
-
out2[i] = this.sanitizeLeaf(key, value);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
const out = clone;
|
|
308
|
-
for (const key of Object.keys(node)) {
|
|
309
|
-
const value = node[key];
|
|
310
|
-
if (isContainer(value) && !this.keyIsSecret(key)) {
|
|
311
|
-
const childClone = Array.isArray(value) ? [] : {};
|
|
312
|
-
out[key] = childClone;
|
|
313
|
-
stack.push({ node: value, clone: childClone });
|
|
314
|
-
} else {
|
|
315
|
-
out[key] = this.sanitizeLeaf(key, value);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
return root;
|
|
320
|
-
}
|
|
321
|
-
};
|
|
322
|
-
|
|
323
|
-
// src/tracing/sinks/console.ts
|
|
324
|
-
var STATUS_GLYPH = {
|
|
325
|
-
ok: "\u2713",
|
|
326
|
-
error: "\u2717"
|
|
327
|
-
};
|
|
328
|
-
function padEnd(value, width) {
|
|
329
|
-
return value.length >= width ? value : value + " ".repeat(width - value.length);
|
|
330
|
-
}
|
|
331
|
-
function padStart(value, width) {
|
|
332
|
-
return value.length >= width ? value : " ".repeat(width - value.length) + value;
|
|
333
|
-
}
|
|
334
|
-
var ConsoleSink = class {
|
|
335
|
-
log;
|
|
336
|
-
constructor(options) {
|
|
337
|
-
this.log = options?.log ?? ((line) => console.log(line));
|
|
338
|
-
}
|
|
339
|
-
/** Render the one-line summary for a closed segment. */
|
|
340
|
-
format(record) {
|
|
341
|
-
const glyph = STATUS_GLYPH[record.status] ?? "?";
|
|
342
|
-
const duration = `${record.endedAt - record.startedAt}ms`;
|
|
343
|
-
const tag = `[${record.traceId.slice(0, 8)}/${record.id}]`;
|
|
344
|
-
const head = `${glyph} ${padEnd(record.kind, 10)} ${padEnd(record.name, 24)} ${padStart(duration, 8)} ${tag}`;
|
|
345
|
-
return record.status === "error" && record.error ? `${head} \u2014 ${record.error.message}` : head;
|
|
346
|
-
}
|
|
347
|
-
/** Drain `channel`, printing a line for every `close` signal. */
|
|
348
|
-
async drain(channel) {
|
|
349
|
-
for await (const signal of channel) {
|
|
350
|
-
if (signal.type === "close") {
|
|
351
|
-
this.log(this.format(signal.record));
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
};
|
|
356
|
-
|
|
357
|
-
// src/tracing/sinks/file.ts
|
|
358
|
-
import { appendFile } from "node:fs/promises";
|
|
359
|
-
var FileSink = class {
|
|
360
|
-
path;
|
|
361
|
-
flushEvery;
|
|
362
|
-
/** Serialized records awaiting their append, oldest first. */
|
|
363
|
-
pending = [];
|
|
364
|
-
constructor(path, options) {
|
|
365
|
-
this.path = path;
|
|
366
|
-
this.flushEvery = options?.flushEvery !== void 0 && options.flushEvery > 0 ? options.flushEvery : 1;
|
|
367
|
-
}
|
|
368
|
-
/** Drain `channel`, buffering each closed record and flushing on threshold/end. */
|
|
369
|
-
async drain(channel) {
|
|
370
|
-
for await (const signal of channel) {
|
|
371
|
-
if (signal.type !== "close") continue;
|
|
372
|
-
this.pending.push(JSON.stringify(signal.record));
|
|
373
|
-
if (this.pending.length >= this.flushEvery) {
|
|
374
|
-
await this.flush();
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
await this.flush();
|
|
378
|
-
}
|
|
379
|
-
/** Append all pending records to the file as NDJSON lines, then clear them. */
|
|
380
|
-
async flush() {
|
|
381
|
-
if (this.pending.length === 0) return;
|
|
382
|
-
const batch = this.pending;
|
|
383
|
-
this.pending = [];
|
|
384
|
-
await appendFile(this.path, batch.join("\n") + "\n", "utf8");
|
|
385
|
-
}
|
|
386
|
-
/** Flush any remaining records. Idempotent; the sink holds no OS handle. */
|
|
387
|
-
async close() {
|
|
388
|
-
await this.flush();
|
|
389
|
-
}
|
|
390
|
-
};
|
|
391
|
-
|
|
392
|
-
// src/tracing/sinks/stream.ts
|
|
393
|
-
var StreamSink = class {
|
|
394
|
-
stream;
|
|
395
|
-
endOnClose;
|
|
396
|
-
constructor(stream, options) {
|
|
397
|
-
this.stream = stream;
|
|
398
|
-
this.endOnClose = options?.endOnClose ?? false;
|
|
399
|
-
}
|
|
400
|
-
/** Write `line`, resolving once it is accepted or once backpressure clears. */
|
|
401
|
-
writeLine(line) {
|
|
402
|
-
return new Promise((resolve, reject) => {
|
|
403
|
-
const onError = (error) => reject(error);
|
|
404
|
-
this.stream.once("error", onError);
|
|
405
|
-
const flushed = this.stream.write(line, "utf8", () => {
|
|
406
|
-
this.stream.removeListener("error", onError);
|
|
407
|
-
});
|
|
408
|
-
if (flushed) {
|
|
409
|
-
resolve();
|
|
410
|
-
} else {
|
|
411
|
-
this.stream.once("drain", () => resolve());
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
/** Drain `channel`, writing a JSON line per closed record (with backpressure). */
|
|
416
|
-
async drain(channel) {
|
|
417
|
-
for await (const signal of channel) {
|
|
418
|
-
if (signal.type !== "close") continue;
|
|
419
|
-
const line = JSON.stringify(signal.record) + "\n";
|
|
420
|
-
await this.writeLine(line);
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
/** No-op: bytes are not buffered by this sink. Present for interface symmetry. */
|
|
424
|
-
async flush() {
|
|
425
|
-
}
|
|
426
|
-
/** End the underlying stream when this sink owns it (`endOnClose`); else no-op. */
|
|
427
|
-
async close() {
|
|
428
|
-
if (!this.endOnClose) return;
|
|
429
|
-
await new Promise((resolve, reject) => {
|
|
430
|
-
this.stream.end(
|
|
431
|
-
(error) => error ? reject(error) : resolve()
|
|
432
|
-
);
|
|
433
|
-
});
|
|
434
|
-
}
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
// src/tracing/recorder/sampling.ts
|
|
438
|
-
function isRatioStrategy(strategy) {
|
|
439
|
-
return typeof strategy === "object" && strategy !== null && "ratio" in strategy;
|
|
440
|
-
}
|
|
441
|
-
var FNV_OFFSET_BASIS = 2166136261;
|
|
442
|
-
var FNV_PRIME = 16777619;
|
|
443
|
-
var TWO_POW_32 = 4294967296;
|
|
444
|
-
function unitHash(traceId) {
|
|
445
|
-
let hash = FNV_OFFSET_BASIS;
|
|
446
|
-
for (let i = 0; i < traceId.length; i++) {
|
|
447
|
-
hash ^= traceId.charCodeAt(i);
|
|
448
|
-
hash = Math.imul(hash, FNV_PRIME);
|
|
449
|
-
}
|
|
450
|
-
return (hash >>> 0) / TWO_POW_32;
|
|
451
|
-
}
|
|
452
|
-
function clampRatio(ratio) {
|
|
453
|
-
if (Number.isNaN(ratio)) return 0;
|
|
454
|
-
if (ratio <= 0) return 0;
|
|
455
|
-
if (ratio >= 1) return 1;
|
|
456
|
-
return ratio;
|
|
457
|
-
}
|
|
458
|
-
var SampleGate = class {
|
|
459
|
-
strategy;
|
|
460
|
-
/** Pre-clamped admission threshold for the ratio strategy; unused otherwise. */
|
|
461
|
-
threshold;
|
|
462
|
-
constructor(strategy = "always") {
|
|
463
|
-
this.strategy = strategy;
|
|
464
|
-
this.threshold = isRatioStrategy(strategy) ? clampRatio(strategy.ratio) : 0;
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Decide whether the trace identified by `traceId` is admitted.
|
|
468
|
-
*
|
|
469
|
-
* - `"always"` → always `true`.
|
|
470
|
-
* - `"never"` → always `false`.
|
|
471
|
-
* - `{ ratio }` → `unitHash(traceId) < ratio` (clamped): deterministic, so the
|
|
472
|
-
* same id always yields the same answer. Ratio `0` admits nothing and ratio
|
|
473
|
-
* `1` admits everything regardless of the hash.
|
|
474
|
-
*/
|
|
475
|
-
decide(traceId) {
|
|
476
|
-
if (this.strategy === "always") return true;
|
|
477
|
-
if (this.strategy === "never") return false;
|
|
478
|
-
if (this.threshold <= 0) return false;
|
|
479
|
-
if (this.threshold >= 1) return true;
|
|
480
|
-
return unitHash(traceId) < this.threshold;
|
|
481
|
-
}
|
|
482
|
-
};
|
|
483
|
-
|
|
484
|
-
// src/tracing/recorder/recorder.ts
|
|
485
|
-
var SERVICE_NAME_KEY = "service.name";
|
|
486
|
-
function toGate(sampling) {
|
|
487
|
-
if (sampling instanceof SampleGate) return sampling;
|
|
488
|
-
return new SampleGate(sampling ?? "always");
|
|
489
|
-
}
|
|
490
|
-
var Recorder = class {
|
|
491
|
-
/** Logical service/agent name stamped onto admitted root traces. */
|
|
492
|
-
serviceName;
|
|
493
|
-
gate;
|
|
494
|
-
signalChannel;
|
|
495
|
-
constructor(options) {
|
|
496
|
-
this.serviceName = options.serviceName;
|
|
497
|
-
this.gate = toGate(options.sampling);
|
|
498
|
-
this.signalChannel = options.channel ?? new SignalChannel();
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Open a segment, subject to sampling.
|
|
502
|
-
*
|
|
503
|
-
* Resolves the trace id (a supplied `opts.traceId` joins an existing trace; a
|
|
504
|
-
* root mints a fresh one), then consults the {@link SampleGate}. Sampled out →
|
|
505
|
-
* the frozen {@link NOOP_HANDLE} (nothing is emitted). Sampled in → a live
|
|
506
|
-
* {@link SegmentHandle} from {@link openHandle}, whose `open` signal — and all
|
|
507
|
-
* subsequent `update`/`close` signals — land on this recorder's channel. A
|
|
508
|
-
* root open also folds `serviceName` into the segment's attributes.
|
|
509
|
-
*/
|
|
510
|
-
open(kind, name, opts) {
|
|
511
|
-
const isRoot = opts?.traceId === void 0;
|
|
512
|
-
const traceId = opts?.traceId ?? freshTraceId();
|
|
513
|
-
if (!this.gate.decide(traceId)) return NOOP_HANDLE;
|
|
514
|
-
const attributes = isRoot ? { [SERVICE_NAME_KEY]: this.serviceName, ...opts?.attributes ?? {} } : opts?.attributes;
|
|
515
|
-
return openHandle(
|
|
516
|
-
{
|
|
517
|
-
kind,
|
|
518
|
-
name,
|
|
519
|
-
traceId,
|
|
520
|
-
parentId: opts?.parentId ?? null,
|
|
521
|
-
attributes
|
|
522
|
-
},
|
|
523
|
-
(signal) => this.signalChannel.emit(signal)
|
|
524
|
-
);
|
|
525
|
-
}
|
|
526
|
-
/**
|
|
527
|
-
* The recorder's signal stream.
|
|
528
|
-
*
|
|
529
|
-
* Sinks drain this with `for await … of recorder.channel()`. It is the same
|
|
530
|
-
* underlying {@link SignalChannel} every {@link open}ed handle emits onto.
|
|
531
|
-
*/
|
|
532
|
-
channel() {
|
|
533
|
-
return this.signalChannel;
|
|
534
|
-
}
|
|
535
|
-
};
|
|
536
|
-
|
|
537
|
-
// src/tracing/registry/hub.ts
|
|
538
|
-
var DEFAULT_RECORDER_NAME = "default";
|
|
539
|
-
var TelemetryHub = class {
|
|
540
|
-
recorders = /* @__PURE__ */ new Map();
|
|
541
|
-
/** Name of the recorder returned by {@link recorder} with no argument. */
|
|
542
|
-
defaultName = null;
|
|
543
|
-
/**
|
|
544
|
-
* Register a recorder under `name`, returning the constructed instance.
|
|
545
|
-
*
|
|
546
|
-
* Re-registering a name replaces the prior recorder. If no default has been
|
|
547
|
-
* chosen yet, the first registration becomes the default; registering under
|
|
548
|
-
* the reserved `"default"` name always (re)designates the default.
|
|
549
|
-
*/
|
|
550
|
-
register(name, options) {
|
|
551
|
-
const recorder = new Recorder(options);
|
|
552
|
-
this.recorders.set(name, recorder);
|
|
553
|
-
if (this.defaultName === null || name === DEFAULT_RECORDER_NAME) {
|
|
554
|
-
this.defaultName = name;
|
|
555
|
-
}
|
|
556
|
-
return recorder;
|
|
557
|
-
}
|
|
558
|
-
/**
|
|
559
|
-
* Look up a recorder by `name`, or the default when `name` is omitted.
|
|
560
|
-
*
|
|
561
|
-
* Throws if the requested (or default) recorder is not registered, so a
|
|
562
|
-
* missing recorder fails loudly rather than silently dropping traces.
|
|
563
|
-
*/
|
|
564
|
-
recorder(name) {
|
|
565
|
-
const key = name ?? this.defaultName;
|
|
566
|
-
const found = key !== null && key !== void 0 ? this.recorders.get(key) : void 0;
|
|
567
|
-
if (!found) {
|
|
568
|
-
const which = name ?? "(default)";
|
|
569
|
-
throw new Error(`TelemetryHub: no recorder registered as "${which}"`);
|
|
570
|
-
}
|
|
571
|
-
return found;
|
|
572
|
-
}
|
|
573
|
-
/** The default recorder, or `undefined` if none has been registered. */
|
|
574
|
-
getDefault() {
|
|
575
|
-
if (this.defaultName === null) return void 0;
|
|
576
|
-
return this.recorders.get(this.defaultName);
|
|
577
|
-
}
|
|
578
|
-
/** Whether a recorder is registered under `name`. */
|
|
579
|
-
has(name) {
|
|
580
|
-
return this.recorders.has(name);
|
|
581
|
-
}
|
|
582
|
-
};
|
|
583
|
-
var processHub = null;
|
|
584
|
-
function getDefaultHub() {
|
|
585
|
-
if (processHub === null) processHub = new TelemetryHub();
|
|
586
|
-
return processHub;
|
|
587
|
-
}
|
|
588
|
-
function setDefaultHub(hub) {
|
|
589
|
-
processHub = hub;
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
// src/tracing/adapter/runtime-trace.ts
|
|
593
|
-
function traceAgentRun(recorder, subscribe) {
|
|
594
|
-
let runHandle = null;
|
|
595
|
-
let inferenceHandle = null;
|
|
596
|
-
const actions = /* @__PURE__ */ new Map();
|
|
597
|
-
let textDeltas = 0;
|
|
598
|
-
let thinkingDeltas = 0;
|
|
599
|
-
let lastPhase;
|
|
600
|
-
function closeInference(status = "ok") {
|
|
601
|
-
if (inferenceHandle) {
|
|
602
|
-
if (textDeltas > 0 || thinkingDeltas > 0) {
|
|
603
|
-
inferenceHandle.note({
|
|
604
|
-
"stream.text_deltas": textDeltas,
|
|
605
|
-
"stream.thinking_deltas": thinkingDeltas
|
|
606
|
-
});
|
|
607
|
-
}
|
|
608
|
-
inferenceHandle.close(status);
|
|
609
|
-
inferenceHandle = null;
|
|
610
|
-
}
|
|
611
|
-
textDeltas = 0;
|
|
612
|
-
thinkingDeltas = 0;
|
|
613
|
-
}
|
|
614
|
-
function closeAllActions(status = "ok") {
|
|
615
|
-
for (const handle of actions.values()) handle.close(status);
|
|
616
|
-
actions.clear();
|
|
617
|
-
}
|
|
618
|
-
function ensureRun(runId) {
|
|
619
|
-
if (!runHandle) {
|
|
620
|
-
runHandle = recorder.open("run", runId ? `run ${runId}` : "run", {
|
|
621
|
-
attributes: runId ? { "run.id": runId } : void 0
|
|
622
|
-
});
|
|
623
|
-
}
|
|
624
|
-
return runHandle;
|
|
625
|
-
}
|
|
626
|
-
function closeRun(status) {
|
|
627
|
-
closeAllActions(status);
|
|
628
|
-
closeInference(status);
|
|
629
|
-
if (runHandle) {
|
|
630
|
-
runHandle.close(status);
|
|
631
|
-
runHandle = null;
|
|
632
|
-
}
|
|
633
|
-
lastPhase = void 0;
|
|
634
|
-
}
|
|
635
|
-
function onPhase(phase, run) {
|
|
636
|
-
if (phase === lastPhase) return;
|
|
637
|
-
if (phase === "invoking") {
|
|
638
|
-
closeInference("ok");
|
|
639
|
-
inferenceHandle = run.child("inference", "model turn");
|
|
640
|
-
} else if (phase === "dispatching" || phase === "compacting" || phase === "idle") {
|
|
641
|
-
closeInference("ok");
|
|
642
|
-
}
|
|
643
|
-
lastPhase = phase;
|
|
644
|
-
}
|
|
645
|
-
const unsubscribe = subscribe((event) => {
|
|
646
|
-
switch (event.kind) {
|
|
647
|
-
case "snapshot": {
|
|
648
|
-
const run = ensureRun(event.snapshot.runId);
|
|
649
|
-
onPhase(event.snapshot.phase, run);
|
|
650
|
-
break;
|
|
651
|
-
}
|
|
652
|
-
case "text_delta": {
|
|
653
|
-
if (inferenceHandle) textDeltas += 1;
|
|
654
|
-
break;
|
|
655
|
-
}
|
|
656
|
-
case "thinking_delta": {
|
|
657
|
-
if (inferenceHandle) thinkingDeltas += 1;
|
|
658
|
-
break;
|
|
659
|
-
}
|
|
660
|
-
case "tool_started": {
|
|
661
|
-
const run = ensureRun();
|
|
662
|
-
const handle = run.child("action", event.name);
|
|
663
|
-
handle.note({ "tool.id": event.id, "tool.name": event.name });
|
|
664
|
-
actions.set(event.id, handle);
|
|
665
|
-
break;
|
|
666
|
-
}
|
|
667
|
-
case "tool_finished": {
|
|
668
|
-
const handle = actions.get(event.id);
|
|
669
|
-
if (handle) {
|
|
670
|
-
handle.note({ "tool.is_error": event.outcome.isError });
|
|
671
|
-
handle.close(event.outcome.isError ? "error" : "ok");
|
|
672
|
-
actions.delete(event.id);
|
|
673
|
-
}
|
|
674
|
-
break;
|
|
675
|
-
}
|
|
676
|
-
case "settled": {
|
|
677
|
-
ensureRun(event.snapshot.runId);
|
|
678
|
-
closeRun("ok");
|
|
679
|
-
break;
|
|
680
|
-
}
|
|
681
|
-
case "faulted": {
|
|
682
|
-
const run = ensureRun(event.snapshot.runId);
|
|
683
|
-
if (event.error) run.fail(event.error);
|
|
684
|
-
closeRun("error");
|
|
685
|
-
break;
|
|
686
|
-
}
|
|
687
|
-
default: {
|
|
688
|
-
break;
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
});
|
|
692
|
-
return () => {
|
|
693
|
-
unsubscribe();
|
|
694
|
-
closeAllActions("ok");
|
|
695
|
-
closeInference("ok");
|
|
696
|
-
if (runHandle) {
|
|
697
|
-
runHandle.close("ok");
|
|
698
|
-
runHandle = null;
|
|
699
|
-
}
|
|
700
|
-
};
|
|
701
|
-
}
|
|
702
|
-
export {
|
|
703
|
-
ConsoleSink,
|
|
704
|
-
DEFAULT_SECRET_PATTERNS,
|
|
705
|
-
FileSink,
|
|
706
|
-
NOOP_HANDLE,
|
|
707
|
-
REDACTION_TOKEN,
|
|
708
|
-
Recorder,
|
|
709
|
-
SampleGate,
|
|
710
|
-
SecretScrubber,
|
|
711
|
-
SignalChannel,
|
|
712
|
-
StreamSink,
|
|
713
|
-
TelemetryHub,
|
|
714
|
-
closeSegment,
|
|
715
|
-
freshId,
|
|
716
|
-
freshSegmentId,
|
|
717
|
-
freshTraceId,
|
|
718
|
-
getDefaultHub,
|
|
719
|
-
openHandle,
|
|
720
|
-
openSegment,
|
|
721
|
-
setDefaultHub,
|
|
722
|
-
traceAgentRun,
|
|
723
|
-
withAttributes
|
|
724
|
-
};
|