@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/agent-loader.js +2 -8
- package/agent-loader.js.map +2 -2
- package/main.js +105 -32
- package/main.js.map +3 -3
- package/package.json +3 -3
- package/resources/pi-agent/skills/docyrus-api-dev/SKILL.md +36 -1
- package/resources/pi-agent/skills/docyrus-api-doctor/SKILL.md +70 -0
- package/resources/pi-agent/skills/docyrus-api-doctor/references/checklist-details.md +588 -0
- package/resources/pi-agent/skills/docyrus-app-dev-react/SKILL.md +1 -1
- package/resources/pi-agent/skills/docyrus-app-dev-react/references/collections-and-patterns.md +0 -22
- package/resources/pi-agent/skills/docyrus-app-dev-react/references/component-selection-guide.md +5 -42
- package/resources/pi-agent/skills/docyrus-cli-app/SKILL.md +360 -0
- package/resources/pi-agent/skills/docyrus-cli-app/references/cli-manifest.md +627 -0
- package/resources/pi-agent/skills/docyrus-cli-app/references/list-query-examples.md +248 -0
- package/resources/pi-agent/skills/docyrus-data-grid-page-design/SKILL.md +3 -0
- package/resources/pi-agent/skills/docyrus-data-grid-page-design/references/hook-pages.md +47 -3
- package/server-loader.js +122 -54
- package/server-loader.js.map +3 -3
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.
|
|
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.
|
|
139367
|
-
"@mariozechner/pi-coding-agent": "0.
|
|
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
|
|
147863
|
-
return (
|
|
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(
|
|
147869
|
-
return (0, import_node_path14.join)(resolveKnowledgeCacheRoot(
|
|
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(
|
|
148047
|
-
const cacheRoot = resolveKnowledgeCacheRoot(
|
|
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(
|
|
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.
|
|
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.
|
|
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(
|
|
150308
|
-
vectorsDbPath: resolveKnowledgeVectorsDbPath(
|
|
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({
|