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

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.3),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
55
55
 
56
56
  | 助手 | 建议 `--ai` |
57
57
  | ----------------------- | ------------------------------------ |
package/dist/index.js CHANGED
@@ -2249,6 +2249,60 @@ 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
+ return {
2300
+ "X-Siluzan-Client": client,
2301
+ "X-Siluzan-Runtime": runtime,
2302
+ "X-Siluzan-Skill-Version": version,
2303
+ "User-Agent": `${client}/${version}`
2304
+ };
2305
+ }
2252
2306
  function isPerfEnabled() {
2253
2307
  const v = process.env.SILUZAN_HTTP_PERF;
2254
2308
  return v === "1" || v === "true";
@@ -2270,12 +2324,16 @@ function rawRequest(url, options) {
2270
2324
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
2271
2325
  const maxBytes = options.maxResponseBytes ?? MAX_RESPONSE_BYTES;
2272
2326
  const isHttps = parsed.protocol === "https:";
2327
+ const headers = {
2328
+ ...buildSiluzanClientIdentityHeaders(),
2329
+ ...options.headers
2330
+ };
2273
2331
  const reqOpts = {
2274
2332
  hostname: parsed.hostname,
2275
2333
  port: parsed.port || (isHttps ? 443 : 80),
2276
2334
  path: parsed.pathname + parsed.search,
2277
2335
  method,
2278
- headers: options.headers,
2336
+ headers,
2279
2337
  timeout: timeoutMs || void 0,
2280
2338
  agent: isHttps ? httpsAgent : httpAgent
2281
2339
  };
@@ -2332,10 +2390,10 @@ function rawRequest(url, options) {
2332
2390
  data += chunk;
2333
2391
  });
2334
2392
  stream.on("end", () => {
2335
- const headers = {};
2393
+ const headers2 = {};
2336
2394
  for (const [key, val] of Object.entries(res.headers)) {
2337
2395
  if (val !== void 0) {
2338
- headers[key.toLowerCase()] = Array.isArray(val) ? val[0] : val;
2396
+ headers2[key.toLowerCase()] = Array.isArray(val) ? val[0] : val;
2339
2397
  }
2340
2398
  }
2341
2399
  const status = res.statusCode ?? 0;
@@ -2349,7 +2407,7 @@ function rawRequest(url, options) {
2349
2407
  ok: status >= 200 && status < 300
2350
2408
  });
2351
2409
  }
2352
- resolve52({ status, text: data, headers });
2410
+ resolve52({ status, text: data, headers: headers2 });
2353
2411
  });
2354
2412
  });
2355
2413
  req.on("timeout", () => {
@@ -3815,7 +3873,7 @@ async function issueApiKeyWithPhoneCode(opts) {
3815
3873
  });
3816
3874
  return apiKey;
3817
3875
  }
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;
3876
+ var import_semver, SILUZAN_DIR, CONFIG_FILE, inProcessLockChain, ALLOWED_HOSTNAME_SUFFIXES, EXACT_ID_FIELD_NAMES, _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
3877
  var init_dist = __esm({
3820
3878
  "../common/dist/index.js"() {
3821
3879
  "use strict";
@@ -3861,6 +3919,7 @@ var init_dist = __esm({
3861
3919
  "lastChangedBy",
3862
3920
  "userId"
3863
3921
  ]);
3922
+ _clientProduct = "siluzan-cli";
3864
3923
  DEFAULT_TIMEOUT_MS = 10 * 60 * 1e3;
3865
3924
  MAX_RESPONSE_BYTES = 50 * 1024 * 1024;
3866
3925
  httpsAgent = new https.Agent({
@@ -133115,6 +133174,7 @@ configureCliJsonSnapshot({
133115
133174
  "references/accounts/accounts-permissions.md"
133116
133175
  ]
133117
133176
  });
133177
+ configureSiluzanClientIdentity({ client: "tso-cli", resolveVersion: getVersion });
133118
133178
  var program = new Command5();
133119
133179
  program.name("siluzan-tso").description(
133120
133180
  "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.3",
4
+ "publishedAt": 1785313316702
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.3'
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.3"
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.3",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",