@signetai/connector-base 0.227.1 → 0.228.0

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.
Files changed (3) hide show
  1. package/dist/agent-dir.js +244 -106
  2. package/dist/index.js +240 -102
  3. package/package.json +2 -2
package/dist/agent-dir.js CHANGED
@@ -33,13 +33,13 @@ var __toESM = (mod, isNodeMode, target) => {
33
33
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
34
34
 
35
35
  // src/agent-dir.ts
36
- import { existsSync, mkdirSync, readFileSync, rmSync as rmSync2, writeFileSync } from "node:fs";
36
+ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
37
37
  import { homedir } from "node:os";
38
- import { dirname as dirname2, join as join3, resolve as resolve4 } from "node:path";
38
+ import { dirname as dirname2, join as join3, resolve as resolve3 } from "node:path";
39
39
 
40
40
  // ../../platform/core/dist/index.js
41
41
  import { createRequire } from "node:module";
42
- import { dirname, join } from "node:path";
42
+ import { dirname, join, resolve } from "node:path";
43
43
  import { fileURLToPath } from "node:url";
44
44
  import {
45
45
  execFile as nodeExecFile,
@@ -51,29 +51,30 @@ import {
51
51
  import { promisify } from "node:util";
52
52
  import { createHash } from "node:crypto";
53
53
  import { homedir as homedir2 } from "node:os";
54
- import { join as join2, resolve } from "node:path";
54
+ import { join as join2, resolve as resolve2 } from "node:path";
55
+ import { constants as fsConstants } from "node:fs";
55
56
  import {
56
- closeSync as closeSync2,
57
- existsSync as existsSync7,
57
+ closeSync as closeSync3,
58
+ existsSync as existsSync12,
58
59
  fsyncSync as fsyncSync2,
59
- mkdirSync as mkdirSync3,
60
- openSync as openSync2,
61
- readFileSync as readFileSync5,
62
- renameSync as renameSync2,
63
- rmSync,
64
- statSync as statSync3,
60
+ mkdirSync as mkdirSync6,
61
+ openSync as openSync3,
62
+ readFileSync as readFileSync9,
63
+ renameSync as renameSync3,
64
+ rmSync as rmSync3,
65
+ statSync as statSync5,
65
66
  writeSync
66
67
  } from "node:fs";
67
68
  import { homedir as homedir4 } from "node:os";
68
- import { dirname as dirname4, join as join8, resolve as resolve2 } from "node:path";
69
+ import { dirname as dirname5, join as join13, resolve as resolve7 } from "node:path";
69
70
  import { createRequire as createRequire2 } from "node:module";
70
71
  import { homedir as homedir5 } from "node:os";
71
- import { dirname as dirname5, join as join9, resolve as resolve3 } from "node:path";
72
+ import { dirname as dirname6, join as join14, resolve as resolve8 } from "node:path";
72
73
  import { homedir as homedir6, platform as platform2 } from "node:os";
73
- import { basename, dirname as dirname6, resolve as resolve5 } from "node:path";
74
+ import { basename, dirname as dirname7, resolve as resolve9 } from "node:path";
74
75
  import { homedir as homedir8 } from "node:os";
75
- import { existsSync as existsSync14, lstatSync, mkdirSync as mkdirSync8, readdirSync as readdirSync6, symlinkSync, unlinkSync as unlinkSync2 } from "node:fs";
76
- import { join as join14 } from "node:path";
76
+ import { existsSync as existsSync18, lstatSync as lstatSync3, mkdirSync as mkdirSync10, readdirSync as readdirSync9, symlinkSync as symlinkSync2, unlinkSync as unlinkSync2 } from "node:fs";
77
+ import { join as join18 } from "node:path";
77
78
  var __create2 = Object.create;
78
79
  var __getProtoOf2 = Object.getPrototypeOf;
79
80
  var __defProp2 = Object.defineProperty;
@@ -15940,6 +15941,102 @@ function up159(db) {
15940
15941
  ON memories(agent_id, memory_kind);
15941
15942
  `);
15942
15943
  }
15944
+ var ledgerColumns = [
15945
+ "key",
15946
+ "agent_id",
15947
+ "workspace_id",
15948
+ "file_name",
15949
+ "status",
15950
+ "original_path",
15951
+ "sha256",
15952
+ "size_bytes",
15953
+ "request_fingerprint",
15954
+ "source_id",
15955
+ "lease_token",
15956
+ "lease_expires_at",
15957
+ "attempt_count",
15958
+ "error",
15959
+ "created_at",
15960
+ "updated_at"
15961
+ ];
15962
+ function columns(db, table) {
15963
+ return new Set(db.prepare(`PRAGMA table_info(${table})`).all().map((row) => String(row.name)));
15964
+ }
15965
+ function addMissingColumns(db, table, definitions) {
15966
+ const present = columns(db, table);
15967
+ for (const definition of definitions) {
15968
+ const name = definition.split(" ", 1)[0];
15969
+ if (!present.has(name))
15970
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${definition}`);
15971
+ }
15972
+ }
15973
+ function rebuildLedgerWithoutGlobalKeyPrimaryKey(db) {
15974
+ const keyInfo = db.prepare("PRAGMA table_info(import_admission_ledger)").all().find((row) => row.name === "key");
15975
+ if (!keyInfo || Number(keyInfo.pk) === 0)
15976
+ return;
15977
+ const savepoint = "migration_158_rebuild_ledger";
15978
+ db.exec(`SAVEPOINT ${savepoint}`);
15979
+ try {
15980
+ db.exec(`
15981
+ CREATE TABLE import_admission_ledger_v158 (
15982
+ key TEXT NOT NULL, agent_id TEXT NOT NULL DEFAULT '', workspace_id TEXT NOT NULL DEFAULT '',
15983
+ file_name TEXT NOT NULL, status TEXT NOT NULL CHECK (status IN ('pending','processing','imported','duplicate','failed','quarantined','original_unavailable')),
15984
+ original_path TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,
15985
+ request_fingerprint TEXT NOT NULL DEFAULT '', source_id TEXT, lease_token TEXT, lease_expires_at TEXT,
15986
+ attempt_count INTEGER NOT NULL DEFAULT 0, error TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
15987
+ );
15988
+ INSERT INTO import_admission_ledger_v158 (${ledgerColumns.join(",")})
15989
+ SELECT ${ledgerColumns.join(",")} FROM import_admission_ledger;
15990
+ DROP TABLE import_admission_ledger;
15991
+ ALTER TABLE import_admission_ledger_v158 RENAME TO import_admission_ledger;
15992
+ `);
15993
+ db.exec(`RELEASE ${savepoint}`);
15994
+ } catch (error) {
15995
+ try {
15996
+ db.exec(`ROLLBACK TO SAVEPOINT ${savepoint}`);
15997
+ } finally {
15998
+ try {
15999
+ db.exec(`RELEASE ${savepoint}`);
16000
+ } catch {}
16001
+ }
16002
+ throw error;
16003
+ }
16004
+ }
16005
+ function up160(db) {
16006
+ db.exec(`
16007
+ CREATE TABLE IF NOT EXISTS import_admission_ledger (
16008
+ key TEXT NOT NULL, agent_id TEXT NOT NULL, workspace_id TEXT NOT NULL DEFAULT '', file_name TEXT NOT NULL,
16009
+ status TEXT NOT NULL CHECK (status IN ('pending','processing','imported','duplicate','failed','quarantined','original_unavailable')),
16010
+ original_path TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,
16011
+ request_fingerprint TEXT NOT NULL DEFAULT '', source_id TEXT, lease_token TEXT, lease_expires_at TEXT,
16012
+ attempt_count INTEGER NOT NULL DEFAULT 0, error TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
16013
+ );
16014
+ CREATE TABLE IF NOT EXISTS import_admission_events (
16015
+ id INTEGER PRIMARY KEY AUTOINCREMENT, admission_key TEXT NOT NULL, agent_id TEXT NOT NULL DEFAULT '',
16016
+ workspace_id TEXT NOT NULL DEFAULT '', event TEXT NOT NULL, created_at TEXT NOT NULL
16017
+ );
16018
+ `);
16019
+ addMissingColumns(db, "import_admission_ledger", [
16020
+ "agent_id TEXT NOT NULL DEFAULT ''",
16021
+ "workspace_id TEXT NOT NULL DEFAULT ''",
16022
+ "request_fingerprint TEXT NOT NULL DEFAULT ''",
16023
+ "source_id TEXT",
16024
+ "lease_token TEXT",
16025
+ "lease_expires_at TEXT",
16026
+ "attempt_count INTEGER NOT NULL DEFAULT 0",
16027
+ "error TEXT"
16028
+ ]);
16029
+ addMissingColumns(db, "import_admission_events", [
16030
+ "agent_id TEXT NOT NULL DEFAULT ''",
16031
+ "workspace_id TEXT NOT NULL DEFAULT ''"
16032
+ ]);
16033
+ rebuildLedgerWithoutGlobalKeyPrimaryKey(db);
16034
+ db.exec(`
16035
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_import_admission_scope_key ON import_admission_ledger(key, agent_id, workspace_id);
16036
+ CREATE INDEX IF NOT EXISTS idx_import_admission_status ON import_admission_ledger(agent_id, workspace_id, status, updated_at);
16037
+ CREATE INDEX IF NOT EXISTS idx_import_admission_events_key ON import_admission_events(admission_key, agent_id, workspace_id, id);
16038
+ `);
16039
+ }
15943
16040
  var MIGRATIONS = [
15944
16041
  {
15945
16042
  version: 1,
@@ -17228,6 +17325,18 @@ var MIGRATIONS = [
17228
17325
  version: 159,
17229
17326
  name: "retire-obsolete-invocation-ledger",
17230
17327
  up: up5
17328
+ },
17329
+ {
17330
+ version: 160,
17331
+ name: "import-admission-ledger",
17332
+ up: up160,
17333
+ artifacts: {
17334
+ tables: ["import_admission_ledger", "import_admission_events"],
17335
+ indexes: ["idx_import_admission_status", "idx_import_admission_events_key"],
17336
+ columns: [
17337
+ ...["workspace_id", "request_fingerprint", "source_id", "lease_token", "lease_expires_at", "attempt_count"].map((column) => ({ table: "import_admission_ledger", column }))
17338
+ ]
17339
+ }
17231
17340
  }
17232
17341
  ];
17233
17342
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -17242,6 +17351,98 @@ function expandHome(p2, home = homedir2()) {
17242
17351
  return join2(home, p2.slice(2));
17243
17352
  return p2;
17244
17353
  }
17354
+ var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
17355
+ var SIGNET_GIT_ALLOWED_DIRECTORIES = ["skills", "tools", "dreaming"];
17356
+ var SIGNET_GIT_PROTECTED_PATHS = [
17357
+ ".daemon",
17358
+ ".secrets",
17359
+ ".shadow",
17360
+ "cache",
17361
+ "data",
17362
+ "files",
17363
+ "runtime",
17364
+ "workspace-layout.json",
17365
+ "node_modules",
17366
+ ":(glob)**/node_modules/**",
17367
+ `${SIGNET_SOURCE_CHECKOUT_DIRNAME}`,
17368
+ "memory/backups",
17369
+ "memory/memories.db",
17370
+ ":(glob)memory/memories.db*",
17371
+ ":(glob)memory/**/*.db",
17372
+ ":(glob)memory/**/*.db-*",
17373
+ ":(glob)memory/**/*.db-journal",
17374
+ ":(glob)memory/**/*.db-shm",
17375
+ ":(glob)memory/**/*.db-wal",
17376
+ ":(glob)memory/**/*.sqlite",
17377
+ ":(glob)memory/**/*.sqlite3",
17378
+ ":(glob)**/*.db",
17379
+ ":(glob)**/*.db-*",
17380
+ ":(glob)**/*.db-journal",
17381
+ ":(glob)**/*.db-shm",
17382
+ ":(glob)**/*.db-wal",
17383
+ ":(glob)**/*.sqlite",
17384
+ ":(glob)**/*.sqlite3"
17385
+ ];
17386
+ var SIGNET_GIT_TRACKED_PATHS = [
17387
+ "*.md",
17388
+ ":(glob)**/*.md",
17389
+ "*.json",
17390
+ ":(glob)**/*.json",
17391
+ "*.jsonl",
17392
+ ":(glob)**/*.jsonl",
17393
+ "*.html",
17394
+ ":(glob)**/*.html",
17395
+ "*.yaml",
17396
+ ":(glob)**/*.yaml",
17397
+ "*.yml",
17398
+ ":(glob)**/*.yml",
17399
+ ...SIGNET_GIT_ALLOWED_DIRECTORIES
17400
+ ];
17401
+ var SIGNET_GITIGNORE_PROTECTED_PATTERNS = [
17402
+ ".daemon/",
17403
+ ".secrets/",
17404
+ ".shadow/",
17405
+ "cache/",
17406
+ "data/",
17407
+ "files/",
17408
+ "runtime/",
17409
+ "workspace-layout.json",
17410
+ "node_modules/",
17411
+ `${SIGNET_SOURCE_CHECKOUT_DIRNAME}/`,
17412
+ "memory/memories.db*",
17413
+ "memory/**/*.db",
17414
+ "memory/**/*.db-*",
17415
+ "memory/**/*.db-journal",
17416
+ "memory/**/*.db-shm",
17417
+ "memory/**/*.db-wal",
17418
+ "memory/**/*.sqlite",
17419
+ "memory/**/*.sqlite3",
17420
+ "memory/backups/",
17421
+ "*.db",
17422
+ "*.db-*",
17423
+ "*.db-journal",
17424
+ "*.db-shm",
17425
+ "*.db-wal",
17426
+ "*.sqlite",
17427
+ "*.sqlite3"
17428
+ ];
17429
+ var DESCRIPTOR_ROOT = process.platform === "linux" ? "/proc/self/fd" : process.platform === "darwin" ? "/dev/fd" : undefined;
17430
+ var DIRECTORY_FLAGS = fsConstants.O_RDONLY | (fsConstants.O_DIRECTORY ?? 0) | (fsConstants.O_NOFOLLOW ?? 0);
17431
+ var FILE_FLAGS = fsConstants.O_RDONLY | (fsConstants.O_NOFOLLOW ?? 0) | (fsConstants.O_NONBLOCK ?? 0);
17432
+ var NOFOLLOW = fsConstants.O_NOFOLLOW ?? 0;
17433
+ var PROTECTION_COMPONENT_IDS = [
17434
+ "root-authored",
17435
+ "skills",
17436
+ "managed-originals",
17437
+ "sqlite",
17438
+ "transcripts",
17439
+ "external-sources",
17440
+ "runtime",
17441
+ "filesystem-cache",
17442
+ "secrets"
17443
+ ];
17444
+ var ORDER = new Map(PROTECTION_COMPONENT_IDS.map((id, index) => [id, index]));
17445
+ var BLOCKING = new Set(["missing", "stale", "degraded"]);
17245
17446
  var STATES = new Set([
17246
17447
  "found",
17247
17448
  "missing",
@@ -17338,7 +17539,7 @@ function resolveSignetDaemonUrl(opts = {}) {
17338
17539
  var WORKSPACE_ENV_KEYS = ["SIGNET_PATH", "SIGNET_WORKSPACE"];
17339
17540
  var DEFAULT_AGENTS_DIRNAME = ".agents";
17340
17541
  function normalizeWorkspacePath(pathValue, home = homedir4()) {
17341
- return resolve2(expandHome(pathValue.trim(), home));
17542
+ return resolve7(expandHome(pathValue.trim(), home));
17342
17543
  }
17343
17544
  function readTrimmedEnv(env, name) {
17344
17545
  const value = env[name];
@@ -17350,13 +17551,13 @@ function readTrimmedEnv(env, name) {
17350
17551
  function readConfigHome(env, home) {
17351
17552
  const raw = env.XDG_CONFIG_HOME;
17352
17553
  if (typeof raw !== "string")
17353
- return join8(home, ".config");
17554
+ return join13(home, ".config");
17354
17555
  const trimmed = raw.trim();
17355
- return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) : join8(home, ".config");
17556
+ return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) : join13(home, ".config");
17356
17557
  }
17357
17558
  function isExistingDirectory(path) {
17358
17559
  try {
17359
- return statSync3(path).isDirectory();
17560
+ return statSync5(path).isDirectory();
17360
17561
  } catch {
17361
17562
  return false;
17362
17563
  }
@@ -17365,16 +17566,16 @@ function isRecord5(value) {
17365
17566
  return typeof value === "object" && value !== null && !Array.isArray(value);
17366
17567
  }
17367
17568
  function getWorkspaceConfigPath(env = process.env, home = homedir4()) {
17368
- return join8(readConfigHome(env, home), "signet", "workspace.json");
17569
+ return join13(readConfigHome(env, home), "signet", "workspace.json");
17369
17570
  }
17370
17571
  function readConfiguredWorkspacePath(env = process.env, home = homedir4(), options = {}) {
17371
17572
  const strict = options.strict ?? true;
17372
17573
  const configPath = getWorkspaceConfigPath(env, home);
17373
- if (!existsSync7(configPath))
17574
+ if (!existsSync12(configPath))
17374
17575
  return null;
17375
17576
  let raw;
17376
17577
  try {
17377
- raw = JSON.parse(readFileSync5(configPath, "utf-8"));
17578
+ raw = JSON.parse(readFileSync9(configPath, "utf-8"));
17378
17579
  } catch (err) {
17379
17580
  if (!strict)
17380
17581
  return null;
@@ -17419,7 +17620,7 @@ function resolveWorkspacePath(options = {}) {
17419
17620
  };
17420
17621
  }
17421
17622
  return {
17422
- path: join8(home, DEFAULT_AGENTS_DIRNAME),
17623
+ path: join13(home, DEFAULT_AGENTS_DIRNAME),
17423
17624
  source: "default",
17424
17625
  configPath,
17425
17626
  configuredPath: configValue
@@ -17442,81 +17643,18 @@ try {
17442
17643
  const esmRequire = createRequire2(import.meta.url);
17443
17644
  native = esmRequire("@signet/native");
17444
17645
  } catch {}
17445
- var GRAPHIQ_DEFAULT_INSTALL_DIR = join9(homedir5(), ".local", "bin");
17446
- var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
17447
- var SIGNET_GIT_ALLOWED_DIRECTORIES = ["skills", "tools", "dreaming"];
17448
- var SIGNET_GIT_PROTECTED_PATHS = [
17449
- ".daemon",
17450
- ".shadow",
17451
- "node_modules",
17452
- ":(glob)**/node_modules/**",
17453
- `${SIGNET_SOURCE_CHECKOUT_DIRNAME}`,
17454
- "memory/backups",
17455
- "memory/memories.db",
17456
- ":(glob)memory/memories.db*",
17457
- ":(glob)memory/**/*.db",
17458
- ":(glob)memory/**/*.db-*",
17459
- ":(glob)memory/**/*.db-journal",
17460
- ":(glob)memory/**/*.db-shm",
17461
- ":(glob)memory/**/*.db-wal",
17462
- ":(glob)memory/**/*.sqlite",
17463
- ":(glob)memory/**/*.sqlite3",
17464
- ":(glob)**/*.db",
17465
- ":(glob)**/*.db-*",
17466
- ":(glob)**/*.db-journal",
17467
- ":(glob)**/*.db-shm",
17468
- ":(glob)**/*.db-wal",
17469
- ":(glob)**/*.sqlite",
17470
- ":(glob)**/*.sqlite3"
17471
- ];
17472
- var SIGNET_GIT_TRACKED_PATHS = [
17473
- "*.md",
17474
- ":(glob)**/*.md",
17475
- "*.json",
17476
- ":(glob)**/*.json",
17477
- "*.jsonl",
17478
- ":(glob)**/*.jsonl",
17479
- "*.html",
17480
- ":(glob)**/*.html",
17481
- "*.yaml",
17482
- ":(glob)**/*.yaml",
17483
- "*.yml",
17484
- ":(glob)**/*.yml",
17485
- ...SIGNET_GIT_ALLOWED_DIRECTORIES
17486
- ];
17487
- var SIGNET_GITIGNORE_PROTECTED_PATTERNS = [
17488
- ".daemon/",
17489
- ".shadow/",
17490
- "node_modules/",
17491
- `${SIGNET_SOURCE_CHECKOUT_DIRNAME}/`,
17492
- "memory/memories.db*",
17493
- "memory/**/*.db",
17494
- "memory/**/*.db-*",
17495
- "memory/**/*.db-journal",
17496
- "memory/**/*.db-shm",
17497
- "memory/**/*.db-wal",
17498
- "memory/**/*.sqlite",
17499
- "memory/**/*.sqlite3",
17500
- "memory/backups/",
17501
- "*.db",
17502
- "*.db-*",
17503
- "*.db-journal",
17504
- "*.db-shm",
17505
- "*.db-wal",
17506
- "*.sqlite",
17507
- "*.sqlite3"
17508
- ];
17646
+ var GRAPHIQ_DEFAULT_INSTALL_DIR = join14(homedir5(), ".local", "bin");
17509
17647
  var DEFAULT_DISCORD_DESKTOP_CACHE_PATH = defaultDiscordDesktopCachePath();
17510
17648
  var DEFAULT_GITHUB_RESOURCE_TYPES = ["issues", "pulls", "discussions", "docs"];
17511
17649
  var VALID_GITHUB_RESOURCE_TYPES = new Set(DEFAULT_GITHUB_RESOURCE_TYPES);
17512
17650
  function defaultDiscordDesktopCachePath() {
17513
17651
  switch (platform2()) {
17514
17652
  case "darwin":
17515
- return resolve5(homedir6(), "Library", "Application Support", "discord");
17653
+ return resolve9(homedir6(), "Library", "Application Support", "discord");
17516
17654
  case "win32":
17517
- return resolve5(process.env.APPDATA || resolve5(homedir6(), "AppData", "Roaming"), "discord");
17655
+ return resolve9(process.env.APPDATA || resolve9(homedir6(), "AppData", "Roaming"), "discord");
17518
17656
  default:
17519
- return resolve5(process.env.XDG_CONFIG_HOME || resolve5(homedir6(), ".config"), "discord");
17657
+ return resolve9(process.env.XDG_CONFIG_HOME || resolve9(homedir6(), ".config"), "discord");
17520
17658
  }
17521
17659
  }
17522
17660
  var IDENTITY_FILES = {
@@ -17576,7 +17714,7 @@ var REQUIRED_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) =>
17576
17714
  var OPTIONAL_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) => spec.optional).map(([key]) => key);
17577
17715
  function linkDirSync(target, path) {
17578
17716
  const type = process.platform === "win32" ? "junction" : "dir";
17579
- symlinkSync(target, path, type);
17717
+ symlinkSync2(target, path, type);
17580
17718
  }
17581
17719
  function symlinkSkills(sourceDir, targetDir, options = {}) {
17582
17720
  const result = {
@@ -17584,19 +17722,19 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17584
17722
  skipped: [],
17585
17723
  errors: []
17586
17724
  };
17587
- if (!existsSync14(sourceDir)) {
17725
+ if (!existsSync18(sourceDir)) {
17588
17726
  return result;
17589
17727
  }
17590
- const targetParent = join14(targetDir, "..");
17591
- if (!existsSync14(targetParent)) {
17592
- mkdirSync8(targetParent, { recursive: true });
17728
+ const targetParent = join18(targetDir, "..");
17729
+ if (!existsSync18(targetParent)) {
17730
+ mkdirSync10(targetParent, { recursive: true });
17593
17731
  }
17594
- if (!existsSync14(targetDir)) {
17595
- mkdirSync8(targetDir, { recursive: true });
17732
+ if (!existsSync18(targetDir)) {
17733
+ mkdirSync10(targetDir, { recursive: true });
17596
17734
  }
17597
17735
  let entries;
17598
17736
  try {
17599
- entries = readdirSync6(sourceDir);
17737
+ entries = readdirSync9(sourceDir);
17600
17738
  } catch (e) {
17601
17739
  result.errors.push({
17602
17740
  path: sourceDir,
@@ -17605,10 +17743,10 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17605
17743
  return result;
17606
17744
  }
17607
17745
  for (const entry of entries) {
17608
- const srcPath = join14(sourceDir, entry);
17609
- const destPath = join14(targetDir, entry);
17746
+ const srcPath = join18(sourceDir, entry);
17747
+ const destPath = join18(targetDir, entry);
17610
17748
  try {
17611
- const src = lstatSync(srcPath);
17749
+ const src = lstatSync3(srcPath);
17612
17750
  if (src.isSymbolicLink() || !src.isDirectory()) {
17613
17751
  result.skipped.push(srcPath);
17614
17752
  continue;
@@ -17621,7 +17759,7 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17621
17759
  continue;
17622
17760
  }
17623
17761
  try {
17624
- const destStat = lstatSync(destPath);
17762
+ const destStat = lstatSync3(destPath);
17625
17763
  if (destStat.isSymbolicLink()) {
17626
17764
  if (!options.dryRun) {
17627
17765
  unlinkSync2(destPath);
@@ -17673,7 +17811,7 @@ function normalizePath(pathValue, env, legacyTildeExpansion = false) {
17673
17811
  const trimmed = pathValue.trim();
17674
17812
  const home2 = userHome(env);
17675
17813
  const expanded = legacyTildeExpansion && trimmed.startsWith("~") ? join3(home2, trimmed.slice(1)) : expandHome(trimmed, home2);
17676
- return resolve4(expanded);
17814
+ return resolve3(expanded);
17677
17815
  }
17678
17816
  function readConfigHome2(env, legacyTildeExpansion = false) {
17679
17817
  const configured = readTrimmed(env, "XDG_CONFIG_HOME");
@@ -17725,7 +17863,7 @@ function createAgentDir(config) {
17725
17863
  };
17726
17864
  const clearConfiguredAgentDir = (env = process.env) => {
17727
17865
  try {
17728
- rmSync2(getConfigPath(env), { force: true });
17866
+ rmSync(getConfigPath(env), { force: true });
17729
17867
  } catch {}
17730
17868
  };
17731
17869
  return {
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ import { dirname as dirname2, isAbsolute, join as join3, relative, sep } from "n
40
40
 
41
41
  // ../../platform/core/dist/index.js
42
42
  import { createRequire } from "node:module";
43
- import { dirname, join } from "node:path";
43
+ import { dirname, join, resolve } from "node:path";
44
44
  import { fileURLToPath } from "node:url";
45
45
  import {
46
46
  execFile as nodeExecFile,
@@ -52,29 +52,30 @@ import {
52
52
  import { promisify } from "node:util";
53
53
  import { createHash } from "node:crypto";
54
54
  import { homedir as homedir2 } from "node:os";
55
- import { join as join2, resolve } from "node:path";
55
+ import { join as join2, resolve as resolve2 } from "node:path";
56
+ import { constants as fsConstants } from "node:fs";
56
57
  import {
57
- closeSync as closeSync2,
58
- existsSync as existsSync7,
58
+ closeSync as closeSync3,
59
+ existsSync as existsSync12,
59
60
  fsyncSync as fsyncSync2,
60
- mkdirSync as mkdirSync3,
61
- openSync as openSync2,
62
- readFileSync as readFileSync5,
63
- renameSync as renameSync2,
64
- rmSync,
65
- statSync as statSync3,
61
+ mkdirSync as mkdirSync6,
62
+ openSync as openSync3,
63
+ readFileSync as readFileSync9,
64
+ renameSync as renameSync3,
65
+ rmSync as rmSync3,
66
+ statSync as statSync5,
66
67
  writeSync
67
68
  } from "node:fs";
68
69
  import { homedir as homedir4 } from "node:os";
69
- import { dirname as dirname4, join as join8, resolve as resolve2 } from "node:path";
70
+ import { dirname as dirname5, join as join13, resolve as resolve7 } from "node:path";
70
71
  import { createRequire as createRequire2 } from "node:module";
71
72
  import { homedir as homedir5 } from "node:os";
72
- import { dirname as dirname5, join as join9, resolve as resolve3 } from "node:path";
73
+ import { dirname as dirname6, join as join14, resolve as resolve8 } from "node:path";
73
74
  import { homedir as homedir6, platform as platform2 } from "node:os";
74
- import { basename, dirname as dirname6, resolve as resolve5 } from "node:path";
75
+ import { basename, dirname as dirname7, resolve as resolve9 } from "node:path";
75
76
  import { homedir as homedir8 } from "node:os";
76
- import { existsSync as existsSync14, lstatSync, mkdirSync as mkdirSync8, readdirSync as readdirSync6, symlinkSync, unlinkSync as unlinkSync2 } from "node:fs";
77
- import { join as join14 } from "node:path";
77
+ import { existsSync as existsSync18, lstatSync as lstatSync3, mkdirSync as mkdirSync10, readdirSync as readdirSync9, symlinkSync as symlinkSync2, unlinkSync as unlinkSync2 } from "node:fs";
78
+ import { join as join18 } from "node:path";
78
79
  var __create2 = Object.create;
79
80
  var __getProtoOf2 = Object.getPrototypeOf;
80
81
  var __defProp2 = Object.defineProperty;
@@ -15941,6 +15942,102 @@ function up159(db) {
15941
15942
  ON memories(agent_id, memory_kind);
15942
15943
  `);
15943
15944
  }
15945
+ var ledgerColumns = [
15946
+ "key",
15947
+ "agent_id",
15948
+ "workspace_id",
15949
+ "file_name",
15950
+ "status",
15951
+ "original_path",
15952
+ "sha256",
15953
+ "size_bytes",
15954
+ "request_fingerprint",
15955
+ "source_id",
15956
+ "lease_token",
15957
+ "lease_expires_at",
15958
+ "attempt_count",
15959
+ "error",
15960
+ "created_at",
15961
+ "updated_at"
15962
+ ];
15963
+ function columns(db, table) {
15964
+ return new Set(db.prepare(`PRAGMA table_info(${table})`).all().map((row) => String(row.name)));
15965
+ }
15966
+ function addMissingColumns(db, table, definitions) {
15967
+ const present = columns(db, table);
15968
+ for (const definition of definitions) {
15969
+ const name = definition.split(" ", 1)[0];
15970
+ if (!present.has(name))
15971
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${definition}`);
15972
+ }
15973
+ }
15974
+ function rebuildLedgerWithoutGlobalKeyPrimaryKey(db) {
15975
+ const keyInfo = db.prepare("PRAGMA table_info(import_admission_ledger)").all().find((row) => row.name === "key");
15976
+ if (!keyInfo || Number(keyInfo.pk) === 0)
15977
+ return;
15978
+ const savepoint = "migration_158_rebuild_ledger";
15979
+ db.exec(`SAVEPOINT ${savepoint}`);
15980
+ try {
15981
+ db.exec(`
15982
+ CREATE TABLE import_admission_ledger_v158 (
15983
+ key TEXT NOT NULL, agent_id TEXT NOT NULL DEFAULT '', workspace_id TEXT NOT NULL DEFAULT '',
15984
+ file_name TEXT NOT NULL, status TEXT NOT NULL CHECK (status IN ('pending','processing','imported','duplicate','failed','quarantined','original_unavailable')),
15985
+ original_path TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,
15986
+ request_fingerprint TEXT NOT NULL DEFAULT '', source_id TEXT, lease_token TEXT, lease_expires_at TEXT,
15987
+ attempt_count INTEGER NOT NULL DEFAULT 0, error TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
15988
+ );
15989
+ INSERT INTO import_admission_ledger_v158 (${ledgerColumns.join(",")})
15990
+ SELECT ${ledgerColumns.join(",")} FROM import_admission_ledger;
15991
+ DROP TABLE import_admission_ledger;
15992
+ ALTER TABLE import_admission_ledger_v158 RENAME TO import_admission_ledger;
15993
+ `);
15994
+ db.exec(`RELEASE ${savepoint}`);
15995
+ } catch (error) {
15996
+ try {
15997
+ db.exec(`ROLLBACK TO SAVEPOINT ${savepoint}`);
15998
+ } finally {
15999
+ try {
16000
+ db.exec(`RELEASE ${savepoint}`);
16001
+ } catch {}
16002
+ }
16003
+ throw error;
16004
+ }
16005
+ }
16006
+ function up160(db) {
16007
+ db.exec(`
16008
+ CREATE TABLE IF NOT EXISTS import_admission_ledger (
16009
+ key TEXT NOT NULL, agent_id TEXT NOT NULL, workspace_id TEXT NOT NULL DEFAULT '', file_name TEXT NOT NULL,
16010
+ status TEXT NOT NULL CHECK (status IN ('pending','processing','imported','duplicate','failed','quarantined','original_unavailable')),
16011
+ original_path TEXT NOT NULL, sha256 TEXT NOT NULL, size_bytes INTEGER NOT NULL,
16012
+ request_fingerprint TEXT NOT NULL DEFAULT '', source_id TEXT, lease_token TEXT, lease_expires_at TEXT,
16013
+ attempt_count INTEGER NOT NULL DEFAULT 0, error TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL
16014
+ );
16015
+ CREATE TABLE IF NOT EXISTS import_admission_events (
16016
+ id INTEGER PRIMARY KEY AUTOINCREMENT, admission_key TEXT NOT NULL, agent_id TEXT NOT NULL DEFAULT '',
16017
+ workspace_id TEXT NOT NULL DEFAULT '', event TEXT NOT NULL, created_at TEXT NOT NULL
16018
+ );
16019
+ `);
16020
+ addMissingColumns(db, "import_admission_ledger", [
16021
+ "agent_id TEXT NOT NULL DEFAULT ''",
16022
+ "workspace_id TEXT NOT NULL DEFAULT ''",
16023
+ "request_fingerprint TEXT NOT NULL DEFAULT ''",
16024
+ "source_id TEXT",
16025
+ "lease_token TEXT",
16026
+ "lease_expires_at TEXT",
16027
+ "attempt_count INTEGER NOT NULL DEFAULT 0",
16028
+ "error TEXT"
16029
+ ]);
16030
+ addMissingColumns(db, "import_admission_events", [
16031
+ "agent_id TEXT NOT NULL DEFAULT ''",
16032
+ "workspace_id TEXT NOT NULL DEFAULT ''"
16033
+ ]);
16034
+ rebuildLedgerWithoutGlobalKeyPrimaryKey(db);
16035
+ db.exec(`
16036
+ CREATE UNIQUE INDEX IF NOT EXISTS uq_import_admission_scope_key ON import_admission_ledger(key, agent_id, workspace_id);
16037
+ CREATE INDEX IF NOT EXISTS idx_import_admission_status ON import_admission_ledger(agent_id, workspace_id, status, updated_at);
16038
+ CREATE INDEX IF NOT EXISTS idx_import_admission_events_key ON import_admission_events(admission_key, agent_id, workspace_id, id);
16039
+ `);
16040
+ }
15944
16041
  var MIGRATIONS = [
15945
16042
  {
15946
16043
  version: 1,
@@ -17229,6 +17326,18 @@ var MIGRATIONS = [
17229
17326
  version: 159,
17230
17327
  name: "retire-obsolete-invocation-ledger",
17231
17328
  up: up5
17329
+ },
17330
+ {
17331
+ version: 160,
17332
+ name: "import-admission-ledger",
17333
+ up: up160,
17334
+ artifacts: {
17335
+ tables: ["import_admission_ledger", "import_admission_events"],
17336
+ indexes: ["idx_import_admission_status", "idx_import_admission_events_key"],
17337
+ columns: [
17338
+ ...["workspace_id", "request_fingerprint", "source_id", "lease_token", "lease_expires_at", "attempt_count"].map((column) => ({ table: "import_admission_ledger", column }))
17339
+ ]
17340
+ }
17232
17341
  }
17233
17342
  ];
17234
17343
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -17243,6 +17352,98 @@ function expandHome(p2, home = homedir2()) {
17243
17352
  return join2(home, p2.slice(2));
17244
17353
  return p2;
17245
17354
  }
17355
+ var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
17356
+ var SIGNET_GIT_ALLOWED_DIRECTORIES = ["skills", "tools", "dreaming"];
17357
+ var SIGNET_GIT_PROTECTED_PATHS = [
17358
+ ".daemon",
17359
+ ".secrets",
17360
+ ".shadow",
17361
+ "cache",
17362
+ "data",
17363
+ "files",
17364
+ "runtime",
17365
+ "workspace-layout.json",
17366
+ "node_modules",
17367
+ ":(glob)**/node_modules/**",
17368
+ `${SIGNET_SOURCE_CHECKOUT_DIRNAME}`,
17369
+ "memory/backups",
17370
+ "memory/memories.db",
17371
+ ":(glob)memory/memories.db*",
17372
+ ":(glob)memory/**/*.db",
17373
+ ":(glob)memory/**/*.db-*",
17374
+ ":(glob)memory/**/*.db-journal",
17375
+ ":(glob)memory/**/*.db-shm",
17376
+ ":(glob)memory/**/*.db-wal",
17377
+ ":(glob)memory/**/*.sqlite",
17378
+ ":(glob)memory/**/*.sqlite3",
17379
+ ":(glob)**/*.db",
17380
+ ":(glob)**/*.db-*",
17381
+ ":(glob)**/*.db-journal",
17382
+ ":(glob)**/*.db-shm",
17383
+ ":(glob)**/*.db-wal",
17384
+ ":(glob)**/*.sqlite",
17385
+ ":(glob)**/*.sqlite3"
17386
+ ];
17387
+ var SIGNET_GIT_TRACKED_PATHS = [
17388
+ "*.md",
17389
+ ":(glob)**/*.md",
17390
+ "*.json",
17391
+ ":(glob)**/*.json",
17392
+ "*.jsonl",
17393
+ ":(glob)**/*.jsonl",
17394
+ "*.html",
17395
+ ":(glob)**/*.html",
17396
+ "*.yaml",
17397
+ ":(glob)**/*.yaml",
17398
+ "*.yml",
17399
+ ":(glob)**/*.yml",
17400
+ ...SIGNET_GIT_ALLOWED_DIRECTORIES
17401
+ ];
17402
+ var SIGNET_GITIGNORE_PROTECTED_PATTERNS = [
17403
+ ".daemon/",
17404
+ ".secrets/",
17405
+ ".shadow/",
17406
+ "cache/",
17407
+ "data/",
17408
+ "files/",
17409
+ "runtime/",
17410
+ "workspace-layout.json",
17411
+ "node_modules/",
17412
+ `${SIGNET_SOURCE_CHECKOUT_DIRNAME}/`,
17413
+ "memory/memories.db*",
17414
+ "memory/**/*.db",
17415
+ "memory/**/*.db-*",
17416
+ "memory/**/*.db-journal",
17417
+ "memory/**/*.db-shm",
17418
+ "memory/**/*.db-wal",
17419
+ "memory/**/*.sqlite",
17420
+ "memory/**/*.sqlite3",
17421
+ "memory/backups/",
17422
+ "*.db",
17423
+ "*.db-*",
17424
+ "*.db-journal",
17425
+ "*.db-shm",
17426
+ "*.db-wal",
17427
+ "*.sqlite",
17428
+ "*.sqlite3"
17429
+ ];
17430
+ var DESCRIPTOR_ROOT = process.platform === "linux" ? "/proc/self/fd" : process.platform === "darwin" ? "/dev/fd" : undefined;
17431
+ var DIRECTORY_FLAGS = fsConstants.O_RDONLY | (fsConstants.O_DIRECTORY ?? 0) | (fsConstants.O_NOFOLLOW ?? 0);
17432
+ var FILE_FLAGS = fsConstants.O_RDONLY | (fsConstants.O_NOFOLLOW ?? 0) | (fsConstants.O_NONBLOCK ?? 0);
17433
+ var NOFOLLOW = fsConstants.O_NOFOLLOW ?? 0;
17434
+ var PROTECTION_COMPONENT_IDS = [
17435
+ "root-authored",
17436
+ "skills",
17437
+ "managed-originals",
17438
+ "sqlite",
17439
+ "transcripts",
17440
+ "external-sources",
17441
+ "runtime",
17442
+ "filesystem-cache",
17443
+ "secrets"
17444
+ ];
17445
+ var ORDER = new Map(PROTECTION_COMPONENT_IDS.map((id, index) => [id, index]));
17446
+ var BLOCKING = new Set(["missing", "stale", "degraded"]);
17246
17447
  var STATES = new Set([
17247
17448
  "found",
17248
17449
  "missing",
@@ -17339,7 +17540,7 @@ function resolveSignetDaemonUrl(opts = {}) {
17339
17540
  var WORKSPACE_ENV_KEYS = ["SIGNET_PATH", "SIGNET_WORKSPACE"];
17340
17541
  var DEFAULT_AGENTS_DIRNAME = ".agents";
17341
17542
  function normalizeWorkspacePath(pathValue, home = homedir4()) {
17342
- return resolve2(expandHome(pathValue.trim(), home));
17543
+ return resolve7(expandHome(pathValue.trim(), home));
17343
17544
  }
17344
17545
  function readTrimmedEnv(env, name) {
17345
17546
  const value = env[name];
@@ -17351,13 +17552,13 @@ function readTrimmedEnv(env, name) {
17351
17552
  function readConfigHome(env, home) {
17352
17553
  const raw = env.XDG_CONFIG_HOME;
17353
17554
  if (typeof raw !== "string")
17354
- return join8(home, ".config");
17555
+ return join13(home, ".config");
17355
17556
  const trimmed = raw.trim();
17356
- return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) : join8(home, ".config");
17557
+ return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) : join13(home, ".config");
17357
17558
  }
17358
17559
  function isExistingDirectory(path) {
17359
17560
  try {
17360
- return statSync3(path).isDirectory();
17561
+ return statSync5(path).isDirectory();
17361
17562
  } catch {
17362
17563
  return false;
17363
17564
  }
@@ -17366,16 +17567,16 @@ function isRecord5(value) {
17366
17567
  return typeof value === "object" && value !== null && !Array.isArray(value);
17367
17568
  }
17368
17569
  function getWorkspaceConfigPath(env = process.env, home = homedir4()) {
17369
- return join8(readConfigHome(env, home), "signet", "workspace.json");
17570
+ return join13(readConfigHome(env, home), "signet", "workspace.json");
17370
17571
  }
17371
17572
  function readConfiguredWorkspacePath(env = process.env, home = homedir4(), options = {}) {
17372
17573
  const strict = options.strict ?? true;
17373
17574
  const configPath = getWorkspaceConfigPath(env, home);
17374
- if (!existsSync7(configPath))
17575
+ if (!existsSync12(configPath))
17375
17576
  return null;
17376
17577
  let raw;
17377
17578
  try {
17378
- raw = JSON.parse(readFileSync5(configPath, "utf-8"));
17579
+ raw = JSON.parse(readFileSync9(configPath, "utf-8"));
17379
17580
  } catch (err) {
17380
17581
  if (!strict)
17381
17582
  return null;
@@ -17420,7 +17621,7 @@ function resolveWorkspacePath(options = {}) {
17420
17621
  };
17421
17622
  }
17422
17623
  return {
17423
- path: join8(home, DEFAULT_AGENTS_DIRNAME),
17624
+ path: join13(home, DEFAULT_AGENTS_DIRNAME),
17424
17625
  source: "default",
17425
17626
  configPath,
17426
17627
  configuredPath: configValue
@@ -17443,81 +17644,18 @@ try {
17443
17644
  const esmRequire = createRequire2(import.meta.url);
17444
17645
  native = esmRequire("@signet/native");
17445
17646
  } catch {}
17446
- var GRAPHIQ_DEFAULT_INSTALL_DIR = join9(homedir5(), ".local", "bin");
17447
- var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
17448
- var SIGNET_GIT_ALLOWED_DIRECTORIES = ["skills", "tools", "dreaming"];
17449
- var SIGNET_GIT_PROTECTED_PATHS = [
17450
- ".daemon",
17451
- ".shadow",
17452
- "node_modules",
17453
- ":(glob)**/node_modules/**",
17454
- `${SIGNET_SOURCE_CHECKOUT_DIRNAME}`,
17455
- "memory/backups",
17456
- "memory/memories.db",
17457
- ":(glob)memory/memories.db*",
17458
- ":(glob)memory/**/*.db",
17459
- ":(glob)memory/**/*.db-*",
17460
- ":(glob)memory/**/*.db-journal",
17461
- ":(glob)memory/**/*.db-shm",
17462
- ":(glob)memory/**/*.db-wal",
17463
- ":(glob)memory/**/*.sqlite",
17464
- ":(glob)memory/**/*.sqlite3",
17465
- ":(glob)**/*.db",
17466
- ":(glob)**/*.db-*",
17467
- ":(glob)**/*.db-journal",
17468
- ":(glob)**/*.db-shm",
17469
- ":(glob)**/*.db-wal",
17470
- ":(glob)**/*.sqlite",
17471
- ":(glob)**/*.sqlite3"
17472
- ];
17473
- var SIGNET_GIT_TRACKED_PATHS = [
17474
- "*.md",
17475
- ":(glob)**/*.md",
17476
- "*.json",
17477
- ":(glob)**/*.json",
17478
- "*.jsonl",
17479
- ":(glob)**/*.jsonl",
17480
- "*.html",
17481
- ":(glob)**/*.html",
17482
- "*.yaml",
17483
- ":(glob)**/*.yaml",
17484
- "*.yml",
17485
- ":(glob)**/*.yml",
17486
- ...SIGNET_GIT_ALLOWED_DIRECTORIES
17487
- ];
17488
- var SIGNET_GITIGNORE_PROTECTED_PATTERNS = [
17489
- ".daemon/",
17490
- ".shadow/",
17491
- "node_modules/",
17492
- `${SIGNET_SOURCE_CHECKOUT_DIRNAME}/`,
17493
- "memory/memories.db*",
17494
- "memory/**/*.db",
17495
- "memory/**/*.db-*",
17496
- "memory/**/*.db-journal",
17497
- "memory/**/*.db-shm",
17498
- "memory/**/*.db-wal",
17499
- "memory/**/*.sqlite",
17500
- "memory/**/*.sqlite3",
17501
- "memory/backups/",
17502
- "*.db",
17503
- "*.db-*",
17504
- "*.db-journal",
17505
- "*.db-shm",
17506
- "*.db-wal",
17507
- "*.sqlite",
17508
- "*.sqlite3"
17509
- ];
17647
+ var GRAPHIQ_DEFAULT_INSTALL_DIR = join14(homedir5(), ".local", "bin");
17510
17648
  var DEFAULT_DISCORD_DESKTOP_CACHE_PATH = defaultDiscordDesktopCachePath();
17511
17649
  var DEFAULT_GITHUB_RESOURCE_TYPES = ["issues", "pulls", "discussions", "docs"];
17512
17650
  var VALID_GITHUB_RESOURCE_TYPES = new Set(DEFAULT_GITHUB_RESOURCE_TYPES);
17513
17651
  function defaultDiscordDesktopCachePath() {
17514
17652
  switch (platform2()) {
17515
17653
  case "darwin":
17516
- return resolve5(homedir6(), "Library", "Application Support", "discord");
17654
+ return resolve9(homedir6(), "Library", "Application Support", "discord");
17517
17655
  case "win32":
17518
- return resolve5(process.env.APPDATA || resolve5(homedir6(), "AppData", "Roaming"), "discord");
17656
+ return resolve9(process.env.APPDATA || resolve9(homedir6(), "AppData", "Roaming"), "discord");
17519
17657
  default:
17520
- return resolve5(process.env.XDG_CONFIG_HOME || resolve5(homedir6(), ".config"), "discord");
17658
+ return resolve9(process.env.XDG_CONFIG_HOME || resolve9(homedir6(), ".config"), "discord");
17521
17659
  }
17522
17660
  }
17523
17661
  var IDENTITY_FILES = {
@@ -17577,7 +17715,7 @@ var REQUIRED_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) =>
17577
17715
  var OPTIONAL_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) => spec.optional).map(([key]) => key);
17578
17716
  function linkDirSync(target, path) {
17579
17717
  const type = process.platform === "win32" ? "junction" : "dir";
17580
- symlinkSync(target, path, type);
17718
+ symlinkSync2(target, path, type);
17581
17719
  }
17582
17720
  function symlinkSkills(sourceDir, targetDir, options = {}) {
17583
17721
  const result = {
@@ -17585,19 +17723,19 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17585
17723
  skipped: [],
17586
17724
  errors: []
17587
17725
  };
17588
- if (!existsSync14(sourceDir)) {
17726
+ if (!existsSync18(sourceDir)) {
17589
17727
  return result;
17590
17728
  }
17591
- const targetParent = join14(targetDir, "..");
17592
- if (!existsSync14(targetParent)) {
17593
- mkdirSync8(targetParent, { recursive: true });
17729
+ const targetParent = join18(targetDir, "..");
17730
+ if (!existsSync18(targetParent)) {
17731
+ mkdirSync10(targetParent, { recursive: true });
17594
17732
  }
17595
- if (!existsSync14(targetDir)) {
17596
- mkdirSync8(targetDir, { recursive: true });
17733
+ if (!existsSync18(targetDir)) {
17734
+ mkdirSync10(targetDir, { recursive: true });
17597
17735
  }
17598
17736
  let entries;
17599
17737
  try {
17600
- entries = readdirSync6(sourceDir);
17738
+ entries = readdirSync9(sourceDir);
17601
17739
  } catch (e) {
17602
17740
  result.errors.push({
17603
17741
  path: sourceDir,
@@ -17606,10 +17744,10 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17606
17744
  return result;
17607
17745
  }
17608
17746
  for (const entry of entries) {
17609
- const srcPath = join14(sourceDir, entry);
17610
- const destPath = join14(targetDir, entry);
17747
+ const srcPath = join18(sourceDir, entry);
17748
+ const destPath = join18(targetDir, entry);
17611
17749
  try {
17612
- const src = lstatSync(srcPath);
17750
+ const src = lstatSync3(srcPath);
17613
17751
  if (src.isSymbolicLink() || !src.isDirectory()) {
17614
17752
  result.skipped.push(srcPath);
17615
17753
  continue;
@@ -17622,7 +17760,7 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
17622
17760
  continue;
17623
17761
  }
17624
17762
  try {
17625
- const destStat = lstatSync(destPath);
17763
+ const destStat = lstatSync3(destPath);
17626
17764
  if (destStat.isSymbolicLink()) {
17627
17765
  if (!options.dryRun) {
17628
17766
  unlinkSync2(destPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/connector-base",
3
- "version": "0.227.1",
3
+ "version": "0.228.0",
4
4
  "description": "Base class for Signet harness connectors",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,7 +30,7 @@
30
30
  "typecheck": "tsc --noEmit"
31
31
  },
32
32
  "dependencies": {
33
- "@signetai/core": "0.227.1",
33
+ "@signetai/core": "0.228.0",
34
34
  "json5": "^2.2.3",
35
35
  "jsonc-parser": "3.3.1"
36
36
  },