mcp-server-appwrite 2.1.0__tar.gz → 2.1.1__tar.gz
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.
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/PKG-INFO +1 -1
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/views.py +6 -1
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/view.html +47 -2
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/data/docs_index.npz +1 -1
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_apps.py +13 -3
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.dockerignore +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.env.example +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/ci.yml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/production.yml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/publish.yml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/staging.yml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/update-docs-index.yml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.gitignore +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.python-version +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/AGENTS.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/CLAUDE.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/Dockerfile +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/LICENSE +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/README.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/compose.yaml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/apps.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/appwrite-mcp-flow.png +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/appwrite-mcp-flow.svg +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/authentication.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/development.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/documentation-search.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/events.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/flags.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/images/claude-desktop-local-mcp-servers.png +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/images/codex-mcp.png +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/images/cursor-mcp.png +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/self-hosted.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/docs/tool-surface.md +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/glama.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/pyproject.toml +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/scripts/build_docs_index.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/scripts/docs_release_notes.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/scripts/render_server_json.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/server.template.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/__init__.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/__main__.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/__init__.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/protocol.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/resource.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/__init__.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/favicon.svg +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/instructions.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/auth.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/catalog_policy.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/constants.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/context.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_index.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_search.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_source.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/error_classification.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/error_monitoring.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/__init__.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/bus.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/catalog.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/delivery.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/egress.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/envelope.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/errors.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/ingress.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/projection.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/protocol.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/streams.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/subscriptions.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/webhooks.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/flags.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/http_app.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/instructions.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/legacy.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/operator.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/server.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/service.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/telemetry.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/tool_manager.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/deployment_function_duplicate.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/deployment_function_failed.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/deployment_function_ready.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/deployment_site_ready.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/execution_async_failed.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/execution_async_waiting.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/execution_sync_failed.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/file_created.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/function_activation.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/row_created.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/user_created.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/support.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_events_ingress.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_events_protocol.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_events_stream.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_events_subscribe.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_stdio.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/test_tools.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/support.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_avatars.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_console_sdk_oauth.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_docs_index.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_docs_source.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_functions.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_locale.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_messaging.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_oauth_discovery.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_operator.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_sites.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_storage.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_tables_db.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_teams.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_users.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/test_all.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/fixtures/jwe-v1.json +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_auth.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_context.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_docs.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_docs_search.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_error_classification.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_error_monitoring.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_events_delivery.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_events_egress.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_events_envelope.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_events_protocol.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_http_app.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_instructions.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_operator.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_release_metadata.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_server.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_service.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_telemetry.py +0 -0
- {mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: mcp-server-appwrite
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.1
|
|
4
4
|
Summary: Build and deploy application backends. Add authentication, PostgreSQL/MySQL databases, vector databases, storage, serverless functions, realtime, messaging, hosting, domains, CDN and firewall.
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Requires-Python: >=3.12
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/views.py
RENAMED
|
@@ -19,6 +19,7 @@ what such a script could do.
|
|
|
19
19
|
from __future__ import annotations
|
|
20
20
|
|
|
21
21
|
import json
|
|
22
|
+
import re
|
|
22
23
|
from collections.abc import Callable
|
|
23
24
|
from enum import StrEnum
|
|
24
25
|
from typing import Any
|
|
@@ -46,6 +47,10 @@ SUMMARY_ROWS = 10
|
|
|
46
47
|
SUMMARY_COLUMNS = 4
|
|
47
48
|
SUMMARY_CELL = 24
|
|
48
49
|
|
|
50
|
+
ANSI = re.compile(r"\x1b\[[0-9;?]*[ -/]*[@-~]")
|
|
51
|
+
"""Terminal escape sequences (colors, cursor moves) in build logs: the view
|
|
52
|
+
renders the colors, the model's summary drops them."""
|
|
53
|
+
|
|
49
54
|
TERMINAL_STATUSES = frozenset({"ready", "failed", "canceled"})
|
|
50
55
|
|
|
51
56
|
WRITES = (
|
|
@@ -387,5 +392,5 @@ def _deployment_summary(data: dict[str, Any]) -> str:
|
|
|
387
392
|
logs = deployment["logs"][-SUMMARY_LOG_LINES:]
|
|
388
393
|
if logs:
|
|
389
394
|
lines.append("Last build log lines:")
|
|
390
|
-
lines.extend(logs)
|
|
395
|
+
lines.extend(ANSI.sub("", line) for line in logs)
|
|
391
396
|
return "\n".join(lines)
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/view.html
RENAMED
|
@@ -183,6 +183,14 @@ pre.logs {
|
|
|
183
183
|
.status { padding: 32px 18px; text-align: center; color: var(--color-text-secondary); }
|
|
184
184
|
.status.error { color: var(--color-text-danger); text-align: left; white-space: pre-wrap; }
|
|
185
185
|
:root[data-display="fullscreen"] pre.logs { height: 60vh; }
|
|
186
|
+
.ansi-bold { font-weight: var(--font-weight-semibold); }
|
|
187
|
+
.ansi-dim, .ansi-gray, .ansi-black { color: var(--color-text-secondary); }
|
|
188
|
+
.ansi-red { color: var(--color-text-danger); }
|
|
189
|
+
.ansi-green { color: var(--color-text-success); }
|
|
190
|
+
.ansi-yellow { color: var(--color-text-warning); }
|
|
191
|
+
.ansi-blue, .ansi-cyan { color: light-dark(#1d5fb4, #8ab4f8); }
|
|
192
|
+
.ansi-magenta { color: var(--accent); }
|
|
193
|
+
.ansi-white, .ansi-bright { color: var(--color-text-primary); }
|
|
186
194
|
@media (max-width: 560px) {
|
|
187
195
|
.fields { grid-template-columns: minmax(0, 1fr); }
|
|
188
196
|
.steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
@@ -199,6 +207,11 @@ pre.logs {
|
|
|
199
207
|
const WRITE_TOOL = "appwrite_view_write";
|
|
200
208
|
const POLL_MS = 3000;
|
|
201
209
|
const PAGE_SIZE = 25;
|
|
210
|
+
const ESCAPE = /\x1b\[[0-9;?]*[ -\/]*[@-~]/g;
|
|
211
|
+
const ANSI_COLORS = {
|
|
212
|
+
30: "black", 31: "red", 32: "green", 33: "yellow", 34: "blue", 35: "magenta", 36: "cyan", 37: "white",
|
|
213
|
+
90: "gray", 91: "red", 92: "green", 93: "yellow", 94: "blue", 95: "magenta", 96: "cyan", 97: "bright",
|
|
214
|
+
};
|
|
202
215
|
const TIMESTAMP = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
|
|
203
216
|
const EDITABLE = {
|
|
204
217
|
string: "text", varchar: "text", text: "text", mediumtext: "text", longtext: "text",
|
|
@@ -619,6 +632,36 @@ pre.logs {
|
|
|
619
632
|
request("ui/update-model-context", { content: [{ type: "text", text }] }).catch(() => {});
|
|
620
633
|
}
|
|
621
634
|
|
|
635
|
+
// Build logs carry terminal color codes (SGR, "ESC[31m"). Each run of text
|
|
636
|
+
// becomes a span whose classes carry its color and weight; other escape
|
|
637
|
+
// sequences are dropped. Text only ever goes in as a text node.
|
|
638
|
+
function ansi(line) {
|
|
639
|
+
const parts = [];
|
|
640
|
+
const style = { color: null, bold: false, dim: false };
|
|
641
|
+
let last = 0;
|
|
642
|
+
const push = (text) => {
|
|
643
|
+
if (!text) return;
|
|
644
|
+
const classes = [style.color, style.bold && "ansi-bold", style.dim && "ansi-dim"].filter(Boolean);
|
|
645
|
+
parts.push(classes.length ? el("span", { className: classes.join(" ") }, text) : text);
|
|
646
|
+
};
|
|
647
|
+
for (const match of line.matchAll(ESCAPE)) {
|
|
648
|
+
push(line.slice(last, match.index));
|
|
649
|
+
last = match.index + match[0].length;
|
|
650
|
+
if (!match[0].endsWith("m")) continue;
|
|
651
|
+
const codes = match[0].slice(2, -1).split(";").map(Number);
|
|
652
|
+
for (const code of codes) {
|
|
653
|
+
if (code === 0) Object.assign(style, { color: null, bold: false, dim: false });
|
|
654
|
+
else if (code === 1) style.bold = true;
|
|
655
|
+
else if (code === 2) style.dim = true;
|
|
656
|
+
else if (code === 22) Object.assign(style, { bold: false, dim: false });
|
|
657
|
+
else if (code === 39) style.color = null;
|
|
658
|
+
else if (ANSI_COLORS[code]) style.color = "ansi-" + ANSI_COLORS[code];
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
push(line.slice(last));
|
|
662
|
+
return parts;
|
|
663
|
+
}
|
|
664
|
+
|
|
622
665
|
function pill(status) {
|
|
623
666
|
const tone = status === "ready" ? "ready"
|
|
624
667
|
: status === "failed" || status === "canceled" ? "failed"
|
|
@@ -671,8 +714,10 @@ pre.logs {
|
|
|
671
714
|
deployment.activate ? el("span", {}, "Activates when ready") : null);
|
|
672
715
|
|
|
673
716
|
const logs = el("pre", { className: "logs", tabindex: "0", "aria-label": "Build logs" },
|
|
674
|
-
|
|
675
|
-
|
|
717
|
+
deployment.truncated ? el("span", { className: "ansi-dim" }, "… earlier lines omitted\n") : null,
|
|
718
|
+
deployment.logs.length
|
|
719
|
+
? deployment.logs.flatMap((line) => [...ansi(line), "\n"])
|
|
720
|
+
: data.done ? "No build logs." : "Waiting for build output…");
|
|
676
721
|
|
|
677
722
|
const footer = el("footer", { className: "bar" },
|
|
678
723
|
el("span", { className: "muted", style: "font-size: var(--font-text-xs-size)" },
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/data/docs_index.npz
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
[diffend] Oversized file quarantined before diffing.
|
|
2
|
-
name: mcp_server_appwrite-2.1.
|
|
2
|
+
name: mcp_server_appwrite-2.1.1/src/mcp_server_appwrite/data/docs_index.npz
|
|
3
3
|
size: 35543664 bytes
|
|
4
4
|
sha256: 61d266fdb9a958b272d1b351cc6ebd6e824b0d0fe294483703e0795e4b0580df
|
|
@@ -36,6 +36,11 @@ UI = {"extensions": {EXTENSION: {"mimeTypes": [MIME_TYPE]}}}
|
|
|
36
36
|
ROWS = 30
|
|
37
37
|
PAGE = 25
|
|
38
38
|
LOG_LINES = 250
|
|
39
|
+
# How open-runtimes colors a build log line.
|
|
40
|
+
ANSI_LINE = (
|
|
41
|
+
"\x1b[90m[13:23:45] \x1b[31m[\x1b[0mopen-runtimes\x1b[31m] "
|
|
42
|
+
"\x1b[32mBuild finished. \x1b[0m"
|
|
43
|
+
)
|
|
39
44
|
|
|
40
45
|
cloud: Cloud
|
|
41
46
|
|
|
@@ -71,7 +76,8 @@ def setUpModule() -> None:
|
|
|
71
76
|
"dep_new",
|
|
72
77
|
FUNCTION,
|
|
73
78
|
"building",
|
|
74
|
-
"\n".join(f"line {index}" for index in range(1, LOG_LINES
|
|
79
|
+
"\n".join(f"line {index}" for index in range(1, LOG_LINES))
|
|
80
|
+
+ f"\n{ANSI_LINE}",
|
|
75
81
|
providerBranch="main",
|
|
76
82
|
providerCommitHash="a91c3e0f00",
|
|
77
83
|
),
|
|
@@ -310,12 +316,16 @@ class AppsFlow(unittest.TestCase):
|
|
|
310
316
|
self.assertFalse(data["done"])
|
|
311
317
|
# Only the end of a long log is carried.
|
|
312
318
|
self.assertEqual(len(build["logs"]), 200)
|
|
313
|
-
|
|
319
|
+
# The view gets the colors; the model's summary gets plain text.
|
|
320
|
+
self.assertEqual(build["logs"][-1], ANSI_LINE)
|
|
314
321
|
self.assertTrue(build["truncated"])
|
|
315
322
|
text = result["content"][0]["text"]
|
|
316
323
|
self.assertIn(f"Deployment dep_new of function {FUNCTION} is building.", text)
|
|
317
324
|
self.assertIn("Source: main @ a91c3e0.", text)
|
|
318
|
-
self.assertTrue(
|
|
325
|
+
self.assertTrue(
|
|
326
|
+
text.endswith("[13:23:45] [open-runtimes] Build finished. "), text
|
|
327
|
+
)
|
|
328
|
+
self.assertNotIn("\x1b", text)
|
|
319
329
|
|
|
320
330
|
status_path = rf"/v1/functions/{FUNCTION}/deployments/dep_new/status"
|
|
321
331
|
result = self.call(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/.github/workflows/update-docs-index.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/__init__.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/protocol.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/apps/resource.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/__init__.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/assets/favicon.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/catalog_policy.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_index.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_search.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/docs_source.py
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/error_monitoring.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/__init__.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/bus.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/catalog.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/delivery.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/egress.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/envelope.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/errors.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/ingress.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/projection.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/protocol.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/streams.py
RENAMED
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/events/webhooks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/instructions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/telemetry.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/src/mcp_server_appwrite/tool_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/e2e/fixtures/appwrite/row_created.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_console_sdk_oauth.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_docs_index.py
RENAMED
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_docs_source.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/integration/test_oauth_discovery.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcp_server_appwrite-2.1.0 → mcp_server_appwrite-2.1.1}/tests/unit/test_error_classification.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|