Files
OmniRoute/docs/i18n/or/docs/frameworks/CLOUD_AGENT.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* feat(docs): mirror every docs/ page in all 65 locales

Extends the documentation mirrors from the 22-page core set (#13940) to
every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors
(6,208 new), language bars rewritten for the full locale list, state
adopted so the blocking drift gate now covers all 152 pages.

run-translation.mjs: an oversized block made only of table rows or list
items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is
cut at item boundaries and rejoined without a blank line — the single
16-40 KB request outlived the backend socket for verbose scripts. 48
older mirrors whose tables had lost rows were retranslated with --force.

* docs(i18n): refresh mirrors for the sources the base changed since the branch cut

Section-level retranslation of the 29 docs (and README.md) whose source
or mirrors moved on release/v3.8.51 during the run, then state adoption;
the drift gate is green again on the merged tree.
2026-09-18 13:16:46 -03:00

30 KiB

Cloud Agents (ଓଡ଼ିଆ)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


ସତ୍ୟର ମୂଳ ଉତ୍ସ: src/lib/cloudAgent/ ଏବଂ src/app/api/v1/agents/tasks/ ଶେଷ ଅଦ୍ୟତନ: 2026-06-28 — v3.8.40 (frontmatter ସତେଜୀକରଣ; cursor-cloud ସମେତ 4ଟି ଏଜେଣ୍ଟ)

OmniRoute ତୃତୀୟ-ପକ୍ଷ କ୍ଲାଉଡ୍ରେ ହୋଷ୍ଟ କରାଯାଇଥିବା କୋଡିଂ ଏଜେଣ୍ଟଗୁଡ଼ିକୁ (Codex Cloud, Cursor, Devin, Jules) ଦୀର୍ଘକାଳୀନ ଟାସ୍କ ଭାବେ ସଂଯୋଜିତ ଓ ପରିଚାଳିତ କରେ। ପ୍ରତ୍ୟେକ ଏଜେଣ୍ଟକୁ ଏକ ସମାନ ଇଣ୍ଟରଫେସ୍ ପଛରେ ଆବୃତ କରାଯାଇଛି, ଯାହା ଫଳରେ କ୍ଲାଏଣ୍ଟମାନେ ପ୍ରଦାନକାରୀ-ନିର୍ଦ୍ଦିଷ୍ଟ API ସହିତ କାରବାର ନକରି ଏକ ପ୍ରମ୍ପ୍ଟ + ରିପୋ URL ଦାଖଲ କରି ଫଳାଫଳ ପାଇପାରିବେ।

ଏକ Cloud Agent ଟାସ୍କ ନିୟମିତ ଚାଟ୍ ସମ୍ପୂର୍ଣ୍ଣକରଣ ନୁହେଁ। ଏହା ଏକ ସ୍ଥାୟୀ, ବହୁ-ପଦକ୍ଷେପ ବିଶିଷ୍ଟ କାର୍ଯ୍ୟ ଏକକ, ଯାହାକୁ ସମ୍ପୂର୍ଣ୍ଣ ହେବାକୁ କିଛି ମିନିଟ୍ରୁ ଘଣ୍ଟା ପର୍ଯ୍ୟନ୍ତ ଲାଗିପାରେ, ଏହାର ଆର୍ଟିଫ୍ୟାକ୍ଟ ଭାବେ ଏକ Pull Request ସୃଷ୍ଟି ହୋଇପାରେ, ଏବଂ ଏହା ଅନୁସରଣକାରୀ ସନ୍ଦେଶ ସହିତ (କିଛି ପ୍ରଦାନକାରୀଙ୍କ କ୍ଷେତ୍ରରେ) ଯୋଜନା ଅନୁମୋଦନ ଗେଟ୍କୁ ସମର୍ଥନ କରେ।

Cloud Agent ଟାସ୍କର ଜୀବନଚକ୍ର

ଉତ୍ସ: diagrams/cloud-agent-flow.mmd

ସମର୍ଥିତ ଏଜେଣ୍ଟଗୁଡ଼ିକ

ପ୍ରଦାନକାରୀ ID କ୍ଲାସ୍ ଉତ୍ସ ଅପ୍ଷ୍ଟ୍ରିମ୍ ମୂଳ URL ଯୋଜନା ଅନୁମୋଦନ
jules JulesAgent src/lib/cloudAgent/agents/jules.ts https://jules.googleapis.com/v1alpha ହଁ
devin DevinAgent src/lib/cloudAgent/agents/devin.ts https://api.devin.ai/v1 ହଁ
codex-cloud CodexCloudAgent src/lib/cloudAgent/agents/codex.ts https://api.openai.com/v1/codex/cloud ନା (ସ୍ୱୟଂଚାଳିତ)
cursor-cloud CursorCloudAgent src/lib/cloudAgent/agents/cursor.ts https://api.cursor.com/v0 ନା (ସ୍ୱୟଂଚାଳିତ)

ରେଜିଷ୍ଟ୍ରି: src/lib/cloudAgent/registry.tsgetAgent(providerId), getAvailableAgents(), ଏବଂ isCloudAgentProvider(providerId) ଏକ୍ସପୋର୍ଟ କରେ। ରେଜିଷ୍ଟ୍ରିଟି ହେଉଛି ଏକ ସରଳ ଇନ୍-ମେମୋରି Record<string, CloudAgentBase>, ଯାହା ମଡ୍ୟୁଲ୍ ଲୋଡ୍ ହେବା ସମୟରେ ପୂରଣ ହୁଏ।

ସ୍ଥାପତ୍ୟ

କ୍ଲାଏଣ୍ଟ (ଡ୍ୟାସ୍ବୋର୍ଡ / CLI / API)
  → POST /api/v1/agents/tasks (ପରିଚାଳନା ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ)
    → CreateCloudAgentTaskSchema ବୈଧତା ଯାଞ୍ଚ (Zod)
    → registry.getAgent(providerId)
    → getCloudAgentCredentials(providerId)
      └─ getProviderConnections({ provider, isActive: true }) ରୁ ଆଣେ
         (ପ୍ରଥମେ apiKey, ନ ମିଳିଲେ accessToken ବ୍ୟବହାର କରେ)
    → agent.createTask({ prompt, source, options }, credentials)
      └─ ଅପ୍ଷ୍ଟ୍ରିମ୍ ପ୍ରଦାନକାରୀ API କୁ HTTP POST
      └─ ଆଭ୍ୟନ୍ତରୀଣ id + externalId ସହିତ CloudAgentTask ଫେରାଏ
    → cloud_agent_tasks (SQLite) ମଧ୍ୟରେ insertCloudAgentTask(...)

ପୋଲିଂ (ପଢ଼ିବା ସମୟରେ ବିଳମ୍ବିତ ସିଙ୍କ୍):
  GET /api/v1/agents/tasks/[id]
    → getCloudAgentTaskById(id)
    → agent.getStatus(externalId, credentials)  // ସ୍ଥିତି + କାର୍ଯ୍ୟକଳାପ ସତେଜ କରେ
    → ନୂତନ ସ୍ଥିତି, ଫଳାଫଳ, completed_at ସହିତ updateCloudAgentTask(...)
    → ସିରିଆଲାଇଜ୍ ହୋଇଥିବା ଟାସ୍କ ଫେରାଏ

ପାରସ୍ପରିକ କ୍ରିୟା:
  POST /api/v1/agents/tasks/[id]  body: { action: "approve" | "message" | "cancel" }
    → "approve" ପାଇଁ agent.approvePlan(externalId, credentials)
    → "message" ପାଇଁ agent.sendMessage(externalId, message, credentials)
    → "cancel" ପାଇଁ ସ୍ଥିତି "cancelled" କୁ ପରିବର୍ତ୍ତିତ ହୁଏ (କେବଳ ସ୍ଥାନୀୟ)

ସିଙ୍କ୍ ବିଳମ୍ବିତ: ପ୍ରତ୍ୟେକ GET /tasks/[id] ରେ ଅପ୍ଷ୍ଟ୍ରିମ୍ରୁ ସ୍ଥିତି ସତେଜ କରାଯାଏ। କୌଣସି ପୃଷ୍ଠଭୂମି ପୋଲର୍ ନାହିଁ। ନବୀନତମ ସ୍ଥିତି ଆବଶ୍ୟକ କରୁଥିବା ଡ୍ୟାସ୍ବୋର୍ଡଗୁଡ଼ିକ ଉଚିତ ବ୍ୟବଧାନରେ GET ଏଣ୍ଡପଏଣ୍ଟକୁ ପୋଲ୍ କରିବା ଉଚିତ।

CloudAgentBase ଇଣ୍ଟରଫେସ୍

ଉତ୍ସ: src/lib/cloudAgent/baseAgent.ts

export interface AgentCredentials {
  apiKey: string;
  baseUrl?: string;
}

export interface CreateTaskParams {
  prompt: string;
  source: CloudAgentSource;
  options: {
    autoCreatePr?: boolean;
    planApprovalRequired?: boolean;
    environment?: Record<string, string>;
  };
}

export interface GetStatusResult {
  status: CloudAgentStatus;
  externalId?: string;
  result?: CloudAgentResult;
  activities: CloudAgentActivity[];
  error?: string;
}

export abstract class CloudAgentBase {
  abstract readonly providerId: string;
  abstract readonly baseUrl: string;

  abstract createTask(p: CreateTaskParams, c: AgentCredentials): Promise<CloudAgentTask>;
  abstract getStatus(externalId: string, c: AgentCredentials): Promise<GetStatusResult>;
  abstract approvePlan(externalId: string, c: AgentCredentials): Promise<void>;
  abstract sendMessage(
    externalId: string,
    message: string,
    c: AgentCredentials
  ): Promise<CloudAgentActivity>;
  abstract listSources(
    c: AgentCredentials
  ): Promise<{ name: string; url: string; branch?: string }[]>;

  protected mapStatus(raw: string): CloudAgentStatus; // ହ୍ୟୁରିଷ୍ଟିକ୍ ଅପ୍ଷ୍ଟ୍ରିମ୍-ଷ୍ଟ୍ରିଙ୍ଗ୍ → ଏନମ୍
  protected generateTaskId(): string; // `task_<ts>_<rand>`
  protected generateActivityId(): string; // `act_<ts>_<rand>`
}

CodexCloudAgent.approvePlan ଉଦ୍ଦେଶ୍ୟମୂଳକ ଭାବେ ଏକ ତ୍ରୁଟି ନିକ୍ଷେପ କରେ — Codex Cloud ସ୍ୱୟଂଚାଳିତ ଭାବେ ଯୋଜନା ପ୍ରସ୍ତୁତ କରେ ଏବଂ ଏଥିରେ କୌଣସି ଅନୁମୋଦନ ଦ୍ୱାର ନାହିଁ। CodexCloudAgent.listSources [] ଫେରାଏ।

CursorCloudAgent, Cursorର ଆଧିକାରିକ REST API (api.cursor.com/v0) ମାଧ୍ୟମରେ ଏହାର Background / Cloud Agentsକୁ ପରିଚାଳନା କରେ ଏବଂ ଏଥିପାଇଁ ଏକ ବ୍ୟବହାରକାରୀ କିମ୍ବା ସର୍ଭିସ୍-ଆକାଉଣ୍ଟ API କୀ ବ୍ୟବହାର କରେ — ଏହା Cursor IDEର OAuth ସେସନ୍କୁ ପୁନଃବ୍ୟବହାର କରିବା ତୁଳନାରେ ଅଧିକ ସୁରକ୍ଷିତ, ପ୍ରଥମ-ପକ୍ଷ ବିକଳ୍ପ (ପ୍ରଦାତା cursor, ଯେଉଁଥିରେ ନିଷେଧ-ବିପଦ ସତର୍କବାଣୀ ରହିଛି)। ଏହା ଏକ ସରଳ REST ଆଡାପ୍ଟର୍ (କୌଣସି @cursor/sdk ନେଟିଭ୍ ନିର୍ଭରତା ନାହିଁ)। approvePlan ଏକ ତ୍ରୁଟି ନିକ୍ଷେପ କରେ (Cursor ଏଜେଣ୍ଟଗୁଡ଼ିକ ସ୍ୱୟଂଚାଳିତ ଭାବେ ଚାଲନ୍ତି); listSources କୀ ଦ୍ୱାରା ପହଞ୍ଚଯୋଗ୍ୟ ରିପୋଜିଟୋରିଗୁଡ଼ିକୁ ତାଲିକାଭୁକ୍ତ କରେ। Cursor ବଡ଼ ଅକ୍ଷରର ସ୍ଥିତି ଏନମ୍ (CREATING/RUNNING/FINISHED/ERROR) ଫେରାଏ, ଯାହାକୁ ସ୍ପଷ୍ଟ ଭାବେ ଅଂଶୀଦାର CloudAgentStatus ସହିତ ମ୍ୟାପ୍ କରାଯାଏ। ପ୍ରତ୍ୟେକ କ୍ରେଡେନ୍ସିଆଲ୍ ପାଇଁ baseUrl ଓଭର୍ରାଇଡ୍ କରାଯାଇପାରେ, ତେଣୁ କୋଡ୍ ପରିବର୍ତ୍ତନ ବିନା API ସଂସ୍କରଣ/ପଥ ସଂଶୋଧନ କରାଯାଇପାରିବ।

ଡୋମେନ୍ ପ୍ରକାରଗୁଡ଼ିକ

ଉତ୍ସ: src/lib/cloudAgent/types.ts

export const CLOUD_AGENT_STATUS = {
  QUEUED: "queued",
  RUNNING: "running",
  AWAITING_APPROVAL: "awaiting_approval",
  COMPLETED: "completed",
  FAILED: "failed",
  CANCELLED: "cancelled",
} as const;

export interface CloudAgentSource {
  repoName: string;
  repoUrl: string; // ଏକ ବୈଧ URL ହେବା ଆବଶ୍ୟକ
  branch?: string;
}

export interface CloudAgentResult {
  prUrl?: string;
  prNumber?: number;
  commitMessage?: string;
  diffUrl?: string;
  summary?: string;
  duration?: number; // ସେକେଣ୍ଡ, ଧନାତ୍ମକ ପୂର୍ଣ୍ଣସଂଖ୍ୟା
  cost?: number; // ଧନାତ୍ମକ ଫ୍ଲୋଟ୍
}

export interface CloudAgentActivity {
  id: string;
  type: "plan" | "command" | "code_change" | "message" | "error" | "completion";
  content: string;
  timestamp: string; // ISO 8601
  metadata?: Record<string, unknown>;
}

export interface CloudAgentTask {
  id: string; // ଆଭ୍ୟନ୍ତରୀଣ `task_...` id
  providerId: "jules" | "devin" | "codex-cloud" | "cursor-cloud";
  externalId?: string; // ଅପ୍ଷ୍ଟ୍ରିମ୍ ପ୍ରଦାତାର id
  status: CloudAgentStatus;
  prompt: string; // 1..10000 ଅକ୍ଷର
  source: CloudAgentSource;
  options: {
    autoCreatePr?: boolean;
    planApprovalRequired?: boolean;
    environment?: Record<string, string>;
  };
  result?: CloudAgentResult;
  activities: CloudAgentActivity[];
  error?: string;
  createdAt: string;
  updatedAt: string;
  completedAt?: string;
}

ବୈଧତାକରଣ ସ୍କିମାଗୁଡ଼ିକ (CreateCloudAgentTaskSchema, UpdateCloudAgentTaskSchema) ପ୍ରକାରଗୁଡ଼ିକ ସହିତ ଏକ୍ସପୋର୍ଟ କରାଯାଏ ଏବଂ ରୁଟ୍ ହ୍ୟାଣ୍ଡଲର୍ଗୁଡ଼ିକ ଦ୍ୱାରା ବ୍ୟବହୃତ ହୁଏ।

ଡାଟାବେସ୍

ଉତ୍ସ: src/lib/cloudAgent/db.ts — ଟେବୁଲ୍ଟି createCloudAgentTaskTable() ମାଧ୍ୟମରେ ଆବଶ୍ୟକତା ଅନୁସାରେ ସୃଷ୍ଟି ହୁଏ (ମଡ୍ୟୁଲ୍ ଇମ୍ପୋର୍ଟ ସମୟରେ src/lib/cloudAgent/index.ts ରୁ ମଧ୍ୟ କଲ୍ କରାଯାଏ)।

CREATE TABLE IF NOT EXISTS cloud_agent_tasks (
  id           TEXT PRIMARY KEY,
  provider_id  TEXT NOT NULL,
  external_id  TEXT,
  status       TEXT NOT NULL DEFAULT 'queued',
  prompt       TEXT NOT NULL,
  source       TEXT NOT NULL,             -- JSON
  options      TEXT DEFAULT '{}',         -- JSON
  result       TEXT,                       -- JSON
  activities   TEXT DEFAULT '[]',          -- JSON
  error        TEXT,
  created_at   TEXT NOT NULL DEFAULT (datetime('now')),
  updated_at   TEXT NOT NULL DEFAULT (datetime('now')),
  completed_at TEXT
);
CREATE INDEX IF NOT EXISTS idx_cloud_agent_tasks_provider ON cloud_agent_tasks(provider_id);
CREATE INDEX IF NOT EXISTS idx_cloud_agent_tasks_status   ON cloud_agent_tasks(status);
CREATE INDEX IF NOT EXISTS idx_cloud_agent_tasks_created  ON cloud_agent_tasks(created_at DESC);

SQL ଇଞ୍ଜେକ୍ସନ୍ ରୋକିବା ପାଇଁ updateCloudAgentTask ଏକ କଲମ୍ ହ୍ୱାଇଟ୍ଲିଷ୍ଟ୍ ବାଧ୍ୟତାମୂଳକ କରେ: status, prompt, source, options, result, activities, error, completed_at। ଆଂଶିକ ଅପଡେଟ୍ରେ ଥିବା ଅନ୍ୟ ଯେକୌଣସି କୀକୁ ନିରବରେ ବାଦ ଦିଆଯାଏ।

REST API — ଟାସ୍କ ଜୀବନଚକ୍ର

ପ୍ରମାଣୀକରଣ: ସମସ୍ତ /api/v1/agents/tasks* ଏଣ୍ଡପଏଣ୍ଟ୍ ପାଇଁ ପରିଚାଳନା ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ (requireCloudAgentManagementAuth, src/lib/api/requireManagementAuthrequireManagementAuthକୁ ରାପ୍ କରେ)। କମିଟ୍ 588a0333 ("fix(auth): agent ଏବଂ cooldown APIଗୁଡ଼ିକ ପାଇଁ ପରିଚାଳନା ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ କରନ୍ତୁ") ପରଠାରୁ ଏହା ବାଧ୍ୟତାମୂଳକ।

ପଦ୍ଧତି ପଥ ଉଦ୍ଦେଶ୍ୟ
OPTIONS /api/v1/agents/tasks CORS ପ୍ରିଫ୍ଲାଇଟ୍
GET /api/v1/agents/tasks ଟାସ୍କଗୁଡ଼ିକ ତାଲିକାଭୁକ୍ତ କରନ୍ତୁ (ଫିଲ୍ଟର୍: provider, status, limit≤500)
POST /api/v1/agents/tasks ଟାସ୍କ ସୃଷ୍ଟି କରନ୍ତୁ (ଅପ୍ଷ୍ଟ୍ରିମ୍କୁ ପଠାଏ + ସଂରକ୍ଷଣ କରେ)
DELETE /api/v1/agents/tasks?id=... କ୍ୱେରୀ id ଅନୁଯାୟୀ ଟାସ୍କ ବିଲୋପ କରନ୍ତୁ (ଅପ୍ଷ୍ଟ୍ରିମ୍ରେ ବାତିଲ୍ କରେ ନାହିଁ)
OPTIONS /api/v1/agents/tasks/[id] CORS ପ୍ରିଫ୍ଲାଇଟ୍
GET /api/v1/agents/tasks/[id] ଟାସ୍କ ପଢ଼ନ୍ତୁ + ଅପ୍ଷ୍ଟ୍ରିମ୍ରୁ ସ୍ଥିତିକୁ ଆବଶ୍ୟକତା ଅନୁସାରେ ସିଙ୍କ୍ କରନ୍ତୁ
POST /api/v1/agents/tasks/[id] କାର୍ଯ୍ୟ: approve / message / cancel
DELETE /api/v1/agents/tasks/[id] ପଥ id ଅନୁଯାୟୀ ଟାସ୍କ ବିଲୋପ କରନ୍ତୁ

ଟାସ୍କ ସୃଷ୍ଟି କରନ୍ତୁ

curl -X POST http://localhost:20128/api/v1/agents/tasks \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{
    "providerId": "devin",
    "prompt": "Fix the bug in src/foo.ts where the parser returns null",
    "source": {
      "repoName": "user/repo",
      "repoUrl": "https://github.com/user/repo",
      "branch": "main"
    },
    "options": {
      "autoCreatePr": true,
      "planApprovalRequired": false
    }
  }'

