release: 0.1.4 — forward cp_jwt + bucket via params._meta
On login the gateway now captures user.id from /v1/auth/login, derives
the user's MinIO bucket (user-<id>-files), and persists both in
~/.a2a/credentials.json. UpstreamAgent.callTool injects
``params._meta = { cp_jwt, cp_url, bucket }`` on every tools/call so
upstream agents see the same caller context the platform orchestrator
provides. Unauthenticated clients omit _meta — back-compat preserved.
Requires a2a-pack with the matching _meta handler in
``a2a_pack/mcp/server.py`` (companion change in apps/a2a).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,8 @@ export interface Credentials {
|
||||
apiUrl: string;
|
||||
token: string;
|
||||
email: string;
|
||||
userId?: number;
|
||||
bucket?: string;
|
||||
}
|
||||
|
||||
const credsDir = () => path.join(os.homedir(), ".a2a");
|
||||
@@ -28,6 +30,8 @@ export async function loadCredentials(): Promise<Credentials | null> {
|
||||
apiUrl: data.api_url ?? DEFAULT_API_URL,
|
||||
token: data.token,
|
||||
email: data.email ?? "",
|
||||
userId: typeof data.user_id === "number" ? data.user_id : undefined,
|
||||
bucket: typeof data.bucket === "string" ? data.bucket : undefined,
|
||||
};
|
||||
} catch (err: any) {
|
||||
if (err?.code === "ENOENT") return null;
|
||||
@@ -37,11 +41,14 @@ export async function loadCredentials(): Promise<Credentials | null> {
|
||||
|
||||
export async function saveCredentials(c: Credentials): Promise<void> {
|
||||
await fs.mkdir(credsDir(), { recursive: true });
|
||||
await fs.writeFile(
|
||||
credsFile(),
|
||||
JSON.stringify({ api_url: c.apiUrl, token: c.token, email: c.email }),
|
||||
{ mode: 0o600 },
|
||||
);
|
||||
const out: Record<string, unknown> = {
|
||||
api_url: c.apiUrl,
|
||||
token: c.token,
|
||||
email: c.email,
|
||||
};
|
||||
if (c.userId !== undefined) out.user_id = c.userId;
|
||||
if (c.bucket !== undefined) out.bucket = c.bucket;
|
||||
await fs.writeFile(credsFile(), JSON.stringify(out), { mode: 0o600 });
|
||||
}
|
||||
|
||||
export async function clearCredentials(): Promise<boolean> {
|
||||
|
||||
Reference in New Issue
Block a user