Compare commits

..

2 Commits
v2.0.0 ... main

Author SHA1 Message Date
ywkj 5430437bfd fix: 补充 ClientConfig 接口和 clientConfig() 方法 2026-04-26 20:14:59 +08:00
ywkj 0d72c189b3 feat: 模块级 session ID 自动生成
Build and Release auth-rt / release (push) Successful in 1m50s Details
- auth-cli.ts 加载时自动生成 SKILL_SESSION_ID(格式: skill-YYYYMMDD-HHMMSS-xxxx)
- 优先级: 已有 SKILL_SESSION_ID env > 自动生成
- 所有 import 此文件的 skill 自动获得 session 追踪

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-26 19:00:37 +08:00
1 changed files with 33 additions and 0 deletions

View File

@ -20,6 +20,18 @@ import * as path from 'path';
import * as os from 'os'; import * as os from 'os';
const home = process.env.HOME || os.homedir(); const home = process.env.HOME || os.homedir();
// ── session ID (Langfuse tracing) ──
// Priority: SKILL_SESSION_ID env > auto-generate
const SESSION_ID = process.env.SKILL_SESSION_ID || (() => {
const ts = new Date();
const pad = (n: number) => String(n).padStart(2, '0');
const tsPart = `${ts.getFullYear()}${pad(ts.getMonth()+1)}${pad(ts.getDate())}-${pad(ts.getHours())}${pad(ts.getMinutes())}${pad(ts.getSeconds())}`;
const rand = Math.random().toString(36).slice(2, 6);
return `skill-${tsPart}-${rand}`;
})();
process.env.SKILL_SESSION_ID = SESSION_ID;
const AUTH_RT_BIN = process.env.AUTH_RT_BIN const AUTH_RT_BIN = process.env.AUTH_RT_BIN
|| (() => { || (() => {
// Check if auth-rt is in PATH // Check if auth-rt is in PATH
@ -43,6 +55,20 @@ export interface SessionResponse {
hookToken?: string; hookToken?: string;
} }
export interface ClientConfig {
clientId: string;
name: string;
status: string;
metadata: {
provider?: {
api_key?: string;
base_url?: string;
model?: string;
};
[key: string]: unknown;
};
}
export interface SkillClientOptions { export interface SkillClientOptions {
apiBase?: string; apiBase?: string;
dryRun?: boolean; dryRun?: boolean;
@ -79,6 +105,13 @@ export class SkillClient {
return JSON.parse(runCli('session')); return JSON.parse(runCli('session'));
} }
async clientConfig(): Promise<ClientConfig> {
if (this.dryRun) {
return { clientId: '<dry-run>', name: '<dry-run>', status: 'active', metadata: {} };
}
return JSON.parse(runCli('client-config'));
}
async get(urlPath: string): Promise<ApiResponse> { async get(urlPath: string): Promise<ApiResponse> {
return this.request('GET', urlPath); return this.request('GET', urlPath);
} }