From 7a028953fa777164a57f4625fc502f3003bea949 Mon Sep 17 00:00:00 2001 From: devops-engineer Date: Thu, 7 May 2026 13:07:25 -0700 Subject: [PATCH] fix(post-suspension): migrate github.com/Molecule-AI refs to git.moleculesai.app (Class G #168) The GitHub org Molecule-AI was suspended on 2026-05-06; canonical SCM is now Gitea at https://git.moleculesai.app/molecule-ai/. Stale github.com/Molecule-AI/... URLs return 404 and break tooling that clones / pip-installs / curls them. This bundles all non-Go-module URL fixes for this repo into a single PR. Go module path references (in *.go, go.mod, go.sum) are out of scope here -- tracked separately under Task #140. Token-auth clone URLs also flip ${GITHUB_TOKEN} -> ${GITEA_TOKEN} since the GitHub token does not auth against Gitea. Co-Authored-By: Claude Opus 4.7 (1M context) --- .github/workflows/canary-verify.yml | 2 +- .github/workflows/retarget-main-to-staging.yml | 2 +- README.md | 6 +++--- README.zh-CN.md | 6 +++--- canvas/src/app/pricing/page.tsx | 2 +- docs/blog/2026-04-17-deploy-anywhere/index.md | 4 ++-- docs/blog/2026-04-20-secure-by-design/index.md | 8 ++++---- docs/blog/2026-04-21-discord-adapter/index.md | 6 +++--- .../postmortem-2026-04-23-boot-event-401.md | 12 ++++++------ docs/engineering/pr-hygiene.md | 2 +- docs/engineering/testing-strategy.md | 12 ++++++------ docs/guides/external-workspace-quickstart.md | 4 ++-- docs/integrations/runtime-native-mcp-status.md | 4 ++-- docs/memory-plugins/CHANGELOG.md | 2 +- docs/plugins/agentskills-compat.md | 10 +++++----- docs/tutorials/chrome-devtools-mcp-quickstart.md | 2 +- docs/tutorials/fly-machines-provisioner.md | 6 +++--- docs/tutorials/gemini-cli-runtime.md | 2 +- docs/tutorials/google-adk-runtime.md | 2 +- docs/tutorials/hermes-multi-provider-dispatch.md | 8 ++++---- docs/tutorials/lark-feishu-channel.md | 2 +- scripts/build_runtime_package.py | 4 ++-- tests/e2e/STAGING_SAAS_E2E.md | 2 +- 23 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.github/workflows/canary-verify.yml b/.github/workflows/canary-verify.yml index 6972194e..e19c1619 100644 --- a/.github/workflows/canary-verify.yml +++ b/.github/workflows/canary-verify.yml @@ -108,7 +108,7 @@ jobs: echo echo "One or more canary secrets are unset (\`CANARY_TENANT_URLS\`, \`CANARY_ADMIN_TOKENS\`, \`CANARY_CP_SHARED_SECRET\`)." echo "Phase 2 canary fleet has not been stood up yet —" - echo "see [canary-tenants.md](https://github.com/Molecule-AI/molecule-controlplane/blob/main/docs/canary-tenants.md)." + echo "see [canary-tenants.md](https://git.moleculesai.app/molecule-ai/molecule-controlplane/blob/main/docs/canary-tenants.md)." echo echo "**Skipped — promote-to-latest will NOT auto-fire.** Dispatch \`promote-latest.yml\` manually when ready." } >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/retarget-main-to-staging.yml b/.github/workflows/retarget-main-to-staging.yml index 5e1ff8bc..0ffe62db 100644 --- a/.github/workflows/retarget-main-to-staging.yml +++ b/.github/workflows/retarget-main-to-staging.yml @@ -96,7 +96,7 @@ jobs: --body "$(cat <<'BODY' [retarget-bot] This PR was opened against `main` and has been retargeted to `staging` automatically. - **Why:** per [SHARED_RULES rule 8](https://github.com/Molecule-AI/molecule-ai-org-template-molecule-dev/blob/main/SHARED_RULES.md), all feature work targets `staging` first; the CEO promotes `staging → main` separately. + **Why:** per [SHARED_RULES rule 8](https://git.moleculesai.app/molecule-ai/molecule-ai-org-template-molecule-dev/blob/main/SHARED_RULES.md), all feature work targets `staging` first; the CEO promotes `staging → main` separately. **What changed:** just the base branch — no code change. CI will re-run against `staging`. If you get merge conflicts, rebase on `staging`. diff --git a/README.md b/README.md index 424bee6a..d455d731 100644 --- a/README.md +++ b/README.md @@ -225,14 +225,14 @@ The result is not just “an agent that learns.” It is **an organization that - runtime tiers - direct workspace inspection through terminal and files -### SaaS (via [`molecule-controlplane`](https://github.com/Molecule-AI/molecule-controlplane)) +### SaaS (via [`molecule-controlplane`](https://git.moleculesai.app/molecule-ai/molecule-controlplane)) - multi-tenant on AWS EC2 + Neon (per-tenant Postgres branch) + Cloudflare Tunnels (per-tenant, no public ports) - WorkOS AuthKit + Stripe Checkout + Customer Portal - AWS KMS envelope encryption (DB / Redis connection strings); AWS Secrets Manager for tenant bootstrap - `tenant_resources` audit table + 30-min boot-event-aware reconciler — every CF / AWS lifecycle event recorded, claim vs live state diffed -### Bring your own Claude Code session (via [`molecule-mcp-claude-channel`](https://github.com/Molecule-AI/molecule-mcp-claude-channel)) +### Bring your own Claude Code session (via [`molecule-mcp-claude-channel`](https://git.moleculesai.app/molecule-ai/molecule-mcp-claude-channel)) - Claude Code plugin that bridges Molecule A2A traffic into a local Claude Code session via MCP - subscribe to one or more workspaces; peer messages surface as conversation turns; replies route back through Molecule's A2A @@ -330,7 +330,7 @@ Then open `http://localhost:3000`: The current `main` branch ships the core platform, Canvas v4 (warm-paper themed), Memory v2 (pgvector semantic recall), the typed-SSOT A2A response path (RFC #2967), **eight production adapters** (Claude Code, Hermes, Gemini CLI, LangGraph, DeepAgents, CrewAI, AutoGen, OpenClaw), skill lifecycle, and operational surfaces. -The companion private repo [`molecule-controlplane`](https://github.com/Molecule-AI/molecule-controlplane) provides the SaaS surface — multi-tenant orchestration on EC2 + Neon + Cloudflare Tunnels, KMS envelope encryption, WorkOS auth, Stripe billing, and a `tenant_resources` audit table with a 30-min reconciler. +The companion private repo [`molecule-controlplane`](https://git.moleculesai.app/molecule-ai/molecule-controlplane) provides the SaaS surface — multi-tenant orchestration on EC2 + Neon + Cloudflare Tunnels, KMS envelope encryption, WorkOS auth, Stripe billing, and a `tenant_resources` audit table with a 30-min reconciler. Adjacent runtime work such as **NemoClaw** remains branch-level until merged, and this README keeps that distinction explicit on purpose. diff --git a/README.zh-CN.md b/README.zh-CN.md index 2b73208b..d85fe3b8 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -224,14 +224,14 @@ Molecule AI 并不是要替代下面这些 framework,而是把它们纳入更 - runtime tiers - 终端与文件层面的 workspace 直接排障 -### SaaS(由 [`molecule-controlplane`](https://github.com/Molecule-AI/molecule-controlplane) 提供) +### SaaS(由 [`molecule-controlplane`](https://git.moleculesai.app/molecule-ai/molecule-controlplane) 提供) - 多租户运行在 AWS EC2 + Neon(每租户一个 Postgres branch)+ Cloudflare Tunnels(每租户一条隧道,对外不开任何端口) - WorkOS AuthKit + Stripe Checkout + Customer Portal - AWS KMS 信封加密(DB / Redis 连接串);AWS Secrets Manager 负责租户 bootstrap - `tenant_resources` 审计表 + 30 分钟 boot-event-aware reconciler —— 每个 CF / AWS lifecycle 事件都有记录,每 30 分钟比对 claim 与实际状态 -### 在 Claude Code 里直接接入(由 [`molecule-mcp-claude-channel`](https://github.com/Molecule-AI/molecule-mcp-claude-channel) 提供) +### 在 Claude Code 里直接接入(由 [`molecule-mcp-claude-channel`](https://git.moleculesai.app/molecule-ai/molecule-mcp-claude-channel) 提供) - 把 Molecule A2A 流量桥接到本地 Claude Code 会话的 MCP 插件 - 订阅一个或多个 workspace;peer 的消息会以 user-turn 出现,回复会经 Molecule A2A 路由出去 @@ -323,7 +323,7 @@ npm run dev 当前 `main` 已经包含核心平台、Canvas v4(warm-paper 主题)、Memory v2(pgvector 语义召回)、typed-SSOT A2A 响应路径(RFC #2967)、**8 个正式 adapter**(Claude Code、Hermes、Gemini CLI、LangGraph、DeepAgents、CrewAI、AutoGen、OpenClaw)、skill lifecycle,以及主要运维面。 -配套的私有仓库 [`molecule-controlplane`](https://github.com/Molecule-AI/molecule-controlplane) 提供 SaaS 层 —— 多租户编排(EC2 + Neon + Cloudflare Tunnels)、KMS 信封加密、WorkOS 鉴权、Stripe 计费,以及 `tenant_resources` 审计表加 30 分钟 reconciler。 +配套的私有仓库 [`molecule-controlplane`](https://git.moleculesai.app/molecule-ai/molecule-controlplane) 提供 SaaS 层 —— 多租户编排(EC2 + Neon + Cloudflare Tunnels)、KMS 信封加密、WorkOS 鉴权、Stripe 计费,以及 `tenant_resources` 审计表加 30 分钟 reconciler。 像 **NemoClaw** 这样的相邻 runtime 路线仍然属于分支级工作,只有合并后才会进入正式支持列表,这里会明确区分。 diff --git a/canvas/src/app/pricing/page.tsx b/canvas/src/app/pricing/page.tsx index 3ef6f319..73748770 100644 --- a/canvas/src/app/pricing/page.tsx +++ b/canvas/src/app/pricing/page.tsx @@ -41,7 +41,7 @@ export default function PricingPage() {

We publish the{" "} full source on GitHub diff --git a/docs/blog/2026-04-17-deploy-anywhere/index.md b/docs/blog/2026-04-17-deploy-anywhere/index.md index 6279301d..6af51a4b 100644 --- a/docs/blog/2026-04-17-deploy-anywhere/index.md +++ b/docs/blog/2026-04-17-deploy-anywhere/index.md @@ -10,7 +10,7 @@ tags: [platform, fly.io, deployment, infrastructure] Your infrastructure choice just got decoupled from your agent platform choice. Molecule AI now ships three production-ready workspace backends — `docker`, `flyio`, and `controlplane` — and switching between them takes a single environment variable. Your agent code, model choices, and workspace topology stay exactly the same. -This post covers what shipped in [PR #501](https://github.com/Molecule-AI/molecule-core/pull/501) (Fly Machines provisioner) and [PR #503](https://github.com/Molecule-AI/molecule-core/pull/503) (control plane provisioner), and which backend fits your situation. +This post covers what shipped in [PR #501](https://git.moleculesai.app/molecule-ai/molecule-core/pull/501) (Fly Machines provisioner) and [PR #503](https://git.moleculesai.app/molecule-ai/molecule-core/pull/503) (control plane provisioner), and which backend fits your situation. ## Before: One Deployment Model for Every Use Case @@ -107,4 +107,4 @@ No changes to agent code, tool definitions, or orchestration logic. Swap `CONTAI --- -*[PR #501](https://github.com/Molecule-AI/molecule-core/pull/501) (Fly Machines provisioner) and [PR #503](https://github.com/Molecule-AI/molecule-core/pull/503) (control plane provisioner) are both merged to `main`. Molecule AI is open source — contributions welcome.* +*[PR #501](https://git.moleculesai.app/molecule-ai/molecule-core/pull/501) (Fly Machines provisioner) and [PR #503](https://git.moleculesai.app/molecule-ai/molecule-core/pull/503) (control plane provisioner) are both merged to `main`. Molecule AI is open source — contributions welcome.* diff --git a/docs/blog/2026-04-20-secure-by-design/index.md b/docs/blog/2026-04-20-secure-by-design/index.md index 3a56c20c..6372c8ed 100644 --- a/docs/blog/2026-04-20-secure-by-design/index.md +++ b/docs/blog/2026-04-20-secure-by-design/index.md @@ -27,7 +27,7 @@ The biggest user-facing change: every Molecule AI org can now mint named, revoca → [User guide: Organization API Keys](/docs/guides/org-api-keys.md) → [Architecture: Org API Keys](/docs/architecture/org-api-keys.md) -→ PRs: [#1105](https://github.com/Molecule-AI/molecule-core/pull/1105), [#1107](https://github.com/Molecule-AI/molecule-core/pull/1107), [#1109](https://github.com/Molecule-AI/molecule-core/pull/1109), [#1110](https://github.com/Molecule-AI/molecule-core/pull/1110) +→ PRs: [#1105](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1105), [#1107](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1107), [#1109](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1109), [#1110](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1110) --- @@ -48,7 +48,7 @@ AdminAuth now accepts a session-verification tier that runs **before** the beare **Self-hosted / local dev:** `CP_UPSTREAM_URL` is unset → this feature is disabled, behaviour is unchanged. → [Guide: Same-Origin Canvas Fetches & Session Auth](/docs/guides/same-origin-canvas-fetches.md) -→ PRs: [#1099](https://github.com/Molecule-AI/molecule-core/pull/1099), [#1100](https://github.com/Molecule-AI/molecule-core/pull/1100) +→ PRs: [#1099](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1099), [#1100](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1100) --- @@ -87,7 +87,7 @@ The proxy is **fail-closed**: only an explicit allowlist of paths (`/cp/auth/`, This is also the structural fix for the lateral-movement risk that session auth introduced: without the allowlist, a tenant-authed browser user could have proxied `/cp/admin/*` requests upstream and exploited the fact that those endpoints accept WorkOS session cookies. The allowlist makes that impossible by construction. → [Guide: Same-Origin Canvas Fetches & Session Auth](/docs/guides/same-origin-canvas-fetches.md) -→ PR: [#1095](https://github.com/Molecule-AI/molecule-core/pull/1095) +→ PR: [#1095](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1095) --- @@ -99,7 +99,7 @@ The waitlist itself is a Canvas-administered list with email hashing in audit lo This is the operational surface that makes the above security work matter: the beta is invitation-only, credentials are scoped, and every admin action is auditable. -→ Control plane PRs [#145](https://github.com/Molecule-AI/molecule-controlplane/pull/145), [#148](https://github.com/Molecule-AI/molecule-controlplane/pull/148), [#150](https://github.com/Molecule-AI/molecule-controlplane/pull/150) +→ Control plane PRs [#145](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/145), [#148](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/148), [#150](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/150) --- diff --git a/docs/blog/2026-04-21-discord-adapter/index.md b/docs/blog/2026-04-21-discord-adapter/index.md index 238df057..dbb38824 100644 --- a/docs/blog/2026-04-21-discord-adapter/index.md +++ b/docs/blog/2026-04-21-discord-adapter/index.md @@ -12,7 +12,7 @@ Your team is in Discord. Your AI agents are in Molecule AI. Until today, those t That's now one webhook URL. -Molecule AI workspaces can now connect to Discord. Here's what shipped in [PR #656](https://github.com/Molecule-AI/molecule-core/pull/656). +Molecule AI workspaces can now connect to Discord. Here's what shipped in [PR #656](https://git.moleculesai.app/molecule-ai/molecule-core/pull/656). --- @@ -70,7 +70,7 @@ For inbound slash commands, point your Discord app's **Interactions Endpoint URL ## Security: Webhook Tokens Don't Appear in Logs -Webhook URLs contain a token (`/webhooks/{id}/{token}`). If that token leaks into server logs, it's a rotation event. The Discord adapter is explicit about this: HTTP request errors are logged without the URL, and the adapter returns a generic error message. This was hardened in [PR #659](https://github.com/Molecule-AI/molecule-core/pull/659). +Webhook URLs contain a token (`/webhooks/{id}/{token}`). If that token leaks into server logs, it's a rotation event. The Discord adapter is explicit about this: HTTP request errors are logged without the URL, and the adapter returns a generic error message. This was hardened in [PR #659](https://git.moleculesai.app/molecule-ai/molecule-core/pull/659). --- @@ -97,4 +97,4 @@ Documentation: [Social Channels guide](/docs/agent-runtime/social-channels#disco --- -*Discord adapter shipped in [PR #656](https://github.com/Molecule-AI/molecule-core/pull/656). Security hardening in [PR #659](https://github.com/Molecule-AI/molecule-core/pull/659). Molecule AI is open source — contributions welcome.* +*Discord adapter shipped in [PR #656](https://git.moleculesai.app/molecule-ai/molecule-core/pull/656). Security hardening in [PR #659](https://git.moleculesai.app/molecule-ai/molecule-core/pull/659). Molecule AI is open source — contributions welcome.* diff --git a/docs/engineering/postmortem-2026-04-23-boot-event-401.md b/docs/engineering/postmortem-2026-04-23-boot-event-401.md index c9c3eed9..74c26f19 100644 --- a/docs/engineering/postmortem-2026-04-23-boot-event-401.md +++ b/docs/engineering/postmortem-2026-04-23-boot-event-401.md @@ -3,8 +3,8 @@ **Date:** 2026-04-23 **Severity:** High — every new SaaS tenant blocked **Detection path:** E2E Staging SaaS run 24848425822 failed at "tenant provisioning"; investigation of CP Railway logs surfaced the auth mismatch. -**Status:** Fix pushed on [molecule-controlplane#238](https://github.com/Molecule-AI/molecule-controlplane/pull/238). -**Related:** [issue #239](https://github.com/Molecule-AI/molecule-controlplane/issues/239) (Cloudflare DNS record quota), [testing-strategy.md](../engineering/testing-strategy.md) +**Status:** Fix pushed on [molecule-controlplane#238](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/238). +**Related:** [issue #239](https://git.moleculesai.app/molecule-ai/molecule-controlplane/issues/239) (Cloudflare DNS record quota), [testing-strategy.md](../engineering/testing-strategy.md) ## Summary @@ -35,7 +35,7 @@ The flow was: ### The commit that introduced the bug -[molecule-controlplane#235](https://github.com/Molecule-AI/molecule-controlplane/pull/235) — "fix(provision): wait for tenant boot-event before falling back to canary". Merged 2026-04-22. +[molecule-controlplane#235](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/235) — "fix(provision): wait for tenant boot-event before falling back to canary". Merged 2026-04-22. Before #235, readiness was determined via a canary probe through Cloudflare's edge — which didn't need CP-side auth, so the INSERT ordering didn't matter. #235 made boot-events the primary readiness signal but didn't move the INSERT earlier. The race was latent before but became load-bearing after. @@ -90,7 +90,7 @@ bootReady, _ := provisioner.WaitForTenantReady(ctx, h.db, org.ID, 4*time.Minute) h.db.ExecContext(ctx, `UPDATE org_instances SET status = 'running' WHERE org_id = $1`, org.ID) ``` -See [molecule-controlplane#238](https://github.com/Molecule-AI/molecule-controlplane/pull/238) for the full diff. +See [molecule-controlplane#238](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/238) for the full diff. ## Lessons @@ -122,9 +122,9 @@ Early investigation blamed the hermes provider 401 bug (a separate, known issue ## Follow-ups -- [ ] Land [molecule-controlplane#238](https://github.com/Molecule-AI/molecule-controlplane/pull/238) +- [ ] Land [molecule-controlplane#238](https://git.moleculesai.app/molecule-ai/molecule-controlplane/pull/238) - [ ] Redeploy staging-api, verify E2E goes green - [ ] Add CP integration test suite (see lesson #2) - [ ] Wire E2E failure → notification (see lesson #3) - [ ] Add invariant comment in `provisionTenant` (see lesson #4) -- [ ] Cloudflare DNS quota cleanup — [molecule-controlplane#239](https://github.com/Molecule-AI/molecule-controlplane/issues/239) +- [ ] Cloudflare DNS quota cleanup — [molecule-controlplane#239](https://git.moleculesai.app/molecule-ai/molecule-controlplane/issues/239) diff --git a/docs/engineering/pr-hygiene.md b/docs/engineering/pr-hygiene.md index bdef0802..78a859e6 100644 --- a/docs/engineering/pr-hygiene.md +++ b/docs/engineering/pr-hygiene.md @@ -138,5 +138,5 @@ If you see any of these, don't try to "clean it up in place" — **cherry-pick o ## Related -- [Issue #1822](https://github.com/Molecule-AI/molecule-core/issues/1822) — backend parity drift tracker (example of docs that have to stay current) +- [Issue #1822](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1822) — backend parity drift tracker (example of docs that have to stay current) - [Postmortem: CP boot-event 401](./postmortem-2026-04-23-boot-event-401.md) — caught before shipping because a reviewer could read the diff diff --git a/docs/engineering/testing-strategy.md b/docs/engineering/testing-strategy.md index 86c0d342..55fbee9d 100644 --- a/docs/engineering/testing-strategy.md +++ b/docs/engineering/testing-strategy.md @@ -103,9 +103,9 @@ A bad test: ## Related -- [Issue #1821](https://github.com/Molecule-AI/molecule-core/issues/1821) — policy tracking issue -- [Issue #1815](https://github.com/Molecule-AI/molecule-core/issues/1815) — Canvas coverage instrumentation -- [Issue #1818](https://github.com/Molecule-AI/molecule-core/issues/1818) — Python pytest-cov -- [Issue #1814](https://github.com/Molecule-AI/molecule-core/issues/1814) — workspace_provision_test.go unblock -- [Issue #1816](https://github.com/Molecule-AI/molecule-core/issues/1816) — tokens.go coverage -- [Issue #1819](https://github.com/Molecule-AI/molecule-core/issues/1819) — wsauth_middleware coverage +- [Issue #1821](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1821) — policy tracking issue +- [Issue #1815](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1815) — Canvas coverage instrumentation +- [Issue #1818](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1818) — Python pytest-cov +- [Issue #1814](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1814) — workspace_provision_test.go unblock +- [Issue #1816](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1816) — tokens.go coverage +- [Issue #1819](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1819) — wsauth_middleware coverage diff --git a/docs/guides/external-workspace-quickstart.md b/docs/guides/external-workspace-quickstart.md index e283312e..c83c90d6 100644 --- a/docs/guides/external-workspace-quickstart.md +++ b/docs/guides/external-workspace-quickstart.md @@ -153,7 +153,7 @@ The `id` field is your workspace ID — remember it. |---|---| | "Failed to send message — agent may be unreachable" | The tenant couldn't POST to your URL. Verify `curl https:///health` returns 200 from another machine. | | Response takes > 30s | Canvas times out around 30s. Keep initial implementations simple. For long-running work, return a placeholder and use [polling mode](#next-step-polling-mode-preview) (once available). | -| Agent duplicated in chat | Known canvas bug where WebSocket + HTTP responses both render. Fixed in [PR #1517](https://github.com/Molecule-AI/molecule-core/pull/1517). | +| Agent duplicated in chat | Known canvas bug where WebSocket + HTTP responses both render. Fixed in [PR #1517](https://git.moleculesai.app/molecule-ai/molecule-core/pull/1517). | | Agent replies but canvas shows "Agent unreachable" | Check the tenant can reach your URL. Cloudflare quick tunnels rotate — the URL in your canvas may point at a dead tunnel after restart. | | Getting 404 when POSTing to tenant | Add `X-Molecule-Org-Id` header. The tenant's security layer 404s unmatched origin requests by design. | @@ -255,7 +255,7 @@ If all four pass and canvas still shows your agent as unreachable, see the [remo ## Feedback This is a new path. Tell us what broke: -- Open an issue: https://github.com/Molecule-AI/molecule-core/issues/new?labels=external-workspace +- Open an issue: https://git.moleculesai.app/molecule-ai/molecule-core/issues/new?labels=external-workspace - Join #external-workspaces on our Slack - Submit a PR improving this doc if something tripped you up — the faster we can make the quickstart, the more developers we bring in diff --git a/docs/integrations/runtime-native-mcp-status.md b/docs/integrations/runtime-native-mcp-status.md index 2916ad7e..dabd5875 100644 --- a/docs/integrations/runtime-native-mcp-status.md +++ b/docs/integrations/runtime-native-mcp-status.md @@ -99,7 +99,7 @@ fork needed in production. - **Plugin package**: [Molecule-AI/hermes-platform-molecule-a2a](https://git.moleculesai.app/molecule-ai/hermes-platform-molecule-a2a) v0.1.0 — public, MIT-licensed. 11 unit tests + 8 in-process E2E + 4 real-subprocess E2E checkpoints all green. -- **Workspace template patch**: [Molecule-AI/molecule-ai-workspace-template-hermes#32](https://github.com/Molecule-AI/molecule-ai-workspace-template-hermes/pull/32) +- **Workspace template patch**: [Molecule-AI/molecule-ai-workspace-template-hermes#32](https://git.moleculesai.app/molecule-ai/molecule-ai-workspace-template-hermes/pull/32) — Dockerfile installs the patched fork + plugin into the hermes installer's venv; start.sh seeds `platforms.molecule-a2a` config stanza. Pre-demo deliberately install-only; adapter.py rewrite to @@ -156,7 +156,7 @@ intermediate shim earns its complexity. **Status:** Template SHIPPED. Repo live at [`Molecule-AI/molecule-ai-workspace-template-codex`](https://git.moleculesai.app/molecule-ai/molecule-ai-workspace-template-codex) (14 files, 1411 LOC, 12/12 tests). molecule-core registration in -[PR #2512](https://github.com/Molecule-AI/molecule-core/pull/2512). +[PR #2512](https://git.moleculesai.app/molecule-ai/molecule-core/pull/2512). E2E with real A2A traffic remains. **Path:** Persistent `codex app-server` stdio JSON-RPC client diff --git a/docs/memory-plugins/CHANGELOG.md b/docs/memory-plugins/CHANGELOG.md index a811620b..79051e20 100644 --- a/docs/memory-plugins/CHANGELOG.md +++ b/docs/memory-plugins/CHANGELOG.md @@ -101,7 +101,7 @@ incident-shaped. ## [v1.0.0] — initial release (RFC #2728, PRs #2729-#2742) Initial plugin contract + 11-PR rollout. See -[issue #2728](https://github.com/Molecule-AI/molecule-core/issues/2728) +[issue #2728](https://git.moleculesai.app/molecule-ai/molecule-core/issues/2728) for the full RFC. Endpoints: `/v1/health`, `/v1/namespaces/{name}` (PUT/PATCH/DELETE), diff --git a/docs/plugins/agentskills-compat.md b/docs/plugins/agentskills-compat.md index 1cfff2ca..9f935c6a 100644 --- a/docs/plugins/agentskills-compat.md +++ b/docs/plugins/agentskills-compat.md @@ -160,11 +160,11 @@ not expose. | `molecule-skill-update-docs` | `[claude_code]` | `[claude_code, hermes]` | Companion PRs: -- [molecule-ai-plugin-ecc#2](https://github.com/Molecule-AI/molecule-ai-plugin-ecc/pull/2) -- [molecule-ai-plugin-superpowers#2](https://github.com/Molecule-AI/molecule-ai-plugin-superpowers/pull/2) -- [molecule-ai-plugin-molecule-dev#2](https://github.com/Molecule-AI/molecule-ai-plugin-molecule-dev/pull/2) -- [molecule-ai-plugin-molecule-skill-cron-learnings#2](https://github.com/Molecule-AI/molecule-ai-plugin-molecule-skill-cron-learnings/pull/2) -- [molecule-ai-plugin-molecule-skill-update-docs#2](https://github.com/Molecule-AI/molecule-ai-plugin-molecule-skill-update-docs/pull/2) +- [molecule-ai-plugin-ecc#2](https://git.moleculesai.app/molecule-ai/molecule-ai-plugin-ecc/pull/2) +- [molecule-ai-plugin-superpowers#2](https://git.moleculesai.app/molecule-ai/molecule-ai-plugin-superpowers/pull/2) +- [molecule-ai-plugin-molecule-dev#2](https://git.moleculesai.app/molecule-ai/molecule-ai-plugin-molecule-dev/pull/2) +- [molecule-ai-plugin-molecule-skill-cron-learnings#2](https://git.moleculesai.app/molecule-ai/molecule-ai-plugin-molecule-skill-cron-learnings/pull/2) +- [molecule-ai-plugin-molecule-skill-update-docs#2](https://git.moleculesai.app/molecule-ai/molecule-ai-plugin-molecule-skill-update-docs/pull/2) Security note: Security Auditor was offline at time of change. Self-assessed as non-security-impacting — adding `hermes` to a string list in `plugin.yaml` diff --git a/docs/tutorials/chrome-devtools-mcp-quickstart.md b/docs/tutorials/chrome-devtools-mcp-quickstart.md index 9703e64f..5aebd46f 100644 --- a/docs/tutorials/chrome-devtools-mcp-quickstart.md +++ b/docs/tutorials/chrome-devtools-mcp-quickstart.md @@ -198,7 +198,7 @@ Lighthouse audit against staging.yourapp.com: FCP: 2.4s | LCP: 5.2s | CLS: 0.18 | TBT: 620ms Performance regression detected — opening GitHub issue. -Issue: https://github.com/Molecule-AI/molecule-core/issues/1527 +Issue: https://git.moleculesai.app/molecule-ai/molecule-core/issues/1527 Label: performance-regression | Assignees: @your-team ``` diff --git a/docs/tutorials/fly-machines-provisioner.md b/docs/tutorials/fly-machines-provisioner.md index fa811b46..e711fa67 100644 --- a/docs/tutorials/fly-machines-provisioner.md +++ b/docs/tutorials/fly-machines-provisioner.md @@ -85,8 +85,8 @@ Fly Machines start in milliseconds and run in 35+ regions. Provisioning agent wo ## Related -- PR #501: [feat(platform): Fly Machines provisioner](https://github.com/Molecule-AI/molecule-core/pull/501) -- PR #481: [feat(ci): deploy to Fly after image push](https://github.com/Molecule-AI/molecule-core/pull/481) +- PR #501: [feat(platform): Fly Machines provisioner](https://git.moleculesai.app/molecule-ai/molecule-core/pull/501) +- PR #481: [feat(ci): deploy to Fly after image push](https://git.moleculesai.app/molecule-ai/molecule-core/pull/481) - [Fly Machines API docs](https://fly.io/docs/machines/api/) - [Platform API reference](../api-reference.md) -- Issue [#525](https://github.com/Molecule-AI/molecule-core/issues/525) +- Issue [#525](https://git.moleculesai.app/molecule-ai/molecule-core/issues/525) diff --git a/docs/tutorials/gemini-cli-runtime.md b/docs/tutorials/gemini-cli-runtime.md index d2802635..0c1331df 100644 --- a/docs/tutorials/gemini-cli-runtime.md +++ b/docs/tutorials/gemini-cli-runtime.md @@ -61,6 +61,6 @@ The real power surfaces when you mix runtimes on the same Molecule AI tenant. Yo ## Related -- PR #379: [feat(adapters): add gemini-cli runtime adapter](https://github.com/Molecule-AI/molecule-core/pull/379) +- PR #379: [feat(adapters): add gemini-cli runtime adapter](https://git.moleculesai.app/molecule-ai/molecule-core/pull/379) - [Multi-provider Hermes docs](../architecture/hermes.md) - [Workspace runtimes reference](../reference/runtimes.md) diff --git a/docs/tutorials/google-adk-runtime.md b/docs/tutorials/google-adk-runtime.md index 05c8589d..2d751019 100644 --- a/docs/tutorials/google-adk-runtime.md +++ b/docs/tutorials/google-adk-runtime.md @@ -68,7 +68,7 @@ ADK workspaces participate in the same A2A network as Claude Code, Gemini CLI, H ## Related -- PR #550: [feat(adapters): add google-adk runtime adapter](https://github.com/Molecule-AI/molecule-core/pull/550) +- PR #550: [feat(adapters): add google-adk runtime adapter](https://git.moleculesai.app/molecule-ai/molecule-core/pull/550) - [Google ADK (adk-python)](https://github.com/google/adk-python) - [Gemini CLI runtime tutorial](./gemini-cli-runtime.md) - [Platform API reference](../api-reference.md) diff --git a/docs/tutorials/hermes-multi-provider-dispatch.md b/docs/tutorials/hermes-multi-provider-dispatch.md index bd30eb9b..a6b1f3a3 100644 --- a/docs/tutorials/hermes-multi-provider-dispatch.md +++ b/docs/tutorials/hermes-multi-provider-dispatch.md @@ -176,9 +176,9 @@ What is on the roadmap for Phase 2d (not yet shipped): ## Related -- PR #240: [Phase 2a — native Anthropic dispatch](https://github.com/Molecule-AI/molecule-core/pull/240) -- PR #255: [Phase 2b — native Gemini dispatch](https://github.com/Molecule-AI/molecule-core/pull/255) -- PR #267: [Phase 2c — multi-turn history on all paths](https://github.com/Molecule-AI/molecule-core/pull/267) +- PR #240: [Phase 2a — native Anthropic dispatch](https://git.moleculesai.app/molecule-ai/molecule-core/pull/240) +- PR #255: [Phase 2b — native Gemini dispatch](https://git.moleculesai.app/molecule-ai/molecule-core/pull/255) +- PR #267: [Phase 2c — multi-turn history on all paths](https://git.moleculesai.app/molecule-ai/molecule-core/pull/267) - [Hermes adapter design](../adapters/hermes-adapter-design.md) - [Platform API reference](../api-reference.md) -- Issue [#513](https://github.com/Molecule-AI/molecule-core/issues/513) +- Issue [#513](https://git.moleculesai.app/molecule-ai/molecule-core/issues/513) diff --git a/docs/tutorials/lark-feishu-channel.md b/docs/tutorials/lark-feishu-channel.md index fc70d826..4f05d896 100644 --- a/docs/tutorials/lark-feishu-channel.md +++ b/docs/tutorials/lark-feishu-channel.md @@ -90,6 +90,6 @@ Molecule AI canvas without code changes. ## Related -- PR #480: [feat(channels): Lark / Feishu channel adapter](https://github.com/Molecule-AI/molecule-core/pull/480) +- PR #480: [feat(channels): Lark / Feishu channel adapter](https://git.moleculesai.app/molecule-ai/molecule-core/pull/480) - [Social channels architecture](../agent-runtime/social-channels.md) - [Channel adapter reference](../api-reference.md#channels) \ No newline at end of file diff --git a/scripts/build_runtime_package.py b/scripts/build_runtime_package.py index b4eb726e..55639213 100755 --- a/scripts/build_runtime_package.py +++ b/scripts/build_runtime_package.py @@ -376,7 +376,7 @@ hold: non-plugin-sourced server, which Claude Code rejects with `channel_enable requires a marketplace plugin`. Until the official `moleculesai/claude-code-plugin` marketplace lands - (tracking [#2936](https://github.com/Molecule-AI/molecule-core/issues/2936)), + (tracking [#2936](https://git.moleculesai.app/molecule-ai/molecule-core/issues/2936)), operators who want push must scaffold their own local marketplace under `~/.claude/marketplaces/molecule-local/` containing a @@ -389,7 +389,7 @@ hold: Symptom of any condition failing: messages arrive but only via the poll path (every ~1–60s), not real-time. There's currently no diagnostic surfaced — `molecule-mcp doctor` (tracking -[#2937](https://github.com/Molecule-AI/molecule-core/issues/2937)) is +[#2937](https://git.moleculesai.app/molecule-ai/molecule-core/issues/2937)) is planned. If you don't need real-time push, the default poll path works diff --git a/tests/e2e/STAGING_SAAS_E2E.md b/tests/e2e/STAGING_SAAS_E2E.md index dd4e3095..00ab166b 100644 --- a/tests/e2e/STAGING_SAAS_E2E.md +++ b/tests/e2e/STAGING_SAAS_E2E.md @@ -105,5 +105,5 @@ Hard per-workflow timeouts (15–40 min) cap runaway cost. Three teardown layers ## Known gaps (tracked elsewhere) -- [#1369](https://github.com/Molecule-AI/molecule-core/issues/1369): SaaS canvas Files / Terminal / Peers tabs — architecturally broken; whitelisted in the spec +- [#1369](https://git.moleculesai.app/molecule-ai/molecule-core/issues/1369): SaaS canvas Files / Terminal / Peers tabs — architecturally broken; whitelisted in the spec - LLM-driven delegation (autonomous `delegate_task` tool use) — probabilistic, not in v1; proxy mechanics covered