ପ୍ରତିକ୍ରିୟା 201:

{
  "data": {
    "id": "task_1731512345678_abc123def",
    "providerId": "devin",
    "externalId": "session_xyz",
    "status": "queued",
    "prompt": "...",
    "source": { "repoName": "user/repo", "repoUrl": "...", "branch": "main" },
    "options": { "autoCreatePr": true },
    "createdAt": "2026-05-13T12:34:56.789Z"
  }
}

ଏକ ଯୋଜନା ଅନୁମୋଦନ କରନ୍ତୁ

curl -X POST http://localhost:20128/api/v1/agents/tasks/<id> \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{"action":"approve"}'

ଏକ ଫଲୋ-ଅପ୍ ବାର୍ତ୍ତା ପଠାନ୍ତୁ

curl -X POST http://localhost:20128/api/v1/agents/tasks/<id> \
  -d '{"action":"message","message":"Also add a unit test for the parser"}'

ବାତିଲ୍ କରନ୍ତୁ (କେବଳ ସ୍ଥାନୀୟ ସ୍ଥିତି)

curl -X POST http://localhost:20128/api/v1/agents/tasks/<id> \
  -d '{"action":"cancel"}'

cancel, ସ୍ଥାନୀୟ DBରେ statusକୁ "cancelled"ରେ ପରିବର୍ତ୍ତନ କରେ, କିନ୍ତୁ ଅପ୍ଷ୍ଟ୍ରିମ୍ ପ୍ରଦାନକାରୀକୁ କଲ୍ କରେ ନାହିଁCloudAgentBaseରେ କୌଣସି abort RPC ନାହିଁ। ଅପ୍ଷ୍ଟ୍ରିମ୍ ବିଲିଂ ବନ୍ଦ କରିବା ପାଇଁ ପ୍ରଦାନକାରୀଙ୍କ ନିଜସ୍ୱ କନ୍ସୋଲ୍ରେ ଟାସ୍କଟିକୁ ସମାପ୍ତ କରନ୍ତୁ।

