@aquaclawai/aquarium 1.0.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/dist/agent-types/claude-code/index.d.ts +2 -0
- package/dist/agent-types/claude-code/index.d.ts.map +1 -0
- package/dist/agent-types/claude-code/index.js +2 -0
- package/dist/agent-types/claude-code/index.js.map +1 -0
- package/dist/agent-types/claude-code/manifest.d.ts +3 -0
- package/dist/agent-types/claude-code/manifest.d.ts.map +1 -0
- package/dist/agent-types/claude-code/manifest.js +45 -0
- package/dist/agent-types/claude-code/manifest.js.map +1 -0
- package/dist/agent-types/openclaw/adapter.d.ts +3 -0
- package/dist/agent-types/openclaw/adapter.d.ts.map +1 -0
- package/dist/agent-types/openclaw/adapter.js +714 -0
- package/dist/agent-types/openclaw/adapter.js.map +1 -0
- package/dist/agent-types/openclaw/gateway-rpc.d.ts +21 -0
- package/dist/agent-types/openclaw/gateway-rpc.d.ts.map +1 -0
- package/dist/agent-types/openclaw/gateway-rpc.js +202 -0
- package/dist/agent-types/openclaw/gateway-rpc.js.map +1 -0
- package/dist/agent-types/openclaw/index.d.ts +3 -0
- package/dist/agent-types/openclaw/index.d.ts.map +1 -0
- package/dist/agent-types/openclaw/index.js +3 -0
- package/dist/agent-types/openclaw/index.js.map +1 -0
- package/dist/agent-types/openclaw/manifest.d.ts +137 -0
- package/dist/agent-types/openclaw/manifest.d.ts.map +1 -0
- package/dist/agent-types/openclaw/manifest.js +191 -0
- package/dist/agent-types/openclaw/manifest.js.map +1 -0
- package/dist/agent-types/openclaw/provider-registry.d.ts +46 -0
- package/dist/agent-types/openclaw/provider-registry.d.ts.map +1 -0
- package/dist/agent-types/openclaw/provider-registry.js +108 -0
- package/dist/agent-types/openclaw/provider-registry.js.map +1 -0
- package/dist/agent-types/openclaw/reverse-adapter.d.ts +7 -0
- package/dist/agent-types/openclaw/reverse-adapter.d.ts.map +1 -0
- package/dist/agent-types/openclaw/reverse-adapter.js +528 -0
- package/dist/agent-types/openclaw/reverse-adapter.js.map +1 -0
- package/dist/agent-types/openclaw/security-profiles.d.ts +21 -0
- package/dist/agent-types/openclaw/security-profiles.d.ts.map +1 -0
- package/dist/agent-types/openclaw/security-profiles.js +251 -0
- package/dist/agent-types/openclaw/security-profiles.js.map +1 -0
- package/dist/agent-types/openclaw/workspace-templates.d.ts +2 -0
- package/dist/agent-types/openclaw/workspace-templates.d.ts.map +1 -0
- package/dist/agent-types/openclaw/workspace-templates.js +363 -0
- package/dist/agent-types/openclaw/workspace-templates.js.map +1 -0
- package/dist/agent-types/opencode/index.d.ts +2 -0
- package/dist/agent-types/opencode/index.d.ts.map +1 -0
- package/dist/agent-types/opencode/index.js +2 -0
- package/dist/agent-types/opencode/index.js.map +1 -0
- package/dist/agent-types/opencode/manifest.d.ts +3 -0
- package/dist/agent-types/opencode/manifest.d.ts.map +1 -0
- package/dist/agent-types/opencode/manifest.js +63 -0
- package/dist/agent-types/opencode/manifest.js.map +1 -0
- package/dist/agent-types/registry.d.ts +4 -0
- package/dist/agent-types/registry.d.ts.map +1 -0
- package/dist/agent-types/registry.js +24 -0
- package/dist/agent-types/registry.js.map +1 -0
- package/dist/agent-types/types.d.ts +169 -0
- package/dist/agent-types/types.d.ts.map +1 -0
- package/dist/agent-types/types.js +2 -0
- package/dist/agent-types/types.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +72 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +68 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +98 -0
- package/dist/config.js.map +1 -0
- package/dist/db/adapter.d.ts +21 -0
- package/dist/db/adapter.d.ts.map +1 -0
- package/dist/db/adapter.js +11 -0
- package/dist/db/adapter.js.map +1 -0
- package/dist/db/index.d.ts +4 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/knexfile.d.ts +5 -0
- package/dist/db/knexfile.d.ts.map +1 -0
- package/dist/db/knexfile.js +34 -0
- package/dist/db/knexfile.js.map +1 -0
- package/dist/db/migration-helpers.d.ts +45 -0
- package/dist/db/migration-helpers.d.ts.map +1 -0
- package/dist/db/migration-helpers.js +90 -0
- package/dist/db/migration-helpers.js.map +1 -0
- package/dist/db/migrations/001_initial.d.ts +4 -0
- package/dist/db/migrations/001_initial.d.ts.map +1 -0
- package/dist/db/migrations/001_initial.js +56 -0
- package/dist/db/migrations/001_initial.js.map +1 -0
- package/dist/db/migrations/002_instance_config.d.ts +4 -0
- package/dist/db/migrations/002_instance_config.d.ts.map +1 -0
- package/dist/db/migrations/002_instance_config.js +12 -0
- package/dist/db/migrations/002_instance_config.js.map +1 -0
- package/dist/db/migrations/003_instance_status_message.d.ts +4 -0
- package/dist/db/migrations/003_instance_status_message.d.ts.map +1 -0
- package/dist/db/migrations/003_instance_status_message.js +11 -0
- package/dist/db/migrations/003_instance_status_message.js.map +1 -0
- package/dist/db/migrations/004_templates.d.ts +4 -0
- package/dist/db/migrations/004_templates.d.ts.map +1 -0
- package/dist/db/migrations/004_templates.js +95 -0
- package/dist/db/migrations/004_templates.js.map +1 -0
- package/dist/db/migrations/005_group_chats.d.ts +4 -0
- package/dist/db/migrations/005_group_chats.d.ts.map +1 -0
- package/dist/db/migrations/005_group_chats.js +66 -0
- package/dist/db/migrations/005_group_chats.js.map +1 -0
- package/dist/db/migrations/006_template_setup.d.ts +4 -0
- package/dist/db/migrations/006_template_setup.d.ts.map +1 -0
- package/dist/db/migrations/006_template_setup.js +14 -0
- package/dist/db/migrations/006_template_setup.js.map +1 -0
- package/dist/db/migrations/007_group_chat_v2.d.ts +4 -0
- package/dist/db/migrations/007_group_chat_v2.d.ts.map +1 -0
- package/dist/db/migrations/007_group_chat_v2.js +59 -0
- package/dist/db/migrations/007_group_chat_v2.js.map +1 -0
- package/dist/db/migrations/008_default_provider_openrouter.d.ts +4 -0
- package/dist/db/migrations/008_default_provider_openrouter.d.ts.map +1 -0
- package/dist/db/migrations/008_default_provider_openrouter.js +33 -0
- package/dist/db/migrations/008_default_provider_openrouter.js.map +1 -0
- package/dist/db/migrations/009_opencode_default_provider_openrouter.d.ts +4 -0
- package/dist/db/migrations/009_opencode_default_provider_openrouter.d.ts.map +1 -0
- package/dist/db/migrations/009_opencode_default_provider_openrouter.js +33 -0
- package/dist/db/migrations/009_opencode_default_provider_openrouter.js.map +1 -0
- package/dist/db/migrations/010_fix_null_default_provider.d.ts +4 -0
- package/dist/db/migrations/010_fix_null_default_provider.d.ts.map +1 -0
- package/dist/db/migrations/010_fix_null_default_provider.js +24 -0
- package/dist/db/migrations/010_fix_null_default_provider.js.map +1 -0
- package/dist/db/migrations/011_snapshots.d.ts +4 -0
- package/dist/db/migrations/011_snapshots.d.ts.map +1 -0
- package/dist/db/migrations/011_snapshots.js +27 -0
- package/dist/db/migrations/011_snapshots.js.map +1 -0
- package/dist/db/migrations/013_official_templates.d.ts +4 -0
- package/dist/db/migrations/013_official_templates.d.ts.map +1 -0
- package/dist/db/migrations/013_official_templates.js +173 -0
- package/dist/db/migrations/013_official_templates.js.map +1 -0
- package/dist/db/migrations/014_notifications.d.ts +4 -0
- package/dist/db/migrations/014_notifications.d.ts.map +1 -0
- package/dist/db/migrations/014_notifications.js +45 -0
- package/dist/db/migrations/014_notifications.js.map +1 -0
- package/dist/db/migrations/015_security_profile.d.ts +4 -0
- package/dist/db/migrations/015_security_profile.d.ts.map +1 -0
- package/dist/db/migrations/015_security_profile.js +14 -0
- package/dist/db/migrations/015_security_profile.js.map +1 -0
- package/dist/db/migrations/016_template_security.d.ts +4 -0
- package/dist/db/migrations/016_template_security.d.ts.map +1 -0
- package/dist/db/migrations/016_template_security.js +12 -0
- package/dist/db/migrations/016_template_security.js.map +1 -0
- package/dist/db/migrations/017_auth_events.d.ts +4 -0
- package/dist/db/migrations/017_auth_events.d.ts.map +1 -0
- package/dist/db/migrations/017_auth_events.js +19 -0
- package/dist/db/migrations/017_auth_events.js.map +1 -0
- package/dist/db/migrations/018_skill_market.d.ts +4 -0
- package/dist/db/migrations/018_skill_market.d.ts.map +1 -0
- package/dist/db/migrations/018_skill_market.js +21 -0
- package/dist/db/migrations/018_skill_market.js.map +1 -0
- package/dist/db/migrations/019_credential_audit_log.d.ts +4 -0
- package/dist/db/migrations/019_credential_audit_log.d.ts.map +1 -0
- package/dist/db/migrations/019_credential_audit_log.js +19 -0
- package/dist/db/migrations/019_credential_audit_log.js.map +1 -0
- package/dist/db/migrations/020_template_security_score.d.ts +4 -0
- package/dist/db/migrations/020_template_security_score.d.ts.map +1 -0
- package/dist/db/migrations/020_template_security_score.js +31 -0
- package/dist/db/migrations/020_template_security_score.js.map +1 -0
- package/dist/db/migrations/021_credential_enhancements.d.ts +4 -0
- package/dist/db/migrations/021_credential_enhancements.d.ts.map +1 -0
- package/dist/db/migrations/021_credential_enhancements.js +15 -0
- package/dist/db/migrations/021_credential_enhancements.js.map +1 -0
- package/dist/db/migrations/021_user_roles.d.ts +4 -0
- package/dist/db/migrations/021_user_roles.d.ts.map +1 -0
- package/dist/db/migrations/021_user_roles.js +11 -0
- package/dist/db/migrations/021_user_roles.js.map +1 -0
- package/dist/db/migrations/022_config_hash.d.ts +4 -0
- package/dist/db/migrations/022_config_hash.d.ts.map +1 -0
- package/dist/db/migrations/022_config_hash.js +11 -0
- package/dist/db/migrations/022_config_hash.js.map +1 -0
- package/dist/db/migrations/023_account_security.d.ts +4 -0
- package/dist/db/migrations/023_account_security.d.ts.map +1 -0
- package/dist/db/migrations/023_account_security.js +22 -0
- package/dist/db/migrations/023_account_security.js.map +1 -0
- package/dist/db/migrations/024_wizard_configs.d.ts +4 -0
- package/dist/db/migrations/024_wizard_configs.d.ts.map +1 -0
- package/dist/db/migrations/024_wizard_configs.js +165 -0
- package/dist/db/migrations/024_wizard_configs.js.map +1 -0
- package/dist/db/migrations/025_auth_dual_mode.d.ts +4 -0
- package/dist/db/migrations/025_auth_dual_mode.d.ts.map +1 -0
- package/dist/db/migrations/025_auth_dual_mode.js +19 -0
- package/dist/db/migrations/025_auth_dual_mode.js.map +1 -0
- package/dist/db/migrations/027_add_avatar_to_instances.d.ts +4 -0
- package/dist/db/migrations/027_add_avatar_to_instances.d.ts.map +1 -0
- package/dist/db/migrations/027_add_avatar_to_instances.js +11 -0
- package/dist/db/migrations/027_add_avatar_to_instances.js.map +1 -0
- package/dist/db/migrations/027_add_clerk_id.d.ts +4 -0
- package/dist/db/migrations/027_add_clerk_id.d.ts.map +1 -0
- package/dist/db/migrations/027_add_clerk_id.js +11 -0
- package/dist/db/migrations/027_add_clerk_id.js.map +1 -0
- package/dist/db/migrations/028_template_plugin_dependencies.d.ts +4 -0
- package/dist/db/migrations/028_template_plugin_dependencies.d.ts.map +1 -0
- package/dist/db/migrations/028_template_plugin_dependencies.js +18 -0
- package/dist/db/migrations/028_template_plugin_dependencies.js.map +1 -0
- package/dist/db/migrations/029_remap_orphan_config_keys.d.ts +21 -0
- package/dist/db/migrations/029_remap_orphan_config_keys.d.ts.map +1 -0
- package/dist/db/migrations/029_remap_orphan_config_keys.js +63 -0
- package/dist/db/migrations/029_remap_orphan_config_keys.js.map +1 -0
- package/dist/db/migrations/030_extend_notification_types.d.ts +4 -0
- package/dist/db/migrations/030_extend_notification_types.d.ts.map +1 -0
- package/dist/db/migrations/030_extend_notification_types.js +10 -0
- package/dist/db/migrations/030_extend_notification_types.js.map +1 -0
- package/dist/db/migrations/031_default_security_profile_developer.d.ts +9 -0
- package/dist/db/migrations/031_default_security_profile_developer.d.ts.map +1 -0
- package/dist/db/migrations/031_default_security_profile_developer.js +22 -0
- package/dist/db/migrations/031_default_security_profile_developer.js.map +1 -0
- package/dist/db/migrations/032_geo_template.d.ts +4 -0
- package/dist/db/migrations/032_geo_template.d.ts.map +1 -0
- package/dist/db/migrations/032_geo_template.js +133 -0
- package/dist/db/migrations/032_geo_template.js.map +1 -0
- package/dist/db/migrations/033_jinko_travel_template.d.ts +4 -0
- package/dist/db/migrations/033_jinko_travel_template.d.ts.map +1 -0
- package/dist/db/migrations/033_jinko_travel_template.js +126 -0
- package/dist/db/migrations/033_jinko_travel_template.js.map +1 -0
- package/dist/db/postgres-adapter.d.ts +13 -0
- package/dist/db/postgres-adapter.d.ts.map +1 -0
- package/dist/db/postgres-adapter.js +27 -0
- package/dist/db/postgres-adapter.js.map +1 -0
- package/dist/db/run-migrations.d.ts +2 -0
- package/dist/db/run-migrations.d.ts.map +1 -0
- package/dist/db/run-migrations.js +26 -0
- package/dist/db/run-migrations.js.map +1 -0
- package/dist/db/sqlite-adapter.d.ts +13 -0
- package/dist/db/sqlite-adapter.d.ts.map +1 -0
- package/dist/db/sqlite-adapter.js +29 -0
- package/dist/db/sqlite-adapter.js.map +1 -0
- package/dist/ee/litellm/litellm-key-manager.d.ts +16 -0
- package/dist/ee/litellm/litellm-key-manager.d.ts.map +1 -0
- package/dist/ee/litellm/litellm-key-manager.js +16 -0
- package/dist/ee/litellm/litellm-key-manager.js.map +1 -0
- package/dist/ee/litellm/litellm-model-seeder.d.ts +6 -0
- package/dist/ee/litellm/litellm-model-seeder.d.ts.map +1 -0
- package/dist/ee/litellm/litellm-model-seeder.js +6 -0
- package/dist/ee/litellm/litellm-model-seeder.js.map +1 -0
- package/dist/index.ce.d.ts +2 -0
- package/dist/index.ce.d.ts.map +1 -0
- package/dist/index.ce.js +12 -0
- package/dist/index.ce.js.map +1 -0
- package/dist/middleware/auth.d.ts +30 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +86 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/dynamic-middleware.d.ts +7 -0
- package/dist/middleware/dynamic-middleware.d.ts.map +1 -0
- package/dist/middleware/dynamic-middleware.js +46 -0
- package/dist/middleware/dynamic-middleware.js.map +1 -0
- package/dist/middleware/log-redaction.d.ts +2 -0
- package/dist/middleware/log-redaction.d.ts.map +1 -0
- package/dist/middleware/log-redaction.js +56 -0
- package/dist/middleware/log-redaction.js.map +1 -0
- package/dist/routes/admin.d.ts +3 -0
- package/dist/routes/admin.d.ts.map +1 -0
- package/dist/routes/admin.js +491 -0
- package/dist/routes/admin.js.map +1 -0
- package/dist/routes/agent-types.d.ts +3 -0
- package/dist/routes/agent-types.d.ts.map +1 -0
- package/dist/routes/agent-types.js +85 -0
- package/dist/routes/agent-types.js.map +1 -0
- package/dist/routes/auth.d.ts +3 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +242 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/channels.d.ts +3 -0
- package/dist/routes/channels.d.ts.map +1 -0
- package/dist/routes/channels.js +527 -0
- package/dist/routes/channels.js.map +1 -0
- package/dist/routes/credentials.d.ts +3 -0
- package/dist/routes/credentials.d.ts.map +1 -0
- package/dist/routes/credentials.js +81 -0
- package/dist/routes/credentials.js.map +1 -0
- package/dist/routes/dashboard.d.ts +3 -0
- package/dist/routes/dashboard.d.ts.map +1 -0
- package/dist/routes/dashboard.js +75 -0
- package/dist/routes/dashboard.js.map +1 -0
- package/dist/routes/exec-approval.d.ts +3 -0
- package/dist/routes/exec-approval.d.ts.map +1 -0
- package/dist/routes/exec-approval.js +60 -0
- package/dist/routes/exec-approval.js.map +1 -0
- package/dist/routes/group-chats.d.ts +3 -0
- package/dist/routes/group-chats.d.ts.map +1 -0
- package/dist/routes/group-chats.js +190 -0
- package/dist/routes/group-chats.js.map +1 -0
- package/dist/routes/instance-files.d.ts +3 -0
- package/dist/routes/instance-files.d.ts.map +1 -0
- package/dist/routes/instance-files.js +255 -0
- package/dist/routes/instance-files.js.map +1 -0
- package/dist/routes/instance-proxy.d.ts +40 -0
- package/dist/routes/instance-proxy.d.ts.map +1 -0
- package/dist/routes/instance-proxy.js +318 -0
- package/dist/routes/instance-proxy.js.map +1 -0
- package/dist/routes/instances.d.ts +3 -0
- package/dist/routes/instances.d.ts.map +1 -0
- package/dist/routes/instances.js +325 -0
- package/dist/routes/instances.js.map +1 -0
- package/dist/routes/metadata.d.ts +3 -0
- package/dist/routes/metadata.d.ts.map +1 -0
- package/dist/routes/metadata.js +13 -0
- package/dist/routes/metadata.js.map +1 -0
- package/dist/routes/notifications.d.ts +3 -0
- package/dist/routes/notifications.d.ts.map +1 -0
- package/dist/routes/notifications.js +104 -0
- package/dist/routes/notifications.js.map +1 -0
- package/dist/routes/oauth.d.ts +3 -0
- package/dist/routes/oauth.d.ts.map +1 -0
- package/dist/routes/oauth.js +516 -0
- package/dist/routes/oauth.js.map +1 -0
- package/dist/routes/rpc-proxy.d.ts +3 -0
- package/dist/routes/rpc-proxy.d.ts.map +1 -0
- package/dist/routes/rpc-proxy.js +116 -0
- package/dist/routes/rpc-proxy.js.map +1 -0
- package/dist/routes/security.d.ts +3 -0
- package/dist/routes/security.d.ts.map +1 -0
- package/dist/routes/security.js +43 -0
- package/dist/routes/security.js.map +1 -0
- package/dist/routes/skills.d.ts +3 -0
- package/dist/routes/skills.d.ts.map +1 -0
- package/dist/routes/skills.js +48 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/routes/snapshots.d.ts +3 -0
- package/dist/routes/snapshots.d.ts.map +1 -0
- package/dist/routes/snapshots.js +99 -0
- package/dist/routes/snapshots.js.map +1 -0
- package/dist/routes/system-config.d.ts +3 -0
- package/dist/routes/system-config.d.ts.map +1 -0
- package/dist/routes/system-config.js +75 -0
- package/dist/routes/system-config.js.map +1 -0
- package/dist/routes/templates.d.ts +3 -0
- package/dist/routes/templates.d.ts.map +1 -0
- package/dist/routes/templates.js +256 -0
- package/dist/routes/templates.js.map +1 -0
- package/dist/routes/ui-proxy.d.ts +3 -0
- package/dist/routes/ui-proxy.d.ts.map +1 -0
- package/dist/routes/ui-proxy.js +90 -0
- package/dist/routes/ui-proxy.js.map +1 -0
- package/dist/routes/user-credentials.d.ts +3 -0
- package/dist/routes/user-credentials.d.ts.map +1 -0
- package/dist/routes/user-credentials.js +85 -0
- package/dist/routes/user-credentials.js.map +1 -0
- package/dist/routes/users.d.ts +3 -0
- package/dist/routes/users.d.ts.map +1 -0
- package/dist/routes/users.js +30 -0
- package/dist/routes/users.js.map +1 -0
- package/dist/runtime/docker.d.ts +37 -0
- package/dist/runtime/docker.d.ts.map +1 -0
- package/dist/runtime/docker.js +612 -0
- package/dist/runtime/docker.js.map +1 -0
- package/dist/runtime/factory.d.ts +4 -0
- package/dist/runtime/factory.d.ts.map +1 -0
- package/dist/runtime/factory.js +21 -0
- package/dist/runtime/factory.js.map +1 -0
- package/dist/runtime/kubernetes.d.ts +34 -0
- package/dist/runtime/kubernetes.d.ts.map +1 -0
- package/dist/runtime/kubernetes.js +513 -0
- package/dist/runtime/kubernetes.js.map +1 -0
- package/dist/runtime/types.d.ts +81 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/server-core.d.ts +26 -0
- package/dist/server-core.d.ts.map +1 -0
- package/dist/server-core.js +184 -0
- package/dist/server-core.js.map +1 -0
- package/dist/services/config-diff.d.ts +6 -0
- package/dist/services/config-diff.d.ts.map +1 -0
- package/dist/services/config-diff.js +85 -0
- package/dist/services/config-diff.js.map +1 -0
- package/dist/services/config-field-meta.d.ts +22 -0
- package/dist/services/config-field-meta.d.ts.map +1 -0
- package/dist/services/config-field-meta.js +177 -0
- package/dist/services/config-field-meta.js.map +1 -0
- package/dist/services/config-validator.d.ts +8 -0
- package/dist/services/config-validator.d.ts.map +1 -0
- package/dist/services/config-validator.js +59 -0
- package/dist/services/config-validator.js.map +1 -0
- package/dist/services/credential-audit.d.ts +13 -0
- package/dist/services/credential-audit.d.ts.map +1 -0
- package/dist/services/credential-audit.js +18 -0
- package/dist/services/credential-audit.js.map +1 -0
- package/dist/services/credential-store.d.ts +28 -0
- package/dist/services/credential-store.d.ts.map +1 -0
- package/dist/services/credential-store.js +99 -0
- package/dist/services/credential-store.js.map +1 -0
- package/dist/services/dlp-scanner.d.ts +9 -0
- package/dist/services/dlp-scanner.d.ts.map +1 -0
- package/dist/services/dlp-scanner.js +90 -0
- package/dist/services/dlp-scanner.js.map +1 -0
- package/dist/services/gateway-event-relay.d.ts +53 -0
- package/dist/services/gateway-event-relay.d.ts.map +1 -0
- package/dist/services/gateway-event-relay.js +519 -0
- package/dist/services/gateway-event-relay.js.map +1 -0
- package/dist/services/group-chat-manager.d.ts +17 -0
- package/dist/services/group-chat-manager.d.ts.map +1 -0
- package/dist/services/group-chat-manager.js +613 -0
- package/dist/services/group-chat-manager.js.map +1 -0
- package/dist/services/health-monitor.d.ts +3 -0
- package/dist/services/health-monitor.d.ts.map +1 -0
- package/dist/services/health-monitor.js +342 -0
- package/dist/services/health-monitor.js.map +1 -0
- package/dist/services/instance-manager.d.ts +20 -0
- package/dist/services/instance-manager.d.ts.map +1 -0
- package/dist/services/instance-manager.js +833 -0
- package/dist/services/instance-manager.js.map +1 -0
- package/dist/services/metadata-store.d.ts +3 -0
- package/dist/services/metadata-store.d.ts.map +1 -0
- package/dist/services/metadata-store.js +34 -0
- package/dist/services/metadata-store.js.map +1 -0
- package/dist/services/notification-store.d.ts +24 -0
- package/dist/services/notification-store.d.ts.map +1 -0
- package/dist/services/notification-store.js +216 -0
- package/dist/services/notification-store.js.map +1 -0
- package/dist/services/openrouter-models.d.ts +13 -0
- package/dist/services/openrouter-models.d.ts.map +1 -0
- package/dist/services/openrouter-models.js +46 -0
- package/dist/services/openrouter-models.js.map +1 -0
- package/dist/services/output-filter.d.ts +8 -0
- package/dist/services/output-filter.d.ts.map +1 -0
- package/dist/services/output-filter.js +230 -0
- package/dist/services/output-filter.js.map +1 -0
- package/dist/services/prompt-guard.d.ts +6 -0
- package/dist/services/prompt-guard.d.ts.map +1 -0
- package/dist/services/prompt-guard.js +165 -0
- package/dist/services/prompt-guard.js.map +1 -0
- package/dist/services/security-event-service.d.ts +11 -0
- package/dist/services/security-event-service.d.ts.map +1 -0
- package/dist/services/security-event-service.js +201 -0
- package/dist/services/security-event-service.js.map +1 -0
- package/dist/services/snapshot-store.d.ts +21 -0
- package/dist/services/snapshot-store.d.ts.map +1 -0
- package/dist/services/snapshot-store.js +330 -0
- package/dist/services/snapshot-store.js.map +1 -0
- package/dist/services/system-config.d.ts +15 -0
- package/dist/services/system-config.d.ts.map +1 -0
- package/dist/services/system-config.js +80 -0
- package/dist/services/system-config.js.map +1 -0
- package/dist/services/template-file-format.d.ts +32 -0
- package/dist/services/template-file-format.d.ts.map +1 -0
- package/dist/services/template-file-format.js +125 -0
- package/dist/services/template-file-format.js.map +1 -0
- package/dist/services/template-store.d.ts +21 -0
- package/dist/services/template-store.d.ts.map +1 -0
- package/dist/services/template-store.js +701 -0
- package/dist/services/template-store.js.map +1 -0
- package/dist/services/user-credential-store.d.ts +20 -0
- package/dist/services/user-credential-store.d.ts.map +1 -0
- package/dist/services/user-credential-store.js +243 -0
- package/dist/services/user-credential-store.js.map +1 -0
- package/dist/services/wizard-config-store.d.ts +38 -0
- package/dist/services/wizard-config-store.d.ts.map +1 -0
- package/dist/services/wizard-config-store.js +70 -0
- package/dist/services/wizard-config-store.js.map +1 -0
- package/dist/web-dist/assets/AdminPage-BrAU67Dg.js +1 -0
- package/dist/web-dist/assets/AgentAvatar-BKJckc1W.js +1 -0
- package/dist/web-dist/assets/AgentAvatar-Cq-M5jMd.css +1 -0
- package/dist/web-dist/assets/AppLayout-Bf0v_2wK.css +1 -0
- package/dist/web-dist/assets/AppLayout-DXgV0atq.js +1 -0
- package/dist/web-dist/assets/AssistantChatPage-uVLgKLay.js +6 -0
- package/dist/web-dist/assets/AssistantEditPage-Bab1X-DA.js +1 -0
- package/dist/web-dist/assets/AssistantVersionsPage-BQRw3BUF.js +1 -0
- package/dist/web-dist/assets/AvatarPicker-DmnkD8Rb.js +1 -0
- package/dist/web-dist/assets/AvatarPicker-LHUepNFa.css +1 -0
- package/dist/web-dist/assets/CeAuthProvider-38_x9VGA.js +1 -0
- package/dist/web-dist/assets/ChatHubPage-2l4cKq0x.css +1 -0
- package/dist/web-dist/assets/ChatHubPage-B2WduoUM.js +1 -0
- package/dist/web-dist/assets/ChatTab-CHpjEu8M.js +6 -0
- package/dist/web-dist/assets/CreateWizardPage-DFEQ3VX3.js +47 -0
- package/dist/web-dist/assets/CreateWizardPage-IqNXDOER.css +1 -0
- package/dist/web-dist/assets/CredentialsPage-CDeXpnLG.js +1 -0
- package/dist/web-dist/assets/CredentialsPage-aI4kLoJD.css +1 -0
- package/dist/web-dist/assets/DocsAboutPage-CMbxiw1u.js +26 -0
- package/dist/web-dist/assets/DocsChannelsPage-CtmKYKK_.js +1 -0
- package/dist/web-dist/assets/DocsGettingStartedPage-CpM7o8sw.js +1 -0
- package/dist/web-dist/assets/DocsGroupChatsPage-7w-RVSJR.js +1 -0
- package/dist/web-dist/assets/DocsHomePage-BGEU5xBg.js +1 -0
- package/dist/web-dist/assets/DocsInstancesPage-Sewnw_x7.js +1 -0
- package/dist/web-dist/assets/DocsLayout-S7-ONZwP.js +1 -0
- package/dist/web-dist/assets/DocsProvidersPage-MeWneL5K.js +1 -0
- package/dist/web-dist/assets/DocsSkillsPage-CzsHPXxE.js +1 -0
- package/dist/web-dist/assets/DocsTemplatesPage-BXASAEoO.js +1 -0
- package/dist/web-dist/assets/DocsWorkspacePage-qYNeK_YS.js +24 -0
- package/dist/web-dist/assets/ExportWizardPage-BhNvovbU.js +3 -0
- package/dist/web-dist/assets/ExportWizardPage-Cp-KSYUy.css +1 -0
- package/dist/web-dist/assets/GoogleOAuthCallback-CBvLawe2.js +1 -0
- package/dist/web-dist/assets/GroupChatPage-rMfhmtsX.js +1 -0
- package/dist/web-dist/assets/GroupChatsListPage-BOwxHFfA.js +1 -0
- package/dist/web-dist/assets/InstancePage-BBL68DKB.js +1 -0
- package/dist/web-dist/assets/InstancePage-CzysRY40.css +1 -0
- package/dist/web-dist/assets/MyAssistantsPage-B808ZfHg.css +1 -0
- package/dist/web-dist/assets/MyAssistantsPage-q3-hNMth.js +1 -0
- package/dist/web-dist/assets/ProfilePage-Dx8YdU59.js +1 -0
- package/dist/web-dist/assets/ProfilePage-JMOkUDx7.css +1 -0
- package/dist/web-dist/assets/SessionDrawer-Ba7pbZDJ.css +1 -0
- package/dist/web-dist/assets/SessionDrawer-CXzEQAfF.js +1 -0
- package/dist/web-dist/assets/SystemConfigPage-4dvxADwi.js +1 -0
- package/dist/web-dist/assets/SystemConfigPage-DRqVfLGt.css +1 -0
- package/dist/web-dist/assets/TemplatesPage-DqXuG-Gy.css +1 -0
- package/dist/web-dist/assets/TemplatesPage-HMS__ODO.js +1 -0
- package/dist/web-dist/assets/TestLoginPage-xVQL0lYP.js +1 -0
- package/dist/web-dist/assets/ThemeToggle-DymKEYXG.js +1 -0
- package/dist/web-dist/assets/WorkbenchPage-Bymo4SSt.css +1 -0
- package/dist/web-dist/assets/WorkbenchPage-ST3hVrbL.js +33 -0
- package/dist/web-dist/assets/api-B5psysvQ.js +1 -0
- package/dist/web-dist/assets/clock-dRyRszad.js +1 -0
- package/dist/web-dist/assets/createLucideIcon-DiGX-lN4.js +1 -0
- package/dist/web-dist/assets/group-chat-9BaA9G_8.css +1 -0
- package/dist/web-dist/assets/index-BqzqZJ96.js +26 -0
- package/dist/web-dist/assets/index-DyrDN1Of.css +1 -0
- package/dist/web-dist/assets/index-wWimwgy7.js +1 -0
- package/dist/web-dist/assets/provider-display-BgrE7u33.js +1 -0
- package/dist/web-dist/assets/types-1lNWpzYk.js +57 -0
- package/dist/web-dist/assets/types-B6ttO-6G.css +1 -0
- package/dist/web-dist/assets/useTranslation-B-8kenfJ.js +1 -0
- package/dist/web-dist/assets/zap-CVBnETFW.js +1 -0
- package/dist/web-dist/index.html +31 -0
- package/dist/web-dist/vite.svg +1 -0
- package/dist/ws/index.d.ts +7 -0
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +112 -0
- package/dist/ws/index.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getAdapter } from '../adapter.js';
|
|
2
|
+
import { alterColumnNullable, dropConstraint } from '../migration-helpers.js';
|
|
3
|
+
export async function up(knex) {
|
|
4
|
+
// 1. group_chat_members: add role, human member support
|
|
5
|
+
await knex.schema.alterTable('group_chat_members', (t) => {
|
|
6
|
+
t.text('role').nullable(); // role description for context injection
|
|
7
|
+
t.boolean('is_human').notNullable().defaultTo(false);
|
|
8
|
+
t.uuid('user_id').nullable().references('id').inTable('users').onDelete('CASCADE');
|
|
9
|
+
// instance_id must become nullable for human members (they have no instance)
|
|
10
|
+
});
|
|
11
|
+
// Make instance_id nullable (ALTER COLUMN ... DROP NOT NULL)
|
|
12
|
+
await alterColumnNullable(knex, 'group_chat_members', 'instance_id', true);
|
|
13
|
+
// Drop the existing unique constraint on (group_chat_id, instance_id) since
|
|
14
|
+
// human members won't have an instance_id
|
|
15
|
+
await dropConstraint(knex, 'group_chat_members', 'group_chat_members_group_chat_id_instance_id_unique');
|
|
16
|
+
// Add a partial unique index: for bot members, (group_chat_id, instance_id) must be unique
|
|
17
|
+
// SQLite supports partial indexes with WHERE clauses, so this works on both dialects
|
|
18
|
+
await knex.raw('CREATE UNIQUE INDEX idx_gcm_bot_unique ON group_chat_members(group_chat_id, instance_id) WHERE instance_id IS NOT NULL');
|
|
19
|
+
// Add a partial unique index: for human members, (group_chat_id, user_id) must be unique
|
|
20
|
+
await knex.raw('CREATE UNIQUE INDEX idx_gcm_human_unique ON group_chat_members(group_chat_id, user_id) WHERE user_id IS NOT NULL');
|
|
21
|
+
// 2. group_chat_delivery_status: add retry tracking
|
|
22
|
+
await knex.schema.alterTable('group_chat_delivery_status', (t) => {
|
|
23
|
+
t.integer('retry_count').notNullable().defaultTo(0);
|
|
24
|
+
t.integer('max_retries').notNullable().defaultTo(3);
|
|
25
|
+
t.timestamp('next_retry_at', { useTz: true }).nullable();
|
|
26
|
+
});
|
|
27
|
+
// 3. group_chat_messages: add sender_user_id for human senders
|
|
28
|
+
await knex.schema.alterTable('group_chat_messages', (t) => {
|
|
29
|
+
t.uuid('sender_user_id').nullable().references('id').inTable('users').onDelete('SET NULL');
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export async function down(knex) {
|
|
33
|
+
// Reverse message changes
|
|
34
|
+
await knex.schema.alterTable('group_chat_messages', (t) => {
|
|
35
|
+
t.dropColumn('sender_user_id');
|
|
36
|
+
});
|
|
37
|
+
// Reverse delivery_status changes
|
|
38
|
+
await knex.schema.alterTable('group_chat_delivery_status', (t) => {
|
|
39
|
+
t.dropColumn('retry_count');
|
|
40
|
+
t.dropColumn('max_retries');
|
|
41
|
+
t.dropColumn('next_retry_at');
|
|
42
|
+
});
|
|
43
|
+
// Reverse member changes
|
|
44
|
+
await knex.raw('DROP INDEX IF EXISTS idx_gcm_human_unique');
|
|
45
|
+
await knex.raw('DROP INDEX IF EXISTS idx_gcm_bot_unique');
|
|
46
|
+
// Delete human members before restoring NOT NULL
|
|
47
|
+
await knex('group_chat_members').where({ is_human: true }).delete();
|
|
48
|
+
await alterColumnNullable(knex, 'group_chat_members', 'instance_id', false);
|
|
49
|
+
// Re-create original unique constraint (Postgres only — SQLite does not support ADD CONSTRAINT)
|
|
50
|
+
if (getAdapter().dialect === 'pg') {
|
|
51
|
+
await knex.raw('ALTER TABLE group_chat_members ADD CONSTRAINT group_chat_members_group_chat_id_instance_id_unique UNIQUE (group_chat_id, instance_id)');
|
|
52
|
+
}
|
|
53
|
+
await knex.schema.alterTable('group_chat_members', (t) => {
|
|
54
|
+
t.dropColumn('role');
|
|
55
|
+
t.dropColumn('is_human');
|
|
56
|
+
t.dropColumn('user_id');
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=007_group_chat_v2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"007_group_chat_v2.js","sourceRoot":"","sources":["../../../src/db/migrations/007_group_chat_v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"008_default_provider_openrouter.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/008_default_provider_openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAelD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAepD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export async function up(knex) {
|
|
2
|
+
await knex.raw(`
|
|
3
|
+
UPDATE instances
|
|
4
|
+
SET config = jsonb_set(
|
|
5
|
+
jsonb_set(
|
|
6
|
+
config::jsonb,
|
|
7
|
+
'{defaultProvider}',
|
|
8
|
+
'"openrouter"'
|
|
9
|
+
),
|
|
10
|
+
'{defaultModel}',
|
|
11
|
+
'"anthropic/claude-sonnet-4"'
|
|
12
|
+
)
|
|
13
|
+
WHERE agent_type = 'openclaw'
|
|
14
|
+
AND config::jsonb ->> 'defaultProvider' = 'anthropic'
|
|
15
|
+
`);
|
|
16
|
+
}
|
|
17
|
+
export async function down(knex) {
|
|
18
|
+
await knex.raw(`
|
|
19
|
+
UPDATE instances
|
|
20
|
+
SET config = jsonb_set(
|
|
21
|
+
jsonb_set(
|
|
22
|
+
config::jsonb,
|
|
23
|
+
'{defaultProvider}',
|
|
24
|
+
'"anthropic"'
|
|
25
|
+
),
|
|
26
|
+
'{defaultModel}',
|
|
27
|
+
'"claude-sonnet-4-20250514"'
|
|
28
|
+
)
|
|
29
|
+
WHERE agent_type = 'openclaw'
|
|
30
|
+
AND config::jsonb ->> 'defaultProvider' = 'openrouter'
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=008_default_provider_openrouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"008_default_provider_openrouter.js","sourceRoot":"","sources":["../../../src/db/migrations/008_default_provider_openrouter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;GAad,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;GAad,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"009_opencode_default_provider_openrouter.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/009_opencode_default_provider_openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAelD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAepD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export async function up(knex) {
|
|
2
|
+
await knex.raw(`
|
|
3
|
+
UPDATE instances
|
|
4
|
+
SET config = jsonb_set(
|
|
5
|
+
jsonb_set(
|
|
6
|
+
config::jsonb,
|
|
7
|
+
'{defaultProvider}',
|
|
8
|
+
'"openrouter"'
|
|
9
|
+
),
|
|
10
|
+
'{defaultModel}',
|
|
11
|
+
'"anthropic/claude-sonnet-4.5"'
|
|
12
|
+
)
|
|
13
|
+
WHERE agent_type = 'opencode'
|
|
14
|
+
AND config::jsonb ->> 'defaultProvider' = 'anthropic'
|
|
15
|
+
`);
|
|
16
|
+
}
|
|
17
|
+
export async function down(knex) {
|
|
18
|
+
await knex.raw(`
|
|
19
|
+
UPDATE instances
|
|
20
|
+
SET config = jsonb_set(
|
|
21
|
+
jsonb_set(
|
|
22
|
+
config::jsonb,
|
|
23
|
+
'{defaultProvider}',
|
|
24
|
+
'"anthropic"'
|
|
25
|
+
),
|
|
26
|
+
'{defaultModel}',
|
|
27
|
+
'"claude-sonnet-4-20250514"'
|
|
28
|
+
)
|
|
29
|
+
WHERE agent_type = 'opencode'
|
|
30
|
+
AND config::jsonb ->> 'defaultProvider' = 'openrouter'
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=009_opencode_default_provider_openrouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"009_opencode_default_provider_openrouter.js","sourceRoot":"","sources":["../../../src/db/migrations/009_opencode_default_provider_openrouter.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;GAad,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;GAad,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"010_fix_null_default_provider.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/010_fix_null_default_provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export async function up(knex) {
|
|
2
|
+
// Fix instances where defaultProvider was never set (NULL).
|
|
3
|
+
// These fall back to adapter defaults at runtime but cause issues
|
|
4
|
+
// because the gateway sees a model path like "openrouter/anthropic/..."
|
|
5
|
+
// and tries to use "anthropic" as the provider directly.
|
|
6
|
+
await knex.raw(`
|
|
7
|
+
UPDATE instances
|
|
8
|
+
SET config = jsonb_set(
|
|
9
|
+
jsonb_set(
|
|
10
|
+
COALESCE(config::jsonb, '{}'::jsonb),
|
|
11
|
+
'{defaultProvider}',
|
|
12
|
+
'"openrouter"'
|
|
13
|
+
),
|
|
14
|
+
'{defaultModel}',
|
|
15
|
+
'"anthropic/claude-sonnet-4.5"'
|
|
16
|
+
)
|
|
17
|
+
WHERE config::jsonb ->> 'defaultProvider' IS NULL
|
|
18
|
+
OR config::jsonb ->> 'defaultProvider' = 'anthropic'
|
|
19
|
+
`);
|
|
20
|
+
}
|
|
21
|
+
export async function down(knex) {
|
|
22
|
+
// No-op: we can't distinguish which instances had NULL vs 'anthropic' before
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=010_fix_null_default_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"010_fix_null_default_provider.js","sourceRoot":"","sources":["../../../src/db/migrations/010_fix_null_default_provider.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,4DAA4D;IAC5D,kEAAkE;IAClE,wEAAwE;IACxE,yDAAyD;IACzD,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;GAad,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,6EAA6E;AAC/E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"011_snapshots.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/011_snapshots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { addUuidPrimary, addUuidColumn, addJsonColumn, addCheckConstraint } from '../migration-helpers.js';
|
|
2
|
+
export async function up(knex) {
|
|
3
|
+
await knex.schema.createTable('snapshots', (t) => {
|
|
4
|
+
addUuidPrimary(t, knex, 'id');
|
|
5
|
+
addUuidColumn(t, 'instance_id').notNullable().references('id').inTable('instances').onDelete('CASCADE');
|
|
6
|
+
addUuidColumn(t, 'user_id').notNullable().references('id').inTable('users');
|
|
7
|
+
// Snapshot content
|
|
8
|
+
addJsonColumn(t, 'config_snapshot').notNullable();
|
|
9
|
+
addJsonColumn(t, 'workspace_files').notNullable().defaultTo('{}');
|
|
10
|
+
addJsonColumn(t, 'credential_refs').notNullable().defaultTo('[]');
|
|
11
|
+
// Metadata
|
|
12
|
+
t.text('description').nullable();
|
|
13
|
+
t.string('trigger_type', 32).notNullable().defaultTo('manual');
|
|
14
|
+
t.text('trigger_detail').nullable();
|
|
15
|
+
t.string('instance_status', 32).nullable();
|
|
16
|
+
t.integer('total_size_bytes').nullable();
|
|
17
|
+
t.timestamp('created_at', { useTz: true }).notNullable().defaultTo(knex.fn.now());
|
|
18
|
+
});
|
|
19
|
+
// Constraint and indexes
|
|
20
|
+
await addCheckConstraint(knex, 'snapshots', 'valid_trigger', "trigger_type IN ('manual', 'pre_operation', 'daily')");
|
|
21
|
+
await knex.raw('CREATE INDEX idx_snapshots_instance ON snapshots(instance_id, created_at DESC)');
|
|
22
|
+
await knex.raw('CREATE INDEX idx_snapshots_user ON snapshots(user_id)');
|
|
23
|
+
}
|
|
24
|
+
export async function down(knex) {
|
|
25
|
+
await knex.schema.dropTableIfExists('snapshots');
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=011_snapshots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"011_snapshots.js","sourceRoot":"","sources":["../../../src/db/migrations/011_snapshots.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE3G,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC/C,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,aAAa,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxG,aAAa,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE5E,mBAAmB;QACnB,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;QAClD,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClE,aAAa,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAElE,WAAW;QACX,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC/D,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEzC,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,yBAAyB;IACzB,MAAM,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,sDAAsD,CAAC,CAAC;IACrH,MAAM,IAAI,CAAC,GAAG,CACZ,gFAAgF,CACjF,CAAC;IACF,MAAM,IAAI,CAAC,GAAG,CACZ,uDAAuD,CACxD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"013_official_templates.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/013_official_templates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA2IjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAQpD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
const OFFICIAL_TEMPLATES = [
|
|
2
|
+
{
|
|
3
|
+
slug: 'general-ai-assistant',
|
|
4
|
+
name: '通用 AI 助手',
|
|
5
|
+
description: '一个功能全面的通用 AI 助手,支持日常对话、知识问答、写作辅助等多种场景。适合个人使用,开箱即用。',
|
|
6
|
+
category: 'personal',
|
|
7
|
+
tags: JSON.stringify(['通用', '助手', '对话', '写作']),
|
|
8
|
+
locale: 'zh-CN',
|
|
9
|
+
license: 'public',
|
|
10
|
+
trust_level: 'official',
|
|
11
|
+
billing_mode: 'platform',
|
|
12
|
+
agent_type: 'openclaw',
|
|
13
|
+
required_credentials: JSON.stringify([]),
|
|
14
|
+
mcp_servers: JSON.stringify({}),
|
|
15
|
+
skills: JSON.stringify([]),
|
|
16
|
+
suggested_channels: JSON.stringify([]),
|
|
17
|
+
workspaceFiles: {
|
|
18
|
+
'AGENTS.md': `# Agents Configuration
|
|
19
|
+
|
|
20
|
+
## Default Agent
|
|
21
|
+
- Model: Use platform default
|
|
22
|
+
- Purpose: General-purpose AI assistant
|
|
23
|
+
`,
|
|
24
|
+
'SOUL.md': `# Soul
|
|
25
|
+
|
|
26
|
+
你是一个友善、专业的 AI 助手。你乐于助人,善于倾听,并且总是以用户需求为导向。
|
|
27
|
+
|
|
28
|
+
## 核心原则
|
|
29
|
+
- 准确回答问题,如果不确定就诚实说明
|
|
30
|
+
- 使用清晰简洁的语言
|
|
31
|
+
- 尊重用户隐私
|
|
32
|
+
- 主动提供有用的建议和补充信息
|
|
33
|
+
`,
|
|
34
|
+
'IDENTITY.md': `# Identity
|
|
35
|
+
|
|
36
|
+
- 名称: AI 助手
|
|
37
|
+
- 语言: 中文(同时支持英文)
|
|
38
|
+
- 性格: 友善、专业、耐心
|
|
39
|
+
`,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
slug: 'customer-service-bot',
|
|
44
|
+
name: '客服 Bot',
|
|
45
|
+
description: '专为客户服务场景设计的 AI 机器人,擅长处理客户咨询、问题解答和工单分类。支持多渠道接入。',
|
|
46
|
+
category: 'customer-service',
|
|
47
|
+
tags: JSON.stringify(['客服', '服务', '工单', '多渠道']),
|
|
48
|
+
locale: 'zh-CN',
|
|
49
|
+
license: 'public',
|
|
50
|
+
trust_level: 'official',
|
|
51
|
+
billing_mode: 'platform',
|
|
52
|
+
agent_type: 'openclaw',
|
|
53
|
+
required_credentials: JSON.stringify([]),
|
|
54
|
+
mcp_servers: JSON.stringify({}),
|
|
55
|
+
skills: JSON.stringify([]),
|
|
56
|
+
suggested_channels: JSON.stringify(['telegram']),
|
|
57
|
+
workspaceFiles: {
|
|
58
|
+
'AGENTS.md': `# Agents Configuration
|
|
59
|
+
|
|
60
|
+
## Default Agent
|
|
61
|
+
- Model: Use platform default
|
|
62
|
+
- Purpose: Customer service and support
|
|
63
|
+
`,
|
|
64
|
+
'SOUL.md': `# Soul
|
|
65
|
+
|
|
66
|
+
你是一个专业的客服助手,专注于为客户提供高质量的支持服务。
|
|
67
|
+
|
|
68
|
+
## 核心原则
|
|
69
|
+
- 始终保持礼貌和耐心
|
|
70
|
+
- 快速理解客户问题并提供解决方案
|
|
71
|
+
- 无法解决的问题及时升级
|
|
72
|
+
- 记录重要信息便于后续跟进
|
|
73
|
+
|
|
74
|
+
## 工作流程
|
|
75
|
+
1. 问候客户,确认身份
|
|
76
|
+
2. 仔细倾听问题描述
|
|
77
|
+
3. 分析问题类型(咨询/投诉/技术支持)
|
|
78
|
+
4. 提供解决方案或升级处理
|
|
79
|
+
5. 确认客户满意度
|
|
80
|
+
`,
|
|
81
|
+
'IDENTITY.md': `# Identity
|
|
82
|
+
|
|
83
|
+
- 名称: 客服助手
|
|
84
|
+
- 语言: 中文
|
|
85
|
+
- 性格: 专业、耐心、有同理心
|
|
86
|
+
- 角色: 客户服务代表
|
|
87
|
+
`,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
slug: 'team-collaboration-assistant',
|
|
92
|
+
name: '团队协作助手',
|
|
93
|
+
description: '帮助团队提高协作效率的 AI 助手,支持会议总结、任务分配、进度跟踪等团队协作场景。',
|
|
94
|
+
category: 'custom',
|
|
95
|
+
tags: JSON.stringify(['团队', '协作', '会议', '任务管理']),
|
|
96
|
+
locale: 'zh-CN',
|
|
97
|
+
license: 'public',
|
|
98
|
+
trust_level: 'official',
|
|
99
|
+
billing_mode: 'platform',
|
|
100
|
+
agent_type: 'openclaw',
|
|
101
|
+
required_credentials: JSON.stringify([]),
|
|
102
|
+
mcp_servers: JSON.stringify({}),
|
|
103
|
+
skills: JSON.stringify([]),
|
|
104
|
+
suggested_channels: JSON.stringify([]),
|
|
105
|
+
workspaceFiles: {
|
|
106
|
+
'AGENTS.md': `# Agents Configuration
|
|
107
|
+
|
|
108
|
+
## Default Agent
|
|
109
|
+
- Model: Use platform default
|
|
110
|
+
- Purpose: Team collaboration and productivity
|
|
111
|
+
`,
|
|
112
|
+
'SOUL.md': `# Soul
|
|
113
|
+
|
|
114
|
+
你是一个团队协作助手,专注于帮助团队提升工作效率和协作质量。
|
|
115
|
+
|
|
116
|
+
## 核心能力
|
|
117
|
+
- 会议记录与总结
|
|
118
|
+
- 任务拆解与分配建议
|
|
119
|
+
- 进度跟踪与提醒
|
|
120
|
+
- 团队知识管理
|
|
121
|
+
|
|
122
|
+
## 工作原则
|
|
123
|
+
- 结构化输出,便于团队成员快速获取信息
|
|
124
|
+
- 主动提醒重要事项和截止日期
|
|
125
|
+
- 客观中立,促进团队沟通
|
|
126
|
+
`,
|
|
127
|
+
'IDENTITY.md': `# Identity
|
|
128
|
+
|
|
129
|
+
- 名称: 协作助手
|
|
130
|
+
- 语言: 中文
|
|
131
|
+
- 性格: 高效、条理清晰、注重细节
|
|
132
|
+
- 角色: 团队协作协调员
|
|
133
|
+
`,
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
export async function up(knex) {
|
|
138
|
+
const firstUser = await knex('users').select('id', 'display_name').orderBy('created_at', 'asc').first();
|
|
139
|
+
if (!firstUser)
|
|
140
|
+
return;
|
|
141
|
+
for (const tpl of OFFICIAL_TEMPLATES) {
|
|
142
|
+
const existing = await knex('templates').where({ slug: tpl.slug, is_latest: true }).first();
|
|
143
|
+
if (existing)
|
|
144
|
+
continue;
|
|
145
|
+
const { workspaceFiles, ...manifest } = tpl;
|
|
146
|
+
const [row] = await knex('templates')
|
|
147
|
+
.insert({
|
|
148
|
+
...manifest,
|
|
149
|
+
author_id: firstUser.id,
|
|
150
|
+
author_name: firstUser.display_name,
|
|
151
|
+
})
|
|
152
|
+
.returning('id');
|
|
153
|
+
await knex('template_contents').insert({
|
|
154
|
+
template_id: row.id,
|
|
155
|
+
workspace_files: JSON.stringify(workspaceFiles),
|
|
156
|
+
mcp_server_configs: JSON.stringify({}),
|
|
157
|
+
inline_skills: JSON.stringify({}),
|
|
158
|
+
openclaw_config: JSON.stringify({}),
|
|
159
|
+
setup_commands: JSON.stringify([]),
|
|
160
|
+
custom_image: null,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
export async function down(knex) {
|
|
165
|
+
const slugs = OFFICIAL_TEMPLATES.map((t) => t.slug);
|
|
166
|
+
const templates = await knex('templates').whereIn('slug', slugs).select('id');
|
|
167
|
+
const ids = templates.map((t) => t.id);
|
|
168
|
+
if (ids.length > 0) {
|
|
169
|
+
await knex('template_contents').whereIn('template_id', ids).delete();
|
|
170
|
+
await knex('templates').whereIn('id', ids).delete();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=013_official_templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"013_official_templates.js","sourceRoot":"","sources":["../../../src/db/migrations/013_official_templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"014_notifications.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/014_notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { getAdapter } from '../adapter.js';
|
|
2
|
+
import { addUuidPrimary, addUuidColumn, addJsonColumn, addCheckConstraint } from '../migration-helpers.js';
|
|
3
|
+
export async function up(knex) {
|
|
4
|
+
await knex.schema.createTable('notifications', (table) => {
|
|
5
|
+
addUuidPrimary(table, knex, 'id');
|
|
6
|
+
addUuidColumn(table, 'user_id').notNullable().references('id').inTable('users').onDelete('CASCADE');
|
|
7
|
+
addUuidColumn(table, 'instance_id').nullable().references('id').inTable('instances').onDelete('CASCADE');
|
|
8
|
+
table.string('type', 50).notNullable();
|
|
9
|
+
table.string('severity', 20).notNullable();
|
|
10
|
+
table.string('title', 200).notNullable();
|
|
11
|
+
table.text('body').nullable();
|
|
12
|
+
addJsonColumn(table, 'metadata').notNullable().defaultTo('{}');
|
|
13
|
+
table.timestamp('read_at', { useTz: true }).nullable();
|
|
14
|
+
table.timestamp('dismissed_at', { useTz: true }).nullable();
|
|
15
|
+
table.timestamp('created_at', { useTz: true }).notNullable().defaultTo(knex.fn.now());
|
|
16
|
+
});
|
|
17
|
+
await addCheckConstraint(knex, 'notifications', 'chk_notification_type', "type IN ('budget_warning', 'budget_critical', 'budget_exhausted', 'burn_rate_spike', 'instance_stopped', 'daily_digest')");
|
|
18
|
+
await addCheckConstraint(knex, 'notifications', 'chk_notification_severity', "severity IN ('info', 'warn', 'critical')");
|
|
19
|
+
// Partial index on unread notifications — SQLite supports WHERE clause
|
|
20
|
+
await knex.raw(`
|
|
21
|
+
CREATE INDEX idx_notifications_user_unread
|
|
22
|
+
ON notifications (user_id, created_at DESC)
|
|
23
|
+
WHERE read_at IS NULL
|
|
24
|
+
`);
|
|
25
|
+
// Dedup index: Postgres uses timezone()::date, SQLite uses date()
|
|
26
|
+
if (getAdapter().dialect === 'pg') {
|
|
27
|
+
await knex.raw(`
|
|
28
|
+
CREATE UNIQUE INDEX idx_notifications_dedup
|
|
29
|
+
ON notifications (user_id, type, (timezone('UTC', created_at)::date))
|
|
30
|
+
WHERE dismissed_at IS NULL
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// SQLite: use date() function for equivalent dedup index
|
|
35
|
+
await knex.raw(`
|
|
36
|
+
CREATE UNIQUE INDEX idx_notifications_dedup
|
|
37
|
+
ON notifications (user_id, type, date(created_at))
|
|
38
|
+
WHERE dismissed_at IS NULL
|
|
39
|
+
`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function down(knex) {
|
|
43
|
+
await knex.schema.dropTableIfExists('notifications');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=014_notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"014_notifications.js","sourceRoot":"","sources":["../../../src/db/migrations/014_notifications.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE3G,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QACvD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpG,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACzG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/D,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QACvD,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC5D,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACtB,IAAI,EACJ,eAAe,EACf,uBAAuB,EACvB,0HAA0H,CAC3H,CAAC;IAEF,MAAM,kBAAkB,CACtB,IAAI,EACJ,eAAe,EACf,2BAA2B,EAC3B,0CAA0C,CAC3C,CAAC;IAEF,uEAAuE;IACvE,MAAM,IAAI,CAAC,GAAG,CAAC;;;;GAId,CAAC,CAAC;IAEH,kEAAkE;IAClE,IAAI,UAAU,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,IAAI,CAAC,GAAG,CAAC;;;;KAId,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,yDAAyD;QACzD,MAAM,IAAI,CAAC,GAAG,CAAC;;;;KAId,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"015_security_profile.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/015_security_profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAUlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { addCheckConstraint, dropConstraint } from '../migration-helpers.js';
|
|
2
|
+
export async function up(knex) {
|
|
3
|
+
await knex.schema.alterTable('instances', (t) => {
|
|
4
|
+
t.string('security_profile', 20).notNullable().defaultTo('standard');
|
|
5
|
+
});
|
|
6
|
+
await addCheckConstraint(knex, 'instances', 'chk_security_profile', "security_profile IN ('strict','standard','developer','unrestricted')");
|
|
7
|
+
}
|
|
8
|
+
export async function down(knex) {
|
|
9
|
+
await dropConstraint(knex, 'instances', 'chk_security_profile');
|
|
10
|
+
await knex.schema.alterTable('instances', (t) => {
|
|
11
|
+
t.dropColumn('security_profile');
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=015_security_profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"015_security_profile.js","sourceRoot":"","sources":["../../../src/db/migrations/015_security_profile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE7E,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9C,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,MAAM,kBAAkB,CACtB,IAAI,EACJ,WAAW,EACX,sBAAsB,EACtB,sEAAsE,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAChE,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QAC9C,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"016_template_security.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/016_template_security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { addJsonColumn } from '../migration-helpers.js';
|
|
2
|
+
export async function up(knex) {
|
|
3
|
+
await knex.schema.alterTable('template_contents', (t) => {
|
|
4
|
+
addJsonColumn(t, 'security').nullable().defaultTo(null);
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
export async function down(knex) {
|
|
8
|
+
await knex.schema.alterTable('template_contents', (t) => {
|
|
9
|
+
t.dropColumn('security');
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=016_template_security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"016_template_security.js","sourceRoot":"","sources":["../../../src/db/migrations/016_template_security.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;QACtD,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,EAAE;QACtD,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"017_auth_events.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/017_auth_events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAclD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { addUuidPrimary, addUuidColumn } from '../migration-helpers.js';
|
|
2
|
+
export async function up(knex) {
|
|
3
|
+
await knex.schema.createTable('auth_events', (table) => {
|
|
4
|
+
addUuidPrimary(table, knex, 'id');
|
|
5
|
+
table.string('event_type', 50).notNullable();
|
|
6
|
+
addUuidColumn(table, 'user_id').references('id').inTable('users').onDelete('SET NULL');
|
|
7
|
+
table.string('email', 255).notNullable();
|
|
8
|
+
table.string('ip_address', 45);
|
|
9
|
+
table.text('user_agent');
|
|
10
|
+
table.string('failure_reason', 255);
|
|
11
|
+
table.timestamp('created_at', { useTz: true }).defaultTo(knex.fn.now());
|
|
12
|
+
});
|
|
13
|
+
await knex.schema.raw('CREATE INDEX idx_auth_events_user ON auth_events(user_id, created_at DESC)');
|
|
14
|
+
await knex.schema.raw('CREATE INDEX idx_auth_events_type ON auth_events(event_type, created_at DESC)');
|
|
15
|
+
}
|
|
16
|
+
export async function down(knex) {
|
|
17
|
+
await knex.schema.dropTableIfExists('auth_events');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=017_auth_events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"017_auth_events.js","sourceRoot":"","sources":["../../../src/db/migrations/017_auth_events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC,IAAU;IACjC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;QACrD,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvF,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QACzC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QACpC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;IACpG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;AACzG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAU;IACnC,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"018_skill_market.d.ts","sourceRoot":"","sources":["../../../src/db/migrations/018_skill_market.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,wBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAYlD;AAED,wBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { addUuidPrimary, addJsonColumn } from '../migration-helpers.js';
|
|
2
|
+
export async function up(knex) {
|
|
3
|
+
await knex.schema.alterTable('templates', (table) => {
|
|
4
|
+
table.integer('usage_count').notNullable().defaultTo(0);
|
|
5
|
+
table.boolean('featured').notNullable().defaultTo(false);
|
|
6
|
+
});
|
|
7
|
+
await knex.schema.createTable('system_settings', (table) => {
|
|
8
|
+
addUuidPrimary(table, knex, 'id');
|
|
9
|
+
table.string('key', 255).notNullable().unique();
|
|
10
|
+
addJsonColumn(table, 'value').notNullable();
|
|
11
|
+
table.timestamp('updated_at', { useTz: true }).defaultTo(knex.fn.now());
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export async function down(knex) {
|
|
15
|
+
await knex.schema.dropTableIfExists('system_settings');
|
|
16
|
+
await knex.schema.alterTable('templates', (table) => {
|
|
17
|
+
table.dropColumn('usage_count');
|
|
18
|
+
table.dropColumn('featured');
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=018_skill_market.js.map
|