@signetai/connector-forge 0.177.0 → 0.179.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 (2) hide show
  1. package/dist/index.js +93 -41
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -10,14 +10,14 @@ import {
10
10
  unlinkSync as unlinkSync3,
11
11
  writeFileSync as writeFileSync3
12
12
  } from "node:fs";
13
- import { homedir as homedir5 } from "node:os";
14
- import { join as join6, resolve as resolve2 } from "node:path";
13
+ import { homedir as homedir6 } from "node:os";
14
+ import { join as join7, resolve as resolve3 } from "node:path";
15
15
 
16
16
  // ../../../libs/connector-base/dist/index.js
17
17
  import { randomBytes } from "node:crypto";
18
18
  import { existsSync, readFileSync, renameSync, statSync as statSync2, unlinkSync as unlinkSync2, writeFileSync } from "node:fs";
19
19
  import { homedir } from "node:os";
20
- import { dirname as dirname3, isAbsolute, join as join3, relative, sep } from "node:path";
20
+ import { dirname as dirname5, isAbsolute, join as join3, relative, sep } from "node:path";
21
21
  import { createRequire } from "node:module";
22
22
  import { dirname, join } from "node:path";
23
23
  import { fileURLToPath } from "node:url";
@@ -27,9 +27,11 @@ import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as rea
27
27
  import { homedir as homedir3 } from "node:os";
28
28
  import { dirname as dirname2, join as join5, resolve } from "node:path";
29
29
  import { createRequire as createRequire2 } from "node:module";
30
- import { homedir as homedir4, platform as platform2 } from "node:os";
30
+ import { homedir as homedir4 } from "node:os";
31
+ import { dirname as dirname3, join as join6, resolve as resolve2 } from "node:path";
32
+ import { homedir as homedir5, platform as platform2 } from "node:os";
31
33
  import { basename, dirname as dirname4, resolve as resolve4 } from "node:path";
32
- import { homedir as homedir8 } from "node:os";
34
+ import { homedir as homedir9 } from "node:os";
33
35
  import { existsSync as existsSync13, lstatSync, mkdirSync as mkdirSync9, readdirSync as readdirSync6, symlinkSync, unlinkSync } from "node:fs";
34
36
  import { join as join13 } from "node:path";
35
37
  var __create2 = Object.create;