REST API — କ୍ଲାଉଡ୍ ପ୍ରଦାନକାରୀ ସଂଯୋଜନ

src/app/api/cloud/ ଅଧୀନରେ ଥିବା ଏହି ସହାୟକ ଏଣ୍ଡପଏଣ୍ଟଗୁଡ଼ିକୁ ଦୂରବର୍ତ୍ତୀ କ୍ଲାଏଣ୍ଟମାନେ (CLI, Electron ଆପ୍, କିମ୍ବା ସିଙ୍କ୍ ୱାର୍କର୍ଗୁଡ଼ିକ) ପ୍ରଦାନକାରୀ ସଂଯୋଗ ମେଟାଡାଟା ପଢ଼ିବା ଏବଂ ମଡେଲ୍ ଉପନାମଗୁଡ଼ିକୁ ରିଜଲ୍ଭ କରିବା ପାଇଁ ବ୍ୟବହାର କରନ୍ତି। ଏଗୁଡ଼ିକ ଟାସ୍କ ଏଣ୍ଡପଏଣ୍ଟଗୁଡ଼ିକ ଦ୍ୱାରା ବ୍ୟବହୃତ ପରିଚାଳନା ପ୍ରାମାଣିକରଣ ଦ୍ୱାରା ନୁହେଁ, ବରଂ ଏକ ନିୟମିତ API କୀ (validateApiKey ମାଧ୍ୟମରେ) ଦ୍ୱାରା ପ୍ରାମାଣିକୃତ ହୁଅନ୍ତି।

