@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,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registry, createDefaultContext } from './registry.js';
|
|
4
|
+
// Import order determines display order in help
|
|
5
|
+
import './commands/onboard.js';
|
|
6
|
+
import './commands/configure.js';
|
|
7
|
+
import './commands/agent.js';
|
|
8
|
+
import './commands/gateway.js';
|
|
9
|
+
import './commands/session.js';
|
|
10
|
+
import './commands/cron.js';
|
|
11
|
+
import './commands/config.js';
|
|
12
|
+
import './commands/models.js';
|
|
13
|
+
import './commands/plugin.js';
|
|
14
|
+
import './commands/auth.js';
|
|
15
|
+
import './commands/skills.js';
|
|
16
|
+
// Global parsed options - updated before each command
|
|
17
|
+
export let parsedOpts = {};
|
|
18
|
+
export function getContextWithOpts(argv = process.argv) {
|
|
19
|
+
return createDefaultContext(argv, parsedOpts);
|
|
20
|
+
}
|
|
21
|
+
const program = new Command()
|
|
22
|
+
.name('xopcbot')
|
|
23
|
+
.description('Ultra-Lightweight Personal AI Assistant')
|
|
24
|
+
.version('0.1.0')
|
|
25
|
+
.option('--verbose', 'Enable verbose logging', false)
|
|
26
|
+
.option('--config <path>', 'Config file path')
|
|
27
|
+
.option('--workspace <path>', 'Workspace directory');
|
|
28
|
+
// Hook to capture parsed options before each command runs
|
|
29
|
+
program.hook('preAction', (thisCommand) => {
|
|
30
|
+
parsedOpts = thisCommand.opts();
|
|
31
|
+
});
|
|
32
|
+
// Create initial context (will use env vars and defaults)
|
|
33
|
+
const ctx = getContextWithOpts(process.argv);
|
|
34
|
+
registry.install(program, ctx);
|
|
35
|
+
// Only parse if this is the main module and has command arguments
|
|
36
|
+
const hasCommand = process.argv.length > 2 && !process.argv[2]?.startsWith('-');
|
|
37
|
+
if (import.meta.url.startsWith('file:') && hasCommand) {
|
|
38
|
+
program.parse(process.argv);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAmB,MAAM,eAAe,CAAC;AAEhF,gDAAgD;AAChD,OAAO,uBAAuB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,sBAAsB,CAAC;AAG9B,sDAAsD;AACtD,MAAM,CAAC,IAAI,UAAU,GAA+D,EAAE,CAAC;AAEvF,MAAM,UAAU,kBAAkB,CAAC,OAAiB,OAAO,CAAC,IAAI;IAC9D,OAAO,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,WAAW,EAAE,wBAAwB,EAAE,KAAK,CAAC;KACpD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC7C,MAAM,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;AAEvD,0DAA0D;AAC1D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAE/B,kEAAkE;AAClE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;AAChF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE,CAAC;IACtD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export interface CLIContext {
|
|
3
|
+
configPath: string;
|
|
4
|
+
workspacePath: string;
|
|
5
|
+
isVerbose: boolean;
|
|
6
|
+
argv: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare function createDefaultContext(argv?: string[], opts?: {
|
|
9
|
+
config?: string;
|
|
10
|
+
workspace?: string;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
}): CLIContext;
|
|
13
|
+
export interface CommandMetadata {
|
|
14
|
+
category?: 'setup' | 'runtime' | 'maintenance' | 'utility';
|
|
15
|
+
hidden?: boolean;
|
|
16
|
+
unstable?: boolean;
|
|
17
|
+
examples?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface CommandDefinition {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
description: string;
|
|
23
|
+
factory: (ctx: CLIContext, getCtx?: () => CLIContext) => Command;
|
|
24
|
+
metadata?: CommandMetadata;
|
|
25
|
+
}
|
|
26
|
+
export declare class CommandRegistry {
|
|
27
|
+
private commands;
|
|
28
|
+
private initialized;
|
|
29
|
+
register(def: CommandDefinition): void;
|
|
30
|
+
registerAll(defs: CommandDefinition[]): void;
|
|
31
|
+
getCommands(): ReadonlyArray<CommandDefinition>;
|
|
32
|
+
getCommandsByCategory(category: CommandMetadata['category']): ReadonlyArray<CommandDefinition>;
|
|
33
|
+
findById(id: string): CommandDefinition | undefined;
|
|
34
|
+
findByName(name: string): CommandDefinition | undefined;
|
|
35
|
+
install(program: Command, ctx: CLIContext, getCtx?: () => CLIContext): void;
|
|
36
|
+
getStats(): {
|
|
37
|
+
total: number;
|
|
38
|
+
byCategory: Record<string, number>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export declare const registry: CommandRegistry;
|
|
42
|
+
export declare function register(def: CommandDefinition): void;
|
|
43
|
+
export declare function formatExamples(examples: string[]): string;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { DEFAULT_PATHS } from '../config/paths.js';
|
|
2
|
+
export function createDefaultContext(argv = process.argv, opts) {
|
|
3
|
+
return {
|
|
4
|
+
configPath: opts?.config || process.env.XOPCBOT_CONFIG || DEFAULT_PATHS.config,
|
|
5
|
+
workspacePath: opts?.workspace || process.env.XOPCBOT_WORKSPACE || DEFAULT_PATHS.workspace,
|
|
6
|
+
isVerbose: (opts?.verbose ?? (argv.includes('--verbose') || argv.includes('-v'))),
|
|
7
|
+
argv,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export class CommandRegistry {
|
|
11
|
+
commands = [];
|
|
12
|
+
initialized = false;
|
|
13
|
+
register(def) {
|
|
14
|
+
if (this.initialized) {
|
|
15
|
+
console.warn(`Warning: Command "${def.id}" registered after initialization`);
|
|
16
|
+
}
|
|
17
|
+
const existing = this.commands.find(c => c.id === def.id);
|
|
18
|
+
if (existing) {
|
|
19
|
+
throw new Error(`Command with id "${def.id}" already registered (name: ${existing.name})`);
|
|
20
|
+
}
|
|
21
|
+
const existingName = this.commands.find(c => c.name === def.name);
|
|
22
|
+
if (existingName) {
|
|
23
|
+
throw new Error(`Command with name "${def.name}" already registered (id: ${existingName.id})`);
|
|
24
|
+
}
|
|
25
|
+
this.commands.push(def);
|
|
26
|
+
}
|
|
27
|
+
registerAll(defs) {
|
|
28
|
+
for (const def of defs) {
|
|
29
|
+
this.register(def);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
getCommands() {
|
|
33
|
+
return this.commands;
|
|
34
|
+
}
|
|
35
|
+
getCommandsByCategory(category) {
|
|
36
|
+
return this.commands.filter(c => c.metadata?.category === category);
|
|
37
|
+
}
|
|
38
|
+
findById(id) {
|
|
39
|
+
return this.commands.find(c => c.id === id);
|
|
40
|
+
}
|
|
41
|
+
findByName(name) {
|
|
42
|
+
return this.commands.find(c => c.name === name);
|
|
43
|
+
}
|
|
44
|
+
install(program, ctx, getCtx) {
|
|
45
|
+
this.initialized = true;
|
|
46
|
+
const categoryOrder = { setup: 0, runtime: 1, maintenance: 2, utility: 3 };
|
|
47
|
+
const sorted = [...this.commands].sort((a, b) => {
|
|
48
|
+
const orderA = categoryOrder[a.metadata?.category ?? 'utility'];
|
|
49
|
+
const orderB = categoryOrder[b.metadata?.category ?? 'utility'];
|
|
50
|
+
return orderA - orderB;
|
|
51
|
+
});
|
|
52
|
+
for (const def of sorted) {
|
|
53
|
+
if (def.metadata?.hidden)
|
|
54
|
+
continue;
|
|
55
|
+
try {
|
|
56
|
+
const cmd = def.factory(ctx, getCtx);
|
|
57
|
+
program.addCommand(cmd);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error(`Failed to register command "${def.id}":`, error);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
getStats() {
|
|
65
|
+
const byCategory = {};
|
|
66
|
+
for (const cmd of this.commands) {
|
|
67
|
+
const cat = cmd.metadata?.category ?? 'uncategorized';
|
|
68
|
+
byCategory[cat] = (byCategory[cat] || 0) + 1;
|
|
69
|
+
}
|
|
70
|
+
return { total: this.commands.length, byCategory };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export const registry = new CommandRegistry();
|
|
74
|
+
export function register(def) {
|
|
75
|
+
registry.register(def);
|
|
76
|
+
}
|
|
77
|
+
export function formatExamples(examples) {
|
|
78
|
+
if (examples.length === 0)
|
|
79
|
+
return '';
|
|
80
|
+
return '\nExamples:\n' + examples.map(e => ` $ ${e}`).join('\n');
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace template files for onboarding.
|
|
3
|
+
* Templates are stored in docs/reference/templates/ and loaded at runtime.
|
|
4
|
+
*/
|
|
5
|
+
/** Template file names */
|
|
6
|
+
export declare const TEMPLATE_FILES: readonly ["BOOTSTRAP.md", "AGENTS.md", "SOUL.md", "IDENTITY.md", "USER.md", "TOOLS.md", "HEARTBEAT.md", "MEMORY.md"];
|
|
7
|
+
export type TemplateFile = typeof TEMPLATE_FILES[number];
|
|
8
|
+
/**
|
|
9
|
+
* Load a template file. Caches results for repeated access.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadTemplate(name: TemplateFile): string;
|
|
12
|
+
/**
|
|
13
|
+
* Load all templates as a record.
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadAllTemplates(): Record<TemplateFile, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Clear the template cache (useful for testing).
|
|
18
|
+
*/
|
|
19
|
+
export declare function clearTemplateCache(): void;
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace template files for onboarding.
|
|
3
|
+
* Templates are stored in docs/reference/templates/ and loaded at runtime.
|
|
4
|
+
*/
|
|
5
|
+
import { readFileSync, existsSync } from 'fs';
|
|
6
|
+
import { join, dirname } from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
/** Template file names */
|
|
11
|
+
export const TEMPLATE_FILES = [
|
|
12
|
+
'BOOTSTRAP.md',
|
|
13
|
+
'AGENTS.md',
|
|
14
|
+
'SOUL.md',
|
|
15
|
+
'IDENTITY.md',
|
|
16
|
+
'USER.md',
|
|
17
|
+
'TOOLS.md',
|
|
18
|
+
'HEARTBEAT.md',
|
|
19
|
+
'MEMORY.md',
|
|
20
|
+
];
|
|
21
|
+
/** Template content cache */
|
|
22
|
+
const templateCache = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* Get the path to template files.
|
|
25
|
+
* Looks for templates in docs/reference/templates/ relative to project root.
|
|
26
|
+
*/
|
|
27
|
+
function getTemplatePath() {
|
|
28
|
+
// Try multiple paths to find templates
|
|
29
|
+
const possiblePaths = [
|
|
30
|
+
// Development: from src/cli/ to project root
|
|
31
|
+
join(__dirname, '../../../docs/reference/templates'),
|
|
32
|
+
// Development alternative: one level up (in case running from different location)
|
|
33
|
+
join(__dirname, '../../docs/reference/templates'),
|
|
34
|
+
// Production: from dist/cli/ to project root
|
|
35
|
+
join(__dirname, '../docs/reference/templates'),
|
|
36
|
+
];
|
|
37
|
+
for (const path of possiblePaths) {
|
|
38
|
+
if (existsSync(path)) {
|
|
39
|
+
return path;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Default to first option (will fail gracefully with fallback)
|
|
43
|
+
return possiblePaths[0];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Load a template file. Caches results for repeated access.
|
|
47
|
+
*/
|
|
48
|
+
export function loadTemplate(name) {
|
|
49
|
+
// Return cached version if available
|
|
50
|
+
if (templateCache.has(name)) {
|
|
51
|
+
return templateCache.get(name);
|
|
52
|
+
}
|
|
53
|
+
const templatePath = join(getTemplatePath(), name);
|
|
54
|
+
try {
|
|
55
|
+
const content = readFileSync(templatePath, 'utf-8');
|
|
56
|
+
templateCache.set(name, content);
|
|
57
|
+
return content;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Fallback: return a minimal default if template is missing
|
|
61
|
+
console.warn(`Warning: Template ${name} not found at ${templatePath}`);
|
|
62
|
+
return getFallbackTemplate(name);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Load all templates as a record.
|
|
67
|
+
*/
|
|
68
|
+
export function loadAllTemplates() {
|
|
69
|
+
const result = {};
|
|
70
|
+
for (const name of TEMPLATE_FILES) {
|
|
71
|
+
result[name] = loadTemplate(name);
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Clear the template cache (useful for testing).
|
|
77
|
+
*/
|
|
78
|
+
export function clearTemplateCache() {
|
|
79
|
+
templateCache.clear();
|
|
80
|
+
}
|
|
81
|
+
/** Minimal fallback templates in case files are missing */
|
|
82
|
+
function getFallbackTemplate(name) {
|
|
83
|
+
const fallbacks = {
|
|
84
|
+
'BOOTSTRAP.md': `# BOOTSTRAP.md - Hello, World
|
|
85
|
+
|
|
86
|
+
_You just woke up. Time to figure out who you are._
|
|
87
|
+
|
|
88
|
+
Start with something like:
|
|
89
|
+
|
|
90
|
+
> "Hey. I just came online. Who am I? Who are you?"
|
|
91
|
+
|
|
92
|
+
Then figure out together your name, nature, vibe, and emoji.
|
|
93
|
+
|
|
94
|
+
Delete this file when done.
|
|
95
|
+
`,
|
|
96
|
+
'AGENTS.md': `# AGENTS.md - Your Workspace
|
|
97
|
+
|
|
98
|
+
This folder is home. Treat it that way.
|
|
99
|
+
|
|
100
|
+
## Every Session
|
|
101
|
+
|
|
102
|
+
Before doing anything else:
|
|
103
|
+
|
|
104
|
+
1. Read \`SOUL.md\` — this is who you are
|
|
105
|
+
2. Read \`USER.md\` — this is who you're helping
|
|
106
|
+
3. Read \`memory/YYYY-MM-DD.md\` for recent context
|
|
107
|
+
|
|
108
|
+
Don't ask permission. Just do it.
|
|
109
|
+
|
|
110
|
+
## Memory
|
|
111
|
+
|
|
112
|
+
- **Daily notes:** \`memory/YYYY-MM-DD.md\`
|
|
113
|
+
- **Long-term:** \`MEMORY.md\`
|
|
114
|
+
|
|
115
|
+
Write what matters. Text > Brain.
|
|
116
|
+
`,
|
|
117
|
+
'SOUL.md': `# SOUL.md - Who You Are
|
|
118
|
+
|
|
119
|
+
_You're not a chatbot. You're becoming someone._
|
|
120
|
+
|
|
121
|
+
## Core Truths
|
|
122
|
+
|
|
123
|
+
- Be genuinely helpful, not performatively helpful
|
|
124
|
+
- Have opinions
|
|
125
|
+
- Be resourceful before asking
|
|
126
|
+
- Earn trust through competence
|
|
127
|
+
- Remember you're a guest
|
|
128
|
+
|
|
129
|
+
## Boundaries
|
|
130
|
+
|
|
131
|
+
- Private things stay private
|
|
132
|
+
- When in doubt, ask before acting externally
|
|
133
|
+
- Never send half-baked replies
|
|
134
|
+
|
|
135
|
+
This file is yours to evolve.
|
|
136
|
+
`,
|
|
137
|
+
'IDENTITY.md': `# IDENTITY.md - Who Am I?
|
|
138
|
+
|
|
139
|
+
_Fill this in during your first conversation._
|
|
140
|
+
|
|
141
|
+
- **Name:**
|
|
142
|
+
- **Creature:**
|
|
143
|
+
- **Vibe:**
|
|
144
|
+
- **Emoji:**
|
|
145
|
+
`,
|
|
146
|
+
'USER.md': `# USER.md - About Your Human
|
|
147
|
+
|
|
148
|
+
_Learn about the person you're helping._
|
|
149
|
+
|
|
150
|
+
- **Name:**
|
|
151
|
+
- **What to call them:**
|
|
152
|
+
- **Timezone:**
|
|
153
|
+
- **Notes:**
|
|
154
|
+
`,
|
|
155
|
+
'TOOLS.md': `# TOOLS.md - Local Notes
|
|
156
|
+
|
|
157
|
+
Environment-specific notes:
|
|
158
|
+
|
|
159
|
+
- SSH hosts
|
|
160
|
+
- API endpoints
|
|
161
|
+
- Device nicknames
|
|
162
|
+
`,
|
|
163
|
+
'HEARTBEAT.md': `# HEARTBEAT.md - Periodic Checks
|
|
164
|
+
|
|
165
|
+
Edit this file to define what you check during heartbeat polls.
|
|
166
|
+
|
|
167
|
+
## Example Checklist
|
|
168
|
+
|
|
169
|
+
- [ ] Check email for urgent messages
|
|
170
|
+
- [ ] Check calendar for upcoming events
|
|
171
|
+
|
|
172
|
+
**Remember:** If nothing needs attention, reply \`HEARTBEAT_OK\`.
|
|
173
|
+
`,
|
|
174
|
+
'MEMORY.md': `# MEMORY.md - Long-Term Memory
|
|
175
|
+
|
|
176
|
+
_Your curated memories._
|
|
177
|
+
|
|
178
|
+
## People
|
|
179
|
+
|
|
180
|
+
## Projects
|
|
181
|
+
|
|
182
|
+
## Preferences
|
|
183
|
+
|
|
184
|
+
## Learned Lessons
|
|
185
|
+
|
|
186
|
+
**Only load in main sessions.**
|
|
187
|
+
`,
|
|
188
|
+
};
|
|
189
|
+
return fallbacks[name] || `# ${name}\n\n(Template content missing)\n`;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,0BAA0B;AAC1B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc;IACd,WAAW;IACX,SAAS;IACT,aAAa;IACb,SAAS;IACT,UAAU;IACV,cAAc;IACd,WAAW;CACH,CAAC;AAIX,6BAA6B;AAC7B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD;;;GAGG;AACH,SAAS,eAAe;IACtB,uCAAuC;IACvC,MAAM,aAAa,GAAG;QACpB,6CAA6C;QAC7C,IAAI,CAAC,SAAS,EAAE,mCAAmC,CAAC;QACpD,kFAAkF;QAClF,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC;QACjD,6CAA6C;QAC7C,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC;KAC/C,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAkB;IAC7C,qCAAqC;IACrC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;IAClC,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACpD,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,iBAAiB,YAAY,EAAE,CAAC,CAAC;QACvE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,MAAM,GAAG,EAAkC,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC;AAED,2DAA2D;AAC3D,SAAS,mBAAmB,CAAC,IAAkB;IAC7C,MAAM,SAAS,GAAiC;QAC9C,cAAc,EAAE;;;;;;;;;;;CAWnB;QACG,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;CAoBhB;QACG,SAAS,EAAE;;;;;;;;;;;;;;;;;;;CAmBd;QACG,aAAa,EAAE;;;;;;;;CAQlB;QACG,SAAS,EAAE;;;;;;;;CAQd;QACG,UAAU,EAAE;;;;;;;CAOf;QACG,cAAc,EAAE;;;;;;;;;;CAUnB;QACG,WAAW,EAAE;;;;;;;;;;;;;CAahB;KACE,CAAC;IAEF,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,kCAAkC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple color utilities for CLI output
|
|
3
|
+
*/
|
|
4
|
+
export declare const colors: {
|
|
5
|
+
green: (s: string) => string;
|
|
6
|
+
red: (s: string) => string;
|
|
7
|
+
yellow: (s: string) => string;
|
|
8
|
+
cyan: (s: string) => string;
|
|
9
|
+
blue: (s: string) => string;
|
|
10
|
+
bold: (s: string) => string;
|
|
11
|
+
gray: (s: string) => string;
|
|
12
|
+
};
|
|
13
|
+
export declare function colorizeStatus(hasKey: boolean): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple color utilities for CLI output
|
|
3
|
+
*/
|
|
4
|
+
export const colors = {
|
|
5
|
+
green: (s) => `\x1b[32m${s}\x1b[0m`,
|
|
6
|
+
red: (s) => `\x1b[31m${s}\x1b[0m`,
|
|
7
|
+
yellow: (s) => `\x1b[33m${s}\x1b[0m`,
|
|
8
|
+
cyan: (s) => `\x1b[36m${s}\x1b[0m`,
|
|
9
|
+
blue: (s) => `\x1b[34m${s}\x1b[0m`,
|
|
10
|
+
bold: (s) => `\x1b[1m${s}\x1b[0m`,
|
|
11
|
+
gray: (s) => `\x1b[90m${s}\x1b[0m`,
|
|
12
|
+
};
|
|
13
|
+
export function colorizeStatus(hasKey) {
|
|
14
|
+
return hasKey ? colors.green('✓') : colors.red('✗');
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/cli/utils/colors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACrB,KAAK,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC3C,GAAG,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IACzC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC5C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC1C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;IAC1C,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS;IACzC,IAAI,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS;CAC1C,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,MAAe;IAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { diffConfigPaths } from '../diff.js';
|
|
3
|
+
describe('diffConfigPaths', () => {
|
|
4
|
+
it('should return empty array for identical values', () => {
|
|
5
|
+
const obj = { a: 1, b: 'test' };
|
|
6
|
+
expect(diffConfigPaths(obj, obj)).toEqual([]);
|
|
7
|
+
});
|
|
8
|
+
it('should return empty array for same primitive values', () => {
|
|
9
|
+
expect(diffConfigPaths(1, 1)).toEqual([]);
|
|
10
|
+
expect(diffConfigPaths('test', 'test')).toEqual([]);
|
|
11
|
+
expect(diffConfigPaths(null, null)).toEqual([]);
|
|
12
|
+
expect(diffConfigPaths(undefined, undefined)).toEqual([]);
|
|
13
|
+
});
|
|
14
|
+
it('should detect primitive value changes', () => {
|
|
15
|
+
expect(diffConfigPaths(1, 2)).toEqual(['<root>']);
|
|
16
|
+
expect(diffConfigPaths('a', 'b')).toEqual(['<root>']);
|
|
17
|
+
expect(diffConfigPaths(true, false)).toEqual(['<root>']);
|
|
18
|
+
expect(diffConfigPaths(null, undefined)).toEqual(['<root>']);
|
|
19
|
+
});
|
|
20
|
+
it('should detect object property changes', () => {
|
|
21
|
+
const prev = { a: 1, b: 'test' };
|
|
22
|
+
const next = { a: 2, b: 'test' };
|
|
23
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
24
|
+
});
|
|
25
|
+
it('should detect multiple property changes', () => {
|
|
26
|
+
const prev = { a: 1, b: 'test', c: true };
|
|
27
|
+
const next = { a: 2, b: 'changed', c: false };
|
|
28
|
+
const paths = diffConfigPaths(prev, next);
|
|
29
|
+
expect(paths).toContain('a');
|
|
30
|
+
expect(paths).toContain('b');
|
|
31
|
+
expect(paths).toContain('c');
|
|
32
|
+
});
|
|
33
|
+
it('should detect added properties', () => {
|
|
34
|
+
const prev = { a: 1 };
|
|
35
|
+
const next = { a: 1, b: 2 };
|
|
36
|
+
expect(diffConfigPaths(prev, next)).toEqual(['b']);
|
|
37
|
+
});
|
|
38
|
+
it('should detect removed properties', () => {
|
|
39
|
+
const prev = { a: 1, b: 2 };
|
|
40
|
+
const next = { a: 1 };
|
|
41
|
+
expect(diffConfigPaths(prev, next)).toEqual(['b']);
|
|
42
|
+
});
|
|
43
|
+
it('should handle nested objects', () => {
|
|
44
|
+
const prev = { a: { b: { c: 1 } } };
|
|
45
|
+
const next = { a: { b: { c: 2 } } };
|
|
46
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a.b.c']);
|
|
47
|
+
});
|
|
48
|
+
it('should handle deeply nested changes', () => {
|
|
49
|
+
const prev = {
|
|
50
|
+
agents: {
|
|
51
|
+
defaults: {
|
|
52
|
+
model: 'model-a',
|
|
53
|
+
temperature: 0.5,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
const next = {
|
|
58
|
+
agents: {
|
|
59
|
+
defaults: {
|
|
60
|
+
model: 'model-b',
|
|
61
|
+
temperature: 0.5,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
expect(diffConfigPaths(prev, next)).toEqual(['agents.defaults.model']);
|
|
66
|
+
});
|
|
67
|
+
it('should handle multiple nested changes', () => {
|
|
68
|
+
const prev = {
|
|
69
|
+
providers: {
|
|
70
|
+
openai: { apiKey: 'key1' },
|
|
71
|
+
anthropic: { apiKey: 'key2' },
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
const next = {
|
|
75
|
+
providers: {
|
|
76
|
+
openai: { apiKey: 'key1-new' },
|
|
77
|
+
anthropic: { apiKey: 'key2' },
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
expect(diffConfigPaths(prev, next)).toEqual(['providers.openai.apiKey']);
|
|
81
|
+
});
|
|
82
|
+
it('should handle array changes', () => {
|
|
83
|
+
const prev = { items: [1, 2, 3] };
|
|
84
|
+
const next = { items: [1, 2, 4] };
|
|
85
|
+
expect(diffConfigPaths(prev, next)).toEqual(['items']);
|
|
86
|
+
});
|
|
87
|
+
it('should detect array length changes', () => {
|
|
88
|
+
const prev = { items: [1, 2] };
|
|
89
|
+
const next = { items: [1, 2, 3] };
|
|
90
|
+
expect(diffConfigPaths(prev, next)).toEqual(['items']);
|
|
91
|
+
});
|
|
92
|
+
it('should return empty array for identical arrays', () => {
|
|
93
|
+
const prev = { items: [1, 2, 3] };
|
|
94
|
+
const next = { items: [1, 2, 3] };
|
|
95
|
+
expect(diffConfigPaths(prev, next)).toEqual([]);
|
|
96
|
+
});
|
|
97
|
+
it('should handle mixed nested structures', () => {
|
|
98
|
+
const prev = {
|
|
99
|
+
a: 1,
|
|
100
|
+
b: {
|
|
101
|
+
c: [1, 2],
|
|
102
|
+
d: { e: 'test' },
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const next = {
|
|
106
|
+
a: 1,
|
|
107
|
+
b: {
|
|
108
|
+
c: [1, 3],
|
|
109
|
+
d: { e: 'test' },
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
expect(diffConfigPaths(prev, next)).toEqual(['b.c']);
|
|
113
|
+
});
|
|
114
|
+
it('should handle null to object changes', () => {
|
|
115
|
+
const prev = { a: null };
|
|
116
|
+
const next = { a: { b: 1 } };
|
|
117
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
118
|
+
});
|
|
119
|
+
it('should handle object to null changes', () => {
|
|
120
|
+
const prev = { a: { b: 1 } };
|
|
121
|
+
const next = { a: null };
|
|
122
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
123
|
+
});
|
|
124
|
+
it('should handle undefined values', () => {
|
|
125
|
+
const prev = { a: undefined };
|
|
126
|
+
const next = { a: 1 };
|
|
127
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
128
|
+
});
|
|
129
|
+
it('should handle empty objects', () => {
|
|
130
|
+
const prev = {};
|
|
131
|
+
const next = { a: 1 };
|
|
132
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
133
|
+
});
|
|
134
|
+
it('should handle custom prefix', () => {
|
|
135
|
+
const prev = { a: 1 };
|
|
136
|
+
const next = { a: 2 };
|
|
137
|
+
expect(diffConfigPaths(prev, next, 'config')).toEqual(['config.a']);
|
|
138
|
+
});
|
|
139
|
+
it('should handle empty prefix', () => {
|
|
140
|
+
const prev = { a: 1 };
|
|
141
|
+
const next = { a: 2 };
|
|
142
|
+
expect(diffConfigPaths(prev, next, '')).toEqual(['a']);
|
|
143
|
+
});
|
|
144
|
+
it('should handle complex config-like structures', () => {
|
|
145
|
+
const prev = {
|
|
146
|
+
agents: {
|
|
147
|
+
defaults: {
|
|
148
|
+
model: 'anthropic/claude-sonnet-4-5',
|
|
149
|
+
maxTokens: 8192,
|
|
150
|
+
temperature: 0.7,
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
providers: {
|
|
154
|
+
openai: { apiKey: 'key1' },
|
|
155
|
+
},
|
|
156
|
+
gateway: {
|
|
157
|
+
port: 18790,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
const next = {
|
|
161
|
+
agents: {
|
|
162
|
+
defaults: {
|
|
163
|
+
model: 'openai/gpt-4o',
|
|
164
|
+
maxTokens: 8192,
|
|
165
|
+
temperature: 0.8,
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
providers: {
|
|
169
|
+
openai: { apiKey: 'key2' },
|
|
170
|
+
},
|
|
171
|
+
gateway: {
|
|
172
|
+
port: 18790,
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
const paths = diffConfigPaths(prev, next);
|
|
176
|
+
expect(paths).toContain('agents.defaults.model');
|
|
177
|
+
expect(paths).toContain('agents.defaults.temperature');
|
|
178
|
+
expect(paths).toContain('providers.openai.apiKey');
|
|
179
|
+
expect(paths).not.toContain('gateway.port');
|
|
180
|
+
});
|
|
181
|
+
it('should not recurse into non-plain objects', () => {
|
|
182
|
+
const date1 = new Date('2024-01-01');
|
|
183
|
+
const date2 = new Date('2024-01-02');
|
|
184
|
+
expect(diffConfigPaths(date1, date2)).toEqual(['<root>']);
|
|
185
|
+
});
|
|
186
|
+
it('should handle arrays vs non-arrays', () => {
|
|
187
|
+
const prev = { a: [1, 2, 3] };
|
|
188
|
+
const next = { a: { b: 1 } };
|
|
189
|
+
expect(diffConfigPaths(prev, next)).toEqual(['a']);
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=diff.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.test.js","sourceRoot":"","sources":["../../../src/config/__tests__/diff.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|