@@ -10402,6 +10404,18 @@ function up110(db) {
10402
10404
  ON memory_entity_mentions(entity_id, memory_id);
10403
10405
  `);
10404
10406
  }
10407
+ function hasColumn19(db, table, column) {
10408
+ const rows = db.prepare(`PRAGMA table_info(${table})`).all();
10409
+ return rows.some((row) => row.name === column);
10410
+ }
10411
+ var COLUMNS2 = ["first_remember_at", "first_recall_at"];
10412
+ function up111(db) {
10413
+ for (const column of COLUMNS2) {
10414
+ if (!hasColumn19(db, "telemetry_install", column)) {
10415
+ db.exec(`ALTER TABLE telemetry_install ADD COLUMN ${column} TEXT`);
10416
+ }
10417
+ }
10418
+ }
10405
10419
  var MIGRATIONS = [
10406
10420
  {
10407
10421
  version: 1,
@@ -11277,6 +11291,17 @@ var MIGRATIONS = [
11277
11291
  version: 110,
11278
11292
  name: "memory-mention-join-index",
11279
11293
  up: up110
11294
+ },
11295
+ {
11296
+ version: 111,
11297
+ name: "telemetry-first-use",
11298
+ up: up111,
11299
+ artifacts: {
11300
+ columns: [
11301
+ { table: "telemetry_install", column: "first_remember_at" },
11302
+ { table: "telemetry_install", column: "first_recall_at" }
11303
+ ]
11304
+ }
11280
11305
  }
11281
11306
  ];
11282
11307
  var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
@@ -11473,6 +11498,7 @@ try {
11473
11498
  const esmRequire = createRequire2(import.meta.url);
11474
11499
  native = esmRequire("@signet/native");
11475
11500
  } catch {}
11501
+ var GRAPHIQ_DEFAULT_INSTALL_DIR = join6(homedir4(), ".local", "bin");
11476
11502
  var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
11477
11503
  var SIGNET_GIT_ALLOWED_DIRECTORIES = ["skills", "tools", "dreaming"];
11478
11504
  var SIGNET_GIT_PROTECTED_PATHS = [
@@ -11542,11 +11568,11 @@ var VALID_GITHUB_RESOURCE_TYPES = new Set(DEFAULT_GITHUB_RESOURCE_TYPES);
11542
11568
  function defaultDiscordDesktopCachePath() {
11543
11569
  switch (platform2()) {
11544
11570
  case "darwin":
11545
- return resolve4(homedir4(), "Library", "Application Support", "discord");
11571
+ return resolve4(homedir5(), "Library", "Application Support", "discord");
11546
11572
  case "win32":
11547
- return resolve4(process.env.APPDATA || resolve4(homedir4(), "AppData", "Roaming"), "discord");
11573
+ return resolve4(process.env.APPDATA || resolve4(homedir5(), "AppData", "Roaming"), "discord");
11548
11574
  default:
11549
- return resolve4(process.env.XDG_CONFIG_HOME || resolve4(homedir4(), ".config"), "discord");
11575
+ return resolve4(process.env.XDG_CONFIG_HOME || resolve4(homedir5(), ".config"), "discord");
11550
11576
  }
11551
11577
  }
11552
11578
  var IDENTITY_FILES = {
@@ -11677,7 +11703,7 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
11677
11703
  }
11678
11704
  return result;
11679
11705
  }
11680
- var home = homedir8();
11706
+ var home = homedir9();
11681
11707
  var SIGNET_BLOCK_START = "<!-- SIGNET:START -->";
11682
11708
  var SIGNET_BLOCK_END = "<!-- SIGNET:END -->";
11683
11709
  function stripSignetBlock(content) {
@@ -11718,7 +11744,7 @@ class BaseConnector {
11718
11744
  generateHeader(sourcePath, targetName) {
11719
11745
  const name = targetName || this.name;
11720
11746
  const safe = (p) => p.replace(/[\n\r]/g, "");
11721
- const root = dirname3(sourcePath);
11747
+ const root = dirname5(sourcePath);
11722
11748
  return `# Auto-generated from ${safe(sourcePath)}
11723
11749
  # Source: ${safe(sourcePath)}
11724
11750
  # Generated: ${new Date().toISOString()}
@@ -11755,7 +11781,7 @@ function isSignetGeneratedFile(raw) {
11755
11781
  return lines.some((line, i) => /^#\s+AUTO-GENERATED\s+from\s+.*\s+by\s+Signet/i.test(line) || /^#\s+Auto-generated\s+from\s+/.test(line) && i + 1 < lines.length && /^#\s+Source:\s+/.test(lines[i + 1]));
11756
11782
  }
11757
11783
  function atomicWriteText(path, content, mode) {
11758
- const tmp = join3(dirname3(path), `.${randomBytes(6).toString("hex")}.tmp`);
11784
+ const tmp = join3(dirname5(path), `.${randomBytes(6).toString("hex")}.tmp`);
11759
11785
  let writeMode = mode;
11760
11786
  if (writeMode === undefined) {
11761
11787
  try {
@@ -11838,16 +11864,18 @@ function resolveRemoteDaemonUrl() {
11838
11864
 
11839
11865
  // ../../../platform/core/dist/index.js
11840
11866
  import { createRequire as createRequire3 } from "node:module";
11841
- import { dirname as dirname5, join as join4 } from "node:path";
11867
+ import { dirname as dirname6, join as join4 } from "node:path";
11842
11868
  import { fileURLToPath as fileURLToPath2 } from "node:url";
11843
11869
  import { homedir as homedir22 } from "os";
11844
11870
  import { join as join22 } from "path";
11845
11871
  import { createRequire as createRequire22 } from "node:module";
11846
- import { homedir as homedir42, platform as platform22 } from "node:os";
11872
+ import { homedir as homedir42 } from "node:os";
11873
+ import { dirname as dirname32, join as join62, resolve as resolve22 } from "node:path";
11874
+ import { homedir as homedir52, platform as platform22 } from "node:os";
11847
11875
  import { basename as basename2, dirname as dirname42, resolve as resolve42 } from "node:path";
11848
11876
  import { existsSync as existsSync11, readFileSync as readFileSync9, readdirSync as readdirSync4, realpathSync, statSync as statSync5 } from "node:fs";
11849
11877
  import { dirname as dirname7, join as join11 } from "node:path";
11850
- import { homedir as homedir82 } from "node:os";
11878
+ import { homedir as homedir92 } from "node:os";
11851
11879
  var __create = Object.create;
11852
11880
  var __getProtoOf = Object.getPrototypeOf;
11853
11881
  var __defProp = Object.defineProperty;
@@ -18795,7 +18823,7 @@ function memoriesFtsNeedsTokenizerRepair2(sql) {
18795
18823
  return true;
18796
18824
  return !normalized.includes(`tokenize='${MEMORIES_FTS_TOKENIZER2}'`);
18797
18825
  }
18798
- function up111(db) {
18826
+ function up112(db) {
18799
18827
  db.exec(`
18800
18828
  CREATE TABLE IF NOT EXISTS schema_migrations (
18801
18829
  version INTEGER PRIMARY KEY,
@@ -18884,12 +18912,12 @@ function up111(db) {
18884
18912
  } catch {}
18885
18913
  createMemoriesFts2(db);
18886
18914
  }
18887
- function hasColumn19(db, table, column) {
18915
+ function hasColumn20(db, table, column) {
18888
18916
  const rows = db.prepare(`PRAGMA table_info(${table})`).all();
18889
18917
  return rows.some((r) => r.name === column);
18890
18918
  }
18891
18919
  function addColumnIfMissing23(db, table, column, definition) {
18892
- if (!hasColumn19(db, table, column)) {
18920
+ if (!hasColumn20(db, table, column)) {
18893
18921
  db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
18894
18922
  }
18895
18923
  }
@@ -19218,7 +19246,7 @@ function up1010(db) {
19218
19246
  )
19219
19247
  `);
19220
19248
  }
19221
- function up112(db) {
19249
+ function up113(db) {
19222
19250
  db.exec(`
19223
19251
  CREATE TABLE IF NOT EXISTS session_scores (
19224
19252
  id TEXT PRIMARY KEY,
@@ -21464,9 +21492,9 @@ function hasColumn112(db, table, column) {
21464
21492
  const rows = db.prepare(`PRAGMA table_info(${table})`).all();
21465
21493
  return rows.some((row) => row.name === column);
21466
21494
  }
21467
- var COLUMNS2 = ["harness", "session_id", "tool_use_id", "cwd", "origin", "args"];
21495
+ var COLUMNS3 = ["harness", "session_id", "tool_use_id", "cwd", "origin", "args"];
21468
21496
  function up822(db) {
21469
- for (const column of COLUMNS2) {
21497
+ for (const column of COLUMNS3) {
21470
21498
  if (!hasColumn112(db, "skill_invocations", column)) {
21471
21499
  db.exec(`ALTER TABLE skill_invocations ADD COLUMN ${column} TEXT`);
21472
21500
  }
@@ -22218,11 +22246,23 @@ function up1102(db) {
22218
22246
  ON memory_entity_mentions(entity_id, memory_id);
22219
22247
  `);
22220
22248
  }
22249
+ function hasColumn192(db, table, column) {
22250
+ const rows = db.prepare(`PRAGMA table_info(${table})`).all();
22251
+ return rows.some((row) => row.name === column);
22252
+ }
22253
+ var COLUMNS22 = ["first_remember_at", "first_recall_at"];
22254
+ function up1112(db) {
22255
+ for (const column of COLUMNS22) {
22256
+ if (!hasColumn192(db, "telemetry_install", column)) {
22257
+ db.exec(`ALTER TABLE telemetry_install ADD COLUMN ${column} TEXT`);
22258
+ }
22259
+ }
22260
+ }
22221
22261
  var MIGRATIONS2 = [
22222
22262
  {
22223
22263
  version: 1,
22224
22264
  name: "baseline",
22225
- up: up111,
22265
+ up: up112,
22226
22266
  artifacts: { tables: ["memories", "conversations", "embeddings"] }
22227
22267
  },
22228
22268
  {
@@ -22288,7 +22328,7 @@ var MIGRATIONS2 = [
22288
22328
  {
22289
22329
  version: 11,
22290
22330
  name: "session-scores",
22291
- up: up112,
22331
+ up: up113,
22292
22332
  artifacts: { tables: ["session_scores"] }
22293
22333
  },
22294
22334
  {
@@ -23093,11 +23133,22 @@ var MIGRATIONS2 = [
23093
23133
  version: 110,
23094
23134
  name: "memory-mention-join-index",
23095
23135
  up: up1102
23136
+ },
23137
+ {
23138
+ version: 111,
23139
+ name: "telemetry-first-use",
23140
+ up: up1112,
23141
+ artifacts: {
23142
+ columns: [
23143
+ { table: "telemetry_install", column: "first_remember_at" },
23144
+ { table: "telemetry_install", column: "first_recall_at" }
23145
+ ]
23146
+ }
23096
23147
  }
23097
23148
  ];
23098
23149
  var LATEST_SCHEMA_VERSION2 = MIGRATIONS2[MIGRATIONS2.length - 1]?.version ?? 0;
23099
23150
  var __filename22 = fileURLToPath2(import.meta.url);
23100
- var __dirname22 = dirname5(__filename22);
23151
+ var __dirname22 = dirname6(__filename22);
23101
23152
  var import_yaml3 = __toESM(require_dist2(), 1);
23102
23153
  function expandHome2(p, home2 = homedir22()) {
23103
23154
  if (p === "~")
@@ -23121,6 +23172,7 @@ try {
23121
23172
  const esmRequire = createRequire22(import.meta.url);
23122
23173
  native2 = esmRequire("@signet/native");
23123
23174
  } catch {}
23175
+ var GRAPHIQ_DEFAULT_INSTALL_DIR2 = join62(homedir42(), ".local", "bin");
23124
23176
  var SIGNET_SOURCE_CHECKOUT_DIRNAME2 = "signetai";
23125
23177
  var SIGNET_GIT_ALLOWED_DIRECTORIES2 = ["skills", "tools", "dreaming"];
23126
23178
  var SIGNET_GIT_PROTECTED_PATHS2 = [
@@ -23190,11 +23242,11 @@ var VALID_GITHUB_RESOURCE_TYPES2 = new Set(DEFAULT_GITHUB_RESOURCE_TYPES2);
23190
23242
  function defaultDiscordDesktopCachePath2() {
23191
23243
  switch (platform22()) {
23192
23244
  case "darwin":
23193
- return resolve42(homedir42(), "Library", "Application Support", "discord");
23245
+ return resolve42(homedir52(), "Library", "Application Support", "discord");
23194
23246
  case "win32":
23195
- return resolve42(process.env.APPDATA || resolve42(homedir42(), "AppData", "Roaming"), "discord");
23247
+ return resolve42(process.env.APPDATA || resolve42(homedir52(), "AppData", "Roaming"), "discord");
23196
23248
  default:
23197
- return resolve42(process.env.XDG_CONFIG_HOME || resolve42(homedir42(), ".config"), "discord");
23249
+ return resolve42(process.env.XDG_CONFIG_HOME || resolve42(homedir52(), ".config"), "discord");
23198
23250
  }
23199
23251
  }
23200
23252
  var IDENTITY_MODES = ["managed", "off"];
@@ -23297,13 +23349,13 @@ function loadIdentityMode(agentsDir) {
23297
23349
  return "managed";
23298
23350
  }
23299
23351
  }
23300
- var home2 = homedir82();
23352
+ var home2 = homedir92();
23301
23353
 
23302
23354
  // src/index.ts
23303
23355
  var SIGNET_FORGE_MARKER = "Managed by Signet (@signetai/connector-forge)";
23304
23356
  function getHomeDir() {
23305
23357
  const home3 = readTrimmedEnv2("HOME");
23306
- return home3 ?? homedir5();
23358
+ return home3 ?? homedir6();
23307
23359
  }
23308
23360
  function readJsonObject(path) {
23309
23361
  if (!existsSync2(path))
@@ -23344,11 +23396,11 @@ class ForgeConnector extends BaseConnector {
23344
23396
  getForgeHome() {
23345
23397
  const configured = readTrimmedEnv2("FORGE_CONFIG");
23346
23398
  if (configured)
23347
- return resolve2(expandHome2(configured));
23348
- const legacyPath = join6(getHomeDir(), "forge");
23399
+ return resolve3(expandHome2(configured));
23400
+ const legacyPath = join7(getHomeDir(), "forge");
23349
23401
  if (existsSync2(legacyPath))
23350
23402
  return legacyPath;
23351
- return join6(getHomeDir(), ".forge");
23403
+ return join7(getHomeDir(), ".forge");
23352
23404
  }
23353
23405
  getConfigPath() {
23354
23406
  return this.getMcpConfigPath();
@@ -23356,7 +23408,7 @@ class ForgeConnector extends BaseConnector {
23356
23408
  async install(basePath) {
23357
23409
  const filesWritten = [];
23358
23410
  const configsPatched = [];
23359
- const expandedBasePath = expandHome2(basePath || join6(getHomeDir(), ".agents"));
23411
+ const expandedBasePath = expandHome2(basePath || join7(getHomeDir(), ".agents"));
23360
23412
  const identityMode = loadIdentityMode(expandedBasePath);
23361
23413
  if (!hasValidIdentity(expandedBasePath)) {
23362
23414
  return {
@@ -23410,7 +23462,7 @@ class ForgeConnector extends BaseConnector {
23410
23462
  configsPatched
23411
23463
  };
23412
23464
  }
23413
- const skillsSource = join6(expandedBasePath, "skills");
23465
+ const skillsSource = join7(expandedBasePath, "skills");
23414
23466
  if (existsSync2(skillsSource)) {
23415
23467
  this.symlinkSkills(skillsSource, this.getSkillsPath());
23416
23468
  }
@@ -23470,19 +23522,19 @@ class ForgeConnector extends BaseConnector {
23470
23522
  }
23471
23523
  static isHarnessInstalled() {
23472
23524
  const home3 = getHomeDir();
23473
- return existsSync2(readTrimmedEnv2("FORGE_CONFIG") ?? "") || existsSync2(join6(home3, "forge", ".mcp.json")) || existsSync2(join6(home3, ".forge", ".mcp.json")) || existsSync2(join6(home3, "forge")) || existsSync2(join6(home3, ".forge"));
23525
+ return existsSync2(readTrimmedEnv2("FORGE_CONFIG") ?? "") || existsSync2(join7(home3, "forge", ".mcp.json")) || existsSync2(join7(home3, ".forge", ".mcp.json")) || existsSync2(join7(home3, "forge")) || existsSync2(join7(home3, ".forge"));
23474
23526
  }
23475
23527
  getAgentsPath() {
23476
- return join6(this.getForgeHome(), "AGENTS.md");
23528
+ return join7(this.getForgeHome(), "AGENTS.md");
23477
23529
  }
23478
23530
  getSkillsPath() {
23479
- return join6(this.getForgeHome(), "skills");
23531
+ return join7(this.getForgeHome(), "skills");
23480
23532
  }
23481
23533
  getMcpConfigPath() {
23482
- return join6(this.getForgeHome(), ".mcp.json");
23534
+ return join7(this.getForgeHome(), ".mcp.json");
23483
23535
  }
23484
23536
  generateAgentsMd(basePath) {
23485
- const sourcePath = join6(basePath, "AGENTS.md");
23537
+ const sourcePath = join7(basePath, "AGENTS.md");
23486
23538
  if (!existsSync2(sourcePath))
23487
23539
  return null;
23488
23540
  const raw = readFileSync2(sourcePath, "utf-8");
@@ -23530,7 +23582,7 @@ ${header}${body}
23530
23582
  const skillsDir = this.getSkillsPath();
23531
23583
  if (!existsSync2(skillsDir))
23532
23584
  return;
23533
- const skillsSource = resolve2(signetPath ?? resolveSignetWorkspacePath(), "skills");
23585
+ const skillsSource = resolve3(signetPath ?? resolveSignetWorkspacePath(), "skills");
23534
23586
  let entries;
23535
23587
  try {
23536
23588
  entries = readdirSync(skillsDir);
@@ -23538,12 +23590,12 @@ ${header}${body}
23538
23590
  return;
23539
23591
  }
23540
23592
  for (const entry of entries) {
23541
- const entryPath = join6(skillsDir, entry);
23593
+ const entryPath = join7(skillsDir, entry);
23542
23594
  try {
23543
23595
  if (!lstatSync2(entryPath).isSymbolicLink())
23544
23596
  continue;
23545
23597
  const rawTarget = readlinkSync(entryPath);
23546
- const target = resolve2(skillsDir, rawTarget);
23598
+ const target = resolve3(skillsDir, rawTarget);
23547
23599
  if (!isChildOf(target, skillsSource))
23548
23600
  continue;
23549
23601
  unlinkSync3(entryPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signetai/connector-forge",
3
- "version": "0.177.0",
3
+ "version": "0.179.0",
4
4
  "description": "Signet connector for ForgeCode - installs MCP, identity, and skills integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,8 +24,8 @@
24
24
  "typecheck": "tsc --noEmit"
25
25
  },
26
26
  "dependencies": {
27
- "@signetai/connector-base": "0.177.0",
28
- "@signetai/core": "0.177.0"
27
+ "@signetai/connector-base": "0.179.0",
28
+ "@signetai/core": "0.179.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^22.0.0",