daycare-cli 0.0.15 → 0.0.16

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.
Files changed (65) hide show
  1. package/dist/engine/agents/agent.d.ts.map +1 -1
  2. package/dist/engine/agents/agent.js +4 -1
  3. package/dist/engine/agents/agent.js.map +1 -1
  4. package/dist/engine/agents/ops/agentLoopRun.d.ts +2 -0
  5. package/dist/engine/agents/ops/agentLoopRun.d.ts.map +1 -1
  6. package/dist/engine/agents/ops/agentLoopRun.js +2 -1
  7. package/dist/engine/agents/ops/agentLoopRun.js.map +1 -1
  8. package/dist/engine/agents/ops/agentLoopRun.spec.js +1 -0
  9. package/dist/engine/agents/ops/agentLoopRun.spec.js.map +1 -1
  10. package/dist/engine/engine.d.ts.map +1 -1
  11. package/dist/engine/engine.js +3 -1
  12. package/dist/engine/engine.js.map +1 -1
  13. package/dist/engine/engine.spec.js +16 -0
  14. package/dist/engine/engine.spec.js.map +1 -1
  15. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.d.ts +2 -1
  16. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.d.ts.map +1 -1
  17. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.js +18 -1
  18. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.js.map +1 -1
  19. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.d.ts +2 -0
  20. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.d.ts.map +1 -0
  21. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.js +32 -0
  22. package/dist/engine/modules/rlm/rlmToolDescriptionBuild.spec.js.map +1 -0
  23. package/dist/engine/modules/tools/skillToolBuild.d.ts +3 -0
  24. package/dist/engine/modules/tools/skillToolBuild.d.ts.map +1 -0
  25. package/dist/engine/modules/tools/skillToolBuild.js +113 -0
  26. package/dist/engine/modules/tools/skillToolBuild.js.map +1 -0
  27. package/dist/engine/modules/tools/skillToolBuild.spec.d.ts +2 -0
  28. package/dist/engine/modules/tools/skillToolBuild.spec.d.ts.map +1 -0
  29. package/dist/engine/modules/tools/skillToolBuild.spec.js +198 -0
  30. package/dist/engine/modules/tools/skillToolBuild.spec.js.map +1 -0
  31. package/dist/engine/modules/tools/toolListContextBuild.d.ts +2 -0
  32. package/dist/engine/modules/tools/toolListContextBuild.d.ts.map +1 -1
  33. package/dist/engine/modules/tools/toolListContextBuild.js +3 -3
  34. package/dist/engine/modules/tools/toolListContextBuild.js.map +1 -1
  35. package/dist/engine/modules/tools/toolListContextBuild.spec.js +12 -0
  36. package/dist/engine/modules/tools/toolListContextBuild.spec.js.map +1 -1
  37. package/dist/engine/modules/tools/types.d.ts +2 -0
  38. package/dist/engine/modules/tools/types.d.ts.map +1 -1
  39. package/dist/engine/skills/skillContentLoad.d.ts +7 -0
  40. package/dist/engine/skills/skillContentLoad.d.ts.map +1 -0
  41. package/dist/engine/skills/skillContentLoad.js +19 -0
  42. package/dist/engine/skills/skillContentLoad.js.map +1 -0
  43. package/dist/engine/skills/skillContentLoad.spec.d.ts +2 -0
  44. package/dist/engine/skills/skillContentLoad.spec.d.ts.map +1 -0
  45. package/dist/engine/skills/skillContentLoad.spec.js +52 -0
  46. package/dist/engine/skills/skillContentLoad.spec.js.map +1 -0
  47. package/dist/engine/skills/skillPromptFormat.d.ts.map +1 -1
  48. package/dist/engine/skills/skillPromptFormat.js +9 -5
  49. package/dist/engine/skills/skillPromptFormat.js.map +1 -1
  50. package/dist/engine/skills/skillPromptFormat.spec.js +5 -2
  51. package/dist/engine/skills/skillPromptFormat.spec.js.map +1 -1
  52. package/dist/engine/skills/skillResolve.d.ts.map +1 -1
  53. package/dist/engine/skills/skillResolve.js +35 -91
  54. package/dist/engine/skills/skillResolve.js.map +1 -1
  55. package/dist/engine/skills/skillResolve.spec.d.ts +2 -0
  56. package/dist/engine/skills/skillResolve.spec.d.ts.map +1 -0
  57. package/dist/engine/skills/skillResolve.spec.js +63 -0
  58. package/dist/engine/skills/skillResolve.spec.js.map +1 -0
  59. package/dist/engine/skills/skillTypes.d.ts +2 -0
  60. package/dist/engine/skills/skillTypes.d.ts.map +1 -1
  61. package/dist/prompts/SYSTEM.md +6 -1
  62. package/dist/skills/skills/skill-creator/SKILL.md +7 -1
  63. package/dist/types.d.ts +1 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -3,8 +3,9 @@ import { rlmPreambleBuild } from "./rlmPreambleBuild.js";