ପଦ୍ଧତି ପଥ ଉଦ୍ଦେଶ୍ୟ
POST /api/cloud/auth API କୀ ବୈଧ କରିବା, ମାସ୍କ କରାଯାଇଥିବା ସଂଯୋଗ ମେଟାଡାଟା + ମଡେଲ୍ ଉପନାମ ଫେରାଇବା
PUT /api/cloud/credentials/update accessToken / refreshToken / expiresAt ସତେଜ କରିବା
POST /api/cloud/model/resolve ଏକ ମଡେଲ୍ ଉପନାମକୁ { provider, model } ଭାବରେ ରିଜଲ୍ଭ କରିବା
GET /api/cloud/models/alias ସମସ୍ତ ମଡେଲ୍ ଉପନାମ ତାଲିକାଭୁକ୍ତ କରିବା
PUT /api/cloud/models/alias ଏକ ମଡେଲ୍ ଉପନାମ ସେଟ୍ କରିବା (ଏବଂ ସକ୍ଷମ ଥିଲେ ସ୍ୱୟଂଚାଳିତ ଭାବେ Cloud ସହିତ ସିଙ୍କ୍ କରିବା)

/api/cloud/auth କେବେ ମଧ୍ୟ ଅପରିବର୍ତ୍ତିତ apiKey / accessToken / refreshToken ଫେରାଏ ନାହିଁ। ଏହା hasApiKey, hasAccessToken, hasRefreshToken, ଏବଂ ଏକ ମାସ୍କ କରାଯାଇଥିବା ପୂର୍ବାବଲୋକନ (maskedApiKey: ପ୍ରଥମ 4 + **** + ଶେଷ 4) ଫେରାଏ।

