@docyrus/docyrus 0.0.68 → 0.0.70

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/main.js CHANGED
@@ -139349,7 +139349,7 @@ function buildInputSchema(args2, env2, options2) {
139349
139349
  // package.json
139350
139350
  var package_default = {
139351
139351
  name: "@docyrus/docyrus",
139352
- version: "0.0.68",
139352
+ version: "0.0.70",
139353
139353
  private: false,
139354
139354
  description: "Docyrus API CLI",
139355
139355
  main: "./main.js",
@@ -139363,8 +139363,8 @@ var package_default = {
139363
139363
  "@clack/prompts": "^0.11.0",
139364
139364
  "@ff-labs/fff-node": "0.6.4",
139365
139365
  "@hono/node-server": "^1.19.13",
139366
- "@mariozechner/pi-ai": "0.70.6",
139367
- "@mariozechner/pi-coding-agent": "0.70.6",
139366
+ "@mariozechner/pi-ai": "0.71.0",
139367
+ "@mariozechner/pi-coding-agent": "0.71.0",
139368
139368
  "@modelcontextprotocol/ext-apps": "^1.2.2",
139369
139369
  "@modelcontextprotocol/sdk": "^1.25.1",
139370
139370
  "@mozilla/readability": "^0.6.0",
@@ -140217,6 +140217,11 @@ var DEFAULT_LOGIN_SCOPES = [
140217
140217
  var DOCYRUS_SETTINGS_DIR_NAME = ".docyrus";
140218
140218
  var DOCYRUS_PI_DIR_NAME = "pi";
140219
140219
  var DOCYRUS_PI_AGENT_DIR_NAME = "agent";
140220
+ var DOCYRUS_TRACKED_DIR_NAME = "docyrus";
140221
+ var DOCYRUS_TRACKED_AGENT_DIR_NAME = "agent";
140222
+ var DOCYRUS_TRACKED_KNOWLEDGE_INDEX_DIR_NAME = "knowledge-index";
140223
+ var DOCYRUS_TRACKED_SESSIONS_DIR_NAME = "sessions";
140224
+ var DOCYRUS_TRACKED_SKILLS_DIR_NAME = "skills";
140220
140225
  var AUTH_DIR_PATH = (0, import_node_path3.join)((0, import_node_os5.homedir)(), DOCYRUS_SETTINGS_DIR_NAME);
140221
140226
  var AUTH_FILE_PATH = (0, import_node_path3.join)(AUTH_DIR_PATH, "auth.json");
140222
140227
  var CONFIG_FILE_PATH = (0, import_node_path3.join)(AUTH_DIR_PATH, "config.json");
@@ -140263,6 +140268,21 @@ function getLocalDocyrusSettingsRootPath(cwd = process.cwd()) {
140263
140268
  function resolveDocyrusPiAgentRootPath(settingsRootPath) {
140264
140269
  return (0, import_node_path3.join)(settingsRootPath, DOCYRUS_PI_DIR_NAME, DOCYRUS_PI_AGENT_DIR_NAME);
140265
140270
  }
140271
+ function getLocalDocyrusTrackedRootPath(cwd = process.cwd()) {
140272
+ return (0, import_node_path3.join)(cwd, DOCYRUS_TRACKED_DIR_NAME);
140273
+ }
140274
+ function resolveDocyrusTrackedAgentRootPath(cwd = process.cwd()) {
140275
+ return (0, import_node_path3.join)(getLocalDocyrusTrackedRootPath(cwd), DOCYRUS_TRACKED_AGENT_DIR_NAME);
140276
+ }
140277
+ function resolveDocyrusTrackedSessionsRootPath(cwd = process.cwd()) {
140278
+ return (0, import_node_path3.join)(resolveDocyrusTrackedAgentRootPath(cwd), DOCYRUS_TRACKED_SESSIONS_DIR_NAME);
140279
+ }
140280
+ function resolveDocyrusTrackedSkillsRootPath(cwd = process.cwd()) {
140281
+ return (0, import_node_path3.join)(resolveDocyrusTrackedAgentRootPath(cwd), DOCYRUS_TRACKED_SKILLS_DIR_NAME);
140282
+ }
140283
+ function resolveDocyrusKnowledgeIndexRootPath(cwd = process.cwd()) {
140284
+ return (0, import_node_path3.join)(getLocalDocyrusTrackedRootPath(cwd), DOCYRUS_TRACKED_KNOWLEDGE_INDEX_DIR_NAME);
140285
+ }
140266
140286
  function toDocyrusSettingsPaths(rootPath, scope) {
140267
140287
  return {
140268
140288
  scope,
@@ -147859,14 +147879,11 @@ function readJsonFile(filePath) {
147859
147879
  return null;
147860
147880
  }
147861
147881
  }
147862
- function hashWorkspace(projectRoot) {
147863
- return (0, import_node_crypto3.createHash)("sha256").update((0, import_node_path14.resolve)(projectRoot)).digest("hex").slice(0, 16);
147864
- }
147865
- function resolveKnowledgeCacheRoot(settingsRootPath, projectRoot) {
147866
- return (0, import_node_path14.join)(settingsRootPath, "knowledge", hashWorkspace(projectRoot));
147882
+ function resolveKnowledgeCacheRoot(projectRoot) {
147883
+ return resolveDocyrusKnowledgeIndexRootPath(projectRoot);
147867
147884
  }
147868
- function resolveKnowledgeVectorsDbPath(settingsRootPath, projectRoot) {
147869
- return (0, import_node_path14.join)(resolveKnowledgeCacheRoot(settingsRootPath, projectRoot), "vectors.db");
147885
+ function resolveKnowledgeVectorsDbPath(projectRoot) {
147886
+ return (0, import_node_path14.join)(resolveKnowledgeCacheRoot(projectRoot), "vectors.db");
147870
147887
  }
147871
147888
  function normalizeApiBase(apiBase) {
147872
147889
  const trimmed = apiBase.trim().replace(/\/+$/u, "");
@@ -148043,12 +148060,12 @@ function createKnowledgeDb(db) {
148043
148060
  }
148044
148061
  };
148045
148062
  }
148046
- function openKnowledgeDb(settingsRootPath, projectRoot) {
148047
- const cacheRoot = resolveKnowledgeCacheRoot(settingsRootPath, projectRoot);
148063
+ function openKnowledgeDb(projectRoot) {
148064
+ const cacheRoot = resolveKnowledgeCacheRoot(projectRoot);
148048
148065
  if (!(0, import_node_fs6.existsSync)(cacheRoot)) {
148049
148066
  (0, import_node_fs6.mkdirSync)(cacheRoot, { recursive: true });
148050
148067
  }
148051
- return createKnowledgeDb(new import_promise2.default(resolveKnowledgeVectorsDbPath(settingsRootPath, projectRoot), {}));
148068
+ return createKnowledgeDb(new import_promise2.default(resolveKnowledgeVectorsDbPath(projectRoot), {}));
148052
148069
  }
148053
148070
  async function ensureKnowledgeSchema(db, dimensions) {
148054
148071
  await db.execute(
@@ -148103,7 +148120,7 @@ function hashContent(text3) {
148103
148120
  return (0, import_node_crypto3.createHash)("sha256").update(text3).digest("hex");
148104
148121
  }
148105
148122
  async function indexKnowledgeSections(params) {
148106
- const db = openKnowledgeDb(params.settingsRootPath, params.projectRoot);
148123
+ const db = openKnowledgeDb(params.projectRoot);
148107
148124
  try {
148108
148125
  await ensureKnowledgeSchema(db, params.provider.dimensions);
148109
148126
  const sections = flattenSections(await loadAllSections(params.knowledgeDir));
@@ -148173,7 +148190,7 @@ async function indexKnowledgeSections(params) {
148173
148190
  }
148174
148191
  }
148175
148192
  async function searchKnowledgeSections(params) {
148176
- const db = openKnowledgeDb(params.settingsRootPath, params.projectRoot);
148193
+ const db = openKnowledgeDb(params.projectRoot);
148177
148194
  try {
148178
148195
  await ensureKnowledgeSchema(db, params.provider.dimensions);
148179
148196
  const [queryVector] = await embedTexts([params.query], params.provider);
@@ -149529,9 +149546,7 @@ function outputCursorStop(reason) {
149529
149546
  }));
149530
149547
  }
149531
149548
  async function searchAndExpandContext(params) {
149532
- const provider = await getKnowledgeSearchProviderInfo({
149533
- settingsRootPath: params.settingsRootPath
149534
- });
149549
+ const provider = await getKnowledgeSearchProviderInfo({});
149535
149550
  if (!provider.provider || !provider.info) {
149536
149551
  return null;
149537
149552
  }
@@ -149539,14 +149554,12 @@ async function searchAndExpandContext(params) {
149539
149554
  await indexKnowledgeSections({
149540
149555
  knowledgeDir: params.knowledgeDir,
149541
149556
  projectRoot: context.projectRoot,
149542
- settingsRootPath: params.settingsRootPath,
149543
149557
  provider: provider.provider
149544
149558
  });
149545
149559
  const matches = await searchKnowledgeSections({
149546
149560
  query: params.userPrompt,
149547
149561
  knowledgeDir: params.knowledgeDir,
149548
149562
  projectRoot: context.projectRoot,
149549
- settingsRootPath: params.settingsRootPath,
149550
149563
  limit: 5,
149551
149564
  provider: provider.provider
149552
149565
  });
@@ -149619,8 +149632,7 @@ async function handleUserPromptSubmit(params) {
149619
149632
  if (userPrompt) {
149620
149633
  const searchContext = await searchAndExpandContext({
149621
149634
  knowledgeDir: params.knowledgeDir,
149622
- userPrompt,
149623
- settingsRootPath: params.settingsRootPath
149635
+ userPrompt
149624
149636
  });
149625
149637
  if (searchContext) {
149626
149638
  parts2.push("", searchContext);
@@ -149639,7 +149651,6 @@ async function runKnowledgeHook(params) {
149639
149651
  if (params.agent === "claude" && params.event === "UserPromptSubmit") {
149640
149652
  await handleUserPromptSubmit({
149641
149653
  knowledgeDir,
149642
- settingsRootPath: params.settingsRootPath,
149643
149654
  commandPrefix: params.commandPrefix
149644
149655
  });
149645
149656
  return;
@@ -150035,7 +150046,6 @@ function createKnowledgeCli(dependencies) {
150035
150046
  const knowledgeContext = await resolveCliKnowledgeContext();
150036
150047
  const docyrusApi = await resolveDocyrusApiAuth(dependencies);
150037
150048
  const provider = await getKnowledgeSearchProviderInfo({
150038
- settingsRootPath: dependencies.settingsPaths.rootPath,
150039
150049
  docyrusApi
150040
150050
  });
150041
150051
  if (!provider.provider || !provider.info) {
@@ -150044,7 +150054,6 @@ function createKnowledgeCli(dependencies) {
150044
150054
  const indexStats = await indexKnowledgeSections({
150045
150055
  knowledgeDir: knowledgeContext.knowledgeDir,
150046
150056
  projectRoot: knowledgeContext.projectRoot,
150047
- settingsRootPath: dependencies.settingsPaths.rootPath,
150048
150057
  provider: provider.provider
150049
150058
  });
150050
150059
  if (!context.args.query) {
@@ -150064,7 +150073,6 @@ function createKnowledgeCli(dependencies) {
150064
150073
  query: context.args.query,
150065
150074
  knowledgeDir: knowledgeContext.knowledgeDir,
150066
150075
  projectRoot: knowledgeContext.projectRoot,
150067
- settingsRootPath: dependencies.settingsPaths.rootPath,
150068
150076
  limit: context.options.limit,
150069
150077
  provider: provider.provider
150070
150078
  });
@@ -150295,7 +150303,6 @@ function createKnowledgeCli(dependencies) {
150295
150303
  const knowledgeDir = findKnowledgeDir();
150296
150304
  const docyrusApi = await resolveDocyrusApiAuth(dependencies);
150297
150305
  const provider = await getKnowledgeSearchProviderInfo({
150298
- settingsRootPath: dependencies.settingsPaths.rootPath,
150299
150306
  docyrusApi
150300
150307
  });
150301
150308
  const payload = {
@@ -150304,8 +150311,8 @@ function createKnowledgeCli(dependencies) {
150304
150311
  knowledgeDir,
150305
150312
  settingsScope: dependencies.settingsPaths.scope,
150306
150313
  settingsRootPath: dependencies.settingsPaths.rootPath,
150307
- cacheRoot: resolveKnowledgeCacheRoot(dependencies.settingsPaths.rootPath, projectRoot),
150308
- vectorsDbPath: resolveKnowledgeVectorsDbPath(dependencies.settingsPaths.rootPath, projectRoot),
150314
+ cacheRoot: resolveKnowledgeCacheRoot(projectRoot),
150315
+ vectorsDbPath: resolveKnowledgeVectorsDbPath(projectRoot),
150309
150316
  provider: provider.info,
150310
150317
  providerError: provider.error
150311
150318
  };
@@ -150335,7 +150342,6 @@ function createKnowledgeCli(dependencies) {
150335
150342
  await runKnowledgeHook({
150336
150343
  agent: context.args.agent,
150337
150344
  event: context.args.event,
150338
- settingsRootPath: dependencies.settingsPaths.rootPath,
150339
150345
  commandPrefix: getCommandPrefix(dependencies.settingsPaths.scope)
150340
150346
  });
150341
150347
  return {};
@@ -154012,6 +154018,30 @@ async function migrateLegacyPiAgentDir(params) {
154012
154018
  }
154013
154019
  return { migrated: true, copiedFiles };
154014
154020
  }
154021
+ async function notifyLegacyTrackedSessionLocation(params) {
154022
+ const log = params.log ?? ((message) => process.stderr.write(`${message}
154023
+ `));
154024
+ try {
154025
+ const legacy = await safeResolveRealPath(params.legacyTrackedSessionsRootPath);
154026
+ if (!legacy) {
154027
+ return;
154028
+ }
154029
+ const legacyEntries = await (0, import_promises22.readdir)(legacy, { withFileTypes: true }).catch(() => []);
154030
+ const hasLegacy = legacyEntries.some((entry) => entry.isDirectory());
154031
+ if (!hasLegacy) {
154032
+ return;
154033
+ }
154034
+ const tracked = await safeResolveRealPath(params.trackedSessionsRootPath);
154035
+ if (tracked) {
154036
+ const trackedEntries = await (0, import_promises22.readdir)(tracked, { withFileTypes: true }).catch(() => []);
154037
+ if (trackedEntries.some((entry) => entry.isDirectory())) {
154038
+ return;
154039
+ }
154040
+ }
154041
+ log(`pi sessions now write to ${params.trackedSessionsRootPath}; legacy transcripts remain in ${params.legacyTrackedSessionsRootPath}.`);
154042
+ } catch {
154043
+ }
154044
+ }
154015
154045
 
154016
154046
  // src/services/soulRegistry.ts
154017
154047
  var import_promises23 = require("node:fs/promises");
@@ -154094,8 +154124,6 @@ var DOCYRUS_EXTERNAL_SKILL_AGENT_IDS = [
154094
154124
  "claude-code",
154095
154125
  "codex",
154096
154126
  "github-copilot",
154097
- "gemini-cli",
154098
- "antigravity",
154099
154127
  "windsurf"
154100
154128
  ];
154101
154129
  var DOCYRUS_EXTERNAL_SKILL_MARKER_FILE = ".docyrus-external-skills-installed.json";
@@ -154316,6 +154344,27 @@ async function syncPackagedSkills(params) {
154316
154344
  });
154317
154345
  }));
154318
154346
  }
154347
+ async function syncTrackedSkills(params) {
154348
+ if (!(0, import_node_fs17.existsSync)(params.trackedSkillsRoot)) {
154349
+ return;
154350
+ }
154351
+ let entries;
154352
+ try {
154353
+ entries = await (0, import_promises24.readdir)(params.trackedSkillsRoot, { withFileTypes: true });
154354
+ } catch {
154355
+ return;
154356
+ }
154357
+ const targetSkillsRoot = (0, import_node_path30.join)(params.agentRootPath, "skills");
154358
+ await (0, import_promises24.mkdir)(targetSkillsRoot, { recursive: true, mode: 448 });
154359
+ await Promise.all(entries.filter((entry) => entry.isDirectory()).map(async (entry) => {
154360
+ const destination = (0, import_node_path30.join)(targetSkillsRoot, entry.name);
154361
+ await (0, import_promises24.rm)(destination, { recursive: true, force: true });
154362
+ await (0, import_promises24.cp)((0, import_node_path30.join)(params.trackedSkillsRoot, entry.name), destination, {
154363
+ recursive: true,
154364
+ force: true
154365
+ });
154366
+ }));
154367
+ }
154319
154368
  async function writeRuntimeSkill(params) {
154320
154369
  const runtimeSkillDir = (0, import_node_path30.join)(params.agentRootPath, "skills", "docyrus-runtime-context");
154321
154370
  await (0, import_promises24.mkdir)(runtimeSkillDir, {
@@ -154703,6 +154752,12 @@ function createPiAgentLauncher(options2) {
154703
154752
  request,
154704
154753
  stdinIsTTY
154705
154754
  });
154755
+ if (!request.sessionDir) {
154756
+ request = {
154757
+ ...request,
154758
+ sessionDir: resolveDocyrusTrackedSessionsRootPath(cwd)
154759
+ };
154760
+ }
154706
154761
  const spinner = createSpinner("Initializing...");
154707
154762
  const activeEnvironment = await options2.environmentConfigService.getActiveEnvironment();
154708
154763
  const activeProfile = await options2.authStore.getActiveProfile(activeEnvironment.apiBaseUrl);
@@ -154713,12 +154768,20 @@ function createPiAgentLauncher(options2) {
154713
154768
  globalRootPath: agentRootPath
154714
154769
  }).catch(() => {
154715
154770
  });
154771
+ await notifyLegacyTrackedSessionLocation({
154772
+ legacyTrackedSessionsRootPath: (0, import_node_path30.join)(resolveDocyrusPiAgentRootPath(settingsRootPath), "sessions"),
154773
+ trackedSessionsRootPath: resolveDocyrusTrackedSessionsRootPath(cwd)
154774
+ });
154716
154775
  const resourceRoot = resolveResourceRoot({ cwd });
154717
154776
  spinner.update("Syncing skills...");
154718
154777
  await syncPackagedSkills({
154719
154778
  resourceRoot,
154720
154779
  agentRootPath
154721
154780
  });
154781
+ await syncTrackedSkills({
154782
+ trackedSkillsRoot: resolveDocyrusTrackedSkillsRootPath(cwd),
154783
+ agentRootPath
154784
+ });
154722
154785
  await writeRuntimeSkill({
154723
154786
  agentRootPath,
154724
154787
  content: createPiAgentRuntimeSkill({
@@ -154854,6 +154917,12 @@ function createPiAgentServerLauncher(options2) {
154854
154917
  const cwd = options2.cwd ?? process.cwd();
154855
154918
  const resolveAgentRootPath = options2.resolveAgentRootPathFn ?? getDocyrusPiAgentGlobalRootPath;
154856
154919
  return async (request) => {
154920
+ if (!request.sessionDir) {
154921
+ request = {
154922
+ ...request,
154923
+ sessionDir: resolveDocyrusTrackedSessionsRootPath(cwd)
154924
+ };
154925
+ }
154857
154926
  const spinner = createSpinner("Initializing...");
154858
154927
  const activeEnvironment = await options2.environmentConfigService.getActiveEnvironment();
154859
154928
  const activeProfile = await options2.authStore.getActiveProfile(activeEnvironment.apiBaseUrl);
@@ -154870,6 +154939,10 @@ function createPiAgentServerLauncher(options2) {
154870
154939
  resourceRoot,
154871
154940
  agentRootPath
154872
154941
  });
154942
+ await syncTrackedSkills({
154943
+ trackedSkillsRoot: resolveDocyrusTrackedSkillsRootPath(cwd),
154944
+ agentRootPath
154945
+ });
154873
154946
  await writeRuntimeSkill({
154874
154947
  agentRootPath,
154875
154948
  content: createPiAgentRuntimeSkill({