3
3
  * Builds the run_python tool description with the generated Python tool preamble.
4
4
  * Expects: tools contains the full current tool list from ToolResolver.
5
5
  */
6
- export function rlmToolDescriptionBuild(tools) {
6
+ export function rlmToolDescriptionBuild(tools, skills = []) {
7
7
  const preamble = rlmPreambleBuild(tools);
8
+ const skillsSection = rlmSkillsSectionBuild(skills);
8
9
  return [
9
10
  "Execute Python code to complete the task.",
10
11
  "",
@@ -15,8 +16,24 @@ export function rlmToolDescriptionBuild(tools) {
15
16
  "",
16
17
  "Call tool functions directly (no `await`).",
17
18
  "Use `try/except ToolError` for tool failures.",
19
+ ...skillsSection,
18
20
  "Use `print()` for debug output.",
19
21
  "The value of the final expression is returned."
20
22
  ].join("\n");
21
23
  }
24
+ function rlmSkillsSectionBuild(skills) {
25
+ if (skills.length === 0) {
26
+ return [];
27
+ }
28
+ const lines = [
29
+ "",
30
+ "Available skills (use the `skill(...)` function stub to load/run them):"
31
+ ];
32
+ for (const skill of skills) {
33
+ const description = skill.description ?? "";
34
+ const sandbox = skill.sandbox ? " sandbox=true" : "";
35
+ lines.push(`- ${skill.name}${sandbox}${description ? ` - ${description}` : ""}`);
36
+ }
37
+ return lines;
38
+ }
22
39
  //# sourceMappingURL=rlmToolDescriptionBuild.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rlmToolDescriptionBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO;QACL,2CAA2C;QAC3C,EAAE;QACF,wCAAwC;QACxC,WAAW;QACX,QAAQ;QACR,KAAK;QACL,EAAE;QACF,4CAA4C;QAC5C,+CAA+C;QAC/C,iCAAiC;QACjC,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"rlmToolDescriptionBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa,EAAE,SAAuB,EAAE;IAC9E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO;QACL,2CAA2C;QAC3C,EAAE;QACF,wCAAwC;QACxC,WAAW;QACX,QAAQ;QACR,KAAK;QACL,EAAE;QACF,4CAA4C;QAC5C,+CAA+C;QAC/C,GAAG,aAAa;QAChB,iCAAiC;QACjC,gDAAgD;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoB;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,yEAAyE;KAC1E,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rlmToolDescriptionBuild.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rlmToolDescriptionBuild.spec.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { rlmToolDescriptionBuild } from "./rlmToolDescriptionBuild.js";
3
+ describe("rlmToolDescriptionBuild", () => {
4
+ it("embeds skill metadata when provided", () => {
5
+ const tools = [
6
+ { name: "run_python", description: "", parameters: {} },
7
+ { name: "skill", description: "Load skill", parameters: {} }
8
+ ];
9
+ const skills = [
10
+ {
11
+ id: "core:scheduling",
12
+ name: "scheduling",
13
+ description: "Set up recurring tasks",
14
+ source: "core",
15
+ path: "/tmp/skills/scheduling/SKILL.md",
16
+ sandbox: true
17
+ },
18
+ {
19
+ id: "config:review",
20
+ name: "review",
21
+ description: null,
22
+ source: "config",
23
+ path: "/tmp/skills/review/SKILL.md"
24
+ }
25
+ ];
26
+ const description = rlmToolDescriptionBuild(tools, skills);
27
+ expect(description).toContain("Available skills");
28
+ expect(description).toContain("- scheduling sandbox=true - Set up recurring tasks");
29
+ expect(description).toContain("- review");
30
+ });
31
+ });
32
+ //# sourceMappingURL=rlmToolDescriptionBuild.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rlmToolDescriptionBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/rlm/rlmToolDescriptionBuild.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAI9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,KAAK,GAAG;YACZ,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YACvD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,EAAE,EAAE;SACxC,CAAC;QACvB,MAAM,MAAM,GAAiB;YAC3B;gBACE,EAAE,EAAE,iBAAiB;gBACrB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,wBAAwB;gBACrC,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,iCAAiC;gBACvC,OAAO,EAAE,IAAI;aACd;YACD;gBACE,EAAE,EAAE,eAAe;gBACnB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,IAAI;gBACjB,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,6BAA6B;aACpC;SACF,CAAC;QAEF,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,oDAAoD,CAAC,CAAC;QACpF,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolDefinition } from "@/types";
2
+ export declare function skillToolBuild(): ToolDefinition;
3
+ //# sourceMappingURL=skillToolBuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillToolBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/skillToolBuild.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAkB9C,wBAAgB,cAAc,IAAI,cAAc,CA4E/C"}
@@ -0,0 +1,113 @@
1
+ import path from "node:path";
2
+ import { createId } from "@paralleldrive/cuid2";
3
+ import { Type } from "@sinclair/typebox";
4
+ import { permissionAccessParse } from "../../permissions/permissionAccessParse.js";
5
+ import { permissionTagsNormalize } from "../../permissions/permissionTagsNormalize.js";
6
+ import { permissionTagsValidate } from "../../permissions/permissionTagsValidate.js";
7
+ import { skillContentLoad } from "../../skills/skillContentLoad.js";
8
+ import { skillResolve } from "../../skills/skillResolve.js";
9
+ const schema = Type.Object({
10
+ name: Type.String({ minLength: 1 }),
11
+ prompt: Type.Optional(Type.String())
12
+ }, { additionalProperties: false });
13
+ export function skillToolBuild() {
14
+ return {
15
+ tool: {
16
+ name: "skill",
17
+ description: "Load and run a skill by name or SKILL.md path.",
18
+ parameters: schema
19
+ },
20
+ execute: async (args, toolContext, toolCall) => {
21
+ const payload = args;
22
+ const requested = payload.name.trim();
23
+ if (!requested) {
24
+ throw new Error("Skill name is required.");
25
+ }
26
+ const skill = await skillTargetResolve(requested, toolContext.skills ?? [], toolContext.permissions.workingDir);
27
+ if (!skill) {
28
+ throw skillInputLooksLikePath(requested)
29
+ ? new Error(`Skill not found at path: ${path.resolve(toolContext.permissions.workingDir, requested)}.`)
30
+ : new Error(`Unknown skill: ${requested}.`);
31
+ }
32
+ const skillBody = await skillContentLoad(skill.path);
33
+ if (skill.sandbox === true) {
34
+ const prompt = payload.prompt?.trim() ?? "";
35
+ if (!prompt) {
36
+ throw new Error(`Skill "${skill.name}" requires prompt in sandbox mode.`);
37
+ }
38
+ const permissionTags = permissionTagsNormalize(skill.permissions);
39
+ await permissionTagsValidate(toolContext.permissions, permissionTags);
40
+ const descriptor = {
41
+ type: "subagent",
42
+ id: createId(),
43
+ parentAgentId: toolContext.agent.id,
44
+ name: skill.name
45
+ };
46
+ const agentId = await toolContext.agentSystem.agentIdForTarget({ descriptor });
47
+ for (const tag of permissionTags) {
48
+ await toolContext.agentSystem.grantPermission({ agentId }, permissionAccessParse(tag));
49
+ }
50
+ const sandboxPrompt = skillSandboxPromptBuild(skillBody, prompt);
51
+ const result = await toolContext.agentSystem.postAndAwait({ agentId }, { type: "message", message: { text: sandboxPrompt }, context: {} });
52
+ const responseText = "responseText" in result ? result.responseText : null;
53
+ const body = responseText && responseText.trim().length > 0
54
+ ? responseText.trim()
55
+ : "No response text returned.";
56
+ const toolMessage = toolMessageBuild(toolCall.id, toolCall.name, `Skill executed in sandbox. Result:\n\n---\n\n${body}`);
57
+ return { toolMessage, files: [] };
58
+ }
59
+ const body = skillBody.length > 0 ? skillBody : "(Skill body is empty.)";
60
+ const toolMessage = toolMessageBuild(toolCall.id, toolCall.name, `Skill loaded (embedded). Follow the instructions below:\n\n---\n\n${body}`);
61
+ return { toolMessage, files: [] };
62
+ }
63
+ };
64
+ }
65
+ async function skillTargetResolve(requested, skills, workingDir) {
66
+ if (skillInputLooksLikePath(requested)) {
67
+ return skillResolve(path.resolve(workingDir, requested), { source: "config" });
68
+ }
69
+ return skillByNameResolve(requested, skills);
70
+ }
71
+ function skillInputLooksLikePath(value) {
72
+ return (path.isAbsolute(value) ||
73
+ value.includes("/") ||
74
+ value.includes("\\") ||
75
+ value.startsWith(".") ||
76
+ value.toLowerCase().endsWith(".md"));
77
+ }
78
+ function skillByNameResolve(requested, skills) {
79
+ for (const skill of skills) {
80
+ if (skill.name === requested || skill.id === requested) {
81
+ return skill;
82
+ }
83
+ }
84
+ const normalized = requested.toLowerCase();
85
+ for (const skill of skills) {
86
+ if (skill.name.toLowerCase() === normalized || skill.id.toLowerCase() === normalized) {
87
+ return skill;
88
+ }
89
+ }
90
+ return null;
91
+ }
92
+ function skillSandboxPromptBuild(skillBody, prompt) {
93
+ return [
94
+ "Follow the skill instructions and complete the task.",
95
+ "",
96
+ "## Skill",
97
+ skillBody,
98
+ "",
99
+ "## Task",
100
+ prompt
101
+ ].join("\n");
102
+ }
103
+ function toolMessageBuild(toolCallId, toolName, text) {
104
+ return {
105
+ role: "toolResult",
106
+ toolCallId,
107
+ toolName,
108
+ content: [{ type: "text", text }],
109
+ isError: false,
110
+ timestamp: Date.now()
111
+ };
112
+ }
113
+ //# sourceMappingURL=skillToolBuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillToolBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/skillToolBuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skillToolBuild.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillToolBuild.spec.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/skillToolBuild.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,198 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ import { promises as fs } from "node:fs";
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { skillToolBuild } from "./skillToolBuild.js";
6
+ const toolCall = { id: "tool-1", name: "skill" };
7
+ describe("skillToolBuild", () => {
8
+ it("returns embedded skill instructions for non-sandbox skills", async () => {
9
+ const skillPath = await skillFileCreate("scheduling", false);
10
+ try {
11
+ const tool = skillToolBuild();
12
+ const context = contextBuild({
13
+ skills: [skillBuild(skillPath, { name: "scheduling", sandbox: false })]
14
+ });
15
+ const result = await tool.execute({ name: "scheduling" }, context, toolCall);
16
+ expect(contentText(result.toolMessage.content)).toContain("Skill loaded (embedded). Follow the instructions below:");
17
+ expect(contentText(result.toolMessage.content)).toContain("# scheduling");
18
+ }
19
+ finally {
20
+ await fs.rm(path.dirname(path.dirname(skillPath)), { recursive: true, force: true });
21
+ }
22
+ });
23
+ it("runs sandbox skills in a subagent and returns subagent output", async () => {
24
+ const skillPath = await skillFileCreate("deploy", true);
25
+ try {
26
+ const agentIdForTarget = vi.fn(async () => "agent-sub");
27
+ const grantPermission = vi.fn(async () => undefined);
28
+ const postAndAwait = vi.fn(async () => ({ type: "message", responseText: "Deployment complete." }));
29
+ const tool = skillToolBuild();
30
+ const context = contextBuild({
31
+ permissions: permissionsBuild({ network: true }),
32
+ skills: [skillBuild(skillPath, { name: "deploy", sandbox: true, permissions: ["@network"] })],
33
+ agentSystem: { agentIdForTarget, grantPermission, postAndAwait }
34
+ });
35
+ const result = await tool.execute({ name: "deploy", prompt: "Deploy version 1.2.3" }, context, toolCall);
36
+ expect(agentIdForTarget).toHaveBeenCalledTimes(1);
37
+ expect(grantPermission).toHaveBeenCalledWith({ agentId: "agent-sub" }, { kind: "network" });
38
+ expect(postAndAwait).toHaveBeenCalledWith({ agentId: "agent-sub" }, expect.objectContaining({
39
+ type: "message",
40
+ message: expect.objectContaining({
41
+ text: expect.stringContaining("Deploy version 1.2.3")
42
+ })
43
+ }));
44
+ expect(contentText(result.toolMessage.content)).toContain("Skill executed in sandbox. Result:");
45
+ expect(contentText(result.toolMessage.content)).toContain("Deployment complete.");
46
+ }
47
+ finally {
48
+ await fs.rm(path.dirname(path.dirname(skillPath)), { recursive: true, force: true });
49
+ }
50
+ });
51
+ it("throws clear error for unknown skill names", async () => {
52
+ const tool = skillToolBuild();
53
+ const context = contextBuild();
54
+ await expect(tool.execute({ name: "missing-skill" }, context, toolCall)).rejects.toThrow("Unknown skill: missing-skill.");
55
+ });
56
+ it("resolves duplicate names using input order priority", async () => {
57
+ const corePath = await skillFileCreateWithBody("deploy-core", false, "# core");
58
+ const configPath = await skillFileCreateWithBody("deploy-config", false, "# config");
59
+ try {
60
+ const tool = skillToolBuild();
61
+ const context = contextBuild({
62
+ skills: [
63
+ skillBuild(corePath, { name: "deploy", id: "core:deploy", source: "core", sandbox: false }),
64
+ skillBuild(configPath, { name: "deploy", id: "config:deploy", source: "config", sandbox: false })
65
+ ]
66
+ });
67
+ const result = await tool.execute({ name: "deploy" }, context, toolCall);
68
+ expect(contentText(result.toolMessage.content)).toContain("# core");
69
+ expect(contentText(result.toolMessage.content)).not.toContain("# config");
70
+ }
71
+ finally {
72
+ await fs.rm(path.dirname(path.dirname(corePath)), { recursive: true, force: true });
73
+ await fs.rm(path.dirname(path.dirname(configPath)), { recursive: true, force: true });
74
+ }
75
+ });
76
+ it("requires prompt for sandbox skills", async () => {
77
+ const skillPath = await skillFileCreate("deploy", true);
78
+ try {
79
+ const tool = skillToolBuild();
80
+ const context = contextBuild({
81
+ permissions: permissionsBuild({ network: true }),
82
+ skills: [skillBuild(skillPath, { name: "deploy", sandbox: true })]
83
+ });
84
+ await expect(tool.execute({ name: "deploy" }, context, toolCall)).rejects.toThrow('Skill "deploy" requires prompt in sandbox mode.');
85
+ }
86
+ finally {
87
+ await fs.rm(path.dirname(path.dirname(skillPath)), { recursive: true, force: true });
88
+ }
89
+ });
90
+ it("resolves a skill by direct path", async () => {
91
+ const skillPath = await skillFileCreate("path-skill", false);
92
+ const workingDir = path.dirname(path.dirname(skillPath));
93
+ const relativePath = path.relative(workingDir, skillPath);
94
+ try {
95
+ const tool = skillToolBuild();
96
+ const context = contextBuild({
97
+ permissions: permissionsBuild({ workingDir }),
98
+ skills: []
99
+ });
100
+ const result = await tool.execute({ name: relativePath }, context, toolCall);
101
+ expect(contentText(result.toolMessage.content)).toContain("# path-skill");
102
+ }
103
+ finally {
104
+ await fs.rm(workingDir, { recursive: true, force: true });
105
+ }
106
+ });
107
+ it("rejects sandbox skill permissions that exceed parent permissions", async () => {
108
+ const skillPath = await skillFileCreate("deploy", true);
109
+ try {
110
+ const tool = skillToolBuild();
111
+ const context = contextBuild({
112
+ permissions: permissionsBuild({ network: false }),
113
+ skills: [skillBuild(skillPath, { name: "deploy", sandbox: true, permissions: ["@network"] })]
114
+ });
115
+ await expect(tool.execute({ name: "deploy", prompt: "Ship it" }, context, toolCall)).rejects.toThrow("Cannot attach permission");
116
+ }
117
+ finally {
118
+ await fs.rm(path.dirname(path.dirname(skillPath)), { recursive: true, force: true });
119
+ }
120
+ });
121
+ });
122
+ function contextBuild(input) {
123
+ const agentIdForTarget = input?.agentSystem?.agentIdForTarget ?? (async () => "agent-sub");
124
+ const grantPermission = input?.agentSystem?.grantPermission ?? (async () => undefined);
125
+ const postAndAwait = input?.agentSystem?.postAndAwait ??
126
+ (async () => ({ type: "message", responseText: "ok" }));
127
+ return {
128
+ connectorRegistry: null,
129
+ fileStore: null,
130
+ auth: null,
131
+ logger: console,
132
+ assistant: null,
133
+ permissions: input?.permissions ?? permissionsBuild({}),
134
+ agent: { id: "agent-parent" },
135
+ source: "test",
136
+ messageContext: {},
137
+ skills: input?.skills ?? [],
138
+ agentSystem: {
139
+ agentIdForTarget,
140
+ grantPermission,
141
+ postAndAwait
142
+ },
143
+ heartbeats: null
144
+ };
145
+ }
146
+ function permissionsBuild(overrides) {
147
+ return {
148
+ workingDir: "/workspace",
149
+ writeDirs: ["/workspace"],
150
+ readDirs: [],
151
+ network: false,
152
+ events: false,
153
+ ...overrides
154
+ };
155
+ }
156
+ function skillBuild(skillPath, overrides) {
157
+ const source = overrides.source ?? "config";
158
+ const id = overrides.id ?? `${source}:${overrides.name}`;
159
+ return {
160
+ id,
161
+ name: overrides.name,
162
+ description: null,
163
+ path: skillPath,
164
+ source,
165
+ sandbox: overrides.sandbox,
166
+ permissions: overrides.permissions
167
+ };
168
+ }
169
+ async function skillFileCreate(name, sandbox) {
170
+ return skillFileCreateWithBody(name, sandbox, `# ${name}\nUse this skill.`);
171
+ }
172
+ async function skillFileCreateWithBody(name, sandbox, body) {
173
+ const baseDir = await fs.mkdtemp(path.join(os.tmpdir(), "daycare-skill-tool-"));
174
+ const skillDir = path.join(baseDir, name);
175
+ await fs.mkdir(skillDir, { recursive: true });
176
+ const skillPath = path.join(skillDir, "SKILL.md");
177
+ await fs.writeFile(skillPath, [
178
+ "---",
179
+ `name: ${name}`,
180
+ "description: test skill",
181
+ `sandbox: ${sandbox ? "true" : "false"}`,
182
+ "---",
183
+ "",
184
+ body
185
+ ].join("\n"));
186
+ return skillPath;
187
+ }
188
+ function contentText(content) {
189
+ if (!Array.isArray(content)) {
190
+ return "";
191
+ }
192
+ return content
193
+ .filter((item) => typeof item === "object" && item !== null && item.type === "text")
194
+ .map((item) => item.text)
195
+ .filter((value) => typeof value === "string")
196
+ .join("\n");
197
+ }
198
+ //# sourceMappingURL=skillToolBuild.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillToolBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/skillToolBuild.spec.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import type { Tool } from "@mariozechner/pi-ai";
2
+ import type { AgentSkill } from "@/types";
2
3
  import type { ConnectorRegistry } from "../connectorRegistry.js";
3
4
  import type { ImageGenerationRegistry } from "../imageGenerationRegistry.js";
4
5
  type ToolListOptions = {
5
6
  tools: Tool[];
7
+ skills?: AgentSkill[];
6
8
  source?: string;
7
9
  agentKind?: "background" | "foreground";
8
10
  allowCronTools?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"toolListContextBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAI7E,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAC3D,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;CACtD,CAAC;AAOF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,CAuCrE"}
1
+ {"version":3,"file":"toolListContextBuild.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAI7E,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;IAC3D,aAAa,EAAE,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;CACtD,CAAC;AAOF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,EAAE,CAuCrE"}
@@ -10,7 +10,7 @@ const BACKGROUND_TOOL_DENYLIST = new Set([
10
10
  */
11
11
  export function toolListContextBuild(options) {
12
12
  if (options.rlm) {
13
- return toolListRlmBuild(options.tools);
13
+ return toolListRlmBuild(options.tools, options.skills ?? []);
14
14
  }
15
15
  const source = options.source;
16
16
  let tools = options.tools;
@@ -41,7 +41,7 @@ export function toolListContextBuild(options) {
41
41
  }
42
42
  return toolListFilterConnectorCapabilities(filtered, supportsFiles, supportsReactions);
43
43
  }
44
- function toolListRlmBuild(tools) {
44
+ function toolListRlmBuild(tools, skills) {
45
45
  const runPython = tools.find((tool) => tool.name === RLM_TOOL_NAME);
46
46
  if (!runPython) {
47
47
  return [];
@@ -49,7 +49,7 @@ function toolListRlmBuild(tools) {
49
49
  return [
50
50
  {
51
51
  ...runPython,
52
- description: rlmToolDescriptionBuild(tools)
52
+ description: rlmToolDescriptionBuild(tools, skills)
53
53
  }
54
54
  ];
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toolListContextBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolListContextBuild.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.ts"],"names":[],"mappings":"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"}
@@ -78,6 +78,16 @@ describe("toolListContextBuild", () => {
78
78
  it("returns only run_python in rlm mode", () => {
79
79
  const result = toolListContextBuild({
80
80
  tools: baseTools,
81
+ skills: [
82
+ {
83
+ id: "core:scheduling",
84
+ name: "scheduling",
85
+ description: "Set up recurring tasks",
86
+ source: "core",
87
+ path: "/tmp/skills/scheduling/SKILL.md",
88
+ sandbox: true
89
+ }
90
+ ],
81
91
  source: "slack",
82
92
  rlm: true,
83
93
  connectorRegistry: {
@@ -89,6 +99,8 @@ describe("toolListContextBuild", () => {
89
99
  expect(result.map((tool) => tool.name)).toEqual(["run_python"]);
90
100
  expect(result[0]?.description).toContain("The following functions are available:");
91
101
  expect(result[0]?.description).toContain("def other() -> str:");
102
+ expect(result[0]?.description).toContain("Available skills");
103
+ expect(result[0]?.description).toContain("scheduling sandbox=true - Set up recurring tasks");
92
104
  });
93
105
  });
94
106
  //# sourceMappingURL=toolListContextBuild.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolListContextBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolListContextBuild.spec.js","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/toolListContextBuild.spec.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ import type { SessionPermissions } from "@/types";
11
11
  import type { AgentSystem } from "../../agents/agentSystem.js";
12
12
  import type { Heartbeats } from "../../heartbeat/heartbeats.js";
13
13
  import type { PermissionRequestRegistry } from "./permissionRequestRegistry.js";
14
+ import type { AgentSkill } from "../../skills/skillTypes.js";
14
15
  export type ToolExecutionContext<State = Record<string, unknown>> = {
15
16
  connectorRegistry: ConnectorRegistry;
16
17
  fileStore: FileStore;
@@ -23,6 +24,7 @@ export type ToolExecutionContext<State = Record<string, unknown>> = {
23
24
  messageContext: MessageContext;
24
25
  agentSystem: AgentSystem;
25
26
  heartbeats: Heartbeats;
27
+ skills?: AgentSkill[];
26
28
  permissionRequestRegistry?: PermissionRequestRegistry;
27
29
  };
28
30
  export type ToolExecutionResult = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAEhF,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAClE,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,OAAO,GAAG,OAAO,IAAI;IAC9D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,EAAE,CACP,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../sources/engine/modules/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IAClE,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,OAAO,SAAS,OAAO,GAAG,OAAO,IAAI;IAC9D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,EAAE,CACP,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,oBAAoB,EAC7B,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KACnC,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Loads SKILL.md body content and strips optional YAML frontmatter.
3
+ *
4
+ * Expects: filePath points to a readable markdown file.
5
+ */
6
+ export declare function skillContentLoad(filePath: string): Promise<string>;
7
+ //# sourceMappingURL=skillContentLoad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillContentLoad.d.ts","sourceRoot":"","sources":["../../../sources/engine/skills/skillContentLoad.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQxE"}
@@ -0,0 +1,19 @@
1
+ import path from "node:path";
2
+ import { promises as fs } from "node:fs";
3
+ import matter from "gray-matter";
4
+ /**
5
+ * Loads SKILL.md body content and strips optional YAML frontmatter.
6
+ *
7
+ * Expects: filePath points to a readable markdown file.
8
+ */
9
+ export async function skillContentLoad(filePath) {
10
+ const content = await fs.readFile(path.resolve(filePath), "utf8");
11
+ try {
12
+ const parsed = matter(content);
13
+ return parsed.content.trim();
14
+ }
15
+ catch {
16
+ return content.trim();
17
+ }
18
+ }
19
+ //# sourceMappingURL=skillContentLoad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillContentLoad.js","sourceRoot":"","sources":["../../../sources/engine/skills/skillContentLoad.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=skillContentLoad.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillContentLoad.spec.d.ts","sourceRoot":"","sources":["../../../sources/engine/skills/skillContentLoad.spec.ts"],"names":[],"mappings":""}