କ୍ରେଡେନ୍ସିଆଲ୍ ରିଜଲ୍ୟୁସନ୍

src/lib/cloudAgent/api.ts ମଧ୍ୟରେ getCloudAgentCredentials(providerId):

  1. getProviderConnections({ provider: providerId, isActive: true }) ମାଧ୍ୟମରେ ସକ୍ରିୟ ପ୍ରଦାନକାରୀ ସଂଯୋଗଗୁଡ଼ିକୁ ଲୋଡ୍ କରେ।
  2. ପ୍ରତ୍ୟେକ ସଂଯୋଗ ପାଇଁ, apiKeyକୁ (ଟ୍ରିମ୍ କରାଯାଇଥିବା) ପ୍ରାଥମିକତା ଦିଏ। ନ ମିଳିଲେ accessToken ବ୍ୟବହାର କରେ।
  3. ପ୍ରଥମ ଅଣ-ଖାଲି ଟୋକନ୍କୁ { apiKey: token } ଭାବରେ ଆବୃତ କରି ଫେରାଏ।
  4. କୌଣସି ବ୍ୟବହାରଯୋଗ୍ୟ ଟୋକନ୍ ନ ମିଳିଲେ null ଫେରାଏ — API "No active credentials configured for cloud agent provider: <id>" ସହିତ 400 ପ୍ରତିକ୍ରିୟା ଦିଏ।

