@polpo-ai/core 0.3.3 → 0.3.5
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/agent-prompt.d.ts +19 -0
- package/dist/agent-prompt.d.ts.map +1 -0
- package/dist/agent-prompt.js +76 -0
- package/dist/agent-prompt.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/model-spec.d.ts +30 -0
- package/dist/model-spec.d.ts.map +1 -0
- package/dist/model-spec.js +107 -0
- package/dist/model-spec.js.map +1 -0
- package/dist/skills-reader.d.ts +64 -0
- package/dist/skills-reader.d.ts.map +1 -0
- package/dist/skills-reader.js +242 -0
- package/dist/skills-reader.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the identity/personality section of an agent's system prompt.
|
|
3
|
+
*
|
|
4
|
+
* Pure logic — no runtime dependencies (Node.js, pi-ai, filesystem).
|
|
5
|
+
* Used by both self-hosted (src/adapters/engine.ts) and cloud (handler.ts).
|
|
6
|
+
*
|
|
7
|
+
* This builds the "who you are" part of the prompt. Shell-specific concerns
|
|
8
|
+
* (skills, tool descriptions, cwd, sandbox paths) are appended by the caller.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentConfig } from "./types.js";
|
|
11
|
+
/**
|
|
12
|
+
* Build the core system prompt for an agent: preamble + identity + responsibilities +
|
|
13
|
+
* communication style + personality + hierarchy + custom systemPrompt.
|
|
14
|
+
*
|
|
15
|
+
* Does NOT include: skills, tool descriptions, cwd, output dir, sandbox paths.
|
|
16
|
+
* Those are shell-specific and appended by the caller.
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildAgentSystemPrompt(agent: AgentConfig): string;
|
|
19
|
+
//# sourceMappingURL=agent-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAkEjE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the core system prompt for an agent: preamble + identity + responsibilities +
|
|
3
|
+
* communication style + personality + hierarchy + custom systemPrompt.
|
|
4
|
+
*
|
|
5
|
+
* Does NOT include: skills, tool descriptions, cwd, output dir, sandbox paths.
|
|
6
|
+
* Those are shell-specific and appended by the caller.
|
|
7
|
+
*/
|
|
8
|
+
export function buildAgentSystemPrompt(agent) {
|
|
9
|
+
const parts = [
|
|
10
|
+
`You are ${agent.name}, a ${agent.role ?? "helpful assistant"} managed by Polpo, an AI agent orchestrator.`,
|
|
11
|
+
"Complete your assigned task autonomously. Make reasonable decisions and proceed without asking questions.",
|
|
12
|
+
"",
|
|
13
|
+
"Your task description may include context tags:",
|
|
14
|
+
"- <shared-memory> — persistent shared knowledge from previous sessions, visible to all agents",
|
|
15
|
+
"- <agent-memory> — your private memory from previous sessions (specific to you)",
|
|
16
|
+
"- <system-context> — standing instructions from the project owner",
|
|
17
|
+
"- <plan-context> — the plan goal and other tasks being worked on in parallel",
|
|
18
|
+
"Use this context to make better decisions, but focus on YOUR assigned task.",
|
|
19
|
+
];
|
|
20
|
+
// Identity block
|
|
21
|
+
if (agent.identity) {
|
|
22
|
+
parts.push("", "## Your Identity");
|
|
23
|
+
if (agent.identity.displayName)
|
|
24
|
+
parts.push(`- Name: ${agent.identity.displayName}`);
|
|
25
|
+
if (agent.identity.title)
|
|
26
|
+
parts.push(`- Title: ${agent.identity.title}`);
|
|
27
|
+
if (agent.identity.company)
|
|
28
|
+
parts.push(`- Company: ${agent.identity.company}`);
|
|
29
|
+
if (agent.identity.email)
|
|
30
|
+
parts.push(`- Email: ${agent.identity.email}`);
|
|
31
|
+
if (agent.identity.bio)
|
|
32
|
+
parts.push(`- Bio: ${agent.identity.bio}`);
|
|
33
|
+
if (agent.identity.timezone)
|
|
34
|
+
parts.push(`- Timezone: ${agent.identity.timezone}`);
|
|
35
|
+
if (agent.identity.socials && Object.keys(agent.identity.socials).length > 0) {
|
|
36
|
+
const entries = Object.entries(agent.identity.socials).map(([k, v]) => `${k}: ${v}`).join(", ");
|
|
37
|
+
parts.push(`- Socials: ${entries}`);
|
|
38
|
+
}
|
|
39
|
+
parts.push("Use this identity when communicating externally (emails, messages, etc.).");
|
|
40
|
+
}
|
|
41
|
+
// Responsibilities
|
|
42
|
+
if (agent.identity?.responsibilities?.length) {
|
|
43
|
+
parts.push("", "## Your Responsibilities");
|
|
44
|
+
for (const r of agent.identity.responsibilities) {
|
|
45
|
+
if (typeof r === "string") {
|
|
46
|
+
parts.push(`- ${r}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const prio = r.priority ? ` [${r.priority}]` : "";
|
|
50
|
+
parts.push(`- **${r.area}**${prio}: ${r.description}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
parts.push("Focus on these responsibilities. Escalate if something falls outside your scope.");
|
|
54
|
+
}
|
|
55
|
+
// Communication tone
|
|
56
|
+
if (agent.identity?.tone) {
|
|
57
|
+
parts.push("", "## Communication Style");
|
|
58
|
+
parts.push(agent.identity.tone);
|
|
59
|
+
}
|
|
60
|
+
// Personality
|
|
61
|
+
if (agent.identity?.personality) {
|
|
62
|
+
parts.push("", "## Personality");
|
|
63
|
+
parts.push(agent.identity.personality);
|
|
64
|
+
}
|
|
65
|
+
// Hierarchy
|
|
66
|
+
if (agent.reportsTo) {
|
|
67
|
+
parts.push("", "## Organization");
|
|
68
|
+
parts.push(`You report to: ${agent.reportsTo}`);
|
|
69
|
+
parts.push("If you encounter blockers or decisions outside your authority, escalate to your manager.");
|
|
70
|
+
}
|
|
71
|
+
// Custom system prompt
|
|
72
|
+
if (agent.systemPrompt)
|
|
73
|
+
parts.push("", agent.systemPrompt);
|
|
74
|
+
return parts.join("\n");
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=agent-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export type { PlaybookStore } from "./playbook-store.js";
|
|
|
21
21
|
export type { FileSystem, FileEntry, FileStat } from "./filesystem.js";
|
|
22
22
|
export type { Shell, ShellOptions, ShellResult } from "./shell.js";
|
|
23
23
|
export type { Spawner, SpawnResult } from "./spawner.js";
|
|
24
|
+
export { buildAgentSystemPrompt } from "./agent-prompt.js";
|
|
25
|
+
export { discoverSkills, loadAgentSkills, listSkillsWithAssignments, buildSkillPrompt, parseSkillFrontmatter, extractSkillBody, } from "./skills-reader.js";
|
|
26
|
+
export type { SkillInfo, LoadedSkill, SkillWithAssignment, SkillIndex, SkillIndexEntry } from "./skills-reader.js";
|
|
27
|
+
export { parseModelSpec, PROVIDER_ENV_MAP } from "./model-spec.js";
|
|
28
|
+
export type { ParsedModelSpec } from "./model-spec.js";
|
|
24
29
|
export type { EventBus } from "./event-bus.js";
|
|
25
30
|
export type { CheckpointStore, CheckpointState } from "./checkpoint-store.js";
|
|
26
31
|
export type { DelayStore, DelayState } from "./delay-store.js";
|
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":"AACA,cAAc,YAAY,CAAC;AAG3B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGjG,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnH,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACzG,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGnE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAG3D,OAAO,EACL,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAC1D,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,GAC1D,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGnH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAG5E,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGnG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAGzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,kBAAkB,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5N,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC5I,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACzJ,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,12 @@ export * from "./schemas.js";
|
|
|
9
9
|
// ── Hooks ────────────────────────────────────────────────────────────────
|
|
10
10
|
export { HookRegistry } from "./hooks.js";
|
|
11
11
|
export { agentMemoryScope } from "./memory-store.js";
|
|
12
|
+
// ── Agent Prompt Builder ────────────────────────────────────────────────
|
|
13
|
+
export { buildAgentSystemPrompt } from "./agent-prompt.js";
|
|
14
|
+
// ── Skills Reader (async, FileSystem-based) ────────────────────────────
|
|
15
|
+
export { discoverSkills, loadAgentSkills, listSkillsWithAssignments, buildSkillPrompt, parseSkillFrontmatter, extractSkillBody, } from "./skills-reader.js";
|
|
16
|
+
// ── Model Spec Parsing ─────────────────────────────────────────────────
|
|
17
|
+
export { parseModelSpec, PROVIDER_ENV_MAP } from "./model-spec.js";
|
|
12
18
|
// ── Cron (pure) ─────────────────────────────────────────────────────────
|
|
13
19
|
export { parseCron, matchesCron, nextCronOccurrence, isCronExpression } from "./cron.js";
|
|
14
20
|
// ── Core Managers ───────────────────────────────────────────────────────
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,cAAc,YAAY,CAAC;AAE3B,4EAA4E;AAC5E,cAAc,aAAa,CAAC;AAE5B,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,4EAA4E;AAC5E,cAAc,cAAc,CAAC;AAE7B,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,cAAc,YAAY,CAAC;AAE3B,4EAA4E;AAC5E,cAAc,aAAa,CAAC;AAE5B,4EAA4E;AAC5E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,4EAA4E;AAC5E,cAAc,cAAc,CAAC;AAE7B,4EAA4E;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAkBrD,2EAA2E;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,0EAA0E;AAC1E,OAAO,EACL,cAAc,EAAE,eAAe,EAAE,yBAAyB,EAC1D,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,GAC1D,MAAM,oBAAoB,CAAC;AAG5B,0EAA0E;AAC1E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAcnE,2EAA2E;AAC3E,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEzF,2EAA2E;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,2EAA2E;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2EAA2E;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAW9D,4EAA4E;AAC5E,OAAO,EAAE,sBAAsB,EAAwB,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,KAAK,EAAoE,MAAM,yBAAyB,CAAC;AAC5N,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAK/E,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAA8E,MAAM,eAAe,CAAC;AAC5I,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC5H,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,EAA+B,MAAM,yBAAyB,CAAC;AACzJ,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model spec parsing — pure logic, no runtime dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Parses "provider:model" or "provider/model" strings into { provider, modelId }.
|
|
5
|
+
* Auto-infers provider from well-known model prefixes.
|
|
6
|
+
* Used by both self-hosted (src/llm/pi-client.ts) and cloud (handler.ts).
|
|
7
|
+
*/
|
|
8
|
+
export interface ParsedModelSpec {
|
|
9
|
+
provider: string;
|
|
10
|
+
modelId: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse a model spec string into { provider, modelId }.
|
|
14
|
+
*
|
|
15
|
+
* Supported formats:
|
|
16
|
+
* "provider:model" — explicit (e.g. "anthropic:claude-opus-4-6")
|
|
17
|
+
* "provider/model" — slash format (e.g. "anthropic/claude-opus-4-6")
|
|
18
|
+
* "model-id" — auto-inferred from prefix map
|
|
19
|
+
*
|
|
20
|
+
* @param spec - Model spec string. Falls back to `fallback` if not provided.
|
|
21
|
+
* @param fallback - Optional fallback spec (e.g. from env var or config).
|
|
22
|
+
* @throws If no spec is available or provider cannot be inferred.
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseModelSpec(spec?: string, fallback?: string): ParsedModelSpec;
|
|
25
|
+
/**
|
|
26
|
+
* Map of known providers → environment variable name for API keys.
|
|
27
|
+
* Used by both self-hosted and cloud for BYOK resolution.
|
|
28
|
+
*/
|
|
29
|
+
export declare const PROVIDER_ENV_MAP: Record<string, string>;
|
|
30
|
+
//# sourceMappingURL=model-spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-spec.d.ts","sourceRoot":"","sources":["../src/model-spec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AA6BD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,eAAe,CAuChF;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwBnD,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model spec parsing — pure logic, no runtime dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Parses "provider:model" or "provider/model" strings into { provider, modelId }.
|
|
5
|
+
* Auto-infers provider from well-known model prefixes.
|
|
6
|
+
* Used by both self-hosted (src/llm/pi-client.ts) and cloud (handler.ts).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Well-known model prefixes → provider mapping.
|
|
10
|
+
* Used for auto-inference when the spec doesn't include "provider:".
|
|
11
|
+
*/
|
|
12
|
+
const PREFIX_MAP = [
|
|
13
|
+
// Anthropic
|
|
14
|
+
["claude-", "anthropic"],
|
|
15
|
+
// OpenAI
|
|
16
|
+
["gpt-", "openai"],
|
|
17
|
+
["o1-", "openai"],
|
|
18
|
+
["o3-", "openai"],
|
|
19
|
+
["o4-", "openai"],
|
|
20
|
+
["chatgpt-", "openai"],
|
|
21
|
+
["codex-", "openai"],
|
|
22
|
+
// Google
|
|
23
|
+
["gemini-", "google"],
|
|
24
|
+
// Mistral
|
|
25
|
+
["mistral-", "mistral"],
|
|
26
|
+
["codestral-", "mistral"],
|
|
27
|
+
["devstral-", "mistral"],
|
|
28
|
+
// Groq
|
|
29
|
+
["llama-", "groq"],
|
|
30
|
+
["llama3", "groq"],
|
|
31
|
+
// xAI
|
|
32
|
+
["grok-", "xai"],
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Parse a model spec string into { provider, modelId }.
|
|
36
|
+
*
|
|
37
|
+
* Supported formats:
|
|
38
|
+
* "provider:model" — explicit (e.g. "anthropic:claude-opus-4-6")
|
|
39
|
+
* "provider/model" — slash format (e.g. "anthropic/claude-opus-4-6")
|
|
40
|
+
* "model-id" — auto-inferred from prefix map
|
|
41
|
+
*
|
|
42
|
+
* @param spec - Model spec string. Falls back to `fallback` if not provided.
|
|
43
|
+
* @param fallback - Optional fallback spec (e.g. from env var or config).
|
|
44
|
+
* @throws If no spec is available or provider cannot be inferred.
|
|
45
|
+
*/
|
|
46
|
+
export function parseModelSpec(spec, fallback) {
|
|
47
|
+
const s = spec || fallback;
|
|
48
|
+
if (!s) {
|
|
49
|
+
throw new Error('No model configured. Use "provider:model" format (e.g. "anthropic:claude-sonnet-4-5").');
|
|
50
|
+
}
|
|
51
|
+
// Explicit "provider:model" format
|
|
52
|
+
const colonIdx = s.indexOf(":");
|
|
53
|
+
if (colonIdx > 0) {
|
|
54
|
+
const provider = s.slice(0, colonIdx);
|
|
55
|
+
const modelId = s.slice(colonIdx + 1);
|
|
56
|
+
if (!provider.includes("/") && !provider.includes("\\")) {
|
|
57
|
+
return { provider, modelId };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Explicit "provider/model" format (OpenAI Gateway style)
|
|
61
|
+
const slashIdx = s.indexOf("/");
|
|
62
|
+
if (slashIdx > 0) {
|
|
63
|
+
const provider = s.slice(0, slashIdx);
|
|
64
|
+
const modelId = s.slice(slashIdx + 1);
|
|
65
|
+
if (!provider.includes(":") && !provider.includes("\\")) {
|
|
66
|
+
return { provider, modelId };
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Auto-infer from prefix map
|
|
70
|
+
const lower = s.toLowerCase();
|
|
71
|
+
for (const [prefix, provider] of PREFIX_MAP) {
|
|
72
|
+
if (lower.startsWith(prefix)) {
|
|
73
|
+
return { provider, modelId: s };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Cannot infer provider for model "${s}". Use "provider:model" format (e.g. "anthropic:${s}").`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Map of known providers → environment variable name for API keys.
|
|
80
|
+
* Used by both self-hosted and cloud for BYOK resolution.
|
|
81
|
+
*/
|
|
82
|
+
export const PROVIDER_ENV_MAP = {
|
|
83
|
+
openai: "OPENAI_API_KEY",
|
|
84
|
+
anthropic: "ANTHROPIC_API_KEY",
|
|
85
|
+
google: "GEMINI_API_KEY",
|
|
86
|
+
groq: "GROQ_API_KEY",
|
|
87
|
+
xai: "XAI_API_KEY",
|
|
88
|
+
openrouter: "OPENROUTER_API_KEY",
|
|
89
|
+
cerebras: "CEREBRAS_API_KEY",
|
|
90
|
+
mistral: "MISTRAL_API_KEY",
|
|
91
|
+
"vercel-ai-gateway": "AI_GATEWAY_API_KEY",
|
|
92
|
+
zai: "ZAI_API_KEY",
|
|
93
|
+
minimax: "MINIMAX_API_KEY",
|
|
94
|
+
"minimax-cn": "MINIMAX_CN_API_KEY",
|
|
95
|
+
huggingface: "HF_TOKEN",
|
|
96
|
+
opencode: "OPENCODE_API_KEY",
|
|
97
|
+
"opencode-go": "OPENCODE_API_KEY",
|
|
98
|
+
"kimi-coding": "KIMI_API_KEY",
|
|
99
|
+
"azure-openai-responses": "AZURE_OPENAI_API_KEY",
|
|
100
|
+
"github-copilot": "COPILOT_GITHUB_TOKEN",
|
|
101
|
+
"amazon-bedrock": "AWS_ACCESS_KEY_ID",
|
|
102
|
+
"google-vertex": "GOOGLE_CLOUD_PROJECT",
|
|
103
|
+
"openai-codex": "OPENAI_API_KEY",
|
|
104
|
+
"google-gemini-cli": "GEMINI_API_KEY",
|
|
105
|
+
"google-antigravity": "GEMINI_API_KEY",
|
|
106
|
+
};
|
|
107
|
+
//# sourceMappingURL=model-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-spec.js","sourceRoot":"","sources":["../src/model-spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills reader — pure functions for discovering and loading skills.
|
|
3
|
+
*
|
|
4
|
+
* Uses FileSystem abstraction so it works on any backend:
|
|
5
|
+
* - NodeFileSystem (self-hosted)
|
|
6
|
+
* - SandboxProxyFS (cloud, lazy)
|
|
7
|
+
*
|
|
8
|
+
* Write operations (install, remove, create, assign) stay in the shell
|
|
9
|
+
* because they use git clone, symlinks, and other Node-specific ops.
|
|
10
|
+
*/
|
|
11
|
+
import type { FileSystem } from "./filesystem.js";
|
|
12
|
+
export interface SkillInfo {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
allowedTools?: string[];
|
|
16
|
+
source: "project" | "global";
|
|
17
|
+
path: string;
|
|
18
|
+
tags?: string[];
|
|
19
|
+
category?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface LoadedSkill extends SkillInfo {
|
|
22
|
+
content: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SkillIndexEntry {
|
|
25
|
+
tags?: string[];
|
|
26
|
+
category?: string;
|
|
27
|
+
}
|
|
28
|
+
export type SkillIndex = Record<string, SkillIndexEntry>;
|
|
29
|
+
export interface SkillWithAssignment extends SkillInfo {
|
|
30
|
+
assignedTo: string[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse SKILL.md YAML frontmatter.
|
|
34
|
+
* Inlined minimal YAML parser for the simple key:value frontmatter format.
|
|
35
|
+
*/
|
|
36
|
+
export declare function parseSkillFrontmatter(content: string): {
|
|
37
|
+
name?: string;
|
|
38
|
+
description: string;
|
|
39
|
+
allowedTools?: string[];
|
|
40
|
+
} | null;
|
|
41
|
+
/** Extract the markdown body (everything after the frontmatter block). */
|
|
42
|
+
export declare function extractSkillBody(content: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Build the skill injection block for an agent's system prompt.
|
|
45
|
+
*/
|
|
46
|
+
export declare function buildSkillPrompt(skills: LoadedSkill[]): string;
|
|
47
|
+
/**
|
|
48
|
+
* Discover ALL available skills from the project's .polpo/skills/ directory.
|
|
49
|
+
* Cloud version — no global ~/.polpo/ (not available in sandbox).
|
|
50
|
+
*/
|
|
51
|
+
export declare function discoverSkills(fs: FileSystem, polpoDir: string, globalPolpoDir?: string): Promise<SkillInfo[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Load the skills assigned to a specific agent.
|
|
54
|
+
*
|
|
55
|
+
* Priority:
|
|
56
|
+
* 1. .polpo/agents/<agentName>/skills/ directory
|
|
57
|
+
* 2. AgentConfig.skills[] names resolved against the pool
|
|
58
|
+
*/
|
|
59
|
+
export declare function loadAgentSkills(fs: FileSystem, polpoDir: string, agentName: string, configSkillNames?: string[], globalPolpoDir?: string): Promise<LoadedSkill[]>;
|
|
60
|
+
/**
|
|
61
|
+
* List skills with their per-agent assignments.
|
|
62
|
+
*/
|
|
63
|
+
export declare function listSkillsWithAssignments(fs: FileSystem, polpoDir: string, agentNames: string[], agentConfigSkills?: Map<string, string[]>, globalPolpoDir?: string): Promise<SkillWithAssignment[]>;
|
|
64
|
+
//# sourceMappingURL=skills-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-reader.d.ts","sourceRoot":"","sources":["../src/skills-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAyC7H;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAgB9D;AAqCD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,SAAS,EAAE,CAAC,CAiCtB;AAyBD;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,EAAE,CAAC,CA0BxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAAE,EACpB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACzC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CA0BhC"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills reader — pure functions for discovering and loading skills.
|
|
3
|
+
*
|
|
4
|
+
* Uses FileSystem abstraction so it works on any backend:
|
|
5
|
+
* - NodeFileSystem (self-hosted)
|
|
6
|
+
* - SandboxProxyFS (cloud, lazy)
|
|
7
|
+
*
|
|
8
|
+
* Write operations (install, remove, create, assign) stay in the shell
|
|
9
|
+
* because they use git clone, symlinks, and other Node-specific ops.
|
|
10
|
+
*/
|
|
11
|
+
import { resolve, join } from "node:path";
|
|
12
|
+
// ── Parsing (pure, no FS) ──
|
|
13
|
+
/**
|
|
14
|
+
* Parse SKILL.md YAML frontmatter.
|
|
15
|
+
* Inlined minimal YAML parser for the simple key:value frontmatter format.
|
|
16
|
+
*/
|
|
17
|
+
export function parseSkillFrontmatter(content) {
|
|
18
|
+
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
19
|
+
if (!match)
|
|
20
|
+
return null;
|
|
21
|
+
try {
|
|
22
|
+
// Simple YAML-like parsing for flat frontmatter (no nested objects)
|
|
23
|
+
const lines = match[1].split("\n");
|
|
24
|
+
const fm = {};
|
|
25
|
+
let currentArray = null;
|
|
26
|
+
let currentKey = null;
|
|
27
|
+
for (const line of lines) {
|
|
28
|
+
const arrayItemMatch = line.match(/^\s+-\s+(.+)/);
|
|
29
|
+
if (arrayItemMatch && currentKey) {
|
|
30
|
+
if (!currentArray)
|
|
31
|
+
currentArray = [];
|
|
32
|
+
currentArray.push(arrayItemMatch[1].trim());
|
|
33
|
+
fm[currentKey] = currentArray;
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (currentArray) {
|
|
37
|
+
currentArray = null;
|
|
38
|
+
currentKey = null;
|
|
39
|
+
}
|
|
40
|
+
const kvMatch = line.match(/^(\w[\w-]*)\s*:\s*(.+)?/);
|
|
41
|
+
if (kvMatch) {
|
|
42
|
+
currentKey = kvMatch[1] === "allowed-tools" ? "allowedTools" : kvMatch[1];
|
|
43
|
+
const val = kvMatch[2]?.trim();
|
|
44
|
+
if (val) {
|
|
45
|
+
fm[currentKey] = val;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (!fm.name && !fm.description)
|
|
50
|
+
return null;
|
|
51
|
+
return {
|
|
52
|
+
name: fm.name,
|
|
53
|
+
description: fm.description ?? "",
|
|
54
|
+
allowedTools: fm.allowedTools,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** Extract the markdown body (everything after the frontmatter block). */
|
|
62
|
+
export function extractSkillBody(content) {
|
|
63
|
+
const match = content.match(/^---\n[\s\S]*?\n---\n?([\s\S]*)$/);
|
|
64
|
+
return match ? match[1].trim() : content.trim();
|
|
65
|
+
}
|
|
66
|
+
// ── Build prompt (pure, no FS) ──
|
|
67
|
+
/**
|
|
68
|
+
* Build the skill injection block for an agent's system prompt.
|
|
69
|
+
*/
|
|
70
|
+
export function buildSkillPrompt(skills) {
|
|
71
|
+
if (skills.length === 0)
|
|
72
|
+
return "";
|
|
73
|
+
const parts = [
|
|
74
|
+
`\n## Assigned Skills\n`,
|
|
75
|
+
`You have ${skills.length} skill${skills.length > 1 ? "s" : ""} loaded. Use this knowledge when applicable:\n`,
|
|
76
|
+
];
|
|
77
|
+
for (const skill of skills) {
|
|
78
|
+
parts.push(`### ${skill.name}`);
|
|
79
|
+
if (skill.description)
|
|
80
|
+
parts.push(`> ${skill.description}\n`);
|
|
81
|
+
parts.push(skill.content);
|
|
82
|
+
parts.push("");
|
|
83
|
+
}
|
|
84
|
+
return parts.join("\n");
|
|
85
|
+
}
|
|
86
|
+
// ── Discovery (async, uses FileSystem) ──
|
|
87
|
+
/** Scan a single skills directory and return discovered skills. */
|
|
88
|
+
async function scanSkillsDir(fs, dir, source) {
|
|
89
|
+
const skills = [];
|
|
90
|
+
if (!(await fs.exists(dir)))
|
|
91
|
+
return skills;
|
|
92
|
+
try {
|
|
93
|
+
const entries = fs.readdirWithTypes
|
|
94
|
+
? await fs.readdirWithTypes(dir)
|
|
95
|
+
: (await fs.readdir(dir)).map((n) => ({ name: n, isDirectory: true, isFile: false }));
|
|
96
|
+
for (const entry of entries) {
|
|
97
|
+
if (!entry.isDirectory)
|
|
98
|
+
continue;
|
|
99
|
+
const entryPath = resolve(dir, entry.name);
|
|
100
|
+
const skillPath = resolve(entryPath, "SKILL.md");
|
|
101
|
+
if (!(await fs.exists(skillPath)))
|
|
102
|
+
continue;
|
|
103
|
+
try {
|
|
104
|
+
const raw = await fs.readFile(skillPath);
|
|
105
|
+
const fm = parseSkillFrontmatter(raw);
|
|
106
|
+
const name = fm?.name ?? entry.name;
|
|
107
|
+
skills.push({
|
|
108
|
+
name,
|
|
109
|
+
description: fm?.description ?? "",
|
|
110
|
+
allowedTools: fm?.allowedTools,
|
|
111
|
+
source,
|
|
112
|
+
path: entryPath,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch { /* skip unreadable */ }
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch { /* skip unreadable dir */ }
|
|
119
|
+
return skills;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Discover ALL available skills from the project's .polpo/skills/ directory.
|
|
123
|
+
* Cloud version — no global ~/.polpo/ (not available in sandbox).
|
|
124
|
+
*/
|
|
125
|
+
export async function discoverSkills(fs, polpoDir, globalPolpoDir) {
|
|
126
|
+
const seen = new Set();
|
|
127
|
+
const all = [];
|
|
128
|
+
const dirs = [
|
|
129
|
+
{ dir: resolve(polpoDir, "skills"), source: "project" },
|
|
130
|
+
];
|
|
131
|
+
if (globalPolpoDir) {
|
|
132
|
+
dirs.push({ dir: resolve(globalPolpoDir, "skills"), source: "global" });
|
|
133
|
+
}
|
|
134
|
+
for (const { dir, source } of dirs) {
|
|
135
|
+
for (const skill of await scanSkillsDir(fs, dir, source)) {
|
|
136
|
+
if (!seen.has(skill.name)) {
|
|
137
|
+
seen.add(skill.name);
|
|
138
|
+
all.push(skill);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Enrich with index metadata
|
|
143
|
+
const index = await loadSkillIndex(fs, polpoDir);
|
|
144
|
+
if (index) {
|
|
145
|
+
for (const skill of all) {
|
|
146
|
+
const entry = index[skill.name];
|
|
147
|
+
if (entry) {
|
|
148
|
+
if (entry.tags)
|
|
149
|
+
skill.tags = entry.tags;
|
|
150
|
+
if (entry.category)
|
|
151
|
+
skill.category = entry.category;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return all;
|
|
156
|
+
}
|
|
157
|
+
/** Load skills-index.json from polpoDir. */
|
|
158
|
+
async function loadSkillIndex(fs, polpoDir) {
|
|
159
|
+
const indexPath = join(polpoDir, "skills-index.json");
|
|
160
|
+
if (!(await fs.exists(indexPath)))
|
|
161
|
+
return null;
|
|
162
|
+
try {
|
|
163
|
+
const raw = await fs.readFile(indexPath);
|
|
164
|
+
const parsed = JSON.parse(raw);
|
|
165
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
166
|
+
return null;
|
|
167
|
+
return parsed;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// ── Per-agent loading ──
|
|
174
|
+
/** Load a single skill's content. */
|
|
175
|
+
async function loadSkillContent(fs, info) {
|
|
176
|
+
const skillPath = resolve(info.path, "SKILL.md");
|
|
177
|
+
try {
|
|
178
|
+
const raw = await fs.readFile(skillPath);
|
|
179
|
+
return { ...info, content: extractSkillBody(raw) };
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return null;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Load the skills assigned to a specific agent.
|
|
187
|
+
*
|
|
188
|
+
* Priority:
|
|
189
|
+
* 1. .polpo/agents/<agentName>/skills/ directory
|
|
190
|
+
* 2. AgentConfig.skills[] names resolved against the pool
|
|
191
|
+
*/
|
|
192
|
+
export async function loadAgentSkills(fs, polpoDir, agentName, configSkillNames, globalPolpoDir) {
|
|
193
|
+
const agentSkillsDir = resolve(polpoDir, "agents", agentName, "skills");
|
|
194
|
+
// Strategy 1: agent has a skills dir
|
|
195
|
+
if (await fs.exists(agentSkillsDir)) {
|
|
196
|
+
const skills = await scanSkillsDir(fs, agentSkillsDir, "project");
|
|
197
|
+
const loaded = await Promise.all(skills.map((s) => loadSkillContent(fs, s)));
|
|
198
|
+
return loaded.filter((s) => s !== null);
|
|
199
|
+
}
|
|
200
|
+
// Strategy 2: resolve config skill names against the pool
|
|
201
|
+
if (configSkillNames && configSkillNames.length > 0) {
|
|
202
|
+
const pool = await discoverSkills(fs, polpoDir, globalPolpoDir);
|
|
203
|
+
const poolMap = new Map(pool.map((s) => [s.name, s]));
|
|
204
|
+
const loaded = [];
|
|
205
|
+
for (const name of configSkillNames) {
|
|
206
|
+
const info = poolMap.get(name);
|
|
207
|
+
if (info) {
|
|
208
|
+
const skill = await loadSkillContent(fs, info);
|
|
209
|
+
if (skill)
|
|
210
|
+
loaded.push(skill);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return loaded;
|
|
214
|
+
}
|
|
215
|
+
return [];
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* List skills with their per-agent assignments.
|
|
219
|
+
*/
|
|
220
|
+
export async function listSkillsWithAssignments(fs, polpoDir, agentNames, agentConfigSkills, globalPolpoDir) {
|
|
221
|
+
const pool = await discoverSkills(fs, polpoDir, globalPolpoDir);
|
|
222
|
+
const result = [];
|
|
223
|
+
for (const skill of pool) {
|
|
224
|
+
const assignedTo = new Set();
|
|
225
|
+
for (const agentName of agentNames) {
|
|
226
|
+
// Strategy 1: check skills dir
|
|
227
|
+
const linkPath = resolve(polpoDir, "agents", agentName, "skills", skill.name);
|
|
228
|
+
if (await fs.exists(linkPath)) {
|
|
229
|
+
assignedTo.add(agentName);
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
// Strategy 2: check config
|
|
233
|
+
const configSkills = agentConfigSkills?.get(agentName);
|
|
234
|
+
if (configSkills?.includes(skill.name)) {
|
|
235
|
+
assignedTo.add(agentName);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
result.push({ ...skill, assignedTo: [...assignedTo] });
|
|
239
|
+
}
|
|
240
|
+
return result;
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=skills-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-reader.js","sourceRoot":"","sources":["../src/skills-reader.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED