@xopcai/xopcbot 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -0
- package/README.zh-CN.md +130 -0
- package/dist/__tests__/core.test.d.ts +1 -0
- package/dist/__tests__/core.test.js +72 -0
- package/dist/__tests__/core.test.js.map +1 -0
- package/dist/agent/fallback/__tests__/index.test.d.ts +1 -0
- package/dist/agent/fallback/__tests__/index.test.js +111 -0
- package/dist/agent/fallback/__tests__/index.test.js.map +1 -0
- package/dist/agent/fallback/candidates.d.ts +23 -0
- package/dist/agent/fallback/candidates.js +62 -0
- package/dist/agent/fallback/candidates.js.map +1 -0
- package/dist/agent/fallback/error.d.ts +22 -0
- package/dist/agent/fallback/error.js +27 -0
- package/dist/agent/fallback/error.js.map +1 -0
- package/dist/agent/fallback/index.d.ts +6 -0
- package/dist/agent/fallback/index.js +5 -0
- package/dist/agent/fallback/index.js.map +1 -0
- package/dist/agent/fallback/reason.d.ts +7 -0
- package/dist/agent/fallback/reason.js +78 -0
- package/dist/agent/fallback/reason.js.map +1 -0
- package/dist/agent/fallback/runner.d.ts +22 -0
- package/dist/agent/fallback/runner.js +34 -0
- package/dist/agent/fallback/runner.js.map +1 -0
- package/dist/agent/helpers.d.ts +38 -0
- package/dist/agent/helpers.js +122 -0
- package/dist/agent/helpers.js.map +1 -0
- package/dist/agent/index.d.ts +7 -0
- package/dist/agent/index.js +7 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/memory/compaction.d.ts +63 -0
- package/dist/agent/memory/compaction.js +233 -0
- package/dist/agent/memory/compaction.js.map +1 -0
- package/dist/agent/memory/window.d.ts +29 -0
- package/dist/agent/memory/window.js +64 -0
- package/dist/agent/memory/window.js.map +1 -0
- package/dist/agent/model-manager.d.ts +80 -0
- package/dist/agent/model-manager.js +213 -0
- package/dist/agent/model-manager.js.map +1 -0
- package/dist/agent/prompt/heartbeat.d.ts +97 -0
- package/dist/agent/prompt/heartbeat.js +313 -0
- package/dist/agent/prompt/heartbeat.js.map +1 -0
- package/dist/agent/prompt/index.d.ts +65 -0
- package/dist/agent/prompt/index.js +215 -0
- package/dist/agent/prompt/index.js.map +1 -0
- package/dist/agent/prompt/memory/index.d.ts +37 -0
- package/dist/agent/prompt/memory/index.js +241 -0
- package/dist/agent/prompt/memory/index.js.map +1 -0
- package/dist/agent/prompt/modes.d.ts +44 -0
- package/dist/agent/prompt/modes.js +167 -0
- package/dist/agent/prompt/modes.js.map +1 -0
- package/dist/agent/prompt/safety.d.ts +88 -0
- package/dist/agent/prompt/safety.js +290 -0
- package/dist/agent/prompt/safety.js.map +1 -0
- package/dist/agent/service.d.ts +91 -0
- package/dist/agent/service.js +641 -0
- package/dist/agent/service.js.map +1 -0
- package/dist/agent/session-tracker.d.ts +73 -0
- package/dist/agent/session-tracker.js +137 -0
- package/dist/agent/session-tracker.js.map +1 -0
- package/dist/agent/skills/__tests__/test-framework.test.d.ts +4 -0
- package/dist/agent/skills/__tests__/test-framework.test.js +343 -0
- package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -0
- package/dist/agent/skills/config.d.ts +58 -0
- package/dist/agent/skills/config.js +212 -0
- package/dist/agent/skills/config.js.map +1 -0
- package/dist/agent/skills/index.d.ts +25 -0
- package/dist/agent/skills/index.js +349 -0
- package/dist/agent/skills/index.js.map +1 -0
- package/dist/agent/skills/installer.d.ts +38 -0
- package/dist/agent/skills/installer.js +352 -0
- package/dist/agent/skills/installer.js.map +1 -0
- package/dist/agent/skills/scanner.d.ts +32 -0
- package/dist/agent/skills/scanner.js +265 -0
- package/dist/agent/skills/scanner.js.map +1 -0
- package/dist/agent/skills/test-framework.d.ts +107 -0
- package/dist/agent/skills/test-framework.js +607 -0
- package/dist/agent/skills/test-framework.js.map +1 -0
- package/dist/agent/skills/types.d.ts +181 -0
- package/dist/agent/skills/types.js +7 -0
- package/dist/agent/skills/types.js.map +1 -0
- package/dist/agent/skills/watcher.d.ts +37 -0
- package/dist/agent/skills/watcher.js +124 -0
- package/dist/agent/skills/watcher.js.map +1 -0
- package/dist/agent/tools/communication.d.ts +18 -0
- package/dist/agent/tools/communication.js +56 -0
- package/dist/agent/tools/communication.js.map +1 -0
- package/dist/agent/tools/edit-diff.d.ts +21 -0
- package/dist/agent/tools/edit-diff.js +69 -0
- package/dist/agent/tools/edit-diff.js.map +1 -0
- package/dist/agent/tools/edit.d.ts +13 -0
- package/dist/agent/tools/edit.js +65 -0
- package/dist/agent/tools/edit.js.map +1 -0
- package/dist/agent/tools/find.d.ts +24 -0
- package/dist/agent/tools/find.js +99 -0
- package/dist/agent/tools/find.js.map +1 -0
- package/dist/agent/tools/grep.d.ts +33 -0
- package/dist/agent/tools/grep.js +183 -0
- package/dist/agent/tools/grep.js.map +1 -0
- package/dist/agent/tools/index.d.ts +13 -0
- package/dist/agent/tools/index.js +18 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/tools/list-dir.d.ts +6 -0
- package/dist/agent/tools/list-dir.js +37 -0
- package/dist/agent/tools/list-dir.js.map +1 -0
- package/dist/agent/tools/memory-tool.d.ts +14 -0
- package/dist/agent/tools/memory-tool.js +81 -0
- package/dist/agent/tools/memory-tool.js.map +1 -0
- package/dist/agent/tools/path-utils.d.ts +4 -0
- package/dist/agent/tools/path-utils.js +13 -0
- package/dist/agent/tools/path-utils.js.map +1 -0
- package/dist/agent/tools/read.d.ts +7 -0
- package/dist/agent/tools/read.js +47 -0
- package/dist/agent/tools/read.js.map +1 -0
- package/dist/agent/tools/send-media.d.ts +18 -0
- package/dist/agent/tools/send-media.js +104 -0
- package/dist/agent/tools/send-media.js.map +1 -0
- package/dist/agent/tools/shell.d.ts +13 -0
- package/dist/agent/tools/shell.js +114 -0
- package/dist/agent/tools/shell.js.map +1 -0
- package/dist/agent/tools/truncate.d.ts +36 -0
- package/dist/agent/tools/truncate.js +98 -0
- package/dist/agent/tools/truncate.js.map +1 -0
- package/dist/agent/tools/web.d.ts +14 -0
- package/dist/agent/tools/web.js +109 -0
- package/dist/agent/tools/web.js.map +1 -0
- package/dist/agent/tools/write.d.ts +7 -0
- package/dist/agent/tools/write.js +35 -0
- package/dist/agent/tools/write.js.map +1 -0
- package/dist/agent/types.d.ts +8 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/typing.d.ts +9 -0
- package/dist/agent/typing.js +32 -0
- package/dist/agent/typing.js.map +1 -0
- package/dist/auth/index.d.ts +12 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth/anthropic.d.ts +7 -0
- package/dist/auth/oauth/anthropic.js +89 -0
- package/dist/auth/oauth/anthropic.js.map +1 -0
- package/dist/auth/oauth/github-copilot.d.ts +8 -0
- package/dist/auth/oauth/github-copilot.js +35 -0
- package/dist/auth/oauth/github-copilot.js.map +1 -0
- package/dist/auth/oauth/google-antigravity.d.ts +7 -0
- package/dist/auth/oauth/google-antigravity.js +27 -0
- package/dist/auth/oauth/google-antigravity.js.map +1 -0
- package/dist/auth/oauth/google-gemini-cli.d.ts +7 -0
- package/dist/auth/oauth/google-gemini-cli.js +28 -0
- package/dist/auth/oauth/google-gemini-cli.js.map +1 -0
- package/dist/auth/oauth/index.d.ts +14 -0
- package/dist/auth/oauth/index.js +15 -0
- package/dist/auth/oauth/index.js.map +1 -0
- package/dist/auth/oauth/kimi.d.ts +8 -0
- package/dist/auth/oauth/kimi.js +104 -0
- package/dist/auth/oauth/kimi.js.map +1 -0
- package/dist/auth/oauth/minimax.d.ts +8 -0
- package/dist/auth/oauth/minimax.js +109 -0
- package/dist/auth/oauth/minimax.js.map +1 -0
- package/dist/auth/oauth/openai-codex.d.ts +7 -0
- package/dist/auth/oauth/openai-codex.js +33 -0
- package/dist/auth/oauth/openai-codex.js.map +1 -0
- package/dist/auth/oauth/pkce.d.ts +8 -0
- package/dist/auth/oauth/pkce.js +22 -0
- package/dist/auth/oauth/pkce.js.map +1 -0
- package/dist/auth/oauth/qwen.d.ts +7 -0
- package/dist/auth/oauth/qwen.js +114 -0
- package/dist/auth/oauth/qwen.js.map +1 -0
- package/dist/auth/oauth/types.d.ts +46 -0
- package/dist/auth/oauth/types.js +7 -0
- package/dist/auth/oauth/types.js.map +1 -0
- package/dist/auth/profiles/index.d.ts +16 -0
- package/dist/auth/profiles/index.js +17 -0
- package/dist/auth/profiles/index.js.map +1 -0
- package/dist/auth/profiles/oauth.d.ts +12 -0
- package/dist/auth/profiles/oauth.js +106 -0
- package/dist/auth/profiles/oauth.js.map +1 -0
- package/dist/auth/profiles/order.d.ts +19 -0
- package/dist/auth/profiles/order.js +63 -0
- package/dist/auth/profiles/order.js.map +1 -0
- package/dist/auth/profiles/profiles.d.ts +27 -0
- package/dist/auth/profiles/profiles.js +110 -0
- package/dist/auth/profiles/profiles.js.map +1 -0
- package/dist/auth/profiles/store.d.ts +17 -0
- package/dist/auth/profiles/store.js +234 -0
- package/dist/auth/profiles/store.js.map +1 -0
- package/dist/auth/profiles/types.d.ts +64 -0
- package/dist/auth/profiles/types.js +7 -0
- package/dist/auth/profiles/types.js.map +1 -0
- package/dist/auth/profiles/usage.d.ts +24 -0
- package/dist/auth/profiles/usage.js +99 -0
- package/dist/auth/profiles/usage.js.map +1 -0
- package/dist/auth/storage.d.ts +99 -0
- package/dist/auth/storage.js +315 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/bus/index.d.ts +3 -0
- package/dist/bus/index.js +2 -0
- package/dist/bus/index.js.map +1 -0
- package/dist/bus/queue.d.ts +20 -0
- package/dist/bus/queue.js +57 -0
- package/dist/bus/queue.js.map +1 -0
- package/dist/channels/__tests__/access-control.test.d.ts +4 -0
- package/dist/channels/__tests__/access-control.test.js +310 -0
- package/dist/channels/__tests__/access-control.test.js.map +1 -0
- package/dist/channels/__tests__/draft-stream.test.d.ts +4 -0
- package/dist/channels/__tests__/draft-stream.test.js +243 -0
- package/dist/channels/__tests__/draft-stream.test.js.map +1 -0
- package/dist/channels/__tests__/format.test.d.ts +4 -0
- package/dist/channels/__tests__/format.test.js +146 -0
- package/dist/channels/__tests__/format.test.js.map +1 -0
- package/dist/channels/__tests__/manager.test.d.ts +6 -0
- package/dist/channels/__tests__/manager.test.js +34 -0
- package/dist/channels/__tests__/manager.test.js.map +1 -0
- package/dist/channels/__tests__/typing-controller.test.d.ts +4 -0
- package/dist/channels/__tests__/typing-controller.test.js +109 -0
- package/dist/channels/__tests__/typing-controller.test.js.map +1 -0
- package/dist/channels/__tests__/update-offset-store.test.d.ts +7 -0
- package/dist/channels/__tests__/update-offset-store.test.js +35 -0
- package/dist/channels/__tests__/update-offset-store.test.js.map +1 -0
- package/dist/channels/access-control.d.ts +93 -0
- package/dist/channels/access-control.js +201 -0
- package/dist/channels/access-control.js.map +1 -0
- package/dist/channels/draft-stream.d.ts +55 -0
- package/dist/channels/draft-stream.js +211 -0
- package/dist/channels/draft-stream.js.map +1 -0
- package/dist/channels/format.d.ts +38 -0
- package/dist/channels/format.js +187 -0
- package/dist/channels/format.js.map +1 -0
- package/dist/channels/index.d.ts +22 -0
- package/dist/channels/index.js +23 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/manager.d.ts +30 -0
- package/dist/channels/manager.js +125 -0
- package/dist/channels/manager.js.map +1 -0
- package/dist/channels/telegram/__tests__/index.test.d.ts +4 -0
- package/dist/channels/telegram/__tests__/index.test.js +153 -0
- package/dist/channels/telegram/__tests__/index.test.js.map +1 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.d.ts +4 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.js +99 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.js.map +1 -0
- package/dist/channels/telegram/client.d.ts +48 -0
- package/dist/channels/telegram/client.js +177 -0
- package/dist/channels/telegram/client.js.map +1 -0
- package/dist/channels/telegram/command-handler.d.ts +28 -0
- package/dist/channels/telegram/command-handler.js +209 -0
- package/dist/channels/telegram/command-handler.js.map +1 -0
- package/dist/channels/telegram/index.d.ts +8 -0
- package/dist/channels/telegram/index.js +9 -0
- package/dist/channels/telegram/index.js.map +1 -0
- package/dist/channels/telegram/inline-keyboards.d.ts +20 -0
- package/dist/channels/telegram/inline-keyboards.js +38 -0
- package/dist/channels/telegram/inline-keyboards.js.map +1 -0
- package/dist/channels/telegram/plugin.d.ts +33 -0
- package/dist/channels/telegram/plugin.js +640 -0
- package/dist/channels/telegram/plugin.js.map +1 -0
- package/dist/channels/telegram/webhook.d.ts +31 -0
- package/dist/channels/telegram/webhook.js +129 -0
- package/dist/channels/telegram/webhook.js.map +1 -0
- package/dist/channels/types.d.ts +186 -0
- package/dist/channels/types.js +7 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/typing-controller.d.ts +47 -0
- package/dist/channels/typing-controller.js +117 -0
- package/dist/channels/typing-controller.js.map +1 -0
- package/dist/channels/update-offset-store.d.ts +37 -0
- package/dist/channels/update-offset-store.js +165 -0
- package/dist/channels/update-offset-store.js.map +1 -0
- package/dist/channels/whatsapp/index.d.ts +4 -0
- package/dist/channels/whatsapp/index.js +5 -0
- package/dist/channels/whatsapp/index.js.map +1 -0
- package/dist/channels/whatsapp/plugin.d.ts +27 -0
- package/dist/channels/whatsapp/plugin.js +66 -0
- package/dist/channels/whatsapp/plugin.js.map +1 -0
- package/dist/cli/__tests__/registry.test.d.ts +1 -0
- package/dist/cli/__tests__/registry.test.js +366 -0
- package/dist/cli/__tests__/registry.test.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +1 -0
- package/dist/cli/commands/agent.js +216 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +6 -0
- package/dist/cli/commands/auth.js +440 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +1 -0
- package/dist/cli/commands/config.js +135 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +1 -0
- package/dist/cli/commands/configure.js +173 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/cron.d.ts +1 -0
- package/dist/cli/commands/cron.js +81 -0
- package/dist/cli/commands/cron.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +1 -0
- package/dist/cli/commands/gateway.js +91 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/index.d.ts +0 -0
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/models.d.ts +1 -0
- package/dist/cli/commands/models.js +79 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +1 -0
- package/dist/cli/commands/onboard.js +621 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +1 -0
- package/dist/cli/commands/plugin.js +341 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/session.d.ts +1 -0
- package/dist/cli/commands/session.js +450 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/skills-test.d.ts +9 -0
- package/dist/cli/commands/skills-test.js +195 -0
- package/dist/cli/commands/skills-test.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +9 -0
- package/dist/cli/commands/skills.js +385 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/index.d.ts +19 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/registry.d.ts +43 -0
- package/dist/cli/registry.js +82 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/templates.d.ts +19 -0
- package/dist/cli/templates.js +191 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/cli/utils/colors.d.ts +13 -0
- package/dist/cli/utils/colors.js +16 -0
- package/dist/cli/utils/colors.js.map +1 -0
- package/dist/config/__tests__/diff.test.d.ts +1 -0
- package/dist/config/__tests__/diff.test.js +192 -0
- package/dist/config/__tests__/diff.test.js.map +1 -0
- package/dist/config/__tests__/loader.test.d.ts +1 -0
- package/dist/config/__tests__/loader.test.js +356 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/__tests__/paths.test.d.ts +1 -0
- package/dist/config/__tests__/paths.test.js +192 -0
- package/dist/config/__tests__/paths.test.js.map +1 -0
- package/dist/config/__tests__/reload.test.d.ts +1 -0
- package/dist/config/__tests__/reload.test.js +374 -0
- package/dist/config/__tests__/reload.test.js.map +1 -0
- package/dist/config/__tests__/rules.test.d.ts +1 -0
- package/dist/config/__tests__/rules.test.js +204 -0
- package/dist/config/__tests__/rules.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +1 -0
- package/dist/config/__tests__/schema.test.js +672 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/diff.d.ts +7 -0
- package/dist/config/diff.js +46 -0
- package/dist/config/diff.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +5 -0
- package/dist/config/loader.js +81 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +35 -0
- package/dist/config/paths.js +79 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/reload.d.ts +78 -0
- package/dist/config/reload.js +190 -0
- package/dist/config/reload.js.map +1 -0
- package/dist/config/rules.d.ts +42 -0
- package/dist/config/rules.js +114 -0
- package/dist/config/rules.js.map +1 -0
- package/dist/config/schema.d.ts +1340 -0
- package/dist/config/schema.js +611 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/cron/executor.d.ts +54 -0
- package/dist/cron/executor.js +364 -0
- package/dist/cron/executor.js.map +1 -0
- package/dist/cron/index.d.ts +5 -0
- package/dist/cron/index.js +6 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron/persistence.d.ts +61 -0
- package/dist/cron/persistence.js +188 -0
- package/dist/cron/persistence.js.map +1 -0
- package/dist/cron/service.d.ts +94 -0
- package/dist/cron/service.js +382 -0
- package/dist/cron/service.js.map +1 -0
- package/dist/cron/types.d.ts +119 -0
- package/dist/cron/types.js +3 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/cron/validation.d.ts +144 -0
- package/dist/cron/validation.js +113 -0
- package/dist/cron/validation.js.map +1 -0
- package/dist/errors/__tests__/index.test.d.ts +1 -0
- package/dist/errors/__tests__/index.test.js +301 -0
- package/dist/errors/__tests__/index.test.js.map +1 -0
- package/dist/errors/index.d.ts +114 -0
- package/dist/errors/index.js +278 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/gateway/hono/app.d.ts +7 -0
- package/dist/gateway/hono/app.js +668 -0
- package/dist/gateway/hono/app.js.map +1 -0
- package/dist/gateway/hono/index.d.ts +2 -0
- package/dist/gateway/hono/index.js +3 -0
- package/dist/gateway/hono/index.js.map +1 -0
- package/dist/gateway/hono/middleware/auth.d.ts +18 -0
- package/dist/gateway/hono/middleware/auth.js +79 -0
- package/dist/gateway/hono/middleware/auth.js.map +1 -0
- package/dist/gateway/hono/middleware/logger.d.ts +1 -0
- package/dist/gateway/hono/middleware/logger.js +17 -0
- package/dist/gateway/hono/middleware/logger.js.map +1 -0
- package/dist/gateway/hono/sse.d.ts +55 -0
- package/dist/gateway/hono/sse.js +224 -0
- package/dist/gateway/hono/sse.js.map +1 -0
- package/dist/gateway/index.d.ts +4 -0
- package/dist/gateway/index.js +5 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/protocol.d.ts +28 -0
- package/dist/gateway/protocol.js +14 -0
- package/dist/gateway/protocol.js.map +1 -0
- package/dist/gateway/server.d.ts +19 -0
- package/dist/gateway/server.js +64 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/service.d.ts +265 -0
- package/dist/gateway/service.js +621 -0
- package/dist/gateway/service.js.map +1 -0
- package/dist/gateway/static/root/assets/main-CfIxL-cL.js +2105 -0
- package/dist/gateway/static/root/assets/main-CfIxL-cL.js.map +1 -0
- package/dist/gateway/static/root/assets/main-DndcTCgX.css +1 -0
- package/dist/gateway/static/root/index.html +116 -0
- package/dist/heartbeat/index.d.ts +1 -0
- package/dist/heartbeat/index.js +2 -0
- package/dist/heartbeat/index.js.map +1 -0
- package/dist/heartbeat/service.d.ts +19 -0
- package/dist/heartbeat/service.js +61 -0
- package/dist/heartbeat/service.js.map +1 -0
- package/dist/plugin-sdk/index.d.ts +21 -0
- package/dist/plugin-sdk/index.js +12 -0
- package/dist/plugin-sdk/index.js.map +1 -0
- package/dist/plugins/__tests__/api.test.d.ts +1 -0
- package/dist/plugins/__tests__/api.test.js +164 -0
- package/dist/plugins/__tests__/api.test.js.map +1 -0
- package/dist/plugins/__tests__/hooks.test.d.ts +1 -0
- package/dist/plugins/__tests__/hooks.test.js +159 -0
- package/dist/plugins/__tests__/hooks.test.js.map +1 -0
- package/dist/plugins/__tests__/loader.test.d.ts +1 -0
- package/dist/plugins/__tests__/loader.test.js +120 -0
- package/dist/plugins/__tests__/loader.test.js.map +1 -0
- package/dist/plugins/api.d.ts +41 -0
- package/dist/plugins/api.js +131 -0
- package/dist/plugins/api.js.map +1 -0
- package/dist/plugins/hooks.d.ts +153 -0
- package/dist/plugins/hooks.js +172 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.js +16 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/install.d.ts +59 -0
- package/dist/plugins/install.js +324 -0
- package/dist/plugins/install.js.map +1 -0
- package/dist/plugins/loader.d.ts +84 -0
- package/dist/plugins/loader.js +545 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +190 -0
- package/dist/plugins/types.js +7 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/__tests__/registry.test.d.ts +1 -0
- package/dist/providers/__tests__/registry.test.js +110 -0
- package/dist/providers/__tests__/registry.test.js.map +1 -0
- package/dist/providers/api-strategies.d.ts +15 -0
- package/dist/providers/api-strategies.js +96 -0
- package/dist/providers/api-strategies.js.map +1 -0
- package/dist/providers/auto-discovery.d.ts +84 -0
- package/dist/providers/auto-discovery.js +236 -0
- package/dist/providers/auto-discovery.js.map +1 -0
- package/dist/providers/config.d.ts +25 -0
- package/dist/providers/config.js +42 -0
- package/dist/providers/config.js.map +1 -0
- package/dist/providers/index.d.ts +25 -0
- package/dist/providers/index.js +55 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/model-catalog.d.ts +205 -0
- package/dist/providers/model-catalog.js +1071 -0
- package/dist/providers/model-catalog.js.map +1 -0
- package/dist/providers/models-dev-data.d.ts +11 -0
- package/dist/providers/models-dev-data.js +1035 -0
- package/dist/providers/models-dev-data.js.map +1 -0
- package/dist/providers/models-dev.d.ts +30 -0
- package/dist/providers/models-dev.js +42 -0
- package/dist/providers/models-dev.js.map +1 -0
- package/dist/providers/pi-ai.d.ts +62 -0
- package/dist/providers/pi-ai.js +221 -0
- package/dist/providers/pi-ai.js.map +1 -0
- package/dist/providers/provider-catalog.d.ts +173 -0
- package/dist/providers/provider-catalog.js +834 -0
- package/dist/providers/provider-catalog.js.map +1 -0
- package/dist/providers/registry.d.ts +155 -0
- package/dist/providers/registry.js +524 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +95 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/session/chat-manager.d.ts +49 -0
- package/dist/session/chat-manager.js +167 -0
- package/dist/session/chat-manager.js.map +1 -0
- package/dist/session/chat-types.d.ts +53 -0
- package/dist/session/chat-types.js +63 -0
- package/dist/session/chat-types.js.map +1 -0
- package/dist/session/index.d.ts +5 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +103 -0
- package/dist/session/manager.js +200 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/store.d.ts +114 -0
- package/dist/session/store.js +687 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +88 -0
- package/dist/session/types.js +10 -0
- package/dist/session/types.js.map +1 -0
- package/dist/types/index.d.ts +177 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/providers.d.ts +67 -0
- package/dist/types/providers.js +7 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +17 -0
- package/dist/utils/frontmatter.js +104 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/helpers.d.ts +5 -0
- package/dist/utils/helpers.js +36 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/log-store.d.ts +78 -0
- package/dist/utils/log-store.js +432 -0
- package/dist/utils/log-store.js.map +1 -0
- package/dist/utils/logger.d.ts +127 -0
- package/dist/utils/logger.js +481 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/logger.types.d.ts +152 -0
- package/dist/utils/logger.types.js +30 -0
- package/dist/utils/logger.types.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function createTypingController(params) {
|
|
2
|
+
const { onStart, onStop, intervalSeconds = 5 } = params;
|
|
3
|
+
let typingTimer = null;
|
|
4
|
+
let stopped = false;
|
|
5
|
+
const start = () => {
|
|
6
|
+
if (stopped)
|
|
7
|
+
return;
|
|
8
|
+
if (typingTimer)
|
|
9
|
+
return;
|
|
10
|
+
onStart();
|
|
11
|
+
typingTimer = setInterval(() => {
|
|
12
|
+
if (stopped) {
|
|
13
|
+
stop();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
onStart();
|
|
17
|
+
}
|
|
18
|
+
}, intervalSeconds * 1000);
|
|
19
|
+
};
|
|
20
|
+
const stop = () => {
|
|
21
|
+
if (typingTimer) {
|
|
22
|
+
clearInterval(typingTimer);
|
|
23
|
+
typingTimer = null;
|
|
24
|
+
}
|
|
25
|
+
if (!stopped) {
|
|
26
|
+
onStop();
|
|
27
|
+
}
|
|
28
|
+
stopped = true;
|
|
29
|
+
};
|
|
30
|
+
return { start, stop };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=typing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typing.js","sourceRoot":"","sources":["../../src/agent/typing.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,sBAAsB,CAAC,MAItC;IACC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IACxD,IAAI,WAAW,GAA0B,IAAI,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,WAAW;YAAE,OAAO;QAExB,OAAO,EAAE,CAAC;QACV,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,CAAC,WAAW,CAAC,CAAC;YAC3B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;QACX,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Module
|
|
3
|
+
*
|
|
4
|
+
* Authentication storage and management.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - AuthStorage: Simple credential storage
|
|
8
|
+
* - Auth Profiles: Advanced profile management with OAuth, round-robin, cooldown
|
|
9
|
+
*/
|
|
10
|
+
export { AuthStorage, type AuthEntry, type AuthStorageOptions } from './storage.js';
|
|
11
|
+
export * from './oauth/index.js';
|
|
12
|
+
export * from './profiles/index.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Module
|
|
3
|
+
*
|
|
4
|
+
* Authentication storage and management.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - AuthStorage: Simple credential storage
|
|
8
|
+
* - Auth Profiles: Advanced profile management with OAuth, round-robin, cooldown
|
|
9
|
+
*/
|
|
10
|
+
export { AuthStorage } from './storage.js';
|
|
11
|
+
export * from './oauth/index.js';
|
|
12
|
+
// Auth Profiles (new architecture based on openclaw)
|
|
13
|
+
export * from './profiles/index.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,WAAW,EAA2C,MAAM,cAAc,CAAC;AACpF,cAAc,kBAAkB,CAAC;AAEjC,qDAAqD;AACrD,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic OAuth flow (Claude Pro/Max)
|
|
3
|
+
*/
|
|
4
|
+
import type { OAuthCredentials, OAuthProviderInterface } from './types.js';
|
|
5
|
+
export declare function loginAnthropic(onAuthUrl: (url: string) => void, onPromptCode: () => Promise<string>): Promise<OAuthCredentials>;
|
|
6
|
+
export declare function refreshAnthropicToken(refreshToken: string): Promise<OAuthCredentials>;
|
|
7
|
+
export declare const anthropicOAuthProvider: OAuthProviderInterface;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic OAuth flow (Claude Pro/Max)
|
|
3
|
+
*/
|
|
4
|
+
import { generatePKCE } from './pkce.js';
|
|
5
|
+
const decode = (s) => atob(s);
|
|
6
|
+
const CLIENT_ID = decode("OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl");
|
|
7
|
+
const AUTHORIZE_URL = "https://claude.ai/oauth/authorize";
|
|
8
|
+
const TOKEN_URL = "https://console.anthropic.com/v1/oauth/token";
|
|
9
|
+
const REDIRECT_URI = "https://console.anthropic.com/oauth/code/callback";
|
|
10
|
+
const SCOPES = "org:create_api_key user:profile user:inference";
|
|
11
|
+
export async function loginAnthropic(onAuthUrl, onPromptCode) {
|
|
12
|
+
const { verifier, challenge } = await generatePKCE();
|
|
13
|
+
const authParams = new URLSearchParams({
|
|
14
|
+
code: "true",
|
|
15
|
+
client_id: CLIENT_ID,
|
|
16
|
+
response_type: "code",
|
|
17
|
+
redirect_uri: REDIRECT_URI,
|
|
18
|
+
scope: SCOPES,
|
|
19
|
+
code_challenge: challenge,
|
|
20
|
+
code_challenge_method: "S256",
|
|
21
|
+
state: verifier,
|
|
22
|
+
});
|
|
23
|
+
const authUrl = `${AUTHORIZE_URL}?${authParams.toString()}`;
|
|
24
|
+
onAuthUrl(authUrl);
|
|
25
|
+
const authCode = await onPromptCode();
|
|
26
|
+
const splits = authCode.split("#");
|
|
27
|
+
const code = splits[0];
|
|
28
|
+
const state = splits[1];
|
|
29
|
+
const tokenResponse = await fetch(TOKEN_URL, {
|
|
30
|
+
method: "POST",
|
|
31
|
+
headers: {
|
|
32
|
+
"Content-Type": "application/json",
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({
|
|
35
|
+
grant_type: "authorization_code",
|
|
36
|
+
client_id: CLIENT_ID,
|
|
37
|
+
code: code,
|
|
38
|
+
state: state,
|
|
39
|
+
redirect_uri: REDIRECT_URI,
|
|
40
|
+
code_verifier: verifier,
|
|
41
|
+
}),
|
|
42
|
+
});
|
|
43
|
+
if (!tokenResponse.ok) {
|
|
44
|
+
const error = await tokenResponse.text();
|
|
45
|
+
throw new Error(`Token exchange failed: ${error}`);
|
|
46
|
+
}
|
|
47
|
+
const tokenData = (await tokenResponse.json());
|
|
48
|
+
const expiresAt = Date.now() + tokenData.expires_in * 1000 - 5 * 60 * 1000;
|
|
49
|
+
return {
|
|
50
|
+
refresh: tokenData.refresh_token,
|
|
51
|
+
access: tokenData.access_token,
|
|
52
|
+
expires: expiresAt,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export async function refreshAnthropicToken(refreshToken) {
|
|
56
|
+
const response = await fetch(TOKEN_URL, {
|
|
57
|
+
method: "POST",
|
|
58
|
+
headers: { "Content-Type": "application/json" },
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
grant_type: "refresh_token",
|
|
61
|
+
client_id: CLIENT_ID,
|
|
62
|
+
refresh_token: refreshToken,
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
const error = await response.text();
|
|
67
|
+
throw new Error(`Anthropic token refresh failed: ${error}`);
|
|
68
|
+
}
|
|
69
|
+
const data = (await response.json());
|
|
70
|
+
return {
|
|
71
|
+
refresh: data.refresh_token,
|
|
72
|
+
access: data.access_token,
|
|
73
|
+
expires: Date.now() + data.expires_in * 1000 - 5 * 60 * 1000,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export const anthropicOAuthProvider = {
|
|
77
|
+
id: "anthropic",
|
|
78
|
+
name: "Anthropic (Claude Pro/Max)",
|
|
79
|
+
async login(callbacks) {
|
|
80
|
+
return loginAnthropic((url) => callbacks.onAuth({ url }), () => callbacks.onPrompt({ message: "Paste the authorization code:" }));
|
|
81
|
+
},
|
|
82
|
+
async refreshToken(credentials) {
|
|
83
|
+
return refreshAnthropicToken(credentials.refresh);
|
|
84
|
+
},
|
|
85
|
+
getApiKey(credentials) {
|
|
86
|
+
return credentials.access;
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/auth/oauth/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth authentication for GitHub Copilot.
|
|
5
|
+
* Uses device code flow for authentication.
|
|
6
|
+
*/
|
|
7
|
+
import type { OAuthProviderInterface } from './types.js';
|
|
8
|
+
export declare const githubCopilotOAuthProvider: OAuthProviderInterface;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub Copilot OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth authentication for GitHub Copilot.
|
|
5
|
+
* Uses device code flow for authentication.
|
|
6
|
+
*/
|
|
7
|
+
export const githubCopilotOAuthProvider = {
|
|
8
|
+
id: 'github-copilot',
|
|
9
|
+
name: 'GitHub Copilot',
|
|
10
|
+
usesCallbackServer: false,
|
|
11
|
+
async login(callbacks) {
|
|
12
|
+
const { loginGitHubCopilot } = await import('@mariozechner/pi-ai');
|
|
13
|
+
const creds = await loginGitHubCopilot({
|
|
14
|
+
onAuth: (url, instructions) => {
|
|
15
|
+
callbacks.onAuth({ url, instructions });
|
|
16
|
+
},
|
|
17
|
+
onPrompt: async (prompt) => callbacks.onPrompt(prompt),
|
|
18
|
+
onProgress: (msg) => callbacks.onProgress?.(msg),
|
|
19
|
+
signal: callbacks.signal,
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
access: creds.access,
|
|
23
|
+
refresh: creds.refresh,
|
|
24
|
+
expires: creds.expires,
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
async refreshToken(_credentials) {
|
|
28
|
+
// GitHub Copilot tokens don't support refresh
|
|
29
|
+
throw new Error('GitHub Copilot tokens do not support refresh. Please re-authenticate.');
|
|
30
|
+
},
|
|
31
|
+
getApiKey(credentials) {
|
|
32
|
+
return credentials.access;
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=github-copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-copilot.js","sourceRoot":"","sources":["../../../src/auth/oauth/github-copilot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAA2B;IACjE,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,gBAAgB;IACtB,kBAAkB,EAAE,KAAK;IAEzB,KAAK,CAAC,KAAK,CAAC,SAA8B;QACzC,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC;YACtC,MAAM,EAAE,CAAC,GAAW,EAAE,YAAqB,EAAE,EAAE;gBAC9C,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;YAChD,MAAM,EAAE,SAAS,CAAC,MAAM;SACxB,CAAC,CAAC;QAEH,OAAO;YACN,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAA8B;QAChD,8CAA8C;QAC9C,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC1F,CAAC;IAED,SAAS,CAAC,WAA6B;QACtC,OAAO,WAAW,CAAC,MAAM,CAAC;IAC3B,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Antigravity OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth authentication for Google Antigravity (Gemini 3, Claude, GPT-OSS).
|
|
5
|
+
*/
|
|
6
|
+
export const googleAntigravityOAuthProvider = {
|
|
7
|
+
id: 'google-antigravity',
|
|
8
|
+
name: 'Google Antigravity',
|
|
9
|
+
usesCallbackServer: true,
|
|
10
|
+
async login(callbacks) {
|
|
11
|
+
const { loginAntigravity } = await import('@mariozechner/pi-ai');
|
|
12
|
+
const creds = await loginAntigravity((info) => callbacks.onAuth(info), (msg) => callbacks.onProgress?.(msg), callbacks.onManualCodeInput);
|
|
13
|
+
return {
|
|
14
|
+
access: creds.access,
|
|
15
|
+
refresh: creds.refresh,
|
|
16
|
+
expires: creds.expires,
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
async refreshToken(credentials) {
|
|
20
|
+
const { refreshOAuthToken } = await import('@mariozechner/pi-ai');
|
|
21
|
+
return refreshOAuthToken('google-antigravity', credentials);
|
|
22
|
+
},
|
|
23
|
+
getApiKey(credentials) {
|
|
24
|
+
return credentials.access;
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=google-antigravity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-antigravity.js","sourceRoot":"","sources":["../../../src/auth/oauth/google-antigravity.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,8BAA8B,GAA2B;IACrE,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,oBAAoB;IAC1B,kBAAkB,EAAE,IAAI;IAExB,KAAK,CAAC,KAAK,CAAC,SAA8B;QACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CACnC,CAAC,IAA4C,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EACxE,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAC5C,SAAS,CAAC,iBAAiB,CAC3B,CAAC;QAEF,OAAO;YACN,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA6B;QAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAClE,OAAO,iBAAiB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,SAAS,CAAC,WAA6B;QACtC,OAAO,WAAW,CAAC,MAAM,CAAC;IAC3B,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini CLI OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth authentication for Google Gemini CLI (Cloud Code Assist).
|
|
5
|
+
*/
|
|
6
|
+
// Use dynamic import to avoid type issues
|
|
7
|
+
export const googleGeminiCliOAuthProvider = {
|
|
8
|
+
id: 'google-gemini-cli',
|
|
9
|
+
name: 'Google Gemini CLI',
|
|
10
|
+
usesCallbackServer: true,
|
|
11
|
+
async login(callbacks) {
|
|
12
|
+
const { loginGeminiCli } = await import('@mariozechner/pi-ai');
|
|
13
|
+
const creds = await loginGeminiCli((info) => callbacks.onAuth(info), (msg) => callbacks.onProgress?.(msg), callbacks.onManualCodeInput);
|
|
14
|
+
return {
|
|
15
|
+
access: creds.access,
|
|
16
|
+
refresh: creds.refresh,
|
|
17
|
+
expires: creds.expires,
|
|
18
|
+
};
|
|
19
|
+
},
|
|
20
|
+
async refreshToken(credentials) {
|
|
21
|
+
const { refreshOAuthToken } = await import('@mariozechner/pi-ai');
|
|
22
|
+
return refreshOAuthToken('google-gemini-cli', credentials);
|
|
23
|
+
},
|
|
24
|
+
getApiKey(credentials) {
|
|
25
|
+
return credentials.access;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=google-gemini-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-gemini-cli.js","sourceRoot":"","sources":["../../../src/auth/oauth/google-gemini-cli.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,4BAA4B,GAA2B;IACnE,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,mBAAmB;IACzB,kBAAkB,EAAE,IAAI;IAExB,KAAK,CAAC,KAAK,CAAC,SAA8B;QACzC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,MAAM,cAAc,CACjC,CAAC,IAA4C,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EACxE,CAAC,GAAW,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAC5C,SAAS,CAAC,iBAAiB,CAC3B,CAAC;QAEF,OAAO;YACN,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA6B;QAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAClE,OAAO,iBAAiB,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAC5D,CAAC;IAED,SAAS,CAAC,WAA6B;QACtC,OAAO,WAAW,CAAC,MAAM,CAAC;IAC3B,CAAC;CACD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Providers Index
|
|
3
|
+
*
|
|
4
|
+
* Export all OAuth providers.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './anthropic.js';
|
|
8
|
+
export * from './qwen.js';
|
|
9
|
+
export * from './minimax.js';
|
|
10
|
+
export * from './kimi.js';
|
|
11
|
+
export * from './github-copilot.js';
|
|
12
|
+
export * from './google-gemini-cli.js';
|
|
13
|
+
export * from './google-antigravity.js';
|
|
14
|
+
export * from './openai-codex.js';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Providers Index
|
|
3
|
+
*
|
|
4
|
+
* Export all OAuth providers.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export * from './anthropic.js';
|
|
8
|
+
export * from './qwen.js';
|
|
9
|
+
export * from './minimax.js';
|
|
10
|
+
export * from './kimi.js';
|
|
11
|
+
export * from './github-copilot.js';
|
|
12
|
+
export * from './google-gemini-cli.js';
|
|
13
|
+
export * from './google-antigravity.js';
|
|
14
|
+
export * from './openai-codex.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/oauth/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kimi (Moonshot AI) OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth 2.0 authentication for Kimi Platform.
|
|
5
|
+
* https://platform.moonshot.cn/
|
|
6
|
+
*/
|
|
7
|
+
const KIMI_OAUTH_BASE_URL = 'https://platform.moonshot.cn';
|
|
8
|
+
const KIMI_OAUTH_AUTHORIZE_URL = `${KIMI_OAUTH_BASE_URL}/oauth/authorize`;
|
|
9
|
+
const KIMI_OAUTH_TOKEN_URL = `${KIMI_OAUTH_BASE_URL}/oauth/token`;
|
|
10
|
+
const KIMI_OAUTH_CLIENT_ID = 'your_client_id'; // Users need to register their own app
|
|
11
|
+
export const kimiOAuthProvider = {
|
|
12
|
+
id: 'kimi',
|
|
13
|
+
name: 'Kimi (月之暗面)',
|
|
14
|
+
usesCallbackServer: true,
|
|
15
|
+
async login(callbacks) {
|
|
16
|
+
// Kimi uses authorization code flow with PKCE
|
|
17
|
+
const codeVerifier = generateCodeVerifier();
|
|
18
|
+
const codeChallenge = await generateCodeChallenge(codeVerifier);
|
|
19
|
+
const authUrl = new URL(KIMI_OAUTH_AUTHORIZE_URL);
|
|
20
|
+
authUrl.searchParams.set('client_id', KIMI_OAUTH_CLIENT_ID);
|
|
21
|
+
authUrl.searchParams.set('redirect_uri', 'http://localhost:3000/callback');
|
|
22
|
+
authUrl.searchParams.set('response_type', 'code');
|
|
23
|
+
authUrl.searchParams.set('scope', 'api');
|
|
24
|
+
authUrl.searchParams.set('code_challenge', codeChallenge);
|
|
25
|
+
authUrl.searchParams.set('code_challenge_method', 'S256');
|
|
26
|
+
callbacks.onAuth({
|
|
27
|
+
url: authUrl.toString(),
|
|
28
|
+
instructions: 'Please authorize the application and enter the code shown.',
|
|
29
|
+
});
|
|
30
|
+
const code = await callbacks.onPrompt({
|
|
31
|
+
message: 'Enter the authorization code:',
|
|
32
|
+
});
|
|
33
|
+
const tokenResponse = await fetch(KIMI_OAUTH_TOKEN_URL, {
|
|
34
|
+
method: 'POST',
|
|
35
|
+
headers: {
|
|
36
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
37
|
+
},
|
|
38
|
+
body: new URLSearchParams({
|
|
39
|
+
grant_type: 'authorization_code',
|
|
40
|
+
client_id: KIMI_OAUTH_CLIENT_ID,
|
|
41
|
+
code,
|
|
42
|
+
redirect_uri: 'http://localhost:3000/callback',
|
|
43
|
+
code_verifier: codeVerifier,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
if (!tokenResponse.ok) {
|
|
47
|
+
const error = await tokenResponse.text();
|
|
48
|
+
throw new Error(`Token exchange failed: ${error}`);
|
|
49
|
+
}
|
|
50
|
+
const tokenData = await tokenResponse.json();
|
|
51
|
+
return {
|
|
52
|
+
access: tokenData.access_token,
|
|
53
|
+
refresh: tokenData.refresh_token,
|
|
54
|
+
expires: Date.now() + tokenData.expires_in * 1000,
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
async refreshToken(credentials) {
|
|
58
|
+
if (!credentials.refresh) {
|
|
59
|
+
throw new Error('Kimi OAuth refresh token missing. Re-authenticate.');
|
|
60
|
+
}
|
|
61
|
+
const response = await fetch(KIMI_OAUTH_TOKEN_URL, {
|
|
62
|
+
method: 'POST',
|
|
63
|
+
headers: {
|
|
64
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
65
|
+
},
|
|
66
|
+
body: new URLSearchParams({
|
|
67
|
+
grant_type: 'refresh_token',
|
|
68
|
+
client_id: KIMI_OAUTH_CLIENT_ID,
|
|
69
|
+
refresh_token: credentials.refresh,
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
const text = await response.text();
|
|
74
|
+
throw new Error(`Kimi OAuth refresh failed: ${text}`);
|
|
75
|
+
}
|
|
76
|
+
const payload = await response.json();
|
|
77
|
+
return {
|
|
78
|
+
...credentials,
|
|
79
|
+
access: payload.access_token,
|
|
80
|
+
refresh: payload.refresh_token || credentials.refresh,
|
|
81
|
+
expires: Date.now() + payload.expires_in * 1000,
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
getApiKey(credentials) {
|
|
85
|
+
return credentials.access;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
function generateCodeVerifier() {
|
|
89
|
+
const array = new Uint8Array(32);
|
|
90
|
+
crypto.getRandomValues(array);
|
|
91
|
+
return base64UrlEncode(array);
|
|
92
|
+
}
|
|
93
|
+
async function generateCodeChallenge(verifier) {
|
|
94
|
+
const encoder = new TextEncoder();
|
|
95
|
+
const data = encoder.encode(verifier);
|
|
96
|
+
const digest = await crypto.subtle.digest('SHA-256', data);
|
|
97
|
+
return base64UrlEncode(new Uint8Array(digest));
|
|
98
|
+
}
|
|
99
|
+
function base64UrlEncode(buffer) {
|
|
100
|
+
let str = '';
|
|
101
|
+
buffer.forEach(b => str += String.fromCharCode(b));
|
|
102
|
+
return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=kimi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/auth/oauth/kimi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MiniMax OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth 2.0 authentication for MiniMax Platform.
|
|
5
|
+
* https://platform.minimaxi.com/
|
|
6
|
+
*/
|
|
7
|
+
const MINIMAX_OAUTH_BASE_URL = 'https://platform.minimaxi.com';
|
|
8
|
+
const MINIMAX_OAUTH_AUTHORIZE_URL = `${MINIMAX_OAUTH_BASE_URL}/oauth/authorize`;
|
|
9
|
+
const MINIMAX_OAUTH_TOKEN_URL = `${MINIMAX_OAUTH_BASE_URL}/oauth/token`;
|
|
10
|
+
const MINIMAX_OAUTH_CLIENT_ID = 'your_client_id'; // Users need to register their own app
|
|
11
|
+
export const minimaxOAuthProvider = {
|
|
12
|
+
id: 'minimax',
|
|
13
|
+
name: 'MiniMax',
|
|
14
|
+
usesCallbackServer: true,
|
|
15
|
+
async login(callbacks) {
|
|
16
|
+
// MiniMax uses authorization code flow
|
|
17
|
+
// First, generate a device code or authorization URL
|
|
18
|
+
// For simplicity, we'll use a manual code flow
|
|
19
|
+
const codeVerifier = generateCodeVerifier();
|
|
20
|
+
const codeChallenge = await generateCodeChallenge(codeVerifier);
|
|
21
|
+
const authUrl = new URL(MINIMAX_OAUTH_AUTHORIZE_URL);
|
|
22
|
+
authUrl.searchParams.set('client_id', MINIMAX_OAUTH_CLIENT_ID);
|
|
23
|
+
authUrl.searchParams.set('redirect_uri', 'http://localhost:3000/callback');
|
|
24
|
+
authUrl.searchParams.set('response_type', 'code');
|
|
25
|
+
authUrl.searchParams.set('scope', 'api');
|
|
26
|
+
authUrl.searchParams.set('code_challenge', codeChallenge);
|
|
27
|
+
authUrl.searchParams.set('code_challenge_method', 'S256');
|
|
28
|
+
// Show user the auth URL
|
|
29
|
+
callbacks.onAuth({
|
|
30
|
+
url: authUrl.toString(),
|
|
31
|
+
instructions: 'Please authorize the application and enter the code shown.',
|
|
32
|
+
});
|
|
33
|
+
// Prompt for the authorization code
|
|
34
|
+
const code = await callbacks.onPrompt({
|
|
35
|
+
message: 'Enter the authorization code:',
|
|
36
|
+
});
|
|
37
|
+
// Exchange code for token
|
|
38
|
+
const tokenResponse = await fetch(MINIMAX_OAUTH_TOKEN_URL, {
|
|
39
|
+
method: 'POST',
|
|
40
|
+
headers: {
|
|
41
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
42
|
+
},
|
|
43
|
+
body: new URLSearchParams({
|
|
44
|
+
grant_type: 'authorization_code',
|
|
45
|
+
client_id: MINIMAX_OAUTH_CLIENT_ID,
|
|
46
|
+
code,
|
|
47
|
+
redirect_uri: 'http://localhost:3000/callback',
|
|
48
|
+
code_verifier: codeVerifier,
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
if (!tokenResponse.ok) {
|
|
52
|
+
const error = await tokenResponse.text();
|
|
53
|
+
throw new Error(`Token exchange failed: ${error}`);
|
|
54
|
+
}
|
|
55
|
+
const tokenData = await tokenResponse.json();
|
|
56
|
+
return {
|
|
57
|
+
access: tokenData.access_token,
|
|
58
|
+
refresh: tokenData.refresh_token,
|
|
59
|
+
expires: Date.now() + tokenData.expires_in * 1000,
|
|
60
|
+
};
|
|
61
|
+
},
|
|
62
|
+
async refreshToken(credentials) {
|
|
63
|
+
if (!credentials.refresh) {
|
|
64
|
+
throw new Error('MiniMax OAuth refresh token missing. Re-authenticate.');
|
|
65
|
+
}
|
|
66
|
+
const response = await fetch(MINIMAX_OAUTH_TOKEN_URL, {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: {
|
|
69
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
70
|
+
},
|
|
71
|
+
body: new URLSearchParams({
|
|
72
|
+
grant_type: 'refresh_token',
|
|
73
|
+
client_id: MINIMAX_OAUTH_CLIENT_ID,
|
|
74
|
+
refresh_token: credentials.refresh,
|
|
75
|
+
}),
|
|
76
|
+
});
|
|
77
|
+
if (!response.ok) {
|
|
78
|
+
const text = await response.text();
|
|
79
|
+
throw new Error(`MiniMax OAuth refresh failed: ${text}`);
|
|
80
|
+
}
|
|
81
|
+
const payload = await response.json();
|
|
82
|
+
return {
|
|
83
|
+
...credentials,
|
|
84
|
+
access: payload.access_token,
|
|
85
|
+
refresh: payload.refresh_token || credentials.refresh,
|
|
86
|
+
expires: Date.now() + payload.expires_in * 1000,
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
getApiKey(credentials) {
|
|
90
|
+
return credentials.access;
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
function generateCodeVerifier() {
|
|
94
|
+
const array = new Uint8Array(32);
|
|
95
|
+
crypto.getRandomValues(array);
|
|
96
|
+
return base64UrlEncode(array);
|
|
97
|
+
}
|
|
98
|
+
async function generateCodeChallenge(verifier) {
|
|
99
|
+
const encoder = new TextEncoder();
|
|
100
|
+
const data = encoder.encode(verifier);
|
|
101
|
+
const digest = await crypto.subtle.digest('SHA-256', data);
|
|
102
|
+
return base64UrlEncode(new Uint8Array(digest));
|
|
103
|
+
}
|
|
104
|
+
function base64UrlEncode(buffer) {
|
|
105
|
+
let str = '';
|
|
106
|
+
buffer.forEach(b => str += String.fromCharCode(b));
|
|
107
|
+
return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=minimax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../../src/auth/oauth/minimax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Codex OAuth Provider
|
|
3
|
+
*
|
|
4
|
+
* OAuth authentication for OpenAI Codex (ChatGPT Plus/Pro Subscription).
|
|
5
|
+
*/
|
|
6
|
+
export const openaiCodexOAuthProvider = {
|
|
7
|
+
id: 'openai-codex',
|
|
8
|
+
name: 'OpenAI Codex',
|
|
9
|
+
usesCallbackServer: true,
|
|
10
|
+
async login(callbacks) {
|
|
11
|
+
const { loginOpenAICodex } = await import('@mariozechner/pi-ai');
|
|
12
|
+
const creds = await loginOpenAICodex({
|
|
13
|
+
onAuth: (info) => callbacks.onAuth(info),
|
|
14
|
+
onPrompt: async (prompt) => callbacks.onPrompt(prompt),
|
|
15
|
+
onProgress: (msg) => callbacks.onProgress?.(msg),
|
|
16
|
+
onManualCodeInput: callbacks.onManualCodeInput,
|
|
17
|
+
originator: 'xopcbot',
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
access: creds.access,
|
|
21
|
+
refresh: creds.refresh,
|
|
22
|
+
expires: creds.expires,
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
async refreshToken(credentials) {
|
|
26
|
+
const { refreshOAuthToken } = await import('@mariozechner/pi-ai');
|
|
27
|
+
return refreshOAuthToken('openai-codex', credentials);
|
|
28
|
+
},
|
|
29
|
+
getApiKey(credentials) {
|
|
30
|
+
return credentials.access;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=openai-codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-codex.js","sourceRoot":"","sources":["../../../src/auth/oauth/openai-codex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,wBAAwB,GAA2B;IAC/D,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,cAAc;IACpB,kBAAkB,EAAE,IAAI;IAExB,KAAK,CAAC,KAAK,CAAC,SAA8B;QACzC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC;YACpC,MAAM,EAAE,CAAC,IAA4C,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;YAChF,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC;YAChD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;YAC9C,UAAU,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,OAAO;YACN,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;SACtB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,WAA6B;QAC/C,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QAClE,OAAO,iBAAiB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,CAAC,WAA6B;QACtC,OAAO,WAAW,CAAC,MAAM,CAAC;IAC3B,CAAC;CACD,CAAC"}
|