ଏହାର ଅର୍ଥ Cloud Agents ନିୟମିତ LLM ପ୍ରଦାନକାରୀଙ୍କ ପରି ସମାନ Provider Connection ଟେବୁଲ୍କୁ ପୁନଃବ୍ୟବହାର କରନ୍ତି। Jules ସକ୍ଷମ କରିବାକୁ, provider: "jules" ଏବଂ ମୂଲ୍ୟ ଭରାଯାଇଥିବା apiKey ସହିତ ଏକ ସକ୍ରିୟ ସଂଯୋଗ ସୃଷ୍ଟି କରନ୍ତୁ।

ଡ୍ୟାସବୋର୍ଡ

ଉତ୍ସ: src/app/(dashboard)/dashboard/cloud-agents/page.tsx

ଏକ "use client" React ପୃଷ୍ଠା, ଯାହା:

  • ଟାସ୍କଗୁଡ଼ିକୁ ତାଲିକାଭୁକ୍ତ କରେ (GET /api/v1/agents/tasks ମାଧ୍ୟମରେ ପୋଲ୍ କରାଯାଏ)।
  • CreateCloudAgentTaskSchema ସହିତ ମ୍ୟାପ୍ ହେଉଥିବା ଏକ ଫର୍ମ ମାଧ୍ୟମରେ ନୂଆ ଟାସ୍କ ଦାଖଲ କରେ।
  • ସ୍ଥିତି ବ୍ୟାଜ୍ଗୁଡ଼ିକ (queued, running, awaiting_approval, completed, failed, cancelled) ଦେଖାଏ ଏବଂ activities[] ସମୟରେଖାକୁ ରେଣ୍ଡର୍ କରେ।
  • status === "completed" ଥିବାବେଳେ result.prUrl / commitMessage / summaryକୁ ପ୍ରଦର୍ଶନ କରେ।

