@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.
@@ -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";
@@ -1 +1 @@
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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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;AA6BrD,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"}
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polpo-ai/core",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Pure business logic, types, schemas, and store interfaces for the Polpo AI agent orchestration platform",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",