@geminixiang/mikan 1.0.0-beta.7 → 1.0.0-beta.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1052 -0
- package/README.md +98 -38
- package/dist/adapters/commands/admin.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/admin.js +11 -8
- package/dist/adapters/commands/admin.js.map +1 -0
- package/dist/{commands → adapters/commands}/auto-reply.d.ts +0 -3
- package/dist/adapters/commands/auto-reply.d.ts.map +1 -0
- package/dist/adapters/commands/auto-reply.js +47 -0
- package/dist/adapters/commands/auto-reply.js.map +1 -0
- package/dist/adapters/commands/login.d.ts +6 -0
- package/dist/adapters/commands/login.d.ts.map +1 -0
- package/dist/adapters/commands/login.js +166 -0
- package/dist/adapters/commands/login.js.map +1 -0
- package/dist/adapters/commands/manifest.d.ts +37 -0
- package/dist/adapters/commands/manifest.d.ts.map +1 -0
- package/dist/adapters/commands/manifest.js +155 -0
- package/dist/adapters/commands/manifest.js.map +1 -0
- package/dist/adapters/commands/model.d.ts +15 -0
- package/dist/adapters/commands/model.d.ts.map +1 -0
- package/dist/adapters/commands/model.js +153 -0
- package/dist/adapters/commands/model.js.map +1 -0
- package/dist/adapters/commands/new.d.ts.map +1 -0
- package/dist/adapters/commands/new.js +41 -0
- package/dist/adapters/commands/new.js.map +1 -0
- package/dist/adapters/commands/registry.d.ts +5 -0
- package/dist/adapters/commands/registry.d.ts.map +1 -0
- package/dist/adapters/commands/registry.js +43 -0
- package/dist/adapters/commands/registry.js.map +1 -0
- package/dist/adapters/commands/sandbox.d.ts.map +1 -0
- package/dist/adapters/commands/sandbox.js +125 -0
- package/dist/adapters/commands/sandbox.js.map +1 -0
- package/dist/adapters/commands/session-view.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/session-view.js +23 -16
- package/dist/adapters/commands/session-view.js.map +1 -0
- package/dist/adapters/commands/types.d.ts +145 -0
- package/dist/adapters/commands/types.d.ts.map +1 -0
- package/dist/adapters/commands/types.js.map +1 -0
- package/dist/adapters/commands/utils.d.ts +14 -0
- package/dist/adapters/commands/utils.d.ts.map +1 -0
- package/dist/{commands → adapters/commands}/utils.js +18 -1
- package/dist/adapters/commands/utils.js.map +1 -0
- package/dist/adapters/discord/bot.d.ts +11 -8
- package/dist/adapters/discord/bot.d.ts.map +1 -1
- package/dist/adapters/discord/bot.js +223 -256
- package/dist/adapters/discord/bot.js.map +1 -1
- package/dist/adapters/discord/components.d.ts +28 -0
- package/dist/adapters/discord/components.d.ts.map +1 -0
- package/dist/adapters/discord/components.js +32 -0
- package/dist/adapters/discord/components.js.map +1 -0
- package/dist/adapters/discord/context.d.ts +2 -6
- package/dist/adapters/discord/context.d.ts.map +1 -1
- package/dist/adapters/discord/context.js +64 -218
- package/dist/adapters/discord/context.js.map +1 -1
- package/dist/adapters/discord/format.d.ts +3 -0
- package/dist/adapters/discord/format.d.ts.map +1 -0
- package/dist/adapters/discord/format.js +84 -0
- package/dist/adapters/discord/format.js.map +1 -0
- package/dist/adapters/discord/types.d.ts +8 -1
- package/dist/adapters/discord/types.d.ts.map +1 -1
- package/dist/adapters/discord/types.js.map +1 -1
- package/dist/adapters/github/bot.d.ts +102 -0
- package/dist/adapters/github/bot.d.ts.map +1 -0
- package/dist/adapters/github/bot.js +720 -0
- package/dist/adapters/github/bot.js.map +1 -0
- package/dist/adapters/github/client.d.ts +122 -0
- package/dist/adapters/github/client.d.ts.map +1 -0
- package/dist/adapters/github/client.js +301 -0
- package/dist/adapters/github/client.js.map +1 -0
- package/dist/adapters/github/context.d.ts +5 -0
- package/dist/adapters/github/context.d.ts.map +1 -0
- package/dist/adapters/github/context.js +101 -0
- package/dist/adapters/github/context.js.map +1 -0
- package/dist/adapters/github/github-ops.d.ts +78 -0
- package/dist/adapters/github/github-ops.d.ts.map +1 -0
- package/dist/adapters/github/github-ops.js +337 -0
- package/dist/adapters/github/github-ops.js.map +1 -0
- package/dist/adapters/github/ids.d.ts +34 -0
- package/dist/adapters/github/ids.d.ts.map +1 -0
- package/dist/adapters/github/ids.js +57 -0
- package/dist/adapters/github/ids.js.map +1 -0
- package/dist/adapters/github/repo.d.ts +33 -0
- package/dist/adapters/github/repo.d.ts.map +1 -0
- package/dist/adapters/github/repo.js +141 -0
- package/dist/adapters/github/repo.js.map +1 -0
- package/dist/adapters/github/tool-pack.d.ts +14 -0
- package/dist/adapters/github/tool-pack.d.ts.map +1 -0
- package/dist/adapters/github/tool-pack.js +55 -0
- package/dist/adapters/github/tool-pack.js.map +1 -0
- package/dist/adapters/github/tools/checks.d.ts +18 -0
- package/dist/adapters/github/tools/checks.d.ts.map +1 -0
- package/dist/adapters/github/tools/checks.js +86 -0
- package/dist/adapters/github/tools/checks.js.map +1 -0
- package/dist/adapters/github/tools/issue.d.ts +21 -0
- package/dist/adapters/github/tools/issue.d.ts.map +1 -0
- package/dist/adapters/github/tools/issue.js +48 -0
- package/dist/adapters/github/tools/issue.js.map +1 -0
- package/dist/adapters/github/tools/pr.d.ts +22 -0
- package/dist/adapters/github/tools/pr.d.ts.map +1 -0
- package/dist/adapters/github/tools/pr.js +48 -0
- package/dist/adapters/github/tools/pr.js.map +1 -0
- package/dist/adapters/github/tools/read.d.ts +21 -0
- package/dist/adapters/github/tools/read.d.ts.map +1 -0
- package/dist/adapters/github/tools/read.js +141 -0
- package/dist/adapters/github/tools/read.js.map +1 -0
- package/dist/adapters/github/tools/review-reply.d.ts +17 -0
- package/dist/adapters/github/tools/review-reply.d.ts.map +1 -0
- package/dist/adapters/github/tools/review-reply.js +38 -0
- package/dist/adapters/github/tools/review-reply.js.map +1 -0
- package/dist/adapters/github/tools/sync.d.ts +17 -0
- package/dist/adapters/github/tools/sync.d.ts.map +1 -0
- package/dist/adapters/github/tools/sync.js +34 -0
- package/dist/adapters/github/tools/sync.js.map +1 -0
- package/dist/adapters/github/types.d.ts +345 -0
- package/dist/adapters/github/types.d.ts.map +1 -0
- package/dist/adapters/github/types.js.map +1 -0
- package/dist/adapters/github/webhook.d.ts +20 -0
- package/dist/adapters/github/webhook.d.ts.map +1 -0
- package/dist/adapters/github/webhook.js +78 -0
- package/dist/adapters/github/webhook.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +19 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/intake.d.ts +17 -6
- package/dist/adapters/intake.d.ts.map +1 -1
- package/dist/adapters/intake.js +96 -27
- package/dist/adapters/intake.js.map +1 -1
- package/dist/adapters/markdown-tables.d.ts +19 -0
- package/dist/adapters/markdown-tables.d.ts.map +1 -0
- package/dist/adapters/markdown-tables.js +152 -0
- package/dist/adapters/markdown-tables.js.map +1 -0
- package/dist/{platform-messages.d.ts → adapters/messages.d.ts} +3 -2
- package/dist/adapters/messages.d.ts.map +1 -0
- package/dist/{platform-messages.js → adapters/messages.js} +4 -1
- package/dist/adapters/messages.js.map +1 -0
- package/dist/adapters/progressive-renderer.d.ts +7 -0
- package/dist/adapters/progressive-renderer.d.ts.map +1 -0
- package/dist/adapters/progressive-renderer.js +443 -0
- package/dist/adapters/progressive-renderer.js.map +1 -0
- package/dist/adapters/shared.d.ts +37 -11
- package/dist/adapters/shared.d.ts.map +1 -1
- package/dist/adapters/shared.js +130 -24
- package/dist/adapters/shared.js.map +1 -1
- package/dist/adapters/slack/assistant.d.ts +73 -0
- package/dist/adapters/slack/assistant.d.ts.map +1 -0
- package/dist/adapters/slack/assistant.js +205 -0
- package/dist/adapters/slack/assistant.js.map +1 -0
- package/dist/adapters/slack/auto-reply-context.d.ts +21 -0
- package/dist/adapters/slack/auto-reply-context.d.ts.map +1 -0
- package/dist/adapters/slack/auto-reply-context.js +28 -0
- package/dist/adapters/slack/auto-reply-context.js.map +1 -0
- package/dist/adapters/slack/blocks.d.ts +14 -0
- package/dist/adapters/slack/blocks.d.ts.map +1 -1
- package/dist/adapters/slack/blocks.js +104 -148
- package/dist/adapters/slack/blocks.js.map +1 -1
- package/dist/adapters/slack/bot.d.ts +154 -21
- package/dist/adapters/slack/bot.d.ts.map +1 -1
- package/dist/adapters/slack/bot.js +1037 -484
- package/dist/adapters/slack/bot.js.map +1 -1
- package/dist/adapters/slack/context.d.ts +2 -6
- package/dist/adapters/slack/context.d.ts.map +1 -1
- package/dist/adapters/slack/context.js +11 -17
- package/dist/adapters/slack/context.js.map +1 -1
- package/dist/adapters/slack/jev-context.d.ts +30 -0
- package/dist/adapters/slack/jev-context.d.ts.map +1 -0
- package/dist/adapters/slack/jev-context.js +67 -0
- package/dist/adapters/slack/jev-context.js.map +1 -0
- package/dist/adapters/slack/markdown.d.ts +3 -0
- package/dist/adapters/slack/markdown.d.ts.map +1 -0
- package/dist/adapters/slack/markdown.js +48 -0
- package/dist/adapters/slack/markdown.js.map +1 -0
- package/dist/adapters/slack/persona.d.ts +15 -0
- package/dist/adapters/slack/persona.d.ts.map +1 -0
- package/dist/adapters/slack/persona.js +22 -0
- package/dist/adapters/slack/persona.js.map +1 -0
- package/dist/adapters/slack/response-lifecycle.d.ts +1 -1
- package/dist/adapters/slack/response-lifecycle.d.ts.map +1 -1
- package/dist/adapters/slack/response-lifecycle.js +261 -345
- package/dist/adapters/slack/response-lifecycle.js.map +1 -1
- package/dist/adapters/slack/session.d.ts.map +1 -1
- package/dist/adapters/slack/session.js +7 -11
- package/dist/adapters/slack/session.js.map +1 -1
- package/dist/adapters/slack/stream-limits.d.ts +35 -0
- package/dist/adapters/slack/stream-limits.d.ts.map +1 -0
- package/dist/adapters/slack/stream-limits.js +56 -0
- package/dist/adapters/slack/stream-limits.js.map +1 -0
- package/dist/adapters/slack/task-intent.d.ts +32 -0
- package/dist/adapters/slack/task-intent.d.ts.map +1 -0
- package/dist/adapters/slack/task-intent.js +72 -0
- package/dist/adapters/slack/task-intent.js.map +1 -0
- package/dist/adapters/slack/task-status.d.ts +7 -0
- package/dist/adapters/slack/task-status.d.ts.map +1 -0
- package/dist/adapters/slack/task-status.js +107 -0
- package/dist/adapters/slack/task-status.js.map +1 -0
- package/dist/adapters/slack/tool-pack.d.ts +11 -0
- package/dist/adapters/slack/tool-pack.d.ts.map +1 -0
- package/dist/adapters/slack/tool-pack.js +45 -0
- package/dist/adapters/slack/tool-pack.js.map +1 -0
- package/dist/adapters/slack/tools/blockkit.d.ts +14 -0
- package/dist/adapters/slack/tools/blockkit.d.ts.map +1 -0
- package/dist/adapters/slack/tools/blockkit.js +106 -0
- package/dist/adapters/slack/tools/blockkit.js.map +1 -0
- package/dist/adapters/slack/types.d.ts +73 -2
- package/dist/adapters/slack/types.d.ts.map +1 -1
- package/dist/adapters/slack/types.js.map +1 -1
- package/dist/adapters/slack/update-diagnostics.d.ts +14 -0
- package/dist/adapters/slack/update-diagnostics.d.ts.map +1 -0
- package/dist/adapters/slack/update-diagnostics.js +134 -0
- package/dist/adapters/slack/update-diagnostics.js.map +1 -0
- package/dist/adapters/telegram/bot.d.ts +10 -9
- package/dist/adapters/telegram/bot.d.ts.map +1 -1
- package/dist/adapters/telegram/bot.js +133 -202
- package/dist/adapters/telegram/bot.js.map +1 -1
- package/dist/adapters/telegram/context.d.ts +2 -6
- package/dist/adapters/telegram/context.d.ts.map +1 -1
- package/dist/adapters/telegram/context.js +53 -190
- package/dist/adapters/telegram/context.js.map +1 -1
- package/dist/adapters/telegram/types.d.ts +1 -1
- package/dist/adapters/telegram/types.d.ts.map +1 -1
- package/dist/adapters/telegram/types.js.map +1 -1
- package/dist/adapters/types.d.ts +144 -13
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/adapters/web/admin/portal.d.ts +44 -0
- package/dist/adapters/web/admin/portal.d.ts.map +1 -0
- package/dist/adapters/web/admin/portal.js +3207 -0
- package/dist/adapters/web/admin/portal.js.map +1 -0
- package/dist/{web → adapters/web}/admin/provider-models.d.ts +1 -1
- package/dist/adapters/web/admin/provider-models.d.ts.map +1 -0
- package/dist/{web → adapters/web}/admin/provider-models.js +1 -1
- package/dist/adapters/web/admin/provider-models.js.map +1 -0
- package/dist/adapters/web/admin/types.d.ts +53 -0
- package/dist/adapters/web/admin/types.d.ts.map +1 -0
- package/dist/adapters/web/admin/types.js.map +1 -0
- package/dist/adapters/web/login/oauth.d.ts +5 -0
- package/dist/adapters/web/login/oauth.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/oauth.js +50 -85
- package/dist/adapters/web/login/oauth.js.map +1 -0
- package/dist/{web → adapters/web}/login/portal.d.ts +9 -3
- package/dist/adapters/web/login/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/login/portal.js +161 -119
- package/dist/adapters/web/login/portal.js.map +1 -0
- package/dist/{web → adapters/web}/login/types.d.ts +1 -12
- package/dist/adapters/web/login/types.d.ts.map +1 -0
- package/dist/adapters/web/login/types.js.map +1 -0
- package/dist/adapters/web/portal-shell.d.ts +22 -0
- package/dist/adapters/web/portal-shell.d.ts.map +1 -0
- package/dist/{portal-shell.js → adapters/web/portal-shell.js} +78 -2
- package/dist/adapters/web/portal-shell.js.map +1 -0
- package/dist/{web → adapters/web}/server.d.ts +14 -8
- package/dist/adapters/web/server.d.ts.map +1 -0
- package/dist/{web → adapters/web}/server.js +14 -7
- package/dist/adapters/web/server.js.map +1 -0
- package/dist/adapters/web/session-view/portal.d.ts +20 -0
- package/dist/adapters/web/session-view/portal.d.ts.map +1 -0
- package/dist/{web → adapters/web}/session-view/portal.js +633 -162
- package/dist/adapters/web/session-view/portal.js.map +1 -0
- package/dist/{web → adapters/web}/session-view/types.d.ts +11 -6
- package/dist/adapters/web/session-view/types.d.ts.map +1 -0
- package/dist/adapters/web/session-view/types.js.map +1 -0
- package/dist/adapters/web/token-store.d.ts.map +1 -0
- package/dist/{web → adapters/web}/token-store.js +1 -1
- package/dist/adapters/web/token-store.js.map +1 -0
- package/dist/adapters/web/types.d.ts.map +1 -0
- package/dist/adapters/web/types.js.map +1 -0
- package/dist/cli/arg-grammar.d.ts +11 -0
- package/dist/cli/arg-grammar.d.ts.map +1 -0
- package/dist/cli/arg-grammar.js +50 -0
- package/dist/cli/arg-grammar.js.map +1 -0
- package/dist/cli/boot.d.ts +5 -0
- package/dist/cli/boot.d.ts.map +1 -0
- package/dist/cli/boot.js +90 -0
- package/dist/cli/boot.js.map +1 -0
- package/dist/cli/download.d.ts.map +1 -0
- package/dist/cli/download.js +88 -0
- package/dist/cli/download.js.map +1 -0
- package/dist/cli/office.d.ts +2 -0
- package/dist/cli/office.d.ts.map +1 -0
- package/dist/cli/office.js +181 -0
- package/dist/cli/office.js.map +1 -0
- package/dist/cli/onboard.d.ts +10 -0
- package/dist/cli/onboard.d.ts.map +1 -0
- package/dist/cli/onboard.js +225 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli/process-lifecycle.d.ts +19 -0
- package/dist/cli/process-lifecycle.d.ts.map +1 -0
- package/dist/cli/process-lifecycle.js +67 -0
- package/dist/cli/process-lifecycle.js.map +1 -0
- package/dist/cli/sessions.d.ts +2 -0
- package/dist/cli/sessions.d.ts.map +1 -0
- package/dist/cli/sessions.js +88 -0
- package/dist/cli/sessions.js.map +1 -0
- package/dist/cli/types.d.ts +25 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/dream/index.d.ts +20 -0
- package/dist/dream/index.d.ts.map +1 -0
- package/dist/dream/index.js +264 -0
- package/dist/dream/index.js.map +1 -0
- package/dist/dream/types.d.ts +30 -0
- package/dist/dream/types.d.ts.map +1 -0
- package/dist/dream/types.js +2 -0
- package/dist/dream/types.js.map +1 -0
- package/dist/env-manifest.d.ts +38 -0
- package/dist/env-manifest.d.ts.map +1 -0
- package/dist/env-manifest.js +260 -0
- package/dist/env-manifest.js.map +1 -0
- package/dist/events/index.d.ts +172 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +340 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/scheduler.d.ts +34 -0
- package/dist/events/scheduler.d.ts.map +1 -0
- package/dist/events/scheduler.js +231 -0
- package/dist/events/scheduler.js.map +1 -0
- package/dist/file-guards.d.ts +26 -0
- package/dist/file-guards.d.ts.map +1 -0
- package/dist/file-guards.js +133 -0
- package/dist/file-guards.js.map +1 -0
- package/dist/harness/execution-env.d.ts +19 -0
- package/dist/harness/execution-env.d.ts.map +1 -0
- package/dist/harness/execution-env.js +262 -0
- package/dist/harness/execution-env.js.map +1 -0
- package/dist/harness/execution-resolver.d.ts +25 -0
- package/dist/harness/execution-resolver.d.ts.map +1 -0
- package/dist/harness/execution-resolver.js +156 -0
- package/dist/harness/execution-resolver.js.map +1 -0
- package/dist/harness/index.d.ts +18 -13
- package/dist/harness/index.d.ts.map +1 -1
- package/dist/harness/index.js +11 -11
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/jev.d.ts +86 -0
- package/dist/harness/jev.d.ts.map +1 -0
- package/dist/harness/jev.js +167 -0
- package/dist/harness/jev.js.map +1 -0
- package/dist/harness/mcp.d.ts +38 -0
- package/dist/harness/mcp.d.ts.map +1 -0
- package/dist/harness/mcp.js +304 -0
- package/dist/harness/mcp.js.map +1 -0
- package/dist/harness/models.d.ts +7 -4
- package/dist/harness/models.d.ts.map +1 -1
- package/dist/harness/models.js +54 -55
- package/dist/harness/models.js.map +1 -1
- package/dist/harness/open-connector.d.ts +25 -0
- package/dist/harness/open-connector.d.ts.map +1 -0
- package/dist/harness/open-connector.js +178 -0
- package/dist/harness/open-connector.js.map +1 -0
- package/dist/harness/presenter.d.ts +31 -0
- package/dist/harness/presenter.d.ts.map +1 -0
- package/dist/harness/presenter.js +859 -0
- package/dist/harness/presenter.js.map +1 -0
- package/dist/harness/prompt.d.ts +30 -0
- package/dist/harness/prompt.d.ts.map +1 -0
- package/dist/harness/prompt.js +420 -0
- package/dist/harness/prompt.js.map +1 -0
- package/dist/harness/runner.d.ts +2 -123
- package/dist/harness/runner.d.ts.map +1 -1
- package/dist/harness/runner.js +551 -416
- package/dist/harness/runner.js.map +1 -1
- package/dist/harness/session.d.ts +122 -0
- package/dist/harness/session.d.ts.map +1 -0
- package/dist/harness/session.js +581 -0
- package/dist/harness/session.js.map +1 -0
- package/dist/harness/skills.d.ts +17 -28
- package/dist/harness/skills.d.ts.map +1 -1
- package/dist/harness/skills.js +104 -39
- package/dist/harness/skills.js.map +1 -1
- package/dist/harness/subagent-profiles.d.ts +8 -0
- package/dist/harness/subagent-profiles.d.ts.map +1 -0
- package/dist/harness/subagent-profiles.js +293 -0
- package/dist/harness/subagent-profiles.js.map +1 -0
- package/dist/harness/subagent.d.ts +64 -0
- package/dist/harness/subagent.d.ts.map +1 -0
- package/dist/harness/subagent.js +687 -0
- package/dist/harness/subagent.js.map +1 -0
- package/dist/harness/tools/attach.d.ts.map +1 -0
- package/dist/{adapters/slack → harness}/tools/attach.js +1 -1
- package/dist/harness/tools/attach.js.map +1 -0
- package/dist/{tools → harness/tools}/event.d.ts +4 -33
- package/dist/harness/tools/event.d.ts.map +1 -0
- package/dist/harness/tools/event.js +175 -0
- package/dist/harness/tools/event.js.map +1 -0
- package/dist/harness/tools/generate-image.d.ts +23 -0
- package/dist/harness/tools/generate-image.d.ts.map +1 -0
- package/dist/harness/tools/generate-image.js +65 -0
- package/dist/harness/tools/generate-image.js.map +1 -0
- package/dist/harness/tools/host-fn-tool.d.ts +21 -0
- package/dist/harness/tools/host-fn-tool.d.ts.map +1 -0
- package/dist/harness/tools/host-fn-tool.js +32 -0
- package/dist/harness/tools/host-fn-tool.js.map +1 -0
- package/dist/harness/tools/index.d.ts +41 -0
- package/dist/harness/tools/index.d.ts.map +1 -0
- package/dist/harness/tools/index.js +51 -0
- package/dist/harness/tools/index.js.map +1 -0
- package/dist/harness/tools/jev.d.ts +21 -0
- package/dist/harness/tools/jev.d.ts.map +1 -0
- package/dist/harness/tools/jev.js +109 -0
- package/dist/harness/tools/jev.js.map +1 -0
- package/dist/harness/tools/pi-tools.d.ts +18 -0
- package/dist/harness/tools/pi-tools.d.ts.map +1 -0
- package/dist/harness/tools/pi-tools.js +84 -0
- package/dist/harness/tools/pi-tools.js.map +1 -0
- package/dist/harness/tools/react.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/react.js +6 -17
- package/dist/harness/tools/react.js.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.d.ts +4 -4
- package/dist/harness/tools/sandbox.d.ts.map +1 -0
- package/dist/{tools → harness/tools}/sandbox.js +12 -8
- package/dist/harness/tools/sandbox.js.map +1 -0
- package/dist/harness/tools/subagent.d.ts +85 -0
- package/dist/harness/tools/subagent.d.ts.map +1 -0
- package/dist/harness/tools/subagent.js +677 -0
- package/dist/harness/tools/subagent.js.map +1 -0
- package/dist/harness/tools/task.d.ts +20 -0
- package/dist/harness/tools/task.d.ts.map +1 -0
- package/dist/harness/tools/task.js +79 -0
- package/dist/harness/tools/task.js.map +1 -0
- package/dist/harness/tools/types.d.ts +29 -0
- package/dist/harness/tools/types.d.ts.map +1 -0
- package/dist/harness/tools/types.js +2 -0
- package/dist/harness/tools/types.js.map +1 -0
- package/dist/harness/types.d.ts +384 -25
- package/dist/harness/types.d.ts.map +1 -1
- package/dist/harness/types.js +1 -1
- package/dist/harness/types.js.map +1 -1
- package/dist/index.d.ts +33 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -6
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +4 -1
- package/dist/log.js.map +1 -1
- package/dist/main.js +357 -198
- package/dist/main.js.map +1 -1
- package/dist/observability/index.d.ts +33 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +257 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/instrument.js +14 -6
- package/dist/observability/instrument.js.map +1 -1
- package/dist/observability/otel.d.ts +10 -0
- package/dist/observability/otel.d.ts.map +1 -0
- package/dist/observability/otel.js +183 -0
- package/dist/observability/otel.js.map +1 -0
- package/dist/observability/sentry.d.ts +40 -7
- package/dist/observability/sentry.d.ts.map +1 -1
- package/dist/observability/sentry.js +176 -32
- package/dist/observability/sentry.js.map +1 -1
- package/dist/observability/types.d.ts +24 -3
- package/dist/observability/types.d.ts.map +1 -1
- package/dist/observability/types.js.map +1 -1
- package/dist/office/index.d.ts +139 -0
- package/dist/office/index.d.ts.map +1 -0
- package/dist/office/index.js +1084 -0
- package/dist/office/index.js.map +1 -0
- package/dist/office/projection.d.ts +42 -0
- package/dist/office/projection.d.ts.map +1 -0
- package/dist/office/projection.js +182 -0
- package/dist/office/projection.js.map +1 -0
- package/dist/office/types.d.ts +116 -0
- package/dist/office/types.d.ts.map +1 -0
- package/dist/office/types.js +2 -0
- package/dist/office/types.js.map +1 -0
- package/dist/runtime/conversation-runtime.d.ts +1 -1
- package/dist/runtime/conversation-runtime.d.ts.map +1 -1
- package/dist/runtime/conversation-runtime.js +423 -152
- package/dist/runtime/conversation-runtime.js.map +1 -1
- package/dist/runtime/session-lifecycle.d.ts +76 -0
- package/dist/runtime/session-lifecycle.d.ts.map +1 -0
- package/dist/runtime/session-lifecycle.js +404 -0
- package/dist/runtime/session-lifecycle.js.map +1 -0
- package/dist/runtime/types.d.ts +63 -15
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/sandbox/cloudflare.d.ts +4 -0
- package/dist/sandbox/cloudflare.d.ts.map +1 -1
- package/dist/sandbox/cloudflare.js +54 -52
- package/dist/sandbox/cloudflare.js.map +1 -1
- package/dist/sandbox/container.d.ts +3 -0
- package/dist/sandbox/container.d.ts.map +1 -1
- package/dist/sandbox/container.js +19 -7
- package/dist/sandbox/container.js.map +1 -1
- package/dist/sandbox/host.d.ts +3 -0
- package/dist/sandbox/host.d.ts.map +1 -1
- package/dist/sandbox/host.js +44 -35
- package/dist/sandbox/host.js.map +1 -1
- package/dist/sandbox/identity.d.ts +42 -0
- package/dist/sandbox/identity.d.ts.map +1 -0
- package/dist/sandbox/identity.js +77 -0
- package/dist/sandbox/identity.js.map +1 -0
- package/dist/sandbox/index.d.ts +24 -6
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +77 -17
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/provisioner.d.ts +139 -0
- package/dist/sandbox/provisioner.d.ts.map +1 -0
- package/dist/{provisioner.js → sandbox/provisioner.js} +378 -24
- package/dist/sandbox/provisioner.js.map +1 -0
- package/dist/sandbox/types.d.ts +43 -9
- package/dist/sandbox/types.d.ts.map +1 -1
- package/dist/sandbox/types.js.map +1 -1
- package/dist/sandbox/utils.d.ts +24 -0
- package/dist/sandbox/utils.d.ts.map +1 -1
- package/dist/sandbox/utils.js +92 -1
- package/dist/sandbox/utils.js.map +1 -1
- package/dist/sessions/chat-history-sync.d.ts +23 -0
- package/dist/sessions/chat-history-sync.d.ts.map +1 -0
- package/dist/sessions/{agent-memory-file-manager.js → chat-history-sync.js} +239 -175
- package/dist/sessions/chat-history-sync.js.map +1 -0
- package/dist/sessions/history-line.d.ts +29 -0
- package/dist/sessions/history-line.d.ts.map +1 -0
- package/dist/sessions/history-line.js +45 -0
- package/dist/sessions/history-line.js.map +1 -0
- package/dist/sessions/migrate-common.d.ts +43 -0
- package/dist/sessions/migrate-common.d.ts.map +1 -0
- package/dist/sessions/migrate-common.js +99 -0
- package/dist/sessions/migrate-common.js.map +1 -0
- package/dist/sessions/migrate-pi-084.d.ts +8 -0
- package/dist/sessions/migrate-pi-084.d.ts.map +1 -0
- package/dist/sessions/migrate-pi-084.js +302 -0
- package/dist/sessions/migrate-pi-084.js.map +1 -0
- package/dist/sessions/migrate-v3.d.ts +15 -0
- package/dist/sessions/migrate-v3.d.ts.map +1 -0
- package/dist/sessions/migrate-v3.js +419 -0
- package/dist/sessions/migrate-v3.js.map +1 -0
- package/dist/sessions/session-key.d.ts +33 -0
- package/dist/sessions/session-key.d.ts.map +1 -0
- package/dist/sessions/session-key.js +115 -0
- package/dist/sessions/session-key.js.map +1 -0
- package/dist/sessions/session-store.d.ts +61 -0
- package/dist/sessions/session-store.d.ts.map +1 -0
- package/dist/sessions/session-store.js +684 -0
- package/dist/sessions/session-store.js.map +1 -0
- package/dist/sessions/store.d.ts +17 -10
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +182 -47
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +74 -8
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +1 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/settings/apply.d.ts +16 -0
- package/dist/settings/apply.d.ts.map +1 -0
- package/dist/settings/apply.js +60 -0
- package/dist/settings/apply.js.map +1 -0
- package/dist/settings/index.d.ts +126 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +422 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/migrate.d.ts +21 -0
- package/dist/settings/migrate.d.ts.map +1 -0
- package/dist/settings/migrate.js +86 -0
- package/dist/settings/migrate.js.map +1 -0
- package/dist/types.d.ts +330 -141
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/dist/vault/index.d.ts +52 -2
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +218 -86
- package/dist/vault/index.js.map +1 -1
- package/dist/vault/types.d.ts +6 -2
- package/dist/vault/types.d.ts.map +1 -1
- package/dist/vault/types.js.map +1 -1
- package/package.json +79 -40
- package/dist/adapter.d.ts +0 -2
- package/dist/adapter.d.ts.map +0 -1
- package/dist/adapter.js +0 -2
- package/dist/adapter.js.map +0 -1
- package/dist/adapters/slack/tools/attach.d.ts.map +0 -1
- package/dist/adapters/slack/tools/attach.js.map +0 -1
- package/dist/adapters/streaming.d.ts +0 -18
- package/dist/adapters/streaming.d.ts.map +0 -1
- package/dist/adapters/streaming.js +0 -44
- package/dist/adapters/streaming.js.map +0 -1
- package/dist/adapters/telegram/html.d.ts +0 -3
- package/dist/adapters/telegram/html.d.ts.map +0 -1
- package/dist/adapters/telegram/html.js +0 -98
- package/dist/adapters/telegram/html.js.map +0 -1
- package/dist/agent-events.d.ts +0 -5
- package/dist/agent-events.d.ts.map +0 -1
- package/dist/agent-events.js +0 -26
- package/dist/agent-events.js.map +0 -1
- package/dist/agent.d.ts +0 -39
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -1291
- package/dist/agent.js.map +0 -1
- package/dist/cli/ext-git.d.ts +0 -22
- package/dist/cli/ext-git.d.ts.map +0 -1
- package/dist/cli/ext-git.js +0 -76
- package/dist/cli/ext-git.js.map +0 -1
- package/dist/cli/ext.d.ts +0 -2
- package/dist/cli/ext.d.ts.map +0 -1
- package/dist/cli/ext.js +0 -217
- package/dist/cli/ext.js.map +0 -1
- package/dist/commands/admin.d.ts.map +0 -1
- package/dist/commands/admin.js.map +0 -1
- package/dist/commands/auto-reply.d.ts.map +0 -1
- package/dist/commands/auto-reply.js +0 -76
- package/dist/commands/auto-reply.js.map +0 -1
- package/dist/commands/extensions.d.ts +0 -14
- package/dist/commands/extensions.d.ts.map +0 -1
- package/dist/commands/extensions.js +0 -55
- package/dist/commands/extensions.js.map +0 -1
- package/dist/commands/login.d.ts +0 -5
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -115
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/model.d.ts +0 -10
- package/dist/commands/model.d.ts.map +0 -1
- package/dist/commands/model.js +0 -102
- package/dist/commands/model.js.map +0 -1
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js +0 -25
- package/dist/commands/new.js.map +0 -1
- package/dist/commands/parse.d.ts +0 -7
- package/dist/commands/parse.d.ts.map +0 -1
- package/dist/commands/parse.js +0 -14
- package/dist/commands/parse.js.map +0 -1
- package/dist/commands/registry.d.ts +0 -5
- package/dist/commands/registry.d.ts.map +0 -1
- package/dist/commands/registry.js +0 -31
- package/dist/commands/registry.js.map +0 -1
- package/dist/commands/sandbox.d.ts.map +0 -1
- package/dist/commands/sandbox.js +0 -78
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/session-view.d.ts.map +0 -1
- package/dist/commands/session-view.js.map +0 -1
- package/dist/commands/types.d.ts +0 -66
- package/dist/commands/types.d.ts.map +0 -1
- package/dist/commands/types.js.map +0 -1
- package/dist/commands/utils.d.ts +0 -11
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/config.d.ts +0 -78
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -450
- package/dist/config.js.map +0 -1
- package/dist/download.d.ts.map +0 -1
- package/dist/download.js +0 -89
- package/dist/download.js.map +0 -1
- package/dist/events.d.ts +0 -43
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -456
- package/dist/events.js.map +0 -1
- package/dist/execution-resolver.d.ts +0 -21
- package/dist/execution-resolver.d.ts.map +0 -1
- package/dist/execution-resolver.js +0 -170
- package/dist/execution-resolver.js.map +0 -1
- package/dist/harness/auth.d.ts +0 -16
- package/dist/harness/auth.d.ts.map +0 -1
- package/dist/harness/auth.js +0 -86
- package/dist/harness/auth.js.map +0 -1
- package/dist/harness/extensions/loader.d.ts +0 -86
- package/dist/harness/extensions/loader.d.ts.map +0 -1
- package/dist/harness/extensions/loader.js +0 -525
- package/dist/harness/extensions/loader.js.map +0 -1
- package/dist/harness/extensions/registry.d.ts +0 -23
- package/dist/harness/extensions/registry.d.ts.map +0 -1
- package/dist/harness/extensions/registry.js +0 -45
- package/dist/harness/extensions/registry.js.map +0 -1
- package/dist/harness/extensions/types.d.ts +0 -248
- package/dist/harness/extensions/types.d.ts.map +0 -1
- package/dist/harness/extensions/types.js.map +0 -1
- package/dist/harness/session-store.d.ts +0 -77
- package/dist/harness/session-store.d.ts.map +0 -1
- package/dist/harness/session-store.js +0 -248
- package/dist/harness/session-store.js.map +0 -1
- package/dist/harness/settings.d.ts +0 -47
- package/dist/harness/settings.d.ts.map +0 -1
- package/dist/harness/settings.js +0 -29
- package/dist/harness/settings.js.map +0 -1
- package/dist/model-registry.d.ts +0 -4
- package/dist/model-registry.d.ts.map +0 -1
- package/dist/model-registry.js +0 -7
- package/dist/model-registry.js.map +0 -1
- package/dist/platform-messages.d.ts.map +0 -1
- package/dist/platform-messages.js.map +0 -1
- package/dist/portal-shell.d.ts +0 -4
- package/dist/portal-shell.d.ts.map +0 -1
- package/dist/portal-shell.js.map +0 -1
- package/dist/provisioner.d.ts +0 -61
- package/dist/provisioner.d.ts.map +0 -1
- package/dist/provisioner.js.map +0 -1
- package/dist/runtime/agent-run-controller.d.ts +0 -31
- package/dist/runtime/agent-run-controller.d.ts.map +0 -1
- package/dist/runtime/agent-run-controller.js +0 -195
- package/dist/runtime/agent-run-controller.js.map +0 -1
- package/dist/sandbox/errors.d.ts +0 -6
- package/dist/sandbox/errors.d.ts.map +0 -1
- package/dist/sandbox/errors.js +0 -11
- package/dist/sandbox/errors.js.map +0 -1
- package/dist/sandbox/firecracker.d.ts +0 -15
- package/dist/sandbox/firecracker.d.ts.map +0 -1
- package/dist/sandbox/firecracker.js +0 -212
- package/dist/sandbox/firecracker.js.map +0 -1
- package/dist/sandbox/image.d.ts +0 -3
- package/dist/sandbox/image.d.ts.map +0 -1
- package/dist/sandbox/image.js +0 -27
- package/dist/sandbox/image.js.map +0 -1
- package/dist/sandbox/path-context.d.ts +0 -3
- package/dist/sandbox/path-context.d.ts.map +0 -1
- package/dist/sandbox/path-context.js +0 -20
- package/dist/sandbox/path-context.js.map +0 -1
- package/dist/sessions/agent-memory-file-manager.d.ts +0 -19
- package/dist/sessions/agent-memory-file-manager.d.ts.map +0 -1
- package/dist/sessions/agent-memory-file-manager.js.map +0 -1
- package/dist/sessions/metadata.d.ts +0 -3
- package/dist/sessions/metadata.d.ts.map +0 -1
- package/dist/sessions/metadata.js +0 -11
- package/dist/sessions/metadata.js.map +0 -1
- package/dist/sessions/policy.d.ts +0 -6
- package/dist/sessions/policy.d.ts.map +0 -1
- package/dist/sessions/policy.js +0 -23
- package/dist/sessions/policy.js.map +0 -1
- package/dist/store.d.ts +0 -46
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -177
- package/dist/store.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -10
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -80
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/edit.d.ts +0 -11
- package/dist/tools/edit.d.ts.map +0 -1
- package/dist/tools/edit.js +0 -131
- package/dist/tools/edit.js.map +0 -1
- package/dist/tools/event.d.ts.map +0 -1
- package/dist/tools/event.js +0 -252
- package/dist/tools/event.js.map +0 -1
- package/dist/tools/index.d.ts +0 -24
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -31
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/react.d.ts.map +0 -1
- package/dist/tools/react.js.map +0 -1
- package/dist/tools/read.d.ts +0 -11
- package/dist/tools/read.d.ts.map +0 -1
- package/dist/tools/read.js +0 -134
- package/dist/tools/read.js.map +0 -1
- package/dist/tools/sandbox.d.ts.map +0 -1
- package/dist/tools/sandbox.js.map +0 -1
- package/dist/tools/truncate.d.ts +0 -33
- package/dist/tools/truncate.d.ts.map +0 -1
- package/dist/tools/truncate.js +0 -184
- package/dist/tools/truncate.js.map +0 -1
- package/dist/tools/types.d.ts +0 -54
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js.map +0 -1
- package/dist/tools/write.d.ts +0 -10
- package/dist/tools/write.d.ts.map +0 -1
- package/dist/tools/write.js +0 -29
- package/dist/tools/write.js.map +0 -1
- package/dist/trigger.d.ts +0 -22
- package/dist/trigger.d.ts.map +0 -1
- package/dist/trigger.js +0 -100
- package/dist/trigger.js.map +0 -1
- package/dist/utils/date.d.ts +0 -10
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js +0 -23
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/env.d.ts +0 -3
- package/dist/utils/env.d.ts.map +0 -1
- package/dist/utils/env.js +0 -12
- package/dist/utils/env.js.map +0 -1
- package/dist/utils/file-guards.d.ts +0 -9
- package/dist/utils/file-guards.d.ts.map +0 -1
- package/dist/utils/file-guards.js +0 -59
- package/dist/utils/file-guards.js.map +0 -1
- package/dist/utils/fs-atomic.d.ts +0 -10
- package/dist/utils/fs-atomic.d.ts.map +0 -1
- package/dist/utils/fs-atomic.js +0 -45
- package/dist/utils/fs-atomic.js.map +0 -1
- package/dist/utils/html.d.ts +0 -2
- package/dist/utils/html.d.ts.map +0 -1
- package/dist/utils/html.js +0 -4
- package/dist/utils/html.js.map +0 -1
- package/dist/utils/http-body.d.ts +0 -10
- package/dist/utils/http-body.d.ts.map +0 -1
- package/dist/utils/http-body.js +0 -34
- package/dist/utils/http-body.js.map +0 -1
- package/dist/vault/routing.d.ts +0 -3
- package/dist/vault/routing.d.ts.map +0 -1
- package/dist/vault/routing.js +0 -13
- package/dist/vault/routing.js.map +0 -1
- package/dist/web/admin/portal.d.ts +0 -5
- package/dist/web/admin/portal.d.ts.map +0 -1
- package/dist/web/admin/portal.js +0 -2572
- package/dist/web/admin/portal.js.map +0 -1
- package/dist/web/admin/provider-models.d.ts.map +0 -1
- package/dist/web/admin/provider-models.js.map +0 -1
- package/dist/web/admin/store.d.ts +0 -13
- package/dist/web/admin/store.d.ts.map +0 -1
- package/dist/web/admin/store.js +0 -14
- package/dist/web/admin/store.js.map +0 -1
- package/dist/web/admin/types.d.ts +0 -30
- package/dist/web/admin/types.d.ts.map +0 -1
- package/dist/web/admin/types.js.map +0 -1
- package/dist/web/agent-events/portal.d.ts +0 -3
- package/dist/web/agent-events/portal.d.ts.map +0 -1
- package/dist/web/agent-events/portal.js +0 -18
- package/dist/web/agent-events/portal.js.map +0 -1
- package/dist/web/login/oauth.d.ts +0 -6
- package/dist/web/login/oauth.d.ts.map +0 -1
- package/dist/web/login/oauth.js.map +0 -1
- package/dist/web/login/portal.d.ts.map +0 -1
- package/dist/web/login/portal.js.map +0 -1
- package/dist/web/login/store.d.ts +0 -8
- package/dist/web/login/store.d.ts.map +0 -1
- package/dist/web/login/store.js +0 -15
- package/dist/web/login/store.js.map +0 -1
- package/dist/web/login/types.d.ts.map +0 -1
- package/dist/web/login/types.js.map +0 -1
- package/dist/web/request.d.ts +0 -3
- package/dist/web/request.d.ts.map +0 -1
- package/dist/web/request.js +0 -13
- package/dist/web/request.js.map +0 -1
- package/dist/web/server.d.ts.map +0 -1
- package/dist/web/server.js.map +0 -1
- package/dist/web/session-view/command.d.ts +0 -4
- package/dist/web/session-view/command.d.ts.map +0 -1
- package/dist/web/session-view/command.js +0 -7
- package/dist/web/session-view/command.js.map +0 -1
- package/dist/web/session-view/portal.d.ts +0 -13
- package/dist/web/session-view/portal.d.ts.map +0 -1
- package/dist/web/session-view/portal.js.map +0 -1
- package/dist/web/session-view/service.d.ts +0 -6
- package/dist/web/session-view/service.d.ts.map +0 -1
- package/dist/web/session-view/service.js +0 -498
- package/dist/web/session-view/service.js.map +0 -1
- package/dist/web/session-view/store.d.ts +0 -8
- package/dist/web/session-view/store.d.ts.map +0 -1
- package/dist/web/session-view/store.js +0 -15
- package/dist/web/session-view/store.js.map +0 -1
- package/dist/web/session-view/types.d.ts.map +0 -1
- package/dist/web/session-view/types.js.map +0 -1
- package/dist/web/token-store.d.ts.map +0 -1
- package/dist/web/token-store.js.map +0 -1
- package/dist/web/types.d.ts.map +0 -1
- package/dist/web/types.js.map +0 -1
- /package/dist/{commands → adapters/commands}/admin.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/new.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/sandbox.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/session-view.d.ts +0 -0
- /package/dist/{commands → adapters/commands}/types.js +0 -0
- /package/dist/{harness/extensions → adapters/github}/types.js +0 -0
- /package/dist/{tools → adapters/web/admin}/types.js +0 -0
- /package/dist/{web/admin → adapters/web/login}/types.js +0 -0
- /package/dist/{web/login → adapters/web/session-view}/types.js +0 -0
- /package/dist/{web → adapters/web}/token-store.d.ts +0 -0
- /package/dist/{web → adapters/web}/types.d.ts +0 -0
- /package/dist/{web/session-view → adapters/web}/types.js +0 -0
- /package/dist/{download.d.ts → cli/download.d.ts} +0 -0
- /package/dist/{web → cli}/types.js +0 -0
- /package/dist/{adapters/slack → harness}/tools/attach.d.ts +0 -0
- /package/dist/{tools → harness/tools}/react.d.ts +0 -0
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { metrics } from "@opentelemetry/api";
|
|
2
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-proto";
|
|
3
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
4
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
5
|
+
import { MeterProvider, PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
6
|
+
import { BatchSpanProcessor, NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
7
|
+
import { SentryContextManager } from "@sentry/node";
|
|
8
|
+
import { SentryPropagator } from "@sentry/opentelemetry";
|
|
9
|
+
import { readStandardEnv } from "../env-manifest.js";
|
|
10
|
+
import { sanitizeTelemetryString } from "./sentry.js";
|
|
11
|
+
const SAFE_RESOURCE_KEYS = new Set([
|
|
12
|
+
"deployment.environment.name",
|
|
13
|
+
"openinference.project.name",
|
|
14
|
+
"service.namespace",
|
|
15
|
+
"service.version",
|
|
16
|
+
]);
|
|
17
|
+
let tracerProvider;
|
|
18
|
+
let meterProvider;
|
|
19
|
+
let metricsEnabled = false;
|
|
20
|
+
export function resolveOpenTelemetryConfiguration(env = currentOpenTelemetryEnvironment()) {
|
|
21
|
+
if (env.OTEL_SDK_DISABLED?.toLowerCase() === "true")
|
|
22
|
+
return { traces: false, metrics: false };
|
|
23
|
+
return {
|
|
24
|
+
traces: protocolSupported(env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ?? env.OTEL_EXPORTER_OTLP_PROTOCOL) &&
|
|
25
|
+
exporterEnabled(env.OTEL_TRACES_EXPORTER) &&
|
|
26
|
+
effectiveEndpointIsValid(env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, env.OTEL_EXPORTER_OTLP_ENDPOINT),
|
|
27
|
+
metrics: protocolSupported(env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL ?? env.OTEL_EXPORTER_OTLP_PROTOCOL) &&
|
|
28
|
+
exporterEnabled(env.OTEL_METRICS_EXPORTER) &&
|
|
29
|
+
effectiveEndpointIsValid(env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT, env.OTEL_EXPORTER_OTLP_ENDPOINT),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function initializeOpenTelemetry() {
|
|
33
|
+
const env = currentOpenTelemetryEnvironment();
|
|
34
|
+
const configuration = resolveOpenTelemetryConfiguration(env);
|
|
35
|
+
metricsEnabled = configuration.metrics;
|
|
36
|
+
if (!configuration.traces && !configuration.metrics)
|
|
37
|
+
return false;
|
|
38
|
+
const resource = resourceFromAttributes(resolveOpenTelemetryResourceAttributes(env));
|
|
39
|
+
if (configuration.metrics) {
|
|
40
|
+
meterProvider = new MeterProvider({
|
|
41
|
+
resource,
|
|
42
|
+
readers: [
|
|
43
|
+
new PeriodicExportingMetricReader({
|
|
44
|
+
exporter: new OTLPMetricExporter(),
|
|
45
|
+
exportIntervalMillis: positiveInteger(env.OTEL_METRIC_EXPORT_INTERVAL),
|
|
46
|
+
exportTimeoutMillis: positiveInteger(env.OTEL_METRIC_EXPORT_TIMEOUT),
|
|
47
|
+
}),
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
metrics.setGlobalMeterProvider(meterProvider);
|
|
51
|
+
}
|
|
52
|
+
if (configuration.traces) {
|
|
53
|
+
tracerProvider = new NodeTracerProvider({
|
|
54
|
+
resource,
|
|
55
|
+
spanProcessors: [new BatchSpanProcessor(new OTLPTraceExporter())],
|
|
56
|
+
});
|
|
57
|
+
tracerProvider.register({
|
|
58
|
+
contextManager: new SentryContextManager(),
|
|
59
|
+
propagator: new SentryPropagator(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
export function isOpenTelemetryMetricsEnabled() {
|
|
65
|
+
return metricsEnabled;
|
|
66
|
+
}
|
|
67
|
+
export async function shutdownOpenTelemetry() {
|
|
68
|
+
const providers = [tracerProvider, meterProvider].filter((provider) => provider !== undefined);
|
|
69
|
+
const flushResults = await Promise.allSettled(providers.map((provider) => provider.forceFlush()));
|
|
70
|
+
const shutdownResults = await Promise.allSettled(providers.map((provider) => provider.shutdown()));
|
|
71
|
+
tracerProvider = undefined;
|
|
72
|
+
meterProvider = undefined;
|
|
73
|
+
metricsEnabled = false;
|
|
74
|
+
const failures = [...flushResults, ...shutdownResults].flatMap((result) => result.status === "rejected" ? [result.reason] : []);
|
|
75
|
+
if (failures.length > 0) {
|
|
76
|
+
throw new AggregateError(failures, "OpenTelemetry shutdown failed");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function exporterEnabled(value) {
|
|
80
|
+
if (!value)
|
|
81
|
+
return true;
|
|
82
|
+
return value
|
|
83
|
+
.split(",")
|
|
84
|
+
.map((entry) => entry.trim().toLowerCase())
|
|
85
|
+
.includes("otlp");
|
|
86
|
+
}
|
|
87
|
+
function protocolSupported(value) {
|
|
88
|
+
return !value || value.trim().toLowerCase() === "http/protobuf";
|
|
89
|
+
}
|
|
90
|
+
function effectiveEndpointIsValid(signalEndpoint, baseEndpoint) {
|
|
91
|
+
return validEndpoint(signalEndpoint ?? baseEndpoint);
|
|
92
|
+
}
|
|
93
|
+
function validEndpoint(value) {
|
|
94
|
+
if (!value)
|
|
95
|
+
return false;
|
|
96
|
+
try {
|
|
97
|
+
const endpoint = new URL(value);
|
|
98
|
+
return ((endpoint.protocol === "http:" || endpoint.protocol === "https:") &&
|
|
99
|
+
endpoint.username === "" &&
|
|
100
|
+
endpoint.password === "");
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export function resolveOpenTelemetryResourceAttributes(env = currentOpenTelemetryEnvironment()) {
|
|
107
|
+
const serviceName = safeResourceValue(env.OTEL_SERVICE_NAME) ?? "mikan";
|
|
108
|
+
const attributes = { "service.name": serviceName };
|
|
109
|
+
const parsed = parseResourceAttributes(env.OTEL_RESOURCE_ATTRIBUTES);
|
|
110
|
+
if (!parsed)
|
|
111
|
+
return attributes;
|
|
112
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
113
|
+
if (!SAFE_RESOURCE_KEYS.has(key))
|
|
114
|
+
continue;
|
|
115
|
+
const safeValue = safeResourceValue(value);
|
|
116
|
+
if (safeValue !== undefined)
|
|
117
|
+
attributes[key] = safeValue;
|
|
118
|
+
}
|
|
119
|
+
return attributes;
|
|
120
|
+
}
|
|
121
|
+
/** Parse OTEL_RESOURCE_ATTRIBUTES using the specification's percent-encoding rules. */
|
|
122
|
+
function parseResourceAttributes(value) {
|
|
123
|
+
if (!value)
|
|
124
|
+
return {};
|
|
125
|
+
const attributes = {};
|
|
126
|
+
try {
|
|
127
|
+
for (const rawEntry of value.split(",").filter((entry) => entry.trim() !== "")) {
|
|
128
|
+
const parts = rawEntry.split("=");
|
|
129
|
+
if (parts.length !== 2)
|
|
130
|
+
return undefined;
|
|
131
|
+
const rawKey = parts[0]?.trim();
|
|
132
|
+
const rawValue = parts[1]?.trim();
|
|
133
|
+
if (!rawKey || rawValue === undefined)
|
|
134
|
+
return undefined;
|
|
135
|
+
const key = decodeURIComponent(rawKey);
|
|
136
|
+
const decodedValue = decodeURIComponent(rawValue);
|
|
137
|
+
if (key.length > 255 || decodedValue.length > 255)
|
|
138
|
+
return undefined;
|
|
139
|
+
attributes[key] = decodedValue;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return undefined;
|
|
144
|
+
}
|
|
145
|
+
return attributes;
|
|
146
|
+
}
|
|
147
|
+
function safeResourceValue(value) {
|
|
148
|
+
const trimmed = value?.trim();
|
|
149
|
+
if (!trimmed || trimmed.length > 128)
|
|
150
|
+
return undefined;
|
|
151
|
+
if ([...trimmed].some((character) => {
|
|
152
|
+
const code = character.charCodeAt(0);
|
|
153
|
+
return code <= 31 || code === 127;
|
|
154
|
+
})) {
|
|
155
|
+
return undefined;
|
|
156
|
+
}
|
|
157
|
+
return sanitizeTelemetryString(trimmed) === trimmed ? trimmed : undefined;
|
|
158
|
+
}
|
|
159
|
+
function currentOpenTelemetryEnvironment() {
|
|
160
|
+
const names = [
|
|
161
|
+
"OTEL_SDK_DISABLED",
|
|
162
|
+
"OTEL_SERVICE_NAME",
|
|
163
|
+
"OTEL_RESOURCE_ATTRIBUTES",
|
|
164
|
+
"OTEL_TRACES_EXPORTER",
|
|
165
|
+
"OTEL_METRICS_EXPORTER",
|
|
166
|
+
"OTEL_EXPORTER_OTLP_ENDPOINT",
|
|
167
|
+
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
|
|
168
|
+
"OTEL_EXPORTER_OTLP_METRICS_ENDPOINT",
|
|
169
|
+
"OTEL_EXPORTER_OTLP_PROTOCOL",
|
|
170
|
+
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL",
|
|
171
|
+
"OTEL_EXPORTER_OTLP_METRICS_PROTOCOL",
|
|
172
|
+
"OTEL_METRIC_EXPORT_INTERVAL",
|
|
173
|
+
"OTEL_METRIC_EXPORT_TIMEOUT",
|
|
174
|
+
];
|
|
175
|
+
return Object.fromEntries(names.map((name) => [name, readStandardEnv(name)]));
|
|
176
|
+
}
|
|
177
|
+
function positiveInteger(value) {
|
|
178
|
+
if (!value)
|
|
179
|
+
return undefined;
|
|
180
|
+
const parsed = Number(value);
|
|
181
|
+
return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=otel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"otel.js","sourceRoot":"","sources":["../../src/observability/otel.ts"],"names":[],"mappings":"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","sourcesContent":["import { metrics } from \"@opentelemetry/api\";\nimport { OTLPMetricExporter } from \"@opentelemetry/exporter-metrics-otlp-proto\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-proto\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { MeterProvider, PeriodicExportingMetricReader } from \"@opentelemetry/sdk-metrics\";\nimport { BatchSpanProcessor, NodeTracerProvider } from \"@opentelemetry/sdk-trace-node\";\nimport { SentryContextManager } from \"@sentry/node\";\nimport { SentryPropagator } from \"@sentry/opentelemetry\";\nimport { readStandardEnv } from \"../env-manifest.js\";\nimport { sanitizeTelemetryString } from \"./sentry.js\";\n\nconst SAFE_RESOURCE_KEYS = new Set([\n \"deployment.environment.name\",\n \"openinference.project.name\",\n \"service.namespace\",\n \"service.version\",\n]);\n\nlet tracerProvider: NodeTracerProvider | undefined;\nlet meterProvider: MeterProvider | undefined;\nlet metricsEnabled = false;\n\nexport interface OpenTelemetryConfiguration {\n traces: boolean;\n metrics: boolean;\n}\n\nexport function resolveOpenTelemetryConfiguration(\n env: NodeJS.ProcessEnv = currentOpenTelemetryEnvironment(),\n): OpenTelemetryConfiguration {\n if (env.OTEL_SDK_DISABLED?.toLowerCase() === \"true\") return { traces: false, metrics: false };\n\n return {\n traces:\n protocolSupported(\n env.OTEL_EXPORTER_OTLP_TRACES_PROTOCOL ?? env.OTEL_EXPORTER_OTLP_PROTOCOL,\n ) &&\n exporterEnabled(env.OTEL_TRACES_EXPORTER) &&\n effectiveEndpointIsValid(\n env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,\n env.OTEL_EXPORTER_OTLP_ENDPOINT,\n ),\n metrics:\n protocolSupported(\n env.OTEL_EXPORTER_OTLP_METRICS_PROTOCOL ?? env.OTEL_EXPORTER_OTLP_PROTOCOL,\n ) &&\n exporterEnabled(env.OTEL_METRICS_EXPORTER) &&\n effectiveEndpointIsValid(\n env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,\n env.OTEL_EXPORTER_OTLP_ENDPOINT,\n ),\n };\n}\n\nexport function initializeOpenTelemetry(): boolean {\n const env = currentOpenTelemetryEnvironment();\n const configuration = resolveOpenTelemetryConfiguration(env);\n metricsEnabled = configuration.metrics;\n if (!configuration.traces && !configuration.metrics) return false;\n\n const resource = resourceFromAttributes(resolveOpenTelemetryResourceAttributes(env));\n\n if (configuration.metrics) {\n meterProvider = new MeterProvider({\n resource,\n readers: [\n new PeriodicExportingMetricReader({\n exporter: new OTLPMetricExporter(),\n exportIntervalMillis: positiveInteger(env.OTEL_METRIC_EXPORT_INTERVAL),\n exportTimeoutMillis: positiveInteger(env.OTEL_METRIC_EXPORT_TIMEOUT),\n }),\n ],\n });\n metrics.setGlobalMeterProvider(meterProvider);\n }\n\n if (configuration.traces) {\n tracerProvider = new NodeTracerProvider({\n resource,\n spanProcessors: [new BatchSpanProcessor(new OTLPTraceExporter())],\n });\n tracerProvider.register({\n contextManager: new SentryContextManager(),\n propagator: new SentryPropagator(),\n });\n }\n\n return true;\n}\n\nexport function isOpenTelemetryMetricsEnabled(): boolean {\n return metricsEnabled;\n}\n\nexport async function shutdownOpenTelemetry(): Promise<void> {\n const providers = [tracerProvider, meterProvider].filter(\n (provider): provider is NodeTracerProvider | MeterProvider => provider !== undefined,\n );\n const flushResults = await Promise.allSettled(providers.map((provider) => provider.forceFlush()));\n const shutdownResults = await Promise.allSettled(\n providers.map((provider) => provider.shutdown()),\n );\n tracerProvider = undefined;\n meterProvider = undefined;\n metricsEnabled = false;\n\n const failures = [...flushResults, ...shutdownResults].flatMap((result) =>\n result.status === \"rejected\" ? [result.reason] : [],\n );\n if (failures.length > 0) {\n throw new AggregateError(failures, \"OpenTelemetry shutdown failed\");\n }\n}\n\nfunction exporterEnabled(value: string | undefined): boolean {\n if (!value) return true;\n return value\n .split(\",\")\n .map((entry) => entry.trim().toLowerCase())\n .includes(\"otlp\");\n}\n\nfunction protocolSupported(value: string | undefined): boolean {\n return !value || value.trim().toLowerCase() === \"http/protobuf\";\n}\n\nfunction effectiveEndpointIsValid(\n signalEndpoint: string | undefined,\n baseEndpoint: string | undefined,\n): boolean {\n return validEndpoint(signalEndpoint ?? baseEndpoint);\n}\n\nfunction validEndpoint(value: string | undefined): boolean {\n if (!value) return false;\n try {\n const endpoint = new URL(value);\n return (\n (endpoint.protocol === \"http:\" || endpoint.protocol === \"https:\") &&\n endpoint.username === \"\" &&\n endpoint.password === \"\"\n );\n } catch {\n return false;\n }\n}\n\nexport function resolveOpenTelemetryResourceAttributes(\n env: NodeJS.ProcessEnv = currentOpenTelemetryEnvironment(),\n): Record<string, string> {\n const serviceName = safeResourceValue(env.OTEL_SERVICE_NAME) ?? \"mikan\";\n const attributes: Record<string, string> = { \"service.name\": serviceName };\n const parsed = parseResourceAttributes(env.OTEL_RESOURCE_ATTRIBUTES);\n if (!parsed) return attributes;\n\n for (const [key, value] of Object.entries(parsed)) {\n if (!SAFE_RESOURCE_KEYS.has(key)) continue;\n const safeValue = safeResourceValue(value);\n if (safeValue !== undefined) attributes[key] = safeValue;\n }\n return attributes;\n}\n\n/** Parse OTEL_RESOURCE_ATTRIBUTES using the specification's percent-encoding rules. */\nfunction parseResourceAttributes(value: string | undefined): Record<string, string> | undefined {\n if (!value) return {};\n const attributes: Record<string, string> = {};\n try {\n for (const rawEntry of value.split(\",\").filter((entry) => entry.trim() !== \"\")) {\n const parts = rawEntry.split(\"=\");\n if (parts.length !== 2) return undefined;\n const rawKey = parts[0]?.trim();\n const rawValue = parts[1]?.trim();\n if (!rawKey || rawValue === undefined) return undefined;\n const key = decodeURIComponent(rawKey);\n const decodedValue = decodeURIComponent(rawValue);\n if (key.length > 255 || decodedValue.length > 255) return undefined;\n attributes[key] = decodedValue;\n }\n } catch {\n return undefined;\n }\n return attributes;\n}\n\nfunction safeResourceValue(value: string | undefined): string | undefined {\n const trimmed = value?.trim();\n if (!trimmed || trimmed.length > 128) return undefined;\n if (\n [...trimmed].some((character) => {\n const code = character.charCodeAt(0);\n return code <= 31 || code === 127;\n })\n ) {\n return undefined;\n }\n return sanitizeTelemetryString(trimmed) === trimmed ? trimmed : undefined;\n}\n\nfunction currentOpenTelemetryEnvironment(): NodeJS.ProcessEnv {\n const names = [\n \"OTEL_SDK_DISABLED\",\n \"OTEL_SERVICE_NAME\",\n \"OTEL_RESOURCE_ATTRIBUTES\",\n \"OTEL_TRACES_EXPORTER\",\n \"OTEL_METRICS_EXPORTER\",\n \"OTEL_EXPORTER_OTLP_ENDPOINT\",\n \"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT\",\n \"OTEL_EXPORTER_OTLP_METRICS_ENDPOINT\",\n \"OTEL_EXPORTER_OTLP_PROTOCOL\",\n \"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL\",\n \"OTEL_EXPORTER_OTLP_METRICS_PROTOCOL\",\n \"OTEL_METRIC_EXPORT_INTERVAL\",\n \"OTEL_METRIC_EXPORT_TIMEOUT\",\n ] as const;\n return Object.fromEntries(names.map((name) => [name, readStandardEnv(name)]));\n}\n\nfunction positiveInteger(value: string | undefined): number | undefined {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isInteger(parsed) && parsed > 0 ? parsed : undefined;\n}\n"]}
|
|
@@ -1,30 +1,63 @@
|
|
|
1
1
|
import type { Breadcrumb, ErrorEvent, Event, EventHint, Scope } from "@sentry/node";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import * as Sentry from "@sentry/node";
|
|
3
|
+
export type { ReportUserFacingErrorOptions, SentryAttributionAttributes, SubagentOutcomeReport, SentryRunScopeContext, SentrySpanPayload, SentryTransactionPayload, } from "./types.js";
|
|
4
|
+
import type { ReportUserFacingErrorOptions, SentryAttributionAttributes, SubagentOutcomeReport, SentryRunScopeContext, SentrySpanPayload, SentryTransactionPayload } from "./types.js";
|
|
5
|
+
export declare function createSentryInitOptions(dsn?: string, customOpenTelemetry?: boolean): {
|
|
5
6
|
dsn: string | undefined;
|
|
6
7
|
environment: string;
|
|
7
8
|
enabled: boolean;
|
|
8
9
|
sendDefaultPii: boolean;
|
|
9
|
-
tracesSampleRate: number;
|
|
10
|
+
tracesSampleRate: number | undefined;
|
|
11
|
+
skipOpenTelemetrySetup: boolean;
|
|
12
|
+
registerEsmLoaderHooks: boolean | undefined;
|
|
10
13
|
includeLocalVariables: boolean;
|
|
11
14
|
enableLogs: boolean;
|
|
15
|
+
integrations(defaultIntegrations: ReturnType<typeof Sentry.getDefaultIntegrations>): import("@sentry/core").Integration[];
|
|
12
16
|
beforeSend(event: ErrorEvent, hint: EventHint): ErrorEvent | null;
|
|
13
17
|
beforeSendSpan(span: SentrySpanPayload): SentrySpanPayload;
|
|
14
18
|
beforeSendTransaction(event: SentryTransactionPayload): SentryTransactionPayload | null;
|
|
15
19
|
beforeBreadcrumb(breadcrumb: Breadcrumb): Breadcrumb | null;
|
|
16
20
|
};
|
|
17
|
-
export declare function
|
|
21
|
+
export declare function captureSentryError(error: unknown, options: ReportUserFacingErrorOptions): string | undefined;
|
|
22
|
+
export declare function closeSentry(timeoutMs: number): Promise<boolean>;
|
|
23
|
+
export declare function recordSentryCounter(name: string, value: number, attributes: SentryAttributionAttributes): void;
|
|
24
|
+
export declare function recordSentryDistribution(name: string, value: number, options: {
|
|
25
|
+
unit?: string;
|
|
26
|
+
attributes: SentryAttributionAttributes;
|
|
27
|
+
}): void;
|
|
28
|
+
export declare function recordSentryGauge(name: string, value: number, options: {
|
|
29
|
+
unit?: string;
|
|
30
|
+
attributes: SentryAttributionAttributes;
|
|
31
|
+
}): void;
|
|
32
|
+
export declare function addSentryBreadcrumb(message: string, data?: Record<string, unknown>, options?: {
|
|
33
|
+
category?: string;
|
|
34
|
+
level?: "info" | "warning";
|
|
35
|
+
log?: boolean;
|
|
36
|
+
}): void;
|
|
37
|
+
export declare function withSentryRunScope<T>(context: SentryRunScopeContext, body: () => T): T;
|
|
18
38
|
export declare function createRunAttributionAttributes(context: SentryRunScopeContext): SentryAttributionAttributes;
|
|
19
39
|
export declare function registerTraceAttribution(span: {
|
|
20
40
|
setAttributes(attributes: SentryAttributionAttributes): unknown;
|
|
21
41
|
}, attributes: SentryAttributionAttributes): void;
|
|
22
|
-
export declare function updateActiveSpanAttribution(attributes: SentryAttributionAttributes): void;
|
|
23
42
|
export declare function applyRunScope(scope: Scope, context: SentryRunScopeContext): void;
|
|
24
43
|
export declare function metricAttributes(attributes: Record<string, string | number | boolean | undefined>): Record<string, string | number | boolean>;
|
|
25
|
-
export declare function addLifecycleBreadcrumb(message: string, data?: Record<string, string | number | boolean | undefined>): void;
|
|
26
44
|
export declare function sanitizeEvent<T extends Event>(event: T, _hint?: EventHint): T | null;
|
|
27
45
|
export declare function applySpanAttribution<T extends SentrySpanPayload>(span: T): T;
|
|
28
46
|
export declare function sanitizeBreadcrumb(breadcrumb: Breadcrumb): Breadcrumb | null;
|
|
29
47
|
export declare function sanitizeValue(value: unknown, key?: string, depth?: number): unknown;
|
|
48
|
+
export declare function sanitizeTelemetryString(value: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Record one subagent outcome: a run counter and duration for every status,
|
|
51
|
+
* a lifecycle breadcrumb, and a Sentry error only for statuses in
|
|
52
|
+
* `UNEXPECTED_SUBAGENT_STATUSES`. Fingerprinted on the error's prefix before
|
|
53
|
+
* the first colon so one failure class is one issue regardless of which
|
|
54
|
+
* tool, file, or model message follows it.
|
|
55
|
+
*/
|
|
56
|
+
export declare function recordSubagentOutcome(report: SubagentOutcomeReport): string | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* A subagent that never started: unknown profile, ungranted tool, or a
|
|
59
|
+
* harness rejection. The throw still reaches the parent model as a tool
|
|
60
|
+
* error; this only makes sure it also reaches Sentry.
|
|
61
|
+
*/
|
|
62
|
+
export declare function reportSubagentLaunchError(error: unknown, report: Pick<SubagentOutcomeReport, "itemId" | "mode" | "profile">): string | undefined;
|
|
30
63
|
//# sourceMappingURL=sentry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../src/observability/sentry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../src/observability/sentry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import * as Sentry from "@sentry/node";
|
|
2
|
+
import { readEnv } from "../env-manifest.js";
|
|
2
3
|
const REDACTED = "[REDACTED]";
|
|
3
4
|
const REDACTED_PATH = "[REDACTED_PATH]";
|
|
4
5
|
const MAX_STRING_LENGTH = 256;
|
|
5
6
|
const MAX_DEPTH = 4;
|
|
7
|
+
const MAX_FINGERPRINT_CLASS_LENGTH = 80;
|
|
6
8
|
const TRACE_ATTRIBUTION_TTL_MS = 5 * 60 * 1000;
|
|
7
9
|
const SENSITIVE_KEYS = new Set([
|
|
8
10
|
"accesstoken",
|
|
9
11
|
"apikey",
|
|
12
|
+
"apitoken",
|
|
10
13
|
"args",
|
|
11
14
|
"attachment",
|
|
12
15
|
"attachments",
|
|
@@ -14,6 +17,8 @@ const SENSITIVE_KEYS = new Set([
|
|
|
14
17
|
"body",
|
|
15
18
|
"clientsecret",
|
|
16
19
|
"code",
|
|
20
|
+
"completion",
|
|
21
|
+
"completions",
|
|
17
22
|
"content",
|
|
18
23
|
"contents",
|
|
19
24
|
"cookie",
|
|
@@ -38,12 +43,16 @@ const SENSITIVE_KEYS = new Set([
|
|
|
38
43
|
"systemprompt",
|
|
39
44
|
"text",
|
|
40
45
|
"thinking",
|
|
46
|
+
"toolarguments",
|
|
47
|
+
"toolargs",
|
|
48
|
+
"toolinput",
|
|
49
|
+
"tooloutput",
|
|
41
50
|
"token",
|
|
42
51
|
"url",
|
|
43
52
|
"uri",
|
|
44
53
|
"workspacepath",
|
|
45
54
|
]);
|
|
46
|
-
const ABSOLUTE_PATH_PATTERN = /(
|
|
55
|
+
const ABSOLUTE_PATH_PATTERN = /(?:(?<![A-Za-z0-9:/])\/(?!\/)[^\s"'`<>]+|[A-Za-z]:\\[^\s"'`<>]+)/;
|
|
47
56
|
const TOKEN_PATTERNS = [
|
|
48
57
|
/\bsk-[A-Za-z0-9_-]{12,}\b/,
|
|
49
58
|
/\bxox[a-z]-[A-Za-z0-9-]{10,}\b/,
|
|
@@ -51,15 +60,39 @@ const TOKEN_PATTERNS = [
|
|
|
51
60
|
/\bgh[pousr]_[A-Za-z0-9]{20,}\b/,
|
|
52
61
|
];
|
|
53
62
|
const traceAttribution = new Map();
|
|
54
|
-
export function createSentryInitOptions(dsn) {
|
|
63
|
+
export function createSentryInitOptions(dsn, customOpenTelemetry = false) {
|
|
55
64
|
return {
|
|
56
65
|
dsn,
|
|
57
|
-
environment:
|
|
58
|
-
enabled: Boolean(dsn) &&
|
|
66
|
+
environment: readEnv("SENTRY_ENVIRONMENT") ?? "production",
|
|
67
|
+
enabled: Boolean(dsn) && readEnv("SENTRY_ENABLED") !== "false",
|
|
68
|
+
// Also keeps gen_ai inputs/outputs off. Do not add a `dataCollection`
|
|
69
|
+
// block here: its mere presence switches the SDK base to all-true, and
|
|
70
|
+
// prompts and completions start shipping unless every key is set false.
|
|
59
71
|
sendDefaultPii: false,
|
|
60
|
-
tracesSampleRate: 1.0,
|
|
72
|
+
tracesSampleRate: customOpenTelemetry ? undefined : 1.0,
|
|
73
|
+
skipOpenTelemetrySetup: customOpenTelemetry,
|
|
74
|
+
registerEsmLoaderHooks: customOpenTelemetry ? false : undefined,
|
|
61
75
|
includeLocalVariables: false,
|
|
62
76
|
enableLogs: true,
|
|
77
|
+
// Sentry's OpenAI APIPromise wrapper leaks a second rejection when an
|
|
78
|
+
// in-flight request is aborted (for example by an agent budget limit).
|
|
79
|
+
// Keep all other default integrations until the upstream wrapper handles
|
|
80
|
+
// both withResponse() branches without an unhandled rejection.
|
|
81
|
+
integrations(defaultIntegrations) {
|
|
82
|
+
const retained = defaultIntegrations.filter((integration) => integration.name !== "OpenAI" &&
|
|
83
|
+
(!customOpenTelemetry ||
|
|
84
|
+
(integration.name !== "Http" && integration.name !== "NodeFetch")));
|
|
85
|
+
if (!customOpenTelemetry)
|
|
86
|
+
return retained;
|
|
87
|
+
// OTel owns span creation and W3C propagation in custom mode. Keep
|
|
88
|
+
// Sentry's HTTP integration for request isolation, but do not let either
|
|
89
|
+
// Sentry integration create spans or inject a second set of headers.
|
|
90
|
+
return [
|
|
91
|
+
...retained,
|
|
92
|
+
Sentry.httpIntegration({ spans: false, tracePropagation: false }),
|
|
93
|
+
Sentry.nativeNodeFetchIntegration({ tracePropagation: false }),
|
|
94
|
+
];
|
|
95
|
+
},
|
|
63
96
|
beforeSend(event, hint) {
|
|
64
97
|
return sanitizeEvent(event, hint);
|
|
65
98
|
},
|
|
@@ -74,7 +107,7 @@ export function createSentryInitOptions(dsn) {
|
|
|
74
107
|
},
|
|
75
108
|
};
|
|
76
109
|
}
|
|
77
|
-
export function
|
|
110
|
+
export function captureSentryError(error, options) {
|
|
78
111
|
if (options.expected)
|
|
79
112
|
return undefined;
|
|
80
113
|
const exception = error instanceof Error ? error : new Error(String(error));
|
|
@@ -111,6 +144,34 @@ export function reportUserFacingError(error, options) {
|
|
|
111
144
|
return Sentry.captureException(exception);
|
|
112
145
|
});
|
|
113
146
|
}
|
|
147
|
+
export function closeSentry(timeoutMs) {
|
|
148
|
+
return Sentry.close(timeoutMs);
|
|
149
|
+
}
|
|
150
|
+
export function recordSentryCounter(name, value, attributes) {
|
|
151
|
+
Sentry.metrics.count(name, value, { attributes });
|
|
152
|
+
}
|
|
153
|
+
export function recordSentryDistribution(name, value, options) {
|
|
154
|
+
Sentry.metrics.distribution(name, value, options);
|
|
155
|
+
}
|
|
156
|
+
export function recordSentryGauge(name, value, options) {
|
|
157
|
+
Sentry.metrics.gauge(name, value, options);
|
|
158
|
+
}
|
|
159
|
+
export function addSentryBreadcrumb(message, data, options = {}) {
|
|
160
|
+
if (options.log)
|
|
161
|
+
Sentry.logger.info(message, data);
|
|
162
|
+
Sentry.addBreadcrumb({
|
|
163
|
+
category: options.category ?? "agent.lifecycle",
|
|
164
|
+
message,
|
|
165
|
+
level: options.level ?? "info",
|
|
166
|
+
data,
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
export function withSentryRunScope(context, body) {
|
|
170
|
+
return Sentry.withScope((scope) => {
|
|
171
|
+
applyRunScope(scope, context);
|
|
172
|
+
return body();
|
|
173
|
+
});
|
|
174
|
+
}
|
|
114
175
|
function setOptionalTag(scope, key, value) {
|
|
115
176
|
if (value !== undefined)
|
|
116
177
|
scope.setTag(key, value);
|
|
@@ -122,8 +183,9 @@ export function createRunAttributionAttributes(context) {
|
|
|
122
183
|
session_key: context.sessionKey,
|
|
123
184
|
message_id: context.messageId,
|
|
124
185
|
platform: context.platform,
|
|
186
|
+
conversation_kind: context.conversationKind,
|
|
125
187
|
user_id: context.userId,
|
|
126
|
-
|
|
188
|
+
thread_id: context.threadTs,
|
|
127
189
|
provider: context.provider,
|
|
128
190
|
model: context.model,
|
|
129
191
|
});
|
|
@@ -140,29 +202,23 @@ export function registerTraceAttribution(span, attributes) {
|
|
|
140
202
|
expiresAt: now + TRACE_ATTRIBUTION_TTL_MS,
|
|
141
203
|
});
|
|
142
204
|
}
|
|
143
|
-
export function updateActiveSpanAttribution(attributes) {
|
|
144
|
-
const span = Sentry.getActiveSpan();
|
|
145
|
-
if (!span)
|
|
146
|
-
return;
|
|
147
|
-
registerTraceAttribution(span, attributes);
|
|
148
|
-
}
|
|
149
205
|
export function applyRunScope(scope, context) {
|
|
150
206
|
const attributes = createRunAttributionAttributes(context);
|
|
151
207
|
for (const [key, value] of Object.entries(attributes)) {
|
|
152
208
|
scope.setTag(key, value);
|
|
153
209
|
}
|
|
154
210
|
scope.setAttributes(attributes);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
});
|
|
211
|
+
// Agent Monitoring groups spans by the platform session identifier.
|
|
212
|
+
scope.setUser({ id: String(attributes.user_id) });
|
|
213
|
+
scope.setConversationId(String(attributes.session_key));
|
|
159
214
|
scope.setContext("agent_run", {
|
|
160
|
-
conversationId:
|
|
161
|
-
channelId:
|
|
162
|
-
sessionKey:
|
|
163
|
-
messageId:
|
|
164
|
-
|
|
215
|
+
conversationId: attributes.conversation_id,
|
|
216
|
+
channelId: attributes.channel_id,
|
|
217
|
+
sessionKey: attributes.session_key,
|
|
218
|
+
messageId: attributes.message_id,
|
|
219
|
+
threadId: attributes.thread_id,
|
|
165
220
|
platform: context.platform,
|
|
221
|
+
conversationKind: context.conversationKind,
|
|
166
222
|
provider: context.provider,
|
|
167
223
|
model: context.model,
|
|
168
224
|
});
|
|
@@ -173,7 +229,7 @@ export function metricAttributes(attributes) {
|
|
|
173
229
|
return value !== undefined;
|
|
174
230
|
}));
|
|
175
231
|
}
|
|
176
|
-
|
|
232
|
+
function addLifecycleBreadcrumb(message, data) {
|
|
177
233
|
Sentry.addBreadcrumb({
|
|
178
234
|
category: "agent.lifecycle",
|
|
179
235
|
message,
|
|
@@ -190,29 +246,33 @@ export function sanitizeEvent(event, _hint) {
|
|
|
190
246
|
extra: sanitizeValue(event.extra),
|
|
191
247
|
contexts: sanitizeValue(event.contexts),
|
|
192
248
|
request: sanitizeRequest(event.request),
|
|
193
|
-
|
|
249
|
+
// Keep the identity applyRunScope set so Conversations show who sent each
|
|
250
|
+
// message; drop anything else the SDK may have attached (email, IP).
|
|
251
|
+
user: event.user ? { id: event.user.id, username: event.user.username } : undefined,
|
|
194
252
|
server_name: undefined,
|
|
195
253
|
};
|
|
196
254
|
if (sanitized.message) {
|
|
197
|
-
sanitized.message =
|
|
255
|
+
sanitized.message = sanitizeTelemetryString(sanitized.message);
|
|
198
256
|
}
|
|
199
257
|
if (sanitized.logentry) {
|
|
200
258
|
sanitized.logentry = {
|
|
201
259
|
...sanitized.logentry,
|
|
202
|
-
message: sanitized.logentry.message
|
|
260
|
+
message: sanitized.logentry.message
|
|
261
|
+
? sanitizeTelemetryString(sanitized.logentry.message)
|
|
262
|
+
: undefined,
|
|
203
263
|
};
|
|
204
264
|
}
|
|
205
265
|
if (sanitized.exception?.values) {
|
|
206
266
|
sanitized.exception.values = sanitized.exception.values.map((value) => ({
|
|
207
267
|
...value,
|
|
208
|
-
value: value.value ?
|
|
268
|
+
value: value.value ? sanitizeTelemetryString(value.value) : value.value,
|
|
209
269
|
stacktrace: value.stacktrace
|
|
210
270
|
? {
|
|
211
271
|
...value.stacktrace,
|
|
212
272
|
frames: value.stacktrace.frames?.map((frame) => ({
|
|
213
273
|
...frame,
|
|
214
|
-
filename: frame.filename ?
|
|
215
|
-
abs_path: frame.abs_path ?
|
|
274
|
+
filename: frame.filename ? sanitizeTelemetryString(frame.filename) : frame.filename,
|
|
275
|
+
abs_path: frame.abs_path ? sanitizeTelemetryString(frame.abs_path) : frame.abs_path,
|
|
216
276
|
vars: undefined,
|
|
217
277
|
})),
|
|
218
278
|
}
|
|
@@ -259,7 +319,7 @@ export function sanitizeBreadcrumb(breadcrumb) {
|
|
|
259
319
|
}
|
|
260
320
|
return {
|
|
261
321
|
...breadcrumb,
|
|
262
|
-
message: breadcrumb.message ?
|
|
322
|
+
message: breadcrumb.message ? sanitizeTelemetryString(breadcrumb.message) : breadcrumb.message,
|
|
263
323
|
data: sanitizeValue(breadcrumb.data),
|
|
264
324
|
};
|
|
265
325
|
}
|
|
@@ -272,7 +332,7 @@ export function sanitizeValue(value, key, depth = 0) {
|
|
|
272
332
|
return summarizeValue(value, key);
|
|
273
333
|
}
|
|
274
334
|
if (typeof value === "string") {
|
|
275
|
-
return
|
|
335
|
+
return sanitizeTelemetryString(value);
|
|
276
336
|
}
|
|
277
337
|
if (Array.isArray(value)) {
|
|
278
338
|
return value.slice(0, 20).map((entry) => sanitizeValue(entry, key, depth + 1));
|
|
@@ -326,7 +386,7 @@ function summarizeValue(value, key) {
|
|
|
326
386
|
}
|
|
327
387
|
return `[Redacted ${label}]`;
|
|
328
388
|
}
|
|
329
|
-
function
|
|
389
|
+
export function sanitizeTelemetryString(value) {
|
|
330
390
|
let sanitized = value.replace(new RegExp(ABSOLUTE_PATH_PATTERN, "g"), REDACTED_PATH);
|
|
331
391
|
for (const pattern of TOKEN_PATTERNS) {
|
|
332
392
|
sanitized = sanitized.replace(new RegExp(pattern, "g"), REDACTED);
|
|
@@ -336,4 +396,88 @@ function sanitizeString(value) {
|
|
|
336
396
|
}
|
|
337
397
|
return sanitized;
|
|
338
398
|
}
|
|
399
|
+
/**
|
|
400
|
+
* Subagent outcomes that page. Everything else is a bounded, expected end
|
|
401
|
+
* state the parent model already sees in the tool result: a budget or clock
|
|
402
|
+
* ran out, the caller aborted, or a dependency failed upstream.
|
|
403
|
+
*/
|
|
404
|
+
const UNEXPECTED_SUBAGENT_STATUSES = new Set([
|
|
405
|
+
"failed",
|
|
406
|
+
"invalid_output",
|
|
407
|
+
]);
|
|
408
|
+
/**
|
|
409
|
+
* Record one subagent outcome: a run counter and duration for every status,
|
|
410
|
+
* a lifecycle breadcrumb, and a Sentry error only for statuses in
|
|
411
|
+
* `UNEXPECTED_SUBAGENT_STATUSES`. Fingerprinted on the error's prefix before
|
|
412
|
+
* the first colon so one failure class is one issue regardless of which
|
|
413
|
+
* tool, file, or model message follows it.
|
|
414
|
+
*/
|
|
415
|
+
export function recordSubagentOutcome(report) {
|
|
416
|
+
const attributes = metricAttributes({
|
|
417
|
+
status: report.status,
|
|
418
|
+
profile: report.profile,
|
|
419
|
+
mode: report.mode,
|
|
420
|
+
});
|
|
421
|
+
Sentry.metrics.count("agent.subagent.runs", 1, { attributes });
|
|
422
|
+
if (report.durationMs !== undefined) {
|
|
423
|
+
Sentry.metrics.distribution("agent.subagent.duration", report.durationMs, {
|
|
424
|
+
unit: "millisecond",
|
|
425
|
+
attributes,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
addLifecycleBreadcrumb("agent.subagent.completed", {
|
|
429
|
+
item_id: report.itemId,
|
|
430
|
+
status: report.status,
|
|
431
|
+
profile: report.profile,
|
|
432
|
+
mode: report.mode,
|
|
433
|
+
turns: report.turns,
|
|
434
|
+
tool_calls: report.toolCalls,
|
|
435
|
+
tokens: report.tokens,
|
|
436
|
+
cost_usd: report.costUsd,
|
|
437
|
+
duration_ms: report.durationMs,
|
|
438
|
+
cleanup_pending: report.cleanupPending,
|
|
439
|
+
});
|
|
440
|
+
if (!UNEXPECTED_SUBAGENT_STATUSES.has(report.status))
|
|
441
|
+
return undefined;
|
|
442
|
+
const errorClass = sanitizeTelemetryString((report.error ?? report.status).split(":")[0].trim()).slice(0, MAX_FINGERPRINT_CLASS_LENGTH);
|
|
443
|
+
return captureSentryError(new Error(`Subagent ${report.status}: ${report.error ?? "no error detail"}`), {
|
|
444
|
+
domain: "subagent",
|
|
445
|
+
surface: "subagent_tool",
|
|
446
|
+
operation: "run",
|
|
447
|
+
severity: "error",
|
|
448
|
+
toolName: "subagent",
|
|
449
|
+
fingerprint: ["subagent", report.status, errorClass],
|
|
450
|
+
tags: {
|
|
451
|
+
subagent_status: report.status,
|
|
452
|
+
subagent_profile: report.profile,
|
|
453
|
+
subagent_mode: report.mode,
|
|
454
|
+
cleanup_pending: report.cleanupPending,
|
|
455
|
+
},
|
|
456
|
+
context: {
|
|
457
|
+
itemId: report.itemId,
|
|
458
|
+
error: report.error,
|
|
459
|
+
turns: report.turns,
|
|
460
|
+
toolCalls: report.toolCalls,
|
|
461
|
+
tokens: report.tokens,
|
|
462
|
+
costUsd: report.costUsd,
|
|
463
|
+
durationMs: report.durationMs,
|
|
464
|
+
},
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
/**
|
|
468
|
+
* A subagent that never started: unknown profile, ungranted tool, or a
|
|
469
|
+
* harness rejection. The throw still reaches the parent model as a tool
|
|
470
|
+
* error; this only makes sure it also reaches Sentry.
|
|
471
|
+
*/
|
|
472
|
+
export function reportSubagentLaunchError(error, report) {
|
|
473
|
+
return captureSentryError(error, {
|
|
474
|
+
domain: "subagent",
|
|
475
|
+
surface: "subagent_tool",
|
|
476
|
+
operation: "launch",
|
|
477
|
+
severity: "error",
|
|
478
|
+
toolName: "subagent",
|
|
479
|
+
tags: { subagent_profile: report.profile, subagent_mode: report.mode },
|
|
480
|
+
context: { itemId: report.itemId },
|
|
481
|
+
});
|
|
482
|
+
}
|
|
339
483
|
//# sourceMappingURL=sentry.js.map
|