A2A ସହିତ ସମନ୍ୱୟ

ଏକ A2A ସ୍କିଲ୍ ପଞ୍ଜୀକରଣ କରି Cloud Agentsକୁ A2A ସ୍କିଲ୍ ଭାବେ ଉନ୍ମୋଚନ କରାଯାଇପାରେ, ଯାହା ଏହାର tasks/send ହ୍ୟାଣ୍ଡଲର୍କୁ getAgent(...).createTask(...)କୁ ପ୍ରତ୍ୟାୟୋଜିତ କରେ ଏବଂ A2A ଟାସ୍କ ସ୍ଥିତି ଘଟଣାଗୁଡ଼ିକୁ JSON-RPC 2.0 ପ୍ରୋଟୋକଲ୍ରେ ରୂପାନ୍ତର କରେ। A2A-SERVER.md ଦେଖନ୍ତୁ।

ଏକ ନୂଆ Cloud Agent ଯୋଡ଼ିବା

  1. CloudAgentBaseକୁ ବିସ୍ତାର କରି src/lib/cloudAgent/agents/<name>.ts ସୃଷ୍ଟି କରନ୍ତୁ।
  2. createTask, getStatus, approvePlan (କିମ୍ବା ପ୍ରଯୁଜ୍ୟ ନ ହେଲେ ଏକ ତ୍ରୁଟି ଫିଙ୍ଗନ୍ତୁ), sendMessage, listSources କାର୍ଯ୍ୟକାରୀ କରନ୍ତୁ। ସ୍ଥିତି ସାମାନ୍ୟୀକରଣ ପାଇଁ this.mapStatus(...) ବ୍ୟବହାର କରନ୍ତୁ।
  3. ଏକ ସ୍ଥିର providerId ଅଧୀନରେ src/lib/cloudAgent/registry.tsରେ ପଞ୍ଜୀକରଣ କରନ୍ତୁ।
  4. src/lib/cloudAgent/types.tsରେ ଥିବା providerId ଲିଟେରାଲ୍ ୟୁନିଅନ୍କୁ ବିସ୍ତାର କରନ୍ତୁ (CloudAgentTask.providerId ଏବଂ CreateCloudAgentTaskSchema)।
  5. ଯଦି ଏହାକୁ ଏକ ସଂଯୋଗ ରେକର୍ଡ ଆବଶ୍ୟକ, ତେବେ ପ୍ରଦାନକାରୀକୁ src/shared/constants/providers.tsରେ ଯୋଡ଼ନ୍ତୁ। OAuth-ଆଧାରିତ ପ୍ରଦାନକାରୀଙ୍କୁ src/lib/oauth/providers/ ମଧ୍ୟ ଆବଶ୍ୟକ।
  6. tests/unit/cloud-agent-*.test.ts ଅଧୀନରେ ପରୀକ୍ଷଣଗୁଡ଼ିକ ଯୋଡ଼ନ୍ତୁ।
  7. ଏହି ଡକ୍ୟୁମେଣ୍ଟ ଏବଂ ଡ୍ୟାସବୋର୍ଡର CLOUD_AGENTS ଧ୍ରୁବକକୁ ଅଦ୍ୟତନ କରନ୍ତୁ।

