فهرست مستندات
مرجع CLI#
alamr رابط خط فرمان عمومی (CLI) برای پروژههای محیط (Environment)، اپ
(App) و پلاگین (Plugin) است. نسخهٔ دقیق CLI را فقط از صفحهٔ شروع
و Release Set ترفیعیافته نصب کنید؛ سپس انسان و عامل از سطح فرمان پایدار یکسان استفاده میکنند:
alamr doctor --json
فرمانها#
alamr create environment [directory]پروژهٔ آغازگر یک محیط را میسازد.alamr create environment [directory] --with-backendعلاوه بر محیط، بکاند اختیاریِ متعلق به همان Environment را نیز سیمکشی میکند.alamr create app [directory]پروژهٔ آغازگر یک bundle از App بهشکل Compact-first و با SDK تعبیهشده را میسازد. AppHost دسکتاپ بایتهای bundle نگهداریشده را باز میکند. Workspace را در مانیفست اعلام و از حالت فعلی presentation برای compose استفاده کنید؛ تغییر حالت سند و نشست App را حفظ میکند و باhost.presentation.changedبه App میرسد.alamr create plugin [directory]پروژهٔ فقط-فرانتاند میسازد. برای مرورگر بههمراه سرویس از--kind full-stack --with-backendو برای بستهٔ فقط-سرویس دارای artifact تغییرناپذیر OpenAPI و بدون خروجی مرورگر از--kind backend-only --with-backendاستفاده کنید.alamr loginترمینال محلیِ انسان را با کد مجوز (Authorization Code) و PKCE S256 احراز هویت میکند.alamr login --device --jsonبرای عامل کدنویسی یک تحویل ساختاریافتهٔ تأیید میسازد وalamr login --resume <handoffId> --jsonآن را پس از تأیید انسان کامل میکند.alamr logoutابتدا توکن مدیریت تعاملی ذخیرهشده را باطل و سپس آن را بهصورت محلی حذف میکند؛ این فرمان مقدارAL_AMR_TOKENفراهمشده از سوی CI را تغییر نمیدهد.alamr auth statusبدون نمایش اعتبارنامه مشخص میکند پوسته خارج است، نشست ذخیرهشده دارد یا از توکن پردازهٔ CI استفاده میکند.alamr auth session listنشستهای فعال CLI کاربر را میخواند وalamr auth session revoke <sessionId> --yesیک نشست دقیق را باطل میکند.alamr link [projectId]پوشه را به پروژهای موجود متصل میکند یا، اگر شناسه وارد نشده باشد، پروژهٔ متناظر را در رجیستری (Registry) میسازد. برای انتقال نسخهٔ کار به Registry دیگر، ابتداalamr unlink --yesرا اجرا کنید؛ این فرمان فقط اشارهگر محلی را برمیدارد. Plugin تازه میتواندpublisher.id: "pub_replace_me"را نگه دارد تا Registry آن را به Publisher حسابِ واردشده متصل کند.alamr unlink --yesفقط اتصال محلی پروژه را حذف میکند و پروژه یا snapshot تغییرناپذیر Registry را پاک نمیکند.alamr add <publisher/plugin[@version]>یک پلاگین منتشرشده را نصب و قفل میکند.--integration frontend-adapter --adapter <id>کد مرورگر و--integration backend-componentsمجموعهٔ بکاند بررسیشده را بدون بستهٔ مرورگر انتخاب میکند.alamr update <publisher/plugin[@version]>پلاگین نصبشده را به یک release دقیق و بازبینیشده تغییر میدهد.alamr remove <pluginId|publisher/plugin>نصب manifest، ورودی lock و وابستگی پکیج بدون مصرفکنندهٔ دیگر را در یک تراکنش محلی حذف میکند.alamr syncکل مجموعهٔ مطلوب پلاگینها را در یک تراکنش lockfile v3 مقید به digest حل و reconcile میکند. lockهای قدیمی v1/v2 خواندنیاند و به نصب frontend-adapter normalize میشوند.alamr inspect [publisher/plugin]مانیفست محلی یا رکورد کاتالوگ را بررسی میکند.alamr validateمانیفستها و فایلهای قفل محلی را اعتبارسنجی میکند.alamr buildاسکریپت build پروژه را با مدیر پکیج پینشده اجرا میکند و وجود پوشهٔ خروجی استاندارد را میسنجد. آن را پس ازalamr linkاجرا کنید، چون link ممکن است شناسهٔ محلی آغازگر را با شناسهٔ Registry جایگزین کند؛ فقط build پس از link باید بررسی یا منتشر شود.alamr runپردازهٔdevاعلامشدهٔ مدیر پکیج را آغاز یا دوباره استفاده میکند و readiness، logها، شناسهٔ پردازه و توکن مات توقف را برمیگرداند.alamr testنامزد تغییرناپذیر را میسازد یا دوباره استفاده میکند و checks انتشار را در یک عملیات اجرا میکند. برای Environment پوشهٔ build را با--bundle <dir>(معمولاًdist) بدهید. برای App ابتداalamr buildو سپسalamr testرا اجرا کنید. Plugin مستقیماً ازalamr testمیگذرد.alamr publishنامزد بررسیشده را برای بازبینی میفرستد.alamr statusوضعیت فعلی پروژهٔ متصل را از رجیستری میخواند.alamr doctor --profile <bootstrap|project|runtime|publish>فقط بررسیهای متناسب با همان مرحلهٔ سفر را اجرا میکند.alamr project list|showوضعیت خصوصی پروژه را میخواند وalamr project member list|add|change|remove|transferعضویت auditشدهٔadmin،developerوviewerرا در حدود نقش تأییدشدهٔ سرور مدیریت میکند.alamr token issue|list|revokeاعتبارنامهٔ CI محدود و تاریخدار را مدیریت میکند.alamr publication list|checks|submit|transitionفقط actionهای بازگشتی منبع انتشار را دنبال میکند و از متن status ماشین حالت حدس نمیزند.alamr review list|inspect <submissionId>صف بازبینی مدیر و شواهد ثابت را میخواند.review assignment <submissionId>مالک فعلی و نسخه را میخواند.review claim|release <submissionId> --assignment-version <n> --yesیک پرونده را اتمیک claim یا آزاد میکند.review decideبه نسخهٔ تخصیص بازگشتی و هر دو چکیدهٔ ثابت نیاز دارد؛ رد کردن علاوه بر آن--category،--summaryو--remediationمیخواهد.review history|evidenceتصمیمهای بسته و وضعیت صریح تولیدکنندهٔ diff/AI را نشان میدهد.review handoff-list|handoff-inspectکارهای انتشار تأییدشده را پیدا میکند؛ مدیر دومhandoff-claimو سپسhandoff-publishرا با نسخهٔ handoff و چکیدههای دقیق اجرا میکند. همهٔ mutationها به--yesنیاز دارند.alamr rollback <environment_revision|app_revision|plugin_release> <targetId>با دلیل auditشده یک هدف تغییرناپذیر واجدشرایط را فعال میکند.alamr catalog search <all|environment|app|plugin> [query]فقط کاتالوگ عمومی ناشناس را جستوجو میکند.alamr admin users list [--search <query>] [--cursor <cursor>]وalamr admin users show <userId>دایرکتوری ممیزیشدهٔ حسابها را میخوانند.alamr admin roles list|create|update|archive،alamr admin roles members <roleId>وalamr admin roles assign|unassign <roleId> <userId>تعریفها و تخصیصهای رول مدیریتشدهٔ پلتفرم را مدیریت میکنند. همهٔ عملیات admin به حساب ادمین رجیستری نیاز دارند؛roles createبه--keyو--display-nameو در صورت نیاز--descriptionو--environment env_a,env_bجداشده با ویرگول میگیرد (حذف آن یعنی رول در همهٔ Environmentها اعمال شود).roles updateهمچنین--scope-all(بازگشت به سراسری) و--expected-updated-at <iso>برای optimistic concurrency میپذیرد وroles assignبا--environmentتخصیص را به زیرمجموعهای از اسکوپ رول محدود میکند.alamr admin reviewers listفهرست اختیارهای فعال بازبین تفویضشده را میخواند.alamr admin reviewers grant|revoke <userId> --reason <text> --yesفقط اختیار بازبینی را تغییر میدهد، نه دسترسی admin یا Project، و رکورد ممیزی شامل عامل، هدف و دلیل ثبت میکند. mutationها از--dry-runپشتیبانی میکنند و توکن Project را رد میکنند.alamr admin apps listrevisionهای عمومی فعال و وضعیت دسترسی سراسری Runtime را نشان میدهد.alamr admin apps enable|disable <appId> <revisionId> --reason <text>فقط همان revision منتشرشده را تغییر میدهد، به ادمین Registry نیاز دارد و audit ثبت میکند. در v0.x این دسترسی سراسری است و به Environment محدود نمیشود.alamr admin hubs list [hubEnvironmentId] [zoneId]موجودی اسلاتهای تألیفشدهٔ Hub را میخواند (مقدار پیشفرضenv_hub/sunlit-wayاست).alamr admin hubs set <hubEnvironmentId> <zoneId> <slotId> <environmentId> --reason <text>اسلات دستی را تخصیص میدهد یا جایگزین میکند وalamr admin hubs clear <hubEnvironmentId> <zoneId> <slotId> --reason <text>تخصیص آن را حذف میکند. mutation به مدیر Registry نیاز دارد، فقط دلیل ۳ تا ۱۰۰۰ نویسهای میپذیرد و در عملیات جایگذاری در هاب مستند شده است.alamr workflow get|plan|status|execute|approve|resume <workflowId>یک DAG نسخهدار AgentWorkflow v2 را کشف و اجرا میکند.
همهٔ فرمانها --json را میپذیرند. فرمان تغییردهنده به --yes نیاز دارد و
هرجا preflight امن وجود دارد، --dry-run --json نیز بدون نوشتن state محلی یا
Registry پشتیبانی میشود. نزدیکترین فایل قفل در پوشهٔ
جاری یا یکی از والدها، npm، pnpm، Yarn یا Bun را انتخاب میکند؛ بنابراین پروژهٔ
داخل زیرپوشهٔ یک monorepo نیز درست تشخیص داده میشود. دستیار نباید مدیر پکیج را
از نصبهای سراسری حدس بزند.
پردازهٔ محلی و پروفایلهای آمادگی#
پروفایلهای doctor مانع میشوند یک scaffold تازه بهخاطر سرویس یا وابستگیای که
هنوز وجود ندارد شکست بخورد. bootstrap نسخهٔ Node و انتخاب مدیر پکیج را بررسی
میکند. project وابستگیهای نصبشده، manifest و lock را نیز میسنجد. runtime
رجیستری و health endpoint بکاند اعلامشدهٔ Environment را اضافه میکند و
publish دسترسی رجیستری و Project دقیق متصل را بررسی میکند.
alamr run بدون ساختن فرمان shell، npm یا pnpm یا Yarn را حل میکند، اسکریپت
dev اعلامشده را آغاز میکند و رکورد پایدار پردازه را با اطمینان دوباره به کار
میگیرد. توقف به توکن مات بازگشتی از فرمان شروع نیاز دارد:
alamr doctor --profile bootstrap --json
alamr doctor --profile project --json
alamr run --json
alamr doctor --profile runtime --json
alamr doctor --profile publish --json
alamr run --stop --run-token <runToken> --json
تست bundle تغییرناپذیر#
frontendهای Environment و App، bundleهای نگهداریشده در Registry هستند. جریان عمومی تست آنها frontend میزبانیشده نزد ناشر، handshake مسیر well-known یا مرحلهٔ جداگانهٔ prepare/resume ندارد. توالی تکمرحلهای مناسب محصول را اجرا کنید:
# Environment
alamr build --json
alamr test --bundle dist --json --visibility unlisted --channel preview
# App
alamr build --json
alamr test --yes --json
# Plugin
alamr test --json --visibility unlisted --channel preview
برای Environment، فرمان test --bundle dist مانیفست را اعتبارسنجی، پوشهٔ build
را بهشکل قطعی بستهبندی، وجود index.html و cover اعلامشده را الزام، integrity
از نوع SHA-512 را محاسبه، revision تغییرناپذیر را ایجاد یا دوباره استفاده، بایتها
را upload و checks انتشار را اجرا میکند. اگر خروجی dist نیست از
--bundle <dir> استفاده کنید.
برای App، alamr build پوشهٔ dist را میسازد. alamr test بعدی همان بایتها
را inventory، pack، upload، bind و بررسی میکند. نسل build تغییریافته revision
تغییرناپذیر تازهای میگیرد.
Plugin مستقیماً از alamr test میگذرد. Plugin از نوع full_stack یا
backend_only همچنان میتواند deploymentهای بکاند HTTPS/WSS جداگانه و
بررسیشده نزد ناشر را در al-amr.deployments.json اعلام کند؛ تحویل bundle مربوط
به بایتهای frontend محصول است، نه این سرویسهای زنده.
plan وضعیت مطلوب پلاگین#
manifest محیط منبع وضعیت مطلوب است. add، update، remove و sync ابتدا کل
مجموعهٔ releaseهای دقیق Registry و artifactهای Managed Store را حل میکنند.
--plan یک plan کوتاهعمر و مقید به digest را بدون تغییر state پروژه ذخیره
میکند؛ همان عملیات را با --plan-digest بازگشتی و --yes اعمال کنید. plan
کهنه، منقضی، تغییریافته یا دارای تلاش قبلی بهصورت fail-closed رد میشود.
alamr add al-amr/media@<version> --adapter react --config-json '{"directCalls":{"enabled":false}}' --plan --json
alamr add --plan-digest <sha256:plan-digest> --yes --json
alamr sync --plan --json
alamr sync --plan-digest <sha256:plan-digest> --yes --json
--config-json یک شیء JSON حداکثر ۶۴ کیبیبایتی میپذیرد و پس از اعتبارسنجی
schema به پیکربندی تغییرناپذیر متعلق به میزبان تبدیل میشود. اعمال plan تغییریافته
یک lock v3 با وضعیت pending مینویسد و برای نصبهای فرانتاند فرمان دقیق مدیر پکیج تشخیصدادهشده
را برمیگرداند. آن فرمان را صریح اجرا کنید و سپس با alamr sync --yes --json
بایتهای پکیج نصبشده را بررسی و lock را به applied ببرید. هیچ resolution
ناتمامی authoritative نیست.
اجرای AgentWorkflow v2#
index عمومی Developer Portal عملیات ساختاریافته، وابستگیها، preconditionها، postconditionها، قلمرو mutation، کدهای پایدار نتیجه و مرزهای تأیید انسانی را منتشر میکند. CLI پیش از اجرای adapter مجاز و بدون shell، نشانی و SHA-256 دقیق workflow، نسخهٔ دقیق CLI، مبدأ Registry و Platform Release Set را اعتبارسنجی میکند.
alamr workflow get environment.create --json
alamr workflow plan environment.create --json
alamr workflow execute environment.create --idempotency-key <caller-key> --inputs '{"directory":"my-world","package_manager":"pnpm","topology":"standalone"}' --json
alamr workflow status environment.create --resume <resumeToken> --json
alamr workflow approve environment.create --resume <resumeToken> --approval-step <stepId> --yes --json
alamr workflow resume environment.create --resume <resumeToken> --json
execute به idempotency key متعلق به فراخوان نیاز دارد و یک resume token یکباره
برمیگرداند. فقط hash هر دو مقدار زیر .al-amr/workflows/ ذخیره میشود. تأیید،
قصد انسان را برای یک مرحلهٔ منتظر ثبت میکند اما آن را resume نمیکند؛ عامل باید
resume را جداگانه فراخوانی کند. retry با همان idempotency key بهجای تکرار
mutation، اجرای پایدار موجود را دوباره استفاده میکند.
مرز بازبینی انتشار#
بدون flag بازبینی، کشف workflow از /agent/v2/index.json عمومی استفاده میکند و
فقط Release Set با وضعیت promoted را میپذیرد. gate انتشار میتواند برای یک
مجموعهٔ دقیق catalog_verified یک preview جداافتاده deploy کند و CLI را چنین
فراخوانی کند:
alamr workflow execute environment.create \
--workflow-origin <isolated-preview-origin> \
--release-verification <releaseSetId> \
--registry <managed-store-registry-origin> \
--idempotency-key <caller-key> \
--inputs '{"directory":"my-world","package_manager":"pnpm","topology":"standalone"}' \
--json
--release-verification ورودی محافظتشدهٔ CI انتشار است، نه راهی برای انتخاب
candidate توسط کاربر عادی. این flag شناسهٔ دقیق Release Set میخواهد و فقط index
با mode برابر release_verification، state برابر catalog_verified و شناسهٔ
منطبق را میپذیرد. هر fetch بعدی workflow باید همان مبدأ جداافتاده، مبدأ Registry
و شناسهٔ بازبینی را به کار ببرد. preview هیچ state خصوصی انتشار دریافت نمیکند؛
فرمانهای Portal تولید تا پایان promotion همچنان فقط مجموعهٔ ترفیعیافتهٔ قبلی
را تبلیغ میکنند.
نتیجهٔ JSON نسخهدار#
CLI با --json دقیقاً یک سند JSON در خروجی استاندارد مینویسد و راهنمای ورود
یا متن انسانی را در خطای استاندارد با آن مخلوط نمیکند. پوستهٔ پایدار نسخهٔ ۱
چنین است:
{
"schemaVersion": "1",
"command": "validate",
"ok": true,
"code": "ALAMR_OK",
"exitCode": 0,
"message": "Validation passed.",
"diagnostics": [],
"nextActions": [],
"artifacts": [],
"data": {},
"meta": {
"cliVersion": "0.1.0-alpha.1",
"elapsedMs": 14
}
}
code نتیجهٔ نمادین و پایدار خودکارسازی است و exitCode دستهٔ عددی پوسته.
diagnostics، nextActions و artifacts همیشه آرایهاند؛ data مخصوص همان
فرمان است و اگر دادهای نباشد حذف میشود. در نسخهٔ ۱ میتوان فیلد سازگار افزود
و عامل باید فیلد ناشناخته را نادیده بگیرد.
احراز هویت#
ورود تعاملی روی 127.0.0.1 و یک پورت موقت که سیستمعامل انتخاب میکند گوش
میدهد و همان نشانی بازگشت نهایی را بدون تغییر در درخواست مجوز و تبادل توکن
به کار میبرد. scheme، نشانی، مسیر و query ثبتشدهٔ
http://127.0.0.1/callback دقیق میماند و فقط پورت loopback تغییر میکند.
رابط خط فرمان بیرون از توسعهٔ محلی، نقطهٔ پایانی کشف با HTTP را رد میکند و
نقطههای پایانی مجوز، توکن و ابطال را به مبدأ دقیق صادرکنندهٔ رجیستری محدود
میسازد. فرایند کشف هرگز نمیتواند توکن حامل ذخیرهشده را به میزبانی دیگر
بفرستد. رابط خط فرمان هیچگاه توکن زمان اجرای یک محیط را بهعنوان اعتبارنامهٔ
مدیریتی ذخیره نمیکند. CI باید یک توکن پروژهٔ کوتاهعمر و دارای دامنهٔ دسترسی
را در AL_AMR_TOKEN قرار دهد.
احراز هویت رابط خط فرمان از SSO مرورگر مستقل است. خروج از هاب (Hub) یا پرتال
توسعهدهندگان (Developer Portal) اعتبارنامههای رابط خط فرمان یا CI را در
پسزمینه باطل نمیکند؛ alamr logout نیز نشستهای مرورگر را پایان نمیدهد.
نشستهای ذخیرهشدهٔ CLI جداگانه قابل ابطالاند:
alamr auth status --json
alamr auth session list --json
alamr auth session revoke <sessionId> --dry-run --json
alamr auth session revoke <sessionId> --yes --json
ابطال نشست جاری، اعتبارنامهٔ محلی همان نشست را نیز حذف میکند. توکن پروژه اعتبارنامهٔ پردازه است، نشست مدیریت CLI نیست و در این فهرست دیده نمیشود.
تحویل ورود از عامل به انسان#
عاملی که مالک نشست مرورگر نیست، یک handoff کوتاهعمر OAuth Device Authorization میسازد:
alamr login --device --json
خروجی JSON بهتنهایی device flow را انتخاب نمیکند؛ عامل باید --device
را بهصورت صریح بفرستد.
نتیجهٔ موفق کد ALAMR_LOGIN_APPROVAL_REQUIRED دارد و
verificationUriComplete، userCode، expiresAt، یک handoffId مات و فرمان
دقیق resumeCommand را برمیگرداند. انسان فقط وقتی تأیید میکند که کد مرورگر
دقیقاً با userCode عامل یکی باشد. سپس عامل فرمان بازگشتی را اجرا میکند:
alamr login --resume <handoffId> --registry <origin> --json
اگر هنوز تأیید نشده باشد، نتیجه exitCode: 3، کد
ALAMR_LOGIN_APPROVAL_PENDING و retryAfterSeconds محدود دارد. پس از تأیید،
ALAMR_LOGIN_COMPLETE برمیگردد و اعتبارنامهٔ مدیریت ذخیره میشود. مقدار OAuth
device_code هرگز در خروجی CLI نمیآید؛ در فایل محلی خصوصی و مقید به رجیستری
میماند و پس از موفقیت، رد یا انقضا حذف میشود. این مسیر برای مرز تأیید انسانی
است، نه CI بدون ناظر.
پیشبررسی اعتماد پلاگین#
پکیج frontend پلاگین بهصورت trusted_library در قلمرو مرورگر Environment
اجرا میشود؛ permission اعلامشده sandbox جاوااسکریپت نیست. بنابراین add و
update به adapter صریح و تأیید نیاز دارند. ابتدا همان فرمان دقیق را با
--dry-run --json اجرا کنید. نتیجه، تأیید Publisher، وضعیت اعتماد، runtime
class، permissionها، افشای مرورگر/شبکه و فایلهای در آستانهٔ تغییر را نشان
میدهد. فقط پس از بازبینی با --yes اجرا کنید.
add، update و remove، manifest محیط، lock تغییرناپذیر و تراکنش وابستگی واقعی
پکیج را هماهنگ نگه میدارند. نصب backend_components آداپتر، بسته یا integrity
نمینویسد و package manager را اجرا نمیکند. هر pluginId حداکثر یک نصب دارد و
نصب frontend_adapter یک release تمامپشته، مولفههای بکاند بررسیشدهٔ همان
release را هم مجاز میکند. unlink فقط .al-amr/project.json را تغییر میدهد. هیچیک
dependency را خودکار نصب نمیکنند؛ نتیجه مدیر پکیج تشخیصدادهشده و فرمان دقیق
نصب بعدی را برمیگرداند.
برابری مدیریت و actionهای سرور#
سطح گرافیکی «مدیریت» از همان endpointهای این فرمانها استفاده میکند:
alamr project show --json
alamr project member list --json
alamr project member transfer proj_example pmbr_target \
--previous-owner-role admin --reason "Permanent handoff" --yes --json
alamr token list --json
alamr publication list --json
هر پاسخ انتشار allowedActions ویژهٔ درخواستکننده دارد. عامل باید یکی از همان
actionها را انتخاب کند، هدف تغییرناپذیر و state دقیق from را حفظ کند و وقتی
action لازم میداند --reason بدهد. action غایب یک مرز مجوز یا lifecycle است،
نه دکمهٔ پنهان مخصوص Console که باید دور زده شود.
کدهای خروج پایدار#
0: موفقیت1: شکست اعتبارسنجی یا عملیات2: شیوهٔ استفادهٔ نامعتبر3: شکست احراز هویت یا مجوز4: شکست شبکه5: تعارض وضعیت
مصرفکنندهٔ ماشینی باید کد خروج و فیلدهای ساختاریافتهٔ --json را مبنا قرار
دهد، نه تطبیق متن پیامهای انسانی را. مرجع API رابط مدیریت
مشترک را توضیح میدهد.
ساخت Environment دارای بکاند
alamr create environment my-world --with-backend علاوه بر محیط، اعلان manifest،
درخواست Grant در مرورگر، verifier سمت سرور، CORS محدود و health endpoint را
میسازد. اجرای alamr doctor --json سلامت این endpoint را همراه manifest و
Registry بررسی میکند.
نقشها و دادههای اختصاصی Environment در این بکاند نگهداری میشوند؛ Registry فقط مجوز کوتاهعمر و حصار Runtime را صادر میکند.