siluzan-tso-cli 1.1.40-beta.2 → 1.1.40-beta.4

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/README.md CHANGED
@@ -51,7 +51,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
51
51
  siluzan-tso init --force # 强制覆盖已存在文件
52
52
  ```
53
53
 
54
- > **注意**:当前为测试版(1.1.40-beta.2),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
54
+ > **注意**:当前为测试版(1.1.40-beta.4),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
55
55
 
56
56
  | 助手 | 建议 `--ai` |
57
57
  | ----------------------- | ------------------------------------ |
package/dist/index.js CHANGED
@@ -2249,6 +2249,64 @@ function buildSiluzanAuthHeaders(config) {
2249
2249
  const auth = resolveRequestAuth(config);
2250
2250
  return auth.apiKey ? { "x-api-key": auth.apiKey } : { Authorization: `Bearer ${auth.authToken}` };
2251
2251
  }
2252
+ function configureSiluzanClientIdentity(opts) {
2253
+ _clientProduct = opts.client;
2254
+ _resolveVersion = opts.resolveVersion;
2255
+ }
2256
+ function getSiluzanClientProduct() {
2257
+ return _clientProduct;
2258
+ }
2259
+ function runtimeOverrideFromEnv() {
2260
+ const raw = process.env.SILUZAN_CLIENT_RUNTIME?.trim().toLowerCase();
2261
+ if (raw === "siluzan_agent" || raw === "agent" || raw === "cli") return raw;
2262
+ return void 0;
2263
+ }
2264
+ function envTruthy(name2) {
2265
+ const v = process.env[name2]?.trim().toLowerCase();
2266
+ return v !== void 0 && v !== "" && v !== "0" && v !== "false" && v !== "no" && v !== "off";
2267
+ }
2268
+ function looksLikeThirdPartyAgentEnv() {
2269
+ if (envTruthy("IS_AGENT_ENV") || envTruthy("AI_AGENT")) return true;
2270
+ if (envTruthy("CURSOR_AGENT")) return true;
2271
+ if (process.env.CURSOR_EXTENSION_HOST_ROLE?.trim() === "agent-exec") return true;
2272
+ if (envTruthy("CLAUDECODE") || envTruthy("CLAUDE_CODE")) return true;
2273
+ if (envTruthy("CODEX_SANDBOX") || envTruthy("CODEX_CI") || envTruthy("CODEX_THREAD_ID")) {
2274
+ return true;
2275
+ }
2276
+ if (envTruthy("GEMINI_CLI") || envTruthy("ANTIGRAVITY_AGENT") || envTruthy("AUGMENT_AGENT")) {
2277
+ return true;
2278
+ }
2279
+ if (envTruthy("CLINE_ACTIVE") || envTruthy("GOOSE_TERMINAL") || envTruthy("OPENCLAW")) {
2280
+ return true;
2281
+ }
2282
+ if (envTruthy("COPILOT_ALLOW_ALL") || envTruthy("COPILOT_MODEL")) return true;
2283
+ return false;
2284
+ }
2285
+ function resolveSiluzanClientRuntime() {
2286
+ if (isSiluzanAgentEnv()) return "siluzan_agent";
2287
+ const override = runtimeOverrideFromEnv();
2288
+ if (override) return override;
2289
+ if (looksLikeThirdPartyAgentEnv()) return "agent";
2290
+ return "cli";
2291
+ }
2292
+ function getSiluzanSkillVersion() {
2293
+ return (_resolveVersion?.() ?? "0.0.0").trim() || "0.0.0";
2294
+ }
2295
+ function buildSiluzanClientIdentityHeaders() {
2296
+ const client = getSiluzanClientProduct();
2297
+ const runtime = resolveSiluzanClientRuntime();
2298
+ const version = getSiluzanSkillVersion();
2299
+ const headers = {
2300
+ "X-Siluzan-Client": client,
2301
+ "X-Siluzan-Runtime": runtime,
2302
+ "X-Siluzan-Skill-Version": version,
2303
+ "User-Agent": `${client}/${version}`
2304
+ };
2305
+ if (runtime === "siluzan_agent") {
2306
+ headers["X-Company-Source-Type"] = SILUZAN_AGENT_COMPANY_SOURCE_TYPE;
2307
+ }
2308
+ return headers;
2309
+ }
2252
2310
  function isPerfEnabled() {
2253
2311
  const v = process.env.SILUZAN_HTTP_PERF;
2254
2312
  return v === "1" || v === "true";
@@ -2270,12 +2328,16 @@ function rawRequest(url, options) {
2270
2328
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
2271
2329
  const maxBytes = options.maxResponseBytes ?? MAX_RESPONSE_BYTES;
2272
2330
  const isHttps = parsed.protocol === "https:";
2331
+ const headers = {
2332
+ ...buildSiluzanClientIdentityHeaders(),
2333
+ ...options.headers
2334
+ };
2273
2335
  const reqOpts = {
2274
2336
  hostname: parsed.hostname,
2275
2337
  port: parsed.port || (isHttps ? 443 : 80),
2276
2338
  path: parsed.pathname + parsed.search,
2277
2339
  method,
2278
- headers: options.headers,
2340
+ headers,
2279
2341
  timeout: timeoutMs || void 0,
2280
2342
  agent: isHttps ? httpsAgent : httpAgent
2281
2343
  };
@@ -2332,10 +2394,10 @@ function rawRequest(url, options) {
2332
2394
  data += chunk;
2333
2395
  });
2334
2396
  stream.on("end", () => {
2335
- const headers = {};
2397
+ const headers2 = {};
2336
2398
  for (const [key, val] of Object.entries(res.headers)) {
2337
2399
  if (val !== void 0) {
2338
- headers[key.toLowerCase()] = Array.isArray(val) ? val[0] : val;
2400
+ headers2[key.toLowerCase()] = Array.isArray(val) ? val[0] : val;
2339
2401
  }
2340
2402
  }
2341
2403
  const status = res.statusCode ?? 0;
@@ -2349,7 +2411,7 @@ function rawRequest(url, options) {
2349
2411
  ok: status >= 200 && status < 300
2350
2412
  });
2351
2413
  }
2352
- resolve52({ status, text: data, headers });
2414
+ resolve52({ status, text: data, headers: headers2 });
2353
2415
  });
2354
2416
  });
2355
2417
  req.on("timeout", () => {
@@ -3815,7 +3877,7 @@ async function issueApiKeyWithPhoneCode(opts) {
3815
3877
  });
3816
3878
  return apiKey;
3817
3879
  }
3818
- var import_semver, SILUZAN_DIR, CONFIG_FILE, inProcessLockChain, ALLOWED_HOSTNAME_SUFFIXES, EXACT_ID_FIELD_NAMES, DEFAULT_TIMEOUT_MS, MAX_RESPONSE_BYTES, httpsAgent, httpAgent, PERF_PREFIX, DEFAULT_DETAIL_MAX, VERBOSE_DETAIL_MAX, ASCII_TABLE_CHARS, CLI_SNAPSHOT_MANIFEST_FILE, SCHEMA_VERSION, FALLBACK_FIELD_GUIDE_REFS, _cliPackage, _resolveCliVersion, _fieldGuideRefs, OUTLINE_AGENT_HINT, TS_LIKE_ARRAY_SAMPLE_MAX, MAX_INVOCATION_CHARS, currentInvocation, MAX_COMMIT_CHARS, WRITE_AUDIT_AGENT_AUTO_COMMIT, cliCommitOverride, WRITE_AUDIT_SCHEMA_VERSION, MUTATING, BEIJING_TZ, AUDIT_LOG_FILENAME_RE, DEFAULT_MAX_FILE_MB, MIN_SEGMENT_BYTES, MAX_SEGMENT_BYTES, DEFAULT_RETENTION_DAYS, MIN_RETENTION_DAYS, MAX_RETENTION_DAYS, PRUNE_THROTTLE_MS, lastPruneAtMs, MAX_BODY_CHARS, MAX_ERROR_CHARS, DEFAULT_FIND_AUDIT_MAX_DAYS, MAX_SNAPSHOT_FILE_BYTES, API_KEY_SERVICE_VALUES;
3880
+ var import_semver, SILUZAN_DIR, CONFIG_FILE, inProcessLockChain, ALLOWED_HOSTNAME_SUFFIXES, EXACT_ID_FIELD_NAMES, SILUZAN_AGENT_COMPANY_SOURCE_TYPE, _clientProduct, _resolveVersion, DEFAULT_TIMEOUT_MS, MAX_RESPONSE_BYTES, httpsAgent, httpAgent, PERF_PREFIX, DEFAULT_DETAIL_MAX, VERBOSE_DETAIL_MAX, ASCII_TABLE_CHARS, CLI_SNAPSHOT_MANIFEST_FILE, SCHEMA_VERSION, FALLBACK_FIELD_GUIDE_REFS, _cliPackage, _resolveCliVersion, _fieldGuideRefs, OUTLINE_AGENT_HINT, TS_LIKE_ARRAY_SAMPLE_MAX, MAX_INVOCATION_CHARS, currentInvocation, MAX_COMMIT_CHARS, WRITE_AUDIT_AGENT_AUTO_COMMIT, cliCommitOverride, WRITE_AUDIT_SCHEMA_VERSION, MUTATING, BEIJING_TZ, AUDIT_LOG_FILENAME_RE, DEFAULT_MAX_FILE_MB, MIN_SEGMENT_BYTES, MAX_SEGMENT_BYTES, DEFAULT_RETENTION_DAYS, MIN_RETENTION_DAYS, MAX_RETENTION_DAYS, PRUNE_THROTTLE_MS, lastPruneAtMs, MAX_BODY_CHARS, MAX_ERROR_CHARS, DEFAULT_FIND_AUDIT_MAX_DAYS, MAX_SNAPSHOT_FILE_BYTES, API_KEY_SERVICE_VALUES;
3819
3881
  var init_dist = __esm({
3820
3882
  "../common/dist/index.js"() {
3821
3883
  "use strict";
@@ -3861,6 +3923,8 @@ var init_dist = __esm({
3861
3923
  "lastChangedBy",
3862
3924
  "userId"
3863
3925
  ]);
3926
+ SILUZAN_AGENT_COMPANY_SOURCE_TYPE = "Ctaiad";
3927
+ _clientProduct = "siluzan-cli";
3864
3928
  DEFAULT_TIMEOUT_MS = 10 * 60 * 1e3;
3865
3929
  MAX_RESPONSE_BYTES = 50 * 1024 * 1024;
3866
3930
  httpsAgent = new https.Agent({
@@ -133115,6 +133179,7 @@ configureCliJsonSnapshot({
133115
133179
  "references/accounts/accounts-permissions.md"
133116
133180
  ]
133117
133181
  });
133182
+ configureSiluzanClientIdentity({ client: "tso-cli", resolveVersion: getVersion });
133118
133183
  var program = new Command5();
133119
133184
  program.name("siluzan-tso").description(
133120
133185
  "Siluzan \u5E7F\u544A\u8D26\u6237\u7BA1\u7406\uFF1A\u8D26\u6237\u67E5\u8BE2\u3001\u4F59\u989D\u3001\u6295\u653E\u6570\u636E\u3001\u5F00\u6237\u7533\u8BF7\uFF08Google/TikTok/Yandex/Bing/Kwai\uFF09\u3001\n\u8D26\u53F7\u5206\u4EAB/\u89E3\u7ED1\u3001\u4F18\u5316\u62A5\u544A\u3001Google \u8D26\u6237\u5206\u6790\u7F51\u5173\uFF08google-analysis\uFF09\u3001Google \u5E7F\u544A\u8BCA\u65AD\u62A5\u544A\uFF08google-ads-diagnosis render\uFF09\u3001\u7F51\u7AD9\u8BCA\u65AD\uFF08website-diagnosis\uFF09\u3001\u6218\u7565\u5E02\u573A\u5206\u6790\uFF08market-analysis\uFF0CAgent \u751F\u6210\u62A5\u544A\uFF09\u3001\u5145\u503C\u8F6C\u8D26\u3001\u5F00\u7968\u3001\u667A\u80FD\u9884\u8B66\u3001Google \u5E7F\u544A\u7BA1\u7406\uFF08\u542B\u5F02\u6B65\u6279\u91CF\uFF09\u3002"
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.40-beta.2",
4
- "publishedAt": 1785295010738
3
+ "version": "1.1.40-beta.4",
4
+ "publishedAt": 1785321077403
5
5
  }
@@ -9,7 +9,7 @@ $ErrorActionPreference = 'Stop'
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  $PKG_NAME = 'siluzan-tso-cli'
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- $PKG_VERSION = '1.1.40-beta.2'
12
+ $PKG_VERSION = '1.1.40-beta.4'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
15
  $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
@@ -9,7 +9,7 @@ set -euo pipefail
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  readonly PKG_NAME="siluzan-tso-cli"
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- readonly PKG_VERSION="1.1.40-beta.2"
12
+ readonly PKG_VERSION="1.1.40-beta.4"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
15
  readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.40-beta.2",
3
+ "version": "1.1.40-beta.4",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",