ବିନ୍ୟାସ

ପରିବେଶ ଚର ଉଦ୍ଦେଶ୍ୟ
DATA_DIR cloud_agent_tasks ଧାରଣ କରୁଥିବା SQLite ଡାଟାବେସ୍ର ଅବସ୍ଥାନ
JWT_SECRET ଟାସ୍କ ଏଣ୍ଡପଏଣ୍ଟଗୁଡ଼ିକରେ ପରିଚାଳନା ପ୍ରମାଣୀକରଣ ପାଇଁ ଆବଶ୍ୟକ
API_KEY_SECRET ସଂରକ୍ଷିତ ଅବସ୍ଥାରେ ପ୍ରଦାତା ସଂଯୋଗ ପ୍ରମାଣପତ୍ରଗୁଡ଼ିକୁ ଏନ୍କ୍ରିପ୍ଟ କରିବା ପାଇଁ ଆବଶ୍ୟକ

ବର୍ତ୍ତମାନ କୌଣସି Cloud-Agent-ନିର୍ଦ୍ଦିଷ୍ଟ ପରିବେଶ ଚର ନାହିଁ — ପ୍ରତ୍ୟେକ ଗୁପ୍ତ ତଥ୍ୟ provider_connections ଟେବୁଲ୍ରେ ରହିଛି।

ଏହା ମଧ୍ୟ ଦେଖନ୍ତୁ

  • A2A-SERVER.md
  • API_REFERENCE.md
  • SKILLS.md
  • MEMORY.md
  • ଉତ୍ସ: src/lib/cloudAgent/
  • ରୁଟ୍ଗୁଡ଼ିକ: src/app/api/v1/agents/tasks/, src/app/api/cloud/
  • ଡ୍ୟାସ୍ବୋର୍ଡ: src/app/(dashboard)/dashboard/cloud-agents/page.tsx