@signetai/core 0.200.2 → 0.200.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/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +263 -161
- package/dist/launchd.d.ts +20 -0
- package/dist/launchd.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,6 +23,8 @@ export type { NetworkMode } from "./network";
|
|
|
23
23
|
export { loadConfiguredHarnesses, parseHarnessList } from "./harness-config";
|
|
24
24
|
export { resolveSignetDaemonUrl } from "./daemon-url";
|
|
25
25
|
export type { SignetDaemonUrlOptions } from "./daemon-url";
|
|
26
|
+
export { buildLaunchdEnvironment, buildLaunchdPlist, resolveLaunchdExecutable, } from "./launchd";
|
|
27
|
+
export type { LaunchdEnvironmentInput, LaunchdPlistInput } from "./launchd";
|
|
26
28
|
export { composeApiUserContent, escapeMemoryContextForFence, StreamingMemoryContextScrubber, stripInternalMemoryContext, wrapMemoryContext, } from "./memory-context";
|
|
27
29
|
export { type WorkspaceSource, type WorkspaceResolution, type ResolveWorkspacePathOptions, type WorkspaceFileSystem, WORKSPACE_ENV_KEYS, normalizeWorkspacePath, getWorkspaceConfigPath, readConfiguredWorkspacePath, writeConfiguredWorkspacePath, clearConfiguredWorkspacePath, resolveWorkspacePath, } from "./workspace";
|
|
28
30
|
export { search, vectorSearch, keywordSearch, hybridSearch, cosineSimilarity, buildFtsMatchQuery, type SearchOptions, type SearchResult, type VectorSearchOptions, type HybridSearchOptions, } from "./search";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14384,6 +14384,105 @@ function resolveSignetDaemonUrl(opts = {}) {
|
|
|
14384
14384
|
const port = normalizePort(readEnv(env, "SIGNET_PORT"), fallbackPort);
|
|
14385
14385
|
return normalizeDaemonUrl(`http://${bracketIpv6Host(host)}:${port}`, "SIGNET_HOST/SIGNET_PORT");
|
|
14386
14386
|
}
|
|
14387
|
+
// src/launchd.ts
|
|
14388
|
+
import { accessSync, constants, statSync } from "node:fs";
|
|
14389
|
+
import { homedir as homedir3 } from "node:os";
|
|
14390
|
+
import { delimiter, dirname as dirname2, join as join5 } from "node:path";
|
|
14391
|
+
var CRITICAL_EXECUTABLES = ["git", "bun", "npx", "python3"];
|
|
14392
|
+
var FALLBACK_EXECUTABLE_PATHS = {
|
|
14393
|
+
git: ["/usr/bin/git", "/usr/local/bin/git", "/opt/homebrew/bin/git"],
|
|
14394
|
+
bun: ["/opt/homebrew/bin/bun", "/usr/local/bin/bun", "/usr/bin/bun"],
|
|
14395
|
+
npx: ["/opt/homebrew/bin/npx", "/usr/local/bin/npx", "/usr/bin/npx"],
|
|
14396
|
+
python3: ["/usr/bin/python3", "/usr/local/bin/python3", "/opt/homebrew/bin/python3"]
|
|
14397
|
+
};
|
|
14398
|
+
function isExecutableFile(path) {
|
|
14399
|
+
try {
|
|
14400
|
+
accessSync(path, constants.X_OK);
|
|
14401
|
+
return statSync(path).isFile();
|
|
14402
|
+
} catch {
|
|
14403
|
+
return false;
|
|
14404
|
+
}
|
|
14405
|
+
}
|
|
14406
|
+
function unique(values) {
|
|
14407
|
+
return [...new Set(values.filter((value) => value.length > 0))];
|
|
14408
|
+
}
|
|
14409
|
+
function resolveLaunchdExecutable(name, input = {}) {
|
|
14410
|
+
const environment = input.environment ?? process.env;
|
|
14411
|
+
const home = input.home ?? environment.HOME ?? homedir3();
|
|
14412
|
+
const pathEntries = unique([
|
|
14413
|
+
...(input.pathValue ?? environment.PATH ?? "").split(delimiter),
|
|
14414
|
+
join5(home, ".bun", "bin"),
|
|
14415
|
+
join5(home, "bin"),
|
|
14416
|
+
"/opt/homebrew/bin",
|
|
14417
|
+
"/usr/local/bin",
|
|
14418
|
+
"/usr/bin",
|
|
14419
|
+
"/bin"
|
|
14420
|
+
]);
|
|
14421
|
+
for (const directory of pathEntries) {
|
|
14422
|
+
const candidate = join5(directory, name);
|
|
14423
|
+
if (isExecutableFile(candidate))
|
|
14424
|
+
return candidate;
|
|
14425
|
+
}
|
|
14426
|
+
return FALLBACK_EXECUTABLE_PATHS[name].find(isExecutableFile) ?? FALLBACK_EXECUTABLE_PATHS[name][0];
|
|
14427
|
+
}
|
|
14428
|
+
function buildLaunchdEnvironment(input = {}) {
|
|
14429
|
+
const environment = input.environment ?? process.env;
|
|
14430
|
+
const home = input.home ?? environment.HOME ?? homedir3();
|
|
14431
|
+
const basePath = input.pathValue ?? environment.PATH ?? "";
|
|
14432
|
+
const resolvedPaths = CRITICAL_EXECUTABLES.map((name) => dirname2(resolveLaunchdExecutable(name, input)));
|
|
14433
|
+
const pathValue = unique([
|
|
14434
|
+
...resolvedPaths,
|
|
14435
|
+
join5(home, ".bun", "bin"),
|
|
14436
|
+
join5(home, "bin"),
|
|
14437
|
+
...basePath.split(delimiter),
|
|
14438
|
+
"/opt/homebrew/bin",
|
|
14439
|
+
"/usr/local/bin",
|
|
14440
|
+
"/usr/bin",
|
|
14441
|
+
"/bin"
|
|
14442
|
+
]).join(delimiter);
|
|
14443
|
+
return {
|
|
14444
|
+
...input.values,
|
|
14445
|
+
HOME: home,
|
|
14446
|
+
PATH: pathValue
|
|
14447
|
+
};
|
|
14448
|
+
}
|
|
14449
|
+
function xmlEscape(value) {
|
|
14450
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
14451
|
+
}
|
|
14452
|
+
function buildLaunchdPlist(input) {
|
|
14453
|
+
const programArguments = input.programArguments.map((arg) => `
|
|
14454
|
+
<string>${xmlEscape(arg)}</string>`).join("");
|
|
14455
|
+
const environment = Object.entries(input.environment).map(([key, value]) => `
|
|
14456
|
+
<key>${xmlEscape(key)}</key>
|
|
14457
|
+
<string>${xmlEscape(value)}</string>`).join("");
|
|
14458
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
14459
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
14460
|
+
<plist version="1.0">
|
|
14461
|
+
<dict>
|
|
14462
|
+
<key>Label</key>
|
|
14463
|
+
<string>${xmlEscape(input.label)}</string>
|
|
14464
|
+
<key>ProgramArguments</key>
|
|
14465
|
+
<array>${programArguments}
|
|
14466
|
+
</array>
|
|
14467
|
+
<key>EnvironmentVariables</key>
|
|
14468
|
+
<dict>${environment}
|
|
14469
|
+
</dict>
|
|
14470
|
+
<key>WorkingDirectory</key>
|
|
14471
|
+
<string>${xmlEscape(input.workingDirectory)}</string>
|
|
14472
|
+
<key>RunAtLoad</key>
|
|
14473
|
+
<true/>
|
|
14474
|
+
<key>KeepAlive</key>
|
|
14475
|
+
<true/>
|
|
14476
|
+
<key>StandardOutPath</key>
|
|
14477
|
+
<string>${xmlEscape(input.standardOutPath)}</string>
|
|
14478
|
+
<key>StandardErrorPath</key>
|
|
14479
|
+
<string>${xmlEscape(input.standardErrorPath)}</string>
|
|
14480
|
+
<key>ProcessType</key>
|
|
14481
|
+
<string>Background</string>
|
|
14482
|
+
</dict>
|
|
14483
|
+
</plist>
|
|
14484
|
+
`;
|
|
14485
|
+
}
|
|
14387
14486
|
// src/memory-context.ts
|
|
14388
14487
|
var INTERNAL_FENCE_NAMES = ["signet-memory-context", "signet-memory", "memory-context"];
|
|
14389
14488
|
var FENCE_PREFIXES = [
|
|
@@ -14634,11 +14733,11 @@ import {
|
|
|
14634
14733
|
readFileSync as readFileSync3,
|
|
14635
14734
|
renameSync,
|
|
14636
14735
|
rmSync,
|
|
14637
|
-
statSync,
|
|
14736
|
+
statSync as statSync2,
|
|
14638
14737
|
writeSync
|
|
14639
14738
|
} from "node:fs";
|
|
14640
|
-
import { homedir as
|
|
14641
|
-
import { dirname as
|
|
14739
|
+
import { homedir as homedir4 } from "node:os";
|
|
14740
|
+
import { dirname as dirname3, join as join6, resolve } from "node:path";
|
|
14642
14741
|
var defaultWorkspaceFileSystem = {
|
|
14643
14742
|
closeSync,
|
|
14644
14743
|
fsyncSync,
|
|
@@ -14649,7 +14748,7 @@ var defaultWorkspaceFileSystem = {
|
|
|
14649
14748
|
};
|
|
14650
14749
|
var WORKSPACE_ENV_KEYS = ["SIGNET_PATH", "SIGNET_WORKSPACE"];
|
|
14651
14750
|
var DEFAULT_AGENTS_DIRNAME = ".agents";
|
|
14652
|
-
function normalizeWorkspacePath(pathValue, home =
|
|
14751
|
+
function normalizeWorkspacePath(pathValue, home = homedir4()) {
|
|
14653
14752
|
return resolve(expandHome(pathValue.trim(), home));
|
|
14654
14753
|
}
|
|
14655
14754
|
function readTrimmedEnv(env, name) {
|
|
@@ -14662,13 +14761,13 @@ function readTrimmedEnv(env, name) {
|
|
|
14662
14761
|
function readConfigHome(env, home) {
|
|
14663
14762
|
const raw = env.XDG_CONFIG_HOME;
|
|
14664
14763
|
if (typeof raw !== "string")
|
|
14665
|
-
return
|
|
14764
|
+
return join6(home, ".config");
|
|
14666
14765
|
const trimmed = raw.trim();
|
|
14667
|
-
return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) :
|
|
14766
|
+
return trimmed.length > 0 ? normalizeWorkspacePath(trimmed, home) : join6(home, ".config");
|
|
14668
14767
|
}
|
|
14669
14768
|
function isExistingDirectory(path) {
|
|
14670
14769
|
try {
|
|
14671
|
-
return
|
|
14770
|
+
return statSync2(path).isDirectory();
|
|
14672
14771
|
} catch {
|
|
14673
14772
|
return false;
|
|
14674
14773
|
}
|
|
@@ -14676,10 +14775,10 @@ function isExistingDirectory(path) {
|
|
|
14676
14775
|
function isRecord4(value) {
|
|
14677
14776
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
14678
14777
|
}
|
|
14679
|
-
function getWorkspaceConfigPath(env = process.env, home =
|
|
14680
|
-
return
|
|
14778
|
+
function getWorkspaceConfigPath(env = process.env, home = homedir4()) {
|
|
14779
|
+
return join6(readConfigHome(env, home), "signet", "workspace.json");
|
|
14681
14780
|
}
|
|
14682
|
-
function readConfiguredWorkspacePath(env = process.env, home =
|
|
14781
|
+
function readConfiguredWorkspacePath(env = process.env, home = homedir4(), _options = {}) {
|
|
14683
14782
|
const configPath = getWorkspaceConfigPath(env, home);
|
|
14684
14783
|
if (!existsSync4(configPath))
|
|
14685
14784
|
return null;
|
|
@@ -14699,10 +14798,10 @@ function readConfiguredWorkspacePath(env = process.env, home = homedir3(), _opti
|
|
|
14699
14798
|
}
|
|
14700
14799
|
return normalizeWorkspacePath(workspace, home);
|
|
14701
14800
|
}
|
|
14702
|
-
function writeConfiguredWorkspacePath(pathValue, env = process.env, home =
|
|
14801
|
+
function writeConfiguredWorkspacePath(pathValue, env = process.env, home = homedir4(), fileSystem = defaultWorkspaceFileSystem) {
|
|
14703
14802
|
const path = normalizeWorkspacePath(pathValue, home);
|
|
14704
14803
|
const configPath = getWorkspaceConfigPath(env, home);
|
|
14705
|
-
const configDir =
|
|
14804
|
+
const configDir = dirname3(configPath);
|
|
14706
14805
|
mkdirSync2(configDir, { recursive: true });
|
|
14707
14806
|
const payload = {
|
|
14708
14807
|
version: 1,
|
|
@@ -14744,7 +14843,7 @@ function clearConfiguredWorkspacePath(env = process.env) {
|
|
|
14744
14843
|
}
|
|
14745
14844
|
function resolveWorkspacePath(options = {}) {
|
|
14746
14845
|
const env = options.env ?? process.env;
|
|
14747
|
-
const home = options.home ??
|
|
14846
|
+
const home = options.home ?? homedir4();
|
|
14748
14847
|
const requireExistingEnvPath = options.requireExistingEnvPath ?? false;
|
|
14749
14848
|
const configPath = getWorkspaceConfigPath(env, home);
|
|
14750
14849
|
const envPath = resolveEnvWorkspace(env, home, requireExistingEnvPath);
|
|
@@ -14766,7 +14865,7 @@ function resolveWorkspacePath(options = {}) {
|
|
|
14766
14865
|
};
|
|
14767
14866
|
}
|
|
14768
14867
|
return {
|
|
14769
|
-
path:
|
|
14868
|
+
path: join6(home, DEFAULT_AGENTS_DIRNAME),
|
|
14770
14869
|
source: "default",
|
|
14771
14870
|
configPath,
|
|
14772
14871
|
configuredPath: configValue
|
|
@@ -15530,16 +15629,16 @@ var SIGNET_PLUGIN_REGISTRY_FILE = "registry-v1.json";
|
|
|
15530
15629
|
var SIGNET_PLUGIN_REGISTRY_VERSION = 1;
|
|
15531
15630
|
// src/graphiq.ts
|
|
15532
15631
|
import { existsSync as existsSync5, mkdirSync as mkdirSync3, readFileSync as readFileSync4, renameSync as renameSync2, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
15533
|
-
import { homedir as
|
|
15534
|
-
import { dirname as
|
|
15632
|
+
import { homedir as homedir5 } from "node:os";
|
|
15633
|
+
import { dirname as dirname4, join as join7, resolve as resolve2 } from "node:path";
|
|
15535
15634
|
var SIGNET_GRAPHIQ_STATE_FILE = ".daemon/graphiq/state.json";
|
|
15536
15635
|
var GRAPHIQ_SYNCED_VERSION = "4.3.3";
|
|
15537
|
-
var GRAPHIQ_DEFAULT_INSTALL_DIR =
|
|
15636
|
+
var GRAPHIQ_DEFAULT_INSTALL_DIR = join7(homedir5(), ".local", "bin");
|
|
15538
15637
|
function getGraphiqStatePath(basePath) {
|
|
15539
|
-
return
|
|
15638
|
+
return join7(basePath, SIGNET_GRAPHIQ_STATE_FILE);
|
|
15540
15639
|
}
|
|
15541
15640
|
function getGraphiqProjectDbPath(projectPath) {
|
|
15542
|
-
return
|
|
15641
|
+
return join7(resolve2(projectPath), ".graphiq", "graphiq.db");
|
|
15543
15642
|
}
|
|
15544
15643
|
function emptyGraphiqState(now = new Date) {
|
|
15545
15644
|
return {
|
|
@@ -15563,7 +15662,7 @@ function readGraphiqState(basePath) {
|
|
|
15563
15662
|
}
|
|
15564
15663
|
function writeGraphiqState(basePath, state) {
|
|
15565
15664
|
const path = getGraphiqStatePath(basePath);
|
|
15566
|
-
mkdirSync3(
|
|
15665
|
+
mkdirSync3(dirname4(path), { recursive: true });
|
|
15567
15666
|
writeFileSync2(path, `${JSON.stringify(state, null, 2)}
|
|
15568
15667
|
`, { mode: 384 });
|
|
15569
15668
|
}
|
|
@@ -15596,7 +15695,7 @@ function setGraphiqActiveProject(basePath, activeProject) {
|
|
|
15596
15695
|
const fresh = readGraphiqState(basePath);
|
|
15597
15696
|
const tmpPath = `${statePath}.tmp`;
|
|
15598
15697
|
const next = { ...fresh, activeProject };
|
|
15599
|
-
mkdirSync3(
|
|
15698
|
+
mkdirSync3(dirname4(statePath), { recursive: true });
|
|
15600
15699
|
writeFileSync2(tmpPath, `${JSON.stringify(next, null, 2)}
|
|
15601
15700
|
`, { mode: 384 });
|
|
15602
15701
|
renameSync2(tmpPath, statePath);
|
|
@@ -15697,8 +15796,8 @@ function isRecord5(value) {
|
|
|
15697
15796
|
}
|
|
15698
15797
|
// src/workspace-source-repo.ts
|
|
15699
15798
|
import { spawn, spawnSync } from "node:child_process";
|
|
15700
|
-
import { closeSync as closeSync2, existsSync as existsSync6, mkdirSync as mkdirSync4, openSync as openSync2, readdirSync as readdirSync2, rmSync as rmSync3, statSync as
|
|
15701
|
-
import { join as
|
|
15799
|
+
import { closeSync as closeSync2, existsSync as existsSync6, mkdirSync as mkdirSync4, openSync as openSync2, readdirSync as readdirSync2, rmSync as rmSync3, statSync as statSync3, writeFileSync as writeFileSync3 } from "node:fs";
|
|
15800
|
+
import { join as join8, resolve as resolve3 } from "node:path";
|
|
15702
15801
|
var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
|
|
15703
15802
|
var SIGNET_SOURCE_REMOTE_URL = "https://github.com/Signet-AI/signetai.git";
|
|
15704
15803
|
var DEFAULT_GIT_TIMEOUT_MS = 60000;
|
|
@@ -15706,7 +15805,7 @@ var SOURCE_REPO_SYNC_LOCK_FILENAME = "source-repo-sync.lock";
|
|
|
15706
15805
|
var SOURCE_REPO_SYNC_LOCK_STALE_MS = 5 * 60000;
|
|
15707
15806
|
var SOURCE_REPO_SYNC_LOCK_WAIT_MS = 15000;
|
|
15708
15807
|
function resolveWorkspaceSourceRepoPath(workspaceDir, repoDirName = SIGNET_SOURCE_CHECKOUT_DIRNAME) {
|
|
15709
|
-
return
|
|
15808
|
+
return join8(resolve3(workspaceDir), repoDirName);
|
|
15710
15809
|
}
|
|
15711
15810
|
function syncWorkspaceSourceRepo(workspaceDir, options = {}) {
|
|
15712
15811
|
const timeoutMs = options.gitTimeoutMs ?? DEFAULT_GIT_TIMEOUT_MS;
|
|
@@ -15919,7 +16018,7 @@ function killGitProcessTree(proc, signal) {
|
|
|
15919
16018
|
} catch {}
|
|
15920
16019
|
}
|
|
15921
16020
|
function hasGitMetadata(path) {
|
|
15922
|
-
return existsSync6(
|
|
16021
|
+
return existsSync6(join8(path, ".git"));
|
|
15923
16022
|
}
|
|
15924
16023
|
function isEmptyDirectory(path) {
|
|
15925
16024
|
if (!existsSync6(path)) {
|
|
@@ -16001,11 +16100,11 @@ function readErrorCode(err) {
|
|
|
16001
16100
|
return typeof maybeErrno.code === "string" ? maybeErrno.code : null;
|
|
16002
16101
|
}
|
|
16003
16102
|
function sourceRepoSyncLockPath(workspaceDir) {
|
|
16004
|
-
return
|
|
16103
|
+
return join8(resolve3(workspaceDir), ".daemon", SOURCE_REPO_SYNC_LOCK_FILENAME);
|
|
16005
16104
|
}
|
|
16006
16105
|
function clearStaleSourceRepoSyncLock(path) {
|
|
16007
16106
|
try {
|
|
16008
|
-
const age = Date.now() -
|
|
16107
|
+
const age = Date.now() - statSync3(path).mtimeMs;
|
|
16009
16108
|
if (age > SOURCE_REPO_SYNC_LOCK_STALE_MS) {
|
|
16010
16109
|
rmSync3(path, { force: true });
|
|
16011
16110
|
return true;
|
|
@@ -16106,7 +16205,7 @@ function sourceRepoSyncLockErrorResult(repoPath, detail) {
|
|
|
16106
16205
|
};
|
|
16107
16206
|
}
|
|
16108
16207
|
function ensureDaemonDir(workspaceDir) {
|
|
16109
|
-
const daemonDir =
|
|
16208
|
+
const daemonDir = join8(resolve3(workspaceDir), ".daemon");
|
|
16110
16209
|
try {
|
|
16111
16210
|
mkdirSync4(daemonDir, { recursive: true });
|
|
16112
16211
|
return { ok: true };
|
|
@@ -16433,9 +16532,9 @@ function escapeRegExp(value) {
|
|
|
16433
16532
|
}
|
|
16434
16533
|
// src/sources-config.ts
|
|
16435
16534
|
import { createHash as createHash3, randomUUID as randomUUID2 } from "node:crypto";
|
|
16436
|
-
import { existsSync as existsSync7, mkdirSync as mkdirSync5, readFileSync as readFileSync5, renameSync as renameSync3, rmSync as rmSync4, statSync as
|
|
16437
|
-
import { homedir as
|
|
16438
|
-
import { basename, dirname as
|
|
16535
|
+
import { existsSync as existsSync7, mkdirSync as mkdirSync5, readFileSync as readFileSync5, renameSync as renameSync3, rmSync as rmSync4, statSync as statSync4, writeFileSync as writeFileSync4 } from "node:fs";
|
|
16536
|
+
import { homedir as homedir6, platform as platform2 } from "node:os";
|
|
16537
|
+
import { basename, dirname as dirname5, resolve as resolve4 } from "node:path";
|
|
16439
16538
|
var DEFAULT_OBSIDIAN_EXCLUDE_GLOBS = [
|
|
16440
16539
|
"**/.obsidian/**",
|
|
16441
16540
|
"**/.trash/**",
|
|
@@ -16456,7 +16555,7 @@ var DEFAULT_GITHUB_MAX_ITEMS_PER_REPO = 500;
|
|
|
16456
16555
|
var MAX_GITHUB_MAX_ITEMS_PER_REPO = 1e4;
|
|
16457
16556
|
var VALID_GITHUB_RESOURCE_TYPES = new Set(DEFAULT_GITHUB_RESOURCE_TYPES);
|
|
16458
16557
|
function getAgentsDir() {
|
|
16459
|
-
return process.env.SIGNET_PATH || `${
|
|
16558
|
+
return process.env.SIGNET_PATH || `${homedir6()}/.agents`;
|
|
16460
16559
|
}
|
|
16461
16560
|
function getSourcesConfigPath(agentsDir = getAgentsDir()) {
|
|
16462
16561
|
return `${agentsDir.replace(/\/$/, "")}/sources.json`;
|
|
@@ -16480,7 +16579,7 @@ function loadSourcesConfig(agentsDir = getAgentsDir()) {
|
|
|
16480
16579
|
}
|
|
16481
16580
|
function saveSourcesConfig(config, agentsDir = getAgentsDir()) {
|
|
16482
16581
|
const path = getSourcesConfigPath(agentsDir);
|
|
16483
|
-
mkdirSync5(
|
|
16582
|
+
mkdirSync5(dirname5(path), { recursive: true });
|
|
16484
16583
|
const tmp = `${path}.tmp-${process.pid}-${randomUUID2()}`;
|
|
16485
16584
|
writeFileSync4(tmp, `${JSON.stringify(config, null, 2)}
|
|
16486
16585
|
`, "utf8");
|
|
@@ -16869,7 +16968,7 @@ function addObsidianSourceChecked(input, agentsDir = getAgentsDir()) {
|
|
|
16869
16968
|
if (!existsSync7(root))
|
|
16870
16969
|
return { ok: false, error: `Obsidian vault path does not exist: ${root}` };
|
|
16871
16970
|
try {
|
|
16872
|
-
if (!
|
|
16971
|
+
if (!statSync4(root).isDirectory())
|
|
16873
16972
|
return { ok: false, error: `Obsidian vault path must be a directory: ${root}` };
|
|
16874
16973
|
} catch {
|
|
16875
16974
|
return { ok: false, error: `Obsidian vault path is not accessible: ${root}` };
|
|
@@ -16945,7 +17044,7 @@ function emptyConfig() {
|
|
|
16945
17044
|
}
|
|
16946
17045
|
function withSourcesConfigLock(agentsDir, fn) {
|
|
16947
17046
|
const configPath = getSourcesConfigPath(agentsDir);
|
|
16948
|
-
mkdirSync5(
|
|
17047
|
+
mkdirSync5(dirname5(configPath), { recursive: true });
|
|
16949
17048
|
const lockDir = `${configPath}.lock`;
|
|
16950
17049
|
let locked = false;
|
|
16951
17050
|
for (let attempt = 0;attempt < 500; attempt++) {
|
|
@@ -16988,7 +17087,7 @@ function cleanDiscordChannelFilter(values) {
|
|
|
16988
17087
|
}
|
|
16989
17088
|
function cleanLocalPath(value) {
|
|
16990
17089
|
const trimmed = value?.trim();
|
|
16991
|
-
return trimmed ? resolve4(trimmed.replace(/^~(?=$|\/|\\)/,
|
|
17090
|
+
return trimmed ? resolve4(trimmed.replace(/^~(?=$|\/|\\)/, homedir6())) : undefined;
|
|
16992
17091
|
}
|
|
16993
17092
|
function cleanGitHubRepos(values) {
|
|
16994
17093
|
return Array.from(new Set(values.filter((value) => typeof value === "string").map((value) => value.trim()).filter(Boolean)));
|
|
@@ -17036,11 +17135,11 @@ function isDiscordSyncMode(value) {
|
|
|
17036
17135
|
function defaultDiscordDesktopCachePath() {
|
|
17037
17136
|
switch (platform2()) {
|
|
17038
17137
|
case "darwin":
|
|
17039
|
-
return resolve4(
|
|
17138
|
+
return resolve4(homedir6(), "Library", "Application Support", "discord");
|
|
17040
17139
|
case "win32":
|
|
17041
|
-
return resolve4(process.env.APPDATA || resolve4(
|
|
17140
|
+
return resolve4(process.env.APPDATA || resolve4(homedir6(), "AppData", "Roaming"), "discord");
|
|
17042
17141
|
default:
|
|
17043
|
-
return resolve4(process.env.XDG_CONFIG_HOME || resolve4(
|
|
17142
|
+
return resolve4(process.env.XDG_CONFIG_HOME || resolve4(homedir6(), ".config"), "discord");
|
|
17044
17143
|
}
|
|
17045
17144
|
}
|
|
17046
17145
|
function looksLikeDiscordDesktopCacheRoot(value) {
|
|
@@ -17099,8 +17198,8 @@ function isJsonValue(value) {
|
|
|
17099
17198
|
var SOURCE_CHUNK_SOURCE_TYPE = "source_chunk";
|
|
17100
17199
|
var LEGACY_OBSIDIAN_CHUNK_SOURCE_TYPE = "source_obsidian_chunk";
|
|
17101
17200
|
// src/export.ts
|
|
17102
|
-
import { existsSync as existsSync8, readFileSync as readFileSync6, readdirSync as readdirSync3, statSync as
|
|
17103
|
-
import { join as
|
|
17201
|
+
import { existsSync as existsSync8, readFileSync as readFileSync6, readdirSync as readdirSync3, statSync as statSync5 } from "node:fs";
|
|
17202
|
+
import { join as join9 } from "node:path";
|
|
17104
17203
|
function recordImportedMemoryContentSafety(db, memoryId, content) {
|
|
17105
17204
|
if (db.prepare("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?").get("memory_content_safety") == null) {
|
|
17106
17205
|
return;
|
|
@@ -17127,13 +17226,13 @@ var IDENTITY_FILE_NAMES = [
|
|
|
17127
17226
|
];
|
|
17128
17227
|
function collectExportData(agentsDir, db, options = {}) {
|
|
17129
17228
|
let agentYaml = null;
|
|
17130
|
-
const yamlPath =
|
|
17229
|
+
const yamlPath = join9(agentsDir, "agent.yaml");
|
|
17131
17230
|
if (existsSync8(yamlPath)) {
|
|
17132
17231
|
agentYaml = readFileSync6(yamlPath, "utf-8");
|
|
17133
17232
|
}
|
|
17134
17233
|
const identityFiles = [];
|
|
17135
17234
|
for (const name of IDENTITY_FILE_NAMES) {
|
|
17136
|
-
const path =
|
|
17235
|
+
const path = join9(agentsDir, name);
|
|
17137
17236
|
if (existsSync8(path)) {
|
|
17138
17237
|
identityFiles.push({ name, content: readFileSync6(path, "utf-8") });
|
|
17139
17238
|
}
|
|
@@ -17153,14 +17252,14 @@ function collectExportData(agentsDir, db, options = {}) {
|
|
|
17153
17252
|
ORDER BY created_at ASC`).all();
|
|
17154
17253
|
const skills = [];
|
|
17155
17254
|
if (options.includeSkills !== false) {
|
|
17156
|
-
const skillsDir =
|
|
17255
|
+
const skillsDir = join9(agentsDir, "skills");
|
|
17157
17256
|
if (existsSync8(skillsDir)) {
|
|
17158
17257
|
try {
|
|
17159
17258
|
const entries = readdirSync3(skillsDir, { withFileTypes: true });
|
|
17160
17259
|
for (const entry of entries) {
|
|
17161
17260
|
if (!entry.isDirectory())
|
|
17162
17261
|
continue;
|
|
17163
|
-
const skillDir =
|
|
17262
|
+
const skillDir = join9(skillsDir, entry.name);
|
|
17164
17263
|
const skillFiles = [];
|
|
17165
17264
|
collectSkillFiles(skillDir, "", skillFiles);
|
|
17166
17265
|
skills.push({ name: entry.name, files: skillFiles });
|
|
@@ -17191,12 +17290,12 @@ function collectSkillFiles(dir, prefix, out) {
|
|
|
17191
17290
|
try {
|
|
17192
17291
|
const entries = readdirSync3(dir, { withFileTypes: true });
|
|
17193
17292
|
for (const entry of entries) {
|
|
17194
|
-
const fullPath =
|
|
17293
|
+
const fullPath = join9(dir, entry.name);
|
|
17195
17294
|
const relPath = prefix ? `${prefix}/${entry.name}` : entry.name;
|
|
17196
17295
|
if (entry.isDirectory()) {
|
|
17197
17296
|
collectSkillFiles(fullPath, relPath, out);
|
|
17198
17297
|
} else {
|
|
17199
|
-
const stat =
|
|
17298
|
+
const stat = statSync5(fullPath);
|
|
17200
17299
|
if (stat.size > 1e6)
|
|
17201
17300
|
continue;
|
|
17202
17301
|
try {
|
|
@@ -17335,14 +17434,14 @@ function importRelations(db, relationsJsonl) {
|
|
|
17335
17434
|
}
|
|
17336
17435
|
// src/identity.ts
|
|
17337
17436
|
import { execFileSync as execFileSync2 } from "node:child_process";
|
|
17338
|
-
import { existsSync as existsSync11, readFileSync as readFileSync9, readdirSync as readdirSync4, realpathSync, statSync as
|
|
17339
|
-
import { homedir as
|
|
17340
|
-
import { dirname as
|
|
17437
|
+
import { existsSync as existsSync11, readFileSync as readFileSync9, readdirSync as readdirSync4, realpathSync, statSync as statSync6 } from "node:fs";
|
|
17438
|
+
import { homedir as homedir9 } from "node:os";
|
|
17439
|
+
import { dirname as dirname8, join as join12 } from "node:path";
|
|
17341
17440
|
|
|
17342
17441
|
// src/oh-my-pi.ts
|
|
17343
17442
|
import { existsSync as existsSync9, mkdirSync as mkdirSync6, readFileSync as readFileSync7, rmSync as rmSync5, writeFileSync as writeFileSync5 } from "node:fs";
|
|
17344
|
-
import { homedir as
|
|
17345
|
-
import { dirname as
|
|
17443
|
+
import { homedir as homedir7 } from "node:os";
|
|
17444
|
+
import { dirname as dirname6, join as join10, resolve as resolve5 } from "node:path";
|
|
17346
17445
|
function readTrimmed(env, name) {
|
|
17347
17446
|
const raw = env[name];
|
|
17348
17447
|
if (typeof raw !== "string")
|
|
@@ -17355,10 +17454,10 @@ function normalizePath(pathValue) {
|
|
|
17355
17454
|
}
|
|
17356
17455
|
function readConfigHome2(env) {
|
|
17357
17456
|
const configured = readTrimmed(env, "XDG_CONFIG_HOME");
|
|
17358
|
-
return configured ? normalizePath(configured) :
|
|
17457
|
+
return configured ? normalizePath(configured) : join10(homedir7(), ".config");
|
|
17359
17458
|
}
|
|
17360
17459
|
function getOhMyPiConfigPath(env = process.env) {
|
|
17361
|
-
return
|
|
17460
|
+
return join10(readConfigHome2(env), "signet", "oh-my-pi.json");
|
|
17362
17461
|
}
|
|
17363
17462
|
function readConfiguredOhMyPiAgentDir(env = process.env) {
|
|
17364
17463
|
const configPath = getOhMyPiConfigPath(env);
|
|
@@ -17378,10 +17477,10 @@ function resolveOhMyPiAgentDir(env = process.env) {
|
|
|
17378
17477
|
const configured = readTrimmed(env, "PI_CODING_AGENT_DIR");
|
|
17379
17478
|
if (configured)
|
|
17380
17479
|
return normalizePath(configured);
|
|
17381
|
-
return readConfiguredOhMyPiAgentDir(env) ??
|
|
17480
|
+
return readConfiguredOhMyPiAgentDir(env) ?? join10(homedir7(), ".omp", "agent");
|
|
17382
17481
|
}
|
|
17383
17482
|
function resolveOhMyPiExtensionsDir(env = process.env) {
|
|
17384
|
-
return
|
|
17483
|
+
return join10(resolveOhMyPiAgentDir(env), "extensions");
|
|
17385
17484
|
}
|
|
17386
17485
|
function listOhMyPiAgentDirCandidates(env = process.env) {
|
|
17387
17486
|
const candidates = new Set;
|
|
@@ -17391,7 +17490,7 @@ function listOhMyPiAgentDirCandidates(env = process.env) {
|
|
|
17391
17490
|
const persisted = readConfiguredOhMyPiAgentDir(env);
|
|
17392
17491
|
if (persisted)
|
|
17393
17492
|
candidates.add(persisted);
|
|
17394
|
-
candidates.add(
|
|
17493
|
+
candidates.add(join10(homedir7(), ".omp", "agent"));
|
|
17395
17494
|
return Array.from(candidates);
|
|
17396
17495
|
}
|
|
17397
17496
|
function writeConfiguredOhMyPiAgentDir(pathValue, env = process.env) {
|
|
@@ -17400,7 +17499,7 @@ function writeConfiguredOhMyPiAgentDir(pathValue, env = process.env) {
|
|
|
17400
17499
|
if (readConfiguredOhMyPiAgentDir(env) === agentDir && existsSync9(configPath)) {
|
|
17401
17500
|
return configPath;
|
|
17402
17501
|
}
|
|
17403
|
-
mkdirSync6(
|
|
17502
|
+
mkdirSync6(dirname6(configPath), { recursive: true });
|
|
17404
17503
|
const payload = {
|
|
17405
17504
|
version: 1,
|
|
17406
17505
|
agentDir,
|
|
@@ -17421,8 +17520,8 @@ function clearConfiguredOhMyPiAgentDir(env = process.env) {
|
|
|
17421
17520
|
|
|
17422
17521
|
// src/pi.ts
|
|
17423
17522
|
import { existsSync as existsSync10, mkdirSync as mkdirSync7, readFileSync as readFileSync8, rmSync as rmSync6, writeFileSync as writeFileSync6 } from "node:fs";
|
|
17424
|
-
import { homedir as
|
|
17425
|
-
import { dirname as
|
|
17523
|
+
import { homedir as homedir8 } from "node:os";
|
|
17524
|
+
import { dirname as dirname7, join as join11, resolve as resolve6 } from "node:path";
|
|
17426
17525
|
function readTrimmed2(env, name) {
|
|
17427
17526
|
const raw = env[name];
|
|
17428
17527
|
if (typeof raw !== "string")
|
|
@@ -17433,11 +17532,11 @@ function readTrimmed2(env, name) {
|
|
|
17433
17532
|
function expandUserPath(pathValue) {
|
|
17434
17533
|
const trimmed = pathValue.trim();
|
|
17435
17534
|
if (trimmed === "~")
|
|
17436
|
-
return
|
|
17535
|
+
return homedir8();
|
|
17437
17536
|
if (trimmed.startsWith("~/"))
|
|
17438
|
-
return
|
|
17537
|
+
return join11(homedir8(), trimmed.slice(2));
|
|
17439
17538
|
if (trimmed.startsWith("~"))
|
|
17440
|
-
return
|
|
17539
|
+
return join11(homedir8(), trimmed.slice(1));
|
|
17441
17540
|
return trimmed;
|
|
17442
17541
|
}
|
|
17443
17542
|
function normalizePath2(pathValue) {
|
|
@@ -17445,10 +17544,10 @@ function normalizePath2(pathValue) {
|
|
|
17445
17544
|
}
|
|
17446
17545
|
function readConfigHome3(env) {
|
|
17447
17546
|
const configured = readTrimmed2(env, "XDG_CONFIG_HOME");
|
|
17448
|
-
return configured ? normalizePath2(configured) :
|
|
17547
|
+
return configured ? normalizePath2(configured) : join11(homedir8(), ".config");
|
|
17449
17548
|
}
|
|
17450
17549
|
function getPiConfigPath(env = process.env) {
|
|
17451
|
-
return
|
|
17550
|
+
return join11(readConfigHome3(env), "signet", "pi.json");
|
|
17452
17551
|
}
|
|
17453
17552
|
function readConfiguredPiAgentDir(env = process.env) {
|
|
17454
17553
|
const configPath = getPiConfigPath(env);
|
|
@@ -17468,10 +17567,10 @@ function resolvePiAgentDir(env = process.env) {
|
|
|
17468
17567
|
const configured = readTrimmed2(env, "PI_CODING_AGENT_DIR");
|
|
17469
17568
|
if (configured)
|
|
17470
17569
|
return normalizePath2(configured);
|
|
17471
|
-
return readConfiguredPiAgentDir(env) ??
|
|
17570
|
+
return readConfiguredPiAgentDir(env) ?? join11(homedir8(), ".pi", "agent");
|
|
17472
17571
|
}
|
|
17473
17572
|
function resolvePiExtensionsDir(env = process.env) {
|
|
17474
|
-
return
|
|
17573
|
+
return join11(resolvePiAgentDir(env), "extensions");
|
|
17475
17574
|
}
|
|
17476
17575
|
function listPiAgentDirCandidates(env = process.env) {
|
|
17477
17576
|
const candidates = new Set;
|
|
@@ -17481,7 +17580,7 @@ function listPiAgentDirCandidates(env = process.env) {
|
|
|
17481
17580
|
const persisted = readConfiguredPiAgentDir(env);
|
|
17482
17581
|
if (persisted)
|
|
17483
17582
|
candidates.add(persisted);
|
|
17484
|
-
candidates.add(
|
|
17583
|
+
candidates.add(join11(homedir8(), ".pi", "agent"));
|
|
17485
17584
|
return Array.from(candidates);
|
|
17486
17585
|
}
|
|
17487
17586
|
function writeConfiguredPiAgentDir(pathValue, env = process.env) {
|
|
@@ -17490,7 +17589,7 @@ function writeConfiguredPiAgentDir(pathValue, env = process.env) {
|
|
|
17490
17589
|
if (readConfiguredPiAgentDir(env) === agentDir && existsSync10(configPath)) {
|
|
17491
17590
|
return configPath;
|
|
17492
17591
|
}
|
|
17493
|
-
mkdirSync7(
|
|
17592
|
+
mkdirSync7(dirname7(configPath), { recursive: true });
|
|
17494
17593
|
const payload = {
|
|
17495
17594
|
version: 1,
|
|
17496
17595
|
agentDir,
|
|
@@ -17519,7 +17618,7 @@ var PI_MANAGED_MARKER = "SIGNET_MANAGED_PI_EXTENSION";
|
|
|
17519
17618
|
function resolveAgentBasePath(agentName, workspaceDir) {
|
|
17520
17619
|
if (agentName === "default")
|
|
17521
17620
|
return workspaceDir;
|
|
17522
|
-
return
|
|
17621
|
+
return join12(workspaceDir, "agents", agentName);
|
|
17523
17622
|
}
|
|
17524
17623
|
var IDENTITY_MODES = ["managed", "off"];
|
|
17525
17624
|
var IDENTITY_FILES = {
|
|
@@ -17618,9 +17717,9 @@ var REQUIRED_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) =>
|
|
|
17618
17717
|
var OPTIONAL_IDENTITY_KEYS = Object.entries(IDENTITY_FILES).filter(([, spec]) => spec.optional).map(([key]) => key);
|
|
17619
17718
|
function isSignetManagedOhMyPiInstall() {
|
|
17620
17719
|
for (const agentDir of listOhMyPiAgentDirCandidates()) {
|
|
17621
|
-
const extensionsDir =
|
|
17720
|
+
const extensionsDir = join12(agentDir, "extensions");
|
|
17622
17721
|
for (const filename of [OH_MY_PI_MANAGED_EXTENSION_FILENAME, OH_MY_PI_LEGACY_MANAGED_EXTENSION_FILENAME]) {
|
|
17623
|
-
const extensionPath =
|
|
17722
|
+
const extensionPath = join12(extensionsDir, filename);
|
|
17624
17723
|
if (!existsSync11(extensionPath))
|
|
17625
17724
|
continue;
|
|
17626
17725
|
try {
|
|
@@ -17634,9 +17733,9 @@ function isSignetManagedOhMyPiInstall() {
|
|
|
17634
17733
|
}
|
|
17635
17734
|
function isSignetManagedPiInstall() {
|
|
17636
17735
|
for (const agentDir of listPiAgentDirCandidates()) {
|
|
17637
|
-
const extensionsDir =
|
|
17736
|
+
const extensionsDir = join12(agentDir, "extensions");
|
|
17638
17737
|
for (const filename of [PI_MANAGED_EXTENSION_FILENAME, PI_LEGACY_MANAGED_EXTENSION_FILENAME]) {
|
|
17639
|
-
const extensionPath =
|
|
17738
|
+
const extensionPath = join12(extensionsDir, filename);
|
|
17640
17739
|
if (!existsSync11(extensionPath))
|
|
17641
17740
|
continue;
|
|
17642
17741
|
try {
|
|
@@ -17649,31 +17748,31 @@ function isSignetManagedPiInstall() {
|
|
|
17649
17748
|
return false;
|
|
17650
17749
|
}
|
|
17651
17750
|
function userHome() {
|
|
17652
|
-
return process.env.HOME?.trim() ||
|
|
17751
|
+
return process.env.HOME?.trim() || homedir9();
|
|
17653
17752
|
}
|
|
17654
17753
|
function resolveHermesHomePath() {
|
|
17655
17754
|
const hermesHome = process.env.HERMES_HOME?.trim();
|
|
17656
|
-
return hermesHome ||
|
|
17755
|
+
return hermesHome || join12(userHome(), ".hermes");
|
|
17657
17756
|
}
|
|
17658
17757
|
function hermesAgentCandidateDirs() {
|
|
17659
17758
|
const home = userHome();
|
|
17660
17759
|
const hermesHome = resolveHermesHomePath();
|
|
17661
17760
|
return [
|
|
17662
17761
|
hermesHome,
|
|
17663
|
-
|
|
17664
|
-
|
|
17665
|
-
|
|
17666
|
-
|
|
17762
|
+
join12(hermesHome, "hermes-agent"),
|
|
17763
|
+
join12(home, "hermes-agent"),
|
|
17764
|
+
join12(home, ".local", "share", "hermes-agent"),
|
|
17765
|
+
join12(home, "src", "hermes-agent"),
|
|
17667
17766
|
"/opt/hermes-agent"
|
|
17668
17767
|
];
|
|
17669
17768
|
}
|
|
17670
17769
|
function resolveHermesRepoPath() {
|
|
17671
17770
|
const hermesRepo = process.env.HERMES_REPO?.trim();
|
|
17672
|
-
if (hermesRepo && existsSync11(
|
|
17771
|
+
if (hermesRepo && existsSync11(join12(hermesRepo, "plugins", "memory"))) {
|
|
17673
17772
|
return hermesRepo;
|
|
17674
17773
|
}
|
|
17675
17774
|
for (const base of hermesAgentCandidateDirs()) {
|
|
17676
|
-
if (existsSync11(
|
|
17775
|
+
if (existsSync11(join12(base, "plugins", "memory")))
|
|
17677
17776
|
return base;
|
|
17678
17777
|
}
|
|
17679
17778
|
try {
|
|
@@ -17683,18 +17782,18 @@ function resolveHermesRepoPath() {
|
|
|
17683
17782
|
timeout: 3000
|
|
17684
17783
|
}).trim();
|
|
17685
17784
|
if (hermesPath) {
|
|
17686
|
-
const repoDir =
|
|
17687
|
-
if (existsSync11(
|
|
17785
|
+
const repoDir = dirname8(realpathSync(hermesPath));
|
|
17786
|
+
if (existsSync11(join12(repoDir, "plugins", "memory")))
|
|
17688
17787
|
return repoDir;
|
|
17689
17788
|
}
|
|
17690
17789
|
} catch {}
|
|
17691
17790
|
return null;
|
|
17692
17791
|
}
|
|
17693
17792
|
function resolveHermesRepoPluginPath() {
|
|
17694
|
-
const pluginFile =
|
|
17793
|
+
const pluginFile = join12("plugins", "memory", "signet", "__init__.py");
|
|
17695
17794
|
const hermesRepo = resolveHermesRepoPath();
|
|
17696
17795
|
if (hermesRepo !== null) {
|
|
17697
|
-
const candidate =
|
|
17796
|
+
const candidate = join12(hermesRepo, pluginFile);
|
|
17698
17797
|
if (existsSync11(candidate))
|
|
17699
17798
|
return candidate;
|
|
17700
17799
|
}
|
|
@@ -17704,11 +17803,11 @@ function detectExistingSetup(basePath) {
|
|
|
17704
17803
|
const identityFileNames = Object.values(IDENTITY_FILES).map((spec) => spec.path);
|
|
17705
17804
|
const foundFiles = [];
|
|
17706
17805
|
for (const fileName of identityFileNames) {
|
|
17707
|
-
if (existsSync11(
|
|
17806
|
+
if (existsSync11(join12(basePath, fileName))) {
|
|
17708
17807
|
foundFiles.push(fileName);
|
|
17709
17808
|
}
|
|
17710
17809
|
}
|
|
17711
|
-
const memoryDir =
|
|
17810
|
+
const memoryDir = join12(basePath, "memory");
|
|
17712
17811
|
let memoryLogCount = 0;
|
|
17713
17812
|
if (existsSync11(memoryDir)) {
|
|
17714
17813
|
try {
|
|
@@ -17716,40 +17815,40 @@ function detectExistingSetup(basePath) {
|
|
|
17716
17815
|
memoryLogCount = files.filter((f) => f.endsWith(".md") && !f.startsWith("TEMPLATE")).length;
|
|
17717
17816
|
} catch {}
|
|
17718
17817
|
}
|
|
17719
|
-
const home =
|
|
17818
|
+
const home = homedir9();
|
|
17720
17819
|
return {
|
|
17721
17820
|
basePath,
|
|
17722
17821
|
agentsDir: existsSync11(basePath),
|
|
17723
|
-
agentYaml: existsSync11(
|
|
17724
|
-
agentsMd: existsSync11(
|
|
17725
|
-
configYaml: existsSync11(
|
|
17726
|
-
memoryDb: existsSync11(
|
|
17822
|
+
agentYaml: existsSync11(join12(basePath, "agent.yaml")),
|
|
17823
|
+
agentsMd: existsSync11(join12(basePath, "AGENTS.md")),
|
|
17824
|
+
configYaml: existsSync11(join12(basePath, "config.yaml")),
|
|
17825
|
+
memoryDb: existsSync11(join12(basePath, "memory", "memories.db")),
|
|
17727
17826
|
identityFiles: foundFiles,
|
|
17728
17827
|
hasMemoryDir: existsSync11(memoryDir),
|
|
17729
17828
|
memoryLogCount,
|
|
17730
|
-
hasClawdhub: existsSync11(
|
|
17731
|
-
hasClaudeSkills: existsSync11(
|
|
17829
|
+
hasClawdhub: existsSync11(join12(basePath, ".clawdhub", "lock.json")),
|
|
17830
|
+
hasClaudeSkills: existsSync11(join12(home, ".claude", "skills")),
|
|
17732
17831
|
harnesses: {
|
|
17733
|
-
claudeCode: existsSync11(
|
|
17734
|
-
openclaw: existsSync11(
|
|
17735
|
-
opencode: existsSync11(
|
|
17736
|
-
forge: existsSync11(
|
|
17737
|
-
codex: existsSync11(
|
|
17832
|
+
claudeCode: existsSync11(join12(home, ".claude", "settings.json")),
|
|
17833
|
+
openclaw: existsSync11(join12(home, ".openclaw", "openclaw.json")) || existsSync11(join12(home, ".clawdbot", "clawdbot.json")),
|
|
17834
|
+
opencode: existsSync11(join12(home, ".config", "opencode", "config.json")),
|
|
17835
|
+
forge: existsSync11(join12(home, ".forge", ".mcp.json")) || existsSync11(join12(home, "forge", ".mcp.json")) || existsSync11(join12(home, ".forge", ".forge.toml")) || existsSync11(join12(home, "forge", ".forge.toml")),
|
|
17836
|
+
codex: existsSync11(join12(home, ".codex", "config.toml")) || existsSync11(join12(home, ".config", "signet", "bin", "codex")),
|
|
17738
17837
|
ohMyPi: isSignetManagedOhMyPiInstall() || existsSync11(resolveOhMyPiAgentDir()),
|
|
17739
17838
|
pi: isSignetManagedPiInstall() || existsSync11(resolvePiAgentDir()),
|
|
17740
17839
|
hermesAgent: resolveHermesRepoPath() !== null,
|
|
17741
|
-
gemini: existsSync11(
|
|
17840
|
+
gemini: existsSync11(join12(home, ".gemini", "settings.json"))
|
|
17742
17841
|
}
|
|
17743
17842
|
};
|
|
17744
17843
|
}
|
|
17745
17844
|
async function loadIdentityFiles(basePath) {
|
|
17746
17845
|
const result = {};
|
|
17747
17846
|
for (const [key, spec] of Object.entries(IDENTITY_FILES)) {
|
|
17748
|
-
const filePath =
|
|
17847
|
+
const filePath = join12(basePath, spec.path);
|
|
17749
17848
|
if (existsSync11(filePath)) {
|
|
17750
17849
|
try {
|
|
17751
17850
|
const content = readFileSync9(filePath, "utf-8");
|
|
17752
|
-
const stats =
|
|
17851
|
+
const stats = statSync6(filePath);
|
|
17753
17852
|
result[key] = {
|
|
17754
17853
|
path: spec.path,
|
|
17755
17854
|
content,
|
|
@@ -17770,11 +17869,11 @@ async function loadIdentityFiles(basePath) {
|
|
|
17770
17869
|
function loadIdentityFilesSync(basePath) {
|
|
17771
17870
|
const result = {};
|
|
17772
17871
|
for (const [key, spec] of Object.entries(IDENTITY_FILES)) {
|
|
17773
|
-
const filePath =
|
|
17872
|
+
const filePath = join12(basePath, spec.path);
|
|
17774
17873
|
if (existsSync11(filePath)) {
|
|
17775
17874
|
try {
|
|
17776
17875
|
const content = readFileSync9(filePath, "utf-8");
|
|
17777
|
-
const stats =
|
|
17876
|
+
const stats = statSync6(filePath);
|
|
17778
17877
|
result[key] = {
|
|
17779
17878
|
path: spec.path,
|
|
17780
17879
|
content,
|
|
@@ -17798,7 +17897,7 @@ function hasValidIdentity(basePath) {
|
|
|
17798
17897
|
return true;
|
|
17799
17898
|
for (const key of REQUIRED_IDENTITY_KEYS) {
|
|
17800
17899
|
const spec = IDENTITY_FILES[key];
|
|
17801
|
-
if (!existsSync11(
|
|
17900
|
+
if (!existsSync11(join12(basePath, spec.path))) {
|
|
17802
17901
|
return false;
|
|
17803
17902
|
}
|
|
17804
17903
|
}
|
|
@@ -17811,7 +17910,7 @@ function getMissingIdentityFiles(basePath) {
|
|
|
17811
17910
|
const missing = [];
|
|
17812
17911
|
for (const key of REQUIRED_IDENTITY_KEYS) {
|
|
17813
17912
|
const spec = IDENTITY_FILES[key];
|
|
17814
|
-
if (!existsSync11(
|
|
17913
|
+
if (!existsSync11(join12(basePath, spec.path))) {
|
|
17815
17914
|
missing.push(spec.path);
|
|
17816
17915
|
}
|
|
17817
17916
|
}
|
|
@@ -17862,7 +17961,7 @@ function resolveIdentityModeFromConfig(config) {
|
|
|
17862
17961
|
return "managed";
|
|
17863
17962
|
}
|
|
17864
17963
|
function loadIdentityMode(agentsDir) {
|
|
17865
|
-
const agentYaml =
|
|
17964
|
+
const agentYaml = join12(agentsDir, "agent.yaml");
|
|
17866
17965
|
if (!existsSync11(agentYaml))
|
|
17867
17966
|
return "managed";
|
|
17868
17967
|
try {
|
|
@@ -17917,7 +18016,7 @@ function identityHeaderFor(path, role) {
|
|
|
17917
18016
|
return STATIC_HEADER_BY_FILE[filename] ?? role ?? filename.replace(/\.md$/i, "");
|
|
17918
18017
|
}
|
|
17919
18018
|
function resolveStartupIdentityFiles(agentsDir) {
|
|
17920
|
-
const agentYaml =
|
|
18019
|
+
const agentYaml = join12(agentsDir, "agent.yaml");
|
|
17921
18020
|
if (!existsSync11(agentYaml))
|
|
17922
18021
|
return STATIC_BUDGETS.map(({ file, budget }) => ({ path: file, budget }));
|
|
17923
18022
|
try {
|
|
@@ -17937,7 +18036,7 @@ function resolveStartupIdentityFiles(agentsDir) {
|
|
|
17937
18036
|
return STATIC_BUDGETS.map(({ file, budget }) => ({ path: file, budget }));
|
|
17938
18037
|
}
|
|
17939
18038
|
function resolveSpecialIdentityFiles(agentsDir, kind) {
|
|
17940
|
-
const agentYaml =
|
|
18039
|
+
const agentYaml = join12(agentsDir, "agent.yaml");
|
|
17941
18040
|
if (!existsSync11(agentYaml)) {
|
|
17942
18041
|
return IDENTITY_PRESETS.minimal.special.filter((entry) => entry.kind === kind);
|
|
17943
18042
|
}
|
|
@@ -17985,7 +18084,7 @@ function readStaticIdentity(agentsDir, status = STATIC_IDENTITY_OFFLINE_STATUS)
|
|
|
17985
18084
|
return null;
|
|
17986
18085
|
const parts = [];
|
|
17987
18086
|
for (const entry of resolveStartupIdentityFiles(agentsDir)) {
|
|
17988
|
-
const path =
|
|
18087
|
+
const path = join12(agentsDir, entry.path);
|
|
17989
18088
|
if (!existsSync11(path))
|
|
17990
18089
|
continue;
|
|
17991
18090
|
try {
|
|
@@ -18025,7 +18124,7 @@ function summarizeIdentity(identity) {
|
|
|
18025
18124
|
}
|
|
18026
18125
|
// src/agents.ts
|
|
18027
18126
|
import { existsSync as existsSync12, mkdirSync as mkdirSync8, readdirSync as readdirSync5, writeFileSync as writeFileSync7 } from "node:fs";
|
|
18028
|
-
import { join as
|
|
18127
|
+
import { join as join13 } from "node:path";
|
|
18029
18128
|
var IDENTITY_FILES2 = [
|
|
18030
18129
|
"AGENTS.md",
|
|
18031
18130
|
"SOUL.md",
|
|
@@ -18037,22 +18136,22 @@ var IDENTITY_FILES2 = [
|
|
|
18037
18136
|
"BOOTSTRAP.md"
|
|
18038
18137
|
];
|
|
18039
18138
|
function discoverAgents(agentsDir) {
|
|
18040
|
-
const root =
|
|
18139
|
+
const root = join13(agentsDir, "agents");
|
|
18041
18140
|
if (!existsSync12(root))
|
|
18042
18141
|
return [];
|
|
18043
18142
|
return readdirSync5(root, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => ({ name: d.name }));
|
|
18044
18143
|
}
|
|
18045
18144
|
function scaffoldAgent(name, agentsDir) {
|
|
18046
|
-
const dir =
|
|
18145
|
+
const dir = join13(agentsDir, "agents", name);
|
|
18047
18146
|
if (!existsSync12(dir))
|
|
18048
18147
|
mkdirSync8(dir, { recursive: true });
|
|
18049
|
-
const soul =
|
|
18148
|
+
const soul = join13(dir, "SOUL.md");
|
|
18050
18149
|
if (!existsSync12(soul))
|
|
18051
18150
|
writeFileSync7(soul, `# Soul
|
|
18052
18151
|
|
|
18053
18152
|
Add ${name}'s personality here.
|
|
18054
18153
|
`);
|
|
18055
|
-
const identity =
|
|
18154
|
+
const identity = join13(dir, "IDENTITY.md");
|
|
18056
18155
|
if (!existsSync12(identity))
|
|
18057
18156
|
writeFileSync7(identity, `# Identity
|
|
18058
18157
|
|
|
@@ -18061,10 +18160,10 @@ name: ${name}
|
|
|
18061
18160
|
}
|
|
18062
18161
|
function getAgentIdentityFiles(name, agentsDir) {
|
|
18063
18162
|
const result = {};
|
|
18064
|
-
const agentDir =
|
|
18163
|
+
const agentDir = join13(agentsDir, "agents", name);
|
|
18065
18164
|
for (const file of IDENTITY_FILES2) {
|
|
18066
|
-
const specific =
|
|
18067
|
-
const fallback =
|
|
18165
|
+
const specific = join13(agentDir, file);
|
|
18166
|
+
const fallback = join13(agentsDir, file);
|
|
18068
18167
|
if (existsSync12(specific))
|
|
18069
18168
|
result[file] = specific;
|
|
18070
18169
|
else if (existsSync12(fallback))
|
|
@@ -18115,13 +18214,13 @@ function resolveAgentSkills(agentDef, allSkills) {
|
|
|
18115
18214
|
return allSkills.filter((s) => allowed.has(s));
|
|
18116
18215
|
}
|
|
18117
18216
|
// src/skills.ts
|
|
18118
|
-
import { existsSync as existsSync14, mkdirSync as mkdirSync10, readFileSync as readFileSync10, readdirSync as readdirSync7, statSync as
|
|
18119
|
-
import { join as
|
|
18120
|
-
import { homedir as
|
|
18217
|
+
import { existsSync as existsSync14, mkdirSync as mkdirSync10, readFileSync as readFileSync10, readdirSync as readdirSync7, statSync as statSync7, writeFileSync as writeFileSync8 } from "node:fs";
|
|
18218
|
+
import { join as join15 } from "node:path";
|
|
18219
|
+
import { homedir as homedir10 } from "node:os";
|
|
18121
18220
|
|
|
18122
18221
|
// src/symlinks.ts
|
|
18123
18222
|
import { existsSync as existsSync13, lstatSync, mkdirSync as mkdirSync9, readdirSync as readdirSync6, symlinkSync, unlinkSync } from "node:fs";
|
|
18124
|
-
import { join as
|
|
18223
|
+
import { join as join14 } from "node:path";
|
|
18125
18224
|
function linkDirSync(target, path) {
|
|
18126
18225
|
const type = process.platform === "win32" ? "junction" : "dir";
|
|
18127
18226
|
symlinkSync(target, path, type);
|
|
@@ -18135,7 +18234,7 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
|
|
|
18135
18234
|
if (!existsSync13(sourceDir)) {
|
|
18136
18235
|
return result;
|
|
18137
18236
|
}
|
|
18138
|
-
const targetParent =
|
|
18237
|
+
const targetParent = join14(targetDir, "..");
|
|
18139
18238
|
if (!existsSync13(targetParent)) {
|
|
18140
18239
|
mkdirSync9(targetParent, { recursive: true });
|
|
18141
18240
|
}
|
|
@@ -18153,8 +18252,8 @@ function symlinkSkills(sourceDir, targetDir, options = {}) {
|
|
|
18153
18252
|
return result;
|
|
18154
18253
|
}
|
|
18155
18254
|
for (const entry of entries) {
|
|
18156
|
-
const srcPath =
|
|
18157
|
-
const destPath =
|
|
18255
|
+
const srcPath = join14(sourceDir, entry);
|
|
18256
|
+
const destPath = join14(targetDir, entry);
|
|
18158
18257
|
try {
|
|
18159
18258
|
const src = lstatSync(srcPath);
|
|
18160
18259
|
if (src.isSymbolicLink() || !src.isDirectory()) {
|
|
@@ -18225,9 +18324,9 @@ function symlinkDir(src, dest, options = {}) {
|
|
|
18225
18324
|
}
|
|
18226
18325
|
|
|
18227
18326
|
// src/skills.ts
|
|
18228
|
-
var home =
|
|
18327
|
+
var home = homedir10();
|
|
18229
18328
|
function loadClawdhubLock(basePath) {
|
|
18230
|
-
const lockPath =
|
|
18329
|
+
const lockPath = join15(basePath, ".clawdhub", "lock.json");
|
|
18231
18330
|
if (!existsSync14(lockPath)) {
|
|
18232
18331
|
return null;
|
|
18233
18332
|
}
|
|
@@ -18239,8 +18338,8 @@ function loadClawdhubLock(basePath) {
|
|
|
18239
18338
|
}
|
|
18240
18339
|
}
|
|
18241
18340
|
function symlinkClaudeSkills(basePath) {
|
|
18242
|
-
const claudeSkillsDir =
|
|
18243
|
-
const targetSkillsDir =
|
|
18341
|
+
const claudeSkillsDir = join15(home, ".claude", "skills");
|
|
18342
|
+
const targetSkillsDir = join15(basePath, "skills");
|
|
18244
18343
|
if (!existsSync14(claudeSkillsDir)) {
|
|
18245
18344
|
return { symlinked: 0, skills: [] };
|
|
18246
18345
|
}
|
|
@@ -18251,10 +18350,10 @@ function symlinkClaudeSkills(basePath) {
|
|
|
18251
18350
|
try {
|
|
18252
18351
|
const skills = readdirSync7(claudeSkillsDir);
|
|
18253
18352
|
for (const skill of skills) {
|
|
18254
|
-
const src =
|
|
18255
|
-
const dest =
|
|
18353
|
+
const src = join15(claudeSkillsDir, skill);
|
|
18354
|
+
const dest = join15(targetSkillsDir, skill);
|
|
18256
18355
|
try {
|
|
18257
|
-
if (!
|
|
18356
|
+
if (!statSync7(src).isDirectory())
|
|
18258
18357
|
continue;
|
|
18259
18358
|
} catch {
|
|
18260
18359
|
continue;
|
|
@@ -18267,8 +18366,8 @@ function symlinkClaudeSkills(basePath) {
|
|
|
18267
18366
|
return { symlinked: symlinkedSkills.length, skills: symlinkedSkills };
|
|
18268
18367
|
}
|
|
18269
18368
|
function writeRegistry(basePath, registry) {
|
|
18270
|
-
const skillsDir =
|
|
18271
|
-
const registryPath =
|
|
18369
|
+
const skillsDir = join15(basePath, "skills");
|
|
18370
|
+
const registryPath = join15(skillsDir, "registry.json");
|
|
18272
18371
|
if (!existsSync14(skillsDir)) {
|
|
18273
18372
|
mkdirSync10(skillsDir, { recursive: true });
|
|
18274
18373
|
}
|
|
@@ -18286,7 +18385,7 @@ async function unifySkills(basePath, config = {}) {
|
|
|
18286
18385
|
if (clawdhubLock) {
|
|
18287
18386
|
registry.sources.push({
|
|
18288
18387
|
type: "openclaw",
|
|
18289
|
-
path:
|
|
18388
|
+
path: join15(basePath, ".clawdhub")
|
|
18290
18389
|
});
|
|
18291
18390
|
const skillsData = clawdhubLock.skills || clawdhubLock;
|
|
18292
18391
|
for (const [name, data] of Object.entries(skillsData)) {
|
|
@@ -18308,10 +18407,10 @@ async function unifySkills(basePath, config = {}) {
|
|
|
18308
18407
|
}
|
|
18309
18408
|
}
|
|
18310
18409
|
const claudeResult = symlinkClaudeSkills(basePath);
|
|
18311
|
-
if (claudeResult.symlinked > 0 || existsSync14(
|
|
18410
|
+
if (claudeResult.symlinked > 0 || existsSync14(join15(home, ".claude", "skills"))) {
|
|
18312
18411
|
registry.sources.push({
|
|
18313
18412
|
type: "claude-code",
|
|
18314
|
-
path:
|
|
18413
|
+
path: join15(home, ".claude", "skills")
|
|
18315
18414
|
});
|
|
18316
18415
|
for (const skillName of claudeResult.skills) {
|
|
18317
18416
|
if (!registry.skills[skillName]) {
|
|
@@ -18319,7 +18418,7 @@ async function unifySkills(basePath, config = {}) {
|
|
|
18319
18418
|
name: skillName,
|
|
18320
18419
|
source: "claude-code",
|
|
18321
18420
|
symlinked: true,
|
|
18322
|
-
path:
|
|
18421
|
+
path: join15(basePath, "skills", skillName)
|
|
18323
18422
|
};
|
|
18324
18423
|
symlinked++;
|
|
18325
18424
|
} else {
|
|
@@ -18339,9 +18438,9 @@ async function unifySkills(basePath, config = {}) {
|
|
|
18339
18438
|
try {
|
|
18340
18439
|
const entries = readdirSync7(reg.path);
|
|
18341
18440
|
for (const entry of entries) {
|
|
18342
|
-
const entryPath =
|
|
18441
|
+
const entryPath = join15(reg.path, entry);
|
|
18343
18442
|
try {
|
|
18344
|
-
if (!
|
|
18443
|
+
if (!statSync7(entryPath).isDirectory())
|
|
18345
18444
|
continue;
|
|
18346
18445
|
} catch {
|
|
18347
18446
|
continue;
|
|
@@ -18351,9 +18450,9 @@ async function unifySkills(basePath, config = {}) {
|
|
|
18351
18450
|
continue;
|
|
18352
18451
|
}
|
|
18353
18452
|
if (reg.symlink) {
|
|
18354
|
-
const targetPath =
|
|
18355
|
-
if (!existsSync14(
|
|
18356
|
-
mkdirSync10(
|
|
18453
|
+
const targetPath = join15(basePath, "skills", entry);
|
|
18454
|
+
if (!existsSync14(join15(basePath, "skills"))) {
|
|
18455
|
+
mkdirSync10(join15(basePath, "skills"), { recursive: true });
|
|
18357
18456
|
}
|
|
18358
18457
|
if (symlinkDir(entryPath, targetPath)) {
|
|
18359
18458
|
registry.skills[entry] = {
|
|
@@ -18470,7 +18569,7 @@ function parseTranscriptSkills(content) {
|
|
|
18470
18569
|
}
|
|
18471
18570
|
// src/import.ts
|
|
18472
18571
|
import { existsSync as existsSync15, readFileSync as readFileSync11, readdirSync as readdirSync8 } from "node:fs";
|
|
18473
|
-
import { join as
|
|
18572
|
+
import { join as join16 } from "node:path";
|
|
18474
18573
|
var DATE_FILENAME_PATTERN = /^(\d{4}-\d{2}-\d{2})\.md$/;
|
|
18475
18574
|
function estimateTokens(text) {
|
|
18476
18575
|
return Math.ceil(text.length / 4);
|
|
@@ -18677,7 +18776,7 @@ function importMemoryLogs(basePath, db) {
|
|
|
18677
18776
|
skipped: 0,
|
|
18678
18777
|
errors: []
|
|
18679
18778
|
};
|
|
18680
|
-
const memoryDir =
|
|
18779
|
+
const memoryDir = join16(basePath, "memory");
|
|
18681
18780
|
if (!existsSync15(memoryDir)) {
|
|
18682
18781
|
result.errors.push(`Memory directory not found: ${memoryDir}`);
|
|
18683
18782
|
return result;
|
|
@@ -18691,7 +18790,7 @@ function importMemoryLogs(basePath, db) {
|
|
|
18691
18790
|
return result;
|
|
18692
18791
|
}
|
|
18693
18792
|
for (const file of files) {
|
|
18694
|
-
const filePath =
|
|
18793
|
+
const filePath = join16(memoryDir, file);
|
|
18695
18794
|
const date = extractDateFromFilename(file);
|
|
18696
18795
|
if (!date) {
|
|
18697
18796
|
result.skipped++;
|
|
@@ -19910,14 +20009,14 @@ function resolveRoutingDecision(config, request, runtimeSnapshot) {
|
|
|
19910
20009
|
}
|
|
19911
20010
|
// src/pipeline-pause.ts
|
|
19912
20011
|
import { existsSync as existsSync16, readFileSync as readFileSync12, writeFileSync as writeFileSync9 } from "node:fs";
|
|
19913
|
-
import { join as
|
|
20012
|
+
import { join as join17 } from "node:path";
|
|
19914
20013
|
var PIPELINE_CONFIG_FILES = ["agent.yaml", "AGENT.yaml", "config.yaml"];
|
|
19915
20014
|
function isRecord9(value) {
|
|
19916
20015
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
19917
20016
|
}
|
|
19918
20017
|
function findPipelineConfigFile(dir) {
|
|
19919
20018
|
for (const name of PIPELINE_CONFIG_FILES) {
|
|
19920
|
-
const file =
|
|
20019
|
+
const file = join17(dir, name);
|
|
19921
20020
|
if (existsSync16(file)) {
|
|
19922
20021
|
return file;
|
|
19923
20022
|
}
|
|
@@ -19983,11 +20082,11 @@ function setPipelinePaused(dir, paused) {
|
|
|
19983
20082
|
// src/package-manager.ts
|
|
19984
20083
|
import { spawnSync as spawnSync2 } from "node:child_process";
|
|
19985
20084
|
import { existsSync as existsSync17, readFileSync as readFileSync13 } from "node:fs";
|
|
19986
|
-
import { homedir as
|
|
19987
|
-
import { join as
|
|
20085
|
+
import { homedir as homedir12 } from "node:os";
|
|
20086
|
+
import { join as join18 } from "node:path";
|
|
19988
20087
|
|
|
19989
20088
|
// src/package-manager-path.ts
|
|
19990
|
-
import { homedir as
|
|
20089
|
+
import { homedir as homedir11 } from "node:os";
|
|
19991
20090
|
import { posix, win32 } from "node:path";
|
|
19992
20091
|
function normalizeExecutablePath(path, platform3) {
|
|
19993
20092
|
const normalized = (platform3 === "win32" ? win32 : posix).resolve(path).replaceAll("\\", "/");
|
|
@@ -20002,7 +20101,7 @@ function inferPackageManagerFromExecutable(executablePath, options = {}) {
|
|
|
20002
20101
|
if (!executablePath)
|
|
20003
20102
|
return null;
|
|
20004
20103
|
const env = options.env ?? process.env;
|
|
20005
|
-
const home2 = options.home ??
|
|
20104
|
+
const home2 = options.home ?? homedir11();
|
|
20006
20105
|
const platform3 = options.platform ?? process.platform;
|
|
20007
20106
|
const pathApi = platform3 === "win32" ? win32 : posix;
|
|
20008
20107
|
const candidate = normalizeExecutablePath(executablePath, platform3);
|
|
@@ -20083,7 +20182,7 @@ function pickFirstAvailable(available, order) {
|
|
|
20083
20182
|
function readConfiguredPackageManager(agentsDir) {
|
|
20084
20183
|
if (!agentsDir)
|
|
20085
20184
|
return null;
|
|
20086
|
-
const configPaths = [
|
|
20185
|
+
const configPaths = [join18(agentsDir, "agent.yaml"), join18(agentsDir, "AGENT.yaml"), join18(agentsDir, "config.yaml")];
|
|
20087
20186
|
for (const path of configPaths) {
|
|
20088
20187
|
if (!existsSync17(path))
|
|
20089
20188
|
continue;
|
|
@@ -20200,7 +20299,7 @@ function resolveGlobalPackagePath(family, packageName) {
|
|
|
20200
20299
|
try {
|
|
20201
20300
|
switch (family) {
|
|
20202
20301
|
case "bun": {
|
|
20203
|
-
const bunGlobal =
|
|
20302
|
+
const bunGlobal = join18(process.env.BUN_INSTALL ?? join18(homedir12(), ".bun"), "install", "global", "node_modules", packageName);
|
|
20204
20303
|
if (existsSync17(bunGlobal))
|
|
20205
20304
|
return bunGlobal;
|
|
20206
20305
|
return;
|
|
@@ -20212,7 +20311,7 @@ function resolveGlobalPackagePath(family, packageName) {
|
|
|
20212
20311
|
windowsHide: true
|
|
20213
20312
|
});
|
|
20214
20313
|
if (result.status === 0 && result.stdout.trim()) {
|
|
20215
|
-
const candidate =
|
|
20314
|
+
const candidate = join18(result.stdout.trim(), packageName);
|
|
20216
20315
|
if (existsSync17(candidate))
|
|
20217
20316
|
return candidate;
|
|
20218
20317
|
}
|
|
@@ -20225,7 +20324,7 @@ function resolveGlobalPackagePath(family, packageName) {
|
|
|
20225
20324
|
windowsHide: true
|
|
20226
20325
|
});
|
|
20227
20326
|
if (result.status === 0 && result.stdout.trim()) {
|
|
20228
|
-
const candidate =
|
|
20327
|
+
const candidate = join18(result.stdout.trim(), packageName);
|
|
20229
20328
|
if (existsSync17(candidate))
|
|
20230
20329
|
return candidate;
|
|
20231
20330
|
}
|
|
@@ -20245,12 +20344,12 @@ function resolveGlobalPackagePath(family, packageName) {
|
|
|
20245
20344
|
windowsHide: true
|
|
20246
20345
|
});
|
|
20247
20346
|
if (result.status === 0 && result.stdout.trim()) {
|
|
20248
|
-
const candidate =
|
|
20347
|
+
const candidate = join18(result.stdout.trim(), "node_modules", packageName);
|
|
20249
20348
|
if (existsSync17(candidate))
|
|
20250
20349
|
return candidate;
|
|
20251
20350
|
}
|
|
20252
20351
|
} else {
|
|
20253
|
-
const berryGlobal =
|
|
20352
|
+
const berryGlobal = join18(process.env.YARN_GLOBAL_FOLDER ?? join18(homedir12(), ".yarn", "berry", "global"), "node_modules", packageName);
|
|
20254
20353
|
if (existsSync17(berryGlobal))
|
|
20255
20354
|
return berryGlobal;
|
|
20256
20355
|
}
|
|
@@ -20275,7 +20374,7 @@ function getGlobalInstallCommand(family, packageName) {
|
|
|
20275
20374
|
}
|
|
20276
20375
|
// src/signet-installation.ts
|
|
20277
20376
|
import { existsSync as existsSync18, realpathSync as realpathSync2 } from "node:fs";
|
|
20278
|
-
import { homedir as
|
|
20377
|
+
import { homedir as homedir13 } from "node:os";
|
|
20279
20378
|
import { posix as posix2, win32 as win322 } from "node:path";
|
|
20280
20379
|
var PACKAGE_MANAGERS = ["npm", "pnpm", "bun", "yarn"];
|
|
20281
20380
|
function safeRealpath(path, platform3, realpath) {
|
|
@@ -20330,7 +20429,7 @@ function packageManagerEntryPointRemovalCommand(path, platform3) {
|
|
|
20330
20429
|
}
|
|
20331
20430
|
function detectSignetInstallations(options = {}) {
|
|
20332
20431
|
const env = options.env ?? process.env;
|
|
20333
|
-
const home2 = options.home ??
|
|
20432
|
+
const home2 = options.home ?? homedir13();
|
|
20334
20433
|
const platform3 = options.platform ?? process.platform;
|
|
20335
20434
|
const activeExecutablePath = options.execPath ?? process.execPath;
|
|
20336
20435
|
const pathExists = options.exists ?? existsSync18;
|
|
@@ -20464,6 +20563,7 @@ export {
|
|
|
20464
20563
|
resolveOhMyPiExtensionsDir,
|
|
20465
20564
|
resolveOhMyPiAgentDir,
|
|
20466
20565
|
resolveNetworkBinding,
|
|
20566
|
+
resolveLaunchdExecutable,
|
|
20467
20567
|
resolveIdentityModeFromConfig,
|
|
20468
20568
|
resolveHermesRepoPluginPath,
|
|
20469
20569
|
resolveHermesRepoPath,
|
|
@@ -20593,6 +20693,8 @@ export {
|
|
|
20593
20693
|
buildSignetBlock,
|
|
20594
20694
|
buildRememberRequestBody,
|
|
20595
20695
|
buildRecallRequestBody,
|
|
20696
|
+
buildLaunchdPlist,
|
|
20697
|
+
buildLaunchdEnvironment,
|
|
20596
20698
|
buildFtsMatchQuery,
|
|
20597
20699
|
buildArchitectureDoc,
|
|
20598
20700
|
buildAgentMemoryConfig,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare const CRITICAL_EXECUTABLES: readonly ["git", "bun", "npx", "python3"];
|
|
2
|
+
export interface LaunchdPlistInput {
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly programArguments: readonly string[];
|
|
5
|
+
readonly environment: Readonly<Record<string, string>>;
|
|
6
|
+
readonly workingDirectory: string;
|
|
7
|
+
readonly standardOutPath: string;
|
|
8
|
+
readonly standardErrorPath: string;
|
|
9
|
+
}
|
|
10
|
+
export interface LaunchdEnvironmentInput {
|
|
11
|
+
readonly environment?: Readonly<Record<string, string | undefined>>;
|
|
12
|
+
readonly pathValue?: string;
|
|
13
|
+
readonly home?: string;
|
|
14
|
+
readonly values?: Readonly<Record<string, string>>;
|
|
15
|
+
}
|
|
16
|
+
export declare function resolveLaunchdExecutable(name: (typeof CRITICAL_EXECUTABLES)[number], input?: Pick<LaunchdEnvironmentInput, "environment" | "pathValue" | "home">): string;
|
|
17
|
+
export declare function buildLaunchdEnvironment(input?: LaunchdEnvironmentInput): Record<string, string>;
|
|
18
|
+
export declare function buildLaunchdPlist(input: LaunchdPlistInput): string;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=launchd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launchd.d.ts","sourceRoot":"","sources":["../src/launchd.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,oBAAoB,2CAA4C,CAAC;AASvE,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACpE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAeD,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,EAC3C,KAAK,GAAE,IAAI,CAAC,uBAAuB,EAAE,aAAa,GAAG,WAAW,GAAG,MAAM,CAAM,GAC7E,MAAM,CAmBR;AAED,wBAAgB,uBAAuB,CAAC,KAAK,GAAE,uBAA4B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBnG;AAWD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAiClE"}
|