constellai 0.3.5 → 0.3.7
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/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/(app)/activity/page.js +2 -2
- package/.next/server/app/(app)/activity/page.js.nft.json +1 -1
- package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/agents/[handle]/page.js +2 -2
- package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/code/page.js +2 -2
- package/.next/server/app/(app)/code/page.js.nft.json +1 -1
- package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/config/page.js +2 -2
- package/.next/server/app/(app)/config/page.js.nft.json +1 -1
- package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/costs/page.js +2 -2
- package/.next/server/app/(app)/costs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/cron/page.js +2 -2
- package/.next/server/app/(app)/cron/page.js.nft.json +1 -1
- package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/dashboard/page.js +2 -2
- package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -1
- package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/design/page.js +44 -44
- package/.next/server/app/(app)/design/page.js.nft.json +1 -1
- package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/docs/[id]/page.js +2 -2
- package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/docs/page.js +2 -2
- package/.next/server/app/(app)/docs/page.js.nft.json +1 -1
- package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/github/page.js +2 -2
- package/.next/server/app/(app)/github/page.js.nft.json +1 -1
- package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/goals/page.js +2 -2
- package/.next/server/app/(app)/goals/page.js.nft.json +1 -1
- package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/inbox/page.js +2 -2
- package/.next/server/app/(app)/inbox/page.js.nft.json +1 -1
- package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/knowledge/page.js +3 -3
- package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -1
- package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/models/page.js +2 -2
- package/.next/server/app/(app)/models/page.js.nft.json +1 -1
- package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/notifications/page.js +2 -2
- package/.next/server/app/(app)/notifications/page.js.nft.json +1 -1
- package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/org/page.js +4 -4
- package/.next/server/app/(app)/org/page.js.nft.json +1 -1
- package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/organizations/page.js +2 -2
- package/.next/server/app/(app)/organizations/page.js.nft.json +1 -1
- package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/page.js +3 -3
- package/.next/server/app/(app)/page.js.nft.json +1 -1
- package/.next/server/app/(app)/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/planner/page.js +2 -2
- package/.next/server/app/(app)/planner/page.js.nft.json +1 -1
- package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/plugins/page.js +2 -2
- package/.next/server/app/(app)/plugins/page.js.nft.json +1 -1
- package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/pm/page.js +2 -2
- package/.next/server/app/(app)/pm/page.js.nft.json +1 -1
- package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/prepare-deploy/page.js +6 -6
- package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -1
- package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/profile/page.js +2 -2
- package/.next/server/app/(app)/profile/page.js.nft.json +1 -1
- package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/pulse/page.js +2 -2
- package/.next/server/app/(app)/pulse/page.js.nft.json +1 -1
- package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reports/[id]/page.js +3 -3
- package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/reports/page.js +2 -2
- package/.next/server/app/(app)/reports/page.js.nft.json +1 -1
- package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/routines/page.js +2 -2
- package/.next/server/app/(app)/routines/page.js.nft.json +1 -1
- package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/search/page.js +2 -2
- package/.next/server/app/(app)/search/page.js.nft.json +1 -1
- package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/security/page.js +2 -2
- package/.next/server/app/(app)/security/page.js.nft.json +1 -1
- package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/skills/page.js +2 -2
- package/.next/server/app/(app)/skills/page.js.nft.json +1 -1
- package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/tasks/page.js +2 -2
- package/.next/server/app/(app)/tasks/page.js.nft.json +1 -1
- package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/test-dev/page.js +2 -2
- package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -1
- package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(app)/update/page.js +3 -3
- package/.next/server/app/(app)/update/page.js.nft.json +1 -1
- package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(auth)/login/page.js +2 -2
- package/.next/server/app/(auth)/login/page.js.nft.json +1 -1
- package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/(auth)/onboarding/page.js +1 -1
- package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +1 -1
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +3 -3
- package/.next/server/app/_global-error.segments/_full.segment.rsc +3 -3
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cron/tick/route.js +16 -16
- package/.next/server/app/api/locks/acquire/route.js +1 -1
- package/.next/server/app/api/sync/file/route.js +2 -2
- package/.next/server/app/api/telegram/poll/route.js +11 -11
- package/.next/server/app/api/upload/route.js +1 -1
- package/.next/server/app/api/v1/[[...path]]/route.js +1 -1
- package/.next/server/chunks/1249.js +14 -14
- package/.next/server/chunks/1845.js +1 -1
- package/.next/server/chunks/2517.js +1 -1
- package/.next/server/chunks/259.js +9 -9
- package/.next/server/chunks/260.js +1 -1
- package/.next/server/chunks/2867.js +2 -2
- package/.next/server/chunks/2960.js +1 -1
- package/.next/server/chunks/3131.js +1 -1
- package/.next/server/chunks/3234.js +4 -4
- package/.next/server/chunks/4574.js +1 -0
- package/.next/server/chunks/4619.js +1 -1
- package/.next/server/chunks/4979.js +12 -12
- package/.next/server/chunks/6431.js +1 -1
- package/.next/server/chunks/6753.js +1 -0
- package/.next/server/chunks/7236.js +4 -0
- package/.next/server/chunks/7336.js +1 -1
- package/.next/server/chunks/7589.js +3 -3
- package/.next/server/chunks/7621.js +12 -0
- package/.next/server/chunks/7989.js +1 -1
- package/.next/server/chunks/7993.js +21 -0
- package/.next/server/chunks/850.js +1 -1
- package/.next/server/chunks/8561.js +3 -3
- package/.next/server/chunks/8623.js +1 -1
- package/.next/server/chunks/8762.js +15 -417
- package/.next/server/chunks/8823.js +1 -1
- package/.next/server/chunks/8846.js +1 -0
- package/.next/server/chunks/9160.js +417 -0
- package/.next/server/chunks/9783.js +3 -3
- package/.next/server/chunks/9969.js +1 -1
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/215-18ea748d2ff2caff.js +1 -0
- package/.next/static/chunks/27-b49ec46cfcce75b7.js +1 -0
- package/.next/static/chunks/2989-2dd9a66d007a96e8.js +4 -0
- package/.next/static/chunks/3219-92e75397858f3f1f.js +1 -0
- package/.next/static/chunks/4643-d0ab4088e129651f.js +1 -0
- package/.next/static/chunks/8370-e88907d9c72435e7.js +12 -0
- package/.next/static/chunks/app/(app)/activity/{page-29e80a32c02f376b.js → page-93d4012627ea70d5.js} +1 -1
- package/.next/static/chunks/app/(app)/agents/[handle]/page-bfe740784bdf239c.js +1 -0
- package/.next/static/chunks/app/(app)/code/{page-1f954f7688bc24e4.js → page-5e24874f11857823.js} +1 -1
- package/.next/static/chunks/app/(app)/config/page-12c5487a8d55c2c2.js +1 -0
- package/.next/static/chunks/app/(app)/costs/page-6edcec363617f5ef.js +1 -0
- package/.next/static/chunks/app/(app)/cron/{page-a4dd65c78173b872.js → page-f9167770757921f7.js} +1 -1
- package/.next/static/chunks/app/(app)/dashboard/page-103f172e762911d1.js +1 -0
- package/.next/static/chunks/app/(app)/design/{page-238be90d78d22780.js → page-11b9cc40f32fe34f.js} +3 -3
- package/.next/static/chunks/app/(app)/docs/[id]/{page-e29afa1ba1a086e1.js → page-eaae80c3d47e1ba7.js} +1 -1
- package/.next/static/chunks/app/(app)/docs/page-87457e514ea7de32.js +1 -0
- package/.next/static/chunks/app/(app)/github/page-ff62b7618c594632.js +1 -0
- package/.next/static/chunks/app/(app)/goals/page-d4d854c091020a92.js +1 -0
- package/.next/static/chunks/app/(app)/inbox/page-1bcfc50e9df5ed6f.js +12 -0
- package/.next/static/chunks/app/(app)/knowledge/page-0a55ce74e274817c.js +1 -0
- package/.next/static/chunks/app/(app)/layout-825ba765e8034dfb.js +1 -0
- package/.next/static/chunks/app/(app)/models/page-cd077c548916b8cb.js +1 -0
- package/.next/static/chunks/app/(app)/notifications/page-c5c7945f6f6f18d6.js +12 -0
- package/.next/static/chunks/app/(app)/org/page-a83804854bd0d44a.js +12 -0
- package/.next/static/chunks/app/(app)/organizations/page-b38db8e364e3a108.js +1 -0
- package/.next/static/chunks/app/(app)/page-733340fec4cd0173.js +1 -0
- package/.next/static/chunks/app/(app)/planner/{page-920e439e6f88c238.js → page-06b2841d0438d92d.js} +1 -1
- package/.next/static/chunks/app/(app)/plugins/{page-d10239fcbabdf4fa.js → page-535ed062643077fc.js} +1 -1
- package/.next/static/chunks/app/(app)/pm/page-dc0296761e1af17c.js +1 -0
- package/.next/static/chunks/app/(app)/prepare-deploy/page-6f0c5081caf1d013.js +1 -0
- package/.next/static/chunks/app/(app)/profile/page-cef1aa72ffc02e9c.js +1 -0
- package/.next/static/chunks/app/(app)/pulse/page-d4bdec1709913581.js +1 -0
- package/.next/static/chunks/app/(app)/reports/[id]/{page-a4dd65c78173b872.js → page-f9167770757921f7.js} +1 -1
- package/.next/static/chunks/app/(app)/reports/{page-5c07fa3a8b5ba553.js → page-5c37a53bbd4fd1c3.js} +1 -1
- package/.next/static/chunks/app/(app)/routines/page-e274160cfbb3c594.js +1 -0
- package/.next/static/chunks/app/(app)/search/{page-07e037c487f14c35.js → page-f0e082b9b0402981.js} +1 -1
- package/.next/static/chunks/app/(app)/security/page-a12f04656bde8aad.js +1 -0
- package/.next/static/chunks/app/(app)/skills/page-583f9780fa981aa8.js +1 -0
- package/.next/static/chunks/app/(app)/tasks/page-7bb09650b84e0755.js +1 -0
- package/.next/static/chunks/app/(app)/test-dev/page-ce66efbb83b2ed21.js +1 -0
- package/.next/static/chunks/app/(app)/update/page-6a8082f1c1b3b762.js +1 -0
- package/.next/static/chunks/app/(auth)/login/page-b512c906a1566d8c.js +1 -0
- package/.next/static/chunks/app/(auth)/onboarding/page-8f6bf1259bb5aab5.js +1 -0
- package/.next/trace-build +1 -1
- package/CHANGELOG.md +63 -1
- package/README.md +7 -1
- package/README.pt-BR.md +7 -1
- package/THIRD_PARTY_LICENSES.md +64 -0
- package/bin/constella-update.mjs +19 -7
- package/bin/constella.mjs +1 -1
- package/bin/worker.mjs +1 -0
- package/docs/UPDATE.md +18 -2
- package/docs/en/AI_ARCHITECTURE.md +2 -2
- package/docs/en/CHAT_COMMANDS.md +1 -1
- package/docs/en/CONFIGURATION.md +1 -1
- package/docs/en/DESIGN.md +1 -1
- package/docs/en/FAQ.md +3 -3
- package/docs/en/GOALS_SPECS_ISSUES.md +1 -1
- package/docs/en/MCP.md +2 -2
- package/docs/en/PLUGINS.md +2 -2
- package/docs/en/PORTABLE_MODE.md +1 -1
- package/docs/en/PUBLISHING.md +14 -15
- package/docs/en/README.md +1 -1
- package/docs/en/SECURITY.md +3 -3
- package/docs/en/START_MODE.md +1 -1
- package/docs/en/TELEGRAM.md +1 -1
- package/docs/en/TROUBLESHOOTING.md +1 -1
- package/docs/en/VPS_MODE.md +2 -2
- package/docs/pt/AI_ARCHITECTURE.md +2 -2
- package/docs/pt/CHAT_COMMANDS.md +1 -1
- package/docs/pt/CONFIGURATION.md +1 -1
- package/docs/pt/DESIGN.md +1 -1
- package/docs/pt/FAQ.md +3 -3
- package/docs/pt/GOALS_SPECS_ISSUES.md +1 -1
- package/docs/pt/MCP.md +1 -1
- package/docs/pt/PLUGINS.md +2 -2
- package/docs/pt/PORTABLE_MODE.md +1 -1
- package/docs/pt/PUBLISHING.md +6 -7
- package/docs/pt/README.md +1 -1
- package/docs/pt/SECURITY.md +3 -3
- package/docs/pt/START_MODE.md +1 -1
- package/docs/pt/TELEGRAM.md +1 -1
- package/docs/pt/TROUBLESHOOTING.md +2 -2
- package/docs/pt/VPS_MODE.md +1 -1
- package/docs/roadmap.md +36 -0
- package/package.json +2 -1
- package/scripts/i18n-parity.mjs +1 -1
- package/scripts/install.sh +4 -2
- package/scripts/publish-public.mjs +33 -19
- package/scripts/vps-clean.sh +1 -1
- package/scripts/vps-install.sh +19 -5
- package/scripts/vps-update.sh +26 -17
- package/.next/server/chunks/212.js +0 -1
- package/.next/server/chunks/6381.js +0 -15
- package/.next/server/chunks/6853.js +0 -12
- package/.next/server/chunks/6954.js +0 -1
- package/.next/server/chunks/9215.js +0 -4
- package/.next/server/chunks/9229.js +0 -1
- package/.next/server/chunks/9310.js +0 -21
- package/.next/static/chunks/2692-7fee6e06b3c93940.js +0 -1
- package/.next/static/chunks/2997-ec8b18227849683e.js +0 -1
- package/.next/static/chunks/3219-b4941c7ff967e904.js +0 -1
- package/.next/static/chunks/6602-f26d109fd94cee1d.js +0 -4
- package/.next/static/chunks/8370-2733742abf5f3ddf.js +0 -12
- package/.next/static/chunks/9112-c37628abc8a164cd.js +0 -1
- package/.next/static/chunks/app/(app)/agents/[handle]/page-83277413debb3b25.js +0 -1
- package/.next/static/chunks/app/(app)/config/page-eee4f8736608afa5.js +0 -1
- package/.next/static/chunks/app/(app)/costs/page-0beac688917eaa30.js +0 -1
- package/.next/static/chunks/app/(app)/dashboard/page-519a934ccfcce6fa.js +0 -1
- package/.next/static/chunks/app/(app)/docs/page-b4462f9ca2118f8b.js +0 -1
- package/.next/static/chunks/app/(app)/github/page-cf8501e45fe38663.js +0 -1
- package/.next/static/chunks/app/(app)/goals/page-75c36155c162df5b.js +0 -1
- package/.next/static/chunks/app/(app)/inbox/page-f40bdb457609ddad.js +0 -12
- package/.next/static/chunks/app/(app)/knowledge/page-dc5dd15e4f0ad22e.js +0 -1
- package/.next/static/chunks/app/(app)/layout-408976a4d35f06a8.js +0 -1
- package/.next/static/chunks/app/(app)/models/page-a54e0b8ffed0085c.js +0 -1
- package/.next/static/chunks/app/(app)/notifications/page-1f84d74bc53c2c6c.js +0 -12
- package/.next/static/chunks/app/(app)/org/page-d17c62b7a668b399.js +0 -12
- package/.next/static/chunks/app/(app)/organizations/page-b55445f226cf8c61.js +0 -1
- package/.next/static/chunks/app/(app)/page-c7dd52ecc2da529d.js +0 -1
- package/.next/static/chunks/app/(app)/pm/page-61ad11558f241cf1.js +0 -1
- package/.next/static/chunks/app/(app)/prepare-deploy/page-8d25f86b26ab0d2e.js +0 -1
- package/.next/static/chunks/app/(app)/profile/page-236673e1a8c1e6c6.js +0 -1
- package/.next/static/chunks/app/(app)/pulse/page-f2c6049a967b93a3.js +0 -1
- package/.next/static/chunks/app/(app)/routines/page-0193e84e6a60a06a.js +0 -1
- package/.next/static/chunks/app/(app)/security/page-71e5d992b5ddf79a.js +0 -1
- package/.next/static/chunks/app/(app)/skills/page-72691864856c9906.js +0 -1
- package/.next/static/chunks/app/(app)/tasks/page-5c9ca8f83d4c904f.js +0 -1
- package/.next/static/chunks/app/(app)/test-dev/page-5aee630d9bc73a0b.js +0 -1
- package/.next/static/chunks/app/(app)/update/page-2c9bcdb65bd2f597.js +0 -1
- package/.next/static/chunks/app/(auth)/login/page-50033813b56469ee.js +0 -1
- package/.next/static/chunks/app/(auth)/onboarding/page-075fd9673f7ab241.js +0 -1
- package/docs/assets/blackhole.svg +0 -37
- /package/.next/static/{vaEtsAmUuKf_DngRqwRUn → Mx3bcAGWI83SQ6PqC4kYX}/_buildManifest.js +0 -0
- /package/.next/static/{vaEtsAmUuKf_DngRqwRUn → Mx3bcAGWI83SQ6PqC4kYX}/_ssgManifest.js +0 -0
package/scripts/vps-update.sh
CHANGED
|
@@ -16,28 +16,37 @@ VERSION="${1:-latest}"
|
|
|
16
16
|
RUN_USER="${SUDO_USER:-$(id -un)}"
|
|
17
17
|
|
|
18
18
|
say "• Installing ${PKG}@${VERSION}…"
|
|
19
|
-
|
|
19
|
+
# Install into the SAME prefix the systemd service actually runs from — not npm's default. If an earlier
|
|
20
|
+
# user-level `npm i -g` shadowed the binary, the service's ExecStart may point at a different prefix; a plain
|
|
21
|
+
# `npm i -g` would update the wrong copy and the app would keep showing the old version after a restart.
|
|
22
|
+
SVC_BIN="$(systemctl cat constella 2>/dev/null | sed -n 's/^ExecStart=//p' | head -1 | awk '{print $1}')"
|
|
23
|
+
if [ -n "${SVC_BIN:-}" ] && [ -x "$SVC_BIN" ]; then
|
|
24
|
+
SVC_PREFIX="$(dirname "$(dirname "$SVC_BIN")")"
|
|
25
|
+
say " → service runs ${SVC_BIN} — installing into prefix ${SVC_PREFIX}"
|
|
26
|
+
$SUDO npm install -g --prefix "$SVC_PREFIX" "${PKG}@${VERSION}"
|
|
27
|
+
else
|
|
28
|
+
$SUDO npm install -g "${PKG}@${VERSION}"
|
|
29
|
+
fi
|
|
20
30
|
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
# (Re)write the passwordless self-update drop-in EVERY run (not just when absent) — an older/malformed/wrong-path
|
|
32
|
+
# drop-in left by a previous installer must be REPAIRED, else the in-app "Update now" keeps failing `sudo -n`
|
|
33
|
+
# with no self-heal. Idempotent + validated with visudo before install so a bad file can never lock out sudo.
|
|
34
|
+
NPM_PATH="$(command -v npm || echo /usr/bin/npm)"
|
|
35
|
+
SYSTEMCTL_PATH="$(command -v systemctl || echo /usr/bin/systemctl)"
|
|
36
|
+
# visudo is in /usr/sbin (off a non-root PATH) — resolve it and validate through sudo so it's found + privileged.
|
|
37
|
+
VISUDO="$(command -v visudo || echo /usr/sbin/visudo)"
|
|
38
|
+
SUDOERS_TMP="$(mktemp)"
|
|
39
|
+
# EXACT `constellai@latest` (no trailing `@*` wildcard that could span whitespace into extra root npm flags).
|
|
40
|
+
cat > "$SUDOERS_TMP" <<EOF
|
|
31
41
|
# Constella self-update - managed by scripts/vps-update.sh. Lets ${RUN_USER} update Constella and restart its
|
|
32
42
|
# service without a password (the in-app Update button). Scoped to two commands.
|
|
33
|
-
${RUN_USER} ALL=(root) NOPASSWD: ${NPM_PATH} install -g constellai, ${NPM_PATH} install -g constellai
|
|
43
|
+
${RUN_USER} ALL=(root) NOPASSWD: ${NPM_PATH} install -g constellai, ${NPM_PATH} install -g constellai@latest, ${SYSTEMCTL_PATH} restart constella, ${SYSTEMCTL_PATH} restart constella.service
|
|
34
44
|
EOF
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
fi
|
|
39
|
-
rm -f "$SUDOERS_TMP"
|
|
45
|
+
if $SUDO "$VISUDO" -cf "$SUDOERS_TMP" >/dev/null 2>&1; then
|
|
46
|
+
$SUDO install -m 0440 -o root -g root "$SUDOERS_TMP" /etc/sudoers.d/constella
|
|
47
|
+
say "• Enabled passwordless one-click updates (sudoers.d/constella)."
|
|
40
48
|
fi
|
|
49
|
+
rm -f "$SUDOERS_TMP"
|
|
41
50
|
|
|
42
51
|
if systemctl list-unit-files 2>/dev/null | grep -q '^constella\.service'; then
|
|
43
52
|
say "• Restarting the constella service…"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=212,exports.ids=[212],exports.modules={2809:(a,b,c)=>{c.d(b,{J:()=>e});var d=c(2910);let e=(0,d.createServerReference)("407ed923314dd0345588038a18fe9b55c8a8fbc857",d.callServer,void 0,d.findSourceMapURL,"rejectSpec")},7201:(a,b,c)=>{c.d(b,{IssueApprove:()=>x,PlanGate:()=>v,PlanGateLive:()=>u,Run247Button:()=>y,p:()=>w});var d=c(4374),e=c(74679),f=c(47104),g=c(43526),h=c(31819),i=c(73134),j=c(2910);let k=(0,j.createServerReference)("40f9cd3fc6c6d8cae96897a561300a7232d723d346",j.callServer,void 0,j.findSourceMapURL,"generatePlan"),l=(0,j.createServerReference)("0029bb6209b7625897f6acdf3d35b4ef5b219d578e",j.callServer,void 0,j.findSourceMapURL,"requestPlanChanges");var m=c(15404),n=c(67779),o=c(2809),p=c(64540),q=c(80926);let r=(0,j.createServerReference)("4046442bdc21d1e6839fe89a0eaa873baf2538c3ff",j.callServer,void 0,j.findSourceMapURL,"setAuto247"),s=(0,j.createServerReference)("00868fe54fb579add0f212e1f823d564328d7d5432",j.callServer,void 0,j.findSourceMapURL,"skipDesignGate");function t(a,b){window.dispatchEvent(new CustomEvent("constella:open-dm",{detail:{handle:a,text:b}}))}function u({planning:a,planSince:b,designRecommended:c=!1,designPending:j=!1}){let l=(0,h.k)(),[m,n]=(0,e.useTransition)(),o=(0,f.useRouter)(),[p,q]=(0,e.useState)(!1),[r,t]=(0,e.useState)(""),v=a||p;function w(){t(""),q(!0),window.dispatchEvent(new CustomEvent("constella:agent-run",{detail:{channel:"planner"}})),n(async()=>{try{let a=await k();(!a?.ok||!1===a.started)&&(q(!1),a?.error&&t(a.error)),o.refresh()}catch{q(!1),t(l("planner.gate.staleTab"))}})}return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(i.AgentRunLive,{channel:"planner",resume:a,sinceSeq:a?b-1:0,onFinish:()=>q(!1)}),v?(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.drafting.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.drafting.d")})]})]}):c||j?(0,d.jsxs)("div",{className:"plan-gate",style:{borderColor:"rgba(99,102,241,.45)"},children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0,style:{background:"#6366f1"}}),(0,d.jsx)("div",{className:"pg-ic",style:{background:"rgba(99,102,241,.16)",color:"#6366f1"},children:(0,d.jsx)(g.I,{name:"skill",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:j?"Design step pending":"Recommended: prototype the design first"}),(0,d.jsx)("div",{className:"pg-d",children:j?"Ada is holding the plan on the design step. Open the Design module, build & approve the prototype with Grace, then Send to execution — Ada turns the approved design into specs & issues (zero drift).":"This is a frontend product. Prototype & approve the UI in the Design module before generating the plan — Grace turns the brief into a real visual reference, so the specs are precise and you avoid rework."}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-accent",onClick:()=>o.push("/design"),children:[(0,d.jsx)(g.I,{name:"skill",size:14})," Open Design"]}),(0,d.jsxs)("button",{className:"btn-ghost",disabled:m,onClick:function(){n(async()=>{try{await s()}catch{}}),w()},style:{fontSize:12},children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:13,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):"Skip design & plan anyway"]})]})]}):(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"plan-gate-bar","aria-hidden":!0}),(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:l("planner.gate.noPlan.t")}),(0,d.jsx)("div",{className:"pg-d",children:l("planner.gate.noPlan.d")}),r&&(0,d.jsx)("div",{className:"pg-d",style:{color:"var(--sx-keyword)",marginTop:6},children:r})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("div",{className:"plan-hint",children:[(0,d.jsx)("div",{className:"plan-hint-t",children:l("planner.gate.hint.t")}),(0,d.jsx)("div",{className:"plan-hint-d",children:l("planner.gate.hint.d")})]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:m,onClick:w,children:[(0,d.jsx)(g.I,{name:m?"refresh":"bot",size:14,className:m?"sync-spin":""})," ",m?l("planner.gate.analyzing"):l("planner.gate.generate")]})]})]})]})}function v({specs:a,total:b}){let c=(0,h.k)(),[f,i]=(0,e.useTransition)();return(0,d.jsxs)("div",{className:"plan-gate",children:[(0,d.jsx)("div",{className:"pg-ic",children:(0,d.jsx)(g.I,{name:"bot",size:20})}),(0,d.jsxs)("div",{className:"pg-main",children:[(0,d.jsx)("div",{className:"pg-t",children:c("planner.gate.ready.t")}),(0,d.jsx)("div",{className:"pg-d",children:c("planner.gate.ready.d",{specs:a,total:b})})]}),(0,d.jsxs)("div",{className:"pg-actions",children:[(0,d.jsxs)("button",{className:"btn-ghost",disabled:f,onClick:()=>i(async()=>{await l(),t("ada",c("planner.gate.rejectPlanDm"))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:13})," ",c("planner.gate.requestChanges")]}),(0,d.jsxs)("button",{className:"btn-accent",disabled:f,onClick:()=>i(()=>(0,m.P)()),children:[(0,d.jsx)(g.I,{name:"check",size:14})," ",c("planner.gate.approvePlan")]})]})]})}function w({specId:a,specKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,n.B)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,o.J)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function x({issueId:a,issueKey:b,approved:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)();return c?(0,d.jsxs)("span",{className:"pill",style:{background:"var(--sx-string)22",color:"var(--sx-string)"},children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approved")]}):(0,d.jsxs)("span",{style:{display:"inline-flex",gap:6},children:[(0,d.jsxs)("button",{className:"sc2-btn",disabled:i,onClick:()=>j(()=>(0,p.t)(a)),children:[(0,d.jsx)(g.I,{name:"check",size:11})," ",f("planner.approve")]}),(0,d.jsxs)("button",{className:"sc2-btn danger",disabled:i,onClick:()=>j(async()=>{t((await (0,q.d)(a)).handle,f("planner.rejectItemDm",{key:b}))}),children:[(0,d.jsx)(g.I,{name:"refresh",size:11})," ",f("planner.reject")]})]})}function y({auto:a,approved:b,state:c}){let f=(0,h.k)(),[i,j]=(0,e.useTransition)(),k=f(i?a?"planner.run247.pausing":"planner.run247.starting":"waiting-approval"===c?"planner.run247.approveToRun":"all-done"===c?"planner.run247.allDone":a?"planner.run247.pause":"planner.run247.run"),l="blocked"===c?f("planner.run247.blockedTip"):void 0,m="off"===c&&!i;return(0,d.jsxs)("button",{className:"btn-"+(a?"ghost":"accent")+(m?" run-attn":""),disabled:!b||"all-done"===c||i,title:l,onClick:()=>j(()=>r(!a)),children:[(0,d.jsx)(g.I,{name:i?"refresh":"waiting-approval"===c?"bot":"all-done"===c?"check":a?"close":"play",size:14,className:i?"sync-spin":""})," ",k,("running"===c||m)&&(0,d.jsx)("span",{className:"dotpulse",style:{marginLeft:6}})]})}},15404:(a,b,c)=>{c.d(b,{P:()=>e});var d=c(2910);let e=(0,d.createServerReference)("00a7004dfc810d6e90f45ba9bd04c2eca003d5e093",d.callServer,void 0,d.findSourceMapURL,"approvePlan")},25543:(a,b,c)=>{c.d(b,{IssueApprove:()=>g,PlanGate:()=>f,PlanGateLive:()=>e,Run247Button:()=>h});var d=c(62060);let e=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGateLive() from the server but PlanGateLive is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","PlanGateLive");(0,d.registerClientReference)(function(){throw Error("Attempted to call GeneratePlanButton() from the server but GeneratePlanButton is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","GeneratePlanButton");let f=(0,d.registerClientReference)(function(){throw Error("Attempted to call PlanGate() from the server but PlanGate is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","PlanGate");(0,d.registerClientReference)(function(){throw Error("Attempted to call SpecApprove() from the server but SpecApprove is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","SpecApprove");let g=(0,d.registerClientReference)(function(){throw Error("Attempted to call IssueApprove() from the server but IssueApprove is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","IssueApprove"),h=(0,d.registerClientReference)(function(){throw Error("Attempted to call Run247Button() from the server but Run247Button is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Usuario\\Documents\\constella\\src\\components\\modules\\plan-gate.tsx","Run247Button")},30744:(a,b,c)=>{c.r(b),c.d(b,{"000d98b3b88a72c0da9bb16c37f72c90c656d4bc8e":()=>d.Kd,"00afe9f00dc6cfc2f7a294518600306b9fb5e41a4a":()=>d.cT,"4009d25d376d81e9fe444d498f210158c028c43282":()=>d.j0,"4034f4e6b86e944beaaa23e0bce49a7bb5d5cb234b":()=>d.OD});var d=c(14565)},64540:(a,b,c)=>{c.d(b,{t:()=>e});var d=c(2910);let e=(0,d.createServerReference)("400f1502baff617e4723ca3981ce687c276c48b759",d.callServer,void 0,d.findSourceMapURL,"approveIssue")},67779:(a,b,c)=>{c.d(b,{B:()=>e});var d=c(2910);let e=(0,d.createServerReference)("40c8d005e334f79c3d49673bd0c6cd2f849273b72e",d.callServer,void 0,d.findSourceMapURL,"approveSpec")},73134:(a,b,c)=>{c.d(b,{AgentRunLive:()=>j});var d=c(4374),e=c(74679),f=c(47104),g=c(43526);c(94800);var h=c(31819);let i=["read","create","edit","run","search","thinking","done","error"];function j({channel:a,resume:b=!1,sinceSeq:c=0,onFinish:k}){let l=(0,h.k)();(0,f.useRouter)();let[m,n]=(0,e.useState)(b),[o,p]=(0,e.useState)([]),[q,r]=(0,e.useState)(0);if((0,e.useRef)(b?c:0),(0,e.useRef)(!1),(0,e.useRef)(0),!m&&0===o.length)return null;let s=function(a){let b=[];for(let c of a)if("text"===c.kind){let a=(c.detail||"").replace(/\s+/g," ").trim();if(!a)continue;let d=b[b.length-1];d&&"text"===d.kind?d.content=(d.content+" "+a).slice(-600):b.push({id:c.id,kind:"text",content:a})}else if("thinking"===c.kind){let a=(c.detail||c.target||"").replace(/\s+/g," ").trim();a&&b.push({id:c.id,kind:"thinking",content:a})}else b.push({id:c.id,kind:c.kind,content:function(a){if(!a)return"";let b=a.split(/[\\/]/);return b.length>1?b.slice(-2).join("/"):a}(c.target)||c.detail||""});return b}(o),t=s.slice(-5),u=s.length-t.length,v=o.some(a=>"done"===a.kind||"error"===a.kind),w=o.some(a=>"error"===a.kind),x=String(Math.floor(q/60)).padStart(2,"0"),y=String(q%60).padStart(2,"0");return(0,d.jsxs)("div",{className:"card live-stream",style:{marginBottom:16,borderColor:w?"var(--sx-keyword)":"var(--accent)"},children:[(0,d.jsxs)("div",{className:"set-desc",style:{marginBottom:8,display:"flex",alignItems:"center",gap:7},children:[m&&!v?(0,d.jsx)("span",{className:"dotpulse"}):(0,d.jsx)(g.I,{name:w?"close":"check",size:13,style:{color:w?"var(--sx-keyword)":"var(--sx-string)"}}),m&&!v?l("agent.run.working"):w?l("agent.run.failed"):l("agent.run.finished"),s.length>0&&(0,d.jsxs)("span",{style:{color:"var(--text-faint)"},children:["\xb7 ",l(1===s.length?"agent.run.steps.one":"agent.run.steps.other",{n:s.length})]}),(0,d.jsxs)("span",{className:"live-elapsed",style:{marginLeft:"auto"},children:[x,":",y]})]}),0===t.length?(0,d.jsxs)("div",{className:"muted",style:{fontSize:12,display:"flex",alignItems:"center",gap:7},children:[(0,d.jsx)("span",{className:"sync-spin",children:(0,d.jsx)(g.I,{name:"refresh",size:12})})," ",l("agent.run.reading")]}):(0,d.jsxs)(d.Fragment,{children:[u>0&&(0,d.jsx)("div",{className:"live-more",children:l(1===u?"agent.run.earlier.one":"agent.run.earlier.other",{n:u})}),(0,d.jsx)("div",{className:"live-stream-lines",children:t.map(a=>(0,d.jsxs)("div",{className:"live-line "+a.kind,children:["text"!==a.kind&&(0,d.jsx)("span",{className:"ll-k",children:i.includes(a.kind)?l(`agent.verb.${a.kind}`):a.kind}),(0,d.jsxs)("span",{className:"ll-c",children:[a.content,!v&&a===t[t.length-1]&&"text"===a.kind&&(0,d.jsx)("span",{className:"ll-caret"})]})]},a.id))})]})]})}},80926:(a,b,c)=>{c.d(b,{d:()=>e});var d=c(2910);let e=(0,d.createServerReference)("407e9aa8711c5ef7e274c016f412637c44a483fd40",d.callServer,void 0,d.findSourceMapURL,"rejectIssue")}};
|